spec-first-copilot 0.7.0-beta.1 → 0.7.0

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 (55) hide show
  1. package/README.md +252 -167
  2. package/bin/cli.js +70 -70
  3. package/lib/init.js +92 -92
  4. package/lib/update.js +132 -132
  5. package/package.json +1 -1
  6. package/templates/.ai/memory/napkin.md +68 -68
  7. package/templates/.github/CHANGELOG.md +560 -533
  8. package/templates/.github/adapters/SETUP.md +314 -314
  9. package/templates/.github/adapters/confluence.md +295 -295
  10. package/templates/.github/adapters/errors.md +234 -234
  11. package/templates/.github/adapters/filesystem.md +353 -353
  12. package/templates/.github/adapters/interface.md +301 -301
  13. package/templates/.github/adapters/naming.md +241 -241
  14. package/templates/.github/adapters/registry.md +244 -244
  15. package/templates/.github/agents/backend-coder.md +215 -215
  16. package/templates/.github/agents/db-coder.md +165 -165
  17. package/templates/.github/agents/doc-writer.md +66 -66
  18. package/templates/.github/agents/frontend-coder.md +222 -222
  19. package/templates/.github/agents/infra-coder.md +341 -341
  20. package/templates/.github/agents/reviewer.md +99 -99
  21. package/templates/.github/agents/security-reviewer.md +153 -153
  22. package/templates/.github/copilot-instructions.md +272 -272
  23. package/templates/.github/instructions/docs.instructions.md +147 -145
  24. package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
  25. package/templates/.github/rules.md +229 -229
  26. package/templates/.github/scripts/bootstrap-confluence.js +289 -289
  27. package/templates/.github/skills/sf-design/SKILL.md +161 -161
  28. package/templates/.github/skills/sf-dev/SKILL.md +204 -204
  29. package/templates/.github/skills/sf-discovery/SKILL.md +415 -415
  30. package/templates/.github/skills/sf-extract/SKILL.md +225 -225
  31. package/templates/.github/skills/sf-load/SKILL.md +296 -296
  32. package/templates/.github/skills/sf-mcp/SKILL.md +386 -386
  33. package/templates/.github/skills/sf-merge-docs/SKILL.md +152 -152
  34. package/templates/.github/skills/sf-plan/SKILL.md +152 -152
  35. package/templates/.github/skills/sf-publish/SKILL.md +144 -144
  36. package/templates/.github/skills/sf-session-finish/SKILL.md +93 -93
  37. package/templates/.github/skills/sf-start/SKILL.md +192 -192
  38. package/templates/.github/templates/estrutura/apiContracts.template.md +160 -159
  39. package/templates/.github/templates/estrutura/architecture.template.md +169 -168
  40. package/templates/.github/templates/estrutura/conventions.template.md +214 -212
  41. package/templates/.github/templates/estrutura/decisions.template.md +107 -107
  42. package/templates/.github/templates/estrutura/domain.template.md +161 -160
  43. package/templates/.github/templates/feature/PRD.template.md +279 -279
  44. package/templates/.github/templates/feature/Progresso.template.md +141 -141
  45. package/templates/.github/templates/feature/TRD.template.md +358 -358
  46. package/templates/.github/templates/feature/context.template.md +89 -89
  47. package/templates/.github/templates/feature/extract-log.template.md +49 -49
  48. package/templates/.github/templates/feature/projetos.template.yaml +79 -79
  49. package/templates/.github/templates/global/progresso_global.template.md +59 -57
  50. package/templates/.github/templates/specs/brief.template.md +66 -66
  51. package/templates/.github/templates/specs/contracts.template.md +147 -147
  52. package/templates/.github/templates/specs/scenarios.template.md +125 -125
  53. package/templates/.github/templates/specs/tasks.template.md +65 -65
  54. package/templates/_gitignore +35 -35
  55. package/templates/sfw.config.yml.example +147 -147
