Swiftui Pro
twostraws/SwiftUI-Agent-Skill
Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance.
Add a new brand/region client to BetterBlueKit, or fix errors in an existing one.
$ npx skills add schmidtwmark/BetterBlue --skill brand-region-client -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install schmidtwmark/BetterBlue brand-region-client --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/schmidtwmark/BetterBlue.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/brand-region-client .claude/skills/brand-region-client && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "brand-region-client" agent skill from https://github.com/schmidtwmark/BetterBlue/tree/main/.claude/skills/brand-region-client into .claude/skills/brand-region-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brand-region-client", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/schmidtwmark/BetterBlue/tree/main/.claude/skills/brand-region-clientType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add schmidtwmark/BetterBlue --skill brand-region-client -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install schmidtwmark/BetterBlue brand-region-client --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/schmidtwmark/BetterBlue.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/brand-region-client .agents/skills/brand-region-client && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "brand-region-client" agent skill from https://github.com/schmidtwmark/BetterBlue/tree/main/.claude/skills/brand-region-client into .agents/skills/brand-region-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brand-region-client", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add schmidtwmark/BetterBlue --skill brand-region-client -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install schmidtwmark/BetterBlue brand-region-client --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/schmidtwmark/BetterBlue.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/brand-region-client .cursor/skills/brand-region-client && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "brand-region-client" agent skill from https://github.com/schmidtwmark/BetterBlue/tree/main/.claude/skills/brand-region-client into .cursor/skills/brand-region-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brand-region-client", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/schmidtwmark/BetterBlue.git --path .claude/skills/brand-region-client--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add schmidtwmark/BetterBlue --skill brand-region-client -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install schmidtwmark/BetterBlue brand-region-client --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/schmidtwmark/BetterBlue.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/brand-region-client .gemini/skills/brand-region-client && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "brand-region-client" agent skill from https://github.com/schmidtwmark/BetterBlue/tree/main/.claude/skills/brand-region-client into .gemini/skills/brand-region-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brand-region-client", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install schmidtwmark/BetterBlue brand-region-clientInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add schmidtwmark/BetterBlue --skill brand-region-client -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/schmidtwmark/BetterBlue.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/brand-region-client .github/skills/brand-region-client && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "brand-region-client" agent skill from https://github.com/schmidtwmark/BetterBlue/tree/main/.claude/skills/brand-region-client into .github/skills/brand-region-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brand-region-client", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add schmidtwmark/BetterBlue --skill brand-region-client -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install schmidtwmark/BetterBlue brand-region-client --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/schmidtwmark/BetterBlue.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/brand-region-client .opencode/skills/brand-region-client && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "brand-region-client" agent skill from https://github.com/schmidtwmark/BetterBlue/tree/main/.claude/skills/brand-region-client into .opencode/skills/brand-region-client/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brand-region-client", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
brand-region-clientAdd a new brand/region client to BetterBlueKit, or fix errors in an existing one.
Brand Region Client is an agent skill from schmidtwmark/BetterBlue. Add a new brand/region client to BetterBlueKit, or fix errors in an existing one. Use when the user asks to "add Kia Canada", "implement Hyundai Australia", "fix the European client", or similar. The skill gathers an API reference (open-source implementation or user-captured proxy logs), writes the client following the repo's four-file layout (+Commands / +Parsing / main / registration), and then iterates by running swift run bbcli ... — fixing each error against the reference until every menu action passes.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/bbcli-cheatsheet.md` and `references/reference-implementations.md`).
It sits in Mobile, covering iOS development. The repository describes itself as: An iOS native app for controlling Kia and Hyundai vehicles. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit dc67480. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
swiftFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
raw.githubusercontent.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Brand Region Client loads about 2.1k tokens when it runs, and up to ~3.4k if it reads all its reference files. Until then it costs about 134 tokens; SKILL.md has 940 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from schmidtwmark/BetterBlue at commit dc67480, republished under its MIT licence (© schmidtwmark). 940 words, ~2,104 tokens.
.claude/skills/brand-region-client/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Builds or fixes a BetterBlueKit API client for one (Brand, Region) pair. The hard part isn't Swift, it's figuring out the region's undocumented API — so every step is anchored to either an open-source reference or user-captured proxy logs.
Before starting, read docs/AddingNewRegion.md end-to-end. That guide is the rulebook; this skill is the execution playbook.
Ask the user (via AskUserQuestion):
bbcli command is failing and with what error.Do NOT proceed past this phase without explicit answers. Guessing the brand or region silently rewires the factory.
A wrong reference wastes hours. Check in this order:
vehicle.py / api_impl.py with WebFetch:https://raw.githubusercontent.com/Hyundai-Kia-Connect/hyundai_kia_connect_api/master/hyundai_kia_connect_api/For each reference, record:
Authorization vs. accessToken vs. Access-Token — these differ per region)If NO reference covers this region (e.g. Kia Australia), skip to Phase 1b.
Ask the user to capture traffic from the official app using Proxyman / mitmproxy / Charles. The AddingNewRegion guide has the step-by-step. Request, at minimum:
Have them export to a file and share the path. Then use Read on each to study request/response pairs. Treat every token and cookie as sensitive — never paste raw captures into code or commit them.
Match the new region against an existing BetterBlueKit client with the closest auth model. The right starting point saves the most work:
| If the new region uses... | Copy the layout of |
|---|---|
| Header-based access token, no MFA | HyundaiUSA |
| Cloudflare cookie + per-command PIN | HyundaiCanada |
| OAuth bearer token, CCS2 payloads | HyundaiEurope |
| MFA-gated login, separate real-time endpoint | KiaUSA |
Use Read to open the chosen client plus its +Commands.swift and +Parsing.swift extensions. Note the file naming convention — every client follows the same three-file split.
Create three files under BetterBlueKit/Sources/BetterBlueKit/API/<Brand><Region>/:
<Brand><Region>APIClient.swift // login, fetchVehicles, fetchVehicleStatus, sendCommand
<Brand><Region>APIClient+Commands.swift // commandURL, commandBody, method helpers
<Brand><Region>APIClient+Parsing.swift // response → VehicleStatus / Vehicle mappersThe class MUST subclass APIClientBase and conform to APIClientProtocol. Start every method that isn't yet implemented by throwing APIError.regionNotSupported("not yet implemented") — a failing bbcli run is more actionable than a compile error.
Then register in APIClientFactory.swift:
case in the brand-appropriate private createXClient function.supportedRegions(for:) (or betaRegions(for:) if you want a visible "beta" marker).This is the core loop. Run from the package root so Swift Package Manager resolves:
cd BetterBlueKit
swift build 2>&1 | tail -20 # compile first; fix any Swift errors
swift run bbcli -b <brand> -r <region> -u <user> -p <pass> [--pin <pin>]Inside bbcli, work through the menu in this order:
1) — validates login + token plumbing. Usually the first thing that breaks.2) — validates per-vehicle auth and the status parser.3 / 4) — simplest commands, minimal payloads.5 / 6) — largest command bodies; temperature encoding often differs per region.7 / 8), Charge Limits (menu 9), EV Trip Details (menu 10).For each error, gather evidence from all three sources:
bbcli printed — status code, body. (Re-run with --no-redaction to see raw tokens if the redacted output isn't enough.)Read the equivalent request/response in the reference implementation or proxy log. Diff the headers, body, and endpoint path against what bbcli just sent.Content-Type, different auth header name, a nested wrapper key (result.vehicles vs. payload.vehicles), a missing deviceid, or a different date format.Rebuild and re-run the same menu item. Advance to the next only when the current one returns parseable data.
Response parsers are the most error-prone part. When a response comes back 200 but the parser throws, don't hammer the live API — dump the responseBody to a file and iterate offline:
swift run bbcli parse -b <brand> -r <region> -t vehicleStatus ./fixture.json
swift run bbcli parse -b <brand> -r <region> -t vehicles ./fixture.jsonbbcli parse unwraps a top-level "responseBody" automatically — paste a full debug export and it Just Works. Save working fixtures under BetterBlueKit/Tests/BetterBlueKitTests/Fixtures/<Region>/ so regressions are catchable.
Troubleshooting.md — flip the region row from ❌ to ✅ (or ✅ beta).betaRegions(for:) and everything now works, promote to the supported list.See references/ for condensed cheat sheets:
© schmidtwmark, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in .claude/skills/brand-region-client of schmidtwmark/BetterBlue.
Open the folder on GitHubat commit dc67480
Brand Region Client next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Brand Region Client this skillschmidtwmark/BetterBlue | 132 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Swiftui Protwostraws/SwiftUI-Agent-Skill | 5.2k | 2 repos | ~1.5k | Automated safety check: Pass | MIT | |
| Swiftui UI PatternsAFK-surf/OpenBridge | 430 | 4 repos | ~887 | Automated safety check: Pass | MIT | |
| Swiftui Performance Auditharperreed/dotfiles | 334 | 8 repos | ~1.4k | Automated safety check: Pass | None | |
| Swift Testing ExpertAvdLee/Swift-Testing-Agent-Skill | 470 | 1 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Hig Project Contextraintree-technology/hig-doctor | 143 | 5 repos | ~1.2k | Automated safety check: Pass | MIT |
twostraws/SwiftUI-Agent-Skill
Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance.
AFK-surf/OpenBridge
Best practices and example-driven guidance for building SwiftUI views and components.
harperreed/dotfiles
Audit and improve SwiftUI runtime performance from code review and architecture.
AvdLee/Swift-Testing-Agent-Skill
Expert guidance for Swift Testing: test structure, expect/require macros, traits and tags, parameterized tests, test plans, parallel execution, async waiting patterns, and XCTest migration.
raintree-technology/hig-doctor
Create or update a shared Apple design context document that other HIG skills use to tailor guidance.
twostraws/Swift-Testing-Agent-Skill
Writes, reviews, and improves Swift Testing code using modern APIs and best practices.
Categories
Add a new brand/region client to BetterBlueKit, or fix errors in an existing one. Brand Region Client is an agent skill from schmidtwmark/BetterBlue. Add a new brand/region client to BetterBlueKit, or fix errors in an existing one.
Brand Region Client fits situations like: the user asks to add Kia Canada; implement Hyundai Australia; fix the European client.
Run `npx skills add schmidtwmark/BetterBlue --skill brand-region-client -a claude-code`. Or copy the skill folder (.claude/skills/brand-region-client in schmidtwmark/BetterBlue) into .claude/skills/brand-region-client in your project. Claude Code loads it when a task matches its description.
Run `npx skills add schmidtwmark/BetterBlue --skill brand-region-client -a codex`. Or copy the skill folder (.claude/skills/brand-region-client in schmidtwmark/BetterBlue) into .agents/skills/brand-region-client in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add schmidtwmark/BetterBlue --skill brand-region-client -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/brand-region-client, .gemini/skills/brand-region-client, .github/skills/brand-region-client and .opencode/skills/brand-region-client in your project.
Going by SKILL.md and its folder, Brand Region Client needs the command-line tools its instructions call (swift).
SKILL.md names 1 domain. In commands or code: raw.githubusercontent.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Brand Region Client is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Brand Region Client: Swiftui Pro (twostraws/SwiftUI-Agent-Skill, 5.2k stars), Swiftui UI Patterns (AFK-surf/OpenBridge, 430 stars), Swiftui Performance Audit (harperreed/dotfiles, 334 stars) and Swift Testing Expert (AvdLee/Swift-Testing-Agent-Skill, 470 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
schmidtwmark (a GitHub user) maintains it in schmidtwmark/BetterBlue, which has 132 GitHub stars. The repository was last updated on October 6, 2026.
Source: schmidtwmark/BetterBlue on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.