@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.
- package/LICENSE +22 -22
- package/README.md +210 -210
- package/README.pt-BR.md +212 -212
- package/bin/openspec.js +2 -2
- package/dist/commands/feedback.js +4 -4
- package/dist/commands/schema.js +60 -60
- package/dist/core/artifact-graph/instruction-loader.js +4 -4
- package/dist/core/artifact-graph/schema.js +5 -4
- package/dist/core/command-generation/adapters/amazon-q.js +5 -5
- package/dist/core/command-generation/adapters/antigravity.js +5 -5
- package/dist/core/command-generation/adapters/auggie.js +6 -6
- package/dist/core/command-generation/adapters/bob.js +6 -6
- package/dist/core/command-generation/adapters/claude.js +8 -8
- package/dist/core/command-generation/adapters/cline.js +5 -5
- package/dist/core/command-generation/adapters/codebuddy.js +7 -7
- package/dist/core/command-generation/adapters/codex.js +6 -6
- package/dist/core/command-generation/adapters/continue.js +7 -7
- package/dist/core/command-generation/adapters/costrict.js +6 -6
- package/dist/core/command-generation/adapters/crush.js +8 -8
- package/dist/core/command-generation/adapters/cursor.js +8 -8
- package/dist/core/command-generation/adapters/factory.js +6 -6
- package/dist/core/command-generation/adapters/gemini.js +5 -5
- package/dist/core/command-generation/adapters/github-copilot.js +5 -5
- package/dist/core/command-generation/adapters/iflow.js +8 -8
- package/dist/core/command-generation/adapters/junie.js +5 -5
- package/dist/core/command-generation/adapters/kilocode.js +1 -1
- package/dist/core/command-generation/adapters/kiro.js +5 -5
- package/dist/core/command-generation/adapters/lingma.js +8 -8
- package/dist/core/command-generation/adapters/opencode.js +5 -5
- package/dist/core/command-generation/adapters/pi.js +5 -5
- package/dist/core/command-generation/adapters/qoder.js +8 -8
- package/dist/core/command-generation/adapters/qwen.js +5 -5
- package/dist/core/command-generation/adapters/roocode.js +5 -5
- package/dist/core/command-generation/adapters/windsurf.js +8 -8
- package/dist/core/completions/factory.js +3 -2
- package/dist/core/completions/generators/bash-generator.js +41 -41
- package/dist/core/completions/generators/fish-generator.js +7 -7
- package/dist/core/completions/generators/powershell-generator.js +29 -29
- package/dist/core/completions/generators/zsh-generator.js +33 -33
- package/dist/core/completions/installers/fish-installer.js +13 -12
- package/dist/core/completions/installers/powershell-installer.js +16 -17
- package/dist/core/completions/installers/zsh-installer.js +1 -1
- package/dist/core/completions/templates/bash-templates.js +18 -18
- package/dist/core/completions/templates/fish-templates.js +32 -32
- package/dist/core/completions/templates/powershell-templates.js +19 -19
- package/dist/core/completions/templates/zsh-templates.js +30 -30
- package/dist/core/parsers/change-parser.js +7 -6
- package/dist/core/project-config.js +12 -13
- package/dist/core/shared/skill-generation.js +12 -12
- package/dist/core/specs-apply.js +37 -38
- package/dist/core/templates/workflows/apply-change.js +288 -288
- package/dist/core/templates/workflows/archive-change.js +251 -251
- package/dist/core/templates/workflows/bulk-archive-change.js +472 -472
- package/dist/core/templates/workflows/continue-change.js +212 -212
- package/dist/core/templates/workflows/explore.js +443 -443
- package/dist/core/templates/workflows/feedback.js +97 -97
- package/dist/core/templates/workflows/ff-change.js +178 -178
- package/dist/core/templates/workflows/propose.js +196 -196
- package/dist/core/templates/workflows/sync-specs.js +252 -252
- package/dist/core/templates/workflows/upstream-sync.js +93 -93
- package/dist/core/tools-manager.js +2 -2
- package/dist/messages/index.d.ts +111 -0
- package/dist/messages/index.js +1115 -977
- package/dist/utils/change-metadata.js +8 -7
- package/dist/utils/change-utils.js +12 -11
- package/package.json +82 -84
- package/schemas/spec-driven/schema.yaml +153 -153
- package/schemas/spec-driven/templates/design.md +19 -19
- package/schemas/spec-driven/templates/proposal.md +23 -23
- package/schemas/spec-driven/templates/spec.md +8 -8
- package/schemas/spec-driven/templates/tasks.md +9 -9
- 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
|
}
|