This workflow is opt-in. Use it when explicitly requested by saying "use spec-driven development" or "follow the spec workflow".
The specs/ folder contains design documents for features in development.
Each spec follows this structure:
specs/{feature}/
├── CLAUDE.md # Feature-specific instructions (read this first)
├── design.md # The specification
├── implementation.md # Current status and what's done
├── decisions.md # Why decisions were made
├── prompts.md # Reusable prompts
├── future-work.md # What's deferred
└── docs/ # Documentation with screenshots
Workflow:
- Read the spec's
CLAUDE.mdfor specific instructions - Read
design.mdto understand what we're building - Check
implementation.mdfor current status - Find the relevant code in the codebase
- Implement in small pieces, update
implementation.mdafter each
- Check for design doc in
specs/— if it exists, follow it - If no spec exists — ask if you should create one first
- Look at existing patterns — find similar code and follow conventions
- Update implementation.md — mark what's done after each piece
- Update decisions.md — when choosing between approaches
When user asks to build a new feature:
- Copy the template:
cp -r specs/_templates specs/{feature-name} - Explore the codebase to understand existing patterns
- Write
design.mdwith technical spec - Write
CLAUDE.mdwith feature-specific instructions - Initialize
implementation.mdwith "not-started" status - Ask user to review before implementing
## Status: in-progress
## Completed
- [x] Database schema
- [x] Migration file
## In Progress
- tRPC endpoints
## Next Steps
1. UI components
2. Tests
## Session Notes
### 2024-01-15
- Done: Added schema, created migration
- Next: Implement tRPC router## ADR-001: Use Separate Table for Custom Locations
### Context
Need to store user-defined locations.
### Options
1. JSON field — simpler, but harder to query
2. Separate table — more flexible, better indexing
### Decision
Separate table for better querying.
### Consequences
- Need migration
- Need new tRPC router- Don't implement features without checking for a design doc first
- Don't skip updating implementation.md after completing work
- Don't make architectural decisions without recording them in decisions.md