Spec-Driven Development (SDD) Guide #
This directory contains specifications for all features and improvements to term.nvim using Spec-Driven Development methodology.
What is SDD? #
Spec-Driven Development is a collaborative approach where:
- Specify - Define the problem, user journeys, and requirements clearly
- Plan - Break down the specification into technical decisions
- Implement - Execute tasks guided by the specification
- Validate - Ensure implementation matches the specification
The specification becomes the source of truth for implementation, not code written first with docs added later.
Structure #
001-template-specification.md- Template for all new specificationsNNN-feature-name.md- Actual feature specifications (where NNN is sequential number)
Workflow #
Step 1: Create Specification #
- Copy
001-template-specification.mdtoNNN-feature-name.md - Fill in all sections (even if some are "TBD")
- Focus on what you're building, not how
- Include user journeys and acceptance criteria
Exit Criteria: Specification is clear enough that someone else could understand what to build
Step 2: Request Review #
- Submit PR with specification
- Mark status as "In Review"
- Address reviewer feedback
- Update specification based on discussion
- Get approval from at least one reviewer
Exit Criteria: All stakeholders agree on what needs to be built
Step 3: Create Technical Plan #
Once spec is approved:
- Create
NNN-feature-name-plan.md - Document:
- Architecture changes
- Module modifications
- New dependencies
- Database/API changes
- Testing approach
Exit Criteria: Tech plan is detailed enough for implementation
Step 4: Break Into Tasks #
- Create
NNN-feature-name-tasks.md - Break plan into small, reviewable chunks
- Each task should be:
- Implementable in 1-2 days of work
- Independently testable
- Clear definition of done
Exit Criteria: Tasks are ready for implementation
Step 5: Implement #
Implement tasks one by one, guided by the spec and plan.
Step 6: Validate #
- Verify all acceptance criteria met
- Run tests
- Update spec status to "Complete"
- Archive completed spec
Key Principles #
✅ Collaboration First - Specs are conversation starters, not final documents
✅ Clarity - Clear requirements reduce implementation time
✅ Iterative - Specs can be refined as understanding grows
✅ Executable - Break specs into concrete, testable tasks
✅ Non-Negotiable Values - Keep CONSTITUTION.md in mind
Spec Quality Checklist #
Before submitting for review, ensure your spec:
Examples #
Good Spec Characteristics #
- Focuses on why and what, not how
- Uses real-world examples (user journeys)
- Clear acceptance criteria (testable)
- Identifies constraints early
- Documents assumptions
- Suggests but doesn't mandate implementation details
Weak Spec Characteristics #
- ❌ "Use Rust for performance" (how, not what)
- ❌ "Fast API endpoint" (vague, unmeasurable)
- ❌ "Similar to Jira" (assumes knowledge, not explicit)
- ❌ "TBD for everything" (no real thinking done)
- ❌ 20+ pages of detail (overthinking)
Status Definitions #
- Draft - Spec is being written, not ready for review
- In Review - Submitted for feedback, awaiting approval
- Approved - Stakeholders agree, ready for planning
- Implementing - Technical plan created, tasks in progress
- Complete - All acceptance criteria met, merged
- On Hold - Paused, waiting for dependencies or feedback
Template Reference #
Use 001-template-specification.md as your starting point. Don't skip sections even if content is minimal:
- Section empty? Write "TBD - will clarify with team"
- Section not applicable? Write "N/A - not relevant for this feature"
Tools & Integration #
- Language: Markdown (version control friendly, human readable)
- Review: GitHub PR comments on spec files
- Tracking: Use spec status field + GitHub issues
- Automation: Spec → Technical Plan → Tasks → Implementation
Resources #
Questions? #
If you have questions about the SDD process:
- Check this README
- Review existing specs in this directory
- Ask in team discussions
- Update this README if you found a gap