feat(skills): interactive-simulator-ux-audit + host-driven-xcuitest-e2e + cloudkit-schema-source-of-truth - #32
Merged
Conversation
…2e + cloudkit-schema-source-of-truth Three new first-party skills, genericized from a real shipping project's battle-tested lessons (no project nouns, no issue numbers): - interactive-simulator-ux-audit: drive a booted iOS Simulator with idb (tap/describe-all/screenshot) to catch navigation, modal, back-stack, safe-area/Dynamic-Island, and offline/signed-out bugs that a fixed-size snapshot render structurally can't show. Covers the no-Homebrew idb install path (direct GitHub release + exec wrapper for rpath) and the stale-build / worktree-launch-crash false-negative traps. - host-driven-xcuitest-e2e: wire launch-the-app XCUITest E2E via Tuist — a native .uiTests target needs its own dedicated scheme with testAction: .targets([...]), not a test plan (else "no test bundles"). Also covers driving SwiftUI on macOS, where element.tap() and app.coordinate(...) both fail, worked around by anchoring on the window element and clicking finite element frames. - cloudkit-schema-source-of-truth: one committed .ckdb per app as the schema source of truth, cktool export/validate/deploy against Development only, and the Production promotion as an irreversible, user-owned Console-button-only gate cktool cannot reach. Bumps apple-dev-skills' first-party skill count 22 -> 25 across plugin.json, marketplace.json, README.md/README.zh-Hant.md (manual translation sync — the claude-CLI-backed readme-zh generator hung when invoked from a nested agent session, so the zh-Hant edits were applied by hand and the src-sha updated to match), and the check-consistency.py gate (including its docstring's 34->37 total-skills note). Does not touch any version field. python3 scripts/check-consistency.py passes clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2 tasks
wei18
added a commit
that referenced
this pull request
Jul 20, 2026
…ing (#33) Wave 2 (PR #32) added 3 new apple-dev-skills skills; this closes the two follow-ups from its review: - cloudkit-schema-source-of-truth's "Related skills" gains a line to swift-testing-baseline: its "unentitled runner" section is where the live-CloudKit-in-tests landmine (constructing a live container/auth handler blocks the SwiftPM test runner indefinitely) is documented, and a reader of the schema skill needs that pointer before writing any test that touches the container this skill manages. - Minor version bump for the 3-skill addition: apple-dev-skills 1.1.1 -> 1.2.0, marketplace metadata 1.4.0 -> 1.5.0 (collab untouched). Ran via `python3 scripts/bump-version.py --apple 1.2.0 --marketplace 1.5.0`, which paired plugin.json + marketplace.json entries, rewrote both READMEs' `git checkout v<semver>` pins, and re-stamped README.zh-Hant.md's src-sha for that one-line pin change (no full retranslation needed). check-consistency.py ran automatically at the end of the bump script and passed, including the new check 8 (plugin.json <-> marketplace.json version parity). python3 scripts/check-consistency.py passes clean. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three new first-party skills, genericized from a real shipping project's battle-tested lessons — no project nouns, no issue numbers.
interactive-simulator-ux-audit— drive a booted iOS Simulator withidb(tap / describe-all / screenshot) to catch navigation, modal, back-stack, safe-area/Dynamic-Island, and offline/signed-out bugs that a fixed-size snapshot render structurally can't show. Covers the no-Homebrewidbinstall path (direct GitHub release download + anexecwrapper that preserves rpath), the describe-all → tap → screenshot drive loop, device-point vs. screenshot-pixel coordinate spaces, and the stale-build / worktree-launch-crash false-negative traps.host-driven-xcuitest-e2e— wire launch-the-app XCUITest E2E via Tuist: a native.uiTeststarget needs its own dedicated scheme withtestAction: .targets([...]), not membership in a.xctestplan(the latter builds but fails with "no test bundles available to test"), and its name must avoid colliding with an SPM<Target>UITestspackage test target. Also covers driving SwiftUI on macOS, whereelement.tap()throwspoint.x != INFINITYandapp.coordinate(...)resolves to(-inf, -inf)— worked around by anchoring on the window element and clicking finite element frames — plushittablenot being a valid NSPredicate key and locale-stable accessibility queries.cloudkit-schema-source-of-truth— one committed.ckdbper app as the schema source of truth,xcrun cktoolexport/validate/deploy scripted against Development only (management token from an env file, passed positionally sincecktoolrejects piped stdin, purged after use), and Production promotion as an irreversible, user-owned Console-button-only gatecktoolcannot reach. Covers Production fields/indexes being add-only and Just-In-Time schema existing only in Development (a silent-missing-field failure mode).Bookkeeping
apple-dev-skillsfirst-party skill count bumped 22 → 25 acrossplugin.json,marketplace.json,README.mdCatalog (+ Install one-liner), andREADME.zh-Hant.md(manually translated and synced — see below).scripts/check-consistency.py:PLUGINS["apple-dev-skills"]22 → 25, plus its docstring's 34 → 37 total-skills note.versionfield touched anywhere (left for a follow-up release bump).Deviation from the dispatch
mise run readme-zhshells out toclaude -pto translateREADME.md. Invoked from inside this (already-nested) agent session it hung indefinitely and had to be killed, truncating the output file. Recovered viagit checkout -- README.zh-Hant.mdand applied the same edits (three new table rows + the two count bumps) by hand in Traditional Chinese, then updated the trailing<!-- src-sha: ... -->comment togit hash-object README.md's current value.check-consistency.py's zh-Hant freshness check (#4) passes against this manual sync.Test plan
python3 scripts/check-consistency.py— all 8 checks pass (OK — 2 plugins (25/12), catalog + counts + zh-Hant consistent.)sudoku|minesweeper|GameShellKit|GameAppKit|SudokuCoreKit|MinesweeperCoreKitand for#<issue-number>patterns inside the 3 new skill dirs — clean (only pre-existingwei18/Sudokuprovenance-section references remain, unrelated to this PR)name:matches each skill's directory name; all three descriptions under the 800-char gate🤖 Generated with Claude Code