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,161 +1,161 @@
1
-
2
- # /sf-design $ARGUMENTS
3
-
4
- Skill atômica de design. Consome PRD + TRD aprovados e gera **`docs/` + `specs/{nome}/` + `projetos.yaml`** (este último em first-run).
5
- `$ARGUMENTS` = nome do scope (ex: `app_barbearia`, `feat_cadastro_cliente`).
6
-
7
- Em **first-run** (docs/ ausente): cria docs/ a partir do PRD+TRD + projetos.yaml + specs/.
8
- Em **feature** (docs/ existe): não cria docs/ (vem pelo /sf-merge-docs depois do /sf-dev) + gera apenas specs/ do scope atual.
9
-
10
- ## Agente: Architect (Opus)
11
-
12
- Técnico e preciso. Deriva projeções a partir dos docs source sem reinventar decisões.
13
-
14
- ## Pré-condições
15
-
16
- | # | Validação | Se falhar |
17
- |---|-----------|-----------|
18
- | 1 | `$ARGUMENTS` informado | Parar |
19
- | 2 | `.context.md` existe com status `extract_done` ou posterior | Se anterior → "/sf-extract $ARGUMENTS primeiro" |
20
- | 3 | Se `prd_existe=true`: `PRD.md` existe E `prd_aprovado=true` | Parar, listar ambiguidades pendentes (ver bloco abaixo) |
21
- | 4 | Se `trd_existe=true`: `TRD.md` existe E `trd_aprovado=true` | Parar, listar ambiguidades pendentes |
22
- | 5 | Pelo menos um dos 2 existe e está aprovado | Parar → "Extração falhou — nenhum doc aprovado" |
23
-
24
- Quando parar por ambiguidade:
25
-
26
- ```
27
- Ambiguidades pendentes em PRD §12 / TRD §10:
28
-
29
- AMB-PRD-001: {pergunta}
30
- AMB-TRD-002: {pergunta}
31
-
32
- Como responder:
33
- 1. Abra workspace/Output/$ARGUMENTS/PRD.md (ou TRD.md)
34
- 2. Vá até §Ambiguidades e preencha a coluna `Resposta`
35
- 3. Marque prd_aprovado=true (ou trd_aprovado=true) em .context.md
36
- 4. Rode /sf-design $ARGUMENTS de novo
37
-
38
- Mais detalhes em .github/skills/sf-extract/SKILL.md → "Como responder ambiguidades".
39
- ```
40
-
41
- ## Passos
42
-
43
- ### 1. Carregar contexto
44
-
45
- - `.context.md` → `first_run`, `prd_existe`, `trd_existe`, `areas_tocadas` (vazio, vai popular)
46
- - `workspace/Output/$ARGUMENTS/PRD.md` (se `prd_existe=true`)
47
- - `workspace/Output/$ARGUMENTS/TRD.md` (se `trd_existe=true`)
48
- - `docs/` (se existir — feature mode): baseline cross-feature
49
- - `discovery.md` (se existir): análise prévia
50
- - `.github/rules.md`
51
- - Templates:
52
- - `.github/templates/specs/{brief,contracts,scenarios}.template.md`
53
- - `.github/templates/estrutura/*.template.md` (só se first-run)
54
- - `.github/templates/feature/projetos.template.yaml` (só se first-run)
55
-
56
- ### 2. Determinar áreas tocadas
57
-
58
- Ler GATEs do TRD §2-§5 (se TRD existe). Áreas marcadas como `GATE: SIM` vão pra
59
- `.context.md → areas_tocadas: [...]`.
60
-
61
- Se TRD não existe (scope puro-produto, raro): `areas_tocadas = []`; `/sf-plan` vai
62
- gerar só tasks de frontend com base no PRD §7.
63
-
64
- ### 3. Branch first-run vs feature
65
-
66
- Ler `first_run` do `.context.md`.
67
-
68
- #### Branch A — first_run = true (bootstrap)
69
-
70
- 1. **Gerar `docs/`** (5 arquivos em `docs/` na raiz do projeto):
71
-
72
- | Doc gerado | Fontes |
73
- |-----------|--------|
74
- | `architecture.md` | TRD §1.1 Stack + §1.2 Arquitetura + §1.3 Ambientes + §1.4 Deploy + §5 §Área-Infra |
75
- | `domain.md` | PRD §1 Contexto + §2 Atores + §3 Jornadas (resumo) + TRD §4 §Área-DB |
76
- | `conventions.md` | TRD §1.5 Segurança baseline + §7 Segurança detalhada + §5.3 Env vars + §5.4 Monitoramento |
77
- | `apiContracts.md` | TRD §2.1 Endpoints + convenções de rota inferidas |
78
- | `decisions.md` | TRD §9 ADRs (transcritas como ADR-001, ADR-002... imutáveis) |
79
-
80
- Regras:
81
- - Ler template → preencher TODAS as seções com dados do PRD/TRD
82
- - Remover bloco `<!-- INSTRUÇÕES -->` do doc gerado
83
- - Changelog inicia vazio
84
- - Se PRD ou TRD não tem dados pra uma seção → "A definir" (não deixar vazio)
85
-
86
- 2. **Gerar `projetos.yaml`** na raiz:
87
-
88
- - Identificar serviços separados no TRD §1.2 Containers (api, worker, web, etc.)
89
- - Perguntar ao usuário: organização GitHub, nome base, se algum repo já existe
90
- - Mapear áreas → repos (API+DB costumam ir juntos; Frontend separado)
91
- - Validar: cada área em `areas_tocadas` tem repo correspondente
92
-
93
- 3. **Gerar `specs/$ARGUMENTS/`** (passo 4 abaixo, comum a first-run e feature)
94
-
95
- #### Branch B — first_run = false (feature)
96
-
97
- 1. **Não toca em `docs/`** (isso é trabalho do /sf-merge-docs após /sf-dev)
98
- 2. **Não gera `projetos.yaml`** (já existe do first-run)
99
- 3. **Gera apenas `specs/$ARGUMENTS/`**
100
-
101
- ### 4. Gerar `specs/$ARGUMENTS/` (sempre)
102
-
103
- Criar/sobrescrever os 4 arquivos em `specs/$ARGUMENTS/`:
104
-
105
- | Arquivo | Projeção de | Conteúdo |
106
- |---------|-------------|----------|
107
- | `brief.md` | PRD §1 + §10 + §11 + TRD §1 | Problema, Solução, Serviços tocados (de projetos.yaml), Escopo (Dentro/Fora), Decisões principais (ADRs resumidas) |
108
- | `contracts.md` | TRD §4 + §2.3 + §2.1 + §6 + PRD §5 | Dados (schema), Validações de Entrada, API (endpoints específicos), Integrações externas, Regras de Negócio com enforcement point |
109
- | `scenarios.md` | PRD §3 + §8 + §7 + TRD §8 | Pré-condições globais, Fluxos happy path, Fluxos de erro (com Ref CA), UI por componente, CAs com Given/When/Then, Estratégia de testes |
110
- | `tasks.md` | stub | (preenchido pelo `/sf-plan`) |
111
-
112
- Regras:
113
- - Projeções são **REGENERÁVEIS** — ao re-rodar `/sf-design`, sobrescreve
114
- - NUNCA editar direto em `specs/` — PRD/TRD são as fontes
115
- - Templates em `.github/templates/specs/`
116
- - Coders e Reviewer leem daqui, NUNCA de PRD/TRD direto
117
-
118
- ### 5. Validação de consistência
119
-
120
- Antes de terminar, verificar:
121
- - Cada RN do PRD §5 aparece em `contracts.md → Regras de Negócio` com enforcement point
122
- - Cada endpoint do TRD §2.1 aparece em `contracts.md → API`
123
- - Cada CA em `scenarios.md` mapeia pra pelo menos 1 RN ou 1 jornada
124
- - Áreas em `areas_tocadas` têm entries em `contracts.md` e `scenarios.md`
125
-
126
- Divergências → alertar no output, sem falhar.
127
-
128
- ### 6. Atualizar `.context.md`
129
-
130
- ```yaml
131
- status: "design_done"
132
- areas_tocadas: [BACK, DB, ...] # derivado do passo 2
133
- ultima_skill: "/sf-design"
134
- atualizado_em: "{{ISO_DATETIME}}"
135
- ```
136
-
137
- ### 7. Saída obrigatória
138
-
139
- ```
140
- /sf-design $ARGUMENTS — completo ({{first-run | feature}})
141
-
142
- Artefatos:
143
- - specs/$ARGUMENTS/brief.md
144
- - specs/$ARGUMENTS/contracts.md
145
- - specs/$ARGUMENTS/scenarios.md
146
- - specs/$ARGUMENTS/tasks.md (stub — será preenchido por /sf-plan)
147
- (se first-run:)
148
- - docs/architecture.md, domain.md, conventions.md, apiContracts.md, decisions.md
149
- - projetos.yaml
150
-
151
- Áreas tocadas: [BACK, DB, FRONT, INFRA]
152
- Validação: {{N issues / passed}}
153
-
154
- Próximo passo: /sf-plan $ARGUMENTS
155
- ```
156
-
157
- ## Regra de ouro
158
-
159
- - `/sf-design` NUNCA reinventa decisões. Apenas projeta PRD+TRD pra formatos consumíveis.
160
- - Se precisa de uma decisão nova que não está no PRD ou TRD: é ambiguidade — voltar pra `/sf-extract` com novo insumo.
161
- - Divergências entre PRD e TRD: **PRD vence em produto, TRD vence em técnica** (não há overlap por design).
1
+
2
+ # /sf-design $ARGUMENTS
3
+
4
+ Skill atômica de design. Consome PRD + TRD aprovados e gera **`docs/` + `specs/{nome}/` + `projetos.yaml`** (este último em first-run).
5
+ `$ARGUMENTS` = nome do scope (ex: `app_barbearia`, `feat_cadastro_cliente`).
6
+
7
+ Em **first-run** (docs/ ausente): cria docs/ a partir do PRD+TRD + projetos.yaml + specs/.
8
+ Em **feature** (docs/ existe): não cria docs/ (vem pelo /sf-merge-docs depois do /sf-dev) + gera apenas specs/ do scope atual.
9
+
10
+ ## Agente: Architect (Opus)
11
+
12
+ Técnico e preciso. Deriva projeções a partir dos docs source sem reinventar decisões.
13
+
14
+ ## Pré-condições
15
+
16
+ | # | Validação | Se falhar |
17
+ |---|-----------|-----------|
18
+ | 1 | `$ARGUMENTS` informado | Parar |
19
+ | 2 | `.context.md` existe com status `extract_done` ou posterior | Se anterior → "/sf-extract $ARGUMENTS primeiro" |
20
+ | 3 | Se `prd_existe=true`: `PRD.md` existe E `prd_aprovado=true` | Parar, listar ambiguidades pendentes (ver bloco abaixo) |
21
+ | 4 | Se `trd_existe=true`: `TRD.md` existe E `trd_aprovado=true` | Parar, listar ambiguidades pendentes |
22
+ | 5 | Pelo menos um dos 2 existe e está aprovado | Parar → "Extração falhou — nenhum doc aprovado" |
23
+
24
+ Quando parar por ambiguidade:
25
+
26
+ ```
27
+ Ambiguidades pendentes em PRD §12 / TRD §10:
28
+
29
+ AMB-PRD-001: {pergunta}
30
+ AMB-TRD-002: {pergunta}
31
+
32
+ Como responder:
33
+ 1. Abra workspace/Output/$ARGUMENTS/PRD.md (ou TRD.md)
34
+ 2. Vá até §Ambiguidades e preencha a coluna `Resposta`
35
+ 3. Marque prd_aprovado=true (ou trd_aprovado=true) em .context.md
36
+ 4. Rode /sf-design $ARGUMENTS de novo
37
+
38
+ Mais detalhes em .github/skills/sf-extract/SKILL.md → "Como responder ambiguidades".
39
+ ```
40
+
41
+ ## Passos
42
+
43
+ ### 1. Carregar contexto
44
+
45
+ - `.context.md` → `first_run`, `prd_existe`, `trd_existe`, `areas_tocadas` (vazio, vai popular)
46
+ - `workspace/Output/$ARGUMENTS/PRD.md` (se `prd_existe=true`)
47
+ - `workspace/Output/$ARGUMENTS/TRD.md` (se `trd_existe=true`)
48
+ - `docs/` (se existir — feature mode): baseline cross-feature
49
+ - `discovery.md` (se existir): análise prévia
50
+ - `.github/rules.md`
51
+ - Templates:
52
+ - `.github/templates/specs/{brief,contracts,scenarios}.template.md`
53
+ - `.github/templates/estrutura/*.template.md` (só se first-run)
54
+ - `.github/templates/feature/projetos.template.yaml` (só se first-run)
55
+
56
+ ### 2. Determinar áreas tocadas
57
+
58
+ Ler GATEs do TRD §2-§5 (se TRD existe). Áreas marcadas como `GATE: SIM` vão pra
59
+ `.context.md → areas_tocadas: [...]`.
60
+
61
+ Se TRD não existe (scope puro-produto, raro): `areas_tocadas = []`; `/sf-plan` vai
62
+ gerar só tasks de frontend com base no PRD §7.
63
+
64
+ ### 3. Branch first-run vs feature
65
+
66
+ Ler `first_run` do `.context.md`.
67
+
68
+ #### Branch A — first_run = true (bootstrap)
69
+
70
+ 1. **Gerar `docs/`** (5 arquivos em `docs/` na raiz do projeto):
71
+
72
+ | Doc gerado | Fontes |
73
+ |-----------|--------|
74
+ | `architecture.md` | TRD §1.1 Stack + §1.2 Arquitetura + §1.3 Ambientes + §1.4 Deploy + §5 §Área-Infra |
75
+ | `domain.md` | PRD §1 Contexto + §2 Atores + §3 Jornadas (resumo) + TRD §4 §Área-DB |
76
+ | `conventions.md` | TRD §1.5 Segurança baseline + §7 Segurança detalhada + §5.3 Env vars + §5.4 Monitoramento |
77
+ | `apiContracts.md` | TRD §2.1 Endpoints + convenções de rota inferidas |
78
+ | `decisions.md` | TRD §9 ADRs (transcritas como ADR-001, ADR-002... imutáveis) |
79
+
80
+ Regras:
81
+ - Ler template → preencher TODAS as seções com dados do PRD/TRD
82
+ - Remover bloco `<!-- INSTRUÇÕES -->` do doc gerado
83
+ - Changelog inicia vazio
84
+ - Se PRD ou TRD não tem dados pra uma seção → "A definir" (não deixar vazio)
85
+
86
+ 2. **Gerar `projetos.yaml`** na raiz:
87
+
88
+ - Identificar serviços separados no TRD §1.2 Containers (api, worker, web, etc.)
89
+ - Perguntar ao usuário: organização GitHub, nome base, se algum repo já existe
90
+ - Mapear áreas → repos (API+DB costumam ir juntos; Frontend separado)
91
+ - Validar: cada área em `areas_tocadas` tem repo correspondente
92
+
93
+ 3. **Gerar `specs/$ARGUMENTS/`** (passo 4 abaixo, comum a first-run e feature)
94
+
95
+ #### Branch B — first_run = false (feature)
96
+
97
+ 1. **Não toca em `docs/`** (isso é trabalho do /sf-merge-docs após /sf-dev)
98
+ 2. **Não gera `projetos.yaml`** (já existe do first-run)
99
+ 3. **Gera apenas `specs/$ARGUMENTS/`**
100
+
101
+ ### 4. Gerar `specs/$ARGUMENTS/` (sempre)
102
+
103
+ Criar/sobrescrever os 4 arquivos em `specs/$ARGUMENTS/`:
104
+
105
+ | Arquivo | Projeção de | Conteúdo |
106
+ |---------|-------------|----------|
107
+ | `brief.md` | PRD §1 + §10 + §11 + TRD §1 | Problema, Solução, Serviços tocados (de projetos.yaml), Escopo (Dentro/Fora), Decisões principais (ADRs resumidas) |
108
+ | `contracts.md` | TRD §4 + §2.3 + §2.1 + §6 + PRD §5 | Dados (schema), Validações de Entrada, API (endpoints específicos), Integrações externas, Regras de Negócio com enforcement point |
109
+ | `scenarios.md` | PRD §3 + §8 + §7 + TRD §8 | Pré-condições globais, Fluxos happy path, Fluxos de erro (com Ref CA), UI por componente, CAs com Given/When/Then, Estratégia de testes |
110
+ | `tasks.md` | stub | (preenchido pelo `/sf-plan`) |
111
+
112
+ Regras:
113
+ - Projeções são **REGENERÁVEIS** — ao re-rodar `/sf-design`, sobrescreve
114
+ - NUNCA editar direto em `specs/` — PRD/TRD são as fontes
115
+ - Templates em `.github/templates/specs/`
116
+ - Coders e Reviewer leem daqui, NUNCA de PRD/TRD direto
117
+
118
+ ### 5. Validação de consistência
119
+
120
+ Antes de terminar, verificar:
121
+ - Cada RN do PRD §5 aparece em `contracts.md → Regras de Negócio` com enforcement point
122
+ - Cada endpoint do TRD §2.1 aparece em `contracts.md → API`
123
+ - Cada CA em `scenarios.md` mapeia pra pelo menos 1 RN ou 1 jornada
124
+ - Áreas em `areas_tocadas` têm entries em `contracts.md` e `scenarios.md`
125
+
126
+ Divergências → alertar no output, sem falhar.
127
+
128
+ ### 6. Atualizar `.context.md`
129
+
130
+ ```yaml
131
+ status: "design_done"
132
+ areas_tocadas: [BACK, DB, ...] # derivado do passo 2
133
+ ultima_skill: "/sf-design"
134
+ atualizado_em: "{{ISO_DATETIME}}"
135
+ ```
136
+
137
+ ### 7. Saída obrigatória
138
+
139
+ ```
140
+ /sf-design $ARGUMENTS — completo ({{first-run | feature}})
141
+
142
+ Artefatos:
143
+ - specs/$ARGUMENTS/brief.md
144
+ - specs/$ARGUMENTS/contracts.md
145
+ - specs/$ARGUMENTS/scenarios.md
146
+ - specs/$ARGUMENTS/tasks.md (stub — será preenchido por /sf-plan)
147
+ (se first-run:)
148
+ - docs/architecture.md, domain.md, conventions.md, apiContracts.md, decisions.md
149
+ - projetos.yaml
150
+
151
+ Áreas tocadas: [BACK, DB, FRONT, INFRA]
152
+ Validação: {{N issues / passed}}
153
+
154
+ Próximo passo: /sf-plan $ARGUMENTS
155
+ ```
156
+
157
+ ## Regra de ouro
158
+
159
+ - `/sf-design` NUNCA reinventa decisões. Apenas projeta PRD+TRD pra formatos consumíveis.
160
+ - Se precisa de uma decisão nova que não está no PRD ou TRD: é ambiguidade — voltar pra `/sf-extract` com novo insumo.
161
+ - Divergências entre PRD e TRD: **PRD vence em produto, TRD vence em técnica** (não há overlap por design).