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
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, or command-runner recipes. Emphasizes portability, quoting, safe filesystem/process handling, non-TUI CLI tools, ShellCheck, shfmt, Bats, and ShellSpec. NOT for Python, TypeScript, Go, web code, or infrastructure operations.
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.
testing
Author, inspect, troubleshoot, and review infrastructure across IaC, Kubernetes, cloud resources, containers, CI/CD, and Linux hosts. Use when changing Terraform/OpenTofu, Kubernetes, Helm, Kustomize, Dockerfiles, GitHub Actions, AWS, GCP, Cloud Run, BigQuery, IAM, logs, instances, or service health. NOT for deploy/apply/rollback workflows (see deploying-infra). NOT for shell scripts or generic command pipelines (see writing-shell).
development
Configure safe git workflow hygiene: pre-commit/pre-push hooks, Gitleaks secret scanning, .gitignore rules, local git config, and guardrails. Use when setting up git hooks, gitleaks/git leaks, staged pre-commit checks, pre-push validation, core.hooksPath, .gitignore, or git config best practices. NOT for creating commits (use committing-code), cleaning branches/worktrees (use cleanup-git), or creating worktrees (use using-git-worktrees).