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,229 +1,229 @@
1
- # Regras de Desenvolvimento
2
-
3
- > Regras que todos os agentes de desenvolvimento devem seguir.
4
- > Lido pelo Coder/Senior Coder e Reviewer antes de cada task.
5
- > Aplicado globalmente a todas as features.
6
-
7
- ---
8
-
9
- <!--
10
- =============================================================================
11
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
12
- =============================================================================
13
-
14
- QUANDO LER: Toda vez que /sf-dev executar uma task. Obrigatório.
15
- QUEM LÊ: Coder, Senior Coder e Reviewer.
16
- COMO USAR: Regras aqui são LEI — não são sugestões. Violações reprovam a task no quality gate.
17
-
18
- PERSONALIZAÇÃO: Este arquivo é editado manualmente pelo time.
19
- As regras abaixo são o padrão do framework. O time pode:
20
- - Adicionar regras específicas da stack
21
- - Remover regras que não se aplicam
22
- - Ajustar convenções ao projeto
23
-
24
- =============================================================================
25
- -->
26
-
27
- ## Regras Invioláveis
28
-
29
- 1. **Spec-first**: Nenhuma task pode ser executada sem SDD aprovado
30
- 2. **SDD é a fonte**: O coder lê APENAS o SDD + task — nunca consulta PRD ou PM diretamente
31
- 3. **Um commit por task**: Cada task gera exatamente 1 commit
32
- 4. **Sem invenção**: Se o SDD não especifica, o coder NÃO assume — para e reporta
33
- 5. **Entregáveis contínuos**: Toda feature é faseada em entregáveis incrementais. Cada fase entrega valor ao usuário e pode ir para produção independentemente. Nunca "tudo ou nada" — sempre "pequeno e constante"
34
- 6. **Nunca na main**: Todo código é desenvolvido em branch própria. Merge apenas via PR aprovado pelo usuário
35
-
36
- ## Convenções de Código
37
-
38
- ### Padrão geral
39
- - Todo código segue a stack e convenções de `docs/architecture.md` + `docs/conventions.md`
40
- - Nomes em inglês (código) — documentação em português
41
- - Sem código morto (comentado) — se não usa, apaga
42
- - Sem secrets hardcoded — sempre variáveis de ambiente
43
-
44
- ### Backend
45
- - Testes obrigatórios: mínimo happy path + 1 cenário de erro
46
- - Validação de input na borda (controller/handler) — não no service
47
- - Erros de negócio: usar códigos definidos em `docs/conventions.md` (seção Códigos de Erro do Domínio)
48
- - Tipos explícitos (sem `any`, `object`, `dynamic` genéricos)
49
-
50
- ### Frontend
51
- - Componentes tipados com props documentadas
52
- - Estados explícitos: loading, empty, error, success
53
- - Sem lógica de negócio no componente — delegar para hooks/services
54
-
55
- ### Banco de dados
56
- - Toda migration tem rollback testado
57
- - Execução sequencial — nunca pular migrations
58
- - Seeds apenas para ambiente de desenvolvimento
59
-
60
- ## Convenções de Git
61
-
62
- > **Escopo**: Estas regras se aplicam aos **repositórios em `projetos/`** (api, web, worker, etc.).
63
- > O projeto-base em si é o orquestrador — specs e docs ficam aqui, código fica nos repos.
64
-
65
- ### Commits
66
- ```
67
- tipo(TASK-ID): descrição curta
68
-
69
- Corpo opcional com detalhes.
70
-
71
- Refs: feat_cadastro_cliente
72
- ```
73
-
74
- | Tipo | Quando usar |
75
- |------|-------------|
76
- | `feat` | Nova funcionalidade |
77
- | `fix` | Correção de bug |
78
- | `refactor` | Mudança sem alterar comportamento |
79
- | `test` | Adição/alteração de testes |
80
- | `docs` | Documentação |
81
- | `chore` | Configuração, build, CI |
82
-
83
- ### Branches
84
- ```
85
- feature/feat_cadastro_cliente
86
- feature/feat_mvp_fase1
87
- bugfix/bug_cpf_duplicado
88
- task/task_otimizar_listagem
89
- ```
90
-
91
- | Regra | Descrição |
92
- |-------|-----------|
93
- | Base | Sempre a partir de `main` atualizada (origin) |
94
- | Merge | Via Pull Request aprovado pelo usuário — NUNCA merge automático |
95
- | Conflitos | Resolver antes de mergear — nunca force push em branch compartilhada |
96
-
97
- ### Git Workflow (5 passos obrigatórios)
98
-
99
- O /sf-dev DEVE seguir este fluxo para CADA fase de entrega:
100
-
101
- #### Passo 1 — Antes de codar
102
- ```bash
103
- # Verificar working tree limpo
104
- git status
105
- # Se há mudanças pendentes → sugerir commit ou stash antes de prosseguir
106
- # NUNCA começar a codar com working tree sujo
107
- ```
108
-
109
- #### Passo 2 — Criar branch
110
- ```bash
111
- # Atualizar main a partir do remote
112
- git checkout main
113
- git pull origin main
114
-
115
- # Criar branch para a fase
116
- git checkout -b feature/{nome}_fase{N}
117
- # Ex: feature/feat_mvp_fase1
118
- ```
119
- - Branch criada no **repo do serviço** (projetos/api, projetos/web, etc.)
120
- - Se a fase afeta múltiplos repos → branch com mesmo nome em cada um
121
- - NUNCA desenvolver direto na main
122
-
123
- #### Passo 3 — Ao terminar a fase
124
- ```bash
125
- # Atualizar Progresso.md com status da fase
126
- # Push da branch
127
- git push origin feature/{nome}_fase{N}
128
-
129
- # Abrir PR com template detalhado (ver seção abaixo)
130
- gh pr create --title "..." --body "..."
131
- ```
132
- - Deixar ambiente local **rodando** (docker compose up + dotnet run + npm run dev)
133
- - Informar ao usuário que o ambiente está ON para testes manuais
134
-
135
- #### Passo 4 — Aguardar aprovação
136
- ```
137
- ⏸️ PARAR e aguardar.
138
- - O usuário revisa o PR, testa manualmente o ambiente local
139
- - Merge é MANUAL — o agente NUNCA faz merge
140
- - Se o usuário pedir ajustes → corrigir na mesma branch, push, atualizar PR
141
- ```
142
-
143
- #### Passo 5 — Após merge (quando usuário confirmar)
144
- ```bash
145
- # Atualizar main local
146
- git checkout main
147
- git pull origin main
148
-
149
- # Limpar branches mergeadas
150
- git branch -d feature/{nome}_fase{N}
151
- git remote prune origin
152
- ```
153
-
154
- ### Template de Pull Request
155
-
156
- Todo PR aberto pelo /sf-dev DEVE seguir este formato:
157
-
158
- ```markdown
159
- ## Fase {N} — {Nome da fase}
160
-
161
- ### O que foi entregue
162
- - [ ] {Entregável 1 da fase}
163
- - [ ] {Entregável 2 da fase}
164
-
165
- ### Tasks concluídas
166
- | Task | Descrição | Testes |
167
- |------|-----------|--------|
168
- | BACK-001 | Criar endpoint X | ✅ unit + integration |
169
- | DB-001 | Migration tabela Y | ✅ rollback testado |
170
- | FRONT-001 | Tela de cadastro | ✅ unit |
171
-
172
- ### Testes
173
- - ✅ Unit tests passando ({N}/{N})
174
- - ✅ Integration tests passando ({N}/{N})
175
- - ✅ Security Review aprovado
176
- - ⬜ E2E (aguardando teste manual do usuário)
177
-
178
- ### Como testar manualmente
179
- 1. Ambiente já está rodando em:
180
- - API: http://localhost:8080
181
- - Web: http://localhost:3000
182
- - Banco: localhost:5432
183
- 2. Fluxo para testar:
184
- - {Passo 1 do teste manual}
185
- - {Passo 2 do teste manual}
186
- - {Resultado esperado}
187
-
188
- ### Observações
189
- - {Decisões tomadas, trade-offs, pontos de atenção}
190
- ```
191
-
192
- ## Quality Gate (por task)
193
-
194
- > Checklist obrigatório. O Reviewer valida TODOS os itens antes de aprovar.
195
-
196
- - [ ] Código compila sem erros
197
- - [ ] Testes passam (se aplicável à task)
198
- - [ ] Lint limpo (sem warnings não justificados)
199
- - [ ] Critérios de aceite da task atendidos (ref SDD §9)
200
- - [ ] Sem TODOs no código sem justificativa
201
- - [ ] Sem secrets hardcoded
202
- - [ ] Commit segue convenção: `tipo(TASK-ID): descrição`
203
- - [ ] Arquivos listados na task foram os únicos modificados (sem side effects)
204
-
205
- ## Regras por Stack
206
-
207
- > Seção opcional. Adicionar regras específicas da tecnologia escolhida.
208
- > Exemplos abaixo — remover/ajustar conforme o projeto.
209
-
210
- <!--
211
- ### Node.js / TypeScript
212
- - ESLint + Prettier como formatador
213
- - Strict mode no tsconfig
214
- - Path aliases configurados (@/modules, @/shared)
215
-
216
- ### Python
217
- - Ruff como linter/formatter
218
- - Type hints obrigatórios (mypy strict)
219
- - Virtual environment (venv ou poetry)
220
-
221
- ### React / Next.js
222
- - Server Components por padrão, Client Components só quando necessário
223
- - Zustand ou Context para estado global (não Redux)
224
- - Tailwind CSS para estilos
225
- -->
226
-
227
- ---
228
-
229
- > **Atualização**: Editado manualmente pelo time. Aplicado globalmente a todas as features.
1
+ # Regras de Desenvolvimento
2
+
3
+ > Regras que todos os agentes de desenvolvimento devem seguir.
4
+ > Lido pelo Coder/Senior Coder e Reviewer antes de cada task.
5
+ > Aplicado globalmente a todas as features.
6
+
7
+ ---
8
+
9
+ <!--
10
+ =============================================================================
11
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
12
+ =============================================================================
13
+
14
+ QUANDO LER: Toda vez que /sf-dev executar uma task. Obrigatório.
15
+ QUEM LÊ: Coder, Senior Coder e Reviewer.
16
+ COMO USAR: Regras aqui são LEI — não são sugestões. Violações reprovam a task no quality gate.
17
+
18
+ PERSONALIZAÇÃO: Este arquivo é editado manualmente pelo time.
19
+ As regras abaixo são o padrão do framework. O time pode:
20
+ - Adicionar regras específicas da stack
21
+ - Remover regras que não se aplicam
22
+ - Ajustar convenções ao projeto
23
+
24
+ =============================================================================
25
+ -->
26
+
27
+ ## Regras Invioláveis
28
+
29
+ 1. **Spec-first**: Nenhuma task pode ser executada sem PRD e/ou TRD aprovados (+ `specs/{nome}/` gerado)
30
+ 2. **specs/ é a fonte do coder**: O coder lê APENAS `specs/{nome}/` + task — nunca consulta PRD/TRD ou PM diretamente
31
+ 3. **Um commit por task**: Cada task gera exatamente 1 commit
32
+ 4. **Sem invenção**: Se `specs/` não especifica, o coder NÃO assume — para e reporta
33
+ 5. **Entregáveis contínuos**: Toda feature é faseada em entregáveis incrementais. Cada fase entrega valor ao usuário e pode ir para produção independentemente. Nunca "tudo ou nada" — sempre "pequeno e constante"
34
+ 6. **Nunca na main**: Todo código é desenvolvido em branch própria. Merge apenas via PR aprovado pelo usuário
35
+
36
+ ## Convenções de Código
37
+
38
+ ### Padrão geral
39
+ - Todo código segue a stack e convenções de `docs/architecture.md` + `docs/conventions.md`
40
+ - Nomes em inglês (código) — documentação em português
41
+ - Sem código morto (comentado) — se não usa, apaga
42
+ - Sem secrets hardcoded — sempre variáveis de ambiente
43
+
44
+ ### Backend
45
+ - Testes obrigatórios: mínimo happy path + 1 cenário de erro
46
+ - Validação de input na borda (controller/handler) — não no service
47
+ - Erros de negócio: usar códigos definidos em `docs/conventions.md` (seção Códigos de Erro do Domínio)
48
+ - Tipos explícitos (sem `any`, `object`, `dynamic` genéricos)
49
+
50
+ ### Frontend
51
+ - Componentes tipados com props documentadas
52
+ - Estados explícitos: loading, empty, error, success
53
+ - Sem lógica de negócio no componente — delegar para hooks/services
54
+
55
+ ### Banco de dados
56
+ - Toda migration tem rollback testado
57
+ - Execução sequencial — nunca pular migrations
58
+ - Seeds apenas para ambiente de desenvolvimento
59
+
60
+ ## Convenções de Git
61
+
62
+ > **Escopo**: Estas regras se aplicam aos **repositórios em `projetos/`** (api, web, worker, etc.).
63
+ > O projeto-base em si é o orquestrador — specs e docs ficam aqui, código fica nos repos.
64
+
65
+ ### Commits
66
+ ```
67
+ tipo(TASK-ID): descrição curta
68
+
69
+ Corpo opcional com detalhes.
70
+
71
+ Refs: feat_cadastro_cliente
72
+ ```
73
+
74
+ | Tipo | Quando usar |
75
+ |------|-------------|
76
+ | `feat` | Nova funcionalidade |
77
+ | `fix` | Correção de bug |
78
+ | `refactor` | Mudança sem alterar comportamento |
79
+ | `test` | Adição/alteração de testes |
80
+ | `docs` | Documentação |
81
+ | `chore` | Configuração, build, CI |
82
+
83
+ ### Branches
84
+ ```
85
+ feature/feat_cadastro_cliente
86
+ feature/feat_mvp_fase1
87
+ bugfix/bug_cpf_duplicado
88
+ task/task_otimizar_listagem
89
+ ```
90
+
91
+ | Regra | Descrição |
92
+ |-------|-----------|
93
+ | Base | Sempre a partir de `main` atualizada (origin) |
94
+ | Merge | Via Pull Request aprovado pelo usuário — NUNCA merge automático |
95
+ | Conflitos | Resolver antes de mergear — nunca force push em branch compartilhada |
96
+
97
+ ### Git Workflow (5 passos obrigatórios)
98
+
99
+ O /sf-dev DEVE seguir este fluxo para CADA fase de entrega:
100
+
101
+ #### Passo 1 — Antes de codar
102
+ ```bash
103
+ # Verificar working tree limpo
104
+ git status
105
+ # Se há mudanças pendentes → sugerir commit ou stash antes de prosseguir
106
+ # NUNCA começar a codar com working tree sujo
107
+ ```
108
+
109
+ #### Passo 2 — Criar branch
110
+ ```bash
111
+ # Atualizar main a partir do remote
112
+ git checkout main
113
+ git pull origin main
114
+
115
+ # Criar branch para a fase
116
+ git checkout -b feature/{nome}_fase{N}
117
+ # Ex: feature/feat_mvp_fase1
118
+ ```
119
+ - Branch criada no **repo do serviço** (projetos/api, projetos/web, etc.)
120
+ - Se a fase afeta múltiplos repos → branch com mesmo nome em cada um
121
+ - NUNCA desenvolver direto na main
122
+
123
+ #### Passo 3 — Ao terminar a fase
124
+ ```bash
125
+ # Atualizar Progresso.md com status da fase
126
+ # Push da branch
127
+ git push origin feature/{nome}_fase{N}
128
+
129
+ # Abrir PR com template detalhado (ver seção abaixo)
130
+ gh pr create --title "..." --body "..."
131
+ ```
132
+ - Deixar ambiente local **rodando** (docker compose up + dotnet run + npm run dev)
133
+ - Informar ao usuário que o ambiente está ON para testes manuais
134
+
135
+ #### Passo 4 — Aguardar aprovação
136
+ ```
137
+ ⏸️ PARAR e aguardar.
138
+ - O usuário revisa o PR, testa manualmente o ambiente local
139
+ - Merge é MANUAL — o agente NUNCA faz merge
140
+ - Se o usuário pedir ajustes → corrigir na mesma branch, push, atualizar PR
141
+ ```
142
+
143
+ #### Passo 5 — Após merge (quando usuário confirmar)
144
+ ```bash
145
+ # Atualizar main local
146
+ git checkout main
147
+ git pull origin main
148
+
149
+ # Limpar branches mergeadas
150
+ git branch -d feature/{nome}_fase{N}
151
+ git remote prune origin
152
+ ```
153
+
154
+ ### Template de Pull Request
155
+
156
+ Todo PR aberto pelo /sf-dev DEVE seguir este formato:
157
+
158
+ ```markdown
159
+ ## Fase {N} — {Nome da fase}
160
+
161
+ ### O que foi entregue
162
+ - [ ] {Entregável 1 da fase}
163
+ - [ ] {Entregável 2 da fase}
164
+
165
+ ### Tasks concluídas
166
+ | Task | Descrição | Testes |
167
+ |------|-----------|--------|
168
+ | BACK-001 | Criar endpoint X | ✅ unit + integration |
169
+ | DB-001 | Migration tabela Y | ✅ rollback testado |
170
+ | FRONT-001 | Tela de cadastro | ✅ unit |
171
+
172
+ ### Testes
173
+ - ✅ Unit tests passando ({N}/{N})
174
+ - ✅ Integration tests passando ({N}/{N})
175
+ - ✅ Security Review aprovado
176
+ - ⬜ E2E (aguardando teste manual do usuário)
177
+
178
+ ### Como testar manualmente
179
+ 1. Ambiente já está rodando em:
180
+ - API: http://localhost:8080
181
+ - Web: http://localhost:3000
182
+ - Banco: localhost:5432
183
+ 2. Fluxo para testar:
184
+ - {Passo 1 do teste manual}
185
+ - {Passo 2 do teste manual}
186
+ - {Resultado esperado}
187
+
188
+ ### Observações
189
+ - {Decisões tomadas, trade-offs, pontos de atenção}
190
+ ```
191
+
192
+ ## Quality Gate (por task)
193
+
194
+ > Checklist obrigatório. O Reviewer valida TODOS os itens antes de aprovar.
195
+
196
+ - [ ] Código compila sem erros
197
+ - [ ] Testes passam (se aplicável à task)
198
+ - [ ] Lint limpo (sem warnings não justificados)
199
+ - [ ] Critérios de aceite da task atendidos (ref `specs/{nome}/scenarios.md`)
200
+ - [ ] Sem TODOs no código sem justificativa
201
+ - [ ] Sem secrets hardcoded
202
+ - [ ] Commit segue convenção: `tipo(TASK-ID): descrição`
203
+ - [ ] Arquivos listados na task foram os únicos modificados (sem side effects)
204
+
205
+ ## Regras por Stack
206
+
207
+ > Seção opcional. Adicionar regras específicas da tecnologia escolhida.
208
+ > Exemplos abaixo — remover/ajustar conforme o projeto.
209
+
210
+ <!--
211
+ ### Node.js / TypeScript
212
+ - ESLint + Prettier como formatador
213
+ - Strict mode no tsconfig
214
+ - Path aliases configurados (@/modules, @/shared)
215
+
216
+ ### Python
217
+ - Ruff como linter/formatter
218
+ - Type hints obrigatórios (mypy strict)
219
+ - Virtual environment (venv ou poetry)
220
+
221
+ ### React / Next.js
222
+ - Server Components por padrão, Client Components só quando necessário
223
+ - Zustand ou Context para estado global (não Redux)
224
+ - Tailwind CSS para estilos
225
+ -->
226
+
227
+ ---
228
+
229
+ > **Atualização**: Editado manualmente pelo time. Aplicado globalmente a todas as features.