- Spec-Kit: Constitution-Based Spec-Driven Development
- Official GitHub Spec-Kit integration providing a 7-phase constitution-driven workflow for feature development.
- Quick Start
- This skill works with the
- GitHub Spec-Kit CLI
- to guide you through structured feature development:
- Constitution
- → Establish governing principles
- Specify
- → Define functional requirements
- Clarify
- → Resolve ambiguities
- Plan
- → Create technical strategy
- Tasks
- → Generate actionable breakdown
- Analyze
- → Validate consistency
- Implement
- → Execute implementation
- Storage
- Creates files in .specify/specs/NNN-feature-name/ directory with numbered features When to Use Setting up spec-kit in a project Creating constitution-based feature specifications Working with .specify/ directory Following GitHub spec-kit workflow Constitution-driven development Prerequisites & Setup Check CLI Installation First, verify if spec-kit CLI is installed: command -v specify || echo "Not installed" Installation If not installed:
Persistent installation (recommended)
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
One-time usage
uvx --from git+https://github.com/github/spec-kit.git specify init < PROJECT_NAME
Requirements : Python 3.11+ Git uv package manager ( install uv ) Project Initialization If CLI is installed but project not initialized:
Initialize in current directory
specify init . --ai claude
Initialize new project
specify init < project-name
--ai claude
Options:
--force: Overwrite non-empty directories
--script ps: Generate PowerShell scripts (Windows)
--no-git: Skip Git initialization
Detecting Project State Before proceeding, always detect the current state: 1. CLI Installed? if command -v specify &> /dev/null || [ -x " $HOME /.local/bin/specify" ] ; then echo "CLI installed" else echo "CLI not installed - guide user through installation" fi 2. Project Initialized? if [ -d ".specify" ] && [ -f ".specify/memory/constitution.md" ] ; then echo "Project initialized" else echo "Project not initialized - guide user through 'specify init'" fi 3. Current Feature
Get latest feature directory
LATEST
$( ls -d .specify/specs/ [ 0 -9 ] * 2
/dev/null | sort -V | tail -1 ) echo "Latest feature: $LATEST " 4. Current Phase Detect phase by checking file existence in latest feature: FEATURE_DIR = ".specify/specs/001-feature-name" if [ ! -f ".specify/memory/constitution.md" ] ; then echo "Phase: constitution" elif [ ! -d " $FEATURE_DIR " ] ; then echo "Phase: specify" elif [ -f " $FEATURE_DIR /spec.md" ] && ! grep -q "## Clarifications" " $FEATURE_DIR /spec.md" ; then echo "Phase: clarify" elif [ ! -f " $FEATURE_DIR /plan.md" ] ; then echo "Phase: plan" elif [ ! -f " $FEATURE_DIR /tasks.md" ] ; then echo "Phase: tasks" elif [ -f " $FEATURE_DIR /tasks.md" ] && grep -q " \ - \ [ \ ]" " $FEATURE_DIR /tasks.md" ; then echo "Phase: implement" else echo "Phase: complete" fi Constitution Phase Establish foundational principles that govern all development decisions. Purpose Create .specify/memory/constitution.md with: Project values and principles Technical standards Decision-making frameworks Code quality expectations Architecture guidelines Process Gather Context Understand project domain Identify key stakeholders Review existing standards (if any) Draft Constitution Core values and principles Technical standards Quality expectations Decision criteria Structure
Project Constitution
- Core Values
- 1.
- **
- [Value Name]
- **
-
- [Description and implications]
- 2.
- **
- [Value Name]
- **
- [Description and implications]
Technical Principles
Architecture
[Principle with rationale]
Code Quality
[Standards and expectations]
Performance
[Performance criteria]
Decision Framework When making technical decisions, consider: 1. [Criterion with priority] 2. [Criterion with priority] Versioning Constitution can evolve Track changes for governance Review periodically Example Content
Project Constitution
- Core Values
- 1.
- **
- Simplicity Over Cleverness
- **
-
- Favor straightforward solutions that are easy to understand and maintain over clever optimizations.
- 2.
- **
- User Experience First
- **
- Every technical decision should improve or maintain user experience.
Technical Principles
Architecture
Prefer composition over inheritance
Keep components loosely coupled
Design for testability
Code Quality
Code reviews required for all changes
Unit test coverage > 80%
Documentation for public APIs
Performance
Page load < 3 seconds
API response < 200ms
Progressive enhancement for slower connections
Decision Framework When choosing between approaches: 1. Does it align with our core values? 2. Is it maintainable by the team? 3. Does it scale with our growth? 4. What's the long-term cost? Specify Phase Define what needs building and why , avoiding technology specifics. Script Usage
Create new feature
.specify/scripts/bash/create-new-feature.sh --json "feature-name"
Expected JSON output:
{"BRANCH_NAME": "001-feature-name", "SPEC_FILE": "/path/to/.specify/specs/001-feature-name/spec.md"}
- Parse JSON
- Extract BRANCH_NAME and SPEC_FILE for subsequent operations. Template Structure Load .specify/templates/spec-template.md to understand required sections, then create specification at SPEC_FILE location. Specification Content Focus on functional requirements :
Feature Specification: [Feature Name]
Problem Statement [What problem are we solving?]
User Stories
Story 1: [Title] As a [role] I want [capability] So that [benefit] ** Acceptance Criteria: ** - [ ] [ Specific, testable criterion ] - [ ] [ Specific, testable criterion ]
Story 2: [Title] [Continue...]
Non-Functional Requirements
Performance: [Specific metrics]
Security: [Requirements]
Accessibility: [Standards]
Scalability: [Expectations]
Success Metrics
[Measurable outcome]
[Measurable outcome]
- Out of Scope
- [Explicitly state what's NOT included]
- Key Principles
- Technology-agnostic
-
- Don't specify "use React" or "MySQL"
- Outcome-focused
-
- Describe what user achieves, not how
- Testable
-
- Acceptance criteria must be verifiable
- Complete
- Address edge cases and error scenarios Git Integration The script automatically: Creates new feature branch (e.g., 001-feature-name ) Checks out the branch Initializes spec file Clarify Phase Resolve underspecified areas through targeted questioning. Purpose Before planning implementation, ensure specification is complete and unambiguous. Process Analyze Specification Read spec.md thoroughly Identify ambiguities, gaps, assumptions Note areas with multiple valid interpretations Generate Questions (Maximum 5) Prioritize high-impact areas Focus on decisions that affect architecture Ask about edge cases and error handling Question Format
Clarifications
- Q1: [Clear, specific question]
- **
- Context
- **
-
- [Why this matters]
- **
- Options
- **
- [If multiple approaches exist]
- Q2: [Clear, specific question]
- **
- Context
- **
-
- [Why this matters]
- **
- Impact
- **
-
- [What decisions depend on this]
- Update Specification
- Add "## Clarifications" section to spec.md
- Document questions and answers
- Update relevant sections based on answers
- Iterate until all critical questions answered
- Guidelines
- Maximum 5 questions
- per round
- Specific, not general
-
- "How should we handle concurrent edits?" not "How should it work?"
- Decision-focused
-
- Questions that inform technical choices
- Incremental
- Can run multiple clarification rounds Example Questions
Clarifications
- Q1: How should the system handle conflicts when two users edit the same document simultaneously?
- **
- Context
- **
-
- This affects data model design and user experience.
- **
- Options
- **
- :
- -
- Last-write-wins (simple, may lose data)
- -
- Operational transforms (complex, preserves all edits)
- -
- Locked editing (simple, limits collaboration)
- **
- Answer
- **
- [User provides answer]
- Q2: What's the maximum number of concurrent users we need to support?
- **
- Context
- **
-
- Affects infrastructure planning and architecture decisions.
- **
- Impact
- **
-
- Determines caching strategy, database choices, and scaling approach.
- **
- Answer
- **
- [User provides answer] Plan Phase Create technical implementation strategy based on clarified specification. Script Usage
Setup plan phase
.specify/scripts/bash/setup-plan.sh --json
Expected JSON output:
{"FEATURE_SPEC": "/path/spec.md", "IMPL_PLAN": "/path/plan.md", "SPECS_DIR": "/path/specs", "BRANCH": "001-feature"}
Documents to Create 1. Main Plan ( plan.md )
Implementation Plan: [Feature Name]
Technology Stack
Frontend
Framework: [Choice with rationale]
State Management: [Choice with rationale]
Styling: [Choice with rationale]
Backend
Language/Framework: [Choice with rationale]
Database: [Choice with rationale]
API Style: [REST/GraphQL/etc with rationale]
Architecture
- System Overview
- ```mermaid
- graph TD
- A[Client] --> B[API Gateway]
- B --> C[Service Layer]
- C --> D[Data Layer]
- Component Design
- Component 1: [Name]
- Responsibility
-
- [What it does]
- Interfaces
-
- [APIs it exposes]
- Dependencies
- [What it needs] [Continue for all components...] Design Patterns [Pattern]: [Where and why used] Security Considerations Authentication: [Approach] Authorization: [Approach] Data Protection: [Approach] Performance Strategy Caching: [Strategy] Optimization: [Key areas] Error Handling Error types and handling strategies Logging and monitoring approach
2. Data Model (data-model.md)
```markdown
Data Model
Entity Relationship
```mermaid erDiagram USER ||--o{ DOCUMENT : creates USER { string id string email string role } DOCUMENT { string id string title string content } Schemas User interface User { id : string ; email : string ; role : 'admin' | 'editor' | 'viewer' ; createdAt : Date ; } [Continue for all entities...]
3. API Contracts (contracts/)
Create API specifications:
- api-spec.json (OpenAPI/Swagger)
- signalr-spec.md (if using SignalR)
- Other contract definitions
4. Research (research.md) - Optional
Document technology investigations: ```markdown
Research: [Topic]
Options Evaluated
Option 1: [Technology]
Pros: [Benefits] Cons: [Drawbacks] Fit: [How well it matches our needs]
Option 2: [Technology]
[Same structure...]
Recommendation
[Chosen option with rationale]
References
- [Source 1]
- [Source 2]
- Quick start ( quickstart.md ) - Optional Setup instructions for developers. Alignment Check Before finalizing: ✅ Does plan address all requirements? ✅ Does it follow constitution principles? ✅ Are technical choices justified? ✅ Are dependencies identified? ✅ Is it implementable? Tasks Phase Generate dependency-ordered, actionable implementation tasks. Prerequisites Script
Check prerequisites
.specify/scripts/bash/check-prerequisites.sh --json [ --require-tasks ] [ --include-tasks ]
Output:
Task Generation Create .specify/specs/NNN-feature/tasks.md :
Implementation Tasks: [Feature Name]
Phase 1: Foundation
[ ] 1.1 Set up project structure
Create directory layout per architecture doc
Configure build tools
Initialize testing framework
- **
- Depends on
- **
-
None
- **
- Requirement
- **
-
R1.1
[ ] 1.2 [P] Configure development environment
Set up linters and formatters
Configure CI/CD pipeline basics
- **
- Depends on
- **
-
1.1
- **
- Requirement
- **
- R1.2
Phase 2: Core Implementation
[ ] 2.1 Implement User model and persistence
Create User entity with validation
Implement repository pattern
Write unit tests
- **
- Depends on
- **
-
1.1
- **
- Requirement
- **
-
R2.1, R2.3
[ ] 2.2 [P] Implement Document model
Create Document entity
Define relationships with User
Write unit tests
- **
- Depends on
- **
-
1.1
- **
- Requirement
- **
-
R2.2
[ ] 2.3 Implement API endpoints
Create REST controllers
Add request/response validation
Write integration tests
- **
- Depends on
- **
-
2.1, 2.2
- **
- Requirement
- **
- R3.1, R3.2 [Continue with all phases...]
Phase N: Integration & Testing
[ ] N.1 End-to-end testing
Write E2E test scenarios
Test critical user paths
- **
- Depends on
- **
-
[all previous]
- **
- Requirement
- **
- All
Notes
[P]- indicates tasks that can be parallelized
- -
- Always check dependencies before starting
- -
- Reference requirements for acceptance criteria
- Task Characteristics
- Each task should
- :
- Be specific and actionable
- Reference requirements (R1.1, R2.3, etc.)
- List dependencies
- Be completable in 1-4 hours
- Have clear acceptance criteria
- Task Types
- :
- Implementation tasks (write code)
- Testing tasks (write tests)
- Configuration tasks (set up tools)
- Integration tasks (connect components)
- Exclude
- :
- Deployment tasks
- User training
- Marketing activities
- Non-coding work
- Dependency Markers
- None
-
- Can start immediately
- 1.1
-
- Must complete task 1.1 first
- 1.1, 2.2
-
- Must complete both first
- [P]
- Can run in parallel with siblings Analyze Phase Cross-artifact consistency and quality validation (read-only). Purpose Before implementation, verify: All requirements covered by tasks Plan aligns with constitution No conflicts between documents No missing dependencies Analysis Process Read All Documents Constitution Specification Plan Data model Tasks Coverage Check
Extract requirements
grep -E "R[0-9]+.[0-9]+" spec.md | sort -u
requirements.txt
Extract referenced requirements in tasks
grep -E "Requirement.*R[0-9]+" tasks.md | sort -u
covered.txt
Compare
comm -23 requirements.txt covered.txt Consistency Checks Constitution Alignment : Does plan follow stated principles? Are architecture choices justified per constitution? Requirement Coverage : Is every requirement addressed in tasks? Are acceptance criteria testable? Technical Coherence : Do data models match spec needs? Do API contracts align with plan? Are dependencies realistic? Task Dependencies : Are all dependencies valid? Is critical path identified? Any circular dependencies? Report Findings
Analysis Report
✅ Passing Checks
All requirements covered
Constitution alignment verified
No circular dependencies
⚠️ Warnings
Requirement R3.4 has no corresponding task
Task 5.2 references undefined dependency
🔴 Critical Issues None found
- Recommendations
- 1.
- Add task for Requirement R3.4
- 2.
- Clarify dependency for task 5.2
- 3.
- Consider breaking task 6.1 into smaller tasks (estimated 8 hours)
- Guidelines
- Read-only
-
- Don't modify documents
- Objective
-
- Report facts, not opinions
- Actionable
-
- Provide specific recommendations
- Prioritized
- Critical issues first Implement Phase Execute tasks systematically, respecting dependencies and test-driven development. Implementation Strategy Phase-by-Phase Execution Complete all Phase 1 tasks before Phase 2 Respect task dependencies Leverage parallel markers [P] Task Execution Pattern
For each task:
1. Read context
cat .specify/specs/001-feature/spec.md cat .specify/specs/001-feature/plan.md cat .specify/specs/001-feature/data-model.md
2. Check dependencies
Verify all depends-on tasks are complete
3. Implement
Write code per task description
4. Test
Write and run tests
5. Validate
Check against requirements
6. Mark complete
Update tasks.md: - [x] task completed
- Test-Driven Approach
- For each task:
- Write tests first (when applicable)
- Implement to pass tests
- Refactor while maintaining green tests
- Integration test when connecting components
- Quality Checks
- Before marking task complete:
- Code follows plan architecture
- Tests written and passing
- Meets acceptance criteria
- No obvious bugs
- Integrated with previous work
- Handling Errors
- If implementation reveals issues:
- Design Issues
-
- Return to plan phase, update plan
- Requirement Gaps
-
- Return to specify/clarify, update spec
- Technical Blockers
-
- Document, escalate to user
- Progress Tracking
- Update tasks.md as you go:
- -
- [x] 1.1 Set up project structure ✓ Complete
- -
- [x] 1.2 [P] Configure development environment ✓ Complete
- -
- [ ] 2.1 Implement User model ← Currently here
- -
- [ ] 2.2 [P] Implement Document model
- Completion Criteria
- Feature is complete when:
- All tasks marked complete
- All tests passing
- All requirements validated
- Code reviewed (if applicable)
- Documentation updated
- File Structure
- .specify/
- ├── memory/
- │ └── constitution.md # Phase 1
- ├── specs/
- │ └── 001-feature-name/ # Numbered features
- │ ├── spec.md # Phase 2
- │ ├── plan.md # Phase 4
- │ ├── data-model.md # Phase 4
- │ ├── contracts/ # Phase 4
- │ │ ├── api-spec.json
- │ │ └── signalr-spec.md
- │ ├── research.md # Phase 4 (optional)
- │ ├── quickstart.md # Phase 4 (optional)
- │ └── tasks.md # Phase 5
- ├── scripts/
- │ └── bash/
- │ ├── check-prerequisites.sh
- │ ├── create-new-feature.sh
- │ ├── setup-plan.sh
- │ └── common.sh
- └── templates/
- ├── spec-template.md
- ├── plan-template.md
- └── tasks-template.md
- Workflow Rules
- Sequential Phases
-
- Must complete phases in order
- Constitution First
-
- Always establish constitution before features
- Branch per Feature
-
- Each feature gets its own Git branch
- Numbered Features
-
- Use sequential numbering (001, 002, 003)
- Script Integration
-
- Use provided bash scripts for consistency
- Principle-Driven
- All decisions align with constitution Summary Spec-Kit provides a rigorous, constitution-based approach to feature development with clear phases, explicit dependencies, and comprehensive documentation at every step. The workflow ensures alignment from principles through implementation. Supporting Files For advanced detection logic and automation scripts, see: Detection Logic - Comprehensive state detection algorithms