Create or update project specifications interactively through an interview process...
Interactive workflow for creating comprehensive project specifications through structured interviews.
/spec-flow:init without --skip-interviewParse from conversation context:
--from-readme - Seed from existing README.md--from-existing - Update existing specCheck for existing context:
- .claude/spec/SPEC.md (existing spec)
- README.md (project description)
- CLAUDE.md (project instructions)
- package.json / go.mod / pyproject.toml (project type hints)
If existing spec found:
If README found:
Ask these questions one at a time, building on answers:
Q1: Problem Statement
"What problem does this project solve? Who has this problem?"
Listen for: user types, pain points, current alternatives
Q2: Core Value
"If this project does ONE thing really well, what is it?"
Listen for: primary feature, key differentiator
Q3: Success Criteria
"How will you know when this is 'done enough' to use?"
Listen for: MVP scope, must-have vs nice-to-have
Q4: Scope Boundaries
"What is explicitly OUT of scope for this project?"
Listen for: features to avoid, complexity limits
Q5: Technology Stack
"What language/framework are you using, or do you have preferences?"
If unsure, suggest based on project type:
Q6: Constraints
"Any technical constraints I should know about? (Performance requirements, integrations, compatibility, etc.)"
Listen for: existing systems, performance needs, deployment targets
Q7: Patterns
"Are there code patterns or architectural styles you prefer?"
Listen for: testing preferences, error handling, modularity
Based on interview answers:
Generate functional requirements (REQ-xxx):
Generate non-functional requirements (NFR-xxx):
Present for review:
"Based on our conversation, here are the requirements I captured. Please review and let me know if anything is missing or incorrect."
Propose component structure:
Define milestones:
Generate initial task breakdown:
Write .claude/spec/SPEC.md:
Write .claude/steering/:
product.md with vision and userstech.md with stack and patternsdecisions.md with initial "chose X over Y" entriesWrite .claude/spec/tasks/:
Present summary:
"I've created the spec structure. Here's what was generated:
- SPEC.md with N requirements
- M milestone task files
- Steering docs for ongoing context
Run
/spec-flow:statusto see your project overview."
Claude: "What problem does this project solve? Who has this problem?"
User: "I want to build a CLI tool that helps me track time spent on projects"
Claude: "Got it - a time tracking CLI for personal productivity. If this tool
does ONE thing really well, what would that be?"
User: "Quick time entry - I want to log time without opening an app"
Claude: "Speed of entry is key. So something like `tt start project-name` to
begin tracking. How will you know when it's 'done enough' to use daily?"
User: "When I can start/stop timers and see a daily summary"
Claude: "So MVP is: start/stop timers + daily summary view. What's explicitly
OUT of scope? What should this NOT try to do?"
User: "No syncing to cloud services, no team features, no billing"
Claude: "Perfect - keeping it local and personal. What language are you
thinking? Given it's a CLI..."
User: "Go"
Claude: "Great choice for CLIs. Any specific patterns or constraints?"
User: "Just make it fast and simple"
Claude: "Based on our conversation, here are the requirements I captured:
**Functional:**
- [REQ-001] Start timer for a named project
- [REQ-002] Stop current timer
- [REQ-003] View daily time summary
- [REQ-004] Persist time entries locally
**Non-Functional:**
- [NFR-001] Sub-100ms command execution
- [NFR-002] Single binary, no dependencies
**Out of Scope:**
- Cloud sync, team features, billing integration
Does this capture it correctly?"
For question templates by project type, see questions.md. For example completed specs, see examples.md.