# List all active proposals
openspec list
# List all capabilities (specs)
openspec list --specs
# Show a specific proposal
openspec show optimize-stats-command-duckdb
# Validate a proposal
openspec validate optimize-stats-command-duckdb --strict
# Archive completed work
openspec archive optimize-stats-command-duckdb --yesWhen: Planning new features, optimizations, breaking changes
Steps:
- Check existing work:
openspec listandopenspec list --specs - Create proposal with:
proposal.md- Why, what, impacttasks.md- Implementation checklistdesign.md- Technical decisions (if needed)specs/[capability]/spec.md- Requirements with scenarios
- Validate:
openspec validate [change-id] --strict - Wait for approval before implementing
Example: We just created optimize-stats-command-duckdb
When: Proposal is approved
Steps:
- Read
proposal.mdto understand goals - Read
design.md(if exists) for technical decisions - Follow
tasks.mdsequentially - Mark tasks complete:
- [x] - Test thoroughly
- Update documentation
Current Status: optimize-stats-command-duckdb is waiting for approval
When: Feature is deployed
Steps:
- Ensure all tasks in
tasks.mdare marked- [x] - Archive:
openspec archive [change-id] --yes - This moves the change to
changes/archive/YYYY-MM-DD-[name]/
- "Create a proposal for [feature]"
- "Help me plan [change]"
- "Generate OpenSpec proposal for [optimization]"
- "Implement task 1.1.1 from [change-id]"
- "Update the implementation for [change-id]"
- "Help me complete [specific task]"
- Review proposal files in
openspec/changes/[change-id]/ - Ask questions or request changes
- Approve when ready
- Specs are truth -
openspec/specs/shows what IS built - Changes are proposals -
openspec/changes/shows what SHOULD be built - Always validate - Use
--strictflag - Approval gate - No implementation until approved
- Track progress - Keep
tasks.mdupdated
openspec/
├── specs/ # Current truth
│ └── [capability]/
│ └── spec.md
├── changes/ # Active proposals
│ └── [change-id]/
│ ├── proposal.md
│ ├── design.md
│ ├── tasks.md
│ └── specs/
│ └── [capability]/
│ └── spec.md
└── changes/archive/ # Completed work
└── YYYY-MM-DD-[name]/
Need to make a change?
- Bug fix → Fix directly (no proposal)
- Typo/formatting → Fix directly (no proposal)
- New feature → Create proposal
- Optimization → Create proposal
- Breaking change → Create proposal
What we did:
- ✅ Created proposal:
optimize-stats-command-duckdb - ✅ Added design document (technical decisions)
- ✅ Created tasks checklist (80+ tasks)
- ✅ Modified requirements in
specs/data-processing/spec.md - ✅ Validated proposal
Next steps:
- ⏳ You review and approve
- ⏳ I implement following
tasks.md - ⏳ You test and verify
- ⏳ Archive when complete