@dynamicworks/br-openspec 1.3.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +210 -210
  3. package/README.pt-BR.md +212 -212
  4. package/bin/openspec.js +2 -2
  5. package/dist/commands/feedback.js +4 -4
  6. package/dist/commands/schema.js +60 -60
  7. package/dist/core/artifact-graph/instruction-loader.js +4 -4
  8. package/dist/core/artifact-graph/schema.js +5 -4
  9. package/dist/core/command-generation/adapters/amazon-q.js +5 -5
  10. package/dist/core/command-generation/adapters/antigravity.js +5 -5
  11. package/dist/core/command-generation/adapters/auggie.js +6 -6
  12. package/dist/core/command-generation/adapters/bob.js +6 -6
  13. package/dist/core/command-generation/adapters/claude.js +8 -8
  14. package/dist/core/command-generation/adapters/cline.js +5 -5
  15. package/dist/core/command-generation/adapters/codebuddy.js +7 -7
  16. package/dist/core/command-generation/adapters/codex.js +6 -6
  17. package/dist/core/command-generation/adapters/continue.js +7 -7
  18. package/dist/core/command-generation/adapters/costrict.js +6 -6
  19. package/dist/core/command-generation/adapters/crush.js +8 -8
  20. package/dist/core/command-generation/adapters/cursor.js +8 -8
  21. package/dist/core/command-generation/adapters/factory.js +6 -6
  22. package/dist/core/command-generation/adapters/gemini.js +5 -5
  23. package/dist/core/command-generation/adapters/github-copilot.js +5 -5
  24. package/dist/core/command-generation/adapters/iflow.js +8 -8
  25. package/dist/core/command-generation/adapters/junie.js +5 -5
  26. package/dist/core/command-generation/adapters/kilocode.js +1 -1
  27. package/dist/core/command-generation/adapters/kiro.js +5 -5
  28. package/dist/core/command-generation/adapters/lingma.js +8 -8
  29. package/dist/core/command-generation/adapters/opencode.js +5 -5
  30. package/dist/core/command-generation/adapters/pi.js +5 -5
  31. package/dist/core/command-generation/adapters/qoder.js +8 -8
  32. package/dist/core/command-generation/adapters/qwen.js +5 -5
  33. package/dist/core/command-generation/adapters/roocode.js +5 -5
  34. package/dist/core/command-generation/adapters/windsurf.js +8 -8
  35. package/dist/core/completions/factory.js +3 -2
  36. package/dist/core/completions/generators/bash-generator.js +41 -41
  37. package/dist/core/completions/generators/fish-generator.js +7 -7
  38. package/dist/core/completions/generators/powershell-generator.js +29 -29
  39. package/dist/core/completions/generators/zsh-generator.js +33 -33
  40. package/dist/core/completions/installers/fish-installer.js +13 -12
  41. package/dist/core/completions/installers/powershell-installer.js +16 -17
  42. package/dist/core/completions/installers/zsh-installer.js +1 -1
  43. package/dist/core/completions/templates/bash-templates.js +18 -18
  44. package/dist/core/completions/templates/fish-templates.js +32 -32
  45. package/dist/core/completions/templates/powershell-templates.js +19 -19
  46. package/dist/core/completions/templates/zsh-templates.js +30 -30
  47. package/dist/core/parsers/change-parser.js +7 -6
  48. package/dist/core/project-config.js +12 -13
  49. package/dist/core/shared/skill-generation.js +12 -12
  50. package/dist/core/specs-apply.js +37 -38
  51. package/dist/core/templates/workflows/apply-change.js +288 -288
  52. package/dist/core/templates/workflows/archive-change.js +251 -251
  53. package/dist/core/templates/workflows/bulk-archive-change.js +472 -472
  54. package/dist/core/templates/workflows/continue-change.js +212 -212
  55. package/dist/core/templates/workflows/explore.js +443 -443
  56. package/dist/core/templates/workflows/feedback.js +97 -97
  57. package/dist/core/templates/workflows/ff-change.js +178 -178
  58. package/dist/core/templates/workflows/propose.js +196 -196
  59. package/dist/core/templates/workflows/sync-specs.js +252 -252
  60. package/dist/core/templates/workflows/upstream-sync.js +93 -93
  61. package/dist/core/tools-manager.js +2 -2
  62. package/dist/messages/index.d.ts +111 -0
  63. package/dist/messages/index.js +1115 -977
  64. package/dist/utils/change-metadata.js +8 -7
  65. package/dist/utils/change-utils.js +12 -11
  66. package/package.json +82 -84
  67. package/schemas/spec-driven/schema.yaml +153 -153
  68. package/schemas/spec-driven/templates/design.md +19 -19
  69. package/schemas/spec-driven/templates/proposal.md +23 -23
  70. package/schemas/spec-driven/templates/spec.md +8 -8
  71. package/schemas/spec-driven/templates/tasks.md +9 -9
  72. package/scripts/postinstall.js +83 -83
