Test snapshot: 2026-08-09

Project: rshankras/claude-code-apple-skills

Repository snapshot: 602 stars, 51 forks, last pushed 2026-07-24

License: MIT | Scale: 183 skills across 23 categories

Evidence boundary: L0 static checks, L1 routing tests, and L2 code-output comparisons were completed. No swift build, simulator installation, or real-device screenshot regression was completed, so this review does not claim production validation.

The short answer

If you work on iOS, macOS, SwiftUI, watchOS, or visionOS projects, rshankras/claude-code-apple-skills is one of the broadest community-maintained Apple development skill collections available today. It covers product planning, SwiftUI, testing, App Store release work, growth, subscriptions, privacy, and Apple Intelligence—not just API snippets.

But “183 skills” does not mean “183 skills worth installing.” This review scores the collection 4.1/5. Its coverage and governance are unusually strong, while its task-level code gain depends heavily on the problem. In a SwiftUI data-flow fixture, the bare model already fixed the reported bugs in all three runs. Adding swiftui/data-flow produced a perfect 12/12, but the extra points came from an @Observable modernization, not from fixing the user-reported failures.

The right mental model is a version-aware engineering checklist with an audit loop—not a magic plugin that turns an ordinary model into an iOS expert.

Scorecard

DimensionWeightScoreEvidence from this review
Output gain (L2)25%3.5/5A: 10/12, B: 12/12; the delta was mainly @Observable migration
Engineering quality (L0)20%4.0/5Zero broken links and complete core fields, but a YAML truncation bug was found
Routing accuracy (L1)15%4.5/519/20 top-1 selections across 183 candidates
Coverage15%5.0/5Idea, implementation, testing, release, growth, and legal workflows
Authority10%3.0/5Community-maintained, not Apple official; API and version checks provide some guardrails
Executability10%4.5/5Blind-test auditing, CI checks, simulator and device-oriented skills
Maintenance activity5%5.0/5review_by, weekly stale scans, and external contributions
Weighted total100%4.1/5Install selectively

What is this repository?

This is not an Apple-published skill repository. It is a community knowledge layer for independent developers trying to move an Apple app from an idea to release and growth:

The repository also describes a larger four-repository stack: SwiftShip for workflow commands, indie-app-autopilot for agent workflows, and asc-metadata-mcp for App Store Connect integration. This is a different proposition from Google’s android/skills: Google’s collection is closer to official platform/API knowledge distribution, while this project tries to cover the complete independent-developer lifecycle.

How we tested it

To avoid turning GitHub Stars into a quality claim, the review separates three layers:

L0: Full static audit

The repository’s harness/l0_static_audit.py, using the same token-counting convention across the collection, checks 183 SKILL.md files for required fields, broken relative links, oversized entries, reference layers, provenance, and version-governance fields.

L1: Routing accuracy

The model receives only the name + description for all 183 skills and cannot read their bodies. Twenty targeted user prompts are used to measure the top-1 choice among 183 candidates. This measures whether the right skill is selected, not whether a model can answer after reading everything.

L2: A/B code task

The fixture is a SwiftUI task list with intentional data-flow and performance defects: expanded row state disappears after filtering, scrolling is sluggish, object ownership is wrong, .id() forces refreshes, and identifiers are unstable.

L3—real swift build, simulator execution, screenshots, and device regression—was not completed. The conclusions below cover L0–L2 only.

L0: Strong engineering hygiene, with a semantic blind spot

The full static results are clean:

MetricResult
name and description present183/183
Broken relative links0/183
SKILL.md entries over 5,000 tokens12/183
No auxiliary documents82/183 (45%)
Descriptions using symptom-style language163/183 (89%)
Median SKILL.md size2,129 tokens
p90 / maximum4,263 / 15,667

The most reusable idea is its governance metadata. All 183 skills carry last_verified and review_by, and the repository runs a weekly workflow that scans stale content. Compared with Google Android Skills, which emphasizes author and license provenance but does not expose a consistent review_by field, this turns “when should this knowledge be checked again?” into data that automation can inspect.

