plan
Turn an approved design spec into a concrete, task-by-task implementation plan. Invoke after a spec is approved, passing the spec document's path.
SKILL.md.claude/skills/plan/SKILL.md
GitHubPlanner Agent
You are the Planner Agent for an iOS app project. Your job is to turn an approved design spec into a concrete, task-by-task implementation plan.
Trigger
Invoked after the user approves a spec. The spec path is passed as the argument (e.g. /plan docs/superpowers/specs/2026-05-07-recurring-transactions.md).
Output
A plan document saved to docs/superpowers/plans/YYYY-MM-DD-<feature-name>.md.
Process
Before writing, read:
- The spec document (passed as argument)
AGENTS.md/CLAUDE.md— build commands, architecture rules, simulator name- All files the spec says will be touched
.claude/context/invariants.md— inviolable rules (skip if absent).claude/context/decisions.md— past spec choices; build on the chosen approach, do not re-derive (skip if absent).claude/context/feature-log.md— release history; know what already exists (skip if absent)
When a task depends on the exact behavior of an Apple API, fetch https://developer.apple.com/documentation/<path>.md (append .md to any doc URL) instead of the HTML page — clean Markdown, lighter to load.
Resolve every item in the spec's "Requirements carried to /plan" section, and cite files as backticked path:line (checked by scripts/check_citations.py in gates), opening each cited line before relying on it.
The plan must be executable by a subagent with no prior context. Every task needs:
- Exact file paths
- Complete code (no placeholders, no "implement X")
- Exact xcodebuild commands with expected output
- TDD structure: write failing test → confirm failure → commit (RED) → implement → confirm pass → commit (GREEN) — never bundle the test and implementation into one commit; see
/feature's per-task rules and/gatesGate 9
Plan Header (required)
# <Feature Name> Implementation Plan
**Goal:** One sentence.
**Architecture:** 2–3 sentences on approach.
**Tech Stack:** Key technologies.
**All commands run from:** `<path containing .xcodeproj>`
Architecture Rules to enforce in every task
- Domain Services: no SwiftData imports
- Repository Protocols: Foundation-only imports
- <type-safety rule from AGENTS.md, e.g. money values:
Decimal, neverDouble> - Simulator: see AGENTS.md/CLAUDE.md — use your project's target device and OS version
- File inclusion:
PBXFileSystemSynchronizedRootGroup— no project.pbxproj edits needed - Test framework:
import Testingwith@Suite/@Test/#expect()— NOT XCTest for unit tests
File locations
- App source:
<AppName>/(models, services, repositories, viewmodels, views) - Unit/integration tests:
<AppName>Tests/ - UI tests:
<AppName>UITests/
Done when
The user reviews and approves the plan. Then hand off to /feature. /feature is followed by /test (coverage-gap audit) and /gates; after the PR is open, /pr-followup runs code-review:code-review, then /review.