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.
- package/README.md +252 -167
- package/bin/cli.js +70 -70
- package/lib/init.js +92 -92
- package/lib/update.js +132 -132
- package/package.json +1 -1
- package/templates/.ai/memory/napkin.md +68 -68
- package/templates/.github/CHANGELOG.md +560 -533
- package/templates/.github/adapters/SETUP.md +314 -314
- package/templates/.github/adapters/confluence.md +295 -295
- package/templates/.github/adapters/errors.md +234 -234
- package/templates/.github/adapters/filesystem.md +353 -353
- package/templates/.github/adapters/interface.md +301 -301
- package/templates/.github/adapters/naming.md +241 -241
- package/templates/.github/adapters/registry.md +244 -244
- package/templates/.github/agents/backend-coder.md +215 -215
- package/templates/.github/agents/db-coder.md +165 -165
- package/templates/.github/agents/doc-writer.md +66 -66
- package/templates/.github/agents/frontend-coder.md +222 -222
- package/templates/.github/agents/infra-coder.md +341 -341
- package/templates/.github/agents/reviewer.md +99 -99
- package/templates/.github/agents/security-reviewer.md +153 -153
- package/templates/.github/copilot-instructions.md +272 -272
- package/templates/.github/instructions/docs.instructions.md +147 -145
- package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
- package/templates/.github/rules.md +229 -229
- package/templates/.github/scripts/bootstrap-confluence.js +289 -289
- package/templates/.github/skills/sf-design/SKILL.md +161 -161
- package/templates/.github/skills/sf-dev/SKILL.md +204 -204
- package/templates/.github/skills/sf-discovery/SKILL.md +415 -415
- package/templates/.github/skills/sf-extract/SKILL.md +225 -225
- package/templates/.github/skills/sf-load/SKILL.md +296 -296
- package/templates/.github/skills/sf-mcp/SKILL.md +386 -386
- package/templates/.github/skills/sf-merge-docs/SKILL.md +152 -152
- package/templates/.github/skills/sf-plan/SKILL.md +152 -152
- package/templates/.github/skills/sf-publish/SKILL.md +144 -144
- package/templates/.github/skills/sf-session-finish/SKILL.md +93 -93
- package/templates/.github/skills/sf-start/SKILL.md +192 -192
- package/templates/.github/templates/estrutura/apiContracts.template.md +160 -159
- package/templates/.github/templates/estrutura/architecture.template.md +169 -168
- package/templates/.github/templates/estrutura/conventions.template.md +214 -212
- package/templates/.github/templates/estrutura/decisions.template.md +107 -107
- package/templates/.github/templates/estrutura/domain.template.md +161 -160
- package/templates/.github/templates/feature/PRD.template.md +279 -279
- package/templates/.github/templates/feature/Progresso.template.md +141 -141
- package/templates/.github/templates/feature/TRD.template.md +358 -358
- package/templates/.github/templates/feature/context.template.md +89 -89
- package/templates/.github/templates/feature/extract-log.template.md +49 -49
- package/templates/.github/templates/feature/projetos.template.yaml +79 -79
- package/templates/.github/templates/global/progresso_global.template.md +59 -57
- package/templates/.github/templates/specs/brief.template.md +66 -66
- package/templates/.github/templates/specs/contracts.template.md +147 -147
- package/templates/.github/templates/specs/scenarios.template.md +125 -125
- package/templates/.github/templates/specs/tasks.template.md +65 -65
- package/templates/_gitignore +35 -35
- 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
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
###
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
- `/sf-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
-
|
|
79
|
-
|
|
80
|
-
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
`
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
-
|
|
287
|
-
-
|
|
288
|
-
-
|
|
289
|
-
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
###
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
→
|
|
407
|
-
→
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
-
|
|
441
|
-
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
-
|
|
447
|
-
-
|
|
448
|
-
-
|
|
449
|
-
-
|
|
450
|
-
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
-
|
|
465
|
-
-
|
|
466
|
-
-
|
|
467
|
-
-
|
|
468
|
-
-
|
|
469
|
-
|
|
470
|
-
### Novo:
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
-
|
|
479
|
-
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
-
|
|
486
|
-
-
|
|
487
|
-
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
-
|
|
492
|
-
-
|
|
493
|
-
-
|
|
494
|
-
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
###
|
|
505
|
-
-
|
|
506
|
-
-
|
|
507
|
-
- `
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
-
|
|
515
|
-
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
-
|
|
519
|
-
-
|
|
520
|
-
-
|
|
521
|
-
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
-
|
|
533
|
-
-
|
|
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ções — nã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 já 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 lê 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 lê `.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` já 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 já 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 só 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 só "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 só 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 vê 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: só `{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 lê `workspace/Output/`, agent lê `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
|