Install any skill in seconds. Free to start, no credit card required.
Get Started Free →rshankras/flow-walkthrough
Verify UI *workflow* correctness that a task list, code review, and static screenshots miss. Drives end-to-end user flows in the Simulator via XCUITest with per-step screenshots, statically audits the navigation graph for dead-ends and missing edit paths, and emits a human discoverability checklist. Use after building any phase/slice that adds or changes UI, or when a user reports "I could only figure out the flow by running it."
Passed 16 of 19 test cases with the skill, and 10 of 19 without it.
and 4 more in the full report
7 fixed12 passed either way3 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 7 test cases the skill fixed. Same model, same prompt, with and without the skill.
What should be done with the XCUITest files generated to record filmstrip screenshots after the walkthrough pass finishes?
| Checked | Without skill | With skill |
|---|---|---|
| Retains generated UI test files to serve as the project's regression test suite. | Missed | Passed |
The instructions your model reads when the skill loads.
Task lists, compilers, and code review verify that screens exist and compile. They are structurally blind to whether the flow between screens actually works for a human with a goal — the transitions, the return paths, the dead-ends, the discoverability. This skill closes that gap.
Real UX bugs fail at three different layers, and no single mechanism catches all three — so this skill uses three:
| Failure class | Example | Caught by |
|---|---|---|
| Dead-end / missing path | A saved record can only be viewed, never reopened to edit; Done calls popToRoot() and orphans an in-progress entity | Layer 1 — static nav-graph audit (no build) |
| Reachability regression | "Run round" no longer reaches the capture screen after a refactor; a Done lands on the wrong screen | Layer 2 — automated flow driving (XCUITest) |
| Discoverability | "How do I even select a contestant?" — the only affordance is a bare row tap | Layer 3 — human checklist (a UI test taps the row and passes) |
The trap: a UI test happily taps a hidden control and reports PASS. Automation proves a path works; only a human judges whether it is findable. That residue is why Layer 3 is mandatory, not optional.
<flows> from PLAN.md/apple:plan emits a <flows> block — end-to-end journeys, each a testable script. If PLAN.md has no <flows>, derive them from the phase's <mvp-features>/views and write them back into PLAN.md first (a flow that isn't written down can't be checked). A good flow names, for every persisted entity created: the step that reopens it editable, and the single least-discoverable action.
Grep the navigation surface and reason over it. Do this first; it's free and catches the highest-severity class.
Grep: NavigationStack, navigationDestination, NavigationLink, \.sheet, \.fullScreenCover, router.push, enum Route, dismiss(), popToRoot, @Query.Done/Back/dismiss land somewhere intentional? Flag any popToRoot() that discards an in-progress or just-saved entity.@Model with a Create path, is there a Read and an Update/reopen path from the persistence surface (a list/history)? A list that only opens a read-only detail is a dead-end for editing — flag it.NavigationLink/navigationDestination destination, check whether the destination view declares its own NavigationView/NavigationStack — a pushed view must never wrap one. This renders a second nav bar under the parent's and its leading bar items displace the back button. It's a cross-file bug: each file looks correct alone (and previews fine in isolation), so single-file review never catches it — only this pairwise check does.Output each finding as DEAD-END / NO-EDIT-PATH / ORPHANS-ENTITY / NESTED-NAV with the file:line and the missing arrow.
Turn each <flow> into a UI test that taps through it and screenshots every step, so the agent can see the transitions and assert the destinations.
type: bundle.ui-testing target; or xcodebuild). Keep the generated tests — they become the Phase 5 regression suite.test cases passed, vs 10 / 19 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.