@@ -1,533 +1,560 @@
1
- # SFW Changelog — spec-first-copilot
2
-
3
- > Este arquivo é atualizado automaticamente pelo `spec-first-copilot update`.
4
- > O agent deve ler este arquivo quando o usuário perguntar sobre mudanças,
5
- > funcionalidades novas, ou o que está disponível no framework.
6
- >
7
- > **Não editar manualmente** — será sobrescrito no próximo update.
8
-
9
- ---
10
-
11
- ## 0.7.0-beta.1 (2026-04-13) — Redesign v4 (BREAKING)
12
-
13
- Reestruturação arquitetural baseada em feedback de uso real do v3. TRD ressuscitado
14
- como peer do PRD, SDD eliminado, aprovação por persona. Pipeline continua unificado
15
- via `/sf-start`.
16
-
17
- ### Breaking
18
-
19
- - **TRD ressuscitado** peer do PRD, aprovado pelo dev. Não é o TRD antigo
20
- transiente: agora tem papel próprio (source técnica autoritativa).
21
- - **SDD eliminado** camada intermediária desnecessária quando PRD+TRD são bem
22
- estruturados. `specs/{nome}/` deriva direto de PRD+TRD. `docs/` atualizado via
23
- `/sf-merge-docs` a partir de PRD+TRD.
24
- - **Aprovação por persona** PM aprova PRD (`prd_aprovado: true`), dev aprova TRD
25
- (`trd_aprovado: true`). Flags no `.context.md`. Em time pequeno, user faz as 2
26
- aprovações não pula.
27
- - **Discovery obrigatório** — `/sf-discovery` deixou de ser skill opcional e virou
28
- passo obrigatório dentro do `/sf-start`. Força entendimento antes da extração.
29
- - **PRD `empty` removido** — conceito obsoleto. Agora: scope puro-técnico tem
30
- `prd_existe=false`; scope puro-produto tem `trd_existe=false`. Maioria tem ambos.
31
- - **backlog_extraido.md eliminado** features futuras viram itens em PRD §11
32
- Fora de Escopo com sugestão de `/sf-start <nome>` próprio.
33
- - **Schema do `.context.md` mudou**: `prd_empty` → `prd_existe` + `prd_aprovado`;
34
- adicionado `trd_existe` + `trd_aprovado`. Status fluxo tem novos estados:
35
- `discovery_done → extract_done → prd_approved → trd_approved → design_done`.
36
-
37
- ### Templates
38
-
39
- - `TRD.template.md` novo — 11 seções, organizado por área (§Sistema + §Área-X)
40
- - `PRD.template.md` refatorado 13 seções puro-produto, sem conteúdo técnico
41
- - `sdd.template.md` deletado
42
- - `backlog-extraido.template.md` deletado
43
- - `context.template.md` schema v4
44
- - `extract-log.template.md` sem categorização "produto/tech" (obsoleta)
45
- - `specs/*.template.md` com ORIGEM atualizada: PRD+TRD em vez de SDD
46
-
47
- ### Skills
48
-
49
- - `/sf-start` 2 aprovações + discovery obrigatório
50
- - `/sf-extract` gera PRD e/ou TRD conforme conteúdo dos insumos (Reader + Produto-Analyzer + Tech-Analyzer)
51
- - `/sf-design` consome PRD+TRD aprovados, gera docs/ (first-run) + specs/
52
- - `/sf-merge-docs` diff semântico PRD+TRD docs/ (agente Integrator promovido pra Opus)
53
- - `/sf-plan` entrada PRD+TRD+specs/, tasks com `Ref TRD` em vez de `Ref SDD`
54
- - `/sf-publish` adicionado TRD à whitelist; SDD removido
55
-
56
- ### Agents
57
-
58
- - Doc Writer reescrito: fonte muda de "SDD §Sistema" para "PRD + TRD"
59
- - Coders (backend/frontend/db/infra) e Reviewers: refs de "SDD §X" → "TRD §X" ou "specs/{nome}/"
60
-
61
- ### Migração de v3 (0.6.x) pra v4
62
-
63
- ```bash
64
- # 1. Atualizar kit
65
- npx spec-first-copilot@beta update
66
-
67
- # 2. Para cada scope em andamento: migrar .context.md
68
- # - Remover `prd_empty`
69
- # - Adicionar `prd_existe`, `trd_existe`, `prd_aprovado`, `trd_aprovado`
70
- # - Se scope já tem SDD: extrair conteúdo técnico pra TRD.md manual
71
-
72
- # 3. SDDs antigos em workspace/Output/{nome}/sdd.md ficam como legado
73
- # (nenhum skill v4 lê eles). Deletar quando confortável.
74
- ```
75
-
76
- ### Versionamento
77
-
78
- - Bump **minor** (0.6 0.7) pelo breaking. v3 (`0.6.0-beta.10`) permanece no npm
79
- como histórico.
80
- - Publicado com tag `beta`. Promoção para `latest` apenas após validação em uso real.
81
-
82
- ---
83
-
84
- ## 0.6.0-beta.10 (2026-04-13)
85
-
86
- ### `bootstrap-confluence.js` agora é idempotente
87
-
88
- Script agora `.mcp.json` existente e reusa valores da entry `atlassian` em
89
- vez de perguntar tudo de novo:
90
-
91
- - Se `CONFLUENCE_URL` já existe: mostra URL atual, pergunta "Manter? [S/n]"
92
- - Se `CONFLUENCE_USERNAME` já existe: mostra email atual, pergunta "Manter? [S/n]"
93
- - Se `CONFLUENCE_API_TOKEN` já existe: mostra token mascarado (`abcd…wxyz`), pergunta "Manter? [S/n]"
94
- - Default ENTER = manter. Responder `n` abre o prompt completo da informação.
95
-
96
- Se todos os 3 campos foram mantidos: detecta que nada mudou e **não reescreve**
97
- `.mcp.json` (evita dirty git). Se mudou algo: reescreve preservando outras
98
- entries MCP (Supabase, GitHub, etc.).
99
-
100
- Útil pra: reexecução após novo rebuild do MCP, rotação apenas do token, debug
101
- de setup sem perder credenciais já válidas.
102
-
103
- ---
104
-
105
- ## 0.6.0-beta.9 (2026-04-13)
106
-
107
- ### CLI em pt-BR + dica de bootstrap-confluence no init
108
-
109
- Mensagens do CLI (`init` e `update`) traduzidas para pt-BR — usuário final é o público.
110
-
111
- Mensagem do `init` reescrita para deixar **explícito o passo opcional de pré-setup
112
- do Confluence**:
113
-
114
- ```
115
- Pronto! Projeto "X" criado.
116
-
117
- Próximos passos:
118
- 1. cd X
119
- 2. Crie uma pasta em workspace/Input/ com os insumos do seu projeto
120
- 3. (Opcional) Configure o backend de input/output:
121
- cp sfw.config.yml.example sfw.config.yml
122
- 4. (Opcional, se vai usar Confluence) Prepare o ambiente ANTES de abrir o VS Code:
123
- node .github/scripts/bootstrap-confluence.js
124
- 5. Abra o VS Code com Copilot Chat e rode: /sf-start <nome-da-pasta>
125
- ```
126
-
127
- O passo 4 era invisível antes aparecia inline na "Dica" do skill `/sf-mcp`.
128
- Agora aparece logo no fim do `init`, no momento exato em que o usuário vai decidir
129
- se prepara o Confluence ou não.
130
-
131
- ---
132
-
133
- ## 0.6.0-beta.8 (2026-04-13)
134
-
135
- ### Novo: `bootstrap-confluence.js` (opcional, pré-Copilot)
136
-
137
- Script Node cross-platform em `.github/scripts/bootstrap-confluence.js` que prepara
138
- o ambiente para o backend Confluence **antes** de abrir o VS Code com Copilot. Evita
139
- o ciclo "abrir Copilot → descobrir que falta `uvx` ou credenciais → sair, ajustar,
140
- reiniciar".
141
-
142
- O que faz:
143
- 1. Valida `uvx` instalado (orienta install se faltar — não instala automaticamente)
144
- 2. Coleta URL do Confluence, email Atlassian e API Token (com link pra gerar o token)
145
- 3. Gera/mescla `.mcp.json` preservando outras entries de MCP existentes
146
- 4. Garante `.mcp.json` no `.gitignore`
147
- 5. Pré-cacheia o pacote `mcp-atlassian` via `uvx` (100+ deps no primeiro uso)
148
-
149
- Depois é abrir o VS Code e rodar `/sf-mcp confluence` vai direto pra descoberta
150
- da árvore no Confluence, sem reiniciar.
151
-
152
- Uso: `node .github/scripts/bootstrap-confluence.js`
153
- Opcional — `/sf-mcp confluence` sozinho também cobre esses passos, mas exige reiniciar
154
- VS Code após criar `.mcp.json`.
155
-
156
- Skill `/sf-mcp` ganhou nota referenciando o script como atalho recomendado.
157
-
158
- ### Primeira release sincronizada automaticamente
159
-
160
- Primeira release onde o conteúdo compartilhado entre kits veio direto do script
161
- `npm run sync-kits` no repo SFW — sem cópia manual. Zero drift entre Claude e Copilot
162
- validado antes do publish.
163
-
164
- ---
165
-
166
- ## 0.6.0-beta.7 (2026-04-13)
167
-
168
- ### Fix: 27 referências a slash-commands faltando prefix `sf-`
169
-
170
- Ao sincronizar os templates refinados entre os kits (nas releases `beta.5`/`beta.6`),
171
- cópias manuais deixaram referências estilo `/design`, `/extract`, `/plan` nos
172
- arquivos do kit Copilot deveriam ser `/sf-design`, `/sf-extract`, `/sf-plan`.
173
-
174
- Corrigido em 27 arquivos: `rules.md`, 2 agents (infra-coder, security-reviewer),
175
- 7 adapters, 5 docs/estrutura templates, 7 feature templates, 4 specs templates e
176
- progresso_global.
177
-
178
- **Impacto**: usuários Copilot que rodaram `init` em `beta.6` devem rodar
179
- `npx spec-first-copilot update` para aplicar a correção nos templates.
180
-
181
- ### Script de sync entre kits (interno)
182
-
183
- Drift detectado pelo novo `scripts/sync-kits.js` ferramenta no repo SFW que
184
- mantém os 2 kits alinhados automaticamente. Fluxo passa a ser: editar em
185
- `spec-first-claude`, rodar `npm run sync-kits`, commit dos 2 juntos.
186
-
187
- ---
188
-
189
- ## 0.6.0-beta.6 (2026-04-13)
190
-
191
- ### Fixes detectados no smoke test de `beta.5`
192
-
193
- Rodamos o pipeline completo (`/sf-start → /sf-extract → /sf-design → /sf-plan`) em
194
- projeto novo com feature simples (todo app backend) e detectamos 6 inconsistências
195
- entre skills e templates. Todas corrigidas:
196
-
197
- **1. PRD §14 coluna "Resolvido em docs/" adicionada**
198
-
199
- Skill `/sf-extract` (beta.5) descreveu mecanismo do Analyzer marcar ambiguidades
200
- como "resolvido em docs/X §Y", mas o template do PRD não tinha coluna para isso.
201
- Agora a tabela de §14 tem 6 colunas: `ID | Pergunta | Contexto | Fonte | Resposta | Resolvido em docs/`.
202
-
203
- **2. PRD §14 — renomeada "Resposta do usuário" → "Resposta"**
204
-
205
- Skill `/sf-extract` fala em preencher "coluna `Resposta`" mas o template tinha
206
- "Resposta do usuário". Alinhado com o skill. Também adicionado ID padronizado
207
- `AMB-NNN` na primeira coluna (antes era só `#`).
208
-
209
- **3. PRD §14 e SDD §12 padronizados**
210
-
211
- SDD §12 Ambiguidades também passou a usar ID `AMB-NNN` continuando a sequência
212
- do PRD §14. Texto do bloqueio do SDD corrigido: não é o `/sf-design` que bloqueia
213
- no §12 (ele já gerou), é o `/sf-plan` (que lê o SDD como input).
214
-
215
- **4. Status do Progresso.md clarificado**
216
-
217
- `Status Geral` do Progresso.md era confundido com o status da pipeline em
218
- `.context.md`. Renomeado para `Status das Fases` + bloco explicativo deixando
219
- claro que **este arquivo rastreia fases de entrega do PRD §11, não o pipeline**.
220
-
221
- **5. Bool tipado corretamente no `.context.md`**
222
-
223
- Antes: `first_run: "{{true|false}}"` (string com aspas). Depois: `first_run: {{true|false}}`
224
- (bool YAML real). Instruções do template reforçam: "SEM aspas".
225
-
226
- **6. `projetos.yaml` sem stack hardcoded**
227
-
228
- Template tinha `stack: ".NET 8"` literal no exemplo `api`. Podia induzir projetos
229
- Node/Python a errar. Agora usa `{{STACK_BACKEND}}` como placeholder + bloco
230
- explicativo listando exemplos por stack (Backend/Frontend/Mobile) como referência.
231
- Instruções reforçam: "stack DEVE vir do SDD §3.1".
232
-
233
- ### Extras
234
-
235
- **SDD template com guidance sobre escopo pequeno**
236
-
237
- Adicionado bloco no topo do template explicando que 3-4 seções preenchidas + o
238
- resto como "N/A" é comportamento esperado para apps simples não inflar conteúdo
239
- pra "preencher" seções vazias. Áreas não tocadas (§4-§7) usam `GATE: NÃO`.
240
-
241
- ---
242
-
243
- ## 0.6.0-beta.5 (2026-04-13)
244
-
245
- ### Refino dos templates de specs/
246
-
247
- Templates de projeção do SDD (`specs/{scope}/`) refinados com padrões consolidados de BDD/contract-first. Dois passos de refino fizeram parte desta release.
248
-
249
- **`scenarios.template.md`** — mudanças:
250
- - Seção "Fluxos de Erro e Edge Cases" separada do happy path com coluna "Ref CA" (antes ficavam perdidos e soltos)
251
- - Seção "Pré-condições Globais" no topo (setup do contexto que aplica a todos os cenários)
252
- - Campo "Pré-condição" em cada CA (estado adicional específico daquele CA — não repete as globais)
253
- - Tabela de fluxos com colunas Ator/Ação/Resultado em vez de texto linear
254
- - UI/Componentes: orientação explícita para features backend-only ("N/A — backend-only")
255
- - Estratégia de testes: coluna "Responsável" (em vez de "Quem dispara"), sem redefinir frameworks (referencia docs/)
256
- - Bloco de terminologia explica diferença entre Pré-condições Globais vs Pré-condição do CA
257
-
258
- **`contracts.template.md`** — mudanças:
259
- - Separação explícita em **3 camadas**: Dados (schema do banco) → Validações de Entrada (formato/tipo do request) → Regras de Negócio (invariantes do domínio)
260
- - "Validações de Entrada" virou seção top-level (antes estava enfiada dentro de Dados)
261
- - Dados: subseção "Alterações em tabelas existentes" (ADD/ALTER/DROP COLUMN) — antes só tinha formato para tabela nova
262
- - API: erros têm coluna "Código de domínio" (linkado às RN)
263
- - Instrução explícita para não duplicar convenções globais de docs/apiContracts.md
264
-
265
- **`tasks.template.md`**mudanças:
266
- - Padronização de áreas: `DB` (antes inconsistente com `BANCO`)
267
- - Coluna "Ref SDD" (obrigatória) adicionada — rastreabilidade ao documento fonte para tasks sem CA (INFRA/DOC)
268
- - Coluna "Ref CA" agora é opcional
269
- - Seção "Done When" com placeholder real (antes só tinha exemplo em comentário)
270
- - Removida seção "Regras por área" (era estática, contradiz áreas dinâmicas)
271
- - Removida seção "Convenções desta feature" (dumping ground — convenções pertencem ao SDD ou docs/)
272
- - Instrução explícita: bootstrap/first-run toda task na Fase 1
273
-
274
- **`brief.template.md`** mudanças:
275
- - Nova seção "Serviços tocados" (quais repos de projetos.yaml esta feature modifica + áreas)
276
-
277
- ### Padronização de nome de área: `BANCO` `DB`
278
-
279
- Inconsistência detectada entre commands/agents/templates: alguns usavam `BANCO` (português),
280
- outros usavam `DB`. Padronizado para **`DB`** (alinhado com nome do agente `db-coder.md` e
281
- com `skills/sf-design/SKILL.md`). 14 arquivos atualizados:
282
-
283
- - `.github/agents/db-coder.md`
284
- - `.github/skills/sf-dev/SKILL.md` (tabela de agents + seletor por prefixo)
285
- - `.github/skills/sf-plan/SKILL.md` (mapeamento SDD → área + exemplo)
286
- - `.github/rules.md` (exemplo de quality gate)
287
- - `.github/templates/feature/projetos.template.yaml` (mapeamento de áreas)
288
- - `.github/templates/feature/Progresso.template.md` (ordem de execução)
289
- - `.github/templates/global/progresso_global.template.md` (exemplo)
290
-
291
- **Breaking**: IDs de task geradas anteriormente com prefixo `BANCO-*` continuam válidas (IDs
292
- estáveis, não renomear). Novas features geram `DB-*`.
293
-
294
- ### `/sf-discovery` declara modelo Opus
295
-
296
- Skill não tinha declaração explícita de modelo rodava com o default da sessão. Descrição
297
- do skill ("arquiteto senior com mentalidade de consultor crítico... análises profundas e
298
- honestas") é trabalho Opus. Adicionado bloco **"Agente: Discovery Analyst (Opus)"** no topo.
299
-
300
- ### Doc gap: como responder ambiguidades do PRD §14
301
-
302
- Skill `/sf-extract` ganhou seção dedicada **"Como responder ambiguidades"** com fluxo
303
- passo a passo (caminho oficial: editar coluna `Resposta` direto no PRD §14 e re-rodar
304
- `/sf-design`). Skill `/sf-design` agora exibe instrução completa de retomada quando
305
- bloqueia por ambiguidades pendentes, em vez de só "pedir resposta".
306
-
307
- Caminho alternativo (adicionar `ajustes_v1.md` em Input + re-rodar `/sf-extract`) está
308
- documentado como exceção para mudanças estruturais.
309
-
310
- ---
311
-
312
- ## 0.6.0-beta.4 (2026-04-13)
313
-
314
- ### UX: `/sf-mcp confluence` self-contained pra usuário leigo
315
-
316
- Perguntas do skill agora mostram EXATAMENTE onde achar cada informação inline,
317
- sem depender de consulta externa ao SETUP.md:
318
-
319
- - **URL do Confluence**: "abra no browser, copie URL base com /wiki"
320
- - **API Token**: 4 sub-passos numerados (URL Atlassian, Create button, nome, copiar antes que suma)
321
- - **Space Key**: mostra URL pattern `/wiki/spaces/XXX/` com seta + exemplos ("ST", "DEV", "PROJ")
322
- - **Root Page ID**: 2 opções (A: Page ID com URL pattern `/pages/NNNN/`, B: título exato com aviso de match)
323
-
324
- Qualquer modelo / usuário leigo consegue responder sem ficar travado.
325
-
326
- ---
327
-
328
- ## 0.6.0-beta.3 (2026-04-13)
329
-
330
- ### Fix: `/sf-mcp confluence` idempotente com `root_page_id` como âncora
331
-
332
- Antes a skill era linear e podia pular a coleta do Page ID raiz do projeto depois de
333
- um restart (caso user tivesse que reiniciar o Claude após criar `.mcp.json`), resultando
334
- em `sfw.config.yml` sem `project.root_page_id` framework ficava sem âncora.
335
-
336
- Novo fluxo:
337
- 1. Detecta estado de `sfw.config.yml` (tem root_page_id?) + `.mcp.json` (tem credenciais?)
338
- 2. Se AMBOS existem → testa conexão e reconfirma Input/Output
339
- 3. Se algo falta → pede só o que falta (idempotente)
340
- 4. `root_page_id` validado contra `get_page(id)` antes de mapear árvore
341
- 5. Handler explícito pra 401 (credencial expirou) e 404 (root inválido)
342
-
343
- ### Fix: Auto-publish imperativo em `/sf-extract`, `/sf-design`, `/sf-plan`
344
-
345
- Antes a instrução era "Se `sfw.config.yml` com output.targets[] ativo: Executar /sf-publish" —
346
- ambígua, agent podia interpretar como opcional e pular.
347
-
348
- Agora:
349
- - Instrução imperativa: "Se `sfw.config.yml` existe Chamar `/sf-publish`. Execute."
350
- - Cada skill adiciona **seção "Saída obrigatória"** reportando status do publish
351
- (CREATED/UPDATED/SKIPPED/CONFLICT/ERROR) ou "SKIPPED (no sfw.config.yml)"
352
- - User vê explicitamente o que aconteceu no Confluence
353
-
354
- ### Fix: `publishes: [PRD, PRD, SDD, Progresso]` → `[PRD, SDD, Progresso]`
355
-
356
- Resquício do rename `TRD → PRD` na seção de template do `/sf-mcp confluence`. Agora gera yaml correto.
357
-
358
- ---
359
-
360
- ## 0.6.0-beta.2 (2026-04-12)
361
-
362
- ### Fix: CLI `init` output
363
-
364
- - Mensagem "Next steps" do `npx spec-first-copilot init` apontava pro `/sf-new-project` removido no v3
365
- - Agora aponta pro `/sf-start <folder-name>` + nota que framework detecta first-run automaticamente
366
- - sfw.config.yml.example marcado como opcional (projeto funciona 100% local)
367
-
368
- ---
369
-
370
- ## 0.6.0-beta.1 (2026-04-12) Redesign v3 (BREAKING)
371
-
372
- Redesign estrutural eliminando o TRD e unificando o pipeline em uma skill única.
373
- Ver `planodetarefas.md §10` (no repo SFW) pra racional completo e 9 decisões arquiteturais.
374
-
375
- ### Breaking
376
-
377
- - **TRD eliminado** template `TRD.template.md` removido; conteúdo técnico agora vive no SDD §Sistema (novas subseções 3.1-3.7) e é sintetizado em `docs/` cross-feature
378
- - **`/sf-new-project` + `/sf-feature` → `/sf-start <nome>`** — entrada única. Detecta automaticamente:
379
- - `docs/` ausente first_run (bootstrap: popula SDD §Sistema completo + cria docs/ + projetos.yaml)
380
- - `docs/` existe → feature (popula §Área-X tocadas + §11 Delta Specs)
381
- - **`/sf-merge-delta` `/sf-merge-docs`** nome alinhado ao outcome. "Delta Specs" continua como conceito no SDD §11
382
- - **PRD empty-allowed** — scopes puro-técnicos marcam `empty: true` em vez de forçar PRD vazio
383
- - **SDD template reorganizado** §Sistema (baseline técnico) + §Área-Backend/Frontend/DB/Infra gateáveis por scope
384
- - **docs/ = síntese cross-feature** (não projeção) — estável, referencia SDDs quando precisa detalhe
385
- - **Checklist de temas críticos FIXO** — 8 temas unificados (antes era split TRD/PRD). Analyzer consulta `docs/` antes de marcar ambiguidade
386
- - **Skills: 12 → 11** — `sf-new-project`, `sf-feature`, `sf-merge-delta` removidas; `sf-start`, `sf-merge-docs` adicionadas
387
-
388
- ### Migração
389
-
390
- Projetos em `0.5.0-beta.X` precisam:
391
-
392
- 1. Rodar `npx spec-first-copilot update` (atualiza .github/, CHANGELOG, templates)
393
- 2. Se tiver `.context.md` com `tipo: feature|setup` ou `documento: PRD|TRD`: migrar pra schema v3:
394
- ```yaml
395
- first_run: true|false # true se docs/ não existia quando bootstrap rodou
396
- prd_empty: false # true se TRD existia mas PRD não (raro)
397
- areas_tocadas: [BACK, DB] # derivar do SDD existente
398
- ```
399
- 3. Se tiver `TRD.md` em `workspace/Output/{scope}/`: manter como referência histórica ou deletar
400
- 4. Rodar `/sf-merge-docs <scope>` manualmente pra features que estavam em `dev_done` (aplica §11 em `docs/`)
401
-
402
- ### Novo fluxo (v3)
403
-
404
- ```
405
- /sf-start <nome>
406
- /sf-load (se sfw.config.yml)
407
- /sf-discovery (opcional)
408
- /sf-extractPRD.md (pode ser empty) + .extract-log.md com tech chunks
409
- checkpoint
410
- /sf-design SDD (§Sistema + §Área-X) + specs/{nome}/
411
- first_run: cria docs/ + projetos.yaml
412
- feature: §11 Delta Specs pro /sf-merge-docs
413
- /sf-planspecs/{nome}/tasks.md + Progresso.md
414
- /sf-dev → código + Security Review + /sf-merge-docs automático
415
- ```
416
-
417
- ### Templates atualizados
418
-
419
- - `PRD.template.md` campo `empty` no Meta; rodapé pra caso empty
420
- - `sdd.template.md` 552 linhas, §Sistema + §Área-X gateáveis + §12 Ambiguidades com "Consultei docs/?"
421
- - `context.template.md` — schema v3 (`first_run`, `prd_empty`, `areas_tocadas`)
422
- - 5 templates em `estrutura/` papel de síntese cross-feature, origem SDD §Sistema
423
- - `backlog-extraido.template.md` scope agnóstico, sugere `/sf-start <nome>` pra promover items
424
-
425
- ### Arquivos removidos
426
-
427
- - `.github/templates/feature/TRD.template.md`
428
- - `.github/skills/sf-new-project/`, `sf-feature/`, `sf-merge-delta/`
429
-
430
- ---
431
-
432
- ## 0.5.0-beta.7 (2026-04-12)
433
-
434
- ### Novo: Comando `/sf-load <nome>`
435
- Puxa insumos do backend configurado (Confluence ou filesystem) para `workspace/Input/{nome}/`.
436
- - Busca o scope pelo nome no backend (match exato)
437
- - Desce recursivamente na árvore (Confluence `get_page_children` é apenas direto — `/sf-load` faz loop)
438
- - Baixa conteúdo + attachments
439
- - Log incremental em `.ai/sf-load-log.md` (NOVO/MODIFICADO/INALTERADO via sha256)
440
- - Idempotente rodar N vezes sem mudanças no backend não altera nada
441
- - Referência: `.github/commands/sf-load.md`
442
-
443
- ### Novo: Adapter layer (Confluence + Filesystem)
444
- Pipeline agora é backend-agnóstico via adapters plugáveis.
445
- - **ConfluenceAdapter** — fala com Confluence via MCP `sooperset/mcp-atlassian`
446
- - **FilesystemAdapter**lê/escreve direto no disco (também serve como mock pra testes)
447
- - Configurado em `sfw.config.yml` (copiar de `sfw.config.yml.example`)
448
- - Interface: `.github/adapters/interface.md` (7 métodos)
449
- - Erros tipados: `.github/adapters/errors.md` (6 classes)
450
- - Naming engine: `.github/adapters/naming.md` (placeholders `{scope}`, `{type}`)
451
- - Registry: `.github/adapters/registry.md`
452
- - Setup guide: `.github/adapters/SETUP.md` (passo a passo de MCP + Confluence)
453
-
454
- ### Novo: `sfw.config.yml`
455
- Manifesto do projeto que define de onde vêm e pra onde vão os artefatos.
456
- - `input.adapter` — de onde puxar insumos (`confluence` ou `filesystem`)
457
- - `output.targets[].mode` — ligar/desligar publish (`auto`, `manual`, `off`)
458
- - `naming.output_container` — template do nome da subpasta no Output (ex: `out_{scope}`)
459
- - `naming.output_artifact` — template do nome do artefato (ex: `{scope} - {type}`)
460
- - Copiar `sfw.config.yml.example` e preencher. Zero segredos neste arquivo.
461
-
462
- ### Novo: `SETUP.md` Guia de configuração
463
- Guia passo a passo em `.github/adapters/SETUP.md`:
464
- - Setup Confluence: uvx, .mcp.json, token Atlassian, space key, page IDs
465
- - Setup 100% local (filesystem, zero dependências)
466
- - Como ligar/desligar Confluence via `mode: auto|manual|off`
467
- - Troubleshooting: tabela com todos os gotchas conhecidos
468
- - **IMPORTANTE**: Confluence NÃO é CLI. Acesso via MCP tools prefixadas `mcp__atlassian__confluence_*`
469
-
470
- ### Novo: CLI `update`
471
- ```bash
472
- npx spec-first-copilot update # adiciona novos, atualiza framework
473
- npx spec-first-copilot update --force # sobrescreve tudo incluindo copilot-instructions.md
474
- ```
475
- Atualiza projeto existente sem perder arquivos do usuário.
476
-
477
- ### Breaking: `/sf-setup-projeto` `/sf-new-project <nome>`
478
- - Antes: `/sf-setup-projeto` era hardcoded pra pasta `setup_projeto`
479
- - Agora: `/sf-new-project <nome>` recebe o nome como argumento (simétrico com `/sf-feature <nome>`)
480
- - `/sf-new-project` gera TRD (bootstrap técnico), `/sf-feature` gera PRD (feature)
481
- - **Não existe mais pasta mágica** — usuário nomeia livremente em `workspace/Input/`
482
- - O antigo `setup-projeto.md` foi removido. Usar `new-project.md`
483
-
484
- ### Breaking: `{sequence}` removido
485
- - Antes: todo item tinha prefixo numérico `001 - ` pra unicidade no Confluence
486
- - Agora: usuário nomeia livremente, agent segue o nome do Input
487
- - Naming simplificado: só `{scope}` e `{type}` como placeholders
488
- - Premissa: 1 space Confluence = 1 projeto (multi-projeto no mesmo space requer nomes únicos no Input)
489
-
490
- ### Breaking: Output agrupado por scope
491
- - Antes: artefatos flat no Output (ex: `001 - TRD setup_projeto`)
492
- - Agora: subpasta por scope (ex: `out_app_barbearia/app_barbearia - TRD`)
493
- - Container configurável via `naming.output_container` (default: `out_{scope}`)
494
- - Artifact configurável via `naming.output_artifact` (default: `{scope} - {type}`)
495
-
496
- ---
497
-
498
- ## 0.5.0-beta.2 (2026-04-11)
499
-
500
- ### Refactor: `docs/specs/` `specs/` (top-level)
501
- - Projeções do SDD (brief, contracts, scenarios, tasks) movidas pra raiz
502
- - Regra: humano `workspace/Output/`, agent `specs/`
503
-
504
- ### Refactor: 3-zone separation
505
- - `.github/` = AI config (rules, templates, commands, agents)
506
- - `docs/` = system knowledge (5 docs de sistema)
507
- - `workspace/` = team content (Input/ + Output/)
508
-
509
- ---
510
-
511
- ## 0.4.0 (2026-04-10) — v1 stable
512
-
513
- ### Funcionalidades base
514
- - 9 commands: setup-projeto, feature, discovery, extract, design, plan, dev, merge-delta, session-finish
515
- - 7 agents: backend-coder, frontend-coder, db-coder, infra-coder, doc-writer, reviewer, security-reviewer
516
- - Templates: PRD, TRD, SDD, tasks, Progresso, context, extract-log, backlog, projetos.yaml
517
- - Templates de estrutura: architecture, domain, conventions, apiContracts, decisions
518
- - Pipeline: extract design plan dev com checkpoints de aprovação
519
- - Delta Specs (SDD §11) + merge-delta automático
520
- - Security Reviewer como gate pós-dev
521
- - Multi-repo via projetos.yaml
522
- - Entregáveis contínuos (fases de entrega)
523
-
524
- ---
525
-
526
- ## Como usar este arquivo
527
-
528
- Se o usuário perguntar:
529
- - **"O que tem de novo?"** ler a versão mais recente acima
530
- - **"Como uso o /sf-load?"** → apontar pra `.github/commands/sf-load.md`
531
- - **"Como configuro Confluence?"** → apontar pra `.github/adapters/SETUP.md`
532
- - **"O que é adapter?"** apontar pra `.github/adapters/interface.md`
533
- - **"O que mudou de setup-projeto?"** seção "Breaking" do 0.5.0-beta.7
1
+ # SFW Changelog — spec-first-copilot
2
+
3
+ > Este arquivo é atualizado automaticamente pelo `spec-first-copilot update`.
4
+ > O agent deve ler este arquivo quando o usuário perguntar sobre mudanças,
5
+ > funcionalidades novas, ou o que está disponível no framework.
6
+ >
7
+ > **Não editar manualmente** — será sobrescrito no próximo update.
8
+
9
+ ---
10
+
11
+ ## 0.7.0 (2026-04-14) — Redesign v4 estável
12
+
13
+ Promoção de `0.7.0-beta.1` para versão estável. Inclui fix crítico:
14
+ purga de referências SDD residuais que sobreviveram ao beta (incluindo
15
+ whitelist do `/sf-publish`, que silenciosamente pulava TRD).
16
+
17
+ ### Fix — limpeza de resíduos v3
18
+
19
+ Varredura de 23 arquivos no projeto:
20
+ - `sfw.config.yml.example`: `publishes: [PRD, SDD, Progresso]` `[PRD, TRD, Progresso]` (bug runtime)
21
+ - `adapters/registry.md` e `naming.md`: refs a SDD como tipo válido → TRD
22
+ - `rules.md`: regras invioláveis 1-4 reescritas ("SDD aprovado" → "PRD/TRD aprovados + specs/")
23
+ - Templates de `estrutura/` (architecture, domain, conventions, apiContracts, decisions):
24
+ mapeamento completo SDD §X TRD §Y nas instruções de ORIGEM/ATUALIZAÇÃO
25
+ - Templates de `feature/` (Progresso, projetos.yaml): refs SDD §3.2 TRD §1.2, etc.
26
+ - `progresso_global.template.md`: legenda de status reescrita com fluxo v4 completo
27
+ - `docs.instructions.md`: reescrito integralmente para v4
28
+ - `sensitive-files.instructions.md`: `sdd.md` `TRD.md`
29
+ - `copilot-instructions.md`: refs `sdd.md` `TRD.md`
30
+ - `.ai/memory/napkin.md` (template): princípios invioláveis atualizados
31
+ - READMEs dos 2 packages: narrativa + estrutura + diagrama v4
32
+
33
+ Refs legítimas mantidas: CHANGELOGs (histórico), `doc-writer.md` e
34
+ `sf-merge-docs/SKILL.md` (explicam a migração v3→v4).
35
+
36
+ ---
37
+
38
+ ## 0.7.0-beta.1 (2026-04-13) — Redesign v4 (BREAKING)
39
+
40
+ Reestruturação arquitetural baseada em feedback de uso real do v3. TRD ressuscitado
41
+ como peer do PRD, SDD eliminado, aprovação por persona. Pipeline continua unificado
42
+ via `/sf-start`.
43
+
44
+ ### Breaking
45
+
46
+ - **TRD ressuscitado** — peer do PRD, aprovado pelo dev. Não é o TRD antigo
47
+ transiente: agora tem papel próprio (source técnica autoritativa).
48
+ - **SDD eliminado** — camada intermediária desnecessária quando PRD+TRD são bem
49
+ estruturados. `specs/{nome}/` deriva direto de PRD+TRD. `docs/` atualizado via
50
+ `/sf-merge-docs` a partir de PRD+TRD.
51
+ - **Aprovação por persona** PM aprova PRD (`prd_aprovado: true`), dev aprova TRD
52
+ (`trd_aprovado: true`). Flags no `.context.md`. Em time pequeno, user faz as 2
53
+ aprovaçõesnão pula.
54
+ - **Discovery obrigatório** — `/sf-discovery` deixou de ser skill opcional e virou
55
+ passo obrigatório dentro do `/sf-start`. Força entendimento antes da extração.
56
+ - **PRD `empty` removido** — conceito obsoleto. Agora: scope puro-técnico tem
57
+ `prd_existe=false`; scope puro-produto tem `trd_existe=false`. Maioria tem ambos.
58
+ - **backlog_extraido.md eliminado** features futuras viram itens em PRD §11
59
+ Fora de Escopo com sugestão de `/sf-start <nome>` próprio.
60
+ - **Schema do `.context.md` mudou**: `prd_empty` → `prd_existe` + `prd_aprovado`;
61
+ adicionado `trd_existe` + `trd_aprovado`. Status fluxo tem novos estados:
62
+ `discovery_done → extract_done → prd_approved → trd_approved → design_done`.
63
+
64
+ ### Templates
65
+
66
+ - `TRD.template.md` novo — 11 seções, organizado por área (§Sistema + §Área-X)
67
+ - `PRD.template.md` refatorado 13 seções puro-produto, sem conteúdo técnico
68
+ - `sdd.template.md` deletado
69
+ - `backlog-extraido.template.md` deletado
70
+ - `context.template.md` schema v4
71
+ - `extract-log.template.md` sem categorização "produto/tech" (obsoleta)
72
+ - `specs/*.template.md` com ORIGEM atualizada: PRD+TRD em vez de SDD
73
+
74
+ ### Skills
75
+
76
+ - `/sf-start` — 2 aprovações + discovery obrigatório
77
+ - `/sf-extract` — gera PRD e/ou TRD conforme conteúdo dos insumos (Reader + Produto-Analyzer + Tech-Analyzer)
78
+ - `/sf-design` consome PRD+TRD aprovados, gera docs/ (first-run) + specs/
79
+ - `/sf-merge-docs` — diff semântico PRD+TRD ↔ docs/ (agente Integrator promovido pra Opus)
80
+ - `/sf-plan` entrada PRD+TRD+specs/, tasks com `Ref TRD` em vez de `Ref SDD`
81
+ - `/sf-publish` — adicionado TRD à whitelist; SDD removido
82
+
83
+ ### Agents
84
+
85
+ - Doc Writer reescrito: fonte muda de "SDD §Sistema" para "PRD + TRD"
86
+ - Coders (backend/frontend/db/infra) e Reviewers: refs de "SDD §X" → "TRD §X" ou "specs/{nome}/"
87
+
88
+ ### Migração de v3 (0.6.x) pra v4
89
+
90
+ ```bash
91
+ # 1. Atualizar kit
92
+ npx spec-first-copilot@beta update
93
+
94
+ # 2. Para cada scope em andamento: migrar .context.md
95
+ # - Remover `prd_empty`
96
+ # - Adicionar `prd_existe`, `trd_existe`, `prd_aprovado`, `trd_aprovado`
97
+ # - Se scope tem SDD: extrair conteúdo técnico pra TRD.md manual
98
+
99
+ # 3. SDDs antigos em workspace/Output/{nome}/sdd.md ficam como legado
100
+ # (nenhum skill v4 eles). Deletar quando confortável.
101
+ ```
102
+
103
+ ### Versionamento
104
+
105
+ - Bump **minor** (0.6 → 0.7) pelo breaking. v3 (`0.6.0-beta.10`) permanece no npm
106
+ como histórico.
107
+ - Publicado com tag `beta`. Promoção para `latest` apenas após validação em uso real.
108
+
109
+ ---
110
+
111
+ ## 0.6.0-beta.10 (2026-04-13)
112
+
113
+ ### `bootstrap-confluence.js` agora é idempotente
114
+
115
+ Script agora `.mcp.json` existente e reusa valores da entry `atlassian` em
116
+ vez de perguntar tudo de novo:
117
+
118
+ - Se `CONFLUENCE_URL` já existe: mostra URL atual, pergunta "Manter? [S/n]"
119
+ - Se `CONFLUENCE_USERNAME` existe: mostra email atual, pergunta "Manter? [S/n]"
120
+ - Se `CONFLUENCE_API_TOKEN` já existe: mostra token mascarado (`abcd…wxyz`), pergunta "Manter? [S/n]"
121
+ - Default ENTER = manter. Responder `n` abre o prompt completo da informação.
122
+
123
+ Se todos os 3 campos foram mantidos: detecta que nada mudou e **não reescreve**
124
+ `.mcp.json` (evita dirty git). Se mudou algo: reescreve preservando outras
125
+ entries MCP (Supabase, GitHub, etc.).
126
+
127
+ Útil pra: reexecução após novo rebuild do MCP, rotação apenas do token, debug
128
+ de setup sem perder credenciais válidas.
129
+
130
+ ---
131
+
132
+ ## 0.6.0-beta.9 (2026-04-13)
133
+
134
+ ### CLI em pt-BR + dica de bootstrap-confluence no init
135
+
136
+ Mensagens do CLI (`init` e `update`) traduzidas para pt-BR — usuário final é o público.
137
+
138
+ Mensagem do `init` reescrita para deixar **explícito o passo opcional de pré-setup
139
+ do Confluence**:
140
+
141
+ ```
142
+ Pronto! Projeto "X" criado.
143
+
144
+ Próximos passos:
145
+ 1. cd X
146
+ 2. Crie uma pasta em workspace/Input/ com os insumos do seu projeto
147
+ 3. (Opcional) Configure o backend de input/output:
148
+ cp sfw.config.yml.example sfw.config.yml
149
+ 4. (Opcional, se vai usar Confluence) Prepare o ambiente ANTES de abrir o VS Code:
150
+ node .github/scripts/bootstrap-confluence.js
151
+ 5. Abra o VS Code com Copilot Chat e rode: /sf-start <nome-da-pasta>
152
+ ```
153
+
154
+ O passo 4 era invisível antes — só aparecia inline na "Dica" do skill `/sf-mcp`.
155
+ Agora aparece logo no fim do `init`, no momento exato em que o usuário vai decidir
156
+ se prepara o Confluence ou não.
157
+
158
+ ---
159
+
160
+ ## 0.6.0-beta.8 (2026-04-13)
161
+
162
+ ### Novo: `bootstrap-confluence.js` (opcional, pré-Copilot)
163
+
164
+ Script Node cross-platform em `.github/scripts/bootstrap-confluence.js` que prepara
165
+ o ambiente para o backend Confluence **antes** de abrir o VS Code com Copilot. Evita
166
+ o ciclo "abrir Copilot → descobrir que falta `uvx` ou credenciais → sair, ajustar,
167
+ reiniciar".
168
+
169
+ O que faz:
170
+ 1. Valida `uvx` instalado (orienta install se faltar não instala automaticamente)
171
+ 2. Coleta URL do Confluence, email Atlassian e API Token (com link pra gerar o token)
172
+ 3. Gera/mescla `.mcp.json` preservando outras entries de MCP existentes
173
+ 4. Garante `.mcp.json` no `.gitignore`
174
+ 5. Pré-cacheia o pacote `mcp-atlassian` via `uvx` (100+ deps no primeiro uso)
175
+
176
+ Depois é só abrir o VS Code e rodar `/sf-mcp confluence` — vai direto pra descoberta
177
+ da árvore no Confluence, sem reiniciar.
178
+
179
+ Uso: `node .github/scripts/bootstrap-confluence.js`
180
+ Opcional — `/sf-mcp confluence` sozinho também cobre esses passos, mas exige reiniciar
181
+ VS Code após criar `.mcp.json`.
182
+
183
+ Skill `/sf-mcp` ganhou nota referenciando o script como atalho recomendado.
184
+
185
+ ### Primeira release sincronizada automaticamente
186
+
187
+ Primeira release onde o conteúdo compartilhado entre kits veio direto do script
188
+ `npm run sync-kits` no repo SFW — sem cópia manual. Zero drift entre Claude e Copilot
189
+ validado antes do publish.
190
+
191
+ ---
192
+
193
+ ## 0.6.0-beta.7 (2026-04-13)
194
+
195
+ ### Fix: 27 referências a slash-commands faltando prefix `sf-`
196
+
197
+ Ao sincronizar os templates refinados entre os kits (nas releases `beta.5`/`beta.6`),
198
+ cópias manuais deixaram referências estilo `/design`, `/extract`, `/plan` nos
199
+ arquivos do kit Copilot deveriam ser `/sf-design`, `/sf-extract`, `/sf-plan`.
200
+
201
+ Corrigido em 27 arquivos: `rules.md`, 2 agents (infra-coder, security-reviewer),
202
+ 7 adapters, 5 docs/estrutura templates, 7 feature templates, 4 specs templates e
203
+ progresso_global.
204
+
205
+ **Impacto**: usuários Copilot que rodaram `init` em `beta.6` devem rodar
206
+ `npx spec-first-copilot update` para aplicar a correção nos templates.
207
+
208
+ ### Script de sync entre kits (interno)
209
+
210
+ Drift detectado pelo novo `scripts/sync-kits.js` — ferramenta no repo SFW que
211
+ mantém os 2 kits alinhados automaticamente. Fluxo passa a ser: editar em
212
+ `spec-first-claude`, rodar `npm run sync-kits`, commit dos 2 juntos.
213
+
214
+ ---
215
+
216
+ ## 0.6.0-beta.6 (2026-04-13)
217
+
218
+ ### Fixes detectados no smoke test de `beta.5`
219
+
220
+ Rodamos o pipeline completo (`/sf-start → /sf-extract → /sf-design → /sf-plan`) em
221
+ projeto novo com feature simples (todo app backend) e detectamos 6 inconsistências
222
+ entre skills e templates. Todas corrigidas:
223
+
224
+ **1. PRD §14 coluna "Resolvido em docs/" adicionada**
225
+
226
+ Skill `/sf-extract` (beta.5) descreveu mecanismo do Analyzer marcar ambiguidades
227
+ como "resolvido em docs/X §Y", mas o template do PRD não tinha coluna para isso.
228
+ Agora a tabela de §14 tem 6 colunas: `ID | Pergunta | Contexto | Fonte | Resposta | Resolvido em docs/`.
229
+
230
+ **2. PRD §14 renomeada "Resposta do usuário" → "Resposta"**
231
+
232
+ Skill `/sf-extract` fala em preencher "coluna `Resposta`" mas o template tinha
233
+ "Resposta do usuário". Alinhado com o skill. Também adicionado ID padronizado
234
+ `AMB-NNN` na primeira coluna (antes era só `#`).
235
+
236
+ **3. PRD §14 e SDD §12 padronizados**
237
+
238
+ SDD §12 Ambiguidades também passou a usar ID `AMB-NNN` continuando a sequência
239
+ do PRD §14. Texto do bloqueio do SDD corrigido: não é o `/sf-design` que bloqueia
240
+ no §12 (ele já gerou), é o `/sf-plan` (que lê o SDD como input).
241
+
242
+ **4. Status do Progresso.md clarificado**
243
+
244
+ `Status Geral` do Progresso.md era confundido com o status da pipeline em
245
+ `.context.md`. Renomeado para `Status das Fases` + bloco explicativo deixando
246
+ claro que **este arquivo rastreia fases de entrega do PRD §11, não o pipeline**.
247
+
248
+ **5. Bool tipado corretamente no `.context.md`**
249
+
250
+ Antes: `first_run: "{{true|false}}"` (string com aspas). Depois: `first_run: {{true|false}}`
251
+ (bool YAML real). Instruções do template reforçam: "SEM aspas".
252
+
253
+ **6. `projetos.yaml` sem stack hardcoded**
254
+
255
+ Template tinha `stack: ".NET 8"` literal no exemplo `api`. Podia induzir projetos
256
+ Node/Python a errar. Agora usa `{{STACK_BACKEND}}` como placeholder + bloco
257
+ explicativo listando exemplos por stack (Backend/Frontend/Mobile) como referência.
258
+ Instruções reforçam: "stack DEVE vir do SDD §3.1".
259
+
260
+ ### Extras
261
+
262
+ **SDD template com guidance sobre escopo pequeno**
263
+
264
+ Adicionado bloco no topo do template explicando que 3-4 seções preenchidas + o
265
+ resto como "N/A" é comportamento esperado para apps simples não inflar conteúdo
266
+ pra "preencher" seções vazias. Áreas não tocadas (§4-§7) usam `GATE: NÃO`.
267
+
268
+ ---
269
+
270
+ ## 0.6.0-beta.5 (2026-04-13)
271
+
272
+ ### Refino dos templates de specs/
273
+
274
+ Templates de projeção do SDD (`specs/{scope}/`) refinados com padrões consolidados de BDD/contract-first. Dois passos de refino fizeram parte desta release.
275
+
276
+ **`scenarios.template.md`** — mudanças:
277
+ - Seção "Fluxos de Erro e Edge Cases" separada do happy path com coluna "Ref CA" (antes ficavam perdidos e soltos)
278
+ - Seção "Pré-condições Globais" no topo (setup do contexto que aplica a todos os cenários)
279
+ - Campo "Pré-condição" em cada CA (estado adicional específico daquele CA — não repete as globais)
280
+ - Tabela de fluxos com colunas Ator/Ação/Resultado em vez de texto linear
281
+ - UI/Componentes: orientação explícita para features backend-only ("N/A backend-only")
282
+ - Estratégia de testes: coluna "Responsável" (em vez de "Quem dispara"), sem redefinir frameworks (referencia docs/)
283
+ - Bloco de terminologia explica diferença entre Pré-condições Globais vs Pré-condição do CA
284
+
285
+ **`contracts.template.md`** mudanças:
286
+ - Separação explícita em **3 camadas**: Dados (schema do banco) → Validações de Entrada (formato/tipo do request) → Regras de Negócio (invariantes do domínio)
287
+ - "Validações de Entrada" virou seção top-level (antes estava enfiada dentro de Dados)
288
+ - Dados: subseção "Alterações em tabelas existentes" (ADD/ALTER/DROP COLUMN) antes só tinha formato para tabela nova
289
+ - API: erros têm coluna "Código de domínio" (linkado às RN)
290
+ - Instrução explícita para não duplicar convenções globais de docs/apiContracts.md
291
+
292
+ **`tasks.template.md`** mudanças:
293
+ - Padronização de áreas: `DB` (antes inconsistente com `BANCO`)
294
+ - Coluna "Ref SDD" (obrigatória) adicionada — rastreabilidade ao documento fonte para tasks sem CA (INFRA/DOC)
295
+ - Coluna "Ref CA" agora é opcional
296
+ - Seção "Done When" com placeholder real (antes tinha exemplo em comentário)
297
+ - Removida seção "Regras por área" (era estática, contradiz áreas dinâmicas)
298
+ - Removida seção "Convenções desta feature" (dumping ground convenções pertencem ao SDD ou docs/)
299
+ - Instrução explícita: bootstrap/first-run → toda task na Fase 1
300
+
301
+ **`brief.template.md`** — mudanças:
302
+ - Nova seção "Serviços tocados" (quais repos de projetos.yaml esta feature modifica + áreas)
303
+
304
+ ### Padronização de nome de área: `BANCO` `DB`
305
+
306
+ Inconsistência detectada entre commands/agents/templates: alguns usavam `BANCO` (português),
307
+ outros usavam `DB`. Padronizado para **`DB`** (alinhado com nome do agente `db-coder.md` e
308
+ com `skills/sf-design/SKILL.md`). 14 arquivos atualizados:
309
+
310
+ - `.github/agents/db-coder.md`
311
+ - `.github/skills/sf-dev/SKILL.md` (tabela de agents + seletor por prefixo)
312
+ - `.github/skills/sf-plan/SKILL.md` (mapeamento SDD → área + exemplo)
313
+ - `.github/rules.md` (exemplo de quality gate)
314
+ - `.github/templates/feature/projetos.template.yaml` (mapeamento de áreas)
315
+ - `.github/templates/feature/Progresso.template.md` (ordem de execução)
316
+ - `.github/templates/global/progresso_global.template.md` (exemplo)
317
+
318
+ **Breaking**: IDs de task geradas anteriormente com prefixo `BANCO-*` continuam válidas (IDs
319
+ estáveis, não renomear). Novas features geram `DB-*`.
320
+
321
+ ### `/sf-discovery` declara modelo Opus
322
+
323
+ Skill não tinha declaração explícita de modelo — rodava com o default da sessão. Descrição
324
+ do skill ("arquiteto senior com mentalidade de consultor crítico... análises profundas e
325
+ honestas") é trabalho Opus. Adicionado bloco **"Agente: Discovery Analyst (Opus)"** no topo.
326
+
327
+ ### Doc gap: como responder ambiguidades do PRD §14
328
+
329
+ Skill `/sf-extract` ganhou seção dedicada **"Como responder ambiguidades"** com fluxo
330
+ passo a passo (caminho oficial: editar coluna `Resposta` direto no PRD §14 e re-rodar
331
+ `/sf-design`). Skill `/sf-design` agora exibe instrução completa de retomada quando
332
+ bloqueia por ambiguidades pendentes, em vez de "pedir resposta".
333
+
334
+ Caminho alternativo (adicionar `ajustes_v1.md` em Input + re-rodar `/sf-extract`) está
335
+ documentado como exceção para mudanças estruturais.
336
+
337
+ ---
338
+
339
+ ## 0.6.0-beta.4 (2026-04-13)
340
+
341
+ ### UX: `/sf-mcp confluence` self-contained pra usuário leigo
342
+
343
+ Perguntas do skill agora mostram EXATAMENTE onde achar cada informação inline,
344
+ sem depender de consulta externa ao SETUP.md:
345
+
346
+ - **URL do Confluence**: "abra no browser, copie URL base com /wiki"
347
+ - **API Token**: 4 sub-passos numerados (URL Atlassian, Create button, nome, copiar antes que suma)
348
+ - **Space Key**: mostra URL pattern `/wiki/spaces/XXX/` com seta + exemplos ("ST", "DEV", "PROJ")
349
+ - **Root Page ID**: 2 opções (A: Page ID com URL pattern `/pages/NNNN/`, B: título exato com aviso de match)
350
+
351
+ Qualquer modelo / usuário leigo consegue responder sem ficar travado.
352
+
353
+ ---
354
+
355
+ ## 0.6.0-beta.3 (2026-04-13)
356
+
357
+ ### Fix: `/sf-mcp confluence` idempotente com `root_page_id` como âncora
358
+
359
+ Antes a skill era linear e podia pular a coleta do Page ID raiz do projeto depois de
360
+ um restart (caso user tivesse que reiniciar o Claude após criar `.mcp.json`), resultando
361
+ em `sfw.config.yml` sem `project.root_page_id` — framework ficava sem âncora.
362
+
363
+ Novo fluxo:
364
+ 1. Detecta estado de `sfw.config.yml` (tem root_page_id?) + `.mcp.json` (tem credenciais?)
365
+ 2. Se AMBOS existem testa conexão e reconfirma Input/Output
366
+ 3. Se algo falta pede o que falta (idempotente)
367
+ 4. `root_page_id` validado contra `get_page(id)` antes de mapear árvore
368
+ 5. Handler explícito pra 401 (credencial expirou) e 404 (root inválido)
369
+
370
+ ### Fix: Auto-publish imperativo em `/sf-extract`, `/sf-design`, `/sf-plan`
371
+
372
+ Antes a instrução era "Se `sfw.config.yml` com output.targets[] ativo: Executar /sf-publish"
373
+ ambígua, agent podia interpretar como opcional e pular.
374
+
375
+ Agora:
376
+ - Instrução imperativa: "Se `sfw.config.yml` existe → Chamar `/sf-publish`. Execute."
377
+ - Cada skill adiciona **seção "Saída obrigatória"** reportando status do publish
378
+ (CREATED/UPDATED/SKIPPED/CONFLICT/ERROR) ou "SKIPPED (no sfw.config.yml)"
379
+ - User explicitamente o que aconteceu no Confluence
380
+
381
+ ### Fix: `publishes: [PRD, PRD, SDD, Progresso]` `[PRD, SDD, Progresso]`
382
+
383
+ Resquício do rename `TRD PRD` na seção de template do `/sf-mcp confluence`. Agora gera yaml correto.
384
+
385
+ ---
386
+
387
+ ## 0.6.0-beta.2 (2026-04-12)
388
+
389
+ ### Fix: CLI `init` output
390
+
391
+ - Mensagem "Next steps" do `npx spec-first-copilot init` apontava pro `/sf-new-project` removido no v3
392
+ - Agora aponta pro `/sf-start <folder-name>` + nota que framework detecta first-run automaticamente
393
+ - sfw.config.yml.example marcado como opcional (projeto funciona 100% local)
394
+
395
+ ---
396
+
397
+ ## 0.6.0-beta.1 (2026-04-12) Redesign v3 (BREAKING)
398
+
399
+ Redesign estrutural eliminando o TRD e unificando o pipeline em uma skill única.
400
+ Ver `planodetarefas.md §10` (no repo SFW) pra racional completo e 9 decisões arquiteturais.
401
+
402
+ ### Breaking
403
+
404
+ - **TRD eliminado** — template `TRD.template.md` removido; conteúdo técnico agora vive no SDD §Sistema (novas subseções 3.1-3.7) e é sintetizado em `docs/` cross-feature
405
+ - **`/sf-new-project` + `/sf-feature` → `/sf-start <nome>`** — entrada única. Detecta automaticamente:
406
+ - `docs/` ausente first_run (bootstrap: popula SDD §Sistema completo + cria docs/ + projetos.yaml)
407
+ - `docs/` existe feature (popula §Área-X tocadas + §11 Delta Specs)
408
+ - **`/sf-merge-delta``/sf-merge-docs`** nome alinhado ao outcome. "Delta Specs" continua como conceito no SDD §11
409
+ - **PRD empty-allowed** — scopes puro-técnicos marcam `empty: true` em vez de forçar PRD vazio
410
+ - **SDD template reorganizado** — §Sistema (baseline técnico) + §Área-Backend/Frontend/DB/Infra gateáveis por scope
411
+ - **docs/ = síntese cross-feature** (não projeção) — estável, referencia SDDs quando precisa detalhe
412
+ - **Checklist de temas críticos FIXO** — 8 temas unificados (antes era split TRD/PRD). Analyzer consulta `docs/` antes de marcar ambiguidade
413
+ - **Skills: 12 11** `sf-new-project`, `sf-feature`, `sf-merge-delta` removidas; `sf-start`, `sf-merge-docs` adicionadas
414
+
415
+ ### Migração
416
+
417
+ Projetos em `0.5.0-beta.X` precisam:
418
+
419
+ 1. Rodar `npx spec-first-copilot update` (atualiza .github/, CHANGELOG, templates)
420
+ 2. Se tiver `.context.md` com `tipo: feature|setup` ou `documento: PRD|TRD`: migrar pra schema v3:
421
+ ```yaml
422
+ first_run: true|false # true se docs/ não existia quando bootstrap rodou
423
+ prd_empty: false # true se TRD existia mas PRD não (raro)
424
+ areas_tocadas: [BACK, DB] # derivar do SDD existente
425
+ ```
426
+ 3. Se tiver `TRD.md` em `workspace/Output/{scope}/`: manter como referência histórica ou deletar
427
+ 4. Rodar `/sf-merge-docs <scope>` manualmente pra features que estavam em `dev_done` (aplica §11 em `docs/`)
428
+
429
+ ### Novo fluxo (v3)
430
+
431
+ ```
432
+ /sf-start <nome>
433
+ → /sf-load (se sfw.config.yml)
434
+ /sf-discovery (opcional)
435
+ /sf-extract PRD.md (pode ser empty) + .extract-log.md com tech chunks
436
+ checkpoint
437
+ /sf-design SDD (§Sistema + §Área-X) + specs/{nome}/
438
+ first_run: cria docs/ + projetos.yaml
439
+ feature: §11 Delta Specs pro /sf-merge-docs
440
+ /sf-plan specs/{nome}/tasks.md + Progresso.md
441
+ /sf-dev código + Security Review + /sf-merge-docs automático
442
+ ```
443
+
444
+ ### Templates atualizados
445
+
446
+ - `PRD.template.md`campo `empty` no Meta; rodapé pra caso empty
447
+ - `sdd.template.md` 552 linhas, §Sistema + §Área-X gateáveis + §12 Ambiguidades com "Consultei docs/?"
448
+ - `context.template.md` — schema v3 (`first_run`, `prd_empty`, `areas_tocadas`)
449
+ - 5 templates em `estrutura/` papel de síntese cross-feature, origem SDD §Sistema
450
+ - `backlog-extraido.template.md` scope agnóstico, sugere `/sf-start <nome>` pra promover items
451
+
452
+ ### Arquivos removidos
453
+
454
+ - `.github/templates/feature/TRD.template.md`
455
+ - `.github/skills/sf-new-project/`, `sf-feature/`, `sf-merge-delta/`
456
+
457
+ ---
458
+
459
+ ## 0.5.0-beta.7 (2026-04-12)
460
+
461
+ ### Novo: Comando `/sf-load <nome>`
462
+ Puxa insumos do backend configurado (Confluence ou filesystem) para `workspace/Input/{nome}/`.
463
+ - Busca o scope pelo nome no backend (match exato)
464
+ - Desce recursivamente na árvore (Confluence `get_page_children` é apenas direto `/sf-load` faz loop)
465
+ - Baixa conteúdo + attachments
466
+ - Log incremental em `.ai/sf-load-log.md` (NOVO/MODIFICADO/INALTERADO via sha256)
467
+ - Idempotente rodar N vezes sem mudanças no backend não altera nada
468
+ - Referência: `.github/commands/sf-load.md`
469
+
470
+ ### Novo: Adapter layer (Confluence + Filesystem)
471
+ Pipeline agora é backend-agnóstico via adapters plugáveis.
472
+ - **ConfluenceAdapter** fala com Confluence via MCP `sooperset/mcp-atlassian`
473
+ - **FilesystemAdapter** lê/escreve direto no disco (também serve como mock pra testes)
474
+ - Configurado em `sfw.config.yml` (copiar de `sfw.config.yml.example`)
475
+ - Interface: `.github/adapters/interface.md` (7 métodos)
476
+ - Erros tipados: `.github/adapters/errors.md` (6 classes)
477
+ - Naming engine: `.github/adapters/naming.md` (placeholders `{scope}`, `{type}`)
478
+ - Registry: `.github/adapters/registry.md`
479
+ - Setup guide: `.github/adapters/SETUP.md` (passo a passo de MCP + Confluence)
480
+
481
+ ### Novo: `sfw.config.yml`
482
+ Manifesto do projeto que define de onde vêm e pra onde vão os artefatos.
483
+ - `input.adapter` — de onde puxar insumos (`confluence` ou `filesystem`)
484
+ - `output.targets[].mode` — ligar/desligar publish (`auto`, `manual`, `off`)
485
+ - `naming.output_container` template do nome da subpasta no Output (ex: `out_{scope}`)
486
+ - `naming.output_artifact` template do nome do artefato (ex: `{scope} - {type}`)
487
+ - Copiar `sfw.config.yml.example` e preencher. Zero segredos neste arquivo.
488
+
489
+ ### Novo: `SETUP.md` — Guia de configuração
490
+ Guia passo a passo em `.github/adapters/SETUP.md`:
491
+ - Setup Confluence: uvx, .mcp.json, token Atlassian, space key, page IDs
492
+ - Setup 100% local (filesystem, zero dependências)
493
+ - Como ligar/desligar Confluence via `mode: auto|manual|off`
494
+ - Troubleshooting: tabela com todos os gotchas conhecidos
495
+ - **IMPORTANTE**: Confluence NÃO é CLI. Acesso via MCP tools prefixadas `mcp__atlassian__confluence_*`
496
+
497
+ ### Novo: CLI `update`
498
+ ```bash
499
+ npx spec-first-copilot update # adiciona novos, atualiza framework
500
+ npx spec-first-copilot update --force # sobrescreve tudo incluindo copilot-instructions.md
501
+ ```
502
+ Atualiza projeto existente sem perder arquivos do usuário.
503
+
504
+ ### Breaking: `/sf-setup-projeto` → `/sf-new-project <nome>`
505
+ - Antes: `/sf-setup-projeto` era hardcoded pra pasta `setup_projeto`
506
+ - Agora: `/sf-new-project <nome>` recebe o nome como argumento (simétrico com `/sf-feature <nome>`)
507
+ - `/sf-new-project` gera TRD (bootstrap técnico), `/sf-feature` gera PRD (feature)
508
+ - **Não existe mais pasta mágica** — usuário nomeia livremente em `workspace/Input/`
509
+ - O antigo `setup-projeto.md` foi removido. Usar `new-project.md`
510
+
511
+ ### Breaking: `{sequence}` removido
512
+ - Antes: todo item tinha prefixo numérico `001 - ` pra unicidade no Confluence
513
+ - Agora: usuário nomeia livremente, agent segue o nome do Input
514
+ - Naming simplificado: `{scope}` e `{type}` como placeholders
515
+ - Premissa: 1 space Confluence = 1 projeto (multi-projeto no mesmo space requer nomes únicos no Input)
516
+
517
+ ### Breaking: Output agrupado por scope
518
+ - Antes: artefatos flat no Output (ex: `001 - TRD setup_projeto`)
519
+ - Agora: subpasta por scope (ex: `out_app_barbearia/app_barbearia - TRD`)
520
+ - Container configurável via `naming.output_container` (default: `out_{scope}`)
521
+ - Artifact configurável via `naming.output_artifact` (default: `{scope} - {type}`)
522
+
523
+ ---
524
+
525
+ ## 0.5.0-beta.2 (2026-04-11)
526
+
527
+ ### Refactor: `docs/specs/` → `specs/` (top-level)
528
+ - Projeções do SDD (brief, contracts, scenarios, tasks) movidas pra raiz
529
+ - Regra: humano `workspace/Output/`, agent `specs/`
530
+
531
+ ### Refactor: 3-zone separation
532
+ - `.github/` = AI config (rules, templates, commands, agents)
533
+ - `docs/` = system knowledge (5 docs de sistema)
534
+ - `workspace/` = team content (Input/ + Output/)
535
+
536
+ ---
537
+
538
+ ## 0.4.0 (2026-04-10) — v1 stable
539
+
540
+ ### Funcionalidades base
541
+ - 9 commands: setup-projeto, feature, discovery, extract, design, plan, dev, merge-delta, session-finish
542
+ - 7 agents: backend-coder, frontend-coder, db-coder, infra-coder, doc-writer, reviewer, security-reviewer
543
+ - Templates: PRD, TRD, SDD, tasks, Progresso, context, extract-log, backlog, projetos.yaml
544
+ - Templates de estrutura: architecture, domain, conventions, apiContracts, decisions
545
+ - Pipeline: extract → design → plan → dev com checkpoints de aprovação
546
+ - Delta Specs (SDD §11) + merge-delta automático
547
+ - Security Reviewer como gate pós-dev
548
+ - Multi-repo via projetos.yaml
549
+ - Entregáveis contínuos (fases de entrega)
550
+
551
+ ---
552
+
553
+ ## Como usar este arquivo
554
+
555
+ Se o usuário perguntar:
556
+ - **"O que tem de novo?"** → ler a versão mais recente acima
557
+ - **"Como uso o /sf-load?"** → apontar pra `.github/commands/sf-load.md`
558
+ - **"Como configuro Confluence?"** → apontar pra `.github/adapters/SETUP.md`
559
+ - **"O que é adapter?"** → apontar pra `.github/adapters/interface.md`
560
+ - **"O que mudou de setup-projeto?"** → seção "Breaking" do 0.5.0-beta.7