Agent skill

Flow Walkthrough

by rshankras in rshankras/claude-code-apple-skills

Verify UI workflow correctness that a task list, code review, and static screenshots miss.

MITAuto-check: notesMobile

Install Flow Walkthrough

skills CLI
$ npx skills add rshankras/claude-code-apple-skills --skill flow-walkthrough -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rshankras/claude-code-apple-skills flow-walkthrough --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rshankras/claude-code-apple-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/testing/flow-walkthrough .claude/skills/flow-walkthrough && rm -rf skills-src

Use ~/.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/

Facts

Skill name
flow-walkthrough
GitHub stars
783
Token cost
~2.3k tokens
SKILL.md length
981 words
Files
1
Skills in repo
41
Repo updated
First seen
Licence
MIT

At a glance

Verify UI workflow correctness that a task list, code review, and static screenshots miss.

  • Works in 5 steps: Build the graph. Find entry points and… → Assert reachability & return paths. For… → CRUD-completeness. For every @Model with… → …
  • Tasks that involve Mobile testing and debugging
  • SKILL.md covers Why this exists (the three…, Input: the from PLAN.md, The method and Output: .planning/WALKTHROUGH.md, plus 2 more sections
  • Calls xcrun and xcodebuild

What it does

Flow Walkthrough is an agent skill from rshankras/claude-code-apple-skills. 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."

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Mobile, covering Mobile testing and debugging, Task breakdown and UX design. The repository describes itself as: Claude Code skills for Apple platform development (iOS, macOS, iPadOS) — product validation, code generation, App Store optimization, and more. The licence is MIT.

When your agent uses it

  • Tasks that involve Mobile testing and debugging
  • Tasks that involve Task breakdown
  • Tasks that involve UX design

Example prompts

  • “I could only figure out the flow by running it.”
  • “/flow-walkthrough”

Requirements

  • Pre-approved tools (allowed-tools): Read, Write, Edit, Bash, Glob, Grep

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Build the graph. Find entry points and edges
  2. Assert reachability & return paths. For every screen: how do you get in, and does every Done/Back/dismiss land somewhere intentional? Flag…
  3. CRUD-completeness. For every @Model with a Create path, is there a Read and an Update/reopen path from the persistence surface (a…
  4. Entry-point sanity. Does "New X" always create a fresh entity with no way back to the previous one except an incomplete list? Flag…
  5. Nested navigation containers. For every NavigationLink/navigationDestination destination, check whether the destination view declares its…

What it can do on your machine

Read from SKILL.md and the folder at commit 9ffb831. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Bash
    • Glob
    • Grep

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • xcrun
    • xcodebuild

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Flow Walkthrough loads about 2.3k tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 981 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~113
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Edit, Bash, Glob, Grep

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.

SKILL.md

The full file from rshankras/claude-code-apple-skills at commit 9ffb831, republished under its MIT licence (© rshankras). 981 words, ~2,314 tokens.

Download SKILL.mdSave it as .claude/skills/flow-walkthrough/SKILL.md (or your agent's skills folder).
name
flow-walkthrough
description
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."
allowed-tools
Read, Write, Edit, Bash, Glob, Grep
last_verified
2026-07-16
review_by
2027-06-22

Flow Walkthrough Skill

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.

Why this exists (the three failure classes)

Real UX bugs fail at three different layers, and no single mechanism catches all three — so this skill uses three:

Failure classExampleCaught by
Dead-end / missing pathA saved record can only be viewed, never reopened to edit; Done calls popToRoot() and orphans an in-progress entityLayer 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 screenLayer 2 — automated flow driving (XCUITest)
Discoverability"How do I even select a contestant?" — the only affordance is a bare row tapLayer 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.

Input: the <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.

The method

Layer 1 — Static navigation-graph audit (no build required)

Grep the navigation surface and reason over it. Do this first; it's free and catches the highest-severity class.

  1. Build the graph. Find entry points and edges:
    • Grep: NavigationStack, navigationDestination, NavigationLink, \.sheet, \.fullScreenCover, router.push, enum Route, dismiss(), popToRoot, @Query.
  2. Assert reachability & return paths. For every screen: how do you get in, and does every Done/Back/dismiss land somewhere intentional? Flag any popToRoot() that discards an in-progress or just-saved entity.
  3. CRUD-completeness. For every @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.
  4. Entry-point sanity. Does "New X" always create a fresh entity with no way back to the previous one except an incomplete list? Flag create-only loops.
  5. Nested navigation containers. For every 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.

Show full SKILL.md (542 more words)Show less
Layer 2 — Automated flow driving (XCUITest + per-step screenshots)

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.

  1. Ensure a UITest target exists. If none, add one (xcodegen: a type: bundle.ui-testing target; or xcodebuild). Keep the generated tests — they become the Phase 5 regression suite.
  2. Generate one test method per flow from <steps>. After each step, attach a screenshot:
    swift
    func snap(_ name: String) {
        let s = XCTAttachment(screenshot: XCUIScreen.main.screenshot())
        s.name = name; s.lifetime = .keepAlways; add(s)
    }
    Launch with any needed args (e.g. a -uiTestSeed launch argument that seeds SwiftData and, in DEBUG, flips entitlement flags so gated flows are reachable without a real purchase). Assert the destination of each step (XCTAssert(app.staticTexts["Results"].waitForExistence(timeout: 2))), especially after Done/Back — that is what catches wrong-destination bugs.
  3. Run and extract:
    bash
    xcodebuild test -project <App>.xcodeproj -scheme <App> \
      -destination 'platform=iOS Simulator,name=<device>' \
      -resultBundlePath .planning/walkthrough/<flowId>.xcresult
    # export per-step screenshots for the agent to read:
    xcrun xcresulttool export attachments \
      --path .planning/walkthrough/<flowId>.xcresult \
      --output-path .planning/walkthrough/<flowId>/   # adapt flag to installed Xcode
    (The xcresulttool attachment-export subcommand name shifts across Xcode versions — check xcrun xcresulttool --help and adapt.)
  4. Read the screenshots in order → a "filmstrip." Confirm each step lands where the flow says it should. A failed assertion or a wrong screen = a flow bug with visual proof.
  5. One unseeded pass (fresh-install reality). Every seeded run hides zero states — run at least one pass with NO seed argument that visits each top-level screen and screenshots it, in light mode. Assert each zero state renders something intentional (an empty-state view, a hint), not a blank expanse. A user's first launch is unseeded; if every automated capture is seeded, blank first-run screens ship unseen.
Layer 3 — Human discoverability pass (the irreducible residue)

For each flow, emit a short script the human runs and rates — this is the only thing that catches "I couldn't find how to do X":

Flow F1 — Run a contest (as a host)
  1. Tap "Start a Contest"        → were you sure what to tap? (1–5)
  2. Add two contestants          → was adding the *second* obvious? (1–5)
  3. Run each contestant's round  → did you know rows were tappable? (1–5)
  4. Done on results              → did you land back where you expected? (Y/N)
  Where did you hesitate? ______

Keep it to the 2–4 flows that matter; ask for a hesitation note, not just scores — the note is where the real bug hides.

Output: .planning/WALKTHROUGH.md

markdown
# Flow Walkthrough — Phase [N]

## Layer 1 — Navigation graph (static)
- 🔴 NO-EDIT-PATH: ContestHistoryView:19 opens read-only ResultsView; a saved Contest can't be reopened to edit. → route to editable setup.
- 🔴 ORPHANS-ENTITY: ResultsView "Done" calls router.popToRoot() → dumps user home, loses the contest. → dismiss() one level.

## Layer 2 — Driven flows (filmstrips in ./walkthrough/)
| Flow | Result | Note |
|------|--------|------|
| F1 create→run→results→reopen | ❌ DEAD-END at step 6 | reopen lands on read-only results |
| F2 add second contestant | ✅ reaches capture | |

## Layer 3 — Human discoverability checklist
[the per-flow scripts above, for the user to fill in]

## Verdict
[N] dead-ends (fix before phase-complete), [N] reachability failures, discoverability pending human pass.

Store screenshots under .planning/walkthrough/<flowId>/. Fix all Layer-1 dead-ends and Layer-2 failures before the phase is marked complete (same gate discipline as visual-qa).

Honest limits

  • Tests can't judge feel or findability. A green Layer-2 run with an unrated Layer-3 checklist is not a pass.
  • Seeding is required for gated/late-state flows. Provide a DEBUG -uiTestSeed path (insert sample models, set entitlement flags) so reopen/edit/results flows are reachable without manually rebuilding state each run. Remove or guard it behind the launch arg so it never affects release.
  • Discoverability findings are design changes, not bugs to "fix in code" blindly — surface them, let the human decide.

Cadence & integration

  • Run per flow-slice, not per-phase. Right after you build the create→edit→results loop, walk that loop — don't wait for the whole phase. Bugs are cheapest the minute they're introduced.
  • Complements, doesn't replace, visual-qa (which is static/code-level: colors, touch targets, view states). This skill is about flow, that one is about screens.
  • Feeds Phase 5. The generated XCUITests are kept as the regression suite; hand them to testing/tdd-feature/test-spec rather than re-writing.
  • Pairs with a nav-graph review lens. If /apple:review gains a flow/dead-end agent, Layer 1 can run there too; this skill is the runnable, screenshot-producing counterpart.

© rshankras, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/testing/flow-walkthrough of rshankras/claude-code-apple-skills.

Open the folder on GitHubat commit 9ffb831

Compare with similar skills

Flow Walkthrough 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.

Flow Walkthrough compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Flow Walkthrough this skillrshankras/claude-code-apple-skills783—~2.3kAutomated safety check: NotesMIT
Uipath PlannerUiPath/skills167—~8.6kAutomated safety check: NotesMIT
Pull Screenshotsstormpanda/megingiard154—~223Automated safety check: PassCustom licence
Debug Workflowjosstei/maestro-orchestrate465—~238Automated safety check: PassApache-2.0
Docs Searchdavila7/claude-code-templates32k—~650Automated safety check: PassMIT
AI Maestro Documentation Searchaiskillstore/marketplace4301 repos~1.6kAutomated safety check: NotesNone

Similar skills

  • Uipath Planner

    UiPath/skills

    UiPath solution planner & designer. An agent skill from UiPath/skills.

    167 GitHub stars~8.6k tokensUpdated yesterday
    MobileAuto-check: notes
  • Pull Screenshots

    stormpanda/megingiard

    Capture screenshots from both AYN Thor screens (TOP = display 0, BOTTOM = display 4) via ADB and save them to the screenshots/ folder.

    154 GitHub stars~223 tokensUpdated yesterday
    MobileAuto-check passed
  • Debug Workflow

    josstei/maestro-orchestrate

    Run the Maestro debugging workflow for investigation-heavy tasks

    465 GitHub stars~238 tokensUpdated 2 days ago
    MobileAuto-check passed
  • Docs Search

    davila7/claude-code-templates

    Search auto-generated codebase documentation for function signatures, API docs, class definitions, and code comments.

    32k GitHub stars~650 tokensUpdated yesterday
    MobileAuto-check passed
  • AI Maestro Documentation Search

    aiskillstore/marketplace

    PROACTIVELY search auto-generated documentation when receiving ANY user instruction.

    430 GitHub starsUsed in 1 repo~1.6k tokens
    MobileAuto-check: notes
  • Official

    Resolves .NET runtime frames in Apple .ips crash logs to function names, source files and line numbers using dSYM symbols, atos and the Microsoft symbol server.

    5.6k GitHub starsUsed in 1 repo~2.4k tokens
    MobileAuto-check passed

More from rshankras/claude-code-apple-skills

All 41 skills in this repo
  • Accessibility Generator

    rshankras/claude-code-apple-skills

    Generate accessibility infrastructure for VoiceOver, Dynamic Type, and accessibility features.

    783 GitHub stars~1.4k tokensUpdated 2 mo ago
    Auto-check: notes
  • Animation Patterns

    rshankras/claude-code-apple-skills

    SwiftUI animation patterns including springs, transitions, PhaseAnimator, KeyframeAnimator, SF Symbol effects, scroll-driven effects, mesh gradients, text renderers, and shader effects.

    783 GitHub stars~2.1k tokensUpdated 2 mo ago
    Auto-check passed
  • App Description Writer

    rshankras/claude-code-apple-skills

    Generate compelling App Store descriptions that convert browsers into users.

    783 GitHub stars~1.3k tokensUpdated 2 mo ago
    Auto-check passed
  • App Icon Generator

    rshankras/claude-code-apple-skills

    Generates an app icon for macOS or iOS — a fast CoreGraphics placeholder and/or flat layered source art to finish in Icon Composer (the Liquid Glass / iOS 26+ standard).

    783 GitHub stars~5.1k tokensUpdated 2 mo ago
    Auto-check: notes
  • App Namer

    rshankras/claude-code-apple-skills

    Turn an app idea into validated, App-Store-ready name candidates.

    783 GitHub stars~3.4k tokensUpdated 2 mo ago
    Auto-check passed
  • Bundles And Licensing

    rshankras/claude-code-apple-skills

    Revenue beyond the single-app price tag — own-app bundles, Family Sharing as a conversion lever, cross-developer bundles & suites, and institutional licensing via Group Purchases / Apple School &…

    783 GitHub stars~1.8k tokensUpdated 2 mo ago
    Auto-check passed

Questions about Flow Walkthrough

What does Flow Walkthrough do?

Verify UI workflow correctness that a task list, code review, and static screenshots miss. Flow Walkthrough is an agent skill from rshankras/claude-code-apple-skills. Verify UI workflow correctness that a task list, code review, and static screenshots miss.

When should I use Flow Walkthrough?

Flow Walkthrough fits situations like: tasks that involve Mobile testing and debugging; tasks that involve Task breakdown; tasks that involve UX design.

How do I install Flow Walkthrough in Claude Code?

Run `npx skills add rshankras/claude-code-apple-skills --skill flow-walkthrough -a claude-code`. Or copy the skill folder (skills/testing/flow-walkthrough in rshankras/claude-code-apple-skills) into .claude/skills/flow-walkthrough in your project. Claude Code loads it when a task matches its description.

How do I install Flow Walkthrough in Codex?

Run `npx skills add rshankras/claude-code-apple-skills --skill flow-walkthrough -a codex`. Or copy the skill folder (skills/testing/flow-walkthrough in rshankras/claude-code-apple-skills) into .agents/skills/flow-walkthrough in your project. Codex loads it when a task matches its description.

Can I use Flow Walkthrough in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rshankras/claude-code-apple-skills --skill flow-walkthrough -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/flow-walkthrough, .gemini/skills/flow-walkthrough, .github/skills/flow-walkthrough and .opencode/skills/flow-walkthrough in your project.

What does Flow Walkthrough need to run?

Going by SKILL.md and its folder, Flow Walkthrough needs the command-line tools its instructions call (xcrun and xcodebuild). Its frontmatter pre-approves these tools: Read, Write, Edit, Bash, Glob, Grep.

Does Flow Walkthrough access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Flow Walkthrough safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Flow Walkthrough use?

Flow Walkthrough is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Flow Walkthrough use?

About 2.3k tokens (SKILL.md is roughly 9.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Flow Walkthrough?

Skills that share tags, products or a category with Flow Walkthrough: Uipath Planner (UiPath/skills, 167 stars), Pull Screenshots (stormpanda/megingiard, 154 stars), Debug Workflow (josstei/maestro-orchestrate, 465 stars) and Docs Search (davila7/claude-code-templates, 32k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Flow Walkthrough?

rshankras (a GitHub user) maintains it in rshankras/claude-code-apple-skills, which has 783 GitHub stars. The repository holds 41 skills in this directory. The repository was last updated on July 24, 2026.

Source: rshankras/claude-code-apple-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.