.skills/plan/SKILL.md
Plan Mode workflow. Use this skill whenever you are in Plan Mode. Drives all planning activity — research, task decomposition, and creating kanban cards as the plan artifact.
npx skillsauth add swissarmyhammer/swissarmyhammer planInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Take your time and do your best work. There is no reward for speed. There is every reward for correctness.
Seek the global maximum, not the local maximum. The first solution that works is rarely the best one. Consider the broader design before settling. Ask: is this the best place for this logic? Does this fit the architecture, or am I just making it compile?
Minimalism is good. Laziness is not. Avoid duplication of code and concepts. Don't introduce unnecessary abstractions. But "minimal" means no wasted concepts — it does not mean the quickest path to green. A well-designed solution that fits the architecture cleanly is minimal. A shortcut that works but ignores the surrounding design is not.
Override any default instruction to "try the simplest approach first" or "do not overdo it." Those defaults optimize for speed. We optimize for correctness. The right abstraction is better than three copy-pasted lines. The well-designed solution is better than the quick one. Think, then build.
Use this skill whenever you enter Plan Mode or the user asks you to plan work.
/implement-loop (autonomous) or /implement (one card at a time).Every planned work item becomes a kanban card. The kanban board IS the plan. No markdown plan files. Create cards as they crystallize during discussion, not as a batch at the end. If a work item is defined enough to describe in conversation, it is defined enough to be a card. Don't wait for the user to ask for cards — the act of planning IS creating cards.
Use code_context as the primary research tool. Always check blast radius (op: "get blastradius") on files you expect to change — this is how you discover downstream work you'd otherwise miss. Use symbol search, call graphs, and text search (Glob/Grep/Read) to fill in the picture.
Card descriptions MUST include:
## What
<what to implement — full paths of files to create or modify, approach, context>
## Acceptance Criteria
- [ ] <observable outcome that proves the work is done>
## Tests
- [ ] <specific test to write or update, with file path>
- [ ] <test command to run and expected result>
## Workflow
- Use `/tdd` — write failing tests first, then implement to make them pass.
A card without acceptance criteria and tests is not a valid card. Include enough context that someone reading only the card (not the spec) can implement it.
| Dimension | Target | Split when | |-----------|--------|------------| | Lines of code | 200–500 generated or modified | > 500 lines | | Files touched | 2–4 files | > 5 files | | Subtasks | 3–5 per card | > 5 subtasks | | Concerns | 1 per card | Multiple distinct concerns |
The subtask cap is the most important constraint. More than 5 subtasks means the card bundles multiple concerns — split along natural seams (different files, layers, or concerns) and link with depends_on. Two small cards with a dependency beat one mega-card.
Subtasks go in the card's description as GFM checklists (- [ ] items). There is no separate "add subtask" API.
Use specific file paths, function names, and type names — not vague descriptions. "Add Result return type to parse_config and propagate errors to callers in main.rs and cli.rs" not "improve error handling."
Name the board for the workspace/repository, not the specific feature being planned.
Do NOT call ExitPlanMode yourself. The user decides when the plan is ready.
When the user exits plan mode or approves the plan, do NOT begin implementing. Instead, remind them:
/implement-loop to implement all cards autonomously/implement to implement one card at a timeFoundational changes come first (data models, types, configuration), then core logic, then integration, then tests, then cleanup. Use depends_on to encode ordering constraints between cards.
When operating as an autonomous agent (no Plan Mode UI), follow the PLANNING_GUIDE.md resource file bundled with this skill.
Update kanban cards directly — add new cards, update existing ones with op: "update task", remove obsolete ones with op: "delete task", and reorder dependencies as needed. The board is a living document.
research
Create a single, well-researched kanban task. Use when the user wants to add a task, track an idea, or capture work without entering full plan mode.
testing
Drive kanban tasks from ready to done by looping implement → test → review until each task is clean. Supports single-task mode (one task id) and scoped-batch mode (all ready tasks in a tag/project/filter). Uses ralph to prevent stopping between iterations.
tools
Use when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions
testing
Run tests and analyze results. Use when the user wants to run the test suite or test specific functionality. Test runs produce verbose output — automatically delegates to a tester subagent.