OpenSpec Workflows
When to Create Proposals
Create proposals for:
- New features or capabilities
- Breaking changes (API, schema)
- Architecture changes
- Performance optimizations (behavior changes)
- Security pattern updates
Skip proposals for:
- Bug fixes (restoring intended behavior)
- Typos, formatting, comments
- Non-breaking dependency updates
- Configuration changes
- Tests for existing behavior
Quick Commands
bash1openspec list # List active changes 2openspec list --specs # List specifications 3openspec show [item] # Display change or spec 4openspec validate [item] --strict # Validate changes 5openspec archive <change-id> --yes # Archive after deployment
Creating Change Proposals
1. Context Checklist
Before starting:
- Read
openspec/project.mdfor conventions - Run
openspec listto see active changes - Run
openspec list --specsto see existing capabilities - Check for conflicts with pending changes
2. Choose Change ID
- Use kebab-case, verb-led:
add-,update-,remove-,refactor- - Examples:
add-two-factor-auth,update-parquet-support - Ensure uniqueness
3. Scaffold Structure
bash1mkdir -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 changes
4. Write Spec Deltas
Use operation headers:
## ADDED Requirements- New capabilities## MODIFIED Requirements- Changed behavior (include full requirement)## REMOVED Requirements- Deprecated features## RENAMED Requirements- Name changes
Critical: Every requirement MUST have at least one scenario:
markdown1#### Scenario: Success case 2- **WHEN** user performs action 3- **THEN** expected result
5. Validate
bash1openspec validate <change-id> --strict
Fix all issues before sharing the proposal.
Implementation Workflow
- Read
proposal.md- Understand what's being built - Read
design.md(if exists) - Review technical decisions - Read
tasks.md- Get implementation checklist - Implement tasks sequentially
- Update checklist: mark all tasks
- [x]when complete - Do not start implementation until proposal is approved
Archiving Changes
After deployment:
bash1openspec archive <change-id> --yes
This moves changes/[name]/ → changes/archive/YYYY-MM-DD-[name]/
Common Patterns
Multi-Capability Changes
Create separate delta files:
changes/add-feature/
└── specs/
├── capability-a/
│ └── spec.md # ADDED: Feature A
└── capability-b/
└── spec.md # ADDED: Feature B
MODIFIED Requirements
Always include the complete requirement:
- Copy entire requirement from
openspec/specs/<capability>/spec.md - Paste under
## MODIFIED Requirements - Edit to reflect new behavior
- Keep at least one scenario
Troubleshooting
"Change must have at least one delta"
- Check
changes/[name]/specs/exists with .md files - Verify files have operation prefixes
"Requirement must have at least one scenario"
- Use
#### Scenario:format (4 hashtags) - Don't use bullet points for scenario headers
Debug delta parsing:
bash1openspec show [change] --json --deltas-only