spec-planner/SKILL.md
Dialogue-driven spec development through skeptical questioning and iterative refinement. Triggers: 'spec this out', feature planning, architecture decisions, 'is this worth it?' questions, RFC/design doc creation, work scoping. Invoke Librarian for unfamiliar tech/frameworks/APIs.
npx skillsauth add sanurb/skills spec-plannerInstall 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.
Produce implementation-ready specs through rigorous dialogue and honest trade-off analysis.
CLARIFY ──[user responds]──► DISCOVER ──[done]──► DRAFT ──[complete]──► REFINE ──[approved]──► DONE
│ │ │ │
└──[still ambiguous]──◄──────┴───────────────────┴────[gaps found]──────┘
State phase at end of every response:
---
Phase: CLARIFY | Waiting for: answers to questions 1-4
Hard rule: No spec until user has responded to at least one round of questions.
IMPORTANT: Always use the question tool to ask clarifying questions. Do NOT output questions as freeform text. The question tool provides structured options and better UX. Example:
question({
questions: [{
header: "Scope",
question: "Which subsystems need detailed specs?",
options: [
{ label: "VCS layer", description: "jj-lib + gix unified interface" },
{ label: "Review workflow", description: "GitHub PR-style local review" },
{ label: "Event system", description: "pub/sub + persistence" }
],
multiple: true
}]
})
| Category | Example | |----------|---------| | Scope | "Share where? Social media? Direct link? Embed?" | | Motivation | "What user problem are we actually solving?" | | Constraints | "Does this need to work with existing privacy settings?" | | Success | "How will we know this worked?" |
Escape prevention: Even if request seems complete, ask 2+ clarifying questions. Skip only for mechanical requests (e.g., "rename X to Y").
Anti-patterns to resist:
Transition: User answered AND no new ambiguities → DISCOVER
After clarification, before planning: Understand existing system.
Launch explore subagents in parallel:
Task(
subagent_type="explore",
description="Explore [area name]",
prompt="Explore [area]. Return: key files, abstractions, patterns, integration points."
)
| Target | What to Find | |--------|--------------| | Affected area | Files, modules that will change | | Existing patterns | How similar features are implemented | | Integration points | APIs, events, data flows touched |
If unfamiliar tech involved, invoke Librarian:
Task(
subagent_type="librarian",
description="Research [tech name]",
prompt="Research [tech] for [use case]. Return: recommended approach, gotchas, production patterns."
)
Output: Brief architecture summary before proposing solutions.
Transition: System context understood → DRAFT
Apply planning framework from decision-frameworks.md:
Use appropriate template from templates.md:
Transition: Spec produced → REFINE
Run completeness check:
| Criterion | Check | |-----------|-------| | Scope bounded | Every deliverable listed; non-goals explicit | | Ambiguity resolved | No "TBD" or "to be determined" | | Acceptance testable | Each criterion pass/fail verifiable | | Dependencies ordered | Clear what blocks what | | Types defined | Data shapes specified (not "some object") | | Effort estimated | Each deliverable has S/M/L/XL | | Risks identified | At least 2 risks with mitigations | | Open questions | Resolved OR assigned owner |
If any criterion fails: Return to dialogue. "To finalize, I need clarity on: [failing criteria]."
Transition: All criteria pass + user approval → DONE
=== Spec Complete ===
Phase: DONE
Type: <feature plan | architecture decision | refactoring | strategy>
Effort: <S/M/L/XL>
Status: Ready for task breakdown
Discovery:
- Explored: <areas investigated>
- Key findings: <relevant architecture/patterns>
Recommendation:
<brief summary>
Key Trade-offs:
- <what we're choosing vs alternatives>
Deliverables (Ordered):
1. [D1] (effort) — depends on: -
2. [D2] (effort) — depends on: D1
Open Questions:
- [ ] <if any remain> → Owner: [who]
specs/<filename>.mdSpec written to: specs/<filename>.md| Size | Time | Scope | |------|------|-------| | S | <1 hour | Single file, isolated change | | M | 1-3 hours | Few files, contained feature | | L | 1-2 days | Cross-cutting, multiple components | | XL | >2 days | Major refactor, new system |
When scope creeps:
Hard rule: If scope changes, re-estimate and flag explicitly.
| File | When to Read | |------|--------------| | templates.md | Output formats for plans, ADRs, RFCs | | decision-frameworks.md | Complex multi-factor decisions | | estimation.md | Breaking down work, avoiding underestimation | | technical-debt.md | Evaluating refactoring ROI |
development
Sets up an `## Agent skills` block in AGENTS.md/CLAUDE.md and `docs/agents/` so the engineering skills know this repo's issue tracker (GitHub, GitLab, fp, or local markdown), triage label vocabulary, and domain doc layout. Run before first use of `fp-plan`, `fp-implement`, `fp-review`, `to-issues`, `to-prd`, `triage`, `diagnose`, `tdd`, `improve-codebase-architecture`, or `zoom-out` — or if those skills appear to be missing context about the issue tracker, triage labels, or domain docs.
development
Build a throwaway prototype to flush out a design before committing to it. Routes between two branches — a runnable terminal app for state/business-logic questions, or several radically different UI variations toggleable from one route. Use when the user wants to prototype, sanity-check a data model or state machine, mock up a UI, explore design options, or says "prototype this", "let me play with it", "try a few designs".
tools
Control herdr (a terminal-native agent multiplexer) from inside it. Manage workspaces and tabs, split panes, spawn sibling agents, read pane output, and wait for state changes — all via CLI commands that talk to the running herdr instance over a local unix socket. Use when running inside herdr (HERDR_ENV=1). Do not use outside herdr.
documentation
Compact the current conversation into a handoff document for another agent to pick up.