Archive a completed change in the experimental workflow.
Input: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
Steps
- •
Verify project initialization
Check if the project is initialized:
bashacfm spec status --json
If not initialized (
"initialized": false):bashacfm spec init
If initialized (
"initialized": true):- •Note the
dirNamefield (either.acfmoropenspec) - •Continue with the workflow
- •Note the
- •
If no change name provided, prompt for selection
Run
acfm spec list --jsonto get available changes. Use the AskUserQuestion tool to let the user select.Show only active changes (not already archived). Include the schema used for each change if available.
IMPORTANT: Do NOT guess or auto-select a change. Always let the user choose.
- •
Check artifact completion status
Run
acfm spec status --change "<name>" --jsonto check artifact completion.Parse the JSON to understand:
- •
schemaName: The workflow being used - •
artifacts: List of artifacts with their status (doneor other)
If any artifacts are not
done:- •Display warning listing incomplete artifacts
- •Use AskUserQuestion tool to confirm user wants to proceed
- •Proceed if user confirms
- •
- •
Check task completion status
Read the tasks file (typically
tasks.md) to check for incomplete tasks.Count tasks marked with
- [ ](incomplete) vs- [x](complete).If incomplete tasks found:
- •Display warning showing count of incomplete tasks
- •Use AskUserQuestion tool to confirm user wants to proceed
- •Proceed if user confirms
If no tasks file exists: Proceed without task-related warning.
- •
Assess delta spec sync state
Check for delta specs at
openspec/changes/<name>/specs/. If none exist, proceed without sync prompt.If delta specs exist:
- •Compare each delta spec with its corresponding main spec at
openspec/specs/<capability>/spec.md - •Determine what changes would be applied (adds, modifications, removals, renames)
- •Show a combined summary before prompting
Prompt options:
- •If changes needed: "Sync now (recommended)", "Archive without syncing"
- •If already synced: "Archive now", "Sync anyway", "Cancel"
If user chooses sync, execute /opsx:sync logic (use the openspec-sync-specs skill). Proceed to archive regardless of choice.
- •Compare each delta spec with its corresponding main spec at
- •
Perform the archive
Create the archive directory if it doesn't exist:
bashmkdir -p openspec/changes/archive
Generate target name using current date:
YYYY-MM-DD-<change-name>Check if target already exists:
- •If yes: Fail with error, suggest renaming existing archive or using different date
- •If no: Move the change directory to archive
bashmv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>
- •
Display summary
Show archive completion summary including:
- •Change name
- •Schema that was used
- •Archive location
- •Whether specs were synced (if applicable)
- •Note about any warnings (incomplete artifacts/tasks)
Output On Success
## Archive Complete **Change:** <change-name> **Schema:** <schema-name> **Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/ **Specs:** ✓ Synced to main specs (or "No delta specs" or "Sync skipped") All artifacts complete. All tasks complete.
Guardrails
- •Always prompt for change selection if not provided
- •Use artifact graph (acfm spec status --json) for completion checking
- •Don't block archive on warnings - just inform and confirm
- •Preserve .openspec.yaml when moving to archive (it moves with the directory)
- •Show clear summary of what happened
- •If sync is requested, use openspec-sync-specs approach (agent-driven)
- •If delta specs exist, always run the sync assessment and show the combined summary before prompting