kakaroto-config 1.0.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.
- package/README.md +48 -0
- package/bin/install.js +101 -0
- package/config/ARCHITECTURE.md +474 -0
- package/config/CLAUDE.md +24 -0
- package/config/agents/code-reviewer.md +265 -0
- package/config/agents/code-simplifier.md +151 -0
- package/config/agents/dry-enforcer.md +227 -0
- package/config/agents/memory-sync.md +140 -0
- package/config/agents/terraform-validator.md +275 -0
- package/config/agents/test-fixer.md +355 -0
- package/config/agents/visual-validator.md +296 -0
- package/config/commands/debug/01-investigate.md +119 -0
- package/config/commands/debug/02-fix.md +108 -0
- package/config/commands/debug/03-verify.md +66 -0
- package/config/commands/debug.md +19 -0
- package/config/commands/feature/01-interview.md +151 -0
- package/config/commands/feature/02-spec.md +174 -0
- package/config/commands/feature/03-planner.md +123 -0
- package/config/commands/feature/04-implement.md +74 -0
- package/config/commands/feature/05-quality.md +122 -0
- package/config/commands/feature.md +19 -0
- package/config/commands/gate.md +313 -0
- package/package.json +26 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memory-sync
|
|
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
|
+
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: haiku
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Memory Sync Protocol
|
|
9
|
+
|
|
10
|
+
Sincronizar conhecimento adquirido com MCP Memory apos desenvolvimento.
|
|
11
|
+
|
|
12
|
+
## Fase 1: Identificar Mudancas
|
|
13
|
+
|
|
14
|
+
1. `git diff --name-only` para listar arquivos modificados
|
|
15
|
+
2. `git diff --stat` para entender escopo das mudancas
|
|
16
|
+
3. Identificar o prefixo do projeto via `mcp__memory__search_nodes({ query: "config" })`
|
|
17
|
+
|
|
18
|
+
## Fase 2: Verificar Entidades Existentes
|
|
19
|
+
|
|
20
|
+
1. `mcp__memory__read_graph()` para ver todas entidades do projeto
|
|
21
|
+
2. Filtrar entidades pelo prefixo do projeto (ex: `sm:` para social-medias)
|
|
22
|
+
3. Para cada arquivo modificado/deletado:
|
|
23
|
+
- Buscar entidades que o referenciam (grep no campo observations)
|
|
24
|
+
- SE arquivo deletado -> marcar entidade para atualizacao
|
|
25
|
+
- SE arquivo renomeado -> atualizar referencias
|
|
26
|
+
- SE comportamento mudou -> atualizar observations
|
|
27
|
+
|
|
28
|
+
## Fase 3: Atualizar Entidades Obsoletas
|
|
29
|
+
|
|
30
|
+
Para cada entidade marcada:
|
|
31
|
+
|
|
32
|
+
1. SE arquivo nao existe mais E entidade depende exclusivamente dele:
|
|
33
|
+
- `mcp__memory__delete_entities({ entityNames: ["nome:da:entidade"] })`
|
|
34
|
+
|
|
35
|
+
2. SE arquivo renomeado:
|
|
36
|
+
- `mcp__memory__add_observations({ observations: [{ entityName: "X", contents: ["Novo path: novo/path.ts (renomeado de antigo/path.ts)"] }] })`
|
|
37
|
+
|
|
38
|
+
3. SE comportamento mudou:
|
|
39
|
+
- `mcp__memory__delete_observations` para info antiga
|
|
40
|
+
- `mcp__memory__add_observations` para info nova
|
|
41
|
+
|
|
42
|
+
## Fase 4: Criar Novas Entidades
|
|
43
|
+
|
|
44
|
+
Avaliar o que foi desenvolvido e criar entidades conforme tabela:
|
|
45
|
+
|
|
46
|
+
| Situacao | Namespace | Criar? |
|
|
47
|
+
|----------|-----------|--------|
|
|
48
|
+
| Padrao novo implementado | `{prefix}:pattern:{nome}` | SIM |
|
|
49
|
+
| Fluxo complexo entendido | `{prefix}:fluxo:{nome}` | SIM |
|
|
50
|
+
| Bug nao-obvio resolvido | `{prefix}:bug:{nome}` | SIM |
|
|
51
|
+
| Servico novo/modificado significativamente | `{prefix}:servico:{nome}` | SE significativo |
|
|
52
|
+
| Tipo importante descoberto | `{prefix}:tipo:{nome}` | SE reutilizavel |
|
|
53
|
+
| Procedimento documentado | `{prefix}:procedimento:{nome}` | SIM |
|
|
54
|
+
| Analise importante feita | `{prefix}:analise:{nome}` | SE referenciavel |
|
|
55
|
+
|
|
56
|
+
### Criterio "Vale Salvar"
|
|
57
|
+
|
|
58
|
+
**SALVAR SE:**
|
|
59
|
+
- Levou tempo para descobrir
|
|
60
|
+
- Nao e obvio pelo codigo
|
|
61
|
+
- Evita repetir investigacao futura
|
|
62
|
+
- Documenta decisao de design importante
|
|
63
|
+
- Seria util em proxima sessao
|
|
64
|
+
|
|
65
|
+
**NAO SALVAR:**
|
|
66
|
+
- Info trivial ou efemera
|
|
67
|
+
- Coisas obvias pelo codigo
|
|
68
|
+
- Detalhes de implementacao que mudam frequentemente
|
|
69
|
+
- Duplicatas de entidades existentes
|
|
70
|
+
|
|
71
|
+
### Formato de Entidade
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
mcp__memory__create_entities({
|
|
75
|
+
entities: [{
|
|
76
|
+
name: "{prefix}:{tipo}:{nome-kebab-case}",
|
|
77
|
+
entityType: "{tipo}", // pattern, bug, fluxo, servico, etc.
|
|
78
|
+
observations: [
|
|
79
|
+
"Primeira linha: resumo do que e",
|
|
80
|
+
"Segunda linha: arquivo principal: path/to/file.ts",
|
|
81
|
+
"Demais linhas: detalhes relevantes",
|
|
82
|
+
"Ultima linha: quando/por que foi criado"
|
|
83
|
+
]
|
|
84
|
+
}]
|
|
85
|
+
})
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Fase 5: Relatorio
|
|
89
|
+
|
|
90
|
+
Ao final, reportar:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
## Memory Sync Report
|
|
94
|
+
|
|
95
|
+
### Prefixo: {prefix}
|
|
96
|
+
|
|
97
|
+
### Entidades Atualizadas
|
|
98
|
+
- `{prefix}:pattern:X` - removida referencia a arquivo deletado
|
|
99
|
+
- `{prefix}:fluxo:Y` - atualizado comportamento
|
|
100
|
+
|
|
101
|
+
### Entidades Criadas
|
|
102
|
+
- `{prefix}:bug:Z` - bug nao-obvio resolvido
|
|
103
|
+
- Resumo: [descricao curta]
|
|
104
|
+
|
|
105
|
+
### Entidades Removidas
|
|
106
|
+
- `{prefix}:pattern:W` - obsoleta, arquivo nao existe mais
|
|
107
|
+
|
|
108
|
+
### Sem Alteracoes
|
|
109
|
+
- Nenhum conhecimento novo significativo para salvar
|
|
110
|
+
- OU: Todas entidades ja estao atualizadas
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Regras
|
|
114
|
+
|
|
115
|
+
1. **Prefixo obrigatorio**: Toda entidade deve usar o prefixo do projeto
|
|
116
|
+
2. **Nomes kebab-case**: `sm:bug:tiktok-media-id-vazio`, nao `sm:bug:TikTokMediaIdVazio`
|
|
117
|
+
3. **Observations atomicas**: Uma informacao por linha, facil de deletar/atualizar
|
|
118
|
+
4. **Nao duplicar**: Verificar se entidade similar ja existe antes de criar
|
|
119
|
+
5. **Minimalismo**: Na duvida, nao salvar. Menos entidades de qualidade > muitas entidades ruins
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Output Obrigatorio
|
|
124
|
+
|
|
125
|
+
Ao final do relatorio, SEMPRE incluir:
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
---AGENT_RESULT---
|
|
129
|
+
STATUS: PASS | FAIL
|
|
130
|
+
ISSUES_FOUND: <numero>
|
|
131
|
+
ISSUES_FIXED: <numero>
|
|
132
|
+
BLOCKING: true | false
|
|
133
|
+
---END_RESULT---
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Regras:
|
|
137
|
+
- STATUS=FAIL se sync falhou (erro de MCP Memory)
|
|
138
|
+
- BLOCKING=false (memory sync nao e critico, workflow pode continuar)
|
|
139
|
+
- ISSUES_FOUND = entidades obsoletas ou conhecimento novo identificado
|
|
140
|
+
- ISSUES_FIXED = entidades atualizadas/criadas/removidas
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: terraform-validator
|
|
3
|
+
description: "Terraform and environment configuration validator. Use PROACTIVELY when environment variables or Terraform files change. Validates consistency across all configuration files."
|
|
4
|
+
tools: Read, Edit, Grep, Glob, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Terraform Validator Agent
|
|
9
|
+
|
|
10
|
+
**IMPORTANTE:** Este agent e TOTALMENTE AUTONOMO. Ele corrige problemas automaticamente e so retorna quando a validacao passa OU apos esgotar tentativas.
|
|
11
|
+
|
|
12
|
+
**NAO PERGUNTAR:** Nunca pedir confirmacao. Corrigir e reportar.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 1. Load Configuration
|
|
17
|
+
|
|
18
|
+
1. Check for project-specific config:
|
|
19
|
+
```bash
|
|
20
|
+
cat .claude/terraform-validation.json 2>/dev/null
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
2. If not found, check for global defaults:
|
|
24
|
+
```bash
|
|
25
|
+
cat ~/.claude/terraform-validation-defaults.json 2>/dev/null
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
3. If neither found:
|
|
29
|
+
- Report: "No Terraform config found"
|
|
30
|
+
- **SKIP** - This is not a Terraform project
|
|
31
|
+
- Return PASS (nothing to validate)
|
|
32
|
+
|
|
33
|
+
4. Parse JSON and extract:
|
|
34
|
+
- `enabled` - if false, skip validation (return PASS)
|
|
35
|
+
- `files.envExample` - path to .env.example
|
|
36
|
+
- `files.variablesTf` - path to variables.tf
|
|
37
|
+
- `files.mainTf` - path to main.tf
|
|
38
|
+
- `files.tfvarsExample` - path to tfvars.example (optional)
|
|
39
|
+
- `pathPatterns.production` - production path pattern
|
|
40
|
+
- `pathPatterns.local` - local path pattern
|
|
41
|
+
- `maxFixAttempts` - max auto-fix attempts (default: 3)
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 2. Extract Variables from All Files
|
|
46
|
+
|
|
47
|
+
Using paths from config:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# From envExample (config.files.envExample)
|
|
51
|
+
grep -E "^[A-Z_]+=" {envExample} | cut -d= -f1 | sort
|
|
52
|
+
|
|
53
|
+
# From variablesTf (config.files.variablesTf)
|
|
54
|
+
grep 'variable "' {variablesTf} | sed 's/.*"\(.*\)".*/\1/' | sort
|
|
55
|
+
|
|
56
|
+
# From mainTf locals.env_vars (config.files.mainTf)
|
|
57
|
+
grep -A200 'env_vars = {' {mainTf} | grep -E '^\s+[A-Z_]+' | awk '{print $1}' | sort
|
|
58
|
+
|
|
59
|
+
# From tfvarsExample (config.files.tfvarsExample)
|
|
60
|
+
grep -E "^[a-z_]+\s*=" {tfvarsExample} | cut -d= -f1 | sort
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 3. Compare Sets
|
|
66
|
+
|
|
67
|
+
Check for inconsistencies:
|
|
68
|
+
|
|
69
|
+
| Check | Source | Target |
|
|
70
|
+
|-------|--------|--------|
|
|
71
|
+
| Code uses var but missing from env | Grep in *.ts | envExample |
|
|
72
|
+
| envExample has var but missing from variablesTf | envExample | variablesTf |
|
|
73
|
+
| variablesTf has var but missing from mainTf | variablesTf | mainTf locals |
|
|
74
|
+
| mainTf has var but missing from tfvarsExample | mainTf | tfvarsExample |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 4. Validate Path Patterns
|
|
79
|
+
|
|
80
|
+
Search for hardcoded paths using patterns from config:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# Production paths that should be env vars
|
|
84
|
+
grep -rn "'{productionPattern}" --include="*.ts" --include="*.tsx" .
|
|
85
|
+
grep -rn '"{productionPattern}' --include="*.ts" --include="*.tsx" .
|
|
86
|
+
|
|
87
|
+
# Local paths without env fallback
|
|
88
|
+
grep -rn "'{localPattern}" --include="*.ts" --include="*.tsx" . | grep -v "process.env"
|
|
89
|
+
grep -rn '"{localPattern}' --include="*.ts" --include="*.tsx" . | grep -v "process.env"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Correct pattern:** `process.env.VAR || '{localPattern}'`
|
|
93
|
+
**Incorrect:** Hardcoded `'{productionPattern}'` or `'{localPattern}'` without env
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 5. Validate Secrets Handling
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
grep -rn "console.log.*KEY\|console.log.*SECRET\|console.log.*TOKEN" --include="*.ts" --include="*.tsx" .
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
If found: CRITICAL - secrets being logged.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 6. Auto-Fix (Apply ALL Directly)
|
|
108
|
+
|
|
109
|
+
**REGRA:** Aplique TODAS as correcoes diretamente, sem pedir aprovacao.
|
|
110
|
+
|
|
111
|
+
| Issue Type | Action |
|
|
112
|
+
|------------|--------|
|
|
113
|
+
| Missing var in envExample | **Add** placeholder entry |
|
|
114
|
+
| Missing var in variablesTf | **Add** variable declaration with type and description |
|
|
115
|
+
| Missing var in mainTf locals | **Add** mapping in locals.env_vars |
|
|
116
|
+
| Missing var in tfvarsExample | **Add** placeholder entry |
|
|
117
|
+
| Hardcoded production path | **Replace** with `process.env.VAR \|\| '{localPattern}'` |
|
|
118
|
+
| Hardcoded local path without env | **Replace** with `process.env.VAR \|\| '{localPattern}'` |
|
|
119
|
+
|
|
120
|
+
### Fix Workflow
|
|
121
|
+
|
|
122
|
+
1. Identify all inconsistencies
|
|
123
|
+
2. **Automatically fix each one** (use Edit tool)
|
|
124
|
+
3. Run `npx tsc --noEmit` to verify no type errors introduced
|
|
125
|
+
4. Report summary of changes
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 7. Output Format
|
|
130
|
+
|
|
131
|
+
```markdown
|
|
132
|
+
## Terraform Validation Report
|
|
133
|
+
|
|
134
|
+
**Status:** PASS / FAIL
|
|
135
|
+
**Config:** .claude/terraform-validation.json
|
|
136
|
+
|
|
137
|
+
### Files Validated
|
|
138
|
+
|
|
139
|
+
| File | Path | Status |
|
|
140
|
+
|------|------|--------|
|
|
141
|
+
| envExample | {path} | OK/MISSING |
|
|
142
|
+
| variablesTf | {path} | OK/MISSING |
|
|
143
|
+
| mainTf | {path} | OK/MISSING |
|
|
144
|
+
| tfvarsExample | {path} | OK/MISSING |
|
|
145
|
+
|
|
146
|
+
### Variable Consistency
|
|
147
|
+
|
|
148
|
+
| Variable | envExample | variablesTf | mainTf | tfvarsExample |
|
|
149
|
+
|----------|------------|-------------|--------|---------------|
|
|
150
|
+
| VAR_NAME | YES/NO | YES/NO | YES/NO | YES/NO |
|
|
151
|
+
|
|
152
|
+
### Issues Found & Fixed
|
|
153
|
+
|
|
154
|
+
#### CRITICAL (auto-fixed)
|
|
155
|
+
- [Variable] missing from [file] -> Added
|
|
156
|
+
|
|
157
|
+
#### WARNING
|
|
158
|
+
- [Description] -> Fixed / Requires manual review
|
|
159
|
+
|
|
160
|
+
### Path Validation
|
|
161
|
+
|
|
162
|
+
| File | Line | Pattern | Status |
|
|
163
|
+
|------|------|---------|--------|
|
|
164
|
+
| [file] | [line] | [code] | OK/FIXED |
|
|
165
|
+
|
|
166
|
+
### Summary
|
|
167
|
+
|
|
168
|
+
- Variables checked: X
|
|
169
|
+
- Consistency issues found: X
|
|
170
|
+
- Consistency issues fixed: X
|
|
171
|
+
- Hardcoded paths found: X
|
|
172
|
+
- Hardcoded paths fixed: X
|
|
173
|
+
- **Status:** READY / NEEDS MANUAL FIXES
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 8. Quality Gates
|
|
179
|
+
|
|
180
|
+
After all fixes:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
npx tsc --noEmit
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Must pass before marking complete.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Validation Rules Reference
|
|
191
|
+
|
|
192
|
+
### 1. Variable Consistency
|
|
193
|
+
|
|
194
|
+
Every env var MUST exist in:
|
|
195
|
+
- [ ] envExample (with placeholder value)
|
|
196
|
+
- [ ] variablesTf (with description and type)
|
|
197
|
+
- [ ] mainTf locals.env_vars (mapped to Terraform var)
|
|
198
|
+
- [ ] tfvarsExample (with example/placeholder)
|
|
199
|
+
|
|
200
|
+
### 2. Path Patterns
|
|
201
|
+
|
|
202
|
+
**Correct:**
|
|
203
|
+
```typescript
|
|
204
|
+
const dataDir = process.env.DATA_DIR || './data';
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Incorrect:**
|
|
208
|
+
```typescript
|
|
209
|
+
const dataDir = './data'; // Breaks in production
|
|
210
|
+
const dataDir = '/app/data'; // Breaks locally
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### 3. Terraform Variable Types
|
|
214
|
+
|
|
215
|
+
| Type | Use For |
|
|
216
|
+
|------|---------|
|
|
217
|
+
| `string` | Single values |
|
|
218
|
+
| `bool` | Feature flags |
|
|
219
|
+
| `number` | Numeric configs |
|
|
220
|
+
| `list(string)` | Multiple values |
|
|
221
|
+
|
|
222
|
+
Sensitive variables should have `sensitive = true`.
|
|
223
|
+
|
|
224
|
+
### 4. GCP Authentication
|
|
225
|
+
|
|
226
|
+
Must work in BOTH:
|
|
227
|
+
- Local: `GOOGLE_APPLICATION_CREDENTIALS` env var
|
|
228
|
+
- Production: ADC (Application Default Credentials) via service account
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Error Recovery
|
|
233
|
+
|
|
234
|
+
If validation fails unexpectedly:
|
|
235
|
+
|
|
236
|
+
1. **File not found:**
|
|
237
|
+
- Check if path in config is correct
|
|
238
|
+
- Verify relative path is from project root
|
|
239
|
+
- Mark file as MISSING in report, continue with others
|
|
240
|
+
|
|
241
|
+
2. **Parse error in Terraform:**
|
|
242
|
+
- Run `terraform validate` to get detailed error
|
|
243
|
+
- Report error to user (cannot auto-fix syntax errors)
|
|
244
|
+
- Mark as FAIL
|
|
245
|
+
|
|
246
|
+
3. **Type check fails after fix:**
|
|
247
|
+
- Revert the fix
|
|
248
|
+
- Report as "needs manual review"
|
|
249
|
+
- Continue with other fixes
|
|
250
|
+
|
|
251
|
+
4. **Persistent failure after maxFixAttempts:**
|
|
252
|
+
- Report detailed error log
|
|
253
|
+
- List all unfixed issues
|
|
254
|
+
- Mark as FAIL
|
|
255
|
+
- Return to caller for manual intervention
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Output Obrigatorio
|
|
260
|
+
|
|
261
|
+
Ao final do relatorio, SEMPRE incluir:
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
---AGENT_RESULT---
|
|
265
|
+
STATUS: PASS | FAIL
|
|
266
|
+
ISSUES_FOUND: <numero>
|
|
267
|
+
ISSUES_FIXED: <numero>
|
|
268
|
+
BLOCKING: true | false
|
|
269
|
+
---END_RESULT---
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Regras:
|
|
273
|
+
- STATUS=FAIL se inconsistencias de variaveis nao corrigidas
|
|
274
|
+
- BLOCKING=true se env vars criticas faltando ou paths hardcoded em producao
|
|
275
|
+
- BLOCKING=false se apenas warnings de tfvars ou variaveis opcionais
|