kakaroto-config 1.0.5 → 1.0.6

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 (47) hide show
  1. package/config/ARCHITECTURE.md +5 -7
  2. package/config/CLAUDE.md +11 -0
  3. package/config/agents/code-reviewer.md +66 -230
  4. package/config/agents/code-simplifier.md +70 -116
  5. package/config/agents/{visual-validator.md → functional-validator.md} +118 -92
  6. package/config/agents/memory-sync.md +193 -134
  7. package/config/commands/debug/02-investigate.md +3 -3
  8. package/config/commands/debug/03-fix.md +28 -6
  9. package/config/commands/debug/05-commit.md +1 -1
  10. package/config/commands/debug/validators/fix-permanence.md +1 -1
  11. package/config/commands/feature/01-understand.md +217 -0
  12. package/config/commands/feature/02-analyze.md +168 -0
  13. package/config/commands/feature/03-strategy.md +300 -0
  14. package/config/commands/feature/04-red.md +160 -0
  15. package/config/commands/feature/05-green.md +179 -0
  16. package/config/commands/feature/06-quality.md +109 -0
  17. package/config/commands/feature/07-validation.md +168 -0
  18. package/config/commands/feature/08-delivery.md +86 -0
  19. package/config/commands/feature/09-evaluate.md +140 -0
  20. package/config/commands/feature/playbooks/_e2e-base.md +39 -0
  21. package/config/commands/feature/playbooks/api/analyze.md +20 -0
  22. package/config/commands/feature/playbooks/api/e2e.md +29 -0
  23. package/config/commands/feature/playbooks/api/red.md +66 -0
  24. package/config/commands/feature/playbooks/job/analyze.md +29 -0
  25. package/config/commands/feature/playbooks/job/e2e.md +30 -0
  26. package/config/commands/feature/playbooks/job/red.md +77 -0
  27. package/config/commands/feature/playbooks/service/analyze.md +28 -0
  28. package/config/commands/feature/playbooks/service/e2e.md +25 -0
  29. package/config/commands/feature/playbooks/service/red.md +75 -0
  30. package/config/commands/feature/playbooks/ui/analyze.md +26 -0
  31. package/config/commands/feature/playbooks/ui/e2e.md +61 -0
  32. package/config/commands/feature/playbooks/ui/red.md +71 -0
  33. package/config/commands/feature.md +37 -4
  34. package/config/commands/gate.md +11 -23
  35. package/config/templates/spec-template.md +82 -68
  36. package/package.json +1 -1
  37. package/config/agents/dry-enforcer.md +0 -227
  38. package/config/commands/debug/techniques/flow-tracing.md +0 -75
  39. package/config/commands/debug/techniques/hypothesis-generation.md +0 -30
  40. package/config/commands/debug/techniques/sequential-thinking-config.md +0 -79
  41. package/config/commands/feature/01-interview.md +0 -143
  42. package/config/commands/feature/02-spec.md +0 -98
  43. package/config/commands/feature/03-planner.md +0 -200
  44. package/config/commands/feature/04-implement.md +0 -81
  45. package/config/commands/feature/05-quality.md +0 -140
  46. package/config/commands/feature/06-commit.md +0 -91
  47. package/config/commands/feature/07-evaluate.md +0 -129