A YAML bug that can make a skill disappear

design/ui-prototyping and generators/preview-data-generator mention Swift’s #Preview / #Previews in an unquoted YAML description. In YAML, a # preceded by whitespace starts a comment:

``yaml description: Explore divergent UI directions as named Swift #Previews, remix ... ``

Some parsers therefore keep only Explore divergent UI directions as named Swift, dropping roughly 88% and 90% of the descriptions. The repository CI still passes because check-frontmatter.sh uses grep to confirm that a description: key exists; it does not parse the YAML and validate the semantic result.

The fix is simple: quote the full description and make CI load it with a real YAML parser, then compare the parsed value with the expected content. The broader lesson is that a form-valid front matter file can still be semantically broken for an agent.

Structural costs

L1: 19/20 top-1 hits, with scale-driven collisions

Among 183 candidates, top-1 routing was correct 19/20 (95%). All 17 high-confidence questions were correct. The only miss was a medium-confidence prompt:

“The list scrolls badly, and the body seems to be recomputing constantly.”

The model selected swiftui-debugging; the expected skill was data-flow. The former description includes broader signals such as “slow,” “janky,” and “re-rendering too often,” while the latter focuses on why a body runs. This is a classic superset capture: the broader description wins even when a narrower skill is the intended route.

The evaluation surfaced roughly ten collision groups, including:

The solution is not simply shorter descriptions. At this scale, descriptions need explicit exclusions. originality-check is a good example because it says that it is not a rejection handler and not a competitive analysis. That kind of “what I do not handle” sentence should be expanded to other collision groups.

There is an important reproducibility caveat: the original per-question L1 table was not preserved after a workspace cleanup. The 19/20 result and collision analysis came from the evaluation report; the YAML truncation and duplicate names were independently reproduced. Treat this as a strong result that should still be rerun, not as a fully archived laboratory log.

L2: The score reaches 12/12, but the main bug was already solved

The fixture’s user report was specific: after toggling “Hide done / Show done,” expanded row details collapse, and the list scrolls badly. The 12 checks cover ownership, stable IDs, lazy modifiers, .id(), @State, caching, and imports.

CheckA1A2A3B1B2B3
Fix store ownership
Migrate to @Observable
Remove old ObservableObject / @Published
Remove double identity
Use lazy modifiers
Stable ForEach IDs
Remove forced .id() refresh
Move recomputation out of body
Total10/1210/1210/1212/1212/1212/12

All three bare-model runs fixed the parts that actually caused the reported failure:

The B group additionally migrated to @Observable, which produced 12/12. That is a useful modernization, but it is not causally required for the two reported bugs. The measurable value here is therefore consistency and architectural preference, not a breakthrough in bug fixing.

The repository’s own blind audit points in the same direction: swiftui/data-flow is classified as TRIM, with the bare model covering about 0.77 of its claims. Two independent methods reaching similar conclusions is useful evidence that the skill’s marginal gain is limited; it is more valuable for team conventions and review than for teaching a model an unknown concept.

The best feature: it audits itself

The repository includes tools/skill-audit/audit.py, which derives blind-test questions for leaf skills, asks a bare Claude session to answer, and classifies the skill from claims extracted out of its own content:

VerdictMeaning
KEEPThe bare model covers little; the skill provides clear incremental value
TRIMKeep only what the model does not reliably know
DELETE-candidateThe bare model already covers most claims
FIXThe skill may be wrong or version-sensitive

One published audit of 161 entries reported 94 KEEP, 56 TRIM, 5 DELETE-candidate, 5 FIX, and 1 prose trim. In other words, 38% of entries were marked for trimming, deletion, or correction by the project’s own audit. That is not an attractive marketing number, but it is a more credible signal than pretending every skill is indispensable.