@@ -2,108 +2,108 @@ export function getArchiveChangeSkillTemplate() {
2
2
  return {
3
3
  name: 'openspec-archive-change',
4
4
  description: 'Arquiva uma change concluída no workflow experimental. Use quando o usuário quiser finalizar e arquivar uma change após a implementação estar completa.',
5
- instructions: `Arquiva uma change concluída no workflow experimental.
6
-
7
- **Entrada**: Opcionalmente especifique um nome de change. Se omitido, verifique se pode ser inferido do contexto da conversa. Se vago ou ambíguo, você DEVE solicitar as changes disponíveis.
8
-
9
- **Passos**
10
-
11
- 1. **Se nenhum nome de change for fornecido, solicite a seleção**
12
-
13
- Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
14
-
15
- Mostre apenas as changes ativas (não arquivadas).
16
- Inclua o schema usado para cada change, se disponível.
17
-
18
- **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
19
-
20
- 2. **Verifique o status de conclusão dos artifacts**
21
-
22
- Execute \`openspec status --change "<nome>" --json\` para verificar a conclusão dos artifacts.
23
-
24
- Analise o JSON para entender:
25
- - \`schemaName\`: O workflow sendo usado
26
- - \`artifacts\`: Lista de artifacts com seu status (\`done\` ou outro)
27
-
28
- **Se algum artifact não estiver \`done\`:**
29
- - Exiba um aviso listando os artifacts incompletos
30
- - Use a ferramenta **AskUserQuestion** para confirmar se o usuário deseja prosseguir
31
- - Prossiga se o usuário confirmar
32
-
33
- 3. **Verifique o status de conclusão das tarefas**
34
-
35
- Leia o arquivo de tarefas (tipicamente \`tasks.md\`) para verificar tarefas incompletas.
36
-
37
- Conte as tarefas marcadas com \`- [ ]\` (incompleto) vs \`- [x]\` (concluído).
38
-
39
- **Se tarefas incompletas forem encontradas:**
40
- - Exiba um aviso mostrando a quantidade de tarefas incompletas
41
- - Use a ferramenta **AskUserQuestion** para confirmar se o usuário deseja prosseguir
42
- - Prossiga se o usuário confirmar
43
-
44
- **Se não existir arquivo de tarefas:** Prossiga sem aviso relacionado a tarefas.
45
-
46
- 4. **Avalie o estado de sincronização dos delta specs**
47
-
48
- Verifique se existem delta specs em \`openspec/changes/<nome>/specs/\`. Se não existirem, prossiga sem prompt de sync.
49
-
50
- **Se delta specs existirem:**
51
- - Compare cada delta spec com seu spec principal correspondente em \`openspec/specs/<capability>/spec.md\`
52
- - Determine quais alterações seriam aplicadas (adições, modificações, remoções, renomeações)
53
- - Mostre um resumo combinado antes de solicitar
54
-
55
- **Opções de prompt:**
56
- - Se alterações forem necessárias: "Sincronizar agora (recomendado)", "Arquivar sem sincronizar"
57
- - Se já estiver sincronizado: "Arquivar agora", "Sincronizar mesmo assim", "Cancelar"
58
-
59
- Se o usuário escolher sincronizar, use a ferramenta Task (subagent_type: "general-purpose", prompt: "Use a ferramenta Skill para invocar openspec-sync-specs para a change '<nome>'. Análise de delta spec: <inclua o resumo analisado do delta spec>"). Prossiga para o arquivamento independentemente da escolha.
60
-
61
- 5. **Realize o arquivamento**
62
-
63
- Crie o diretório de arquivo se não existir:
64
- \`\`\`bash
65
- mkdir -p openspec/changes/archive
66
- \`\`\`
67
-
68
- Gere o nome do destino usando a data atual: \`YYYY-MM-DD-<nome-change>\`
69
-
70
- **Verifique se o destino já existe:**
71
- - Se sim: Falhe com erro, sugira renomear o arquivo existente ou usar uma data diferente
72
- - Se não: Mova o diretório da change para o arquivo
73
-
74
- \`\`\`bash
75
- mv openspec/changes/<nome> openspec/changes/archive/YYYY-MM-DD-<nome>
76
- \`\`\`
77
-
78
- 6. **Exiba o resumo**
79
-
80
- Mostre o resumo de conclusão do arquivamento incluindo:
81
- - Nome da change
82
- - Schema que foi usado
83
- - Local do arquivo
84
- - Se os specs foram sincronizados (se aplicável)
85
- - Observação sobre quaisquer avisos (artifacts/tarefas incompletos)
86
-
87
- **Saída em Sucesso**
88
-
89
- \`\`\`
90
- ## Arquivamento Concluído
91
-
92
- **Change:** <nome-change>
93
- **Schema:** <nome-schema>
94
- **Arquivado em:** openspec/changes/archive/YYYY-MM-DD-<nome>/
95
- **Specs:** ✓ Sincronizados com os specs principais (ou "Sem delta specs" ou "Sincronização ignorada")
96
-
97
- Todos os artifacts completos. Todas as tarefas completas.
98
- \`\`\`
99
-
100
- **Guardrails**
101
- - Sempre solicite a seleção da change se não fornecida
102
- - Use o grafo de artifacts (openspec status --json) para verificação de conclusão
103
- - Não bloqueie o arquivamento por avisos - apenas informe e confirme
104
- - Preservar .openspec.yaml ao mover para o arquivo (ele move com o diretório)
105
- - Mostre um resumo claro do que aconteceu
106
- - Se sync for solicitado, use a abordagem openspec-sync-specs (agent-driven)
5
+ instructions: `Arquiva uma change concluída no workflow experimental.
6
+
7
+ **Entrada**: Opcionalmente especifique um nome de change. Se omitido, verifique se pode ser inferido do contexto da conversa. Se vago ou ambíguo, você DEVE solicitar as changes disponíveis.
8
+
9
+ **Passos**
10
+
11
+ 1. **Se nenhum nome de change for fornecido, solicite a seleção**
12
+
13
+ Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
14
+
15
+ Mostre apenas as changes ativas (não arquivadas).
16
+ Inclua o schema usado para cada change, se disponível.
17
+
18
+ **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
19
+
20
+ 2. **Verifique o status de conclusão dos artifacts**
21
+
22
+ Execute \`openspec status --change "<nome>" --json\` para verificar a conclusão dos artifacts.
23
+
24
+ Analise o JSON para entender:
25
+ - \`schemaName\`: O workflow sendo usado
26
+ - \`artifacts\`: Lista de artifacts com seu status (\`done\` ou outro)
27
+
28
+ **Se algum artifact não estiver \`done\`:**
29
+ - Exiba um aviso listando os artifacts incompletos
30
+ - Use a ferramenta **AskUserQuestion** para confirmar se o usuário deseja prosseguir
31
+ - Prossiga se o usuário confirmar
32
+
33
+ 3. **Verifique o status de conclusão das tarefas**
34
+
35
+ Leia o arquivo de tarefas (tipicamente \`tasks.md\`) para verificar tarefas incompletas.
36
+
37
+ Conte as tarefas marcadas com \`- [ ]\` (incompleto) vs \`- [x]\` (concluído).
38
+
39
+ **Se tarefas incompletas forem encontradas:**
40
+ - Exiba um aviso mostrando a quantidade de tarefas incompletas
41
+ - Use a ferramenta **AskUserQuestion** para confirmar se o usuário deseja prosseguir
42
+ - Prossiga se o usuário confirmar
43
+
44
+ **Se não existir arquivo de tarefas:** Prossiga sem aviso relacionado a tarefas.
45
+
46
+ 4. **Avalie o estado de sincronização dos delta specs**
47
+
48
+ Verifique se existem delta specs em \`openspec/changes/<nome>/specs/\`. Se não existirem, prossiga sem prompt de sync.
49
+
50
+ **Se delta specs existirem:**
51
+ - Compare cada delta spec com seu spec principal correspondente em \`openspec/specs/<capability>/spec.md\`
52
+ - Determine quais alterações seriam aplicadas (adições, modificações, remoções, renomeações)
53
+ - Mostre um resumo combinado antes de solicitar
54
+
55
+ **Opções de prompt:**
56
+ - Se alterações forem necessárias: "Sincronizar agora (recomendado)", "Arquivar sem sincronizar"
57
+ - Se já estiver sincronizado: "Arquivar agora", "Sincronizar mesmo assim", "Cancelar"
58
+
59
+ Se o usuário escolher sincronizar, use a ferramenta Task (subagent_type: "general-purpose", prompt: "Use a ferramenta Skill para invocar openspec-sync-specs para a change '<nome>'. Análise de delta spec: <inclua o resumo analisado do delta spec>"). Prossiga para o arquivamento independentemente da escolha.
60
+
61
+ 5. **Realize o arquivamento**
62
+
63
+ Crie o diretório de arquivo se não existir:
64
+ \`\`\`bash
65
+ mkdir -p openspec/changes/archive
66
+ \`\`\`
67
+
68
+ Gere o nome do destino usando a data atual: \`YYYY-MM-DD-<nome-change>\`
69
+
70
+ **Verifique se o destino já existe:**
71
+ - Se sim: Falhe com erro, sugira renomear o arquivo existente ou usar uma data diferente
72
+ - Se não: Mova o diretório da change para o arquivo
73
+
74
+ \`\`\`bash
75
+ mv openspec/changes/<nome> openspec/changes/archive/YYYY-MM-DD-<nome>
76
+ \`\`\`
77
+
78
+ 6. **Exiba o resumo**
79
+
80
+ Mostre o resumo de conclusão do arquivamento incluindo:
81
+ - Nome da change
82
+ - Schema que foi usado
83
+ - Local do arquivo
84
+ - Se os specs foram sincronizados (se aplicável)
85
+ - Observação sobre quaisquer avisos (artifacts/tarefas incompletos)
86
+
87
+ **Saída em Sucesso**
88
+
89
+ \`\`\`
90
+ ## Arquivamento Concluído
91
+
92
+ **Change:** <nome-change>
93
+ **Schema:** <nome-schema>
94
+ **Arquivado em:** openspec/changes/archive/YYYY-MM-DD-<nome>/
95
+ **Specs:** ✓ Sincronizados com os specs principais (ou "Sem delta specs" ou "Sincronização ignorada")
96
+
97
+ Todos os artifacts completos. Todas as tarefas completas.
98
+ \`\`\`
99
+
100
+ **Guardrails**
101
+ - Sempre solicite a seleção da change se não fornecida
102
+ - Use o grafo de artifacts (openspec status --json) para verificação de conclusão
103
+ - Não bloqueie o arquivamento por avisos - apenas informe e confirme
104
+ - Preservar .openspec.yaml ao mover para o arquivo (ele move com o diretório)
105
+ - Mostre um resumo claro do que aconteceu
106
+ - Se sync for solicitado, use a abordagem openspec-sync-specs (agent-driven)
107
107
  - Se delta specs existirem, sempre execute a avaliação de sync e mostre o resumo combinado antes de solicitar`,
108
108
  license: 'MIT',
109
109
  compatibility: 'Requer openspec CLI.',
@@ -116,155 +116,155 @@ export function getOpsxArchiveCommandTemplate() {
116
116
  description: 'Arquiva uma change concluída no workflow experimental',
117
117
  category: 'Workflow',
118
118
  tags: ['workflow', 'archive', 'experimental'],
119
- content: `Arquiva uma change concluída no workflow experimental.
120
-
121
- **Entrada**: Opcionalmente especifique um nome de change após \`/opsx:archive\` (por exemplo, \`/opsx:archive add-auth\`). Se omitido, verifique se pode ser inferido do contexto da conversa. Se vago ou ambíguo, você DEVE solicitar as changes disponíveis.
122
-
123
- **Passos**
124
-
125
- 1. **Se nenhum nome de change for fornecido, solicite a seleção**
126
-
127
- Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
128
-
129
- Mostre apenas as changes ativas (não arquivadas).
130
- Inclua o schema usado para cada change, se disponível.
131
-
132
- **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
133
-
134
- 2. **Verifique o status de conclusão dos artifacts**
135
-
136
- Execute \`openspec status --change "<nome>" --json\` para verificar a conclusão dos artifacts.
137
-
138
- Analise o JSON para entender:
139
- - \`schemaName\`: O workflow sendo usado
140
- - \`artifacts\`: Lista de artifacts com seu status (\`done\` ou outro)
141
-
142
- **Se algum artifact não estiver \`done\`:**
143
- - Exiba um aviso listando os artifacts incompletos
144
- - Solicite confirmação do usuário para continuar
145
- - Prossiga se o usuário confirmar
146
-
147
- 3. **Verifique o status de conclusão das tarefas**
148
-
149
- Leia o arquivo de tarefas (tipicamente \`tasks.md\`) para verificar tarefas incompletas.
150
-
151
- Conte as tarefas marcadas com \`- [ ]\` (incompleto) vs \`- [x]\` (concluído).
152
-
153
- **Se tarefas incompletas forem encontradas:**
154
- - Exiba um aviso mostrando a quantidade de tarefas incompletas
155
- - Solicite confirmação do usuário para continuar
156
- - Prossiga se o usuário confirmar
157
-
158
- **Se não existir arquivo de tarefas:** Prossiga sem aviso relacionado a tarefas.
159
-
160
- 4. **Avalie o estado de sincronização dos delta specs**
161
-
162
- Verifique se existem delta specs em \`openspec/changes/<nome>/specs/\`. Se não existirem, prossiga sem prompt de sync.
163
-
164
- **Se delta specs existirem:**
165
- - Compare cada delta spec com seu spec principal correspondente em \`openspec/specs/<capability>/spec.md\`
166
- - Determine quais alterações seriam aplicadas (adições, modificações, remoções, renomeações)
167
- - Mostre um resumo combinado antes de solicitar
168
-
169
- **Opções de prompt:**
170
- - Se alterações forem necessárias: "Sincronizar agora (recomendado)", "Arquivar sem sincronizar"
171
- - Se já estiver sincronizado: "Arquivar agora", "Sincronizar mesmo assim", "Cancelar"
172
-
173
- Se o usuário escolher sincronizar, use a ferramenta Task (subagent_type: "general-purpose", prompt: "Use a ferramenta Skill para invocar openspec-sync-specs para a change '<nome>'. Análise de delta spec: <inclua o resumo analisado do delta spec>"). Prossiga para o arquivamento independentemente da escolha.
174
-
175
- 5. **Realize o arquivamento**
176
-
177
- Crie o diretório de arquivo se não existir:
178
- \`\`\`bash
179
- mkdir -p openspec/changes/archive
180
- \`\`\`
181
-
182
- Gere o nome do destino usando a data atual: \`YYYY-MM-DD-<nome-change>\`
183
-
184
- **Verifique se o destino já existe:**
185
- - Se sim: Falhe com erro, sugira renomear o arquivo existente ou usar uma data diferente
186
- - Se não: Mova o diretório da change para o arquivo
187
-
188
- \`\`\`bash
189
- mv openspec/changes/<nome> openspec/changes/archive/YYYY-MM-DD-<nome>
190
- \`\`\`
191
-
192
- 6. **Exiba o resumo**
193
-
194
- Mostre o resumo de conclusão do arquivamento incluindo:
195
- - Nome da change
196
- - Schema que foi usado
197
- - Local do arquivo
198
- - Status de sincronização dos specs (sincronizado / sincronização ignorada / sem delta specs)
199
- - Observação sobre quaisquer avisos (artifacts/tarefas incompletos)
200
-
201
- **Saída em Sucesso**
202
-
203
- \`\`\`
204
- ## Arquivamento Concluído
205
-
206
- **Change:** <nome-change>
207
- **Schema:** <nome-schema>
208
- **Arquivado em:** openspec/changes/archive/YYYY-MM-DD-<nome>/
209
- **Specs:** ✓ Sincronizados com os specs principais
210
-
211
- Todos os artifacts completos. Todas as tarefas completas.
212
- \`\`\`
213
-
214
- **Saída em Sucesso (Sem Delta Specs)**
215
-
216
- \`\`\`
217
- ## Arquivamento Concluído
218
-
219
- **Change:** <nome-change>
220
- **Schema:** <nome-schema>
221
- **Arquivado em:** openspec/changes/archive/YYYY-MM-DD-<nome>/
222
- **Specs:** Sem delta specs
223
-
224
- Todos os artifacts completos. Todas as tarefas completas.
225
- \`\`\`
226
-
227
- **Saída em Sucesso com Avisos**
228
-
229
- \`\`\`
230
- ## Arquivamento Concluído (com avisos)
231
-
232
- **Change:** <nome-change>
233
- **Schema:** <nome-schema>
234
- **Arquivado em:** openspec/changes/archive/YYYY-MM-DD-<nome>/
235
- **Specs:** Sincronização ignorada (usuário escolheu ignorar)
236
-
237
- **Avisos:**
238
- - Arquivado com 2 artifacts incompletos
239
- - Arquivado com 3 tarefas incompletas
240
- - Sincronização de delta spec foi ignorada (usuário escolheu ignorar)
241
-
242
- Revise o arquivo se isso não foi intencional.
243
- \`\`\`
244
-
245
- **Saída em Erro (Arquivo Existe)**
246
-
247
- \`\`\`
248
- ## Arquivamento Falhou
249
-
250
- **Change:** <nome-change>
251
- **Destino:** openspec/changes/archive/YYYY-MM-DD-<nome>/
252
-
253
- O diretório de arquivo de destino já existe.
254
-
255
- **Opções:**
256
- 1. Renomear o arquivo existente
257
- 2. Excluir o arquivo existente se for uma duplicata
258
- 3. Aguardar até uma data diferente para arquivar
259
- \`\`\`
260
-
261
- **Guardrails**
262
- - Sempre solicite a seleção da change se não fornecida
263
- - Use o grafo de artifacts (openspec status --json) para verificação de conclusão
264
- - Não bloqueie o arquivamento por avisos - apenas informe e confirme
265
- - Preservar .openspec.yaml ao mover para o arquivo (ele move com o diretório)
266
- - Mostre um resumo claro do que aconteceu
267
- - Se sync for solicitado, use a ferramenta Skill para invocar \`openspec-sync-specs\` (agent-driven)
119
+ content: `Arquiva uma change concluída no workflow experimental.
120
+
121
+ **Entrada**: Opcionalmente especifique um nome de change após \`/opsx:archive\` (por exemplo, \`/opsx:archive add-auth\`). Se omitido, verifique se pode ser inferido do contexto da conversa. Se vago ou ambíguo, você DEVE solicitar as changes disponíveis.
122
+
123
+ **Passos**
124
+
125
+ 1. **Se nenhum nome de change for fornecido, solicite a seleção**
126
+
127
+ Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
128
+
129
+ Mostre apenas as changes ativas (não arquivadas).
130
+ Inclua o schema usado para cada change, se disponível.
131
+
132
+ **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
133
+
134
+ 2. **Verifique o status de conclusão dos artifacts**
135
+
136
+ Execute \`openspec status --change "<nome>" --json\` para verificar a conclusão dos artifacts.
137
+
138
+ Analise o JSON para entender:
139
+ - \`schemaName\`: O workflow sendo usado
140
+ - \`artifacts\`: Lista de artifacts com seu status (\`done\` ou outro)
141
+
142
+ **Se algum artifact não estiver \`done\`:**
143
+ - Exiba um aviso listando os artifacts incompletos
144
+ - Solicite confirmação do usuário para continuar
145
+ - Prossiga se o usuário confirmar
146
+
147
+ 3. **Verifique o status de conclusão das tarefas**
148
+
149
+ Leia o arquivo de tarefas (tipicamente \`tasks.md\`) para verificar tarefas incompletas.
150
+
151
+ Conte as tarefas marcadas com \`- [ ]\` (incompleto) vs \`- [x]\` (concluído).
152
+
153
+ **Se tarefas incompletas forem encontradas:**
154
+ - Exiba um aviso mostrando a quantidade de tarefas incompletas
155
+ - Solicite confirmação do usuário para continuar
156
+ - Prossiga se o usuário confirmar
157
+
158
+ **Se não existir arquivo de tarefas:** Prossiga sem aviso relacionado a tarefas.
159
+
160
+ 4. **Avalie o estado de sincronização dos delta specs**
161
+
162
+ Verifique se existem delta specs em \`openspec/changes/<nome>/specs/\`. Se não existirem, prossiga sem prompt de sync.
163
+
164
+ **Se delta specs existirem:**
165
+ - Compare cada delta spec com seu spec principal correspondente em \`openspec/specs/<capability>/spec.md\`
166
+ - Determine quais alterações seriam aplicadas (adições, modificações, remoções, renomeações)
167
+ - Mostre um resumo combinado antes de solicitar
168
+
169
+ **Opções de prompt:**
170
+ - Se alterações forem necessárias: "Sincronizar agora (recomendado)", "Arquivar sem sincronizar"
171
+ - Se já estiver sincronizado: "Arquivar agora", "Sincronizar mesmo assim", "Cancelar"
172
+
173
+ Se o usuário escolher sincronizar, use a ferramenta Task (subagent_type: "general-purpose", prompt: "Use a ferramenta Skill para invocar openspec-sync-specs para a change '<nome>'. Análise de delta spec: <inclua o resumo analisado do delta spec>"). Prossiga para o arquivamento independentemente da escolha.
174
+
175
+ 5. **Realize o arquivamento**
176
+
177
+ Crie o diretório de arquivo se não existir:
178
+ \`\`\`bash
179
+ mkdir -p openspec/changes/archive
180
+ \`\`\`
181
+
182
+ Gere o nome do destino usando a data atual: \`YYYY-MM-DD-<nome-change>\`
183
+
184
+ **Verifique se o destino já existe:**
185
+ - Se sim: Falhe com erro, sugira renomear o arquivo existente ou usar uma data diferente
186
+ - Se não: Mova o diretório da change para o arquivo
187
+
188
+ \`\`\`bash
189
+ mv openspec/changes/<nome> openspec/changes/archive/YYYY-MM-DD-<nome>
190
+ \`\`\`
191
+
192
+ 6. **Exiba o resumo**
193
+
194
+ Mostre o resumo de conclusão do arquivamento incluindo:
195
+ - Nome da change
196
+ - Schema que foi usado
197
+ - Local do arquivo
198
+ - Status de sincronização dos specs (sincronizado / sincronização ignorada / sem delta specs)
199
+ - Observação sobre quaisquer avisos (artifacts/tarefas incompletos)
200
+
201
+ **Saída em Sucesso**
202
+
203
+ \`\`\`
204
+ ## Arquivamento Concluído
205
+
206
+ **Change:** <nome-change>
207
+ **Schema:** <nome-schema>
208
+ **Arquivado em:** openspec/changes/archive/YYYY-MM-DD-<nome>/
209
+ **Specs:** ✓ Sincronizados com os specs principais
210
+
211
+ Todos os artifacts completos. Todas as tarefas completas.
212
+ \`\`\`
213
+
214
+ **Saída em Sucesso (Sem Delta Specs)**
215
+
216
+ \`\`\`
217
+ ## Arquivamento Concluído
218
+
219
+ **Change:** <nome-change>
220
+ **Schema:** <nome-schema>
221
+ **Arquivado em:** openspec/changes/archive/YYYY-MM-DD-<nome>/
222
+ **Specs:** Sem delta specs
223
+
224
+ Todos os artifacts completos. Todas as tarefas completas.
225
+ \`\`\`
226
+
227
+ **Saída em Sucesso com Avisos**
228
+
229
+ \`\`\`
230
+ ## Arquivamento Concluído (com avisos)
231
+
232
+ **Change:** <nome-change>
233
+ **Schema:** <nome-schema>
234
+ **Arquivado em:** openspec/changes/archive/YYYY-MM-DD-<nome>/
235
+ **Specs:** Sincronização ignorada (usuário escolheu ignorar)
236
+
237
+ **Avisos:**
238
+ - Arquivado com 2 artifacts incompletos
239
+ - Arquivado com 3 tarefas incompletas
240
+ - Sincronização de delta spec foi ignorada (usuário escolheu ignorar)
241
+
242
+ Revise o arquivo se isso não foi intencional.
243
+ \`\`\`
244
+
245
+ **Saída em Erro (Arquivo Existe)**
246
+
247
+ \`\`\`
248
+ ## Arquivamento Falhou
249
+
250
+ **Change:** <nome-change>
251
+ **Destino:** openspec/changes/archive/YYYY-MM-DD-<nome>/
252
+
253
+ O diretório de arquivo de destino já existe.
254
+
255
+ **Opções:**
256
+ 1. Renomear o arquivo existente
257
+ 2. Excluir o arquivo existente se for uma duplicata
258
+ 3. Aguardar até uma data diferente para arquivar
259
+ \`\`\`
260
+
261
+ **Guardrails**
262
+ - Sempre solicite a seleção da change se não fornecida
263
+ - Use o grafo de artifacts (openspec status --json) para verificação de conclusão
264
+ - Não bloqueie o arquivamento por avisos - apenas informe e confirme
265
+ - Preservar .openspec.yaml ao mover para o arquivo (ele move com o diretório)
266
+ - Mostre um resumo claro do que aconteceu
267
+ - Se sync for solicitado, use a ferramenta Skill para invocar \`openspec-sync-specs\` (agent-driven)
268
268
  - Se delta specs existirem, sempre execute a avaliação de sync e mostre o resumo combinado antes de solicitar`
269
269
  };
270
270
  }