Skills for vibe coding iOS & Apple-ecosystem apps with Claude Code — and for driving the agent that builds them.
apple-dev-skills is one marketplace for independent developers and small teams building a new, greenfield app on the iOS 26 / macOS 26 floor — from idea to a shipped App Store release. Its first-party skills come in two halves: Apple/Swift skills for what you are building, and harness engineering skills (how you run Claude Code itself — dispatch, review, ship). Every skill is an opinionated default backed by a shipped-it war story and held to a consistency gate. Alongside them sit best-of-breed external skill plugins, aggregated by reference — not written here, linked and credited to their authors, never copied.
Skills trigger automatically from what you ask for — install, then just describe the task.
Inside a Claude Code session, run:
/plugin marketplace add wei18/apple-dev-skills
/plugin install apple-dev-skills@apple-dev-skills # 26 Apple/Swift skills
/plugin install collaboration-skills@apple-dev-skills # 12 harness-engineering skills
Each install opens a details pane — pick User scope. The form is plugin@marketplace;
the marketplace happens to share its first plugin's name.
If the install summary says Run /reload-plugins to activate., Claude Code runs it for you;
if it warns that your next message would re-read the conversation, run /reload-plugins --force.
Install either or both. Externals install the same way, e.g. /plugin install swiftui-expert@apple-dev-skills.
Then just describe the task:
- "I'm starting a new iOS app" →
apple-platform-targetsanswers the deployment target and hands off to the package shape, language mode, and test baseline in order. - "App Review bounced this on guideline 5.1.2" →
app-store-review-rejectionsmaps the guideline to the fix.
To force one, use its slash command: /apple-dev-skills:swift6-concurrency. /skills lists
what is installed and which plugin each skill came from.
Installing both plugins loads all 38 first-party descriptions — over 5,000 tokens, roughly 3× the default 1% skill-listing budget (2,000 tokens on a 200k-context model) — before any externals. The skill-listing budget is 1% of the context window (~10,000 tokens on a 1M-context model, where the two first-party plugins alone fit — but externals and your own skills share that same budget); when it overflows, Claude Code drops descriptions starting with the skills you invoke least; in practice that tends to mean freshly installed ones, which have no invocation history yet. Run
/doctorto check the listing's cost, then raiseskillListingBudgetFraction(e.g.0.04on a 200k-context model — these 38 names + descriptions alone need just over0.03) if it's tight, or disable plugins you don't use via/plugin.
- Spec the flow →
spec-phase-orchestration - Bootstrap the project →
apple-platform-targets - Build the UI →
swiftui-navigation-architecture - Test it →
swift-testing-baseline - Ship it →
asc-api-automation - Operate it →
apple-three-piece-analytics
Full index in the tables below.
| Skill | One-liner |
|---|---|
swift6-concurrency |
Swift 6 language mode + complete concurrency checking; MainActor by default, Sendable only where code crosses into nonisolated/actor context |
apple-platform-targets |
Default iOS 26 / macOS 26, Xcode 26.x; drop to iOS 18 / macOS 15 (or 17 / 14) only when an older user base requires it |
swiftpm-modularization |
Single Package, multi-target, thin App, DI composition root, one-to-one tests |
swift-testing-baseline |
swift-testing + pointfreeco snapshot; protocol fakes; strict/tolerant snapshot gate |
xcode-cloud-single-track-ci |
Single-track Xcode Cloud; PR / Main / Release / Periodic; pre-merge PR CI |
local-archive-export-upload |
Local xcodebuild archive → export → altool upload to TestFlight when Xcode Cloud can't run |
mise-tool-management |
Pin CLI tool versions (swiftlint, xcbeautify…) with mise, so local dev and CI use the exact same ones |
oslog-logger-defaults |
Default logging setup: Apple's own os.Logger, no third-party library, log values private unless you opt in |
apple-three-piece-analytics |
App Store Connect (ASC) Analytics + MetricKit + Game Center; no third-party tracking; PrivacyInfo mandatory |
telemetry-facade-pattern |
One observe(event) call fanned out to OSLog / tracking / Game Center sinks, with MetricKit payloads fed in as events — swap sinks without touching call sites |
ai-translated-localization |
Default 7 locales; AI translation flow; Localizable.xcstrings; completeness gates |
ios-accessibility-engineering |
VoiceOver / Dynamic Type / touch-target / Reduce Motion for SwiftUI & UIKit; WCAG 2.2 |
swift-dependency-injection |
Make services swappable for tests — protocol injection + a composition root (environment vs constructor, @TaskLocal, Sendable) |
ios-performance-engineering |
Instruments / xctrace / hang-hitch budgets / launch / memory / binary size / MetricKit |
apple-public-repo-security |
Three lines of defence for public iOS/macOS repos + rotate-first leak SOP |
build-time-secret-injection |
xcconfig + Info.plist $() + Bundle.main for ship-in-binary-but-out-of-diff IDs |
storekit2-iap-defaults |
StoreKit 2 non-consumable IAP defaults; bridge-protocol test seam, entitlements, restore |
monetization-sdk-integration |
Add/upgrade/audit a monetization SDK; isolate import to one bridge file |
app-store-review-rejections |
Diagnose & pre-empt App Review rejection classes for free + ads + IAP + CloudKit + Game Center (GC) |
asc-api-automation |
ES256 JWT from the .p8 + curl against the ASC REST API — TestFlight, metadata, submission, reports; no fastlane |
swiftui-interaction-footguns |
Known SwiftUI interaction bugs that slip past pure-code review |
swiftui-navigation-architecture |
Typed-route navigation for SwiftUI — one @Observable router, NavigationStack, deep links, macOS fallbacks handled |
ios-design-mockup |
Single-file HTML iOS design mockup from a spec — iPhone frames + tokens |
interactive-simulator-ux-audit |
Drive a booted Simulator with idb (tap/describe/screenshot) to catch nav/modal/safe-area bugs snapshots can't |
host-driven-xcuitest-e2e |
Launch-the-app XCUITest E2E via Tuist — dedicated scheme wiring + macOS window-frame click driving |
cloudkit-schema-source-of-truth |
Committed .ckdb + cktool export/validate/import to Development; Production is a user-owned Console-only gate |
| Skill | One-liner |
|---|---|
spec-phase-orchestration |
Pre-implementation doc pipeline; section-by-section approval |
subagent-review-cycles |
Leader / Developer / Code-Reviewer triad; how many rounds, what counts as a rejection |
leader-developer-handoff-contract |
6 required elements when dispatching a sub-agent |
agent-impl-notes-log† |
Running impl-notes during a sub-agent task — decisions, deviations, open questions |
subagent-conflict-detection |
Check a new sub-agent's targets don't overlap an in-flight worktree |
methodology-pattern-extractor† |
Extract patterns recurring ≥3 times from meeting logs |
session-to-meeting-log† |
Consolidate a Claude Code session into a meeting log; summary, not verbatim |
pr-diff-verification |
Before push/PR, verify git show --stat --summary HEAD matches the commit's claims |
backlog-routing-by-topic† |
Route stray ideas by topic to the matching spec file's §Backlog |
claude-skill-plugin-packaging |
Distribute/install Claude Code skills — depth-1 rule, plugin + marketplace, install pinned per project, aggregate by reference |
skill-authoring-patterns |
Apple/Swift catalog layer over superpowers:writing-skills — router descriptions, bookend sections, two-tier references, evidence-based CR |
github-contribution-workflow |
gh-CLI contribution loop — PRs, issues, GitHub file ops, secrets, contribution-flow repo settings; conventions |
† Assumes the spec-phase-orchestration doc layout (design.md / plan.md / meetings/).
Listed here but not authored here: each installs from its author's own repo (you get
their latest) and is credited in full. Aggregate, don't appropriate — only MIT-compatible,
non-duplicate plugins are listed, and only for genuine gaps. That check happens once, at
listing time, not on every upstream commit, so an external's scope and licence can drift
afterwards (caveman already has). Externals are broad reference — "here's the API,
here's how to build X." First-party skills are narrower: one opinionated default per topic
(iOS 26 as the floor, one Package, swift-testing + snapshot, OSLog only, known runtime bugs
to avoid). Where a topic overlaps, the two aren't duplicates — they answer at a different
level of detail.
| Plugin | Author | Covers |
|---|---|---|
apple-skills |
Prisma Labs (vabole), MIT | Broad Apple frameworks — SwiftUI, SwiftData, App Intents, WidgetKit, StoreKit, HealthKit, apple-aso, hig …; a SwiftUI performance audit guide that complements ios-performance-engineering's Instruments/MetricKit measurement; also ships simulator-utils and xcuitest (see below for how those line up against this catalog's Simulator/XCUITest skills). A handful of its skills sit in disabled-skills/ — kept in the repo but not loaded by agents |
swiftui-expert |
Antoine van der Lee (MIT) | SwiftUI patterns, Swift Charts, Liquid Glass, Instruments toolchain |
swiftui-pro |
Paul Hudson (MIT) | SwiftUI pitfalls, deprecated-API watchlist, iOS 26 / Liquid Glass |
caveman |
JuliusBrussee (MIT) | Ultra-compressed communication mode — cuts ~65% of output tokens (author's measurement); ships SessionStart/UserPromptSubmit hooks (needs node on PATH, runs every prompt) (general agent behavior) |
ponytail |
DietrichGebert (MIT) | "Lazy senior dev" mode — forces the simplest, shortest solution (general agent behavior) |
i-have-adhd |
Ayoub G. (MIT) | Always-on ADHD-friendly output mode — numbered steps, state restated each turn (general agent behavior) |
xcode-build-skill |
pz (MIT) | xcodebuild/xcrun simctl CLI cheatsheet — schemes → simulators → build → install → launch → screenshot |
caveman's license: skills MIT; repo also ships a BSL-1.1 engine. caveman has since grown
into a 20-skill suite; 4 of them (caveman-discover, caveman-manage,
caveman-evidence-review, caveman-setup) document the author's hosted Caveman Cloud commercial
service.
Unlike caveman (token compression) and ponytail (solution simplicity), i-have-adhd shapes
the structure of every answer.
xcode-build-skill (xcodebuild/simctl loop) and apple-skills:simulator-utils (simctl
one-offs) are CLI references; interactive-simulator-ux-audit drives idb for exploratory
audits; host-driven-xcuitest-e2e wires Tuist schemes for CI — apple-skills:xcuitest is the
API reference it assumes.
apple-skills moved from the vabole personal account to the Prisma-Labs-Dev organization;
this table lists the org's repo.
(A is the Quickstart above.)
Pin the marketplace to a released tag directly in .claude/settings.json — no submodule needed:
{
"extraKnownMarketplaces": {
"apple-dev-skills": {
"source": { "source": "github", "repo": "wei18/apple-dev-skills", "ref": "v2.1.0" }
}
},
"enabledPlugins": {
"apple-dev-skills@apple-dev-skills": true,
"collaboration-skills@apple-dev-skills": true
}
}Commit it — collaborators get the marketplace automatically once they trust the project
folder, no separate prompt. The two first-party plugins are relative-path entries, so they're
installed at that point; externals are GitHub-sourced, so enabledPlugins won't auto-install
them for anyone else — each collaborator still runs the claude plugin install … line Claude
Code prints, once.
npx skills add wei18/apple-dev-skills --list
npx skills add wei18/apple-dev-skills --skill swift6-concurrencyPath C does not include the aggregated externals.
npx skillsreads this repo'smarketplace.json/plugin.json, but it only follows locally-declared skill paths. It does not fetch the externals' remotegithub/git-subdirsources. So the commands above install only the 38 first-party skills — the 7 externals are silently skipped. To flat-install the whole catalog (externals included, pulled from their authors' repos):
scripts/install-flat.sh -g # user-level; drop -g for project-level
scripts/install-flat.sh --dry-run # preview the `npx skills add` commandsThree ways to help: aggregate an external plugin, add a first-party skill, or report a field note — see CONTRIBUTING.md.
First-party skills were distilled and genericized from wei18/Sudoku's
.claude/skills/ — a spec-first, AI-Leader/Developer-built portfolio of shipping Apple-platform
games — plus original write-ups of public Apple / WCAG / Swift standards. Aggregated externals
remain their authors' work, surfaced by reference only. The design specs and plans that produced
this repo's two-plugin shape lived under docs/superpowers/ — retired in favour of git history;
run git log -- docs/ to find them. MIT — see LICENSE.