The five FIX candidates—generators/paywall-generator, ios/migration-patterns, macos/macos-tahoe-apis, swiftui/alarmkit, and watchos—also matter. A knowledge base can have a sophisticated audit loop and still contain individual claims that need checking against current Apple SDK documentation.

Strengths and weaknesses

Strengths

  1. It follows real work. Product planning, testing, App Store review, subscriptions, growth, and legal work are included alongside code.
  2. Its freshness model is clear. review_by and weekly stale scans fit an ecosystem where WWDC can invalidate many entries at once.
  3. It contains executable tooling. API-symbol checks, Swift-template checks, and simulator/device-oriented entries are more actionable than prose prompts.
  4. It admits redundancy. Publishing its own audit results makes the project more trustworthy.
  5. It accepts outside contributions. The community can report and fix gaps.

Weaknesses

  1. It is not Apple official. MIT licensing is not Apple endorsement; forward-looking APIs and OS versions must be verified.
  2. Full installation is heavy. A 9.2k-token catalog and many overlapping descriptions raise routing cost.
  3. Strong instructions can widen diffs. A modernization such as @Observable migration may exceed a request to fix one bug.
  4. CI is stronger on form than meaning. The YAML truncation can pass every check.
  5. There is no L3 evidence in this review. A static score is not a successful build, and a successful build is not device validation.

Who should use it?

Good fit

Do not install everything by default if

A safer adoption workflow

  1. Choose a category by task. Start with swiftui/data-flow, testing, or the target-platform skill instead of all 183 entries.
  2. Pin versions and dates. Save the repository commit, skill version, Xcode/Swift/SDK versions, and review_by date.
  3. Run a small reversible task. Keep the prompt, generated diff, build log, and failure examples.
  4. Separate fixes from modernization. Treat target changes, data-flow migrations, new permissions, and scripts as independent decisions.
  5. Complete L3 validation. At minimum, run swift build or an Xcode build, launch the simulator, and verify the core interaction before using it in a real repository.
  6. Keep human gates. App Store metadata, subscriptions, privacy statements, payments, and permission changes need manual approval.

Apple Skills versus Google Android Skills

Google Android Skillsrshankras Apple Skills
MaintainerGoogle officialCommunity
Count22183
FocusNew Android APIs and platform guidanceFull independent-developer lifecycle
Resident catalog costAbout 1,595 tokensAbout 9,198 tokens
L1 result10/10 recall, 0/10 false positives19/20 top-1
L2 valueClear reduction in output varianceMainly modernization and standardization
Freshness fieldslast-updatedlast_verified + review_by
Public evaluationLimitedBuilt-in blind audit with redundancy results

Both reviews point to the same practical conclusion: the bare model baseline is higher than expected. Skills usually add marginal stability, version reminders, and team constraints—not an entire new domain of competence. Selecting the right topic matters more than accumulating entries.

Editorial verdict

Worth trying, but do not install it blindly at full scale. For Apple development, it addresses a real gap: Apple does not publish an official agent-skills repository, and this project brings SwiftUI, testing, release, and growth workflows together with a visible audit loop.

Its most valuable contribution is not a single SwiftUI instruction. It is the mechanism:

  1. put a review_by date into every skill and scan stale content;
  2. blind-test the library against a bare model and trim what the model already knows;
  3. add explicit exclusions to descriptions so the router knows what a skill does not handle.

For a concrete task, select one small skill, pin the environment, preserve the diff and logs, and complete a real build before deciding whether the skill deserves a permanent place in the project. Used this way, 183 entries become a toolbox. Installed indiscriminately, they become an expensive context directory.

Evidence boundary: This review uses the 2026-08-09 snapshot. L0, L1, and L2 results come from the local evaluation and the repository’s published audit; the complete per-question L1 table was not preserved, and L3 build, simulator, and screenshot regression were not completed. Revalidate every production claim against the target project and current SDK.

Sources

  1. rshankras/claude-code-apple-skills
  2. Apple Developer Documentation
  3. SwiftUI Documentation
  4. Swift Package Manager