spec-first-copilot 0.8.0-beta.2 → 0.8.0-beta.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-first-copilot",
3
- "version": "0.8.0-beta.2",
3
+ "version": "0.8.0-beta.3",
4
4
  "description": "Spec-first workflow kit for GitHub Copilot — AI-driven development with specs, not guesswork",
5
5
  "bin": {
6
6
  "spec-first-copilot": "bin/cli.js"
@@ -8,6 +8,34 @@
8
8
 
9
9
  ---
10
10
 
11
+ ## 0.8.0-beta.3 (2026-05-11) — Working directory blindado
12
+
13
+ Esclarecimento crítico em brownfield (e em qualquer cenário com múltiplos
14
+ repos em `projetos/`): o cwd do agente **nunca muda** — é sempre a raiz SFW.
15
+ Repos clonados são alvo de trabalho, não ambiente de trabalho. Evita conflito
16
+ entre regras SFW e regras do time do repo legado (`CLAUDE.md`, `.cursorrules`,
17
+ `AGENTS.md` etc. internos ao repo).
18
+
19
+ ### Adicionado
20
+
21
+ - **Regra inviolável #7** em `rules.md`: "Working directory é a raiz SFW"
22
+ - **Seção "Working Directory — raiz SFW é a casa do agente"** em `rules.md`:
23
+ tabela do que faz/não faz, fronteira clara entre operacional/descritivo/histórico
24
+ - **Bloco "Working Directory"** no topo de `copilot-instructions.md` —
25
+ antes de qualquer outra seção
26
+ - **Aviso reforçado no Passo 3 do `/sf-onboard`** (logo após clone):
27
+ usar `git -C projetos/<repo>` em vez de `cd`; não carregar arquivos de
28
+ instrução internos do repo legado (`CLAUDE.md`, `.cursorrules`, `AGENTS.md`)
29
+
30
+ ### Por quê
31
+
32
+ Repo legado pode ter próprio `CLAUDE.md` ou `copilot-instructions.md` que
33
+ conflita com SFW. Sem regra explícita, agente pode confundir "padrões
34
+ observados" (descritivos, TRD §1.6) com "regras invioláveis" (prescritivas,
35
+ `rules.md`). Resultado: bagunça. Fronteira agora é explícita.
36
+
37
+ ---
38
+
11
39
  ## 0.8.0-beta.2 (2026-05-11) — Auth check pré-clone
12
40
 
13
41
  `/sf-onboard` agora verifica autenticação git **antes** de tentar clonar,
@@ -49,6 +49,31 @@ Se algum command não for encontrado → avisar o usuário.
49
49
 
50
50
  ---
51
51
 
52
+ ## Working Directory — onde o agente trabalha
53
+
54
+ > ⚠️ **Crítico** — não mude isso.
55
+
56
+ O cwd do agente é a **raiz deste projeto SFW** (onde estão `.github/`, `docs/`,
57
+ `specs/`, `workspace/`, `projetos.yaml`). Repos clonados em `projetos/<repo>/`
58
+ são **alvo de trabalho**, NUNCA **ambiente de trabalho**.
59
+
60
+ | Faz | NÃO faz |
61
+ |-----|---------|
62
+ | Lê/escreve código via path relativo: `projetos/api/src/...` | Troca cwd pra `projetos/<repo>/` |
63
+ | Roda git: `git -C projetos/api <comando>` | Lê `copilot-instructions.md` que exista DENTRO de `projetos/<repo>/` |
64
+ | Lê regras de `rules.md` da raiz SFW | Lê `CLAUDE.md` do repo legado |
65
+ | Lê padrões do TRD §1.6 (na raiz SFW) | Carrega `.cursor/`, `AGENTS.md`, `.cursorrules` do repo legado |
66
+
67
+ **Por quê**: repos legados (`/sf-onboard`) podem ter próprias regras/convenções
68
+ que conflitam com SFW. A verdade operacional é sempre a raiz SFW — código nos
69
+ `projetos/` é objeto de leitura/escrita, não fonte de regras vivas. Padrões do
70
+ repo legado, quando relevantes, foram **descritos** no TRD §1.6 pelo `/sf-onboard`.
71
+
72
+ Detalhamento completo em `.github/rules.md` (Regra Inviolável #7 + seção
73
+ "Working Directory").
74
+
75
+ ---
76
+
52
77
  ## Identidade do Projeto
