OpenSpec proposal creation, validation, and implementation workflows. Use when creating change proposals, implementing specs, or working with OpenSpec conventions.
Create proposals for:
Skip proposals for:
openspec list # List active changes
openspec list --specs # List specifications
openspec show [item] # Display change or spec
openspec validate [item] --strict # Validate changes
openspec archive <change-id> --yes # Archive after deployment
Before starting:
openspec/project.md for conventionsopenspec list to see active changesopenspec list --specs to see existing capabilitiesadd-, update-, remove-, refactor-add-two-factor-auth, update-parquet-supportmkdir -p openspec/changes/<change-id>/specs/<capability>
Create:
proposal.md - Why, what, impacttasks.md - Implementation checklistdesign.md - Only if needed (cross-cutting, architectural, or complex decisions)specs/<capability>/spec.md - Delta changesUse operation headers:
## ADDED Requirements - New capabilities## MODIFIED Requirements - Changed behavior (include full requirement)## REMOVED Requirements - Deprecated features## RENAMED Requirements - Name changesCritical: Every requirement MUST have at least one scenario:
#### Scenario: Success case
- **WHEN** user performs action
- **THEN** expected result
openspec validate <change-id> --strict
Fix all issues before sharing the proposal.
proposal.md - Understand what's being builtdesign.md (if exists) - Review technical decisionstasks.md - Get implementation checklist- [x] when completeAfter deployment:
openspec archive <change-id> --yes
This moves changes/[name]/ ā changes/archive/YYYY-MM-DD-[name]/
Create separate delta files:
changes/add-feature/
āāā specs/
āāā capability-a/
ā āāā spec.md # ADDED: Feature A
āāā capability-b/
āāā spec.md # ADDED: Feature B
Always include the complete requirement:
openspec/specs/<capability>/spec.md## MODIFIED Requirements"Change must have at least one delta"
changes/[name]/specs/ exists with .md files"Requirement must have at least one scenario"
#### Scenario: format (4 hashtags)Debug delta parsing:
openspec show [change] --json --deltas-only