@@ -1,30 +0,0 @@
1
- # Tecnica: Geracao de Hipoteses
2
-
3
- Antes de investigar profundamente, listar MULTIPLAS causas possiveis.
4
-
5
- ---
6
-
7
- ## Passo 1: Brainstorm (minimo 3 hipoteses)
8
-
9
- | # | Hipotese | Probabilidade | Evidencia Inicial |
10
- |---|----------|---------------|-------------------|
11
- | 1 | [causa A] | Alta/Media/Baixa | [o que sugere isso] |
12
- | 2 | [causa B] | Alta/Media/Baixa | [o que sugere isso] |
13
- | 3 | [causa C] | Alta/Media/Baixa | [o que sugere isso] |
14
-
15
- ---
16
-
17
- ## Passo 2: Ranking
18
-
19
- Ordenar hipoteses por:
20
- 1. **Evidencia existente** (logs, reproducao, erros)
21
- 2. **Frequencia historica** (bugs similares ja resolvidos)
22
- 3. **Simplicidade** (Navalha de Occam)
23
-
24
- ---
25
-
26
- ## Passo 3: Estrategia de Exploracao
27
-
28
- - Comecar pela hipotese #1 no Sequential Thinking
29
- - SE refutada: usar `branchFromThought` para explorar #2
30
- - Registrar hipoteses descartadas e POR QUE (evita repetir)
@@ -1,79 +0,0 @@
1
- # Tecnica: Sequential Thinking para Causa Raiz
2
-
3
- **OBRIGATORIO**: Usar `mcp__sequential-thinking__sequentialthinking` para analise profunda.
4
-
5
- ---
6
-
7
- ## Configuracao Inicial
8
-
9
- ```javascript
10
- mcp__sequential-thinking__sequentialthinking({
11
- thought: "[hipotese inicial baseada em evidencias]",
12
- nextThoughtNeeded: true,
13
- thoughtNumber: 1,
14
- totalThoughts: 8 // MINIMO 8 thoughts
15
- })
16
- ```
17
-
18
- ---
19
-
20
- ## Regras para Cada Thought
21
-
22
- Cada thought DEVE conter:
23
-
24
- 1. **Hipotese especifica**: "Acredito que o bug acontece porque..."
25
- 2. **Busca de evidencia**: Usar Grep/Read para encontrar arquivo:linha
26
- 3. **Avaliacao**: A evidencia suporta ou refuta a hipotese?
27
- 4. **Proxima acao**:
28
- - SE suporta: Ir mais fundo ("Por que isso acontece?")
29
- - SE refuta: Marcar `isRevision: true` e tentar alternativa
30
-
31
- ---
32
-
33
- ## Parametros Especiais
34
-
35
- | Parametro | Quando Usar |
36
- |-----------|-------------|
37
- | `isRevision: true` | Quando descartando hipotese anterior |
38
- | `revisesThought: N` | Indicar qual thought esta sendo revisado |
39
- | `branchFromThought: N` | Quando explorando caminho alternativo |
40
- | `branchId: "hipotese-2"` | Identificar o branch atual |
41
- | `needsMoreThoughts: true` | Se precisa ir mais fundo |
42
-
43
- ---
44
-
45
- ## Criterios de Parada
46
-
47
- Somente definir `nextThoughtNeeded: false` quando:
48
-
49
- - [ ] Chegou em algo que PODE SER MUDADO no codigo
50
- - [ ] Tem EVIDENCIA concreta (arquivo:linha + codigo)
51
- - [ ] Nao ha mais "por que?" logico para perguntar
52
- - [ ] A causa identificada explica TODOS os sintomas
53
-
54
- ---
55
-
56
- ## Exemplo de Fluxo
57
-
58
- ```
59
- Thought 1: "Hipotese: erro em validateInput()"
60
- → Grep encontra validacao em services/videoService.ts:45
61
- → Evidencia: funcao nao valida campo X
62
-
63
- Thought 2: "Por que nao valida campo X?"
64
- → Read services/videoService.ts
65
- → Evidencia: schema Zod nao inclui X (linha 12)
66
-
67
- Thought 3: "Por que schema nao inclui X?"
68
- → git log mostra: adicionado em commit abc123
69
- → Evidencia: campo X e novo, schema desatualizado
70
-
71
- Thought 4 (isRevision=true): "Mas wait, X deveria ser opcional..."
72
- → Re-analisando: o problema e que X e required no destino
73
-
74
- Thought 5: "Onde X e required?"
75
- → Grep encontra em api/handlers/upload.ts:78
76
- → Evidencia: handler espera X mas nao recebe
77
-
78
- ... continua ate causa raiz confirmada ...
79
- ```
@@ -1,143 +0,0 @@
1
- # Fase 1: Interview
2
-
3
- ## Passo 1: Entender o Request
4
-
5
- Analisar $ARGUMENTS para identificar:
6
- - Qual feature está sendo solicitada
7
- - Termos-chave para busca
8
- - Área provável do codebase (api/, components/, services/)
9
-
10
- ---
11
-
12
- ## Passo 2: Buscar Contexto Específico
13
-
14
- Baseado no Passo 1, carregar APENAS o necessário:
15
-
16
- ### 2.1 Memory (se relevante)
17
- ```
18
- mcp__memory__search_nodes({ query: "<termos-específicos-da-feature>" })
19
- ```
20
-
21
- ### 2.2 Codebase (áreas identificadas)
22
- ```
23
- Grep: termos em <área-específica>/
24
- Read: arquivos diretamente relacionados
25
- ```
26
-
27
- **Evitar:** `Glob: **/*.ts` ou buscas genéricas em todo codebase.
28
-
29
- ---
30
-
31
- ## Passo 3: Identificar Patterns (sob demanda)
32
-
33
- Após encontrar código relevante, identificar:
34
- - Como components/services similares funcionam
35
- - Como erros são tratados nessa área
36
- - Patterns específicos a seguir
37
-
38
- ---
39
-
40
- ## Passo 4: Reflexão
41
-
42
- Usar `mcp__sequential-thinking__sequentialthinking`:
43
-
44
- 1. **O que descobri** - Síntese do contexto carregado
45
- 2. **O que ainda posso descobrir** - Gaps que consigo preencher explorando mais
46
- 3. **O que APENAS o user pode responder** - Decisões de produto, preferências UX
47
- 4. **Formular perguntas mínimas** - Só o essencial
48
-
49
- `totalThoughts`: 4
50
-
51
- ---
52
-
53
- ## Passo 5: Perguntas ao User (APENAS decisões de produto)
54
-
55
- **Usar AskUserQuestion para todas as perguntas.**
56
-
57
- ### Perguntas típicas (adaptar ao contexto):
58
- - **Problema**: Qual problema principal resolve? (Eficiência/Funcionalidade/UX)
59
- - **Escopo**: MVP mínimo ou feature completa?
60
- - **Design**: Tem referência ou seguir patterns existentes?
61
- - **Trade-offs**: Se encontrar 2 approaches, qual preferir?
62
-
63
- Exemplo de uso:
64
- ```javascript
65
- AskUserQuestion({
66
- questions: [{
67
- question: "[pergunta específica]",
68
- header: "[2-3 palavras]",
69
- options: [
70
- { label: "[opção]", description: "[trade-off]" },
71
- { label: "[opção]", description: "[trade-off]" }
72
- ],
73
- multiSelect: false
74
- }]
75
- })
76
- ```
77
-
78
- ---
79
-
80
- ## Passo 6: Apresentar Descobertas
81
-
82
- Mostrar ao user:
83
- - Services/patterns encontrados
84
- - Tabelas relevantes do schema
85
- - Libs que serão usadas
86
- - Pattern que será seguido
87
-
88
- ---
89
-
90
- ## Passo 7: Persistir Interview
91
-
92
- ### 7.1 Gerar slug
93
- Primeira palavra do problema + data. Exemplo: `filtro-2026-01-10.md`
94
-
95
- ### 7.2 Salvar respostas
96
- ```
97
- Write .claude/interviews/{slug}.md
98
- Write .claude/interviews/current.md (cópia do conteúdo)
99
- ```
100
-
101
- ### 7.3 Formato do arquivo
102
- ```markdown
103
- # Interview: {feature-name}
104
-
105
- ## Contexto Descoberto
106
- - Services encontrados: [lista]
107
- - Patterns identificados: [lista]
108
- - Código reutilizável: [arquivos:linhas]
109
-
110
- ## Perguntas e Respostas
111
- | # | Pergunta | Resposta | Impacto na Implementação |
112
- |---|----------|----------|--------------------------|
113
- | 1 | [pergunta] | [resposta] | [como afeta] |
114
-
115
- ## Decisões Implícitas
116
- - [decisões inferidas do contexto ou defaults do projeto]
117
-
118
- ## Termos-chave para Busca
119
- - [termos que outras fases podem usar para grep/search]
120
- ```
121
-
122
- ---
123
-
124
- ## Passo 8: Checkpoint
125
-
126
- Usar TodoWrite para registrar items da fase Interview como "completed".
127
- Adicionar "Spec: gerar especificacao" como "pending".
128
-
129
- **Gate:** Todos items de Interview devem estar "completed" E interviews/current.md deve existir.
130
-
131
- ---
132
-
133
- ## Output
134
-
135
- Resumo estruturado:
136
- - Problema identificado
137
- - Escopo definido
138
- - Decisões de UX
139
- - Patterns a seguir
140
-
141
- ---
142
- ## PRÓXIMA FASE
143
- AÇÃO OBRIGATÓRIA: Read ~/.claude/commands/feature/02-spec.md
@@ -1,98 +0,0 @@
1
- # Fase 2: Spec
2
-
3
- ## Passo 0: Context
4
-
5
- Contexto de projeto ja carregado em 01-interview (mesma sessao).
6
-
7
- ### 0.1 Carregar Respostas da Interview
8
- ```
9
- Read .claude/interviews/current.md
10
- ```
11
- Este arquivo contém: perguntas respondidas, decisões implícitas, termos-chave.
12
- **Usar como referência** para manter consistência com o que foi acordado.
13
-
14
- ### 0.2 Buscar Patterns (se necessário)
15
- ```
16
- mcp__memory__search_nodes({ query: "pattern" })
17
- ```
18
-
19
- ### 0.3 SE retomando sessão interrompida
20
- ```
21
- Read .claude/interviews/current.md (contexto original)
22
- Read .claude/specs/current.md (spec parcial, se existir)
23
- ```
24
-
25
- ---
26
-
27
- ## Passo 1: Pensamento Estruturado
28
-
29
- Usar `mcp__sequential-thinking__sequentialthinking` para planejar:
30
-
31
- 1. **Thought 1**: Quais componentes esta feature precisa?
32
- 2. **Thought 2**: Onde código similar existe no codebase?
33
- 3. **Thought 3**: Quais patterns do projeto devo seguir?
34
- 4. **Thought 4**: Quais trade-offs arquiteturais existem?
35
- 5. **Thought 5**: Qual a abordagem mais simples que resolve?
36
-
37
- `totalThoughts`: 5-8 (ajustar conforme complexidade)
38
-
39
- ---
40
-
41
- ## Passo 2: Análise de Reutilização
42
-
43
- ### 2.1 Buscar Código Existente
44
- ```
45
- Grep: termos da feature em services/, utils/, lib/
46
- Glob: arquivos com nomes similares
47
- ```
48
-
49
- ### 2.2 Mapear Reutilização
50
- | Necessidade | Código Existente | Ação |
51
- |-------------|------------------|------|
52
- | [o que precisa] | [arquivo:linha] | Reutilizar/Estender/Criar |
53
-
54
- **Default = reutilizar. Código novo precisa justificativa.**
55
-
56
- ---
57
-
58
- ## Passo 3: Gerar Spec
59
-
60
- Carregar template:
61
- ```
62
- Read ~/.claude/templates/spec-template.md
63
- ```
64
-
65
- Preencher template com informações coletadas na interview.
66
-
67
- ---
68
-
69
- ## Output
70
-
71
- 1. MOSTRAR spec completa ao user (visibilidade)
72
- 2. Spec = contrato, implementacao deve seguir
73
-
74
- ---
75
-
76
- ## Passo 4: Persistir Spec
77
-
78
- 1. Gerar slug: primeira palavra do problema + data
79
- Exemplo: `filtro-2026-01-10.md`
80
-
81
- 2. Salvar spec:
82
- ```
83
- Write .claude/specs/{slug}.md
84
- Write .claude/specs/current.md (copia do conteudo)
85
- ```
86
-
87
- 3. Confirmar: "Spec salva em .claude/specs/{slug}.md"
88
-
89
- ---
90
-
91
- ## Passo 5: Checkpoint
92
-
93
- Usar TodoWrite para registrar items da fase Spec como "completed".
94
- Adicionar "Planner: criar plano de tarefas" como "pending".
95
-
96
- ---
97
- ## PROXIMA FASE
98
- ACAO OBRIGATORIA: Read ~/.claude/commands/feature/03-planner.md
@@ -1,200 +0,0 @@
1
- # Fase 3: Planner
2
-
3
- ## Passo 0: Context
4
-
5
- SE continuacao direta de 02-spec (mesma sessao):
6
- Contexto ja disponivel, prosseguir
7
-
8
- ### 0.1 Carregar Contexto da Interview (SE necessário)
9
- ```
10
- Read .claude/interviews/current.md
11
- ```
12
- Consultar SE surgir dúvida sobre decisões já tomadas na Interview.
13
- Evita re-perguntar o que já foi respondido.
14
-
15
- ### 0.2 SE retomando sessão interrompida
16
- ```
17
- Read .claude/interviews/current.md (decisões originais)
18
- Read .claude/specs/current.md (spec aprovada)
19
- Read .claude/plans/current.md (plano parcial, se existir)
20
- ```
21
-
22
- ---
23
-
24
- ## Passo 1: Pensamento Estruturado
25
-
26
- Usar `mcp__sequential-thinking__sequentialthinking` para planejar:
27
-
28
- 1. **Thought 1**: Quais são as dependências entre tarefas?
29
- 2. **Thought 2**: Qual ordem minimiza retrabalho?
30
- 3. **Thought 3**: Quais riscos podem bloquear implementação?
31
- 4. **Thought 4**: Onde reutilizar código vs criar novo?
32
- 5. **Thought 5**: Quais testes preciso para cada tarefa?
33
-
34
- `totalThoughts`: 5-7
35
-
36
- ---
37
-
38
- ## Passo 2: Análise Anti-Duplicação (OBRIGATÓRIO)
39
-
40
- ### 2.1 Mapeamento de Código Reutilizável
41
- | Necessidade | Código Existente | Arquivo:Linha | Ação |
42
- |-------------|------------------|---------------|------|
43
- | [o que precisa] | [helper/service] | [path:line] | Reutilizar/Estender/Criar |
44
-
45
- ### 2.2 Oportunidades de Abstração
46
- Se 3+ lugares usam padrão similar, criar abstração:
47
- | Padrão Repetido | Locais | Proposta |
48
- |-----------------|--------|----------|
49
- | [código duplicado] | [arquivos] | [helper/hook] |
50
-
51
- ### 2.3 Checklist
52
- - [ ] Justifiquei cada arquivo NOVO?
53
- - [ ] Verifiquei helpers similares existentes?
54
- - [ ] Código novo pode ser generalizado?
55
-
56
- ---
57
-
58
- ## Passo 3: Breakdown de Tarefas
59
-
60
- Criar lista ordenada baseada na spec:
61
-
62
- | # | Tarefa | Arquivos | Depende de |
63
- |---|--------|----------|------------|
64
- | 1 | [tarefa] | [arquivos] | - |
65
- | 1.1 | Testes para tarefa 1 | [*.test.ts] | 1 |
66
- | 2 | [tarefa] | [arquivos] | 1 |
67
- | 2.1 | Testes para tarefa 2 | [*.test.ts] | 2 |
68
-
69
- **Regras:**
70
- - Tarefas pequenas (< 30 min)
71
- - Uma responsabilidade por tarefa
72
- - Toda função nova = teste correspondente
73
- - Dependências claras
74
-
75
- ---
76
-
77
- ## Passo 4: Resumo de Arquivos
78
-
79
- **Criar:**
80
- - [novos arquivos]
81
-
82
- **Modificar:**
83
- - [arquivos existentes]
84
-
85
- **Deletar:**
86
- - [arquivos a remover]
87
-
88
- ---
89
-
90
- ## Passo 5: Riscos
91
-
92
- | Risco | Probabilidade | Mitigação |
93
- |-------|---------------|-----------|
94
- | [risco] | Alta/Média/Baixa | [como reduzir] |
95
-
96
- ---
97
-
98
- ## Passo 6: Quality Gates
99
-
100
- Apos implementacao:
101
- - [ ] `npm test` passa
102
- - [ ] `npx tsc --noEmit` sem erros
103
- - [ ] `npm run build` sucesso
104
-
105
- ---
106
-
107
- ## Passo 7: Registro de Decisões
108
-
109
- ### 7.1 Decisões Tomadas
110
- Documentar decisões feitas autonomamente durante o planejamento:
111
-
112
- | Decisão | Opções Consideradas | Escolha | Justificativa |
113
- |---------|---------------------|---------|---------------|
114
- | [ex: estrutura de dados] | Array / Map | Map | Lookup O(1) necessário |
115
- | [ex: local do código] | services/ / utils/ | services/ | Segue pattern existente |
116
-
117
- ### 7.2 Decisões Pendentes
118
- Listar decisões que APENAS o user pode tomar:
119
-
120
- | Decisão | Opções | Impacto na Feature |
121
- |---------|--------|-------------------|
122
- | [ex: formato export] | CSV / JSON / Excel | Afeta UX de download |
123
-
124
- **Critérios para classificar como "Pendente":**
125
- 1. Impacta comportamento/UX visível ao user final
126
- 2. Não existe default claro no projeto
127
- 3. Não foi respondida na Interview (verificar interviews/current.md)
128
-
129
- ---
130
-
131
- ## Passo 8: Clarificações (CONDICIONAL)
132
-
133
- **SE "Decisões Pendentes" NÃO estiver vazio:**
134
-
135
- Usar AskUserQuestion para resolver cada decisão pendente.
136
- **Limite:** Máximo 5 perguntas por execução.
137
-
138
- ```javascript
139
- AskUserQuestion({
140
- questions: [{
141
- question: "[Decisão pendente como pergunta]",
142
- header: "[2-3 palavras]",
143
- options: [
144
- { label: "[Opção A]", description: "[trade-off/impacto]" },
145
- { label: "[Opção B]", description: "[trade-off/impacto]" }
146
- ],
147
- multiSelect: false
148
- }]
149
- })
150
- ```
151
-
152
- Após respostas:
153
- 1. Mover decisões de "Pendentes" para "Tomadas"
154
- 2. Adicionar resposta do user na coluna "Escolha"
155
- 3. Atualizar plano se necessário
156
-
157
- **SE "Decisões Pendentes" estiver vazio:**
158
- Prosseguir direto para Passo 9.
159
-
160
- ---
161
-
162
- ## Passo 9: Persistir Plano
163
-
164
- 1. Usar mesmo slug da spec (gerado em 02-spec)
165
-
166
- 2. Salvar plano:
167
- ```
168
- Write .claude/plans/{slug}.md
169
- Write .claude/plans/current.md (copia do conteudo)
170
- ```
171
-
172
- ---
173
-
174
- ## Passo 10: Checkpoint
175
-
176
- Usar TodoWrite para registrar items da fase Planner como "completed".
177
- Adicionar "Implement: executar plano aprovado" como "pending".
178
-
179
- **Gates:**
180
- - Plano deve estar salvo
181
- - "Decisões Pendentes" deve estar vazio (todas resolvidas)
182
-
183
- ---
184
-
185
- ## Output
186
-
187
- 1. Salvar plano (usar TodoWrite para tracking)
188
- 2. Chamar `EnterPlanMode` (não AskUserQuestion para aprovação)
189
- 3. **AGUARDAR aprovacao do user**
190
-
191
- **Nota:** EnterPlanMode é para aprovar o PLANO. Decisões pendentes devem ser resolvidas ANTES via AskUserQuestion (Passo 8).
192
-
193
- ---
194
-
195
- ## Pos-Aprovacao
196
-
197
- Apos user aprovar via EnterPlanMode:
198
-
199
- ACAO OBRIGATORIA: Read ~/.claude/commands/feature/04-implement.md
200
- Executar implementacao de forma AUTONOMA.
@@ -1,81 +0,0 @@
1
- # Fase 4: Implement
2
-
3
- ## Contexto
4
- Plano foi aprovado. Executar de forma AUTÔNOMA até o fim.
5
-
6
- **Regras desta fase:**
7
- - Executar sem pedir confirmação ao user
8
- - Erros devem ser corrigidos, não abandonados
9
- - Seguir spec aprovada, não modificar escopo
10
- - Toda função nova precisa de teste
11
-
12
- ---
13
-
14
- ## Passo 1: Setup
15
-
16
- ### 1.1 Carregar Contexto
17
- ```
18
- Read .claude/specs/current.md (spec e o contrato)
19
- Read .claude/plans/current.md (plano aprovado)
20
- ```
21
-
22
- ### 1.2 Usar TodoWrite
23
- Registrar todas as tarefas do plano aprovado.
24
- Marcar como `in_progress` conforme executa.
25
-
26
- ### 1.3 Relembrar Spec
27
- A spec e o contrato. Implementacao DEVE seguir a spec.
28
-
29
- ---
30
-
31
- ## Passo 2: Implementação
32
-
33
- Para cada tarefa do plano:
34
-
35
- 1. **Marcar in_progress** (TodoWrite)
36
- 2. **Implementar** seguindo spec e patterns do projeto
37
- 3. **Criar teste** para cada função nova
38
- 4. **Marcar completed** (TodoWrite)
39
-
40
- ### Regras de Código
41
- - Funções < 50 linhas
42
- - Max 2 níveis de nesting
43
- - Tipos explícitos em exports
44
- - Reutilizar código existente (mapeado na spec)
45
-
46
- ### Regras de Testes
47
- - Toda função exportada = teste
48
- - Happy path + edge cases + erros
49
- - Seguir pattern de testes existentes no projeto
50
-
51
- ---
52
-
53
- ## Passo 3: Verificação Rápida
54
-
55
- Após implementar cada módulo:
56
- ```bash
57
- npm test -- --testPathPattern="[arquivo]"
58
- npx tsc --noEmit
59
- ```
60
-
61
- Se falhar: corrigir e continuar (não parar).
62
-
63
- ---
64
-
65
- ## Passo 4: Checkpoint
66
-
67
- Usar TodoWrite para marcar todas tarefas de implementação como "completed".
68
- Adicionar "Quality: executar quality gates" como "pending".
69
-
70
- **Gate:** Todas tarefas do plano devem estar "completed".
71
-
72
- ---
73
-
74
- ## Output
75
-
76
- Implementação completa.
77
-
78
- ---
79
- ## PRÓXIMA FASE
80
- AÇÃO OBRIGATÓRIA: Read ~/.claude/commands/feature/05-quality.md
81
-