@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,132 +2,132 @@ export function getSyncSpecsSkillTemplate() {
2
2
  return {
3
3
  name: 'openspec-sync-specs',
4
4
  description: 'Sincroniza delta specs de uma change para os specs principais. Use quando o usuário quiser atualizar os specs principais com alterações de um delta spec, sem arquivar a change.',
5
- instructions: `Sincroniza delta specs de uma change para os specs principais.
6
-
7
- Esta é uma operação **dirigida por agente** — você lerá os delta specs e editará diretamente os specs principais para aplicar as alterações. Isso permite mesclagem inteligente (por exemplo, adicionar um cenário sem copiar o requisito inteiro).
8
-
9
- **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.
10
-
11
- **Passos**
12
-
13
- 1. **Se nenhum nome de change for fornecido, solicite a seleção**
14
-
15
- Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
16
-
17
- Mostre as changes que possuem delta specs (no diretório \`specs/\`).
18
-
19
- **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
20
-
21
- 2. **Encontre os delta specs**
22
-
23
- Procure arquivos de delta spec em \`openspec/changes/<nome>/specs/*/spec.md\`.
24
-
25
- Cada arquivo de delta spec contém seções como:
26
- - \`## ADDED Requirements\` — Novos requisitos a adicionar
27
- - \`## MODIFIED Requirements\` — Alterações em requisitos existentes
28
- - \`## REMOVED Requirements\` — Requisitos a remover
29
- - \`## RENAMED Requirements\` — Requisitos a renomear (formato FROM:/TO:)
30
-
31
- Se nenhum delta spec for encontrado, informe o usuário e pare.
32
-
33
- 3. **Para cada delta spec, aplique as alterações nos specs principais**
34
-
35
- Para cada capability com um delta spec em \`openspec/changes/<nome>/specs/<capability>/spec.md\`:
36
-
37
- a. **Leia o delta spec** para entender as alterações pretendidas
38
-
39
- b. **Leia o spec principal** em \`openspec/specs/<capability>/spec.md\` (pode ainda não existir)
40
-
41
- c. **Aplique as alterações de forma inteligente**:
42
-
43
- **ADDED Requirements:**
44
- - Se o requisito não existir no spec principal → adicione-o
45
- - Se o requisito já existir → atualize-o para corresponder (trate como MODIFIED implícito)
46
-
47
- **MODIFIED Requirements:**
48
- - Encontre o requisito no spec principal
49
- - Aplique as alterações — isso pode ser:
50
- - Adicionar novos cenários (não é necessário copiar os existentes)
51
- - Modificar cenários existentes
52
- - Alterar a descrição do requisito
53
- - Preserve cenários/conteúdo não mencionados no delta
54
-
55
- **REMOVED Requirements:**
56
- - Remova o bloco inteiro do requisito do spec principal
57
-
58
- **RENAMED Requirements:**
59
- - Encontre o requisito FROM, renomeie para TO
60
-
61
- d. **Crie um novo spec principal** se a capability ainda não existir:
62
- - Crie \`openspec/specs/<capability>/spec.md\`
63
- - Adicione a seção Purpose (pode ser breve, marque como TBD)
64
- - Adicione a seção Requirements com os requisitos ADDED
65
-
66
- 4. **Exiba o resumo**
67
-
68
- Após aplicar todas as alterações, resuma:
69
- - Quais capabilities foram atualizadas
70
- - Quais alterações foram feitas (requisitos adicionados/modificados/removidos/renomeados)
71
-
72
- **Referência de Formato de Delta Spec**
73
-
74
- \`\`\`markdown
75
- ## ADDED Requirements
76
-
77
- ### Requirement: New Feature
78
- O sistema DEVERÁ fazer algo novo.
79
-
80
- #### Scenario: Basic case
81
- - **WHEN** user does X
82
- - **THEN** system does Y
83
-
84
- ## MODIFIED Requirements
85
-
86
- ### Requirement: Existing Feature
87
- #### Scenario: New scenario to add
88
- - **WHEN** user does A
89
- - **THEN** system does B
90
-
91
- ## REMOVED Requirements
92
-
93
- ### Requirement: Deprecated Feature
94
-
95
- ## RENAMED Requirements
96
-
97
- - FROM: \`### Requirement: Old Name\`
98
- - TO: \`### Requirement: New Name\`
99
- \`\`\`
100
-
101
- **Princípio-Chave: Mesclagem Inteligente**
102
-
103
- Ao contrário da mesclagem programática, você pode aplicar **atualizações parciais**:
104
- - Para adicionar um cenário, basta incluí-lo sob MODIFIED — não copie os cenários existentes
105
- - O delta representa *intenção*, não uma substituição total
106
- - Use seu julgamento para mesclar as alterações de forma sensata
107
-
108
- **Saída em Sucesso**
109
-
110
- \`\`\`
111
- ## Specs Sincronizados: <nome-change>
112
-
113
- Specs principais atualizados:
114
-
115
- **<capability-1>**:
116
- - Added requirement: "New Feature"
117
- - Modified requirement: "Existing Feature" (added 1 scenario)
118
-
119
- **<capability-2>**:
120
- - Created new spec file
121
- - Added requirement: "Another Feature"
122
-
123
- Os specs principais foram atualizados. A change permanece ativa — arquive quando a implementação estiver completa.
124
- \`\`\`
125
-
126
- **Guardrails**
127
- - Leia tanto os delta specs quanto os specs principais antes de fazer alterações
128
- - Preserve o conteúdo existente não mencionado no delta
129
- - Se algo não estiver claro, peça esclarecimento
130
- - Mostre o que está alterando à medida que avança
5
+ instructions: `Sincroniza delta specs de uma change para os specs principais.
6
+
7
+ Esta é uma operação **dirigida por agente** — você lerá os delta specs e editará diretamente os specs principais para aplicar as alterações. Isso permite mesclagem inteligente (por exemplo, adicionar um cenário sem copiar o requisito inteiro).
8
+
9
+ **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.
10
+
11
+ **Passos**
12
+
13
+ 1. **Se nenhum nome de change for fornecido, solicite a seleção**
14
+
15
+ Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
16
+
17
+ Mostre as changes que possuem delta specs (no diretório \`specs/\`).
18
+
19
+ **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
20
+
21
+ 2. **Encontre os delta specs**
22
+
23
+ Procure arquivos de delta spec em \`openspec/changes/<nome>/specs/*/spec.md\`.
24
+
25
+ Cada arquivo de delta spec contém seções como:
26
+ - \`## ADDED Requirements\` — Novos requisitos a adicionar
27
+ - \`## MODIFIED Requirements\` — Alterações em requisitos existentes
28
+ - \`## REMOVED Requirements\` — Requisitos a remover
29
+ - \`## RENAMED Requirements\` — Requisitos a renomear (formato FROM:/TO:)
30
+
31
+ Se nenhum delta spec for encontrado, informe o usuário e pare.
32
+
33
+ 3. **Para cada delta spec, aplique as alterações nos specs principais**
34
+
35
+ Para cada capability com um delta spec em \`openspec/changes/<nome>/specs/<capability>/spec.md\`:
36
+
37
+ a. **Leia o delta spec** para entender as alterações pretendidas
38
+
39
+ b. **Leia o spec principal** em \`openspec/specs/<capability>/spec.md\` (pode ainda não existir)
40
+
41
+ c. **Aplique as alterações de forma inteligente**:
42
+
43
+ **ADDED Requirements:**
44
+ - Se o requisito não existir no spec principal → adicione-o
45
+ - Se o requisito já existir → atualize-o para corresponder (trate como MODIFIED implícito)
46
+
47
+ **MODIFIED Requirements:**
48
+ - Encontre o requisito no spec principal
49
+ - Aplique as alterações — isso pode ser:
50
+ - Adicionar novos cenários (não é necessário copiar os existentes)
51
+ - Modificar cenários existentes
52
+ - Alterar a descrição do requisito
53
+ - Preserve cenários/conteúdo não mencionados no delta
54
+
55
+ **REMOVED Requirements:**
56
+ - Remova o bloco inteiro do requisito do spec principal
57
+
58
+ **RENAMED Requirements:**
59
+ - Encontre o requisito FROM, renomeie para TO
60
+
61
+ d. **Crie um novo spec principal** se a capability ainda não existir:
62
+ - Crie \`openspec/specs/<capability>/spec.md\`
63
+ - Adicione a seção Purpose (pode ser breve, marque como TBD)
64
+ - Adicione a seção Requirements com os requisitos ADDED
65
+
66
+ 4. **Exiba o resumo**
67
+
68
+ Após aplicar todas as alterações, resuma:
69
+ - Quais capabilities foram atualizadas
70
+ - Quais alterações foram feitas (requisitos adicionados/modificados/removidos/renomeados)
71
+
72
+ **Referência de Formato de Delta Spec**
73
+
74
+ \`\`\`markdown
75
+ ## ADDED Requirements
76
+
77
+ ### Requirement: New Feature
78
+ O sistema DEVERÁ fazer algo novo.
79
+
80
+ #### Scenario: Basic case
81
+ - **WHEN** user does X
82
+ - **THEN** system does Y
83
+
84
+ ## MODIFIED Requirements
85
+
86
+ ### Requirement: Existing Feature
87
+ #### Scenario: New scenario to add
88
+ - **WHEN** user does A
89
+ - **THEN** system does B
90
+
91
+ ## REMOVED Requirements
92
+
93
+ ### Requirement: Deprecated Feature
94
+
95
+ ## RENAMED Requirements
96
+
97
+ - FROM: \`### Requirement: Old Name\`
98
+ - TO: \`### Requirement: New Name\`
99
+ \`\`\`
100
+
101
+ **Princípio-Chave: Mesclagem Inteligente**
102
+
103
+ Ao contrário da mesclagem programática, você pode aplicar **atualizações parciais**:
104
+ - Para adicionar um cenário, basta incluí-lo sob MODIFIED — não copie os cenários existentes
105
+ - O delta representa *intenção*, não uma substituição total
106
+ - Use seu julgamento para mesclar as alterações de forma sensata
107
+
108
+ **Saída em Sucesso**
109
+
110
+ \`\`\`
111
+ ## Specs Sincronizados: <nome-change>
112
+
113
+ Specs principais atualizados:
114
+
115
+ **<capability-1>**:
116
+ - Added requirement: "New Feature"
117
+ - Modified requirement: "Existing Feature" (added 1 scenario)
118
+
119
+ **<capability-2>**:
120
+ - Created new spec file
121
+ - Added requirement: "Another Feature"
122
+
123
+ Os specs principais foram atualizados. A change permanece ativa — arquive quando a implementação estiver completa.
124
+ \`\`\`
125
+
126
+ **Guardrails**
127
+ - Leia tanto os delta specs quanto os specs principais antes de fazer alterações
128
+ - Preserve o conteúdo existente não mencionado no delta
129
+ - Se algo não estiver claro, peça esclarecimento
130
+ - Mostre o que está alterando à medida que avança
131
131
  - A operação deve ser idempotente — executar duas vezes deve dar o mesmo resultado`,
132
132
  license: 'MIT',
133
133
  compatibility: 'Requer openspec CLI.',
@@ -140,132 +140,132 @@ export function getOpsxSyncCommandTemplate() {
140
140
  description: 'Sincroniza delta specs de uma change para os specs principais',
141
141
  category: 'Workflow',
142
142
  tags: ['workflow', 'specs', 'experimental'],
143
- content: `Sincroniza delta specs de uma change para os specs principais.
144
-
145
- Esta é uma operação **dirigida por agente** — você lerá os delta specs e editará diretamente os specs principais para aplicar as alterações. Isso permite mesclagem inteligente (por exemplo, adicionar um cenário sem copiar o requisito inteiro).
146
-
147
- **Entrada**: Opcionalmente especifique um nome de change após \`/opsx:sync\` (por exemplo, \`/opsx:sync 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.
148
-
149
- **Passos**
150
-
151
- 1. **Se nenhum nome de change for fornecido, solicite a seleção**
152
-
153
- Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
154
-
155
- Mostre as changes que possuem delta specs (no diretório \`specs/\`).
156
-
157
- **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
158
-
159
- 2. **Encontre os delta specs**
160
-
161
- Procure arquivos de delta spec em \`openspec/changes/<nome>/specs/*/spec.md\`.
162
-
163
- Cada arquivo de delta spec contém seções como:
164
- - \`## ADDED Requirements\` — Novos requisitos a adicionar
165
- - \`## MODIFIED Requirements\` — Alterações em requisitos existentes
166
- - \`## REMOVED Requirements\` — Requisitos a remover
167
- - \`## RENAMED Requirements\` — Requisitos a renomear (formato FROM:/TO:)
168
-
169
- Se nenhum delta spec for encontrado, informe o usuário e pare.
170
-
171
- 3. **Para cada delta spec, aplique as alterações nos specs principais**
172
-
173
- Para cada capability com um delta spec em \`openspec/changes/<nome>/specs/<capability>/spec.md\`:
174
-
175
- a. **Leia o delta spec** para entender as alterações pretendidas
176
-
177
- b. **Leia o spec principal** em \`openspec/specs/<capability>/spec.md\` (pode ainda não existir)
178
-
179
- c. **Aplique as alterações de forma inteligente**:
180
-
181
- **ADDED Requirements:**
182
- - Se o requisito não existir no spec principal → adicione-o
183
- - Se o requisito já existir → atualize-o para corresponder (trate como MODIFIED implícito)
184
-
185
- **MODIFIED Requirements:**
186
- - Encontre o requisito no spec principal
187
- - Aplique as alterações — isso pode ser:
188
- - Adicionar novos cenários (não é necessário copiar os existentes)
189
- - Modificar cenários existentes
190
- - Alterar a descrição do requisito
191
- - Preserve cenários/conteúdo não mencionados no delta
192
-
193
- **REMOVED Requirements:**
194
- - Remova o bloco inteiro do requisito do spec principal
195
-
196
- **RENAMED Requirements:**
197
- - Encontre o requisito FROM, renomeie para TO
198
-
199
- d. **Crie um novo spec principal** se a capability ainda não existir:
200
- - Crie \`openspec/specs/<capability>/spec.md\`
201
- - Adicione a seção Purpose (pode ser breve, marque como TBD)
202
- - Adicione a seção Requirements com os requisitos ADDED
203
-
204
- 4. **Exiba o resumo**
205
-
206
- Após aplicar todas as alterações, resuma:
207
- - Quais capabilities foram atualizadas
208
- - Quais alterações foram feitas (requisitos adicionados/modificados/removidos/renomeados)
209
-
210
- **Referência de Formato de Delta Spec**
211
-
212
- \`\`\`markdown
213
- ## ADDED Requirements
214
-
215
- ### Requirement: New Feature
216
- O sistema DEVERÁ fazer algo novo.
217
-
218
- #### Scenario: Basic case
219
- - **WHEN** user does X
220
- - **THEN** system does Y
221
-
222
- ## MODIFIED Requirements
223
-
224
- ### Requirement: Existing Feature
225
- #### Scenario: New scenario to add
226
- - **WHEN** user does A
227
- - **THEN** system does B
228
-
229
- ## REMOVED Requirements
230
-
231
- ### Requirement: Deprecated Feature
232
-
233
- ## RENAMED Requirements
234
-
235
- - FROM: \`### Requirement: Old Name\`
236
- - TO: \`### Requirement: New Name\`
237
- \`\`\`
238
-
239
- **Princípio-Chave: Mesclagem Inteligente**
240
-
241
- Ao contrário da mesclagem programática, você pode aplicar **atualizações parciais**:
242
- - Para adicionar um cenário, basta incluí-lo sob MODIFIED — não copie os cenários existentes
243
- - O delta representa *intenção*, não uma substituição total
244
- - Use seu julgamento para mesclar as alterações de forma sensata
245
-
246
- **Saída em Sucesso**
247
-
248
- \`\`\`
249
- ## Specs Sincronizados: <nome-change>
250
-
251
- Specs principais atualizados:
252
-
253
- **<capability-1>**:
254
- - Added requirement: "New Feature"
255
- - Modified requirement: "Existing Feature" (added 1 scenario)
256
-
257
- **<capability-2>**:
258
- - Created new spec file
259
- - Added requirement: "Another Feature"
260
-
261
- Os specs principais foram atualizados. A change permanece ativa — arquive quando a implementação estiver completa.
262
- \`\`\`
263
-
264
- **Guardrails**
265
- - Leia tanto os delta specs quanto os specs principais antes de fazer alterações
266
- - Preserve o conteúdo existente não mencionado no delta
267
- - Se algo não estiver claro, peça esclarecimento
268
- - Mostre o que está alterando à medida que avança
143
+ content: `Sincroniza delta specs de uma change para os specs principais.
144
+
145
+ Esta é uma operação **dirigida por agente** — você lerá os delta specs e editará diretamente os specs principais para aplicar as alterações. Isso permite mesclagem inteligente (por exemplo, adicionar um cenário sem copiar o requisito inteiro).
146
+
147
+ **Entrada**: Opcionalmente especifique um nome de change após \`/opsx:sync\` (por exemplo, \`/opsx:sync 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.
148
+
149
+ **Passos**
150
+
151
+ 1. **Se nenhum nome de change for fornecido, solicite a seleção**
152
+
153
+ Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
154
+
155
+ Mostre as changes que possuem delta specs (no diretório \`specs/\`).
156
+
157
+ **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
158
+
159
+ 2. **Encontre os delta specs**
160
+
161
+ Procure arquivos de delta spec em \`openspec/changes/<nome>/specs/*/spec.md\`.
162
+
163
+ Cada arquivo de delta spec contém seções como:
164
+ - \`## ADDED Requirements\` — Novos requisitos a adicionar
165
+ - \`## MODIFIED Requirements\` — Alterações em requisitos existentes
166
+ - \`## REMOVED Requirements\` — Requisitos a remover
167
+ - \`## RENAMED Requirements\` — Requisitos a renomear (formato FROM:/TO:)
168
+
169
+ Se nenhum delta spec for encontrado, informe o usuário e pare.
170
+
171
+ 3. **Para cada delta spec, aplique as alterações nos specs principais**
172
+
173
+ Para cada capability com um delta spec em \`openspec/changes/<nome>/specs/<capability>/spec.md\`:
174
+
175
+ a. **Leia o delta spec** para entender as alterações pretendidas
176
+
177
+ b. **Leia o spec principal** em \`openspec/specs/<capability>/spec.md\` (pode ainda não existir)
178
+
179
+ c. **Aplique as alterações de forma inteligente**:
180
+
181
+ **ADDED Requirements:**
182
+ - Se o requisito não existir no spec principal → adicione-o
183
+ - Se o requisito já existir → atualize-o para corresponder (trate como MODIFIED implícito)
184
+
185
+ **MODIFIED Requirements:**
186
+ - Encontre o requisito no spec principal
187
+ - Aplique as alterações — isso pode ser:
188
+ - Adicionar novos cenários (não é necessário copiar os existentes)
189
+ - Modificar cenários existentes
190
+ - Alterar a descrição do requisito
191
+ - Preserve cenários/conteúdo não mencionados no delta
192
+
193
+ **REMOVED Requirements:**
194
+ - Remova o bloco inteiro do requisito do spec principal
195
+
196
+ **RENAMED Requirements:**
197
+ - Encontre o requisito FROM, renomeie para TO
198
+
199
+ d. **Crie um novo spec principal** se a capability ainda não existir:
200
+ - Crie \`openspec/specs/<capability>/spec.md\`
201
+ - Adicione a seção Purpose (pode ser breve, marque como TBD)
202
+ - Adicione a seção Requirements com os requisitos ADDED
203
+
204
+ 4. **Exiba o resumo**
205
+
206
+ Após aplicar todas as alterações, resuma:
207
+ - Quais capabilities foram atualizadas
208
+ - Quais alterações foram feitas (requisitos adicionados/modificados/removidos/renomeados)
209
+
210
+ **Referência de Formato de Delta Spec**
211
+
212
+ \`\`\`markdown
213
+ ## ADDED Requirements
214
+
215
+ ### Requirement: New Feature
216
+ O sistema DEVERÁ fazer algo novo.
217
+
218
+ #### Scenario: Basic case
219
+ - **WHEN** user does X
220
+ - **THEN** system does Y
221
+
222
+ ## MODIFIED Requirements
223
+
224
+ ### Requirement: Existing Feature
225
+ #### Scenario: New scenario to add
226
+ - **WHEN** user does A
227
+ - **THEN** system does B
228
+
229
+ ## REMOVED Requirements
230
+
231
+ ### Requirement: Deprecated Feature
232
+
233
+ ## RENAMED Requirements
234
+
235
+ - FROM: \`### Requirement: Old Name\`
236
+ - TO: \`### Requirement: New Name\`
237
+ \`\`\`
238
+
239
+ **Princípio-Chave: Mesclagem Inteligente**
240
+
241
+ Ao contrário da mesclagem programática, você pode aplicar **atualizações parciais**:
242
+ - Para adicionar um cenário, basta incluí-lo sob MODIFIED — não copie os cenários existentes
243
+ - O delta representa *intenção*, não uma substituição total
244
+ - Use seu julgamento para mesclar as alterações de forma sensata
245
+
246
+ **Saída em Sucesso**
247
+
248
+ \`\`\`
249
+ ## Specs Sincronizados: <nome-change>
250
+
251
+ Specs principais atualizados:
252
+
253
+ **<capability-1>**:
254
+ - Added requirement: "New Feature"
255
+ - Modified requirement: "Existing Feature" (added 1 scenario)
256
+
257
+ **<capability-2>**:
258
+ - Created new spec file
259
+ - Added requirement: "Another Feature"
260
+
261
+ Os specs principais foram atualizados. A change permanece ativa — arquive quando a implementação estiver completa.
262
+ \`\`\`
263
+
264
+ **Guardrails**
265
+ - Leia tanto os delta specs quanto os specs principais antes de fazer alterações
266
+ - Preserve o conteúdo existente não mencionado no delta
267
+ - Se algo não estiver claro, peça esclarecimento
268
+ - Mostre o que está alterando à medida que avança
269
269
  - A operação deve ser idempotente — executar duas vezes deve dar o mesmo resultado`
270
270
  };
271
271
  }