kakaroto-config 1.0.4 → 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.
- package/config/ARCHITECTURE.md +5 -7
- package/config/CLAUDE.md +11 -0
- package/config/agents/code-reviewer.md +66 -230
- package/config/agents/code-simplifier.md +70 -116
- package/config/agents/{visual-validator.md → functional-validator.md} +118 -92
- package/config/agents/memory-sync.md +193 -134
- package/config/commands/debug/02-investigate.md +3 -3
- package/config/commands/debug/03-fix.md +28 -6
- package/config/commands/debug/05-commit.md +1 -1
- package/config/commands/debug/validators/fix-permanence.md +1 -1
- package/config/commands/feature/01-understand.md +217 -0
- package/config/commands/feature/02-analyze.md +168 -0
- package/config/commands/feature/03-strategy.md +300 -0
- package/config/commands/feature/04-red.md +160 -0
- package/config/commands/feature/05-green.md +179 -0
- package/config/commands/feature/06-quality.md +109 -0
- package/config/commands/feature/07-validation.md +168 -0
- package/config/commands/feature/08-delivery.md +86 -0
- package/config/commands/feature/09-evaluate.md +140 -0
- package/config/commands/feature/playbooks/_e2e-base.md +39 -0
- package/config/commands/feature/playbooks/api/analyze.md +20 -0
- package/config/commands/feature/playbooks/api/e2e.md +29 -0
- package/config/commands/feature/playbooks/api/red.md +66 -0
- package/config/commands/feature/playbooks/job/analyze.md +29 -0
- package/config/commands/feature/playbooks/job/e2e.md +30 -0
- package/config/commands/feature/playbooks/job/red.md +77 -0
- package/config/commands/feature/playbooks/service/analyze.md +28 -0
- package/config/commands/feature/playbooks/service/e2e.md +25 -0
- package/config/commands/feature/playbooks/service/red.md +75 -0
- package/config/commands/feature/playbooks/ui/analyze.md +26 -0
- package/config/commands/feature/playbooks/ui/e2e.md +61 -0
- package/config/commands/feature/playbooks/ui/red.md +71 -0
- package/config/commands/feature.md +37 -4
- package/config/commands/gate.md +11 -23
- package/config/templates/spec-template.md +82 -68
- package/package.json +3 -3
- package/config/agents/dry-enforcer.md +0 -227
- package/config/commands/debug/techniques/flow-tracing.md +0 -75
- package/config/commands/debug/techniques/hypothesis-generation.md +0 -30
- package/config/commands/debug/techniques/sequential-thinking-config.md +0 -79
- package/config/commands/feature/01-interview.md +0 -143
- package/config/commands/feature/02-spec.md +0 -98
- package/config/commands/feature/03-planner.md +0 -200
- package/config/commands/feature/04-implement.md +0 -81
- package/config/commands/feature/05-quality.md +0 -140
- package/config/commands/feature/06-commit.md +0 -91
- package/config/commands/feature/07-evaluate.md +0 -129
|
@@ -2,207 +2,266 @@
|
|
|
2
2
|
name: memory-sync
|
|
3
3
|
description: "Memory synchronization specialist. Use PROACTIVELY after implementation to sync knowledge graph with code changes. Updates obsolete entities and creates new ones for acquired knowledge."
|
|
4
4
|
tools: Read, Grep, Glob, Bash, mcp__memory__read_graph, mcp__memory__search_nodes, mcp__memory__create_entities, mcp__memory__add_observations, mcp__memory__delete_entities, mcp__memory__delete_observations
|
|
5
|
-
model:
|
|
5
|
+
model: sonnet
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Memory Sync Protocol
|
|
9
9
|
|
|
10
|
-
Sincronizar conhecimento adquirido com MCP Memory
|
|
10
|
+
Sincronizar conhecimento adquirido com MCP Memory.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
**PERGUNTA CENTRAL:** "Se eu voltasse a este projeto em 6 meses, o que gostaria de saber que NAO consigo descobrir facilmente pelo codigo?"
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## LIMITES HARD
|
|
17
|
+
|
|
18
|
+
| Recurso | Limite |
|
|
19
|
+
|---------|--------|
|
|
20
|
+
| Entidades por projeto | **10** |
|
|
21
|
+
| Observations por entidade | **6** |
|
|
22
|
+
| GC trigger | > 8 entidades |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Fase 0: SKIP CHECK (EXECUTAR PRIMEIRO)
|
|
27
|
+
|
|
28
|
+
**Antes de qualquer operacao, verificar se sync e necessario.**
|
|
29
|
+
|
|
30
|
+
### Coletar Metricas
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
git diff --stat HEAD~1 # ou desde ultimo commit relevante
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Criterios de SKIP
|
|
37
|
+
|
|
38
|
+
PULAR memory-sync se **TODOS** verdadeiros:
|
|
39
|
+
|
|
40
|
+
| Criterio | Check |
|
|
41
|
+
|----------|-------|
|
|
42
|
+
| Mudanca pequena | `git diff --stat` mostra < 30 linhas |
|
|
43
|
+
| Sem arquivos novos | Nenhum arquivo criado em `services/`, `api/`, `cron/` |
|
|
44
|
+
| Tipo trivial | Foi apenas: fix typo, refactor, docs, test |
|
|
45
|
+
| Duracao curta | Trabalho levou < 20 min |
|
|
46
|
+
| Sem descoberta | Nao houve "aha moment" ou investigacao longa |
|
|
47
|
+
|
|
48
|
+
### Acao se SKIP
|
|
17
49
|
|
|
18
|
-
|
|
50
|
+
```
|
|
51
|
+
---AGENT_RESULT---
|
|
52
|
+
STATUS: SKIP
|
|
53
|
+
REASON: trivial change (< 30 lines, no new knowledge)
|
|
54
|
+
BLOCKING: false
|
|
55
|
+
---END_RESULT---
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**SE qualquer criterio falhar → continuar para Fase 1.**
|
|
59
|
+
|
|
60
|
+
---
|
|
19
61
|
|
|
20
|
-
|
|
21
|
-
2. Filtrar entidades pelo prefixo do projeto (ex: `sm:` para social-medias)
|
|
22
|
-
3. **CONTAR entidades do projeto atual**:
|
|
23
|
-
- Se > 50 entidades → executar Garbage Collection abaixo
|
|
24
|
-
- Se ≤ 50 → prosseguir normalmente
|
|
62
|
+
## Fase 1: HEALTH CHECK
|
|
25
63
|
|
|
26
|
-
|
|
64
|
+
**Verificar saude das entidades existentes antes de modificar.**
|
|
27
65
|
|
|
28
|
-
|
|
66
|
+
```javascript
|
|
67
|
+
const graph = mcp__memory__read_graph()
|
|
68
|
+
const entities = graph.entities.filter(e => e.name.startsWith(prefix))
|
|
69
|
+
```
|
|
29
70
|
|
|
30
|
-
|
|
31
|
-
|-----------|----------|------|
|
|
32
|
-
| Bugs | entityType === "bug" | DELETE todos |
|
|
33
|
-
| Outros projetos | nome não começa com prefixo atual | DELETE |
|
|
34
|
-
| Versões duplicadas | nome contém "-v2", "-v3" | MERGE em original, DELETE versão |
|
|
35
|
-
| Arquivos inexistentes | observation referencia arquivo deletado | DELETE se única referência |
|
|
71
|
+
### Verificacoes
|
|
36
72
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
73
|
+
| Check | Acao |
|
|
74
|
+
|-------|------|
|
|
75
|
+
| Observation menciona arquivo? | `Glob` para verificar se existe |
|
|
76
|
+
| Observation tem data > 90 dias? | Marcar como STALE |
|
|
77
|
+
| Entidade Tier 3 > 60 dias sem update? | Candidata a DELETE |
|
|
78
|
+
| Entidade tem observations duplicadas? | Candidata a CONSOLIDAR |
|
|
42
79
|
|
|
43
|
-
|
|
80
|
+
### Reportar
|
|
44
81
|
|
|
45
|
-
|
|
82
|
+
```
|
|
83
|
+
Health Check:
|
|
84
|
+
- Total: {n} entidades
|
|
85
|
+
- Healthy: {n}
|
|
86
|
+
- Stale (> 90 dias): {lista}
|
|
87
|
+
- Arquivos inexistentes: {lista}
|
|
88
|
+
```
|
|
46
89
|
|
|
47
|
-
|
|
48
|
-
- `mcp__memory__delete_entities({ entityNames: ["nome:da:entidade"] })`
|
|
90
|
+
**SE encontrou stale/inexistentes → limpar antes de prosseguir.**
|
|
49
91
|
|
|
50
|
-
|
|
51
|
-
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Fase 2: CLEANUP (se necessario)
|
|
52
95
|
|
|
53
|
-
|
|
54
|
-
- `mcp__memory__delete_observations` para info antiga
|
|
55
|
-
- `mcp__memory__add_observations` para info nova
|
|
96
|
+
**Executar se > 8 entidades OU health check encontrou problemas.**
|
|
56
97
|
|
|
57
|
-
|
|
98
|
+
Prioridade de DELETE:
|
|
99
|
+
1. Entidades com arquivos inexistentes
|
|
100
|
+
2. Tier 3 (patterns) > 60 dias
|
|
101
|
+
3. Tier 2 mais antigos (por data na observation)
|
|
102
|
+
4. **NUNCA** deletar Tier 1
|
|
58
103
|
|
|
59
|
-
|
|
104
|
+
---
|
|
60
105
|
|
|
61
|
-
|
|
62
|
-
|----------|-----------|--------|
|
|
63
|
-
| Padrão novo implementado | `{prefix}:pattern:{nome}` | SIM |
|
|
64
|
-
| Fluxo complexo entendido | `{prefix}:fluxo:{nome}` | SIM |
|
|
65
|
-
| Serviço novo/modificado significativamente | `{prefix}:servico:{nome}` | SE significativo |
|
|
66
|
-
| Tipo importante descoberto | `{prefix}:tipo:{nome}` | SE reutilizável |
|
|
67
|
-
| Procedimento documentado | `{prefix}:procedimento:{nome}` | SIM |
|
|
68
|
-
| Análise importante feita | `{prefix}:analise:{nome}` | SE referenciável |
|
|
69
|
-
| Config de projeto | `{prefix}:config:{nome}` | APENAS config:main |
|
|
106
|
+
## Fase 3: AVALIAR NOVO CONHECIMENTO
|
|
70
107
|
|
|
71
|
-
|
|
108
|
+
Para cada coisa aprendida durante o trabalho:
|
|
72
109
|
|
|
73
|
-
|
|
110
|
+
```
|
|
111
|
+
1. grep/ls encontra em < 30s? → NAO SALVAR
|
|
112
|
+
2. E trivial ou efemero? → NAO SALVAR
|
|
113
|
+
3. Ja existe entidade similar? → ATUALIZAR existente
|
|
114
|
+
4. Passa criterio do Tier? → SALVAR
|
|
115
|
+
5. Caso contrario → NAO SALVAR
|
|
116
|
+
```
|
|
74
117
|
|
|
75
|
-
|
|
76
|
-
- Levou tempo para descobrir
|
|
77
|
-
- Nao e obvio pelo codigo
|
|
78
|
-
- Evita repetir investigacao futura
|
|
79
|
-
- Documenta decisao de design importante
|
|
80
|
-
- Seria util em proxima sessao
|
|
118
|
+
---
|
|
81
119
|
|
|
82
|
-
|
|
83
|
-
- Info trivial ou efemera
|
|
84
|
-
- Coisas obvias pelo codigo
|
|
85
|
-
- Detalhes de implementacao que mudam frequentemente
|
|
86
|
-
- Duplicatas de entidades existentes
|
|
120
|
+
## Fase 4: CRIAR/ATUALIZAR (se necessario)
|
|
87
121
|
|
|
88
|
-
###
|
|
122
|
+
### Formato Temporal Obrigatorio
|
|
89
123
|
|
|
90
|
-
|
|
124
|
+
**TODA observation datada DEVE ter formato:**
|
|
91
125
|
|
|
92
126
|
```
|
|
93
|
-
[
|
|
94
|
-
[ ] Nome está em kebab-case?
|
|
95
|
-
[ ] Não é um bug? (bugs não devem ser salvos)
|
|
96
|
-
[ ] Não existe entidade similar? (usar search_nodes)
|
|
97
|
-
[ ] Não é versão de entidade existente? (update, não create)
|
|
98
|
-
[ ] Máximo 10 observations?
|
|
99
|
-
[ ] Informação não é óbvia pelo código?
|
|
127
|
+
"[YYYY-MM-DD] Informacao"
|
|
100
128
|
```
|
|
101
129
|
|
|
102
|
-
|
|
130
|
+
**Observations atemporais (fatos permanentes):**
|
|
103
131
|
|
|
104
|
-
|
|
132
|
+
```
|
|
133
|
+
"Comando: npm run test"
|
|
134
|
+
"Ordem: .env → variables.tf → main.tf"
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Exemplo Completo
|
|
105
138
|
|
|
106
139
|
```javascript
|
|
107
140
|
mcp__memory__create_entities({
|
|
108
141
|
entities: [{
|
|
109
|
-
name: "
|
|
110
|
-
entityType: "
|
|
142
|
+
name: "sm:procedimento:nova-env-var-secret",
|
|
143
|
+
entityType: "procedimento",
|
|
111
144
|
observations: [
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"
|
|
145
|
+
"Adicionar env var sensivel (secret) ao projeto",
|
|
146
|
+
"Ordem: .env.example → variables.tf → main.tf → tfvars.example → generate-tfvars.sh",
|
|
147
|
+
"5 arquivos precisam ser editados em sequencia correta",
|
|
148
|
+
"[2026-01-15] Descoberto apos errar a ordem 2x"
|
|
116
149
|
]
|
|
117
150
|
}]
|
|
118
151
|
})
|
|
119
152
|
```
|
|
120
153
|
|
|
121
|
-
|
|
154
|
+
---
|
|
122
155
|
|
|
123
|
-
|
|
156
|
+
## TAXONOMIA: 3 Tiers
|
|
124
157
|
|
|
125
|
-
|
|
126
|
-
## Memory Sync Report
|
|
158
|
+
### Tier 1: NUCLEO (NUNCA deletar)
|
|
127
159
|
|
|
128
|
-
|
|
160
|
+
| Entidade | Conteudo |
|
|
161
|
+
|----------|----------|
|
|
162
|
+
| `{prefix}:config:main` | Comandos, porta, quality gates |
|
|
163
|
+
| `{prefix}:stack:main` | Tecnologias e versoes |
|
|
129
164
|
|
|
130
|
-
|
|
131
|
-
- `{prefix}:pattern:X` - removida referencia a arquivo deletado
|
|
132
|
-
- `{prefix}:fluxo:Y` - atualizado comportamento
|
|
165
|
+
**Limite:** 2 entidades
|
|
133
166
|
|
|
134
|
-
###
|
|
135
|
-
- `{prefix}:bug:Z` - bug nao-obvio resolvido
|
|
136
|
-
- Resumo: [descricao curta]
|
|
167
|
+
### Tier 2: CONHECIMENTO TACITO (Raramente deletar)
|
|
137
168
|
|
|
138
|
-
|
|
139
|
-
|
|
169
|
+
| Tipo | Quando usar |
|
|
170
|
+
|------|-------------|
|
|
171
|
+
| `{prefix}:procedimento:*` | How-to que envolve 3+ arquivos |
|
|
172
|
+
| `{prefix}:decisao:*` | "Por que X ao inves de Y" com contexto externo |
|
|
173
|
+
| `{prefix}:integracao:*` | Conexao com sistema externo |
|
|
140
174
|
|
|
141
|
-
|
|
142
|
-
- Nenhum conhecimento novo significativo para salvar
|
|
143
|
-
- OU: Todas entidades ja estao atualizadas
|
|
144
|
-
```
|
|
175
|
+
**Criterio:** Levou > 30 min, envolve 3+ arquivos, grep nao encontra.
|
|
145
176
|
|
|
146
|
-
|
|
177
|
+
**Limite:** 5 entidades
|
|
147
178
|
|
|
148
|
-
###
|
|
179
|
+
### Tier 3: CONTEXTO (Deletar quando obsoleto)
|
|
149
180
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
181
|
+
| Tipo | Quando usar |
|
|
182
|
+
|------|-------------|
|
|
183
|
+
| `{prefix}:pattern:*` | Convencao nao documentada, facil de errar |
|
|
153
184
|
|
|
154
|
-
|
|
185
|
+
**Limite:** 3 entidades
|
|
155
186
|
|
|
156
|
-
|
|
157
|
-
5. **Max 50 entidades por projeto**: Se ultrapassar, fazer garbage collection
|
|
158
|
-
6. **Nomes kebab-case**: `sm:pattern:graceful-shutdown`, não `sm:pattern:GracefulShutdown`
|
|
159
|
-
7. **Observations atômicas**: Uma informação por linha, fácil de deletar/atualizar
|
|
187
|
+
---
|
|
160
188
|
|
|
161
|
-
|
|
189
|
+
## O QUE NUNCA SALVAR
|
|
162
190
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
191
|
+
```
|
|
192
|
+
❌ Tipos, funcoes, classes (grep encontra)
|
|
193
|
+
❌ Algoritmos (codigo e fonte)
|
|
194
|
+
❌ Bugs e fixes (commit message)
|
|
195
|
+
❌ Changelogs (git log)
|
|
196
|
+
❌ Estrutura de pastas (ls)
|
|
197
|
+
❌ Fluxos de codigo (seguir imports)
|
|
198
|
+
❌ Detalhes de implementacao
|
|
199
|
+
```
|
|
168
200
|
|
|
169
|
-
|
|
201
|
+
**REGRA:** Se `grep` ou `ls` encontra em < 30 segundos → NAO salvar.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Fase 5: RELATORIO
|
|
170
206
|
|
|
171
|
-
```javascript
|
|
172
|
-
// Identificar candidatas a remoção:
|
|
173
|
-
// 1. Entidades que referenciam arquivos deletados
|
|
174
|
-
// 2. Entidades com >15 observations (muito verbosas)
|
|
175
|
-
// 3. Entidades com informação duplicada de outra
|
|
176
|
-
// 4. Bugs antigos (>30 dias)
|
|
177
207
|
```
|
|
208
|
+
## Memory Sync Report
|
|
209
|
+
|
|
210
|
+
Prefixo: {prefix}
|
|
211
|
+
Status: SYNC | SKIP
|
|
212
|
+
|
|
213
|
+
### Health Check
|
|
214
|
+
- Healthy: {n}
|
|
215
|
+
- Stale: {lista ou "nenhum"}
|
|
216
|
+
- Cleaned: {lista ou "nenhum"}
|
|
217
|
+
|
|
218
|
+
### Entidades: {count}/10
|
|
219
|
+
- Tier 1 (Nucleo): {n}
|
|
220
|
+
- Tier 2 (Conhecimento): {n}
|
|
221
|
+
- Tier 3 (Contexto): {n}
|
|
178
222
|
|
|
179
|
-
###
|
|
223
|
+
### Acoes
|
|
224
|
+
- Criadas: {lista ou "nenhuma"}
|
|
225
|
+
- Atualizadas: {lista ou "nenhuma"}
|
|
226
|
+
- Deletadas: {lista ou "nenhuma"}
|
|
180
227
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
| Versões separadas | `sm:pattern:X-v2` | UPDATE `sm:pattern:X` |
|
|
185
|
-
| Cross-project | `ga:feature:Y` no sm: | DELETE - pertence a outro projeto |
|
|
186
|
-
| Observations demais | 17 observations | Condensar em 8-10 |
|
|
187
|
-
| Tipo duplicado | `pattern` + `padrao` | Usar apenas `pattern` |
|
|
228
|
+
### Decisao
|
|
229
|
+
- Nao salvei: {o que foi considerado mas rejeitado}
|
|
230
|
+
```
|
|
188
231
|
|
|
189
232
|
---
|
|
190
233
|
|
|
191
234
|
## Output Obrigatorio
|
|
192
235
|
|
|
193
|
-
Ao final do relatorio, SEMPRE incluir:
|
|
194
|
-
|
|
195
236
|
```
|
|
196
237
|
---AGENT_RESULT---
|
|
197
|
-
STATUS: PASS | FAIL
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
238
|
+
STATUS: PASS | SKIP | FAIL
|
|
239
|
+
REASON: {motivo se SKIP}
|
|
240
|
+
ENTITIES_BEFORE: {n}
|
|
241
|
+
ENTITIES_AFTER: {n}
|
|
242
|
+
HEALTH_ISSUES: {n}
|
|
243
|
+
BLOCKING: false
|
|
201
244
|
---END_RESULT---
|
|
202
245
|
```
|
|
203
246
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Quick Reference
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
FASE 0: Skip se mudanca trivial (< 30 linhas, < 20 min, sem descoberta)
|
|
253
|
+
FASE 1: Health check (arquivos existem? observations > 90 dias?)
|
|
254
|
+
FASE 2: Cleanup se > 8 entidades ou health issues
|
|
255
|
+
FASE 3: Avaliar novo conhecimento (grep test, tier criteria)
|
|
256
|
+
FASE 4: Criar/atualizar com formato temporal
|
|
257
|
+
FASE 5: Relatorio
|
|
258
|
+
|
|
259
|
+
SALVAR:
|
|
260
|
+
✅ Procedimentos multi-arquivo
|
|
261
|
+
✅ Decisoes com contexto externo
|
|
262
|
+
✅ Integracoes externas
|
|
263
|
+
✅ Patterns nao-obvios
|
|
264
|
+
|
|
265
|
+
NAO SALVAR:
|
|
266
|
+
❌ Qualquer coisa que grep encontra em < 30s
|
|
267
|
+
```
|
|
@@ -37,19 +37,19 @@ Identificar:
|
|
|
37
37
|
|
|
38
38
|
**SE** bug envolve dados incorretos (null, undefined, formato invalido):
|
|
39
39
|
|
|
40
|
-
ACAO: Read ~/.claude/
|
|
40
|
+
ACAO: Read ~/.claude/techniques/flow-tracing.md
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
44
44
|
## Passo 4: Geracao de Hipoteses
|
|
45
45
|
|
|
46
|
-
ACAO: Read ~/.claude/
|
|
46
|
+
ACAO: Read ~/.claude/techniques/hypothesis-generation.md
|
|
47
47
|
|
|
48
48
|
---
|
|
49
49
|
|
|
50
50
|
## Passo 5: Sequential Thinking
|
|
51
51
|
|
|
52
|
-
ACAO: Read ~/.claude/
|
|
52
|
+
ACAO: Read ~/.claude/techniques/sequential-thinking-config.md
|
|
53
53
|
|
|
54
54
|
**SE** categoria = Infra/Deploy:
|
|
55
55
|
Consultar secao "Fase: Investigate" em playbooks/infra.md
|
|
@@ -38,19 +38,41 @@ ACAO: Read ~/.claude/commands/debug/validators/fix-permanence.md
|
|
|
38
38
|
|
|
39
39
|
## Passo 4: Teste de Regressao
|
|
40
40
|
|
|
41
|
-
### 4.1
|
|
41
|
+
### 4.1 Usar Factories (se disponíveis)
|
|
42
|
+
|
|
43
|
+
**ANTES** de criar mocks inline, verificar test-utils/:
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
// ✅ Correto - usar factory centralizada
|
|
47
|
+
import { createBlogPost, createCampaign } from '../test-utils/factories';
|
|
48
|
+
|
|
49
|
+
describe('regression: bug-name', () => {
|
|
50
|
+
const post = createBlogPost({ /* setup que causava bug */ });
|
|
51
|
+
// ...
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// ❌ Errado - criar objeto inline
|
|
55
|
+
const post = {
|
|
56
|
+
id: 'test',
|
|
57
|
+
// ... 20+ campos duplicados
|
|
58
|
+
};
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 4.2 Criar Teste que Reproduz o Bug
|
|
42
62
|
|
|
43
63
|
```typescript
|
|
44
|
-
describe('[
|
|
45
|
-
it('should [comportamento esperado]', () => {
|
|
46
|
-
// Arrange: setup que causa o bug
|
|
47
|
-
// Act:
|
|
64
|
+
describe('regression: [nome descritivo do bug]', () => {
|
|
65
|
+
it('should [comportamento esperado após fix]', () => {
|
|
66
|
+
// Arrange: setup que causa o bug (usar factories!)
|
|
67
|
+
// Act: ação que dispara o bug
|
|
48
68
|
// Assert: verificar comportamento correto
|
|
49
69
|
})
|
|
50
70
|
})
|
|
51
71
|
```
|
|
52
72
|
|
|
53
|
-
|
|
73
|
+
**Naming:** Usar `describe('regression: ...')` para identificar testes de regressão.
|
|
74
|
+
|
|
75
|
+
### 4.3 Verificar que Teste FALHA
|
|
54
76
|
|
|
55
77
|
```bash
|
|
56
78
|
npm test -- --testPathPattern="[arquivo]"
|
|
@@ -48,7 +48,7 @@ Sincronizar conhecimento adquirido durante debug (NÃO bugs - esses são efêmer
|
|
|
48
48
|
```javascript
|
|
49
49
|
Task({
|
|
50
50
|
subagent_type: "memory-sync",
|
|
51
|
-
prompt: "Sincronizar knowledge graph após debug. IMPORTANTE: NÃO salvar o bug em si. Salvar apenas: patterns descobertos,
|
|
51
|
+
prompt: "Sincronizar knowledge graph após debug. Agent fará skip automático se mudança trivial. IMPORTANTE: NÃO salvar o bug em si. Salvar apenas: patterns descobertos, procedimentos documentados, decisões arquiteturais.",
|
|
52
52
|
description: "Sync memory graph"
|
|
53
53
|
})
|
|
54
54
|
```
|
|
@@ -31,7 +31,7 @@ O fix proposto sobrevive a:
|
|
|
31
31
|
**SE** qualquer resposta = NAO:
|
|
32
32
|
- Fix e PALIATIVO (sera perdido)
|
|
33
33
|
- **OBRIGATORIO**: Voltar para Investigate
|
|
34
|
-
- ACAO: Read ~/.claude/
|
|
34
|
+
- ACAO: Read ~/.claude/techniques/flow-tracing.md (Passo 4.1)
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|