3.8 KiB
3.8 KiB
name, description, category, tags
| name | description | category | tags | ||||
|---|---|---|---|---|---|---|---|
| openspec:done | Complete and archive an OpenSpec change. | openspec |
|
Purpose
This command finalizes your work on an OpenSpec change:
- Verifies all tasks are complete
- Archives the change proposal
- Updates CHANGELOG.md
- Clears the active change tracker
- Guides you to commit the changes
Steps
-
Check for active change
- Read
openspec/active.json - If no active change: "No active change. Use /openspec:work to start working on a change first."
- Exit if no active change
- Read
-
Verify all tasks complete
-
Read
openspec/changes/<change-id>/tasks.md -
Count incomplete tasks (lines with
- [ ]) -
If any incomplete:
⚠️ Not all tasks are complete! Remaining tasks: <X> - (list first 5 incomplete tasks) Options: 1. Continue anyway and mark as done (not recommended) 2. Cancel and finish remaining tasks 3. Save checkpoint and resume later (/openspec:checkpoint) What would you like to do? -
Wait for user decision
-
-
Final checkpoint
- Ask user: "Would you like to save a final checkpoint before archiving? (y/n)"
- If yes, run /openspec:checkpoint workflow
- This captures final state in design.md
-
Run OpenSpec archive
- Execute:
openspec archive <change-id> - This moves the change to archived folder with timestamp
- Updates specs/ folder with approved changes
- Shows success message from OpenSpec CLI
- Execute:
-
Clear active change tracker
-
Delete or clear
openspec/active.json:{} -
Or delete the file entirely
-
-
Guide CHANGELOG update
-
Show message:
✓ Change archived successfully! Next steps: 1. Review the changes made by OpenSpec 2. Update CHANGELOG.md with this change: ## [Unreleased] ### Added - **<change-id>** - <brief description> 3. Commit all changes: git add . git commit -m "feat: <change description>" 4. The change is now archived in: openspec/changes/<timestamp>-<change-id>/ Use /openspec:work to start on the next change.
-
-
Show OpenSpec view
- Run
openspec viewto show updated dashboard - Confirms change is archived and specs are updated
- Run
Error Handling
- If no active change: Guide user to use /openspec:work
- If openspec archive fails: Show error and suggest checking change validity
- If CHANGELOG.md doesn't exist: Create it with standard format
- If active.json clear fails: Warn but continue (non-critical)
Example Usage
Scenario 1: All tasks complete
User: /openspec:done
Assistant: [Checks tasks.md - all complete ✓]
Would you like to save a final checkpoint? (y/n)
User: y
Assistant: [Runs checkpoint flow]
[Runs openspec archive add-dark-mode]
[Clears active.json]
✓ Change archived successfully!
[Shows next steps]
Scenario 2: Tasks incomplete
User: /openspec:done
Assistant: ⚠️ Not all tasks are complete!
Remaining tasks: 3
- [ ] Add localStorage persistence
- [ ] Write tests for theme toggle
- [ ] Update documentation
Options:
1. Continue anyway (not recommended)
2. Cancel and finish tasks
3. Save checkpoint and resume later
What would you like to do?
User: 2
Assistant: Cancelled. Use /openspec:status to see remaining work.
Notes
- This command wraps
openspec archivewith pre/post checks - Clears active.json so SessionStart hook doesn't load old context
- Encourages final checkpoint for documentation
- Guides user through commit process
- Ensures clean state for starting next change