dist/claude/plugins/spec-dev/skills/spec-plan/SKILL.md
Turn a requirement or a concrete feature idea into an EPIC with vertical-slice TASKs. Use when you have a REQ file, or a feature idea already specific enough for a quick 3–5 question pass, and need an executable plan with dependencies and acceptance criteria. NOT for open-ended idea exploration — use brainstorming-ideas. NOT for capturing PRD-quality requirements — use spec-interview. NOT for implementing tasks — use spec-work.
npx skillsauth add alexei-led/claude-code-config spec-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.
spec plan — create an epic with vertical-slice tasksCLI at scripts/specctl. Turn a requirement (or idea) into an EPIC-*.md + a set of independently grabbable TASK-*.md files with dependencies, blockers, and acceptance criteria.
Role: technical planner. Goal: epic + tasks. Out of scope: implementation code.
The user's input is one of:
REQ-id — read requirement, create epic + tasksEPIC-id — refine existing epic"<idea text>" — only when the idea is already concrete: ask 3–5 quick
questions, then plan. For open-ended or unvalidated ideas, use the
brainstorming-ideas skill first; for deep PRD-quality requirements, use the
spec-interview skill instead.If empty, ask: "What should I plan? Give me a REQ id or describe the feature."
scripts/specctl init 2>/dev/null || true
mkdir -p .spec/epics .spec/tasks
scripts/specctl show REQ-<id> and read the file.
spec-status to list requirements." Stop.scripts/specctl show EPIC-<id> — refinement; may add/update tasks.
Ask the user a multi-choice question: "Should I explore the codebase first?"
If yes, delegate codebase exploration to a research/exploration agent if the runtime supports it. The prompt: "Find existing patterns, conventions, and code relevant to <requirement summary>. Look for similar implementations, reusable code, and architectural patterns."
Capture from the research:
Build vertical-slice tasks: each is a tracer bullet (narrow but complete path through the system), M-sized (3–5 files / 3–5 criteria) is the target, ordering via blocked-by, tests in the same slice as the behavior. For the full vertical-slice rules, task sizing, dependency rules, and the pre-write mental-model checklist, read references/planning-rules.md.
Before writing files, show the plan:
## Proposed plan for <requirement>
### Epic: EPIC-<slug>
<overview>
### Tasks (in order):
1. TASK-<slug>-1: <title>
- Size: M
- Files: <expected files>
- Blocked by: none
- Open questions: none | <specific blocker>
- Verifiable: <demo/check/test>
2. TASK-<slug>-2: <title>
- Size: M
- Files: <expected files>
- Blocked by: TASK-<slug>-1
- Verifiable: <demo/check/test>
Ask multi-choice: "Does this plan look right?"
Wait for approval before writing.
---
id: EPIC-<slug>
status: open
priority: <from REQ or normal>
implements: REQ-<slug>
created: <date>
tasks:
- TASK-<slug>-1
- TASK-<slug>-2
---
# <Title>
## Overview
<What this epic accomplishes>
## Approach
<High-level technical approach. Reference existing patterns: "Follow pattern at src/auth.ts:42".>
## Quick commands
\`\`\`bash
make build
make test
make lint
\`\`\`
## Acceptance
- [ ] All REQ criteria met
- [ ] Tests pass
- [ ] No lint errors
## References
- Requirement: REQ-<slug>
- <Other refs from research>
For each task:
---
id: TASK-<slug>-N
status: todo
priority: normal
epic: EPIC-<slug>
blocked-by: [TASK-<slug>-X] # or []
size: M
---
# <Task title>
## Description
<What to build — WHAT, not HOW. Describe the end-to-end behavior this vertical slice delivers.>
## Notes
- Blockers or open questions: <none | specific human decision / access / manual check needed>
- Out of scope: <adjacent behavior not included>
## Files
- `path/to/file.ts` — <what changes>
## Approach
<High-level approach. Reference patterns: "Follow pattern at src/example.ts:15".>
## Acceptance
- [ ] <observable criterion 1>
- [ ] <observable criterion 2>
- [ ] Success-path test exists if code behavior changed
- [ ] Error or edge-case test exists when relevant
- [ ] Tests pass
scripts/specctl validate
scripts/specctl status
Show summary:
Created:
- EPIC-<slug> with <N> tasks
- Tasks: TASK-<slug>-1, TASK-<slug>-2, ...
Next steps:
1. Start work: use the `spec-work` skill — `spec-work EPIC-<slug>`
2. Review plan: read .spec/epics/EPIC-<slug>.md
Plans describe WHAT, not HOW.
file:line, API notes from docs.Implementation happens in the spec-work skill.
tools
Use when planning, executing, checkpointing, finishing, or inspecting lightweight spec-driven work. Runs one task at a time using `.spec/` markdown files and the bundled `specctl` helper. NOT for broad product discovery beyond a short requirement interview. NOT for generic implementation planning that does not read or write `.spec/` files.
development
Simple web development with HTML, CSS, JS, and HTMX. Use when working with .html, .css, or .htmx files, web templates, stylesheets, or vanilla JS scripts. NOT for React/Vue/Angular (use writing-typescript) or Node.js backends.
tools
Idiomatic TypeScript development. Use when writing TypeScript code, Node.js services, React apps, or TypeScript design advice. Emphasizes strict typing, boundary validation, composition, fast feedback, behavior tests, and project-configured tooling. NOT for Go, Python, Rust, plain HTML/CSS/JS, or server-rendered templates (use writing-web).
tools
Idiomatic shell development for POSIX sh, Bash, Zsh, Fish, hooks, CI shell steps, and scriptable CLI glue. Use when writing or changing `.sh`, `.bash`, `.zsh`, `.fish`, `.bats`, shell functions, shell pipelines, CI `run:` shell bodies, or command-runner recipes. Emphasizes portability, quoting, safe filesystem/process handling, non-TUI CLI tools, ShellCheck, shfmt, Bats, and ShellSpec. NOT for Python, Rust, TypeScript, Go, web code, or GitHub Actions workflow/job/permissions semantics; use operating-infra.