53
78
 
54
79
  Este é um projeto que utiliza desenvolvimento **spec-first** assistido por IA.
@@ -1,229 +1,266 @@
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.
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
+ 7. **Working directory é a raiz SFW**: O agente opera SEMPRE a partir da raiz do projeto SFW (onde estão `.github/`, `docs/`, `specs/`, `workspace/`, `projetos.yaml`). Repos em `projetos/<repo>/` são **alvo de trabalho**, NUNCA **ambiente de trabalho** (ver seção abaixo)
36
+
37
+ ## Working Directory — raiz SFW é a casa do agente
38
+
39
+ > **Regra crítica em projetos com `/sfw-onboard` ou múltiplos repos**: o cwd
40
+ > da IA não muda. Tudo é referenciado a partir da raiz SFW.
41
+
42
+ ### O que o agente FAZ
43
+
44
+ - ✅ Trabalha com cwd = raiz SFW (onde rodou `init`)
45
+ - código com caminho relativo: `projetos/api/src/Controllers/UserController.cs`
46
+ - Escreve código com caminho relativo: idem
47
+ - Roda git **dentro** do repo target via `git -C projetos/api <comando>` (não com `cd`)
48
+ - Consulta `rules.md`, `docs/`, `specs/`, `.github/` SEMPRE da raiz SFW
49
+ - ✅ Em brownfield: consulta TRD §1.6 Padrões Observados (na raiz SFW) antes de implementar
50
+
51
+ ### O que o agente NÃO FAZ
52
+
53
+ - NÃO troca cwd pra `projetos/<repo>/` (nem implícita nem explicitamente)
54
+ - ❌ NÃO lê `copilot-instructions.md` que exista DENTRO do repo legado em `projetos/<repo>/` (esse é do time do repo, não nosso)
55
+ - NÃO lê `.github/copilot-instructions.md` DENTRO do repo legado (idem)
56
+ - NÃO segue convenções/regras documentadas em `projetos/<repo>/.cursor/`, `projetos/<repo>/.github/`, `projetos/<repo>/AGENTS.md` ou similares
57
+ - NÃO carrega `.env`, `.cursorrules` ou config files do repo legado como "regras vivas"
58
+
59
+ ### Por quê
60
+
61
+ - Repo legado pode ter próprio `copilot-instructions.md` / `.github/copilot-instructions.md` que **conflita** com SFW
62
+ - "Padrões observados" (TRD §1.6, descritivos) "regras invioláveis" (este arquivo, prescritivas) — se misturar, vira bagunça
63
+ - A "verdade operacional" do agente é sempre a raiz SFW; código nos `projetos/` é objeto de leitura/escrita
64
+
65
+ ### Fronteira clara
66
+
67
+ | Camada | Localização | Quem manda |
68
+ |--------|-------------|------------|
69
+ | Operacional (como o agente trabalha) | Raiz SFW: `.github/`, `rules.md`, `docs/`, `specs/` | **SFW** |
70
+ | Descritiva (como o código existe) | `projetos/<repo>/` + TRD §1.6 (na raiz SFW) | Refletida no TRD pelo `/sfw-onboard` |
71
+ | Histórica do repo legado | `projetos/<repo>/README.md`, `CHANGELOG.md`, ADRs internos | Contexto opcional, não regra |
72
+
73
+ ## Convenções de Código
74
+
75
+ ### Padrão geral
76
+ - Todo código segue a stack e convenções de `docs/architecture.md` + `docs/conventions.md`
77
+ - Nomes em inglês (código) documentação em português
78
+ - Sem código morto (comentado) se não usa, apaga
79
+ - Sem secrets hardcoded — sempre variáveis de ambiente
80
+
81
+ ### Backend
82
+ - Testes obrigatórios: mínimo happy path + 1 cenário de erro
83
+ - Validação de input na borda (controller/handler) — não no service
84
+ - Erros de negócio: usar códigos definidos em `docs/conventions.md` (seção Códigos de Erro do Domínio)
85
+ - Tipos explícitos (sem `any`, `object`, `dynamic` genéricos)
86
+
87
+ ### Frontend
88
+ - Componentes tipados com props documentadas
89
+ - Estados explícitos: loading, empty, error, success
90
+ - Sem lógica de negócio no componente — delegar para hooks/services
91
+
92
+ ### Banco de dados
93
+ - Toda migration tem rollback testado
94
+ - Execução sequencialnunca pular migrations
95
+ - Seeds apenas para ambiente de desenvolvimento
96
+
97
+ ## Convenções de Git
98
+
99
+ > **Escopo**: Estas regras se aplicam aos **repositórios em `projetos/`** (api, web, worker, etc.).
100
+ > O projeto-base em si é o orquestrador — specs e docs ficam aqui, código fica nos repos.
101
+
102
+ ### Commits
103
+ ```
104
+ tipo(TASK-ID): descrição curta
105
+
106
+ Corpo opcional com detalhes.
107
+
108
+ Refs: feat_cadastro_cliente
109
+ ```
110
+
111
+ | Tipo | Quando usar |
112
+ |------|-------------|
113
+ | `feat` | Nova funcionalidade |
114
+ | `fix` | Correção de bug |
115
+ | `refactor` | Mudança sem alterar comportamento |
116
+ | `test` | Adição/alteração de testes |
117
+ | `docs` | Documentação |
118
+ | `chore` | Configuração, build, CI |
119
+
120
+ ### Branches
121
+ ```
122
+ feature/feat_cadastro_cliente
123
+ feature/feat_mvp_fase1
124
+ bugfix/bug_cpf_duplicado
125
+ task/task_otimizar_listagem
126
+ ```
127
+
128
+ | Regra | Descrição |
129
+ |-------|-----------|
130
+ | Base | Sempre a partir de `main` atualizada (origin) |
131
+ | Merge | Via Pull Request aprovado pelo usuário — NUNCA merge automático |
132
+ | Conflitos | Resolver antes de mergear nunca force push em branch compartilhada |
133
+
134
+ ### Git Workflow (5 passos obrigatórios)
135
+
136
+ O /sf-dev DEVE seguir este fluxo para CADA fase de entrega:
137
+
138
+ #### Passo 1 Antes de codar
139
+ ```bash
140
+ # Verificar working tree limpo
141
+ git status
142
+ # Se há mudanças pendentes → sugerir commit ou stash antes de prosseguir
143
+ # NUNCA começar a codar com working tree sujo
144
+ ```
145
+
146
+ #### Passo 2 — Criar branch
147
+ ```bash
148
+ # Atualizar main a partir do remote
149
+ git checkout main
150
+ git pull origin main
151
+
152
+ # Criar branch para a fase
153
+ git checkout -b feature/{nome}_fase{N}
154
+ # Ex: feature/feat_mvp_fase1
155
+ ```
156
+ - Branch criada no **repo do serviço** (projetos/api, projetos/web, etc.)
157
+ - Se a fase afeta múltiplos repos → branch com mesmo nome em cada um
158
+ - NUNCA desenvolver direto na main
159
+
160
+ #### Passo 3 — Ao terminar a fase
161
+ ```bash
162
+ # Atualizar Progresso.md com status da fase
163
+ # Push da branch
164
+ git push origin feature/{nome}_fase{N}
165
+
166
+ # Abrir PR com template detalhado (ver seção abaixo)
167
+ gh pr create --title "..." --body "..."
168
+ ```
169
+ - Deixar ambiente local **rodando** (docker compose up + dotnet run + npm run dev)
170
+ - Informar ao usuário que o ambiente está ON para testes manuais
171
+
172
+ #### Passo 4 — Aguardar aprovação
173
+ ```
174
+ ⏸️ PARAR e aguardar.
175
+ - O usuário revisa o PR, testa manualmente o ambiente local
176
+ - Merge é MANUAL o agente NUNCA faz merge
177
+ - Se o usuário pedir ajustes → corrigir na mesma branch, push, atualizar PR
178
+ ```
179
+
180
+ #### Passo 5 — Após merge (quando usuário confirmar)
181
+ ```bash
182
+ # Atualizar main local
183
+ git checkout main
184
+ git pull origin main
185
+
186
+ # Limpar branches mergeadas
187
+ git branch -d feature/{nome}_fase{N}
188
+ git remote prune origin
189
+ ```
190
+
191
+ ### Template de Pull Request
192
+
193
+ Todo PR aberto pelo /sf-dev DEVE seguir este formato:
194
+
195
+ ```markdown
196
+ ## Fase {N} {Nome da fase}
197
+
198
+ ### O que foi entregue
199
+ - [ ] {Entregável 1 da fase}
200
+ - [ ] {Entregável 2 da fase}
201
+
202
+ ### Tasks concluídas
203
+ | Task | Descrição | Testes |
204
+ |------|-----------|--------|
205
+ | BACK-001 | Criar endpoint X | ✅ unit + integration |
206
+ | DB-001 | Migration tabela Y | ✅ rollback testado |
207
+ | FRONT-001 | Tela de cadastro | unit |
208
+
209
+ ### Testes
210
+ - ✅ Unit tests passando ({N}/{N})
211
+ - Integration tests passando ({N}/{N})
212
+ - Security Review aprovado
213
+ - E2E (aguardando teste manual do usuário)
214
+
215
+ ### Como testar manualmente
216
+ 1. Ambiente já está rodando em:
217
+ - API: http://localhost:8080
218
+ - Web: http://localhost:3000
219
+ - Banco: localhost:5432
220
+ 2. Fluxo para testar:
221
+ - {Passo 1 do teste manual}
222
+ - {Passo 2 do teste manual}
223
+ - {Resultado esperado}
224
+
225
+ ### Observações
226
+ - {Decisões tomadas, trade-offs, pontos de atenção}
227
+ ```
228
+
229
+ ## Quality Gate (por task)
230
+
231
+ > Checklist obrigatório. O Reviewer valida TODOS os itens antes de aprovar.
232
+
233
+ - [ ] Código compila sem erros
234
+ - [ ] Testes passam (se aplicável à task)
235
+ - [ ] Lint limpo (sem warnings não justificados)
236
+ - [ ] Critérios de aceite da task atendidos (ref `specs/{nome}/scenarios.md`)
237
+ - [ ] Sem TODOs no código sem justificativa
238
+ - [ ] Sem secrets hardcoded
239
+ - [ ] Commit segue convenção: `tipo(TASK-ID): descrição`
240
+ - [ ] Arquivos listados na task foram os únicos modificados (sem side effects)
241
+
242
+ ## Regras por Stack
243
+
244
+ > Seção opcional. Adicionar regras específicas da tecnologia escolhida.
245
+ > Exemplos abaixo — remover/ajustar conforme o projeto.
246
+
247
+ <!--
248
+ ### Node.js / TypeScript
249
+ - ESLint + Prettier como formatador
250
+ - Strict mode no tsconfig
251
+ - Path aliases configurados (@/modules, @/shared)
252
+
253
+ ### Python
254
+ - Ruff como linter/formatter
255
+ - Type hints obrigatórios (mypy strict)
256
+ - Virtual environment (venv ou poetry)
257
+
258
+ ### React / Next.js
259
+ - Server Components por padrão, Client Components só quando necessário
260
+ - Zustand ou Context para estado global (não Redux)
261
+ - Tailwind CSS para estilos
262
+ -->
263
+
264
+ ---
265
+
266
+ > **Atualização**: Editado manualmente pelo time. Aplicado globalmente a todas as features.
@@ -161,6 +161,17 @@ git pull --ff-only
161
161
 
162
162
  Capturar `commit_hash` resultante (`git rev-parse HEAD`) — vai pro snapshot.
163
163
 
164
+ > ⚠️ **Working directory NÃO muda**. O agente continua operando da raiz SFW.
165
+ > Use `git -C projetos/<repo-name> <comando>` em vez de `cd`. Comandos que
166
+ > precisam executar dentro do repo (linters, tree, etc.) usam path explícito
167
+ > ou flag `-C` equivalente.
168
+ >
169
+ > **NÃO carregar** `copilot-instructions.md`, `.github/copilot-instructions.md`, `.cursorrules`,
170
+ > `AGENTS.md` ou qualquer arquivo de instrução que exista DENTRO de
171
+ > `projetos/<repo-name>/` — esses pertencem ao time do repo legado e não fazem
172
+ > parte do contrato SFW. Padrões relevantes serão extraídos pelo Patterns Reader
173
+ > e documentados em TRD §1.6.
174
+
164
175
  ### 4. Criar `.context.md`
165
176
 
166
177
  ```yaml