|
1 | 1 | --- |
2 | 2 | description: Archive a completed change in the experimental workflow |
| 3 | +agent: "agent" |
| 4 | +argument-hint: "Optional change name" |
3 | 5 | --- |
4 | 6 |
|
5 | | -Archive a completed change in the experimental workflow. |
| 7 | +Use the `openspec-archive-change` skill from `.claude/skills/openspec-archive-change/SKILL.md`. |
6 | 8 |
|
7 | | -**Input**: Optionally specify a change name after `/opsx:archive` (e.g., `/opsx:archive add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes. |
8 | | - |
9 | | -**Steps** |
10 | | - |
11 | | -1. **If no change name provided, prompt for selection** |
12 | | - |
13 | | - Run `openspec list --json` to get available changes. Use the **AskUserQuestion tool** to let the user select. |
14 | | - |
15 | | - Show only active changes (not already archived). |
16 | | - Include the schema used for each change if available. |
17 | | - |
18 | | - **IMPORTANT**: Do NOT guess or auto-select a change. Always let the user choose. |
19 | | - |
20 | | -2. **Check artifact completion status** |
21 | | - |
22 | | - Run `openspec status --change "<name>" --json` to check artifact completion. |
23 | | - |
24 | | - Parse the JSON to understand: |
25 | | - - `schemaName`: The workflow being used |
26 | | - - `artifacts`: List of artifacts with their status (`done` or other) |
27 | | - |
28 | | - **If any artifacts are not `done`:** |
29 | | - - Display warning listing incomplete artifacts |
30 | | - - Prompt user for confirmation to continue |
31 | | - - Proceed if user confirms |
32 | | - |
33 | | -3. **Check task completion status** |
34 | | - |
35 | | - Read the tasks file (typically `tasks.md`) to check for incomplete tasks. |
36 | | - |
37 | | - Count tasks marked with `- [ ]` (incomplete) vs `- [x]` (complete). |
38 | | - |
39 | | - **If incomplete tasks found:** |
40 | | - - Display warning showing count of incomplete tasks |
41 | | - - Prompt user for confirmation to continue |
42 | | - - Proceed if user confirms |
43 | | - |
44 | | - **If no tasks file exists:** Proceed without task-related warning. |
45 | | - |
46 | | -4. **Assess delta spec sync state** |
47 | | - |
48 | | - Check for delta specs at `openspec/changes/<name>/specs/`. If none exist, proceed without sync prompt. |
49 | | - |
50 | | - **If delta specs exist:** |
51 | | - - Compare each delta spec with its corresponding main spec at `openspec/specs/<capability>/spec.md` |
52 | | - - Determine what changes would be applied (adds, modifications, removals, renames) |
53 | | - - Show a combined summary before prompting |
54 | | - |
55 | | - **Prompt options:** |
56 | | - - If changes needed: "Sync now (recommended)", "Archive without syncing" |
57 | | - - If already synced: "Archive now", "Sync anyway", "Cancel" |
58 | | - |
59 | | - If user chooses sync, use Task tool (subagent_type: "general-purpose", prompt: "Use Skill tool to invoke openspec-sync-specs for change '<name>'. Delta spec analysis: <include the analyzed delta spec summary>"). |
60 | | - - If sync succeeds, continue to archive. |
61 | | - - If sync fails or is interrupted, prompt the user to retry sync or explicitly confirm archiving without syncing. |
62 | | - - Proceed only when sync succeeds or the user explicitly chooses to archive without syncing. |
63 | | - |
64 | | -5. **Perform the archive** |
65 | | - |
66 | | - Create the archive directory if it doesn't exist: |
67 | | - ```bash |
68 | | - mkdir -p openspec/changes/archive |
69 | | - ``` |
70 | | - |
71 | | - Generate target name using current date: `YYYY-MM-DD-<change-name>` |
72 | | - |
73 | | - **Check if target already exists:** |
74 | | - - If yes: Fail with error, suggest renaming existing archive or using different date |
75 | | - - If no: Move the change directory to archive |
76 | | - |
77 | | - ```bash |
78 | | - mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name> |
79 | | - ``` |
80 | | - |
81 | | -6. **Display summary** |
82 | | - |
83 | | - Show archive completion summary including: |
84 | | - - Change name |
85 | | - - Schema that was used |
86 | | - - Archive location |
87 | | - - Spec sync status (synced / sync skipped / no delta specs) |
88 | | - - Note about any warnings (incomplete artifacts/tasks) |
89 | | - |
90 | | -**Output On Success** |
91 | | - |
92 | | -``` |
93 | | -## Archive Complete |
94 | | -
|
95 | | -**Change:** <change-name> |
96 | | -**Schema:** <schema-name> |
97 | | -**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/ |
98 | | -**Specs:** ✓ Synced to main specs |
99 | | -
|
100 | | -All artifacts complete. All tasks complete. |
101 | | -``` |
102 | | - |
103 | | -**Output On Success (No Delta Specs)** |
104 | | - |
105 | | -``` |
106 | | -## Archive Complete |
107 | | -
|
108 | | -**Change:** <change-name> |
109 | | -**Schema:** <schema-name> |
110 | | -**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/ |
111 | | -**Specs:** No delta specs |
112 | | -
|
113 | | -All artifacts complete. All tasks complete. |
114 | | -``` |
115 | | - |
116 | | -**Output On Success With Warnings** |
117 | | - |
118 | | -``` |
119 | | -## Archive Complete (with warnings) |
120 | | -
|
121 | | -**Change:** <change-name> |
122 | | -**Schema:** <schema-name> |
123 | | -**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/ |
124 | | -**Specs:** Sync skipped (user chose to skip) |
125 | | -
|
126 | | -**Warnings:** |
127 | | -- Archived with 2 incomplete artifacts |
128 | | -- Archived with 3 incomplete tasks |
129 | | -- Delta spec sync was skipped (user chose to skip) |
130 | | -
|
131 | | -Review the archive if this was not intentional. |
132 | | -``` |
133 | | - |
134 | | -**Output On Error (Archive Exists)** |
135 | | - |
136 | | -``` |
137 | | -## Archive Failed |
138 | | -
|
139 | | -**Change:** <change-name> |
140 | | -**Target:** openspec/changes/archive/YYYY-MM-DD-<name>/ |
141 | | -
|
142 | | -Target archive directory already exists. |
143 | | -
|
144 | | -**Options:** |
145 | | -1. Rename the existing archive |
146 | | -2. Delete the existing archive if it's a duplicate |
147 | | -3. Wait until a different date to archive |
148 | | -``` |
149 | | - |
150 | | -**Guardrails** |
151 | | -- Always prompt for change selection if not provided |
152 | | -- Use artifact graph (openspec status --json) for completion checking |
153 | | -- Don't block archive on warnings - just inform and confirm |
154 | | -- Preserve .openspec.yaml when moving to archive (it moves with the directory) |
155 | | -- Show clear summary of what happened |
156 | | -- If sync is requested, use the Skill tool to invoke `openspec-sync-specs` (agent-driven) and stop for explicit user confirmation if the sync attempt fails |
157 | | -- If delta specs exist, always run the sync assessment and show the combined summary before prompting |
| 9 | +Treat any text supplied with this prompt as the optional change name. If omitted, the skill will infer from context or prompt for selection. |
0 commit comments