agim-orchestrator 0.0.0-stage → 1.1.2
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/.opencode/skills/analise-de-legado/SKILL.md +173 -0
- package/.opencode/skills/auditoria-de-seguranca/SKILL.md +291 -0
- package/.opencode/skills/bible-rag-search/SKILL.md +190 -0
- package/.opencode/skills/code-review-and-quality/SKILL.md +302 -0
- package/.opencode/skills/code-simplification/SKILL.md +144 -0
- package/.opencode/skills/entrevista-orquestradora/SKILL.md +391 -0
- package/.opencode/skills/graphify-integration/SKILL.md +206 -0
- package/.opencode/skills/planejamento-de-tarefas/SKILL.md +156 -0
- package/.opencode/skills/revisao-de-interface/SKILL.md +201 -0
- package/.opencode/skills/revisao-final/SKILL.md +223 -0
- package/.opencode/skills/seguranca-continua/SKILL.md +296 -0
- package/.opencode/skills/spec-driven-development/SKILL.md +236 -0
- package/.opencode/skills/systematic-debugging/SKILL.md +176 -0
- package/.opencode/skills/testes-com-roteiro/SKILL.md +291 -0
- package/.opencode/skills/verification-before-completion/SKILL.md +264 -0
- package/AGENTS.en.md +346 -0
- package/AGENTS.md +346 -0
- package/ARCHITECTURE.md +761 -0
- package/CHANGELOG.md +138 -0
- package/CONTRIBUTING.md +423 -0
- package/INDEX.md +235 -0
- package/INOVACOES-AGIM.md +223 -0
- package/INTERVIEW.md +290 -0
- package/LICENSE +21 -0
- package/ORCHESTRATOR.md +228 -0
- package/README.en.md +374 -0
- package/README.md +373 -2
- package/SECURITY.md +50 -0
- package/SKILLS-CATALOG.md +295 -0
- package/SKILLS-SELECTION-MATRIX.md +182 -0
- package/SUB-AGENTES-AGIM.md +328 -0
- package/TOOLS-AND-MCP.md +365 -0
- package/checklists/DESENVOLVIMENTO.md +282 -0
- package/checklists/ENTREGA.md +272 -0
- package/checklists/INICIO.md +135 -0
- package/checklists/PUBLICACAO.md +299 -0
- package/checklists/REVISAO-DE-CODIGO.md +190 -0
- package/checklists/ROTEIRO-DE-TESTES.md +694 -0
- package/checklists/SEGURANCA.md +231 -0
- package/checklists/TESTES.md +215 -0
- package/checklists/USO-DE-IA.md +223 -0
- package/docs/ARQUITETURA.md +1414 -0
- package/docs/BOOTSTRAP-AMBIENTE.md +348 -0
- package/docs/CODIGO-LIMPO.md +708 -0
- package/docs/CONFIGURATION.md +226 -0
- package/docs/DECISOES-TECNICAS.md +518 -0
- package/docs/FERRAMENTAS-IA.md +406 -0
- package/docs/GITHUB.md +189 -0
- package/docs/IA-E-CONTEXTO.md +419 -0
- package/docs/QUICKSTART.md +198 -0
- package/docs/SEGURANCA.md +788 -0
- package/docs/SKILL-SYNERGY-TESTS.md +292 -0
- package/docs/SKILLS-REFERENCE.md +194 -0
- package/docs/TESTES.md +871 -0
- package/docs/TROUBLESHOOTING.md +377 -0
- package/docs/VALIDACAO-DO-REPOSITORIO.md +327 -0
- package/docs/VALIDACAO-USABILIDADE-4-CAMADAS.md +261 -0
- package/exemplos/arquitetura-modular/backend/prisma/schema.prisma +124 -0
- package/exemplos/arquitetura-modular/backend/src/controllers/usuarios.controller.ts +68 -0
- package/exemplos/arquitetura-modular/backend/src/repositories/usuarios.repository.ts +101 -0
- package/exemplos/arquitetura-modular/backend/src/routes/usuarios.routes.ts +58 -0
- package/exemplos/arquitetura-modular/backend/src/services/usuarios.service.ts +86 -0
- package/exemplos/arquitetura-modular/backend/src/types/usuario.types.ts +55 -0
- package/exemplos/arquitetura-modular/backend/src/validators/usuarios.validator.ts +61 -0
- package/exemplos/arquitetura-modular/frontend/src/hooks/useUsuarios.ts +63 -0
- package/exemplos/arquitetura-modular/frontend/src/pages/Usuarios/Lista.tsx +327 -0
- package/exemplos/arquitetura-modular/frontend/src/services/usuarios.api.ts +28 -0
- package/exemplos/arquitetura-modular/frontend/src/types/usuario.types.ts +63 -0
- package/package.json +67 -6
- package/scripts/agim-cli.cjs +332 -0
- package/scripts/auto-flow.cjs +395 -0
- package/scripts/bible-rag-index.js +169 -0
- package/scripts/bible-rag-search.js +162 -0
- package/scripts/bootstrap-detect.cjs +264 -0
- package/scripts/bootstrap-init.cjs +442 -0
- package/scripts/bootstrap-validate.cjs +302 -0
- package/scripts/check-content.mjs +236 -0
- package/scripts/config-schema.cjs +219 -0
- package/scripts/core-link.cjs +199 -0
- package/scripts/detect-resources.cjs +71 -0
- package/scripts/doctor.cjs +231 -0
- package/scripts/entrevista-orquestradora.cjs +317 -0
- package/scripts/lib/agents-md.cjs +279 -0
- package/scripts/lib/fs-utils.cjs +142 -0
- package/scripts/security-audit.cjs +168 -0
- package/scripts/status.cjs +86 -0
- package/scripts/sync-agents-md.cjs +109 -0
- package/scripts/teste-definitivo-1-ci.cjs +83 -0
- package/scripts/teste-definitivo-2-auditoria.cjs +240 -0
- package/scripts/teste-definitivo-3-ciclo.cjs +230 -0
- package/scripts/validar-estrutura.cjs +209 -0
- package/scripts/validar-exemplos.cjs +53 -0
- package/scripts/validar-links.cjs +111 -0
- package/scripts/validate-package.cjs +141 -0
- package/templates/AGENTS.md +290 -0
- package/templates/ARQUITETURA.md +363 -0
- package/templates/AUDITORIA-SEGURANCA.md +202 -0
- package/templates/DECISAO-TECNICA.md +161 -0
- package/templates/DIVIDA-TECNICA.md +322 -0
- package/templates/ESPECIFICACAO-FUNCIONAL.md +331 -0
- package/templates/PLANO-IMPLEMENTACAO.md +317 -0
- package/templates/PLANO-TESTES.md +180 -0
- package/templates/README.md +390 -0
- package/templates/REGISTRO-INCIDENTE.md +226 -0
- package/templates/RELATORIO-ENTREGA.md +284 -0
- package/templates/REVISAO-CODIGO.md +196 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analise-de-legado
|
|
3
|
+
description: "Inspeciona arquitetura, módulos, dependências e riscos antes de refatorações. Preserva funcionalidades e NÃO modifica código quando a solicitação for somente de análise. Baseada em reverse-engineer-anything, code-simplification e graphify."
|
|
4
|
+
argument-hint: "[caminho-projeto] [foco-opcional]"
|
|
5
|
+
license: MIT
|
|
6
|
+
metadata:
|
|
7
|
+
author: meu-padrao-de-desenvolvimento
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
domains: ["analise-legado", "engenharia-reversa", "refatoracao", "arquitetura"]
|
|
10
|
+
triggers: ["analisar legado", "entender código existente", "riscos refatoração", "mapear dependências", "documentar arquitetura"]
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Skill: Análise de Legado
|
|
14
|
+
|
|
15
|
+
## Objetivo
|
|
16
|
+
Compreender profundamente um código existente (legado ou não) antes de propor mudanças, identificando arquitetura, módulos, dependências, dívida técnica, riscos e oportunidades - **sem modificar o código** a menos que explicitamente solicitado para correção pontual.
|
|
17
|
+
|
|
18
|
+
## Quando Ativar
|
|
19
|
+
- Antes de refatorar/migrar sistema existente
|
|
20
|
+
- Onboarding em código desconhecido
|
|
21
|
+
- Auditoria técnica ou due diligence
|
|
22
|
+
- Documentação de arquitetura atual
|
|
23
|
+
- Investigação de bugs recorrentes
|
|
24
|
+
- Planejamento de migração/strangler fig
|
|
25
|
+
|
|
26
|
+
## Pré-condições
|
|
27
|
+
- Acesso ao código fonte (repositório local)
|
|
28
|
+
- `graphify` disponível (se instalado) para grafo de dependências
|
|
29
|
+
- Permissão de leitura em todo o projeto
|
|
30
|
+
- AGENTS.md e docs/ARQUITETURA.md lidos
|
|
31
|
+
|
|
32
|
+
## Procedimento de Execução
|
|
33
|
+
|
|
34
|
+
### Passo 1: Reconhecimento Inicial
|
|
35
|
+
1. **Estrutura geral**: `ls -la`, `tree` ou `glob` para mapear diretórios
|
|
36
|
+
2. **Arquivos de configuração**: package.json, tsconfig, prisma/schema, docker, CI/CD
|
|
37
|
+
3. **Entry points**: main, server, app, routes, index
|
|
38
|
+
3. **Documentação existente**: README, ARCHITECTURE, ADRs, comentários de arquitetura
|
|
39
|
+
|
|
40
|
+
### Passo 2: Mapear Arquitetura (Graphify + Inspeção)
|
|
41
|
+
**Se graphify disponível:**
|
|
42
|
+
- `graphify build` (se não existe `graphify-out/`)
|
|
43
|
+
- `graphify query "arquitetura geral do projeto"`
|
|
44
|
+
- `graphify query "módulos principais e dependências"`
|
|
45
|
+
- `graphify query "fluxo de dados: request → response"`
|
|
46
|
+
|
|
47
|
+
**Inspeção manual complementar:**
|
|
48
|
+
- Identificar camadas: routes → controllers → services → repositories → DB
|
|
49
|
+
- Padrões: modular, layered, feature-based, clean architecture
|
|
50
|
+
- Convenções: naming, estrutura pastas, imports, exports
|
|
51
|
+
|
|
52
|
+
### Passo 3: Analisar Módulos e Dependências
|
|
53
|
+
Para cada módulo principal:
|
|
54
|
+
| Módulo | Responsabilidade | Arquivos-chave | Dependências Internas | Dependências Externas | Acoplamento |
|
|
55
|
+
|--------|-----------------|----------------|----------------------|----------------------|-------------|
|
|
56
|
+
|
|
57
|
+
**Métricas de acoplamento:**
|
|
58
|
+
- Import fan-in/out
|
|
59
|
+
- Dependências circulares (`madge --circular` ou similar)
|
|
60
|
+
- Uso de `any`, `unknown`, type assertions excessivas
|
|
61
|
+
- God classes/modules (arquivos > 500 linhas, muitas responsabilidades)
|
|
62
|
+
|
|
63
|
+
### Passo 4: Identificar Dívida Técnica e Riscos
|
|
64
|
+
**Checklist sistemático:**
|
|
65
|
+
- [ ] **Arquivos grandes** (>300 linhas) sem separação clara
|
|
66
|
+
- [ ] **Dependências circulares** entre módulos
|
|
67
|
+
- [ ] **Duplicação de código** (funções, validações, tipos)
|
|
68
|
+
- [ ] **`any` excessivo** / tipagem fraca
|
|
69
|
+
- [ ] **Testes ausentes** ou insuficientes (cobertura < 70%)
|
|
70
|
+
- [ ] **Segredos no código** / `.env` commitado
|
|
71
|
+
- [ ] **Logs de debug** em produção
|
|
72
|
+
- [ ] **Tratamento de erro inconsistente** / `try/catch` vazio
|
|
73
|
+
- [ ] **Validação apenas no frontend** (sem backend)
|
|
74
|
+
- [ ] **Queries N+1** / performance suspeita
|
|
75
|
+
- [ ] **Migrações perigosas** (drop column, rename sem expand/contract)
|
|
76
|
+
- [ ] **Dependências desatualizadas/vulneráveis** (`npm audit`)
|
|
77
|
+
- [ ] **Código morto** / imports não utilizados / feature flags órfãs
|
|
78
|
+
- [ ] **Segurança**: authZ ausente, SQL injection, XSS, CSRF
|
|
79
|
+
|
|
80
|
+
### Passo 5: Analisar Fluxos Críticos
|
|
81
|
+
Para cada fluxo principal (ex: login, criar pedido, pagamento):
|
|
82
|
+
1. Rastrear: Route → Controller → Service → Repository → DB → Response
|
|
83
|
+
2. Identificar: validações, transações, eventos, side effects
|
|
84
|
+
3. Verificar: idempotência, rollback, observabilidade, timeouts
|
|
85
|
+
|
|
86
|
+
### Passo 6: Avaliar Testabilidade
|
|
87
|
+
- Cobertura atual (unit, integration, e2e)
|
|
88
|
+
- Mocks necessários vs dependências reais
|
|
89
|
+
- Fixtures/factories existentes
|
|
90
|
+
- CI/CD pipeline funcionando
|
|
91
|
+
|
|
92
|
+
### Passo 7: Documentar Achados
|
|
93
|
+
**Relatório de Análise:**
|
|
94
|
+
```
|
|
95
|
+
## Análise de Legado: [Projeto/Sistema]
|
|
96
|
+
|
|
97
|
+
### Visão Geral
|
|
98
|
+
- Stack: ...
|
|
99
|
+
- Tamanho: X arquivos, Y linhas, Z módulos
|
|
100
|
+
- Arquitetura: [modular/layered/monolito/outro]
|
|
101
|
+
|
|
102
|
+
### Módulos Principais
|
|
103
|
+
| Módulo | Arquivos | Responsabilidade | Riscos |
|
|
104
|
+
|
|
105
|
+
### Dependências Críticas
|
|
106
|
+
- Circulares: ...
|
|
107
|
+
- Externas desatualizadas: ...
|
|
108
|
+
- Acoplamento forte: ...
|
|
109
|
+
|
|
110
|
+
### Dívida Técnica (Priorizada)
|
|
111
|
+
1. [Crítico] ...
|
|
112
|
+
2. [Alto] ...
|
|
113
|
+
3. [Médio] ...
|
|
114
|
+
4. [Baixo] ...
|
|
115
|
+
|
|
116
|
+
### Riscos de Refatoração
|
|
117
|
+
| Risco | Probabilidade | Impacto | Mitigação |
|
|
118
|
+
|
|
119
|
+
### Oportunidades de Melhoria
|
|
120
|
+
- Quick wins: ...
|
|
121
|
+
- Médio prazo: ...
|
|
122
|
+
- Arquitetural: ...
|
|
123
|
+
|
|
124
|
+
### Recomendações
|
|
125
|
+
1. Não tocar em: [módulos estáveis]
|
|
126
|
+
2. Refatorar primeiro: [módulos de alto risco/valor]
|
|
127
|
+
3. Testes necessários antes: ...
|
|
128
|
+
4. Estrangulamento sugerido: ...
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Passo 8: Entregar (Somente Análise)
|
|
132
|
+
**Se solicitação for "apenas analisar":** Entregar relatório acima, **não modificar código**.
|
|
133
|
+
**Se solicitação incluir correção:** Aplicar apenas correções pontuais acordadas (ex: remover `console.log`, corrigir typo em comentário, ajustar import), documentando cada mudança.
|
|
134
|
+
|
|
135
|
+
## Ferramentas Necessárias
|
|
136
|
+
- `graphify` (grafo conhecimento)
|
|
137
|
+
- `madge` / `depcruise` (dependências circulares)
|
|
138
|
+
- `grep`/`rg` (busca padrões)
|
|
139
|
+
- `cloc` / `tokei` (estatísticas código)
|
|
140
|
+
- `npm audit` / `pnpm audit` (vulnerabilidades)
|
|
141
|
+
- `tools.context7` (docs libs externas encontradas)
|
|
142
|
+
|
|
143
|
+
## Limites de Responsabilidade
|
|
144
|
+
- **NÃO** refatora código (skill `code-simplification` ou implementação)
|
|
145
|
+
- **NÃO** escreve testes (skill `testes-com-roteiro` + `test-driven-development`)
|
|
146
|
+
- **NÃO** decide migração de stack (requer decisão arquitetural)
|
|
147
|
+
- **SIM** identifica o que precisa ser feito, em que ordem, com que riscos
|
|
148
|
+
- **SIM** preserva funcionalidades existentes como regra absoluta
|
|
149
|
+
|
|
150
|
+
## Critérios de Aceitação
|
|
151
|
+
- [ ] Arquitetura mapeada com módulos e responsabilidades
|
|
152
|
+
- [ ] Dependências (internas/externas) documentadas
|
|
153
|
+
- [ ] Dívida técnica priorizada com evidências
|
|
154
|
+
- [ ] Riscos de refatoração identificados com mitigações
|
|
155
|
+
- [ ] Recomendações acionáveis e priorizadas
|
|
156
|
+
- [ ] Código **não modificado** (salvo correções pontuais acordadas)
|
|
157
|
+
- [ ] Relatório salvo em `memoria/` ou `docs/` conforme acordado
|
|
158
|
+
|
|
159
|
+
## Tratamento de Falhas
|
|
160
|
+
| Falha | Ação |
|
|
161
|
+
|-------|------|
|
|
162
|
+
| Código muito grande para análise completa | Amostragem representativa + foco em áreas de mudança |
|
|
163
|
+
| Graphify não disponível | Inspeção manual + `madge` + documentação existente |
|
|
164
|
+
| Dependências circulares massivas | Documentar como risco crítico, sugerir estrangulamento gradual |
|
|
165
|
+
| Código sem testes e alta complexidade | Recomendar testes de caracterização antes de qualquer mudança |
|
|
166
|
+
| Segredos encontrados | Reportar imediatamente, não expor no relatório, sugerir rotação |
|
|
167
|
+
|
|
168
|
+
## Formato de Entrega
|
|
169
|
+
Relatório em Markdown salvo em `docs/ANALISE-LEGADO-[projeto]-[data].md` ou `memoria/ANALISE-LEGADO-[timestamp].md`
|
|
170
|
+
|
|
171
|
+
## Referências
|
|
172
|
+
- `docs/ARQUITETURA.md`, `docs/CODIGO-LIMPO.md`, `docs/SEGURANCA.md`
|
|
173
|
+
- `graphify` plugin, `madge`, `depcruise`, `code-simplification` skill
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: auditoria-de-seguranca
|
|
3
|
+
description: "Examina autenticação, autorização, validações, exposição de segredos, configuração, dependências e riscos relevantes. Baseada em security-and-hardening, code-review-and-quality e docs/SEGURANCA.md."
|
|
4
|
+
argument-hint: "[caminho-projeto] [escopo: completa|auth|api|infra|deps]"
|
|
5
|
+
license: MIT
|
|
6
|
+
metadata:
|
|
7
|
+
author: meu-padrao-de-desenvolvimento
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
domains: ["seguranca", "auditoria", "auth", "autorizacao", "validacao", "secrets", "dependencias"]
|
|
10
|
+
triggers: ["auditoria segurança", "revisão segurança", "vulnerabilidades", "auth authorization", "secrets", "dependências"]
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Skill: Auditoria de Segurança
|
|
14
|
+
|
|
15
|
+
## Objetivo
|
|
16
|
+
Realizar auditoria sistemática de segurança em aplicações, identificando vulnerabilidades reais, classificando por severidade, apresentando evidências e recomendações de mitigação - **sem executar ações destrutivas ou não autorizadas**.
|
|
17
|
+
|
|
18
|
+
## Quando Ativar
|
|
19
|
+
- Pré-deploy / release candidato
|
|
20
|
+
- Auditoria periódica (trimestral/semestral)
|
|
21
|
+
- Implementação de auth/autorização/dados sensíveis
|
|
22
|
+
- Code review com foco em segurança
|
|
23
|
+
- Investigação de incidente suspeito
|
|
24
|
+
- Compliance (LGPD, PCI-DSS, etc.)
|
|
25
|
+
|
|
26
|
+
## Pré-condições
|
|
27
|
+
- Acesso ao código fonte completo
|
|
28
|
+
- `docs/SEGURANCA.md` e `checklists/SEGURANCA.md` lidos
|
|
29
|
+
- `npm audit` / `pnpm audit` disponível
|
|
30
|
+
- Permissão apenas de **leitura e análise** (não execução de exploits)
|
|
31
|
+
|
|
32
|
+
## Procedimento de Execução
|
|
33
|
+
|
|
34
|
+
### Passo 1: Definir Escopo e Limites
|
|
35
|
+
| Escopo | Inclui |
|
|
36
|
+
|--------|--------|
|
|
37
|
+
| **completa** | Auth, AuthZ, Validação, Secrets, Config, Deps, Infra, Logs |
|
|
38
|
+
| **auth** | Login, registro, tokens, sessões, MFA, recuperação senha |
|
|
39
|
+
| **api** | Rate limit, CORS, headers, validação, authZ por endpoint |
|
|
40
|
+
| **infra** | Headers, TLS, CSP, HSTS, cookies, deploy, secrets management |
|
|
41
|
+
| **deps** | `npm audit`, Snyk, licenças, supply chain |
|
|
42
|
+
|
|
43
|
+
**Limites obrigatórios:**
|
|
44
|
+
- **NÃO** executar exploits, fuzzing, SQL injection real
|
|
45
|
+
- **NÃO** acessar dados de produção/reais
|
|
46
|
+
- **NÃO** modificar código (apenas relatar)
|
|
47
|
+
- **NÃO** expor segredos encontrados no relatório (referenciar apenas)
|
|
48
|
+
|
|
49
|
+
### Passo 2: Autenticação e Autorização (Auth/AuthZ)
|
|
50
|
+
**Verificar com evidências (código + config):**
|
|
51
|
+
|
|
52
|
+
| Item | Verificação | Evidência Esperada |
|
|
53
|
+
|------|-------------|-------------------|
|
|
54
|
+
| Hash senhas | Argon2id (preferencial) ou bcrypt ≥12 rounds | `argon2` ou `bcrypt` import, parâmetros |
|
|
55
|
+
| Senhas texto puro | **NENHUMA** | Grep por `password`/`senha` em logs/DB/code |
|
|
56
|
+
| JWT | RS256 (assimétrico) preferencial, expiração ≤15min | `jsonwebtoken` config, `JWT_PRIVATE_KEY` |
|
|
57
|
+
| Refresh token | Rotação a cada uso, hash no DB, expiração ≤7d | Schema DB, rota `/refresh` |
|
|
58
|
+
| Cookies | HttpOnly, Secure, SameSite=lax/strict | `cookieOptions` no código |
|
|
59
|
+
| Rate limit auth | 5 tent/15min por IP + conta | `express-rate-limit` config |
|
|
60
|
+
| MFA/2FA | TOTP ou WebAuthn (opcional mas recomendado) | `otplib`/`@simplewebauthn` |
|
|
61
|
+
| Tentativas login | Bloqueio progressivo, reset após janela | Contador + timestamp no Redis/memória |
|
|
62
|
+
|
|
63
|
+
**AuthZ (Autorização) - CRÍTICO:**
|
|
64
|
+
- [ ] Middleware `autorizar` em **TODAS** rotas protegidas
|
|
65
|
+
- [ ] RBAC: roles/permissions granulares (não apenas "admin/user")
|
|
66
|
+
- [ ] Verificação propriedade recurso (IDOR prevention): `userId === resource.ownerId`
|
|
67
|
+
- [ ] Admin bypass auditado (logs de ações admin)
|
|
68
|
+
- [ ] Matriz permissão × endpoint documentada
|
|
69
|
+
|
|
70
|
+
### Passo 3: Validação e Sanitização de Entrada
|
|
71
|
+
| Vetor | Verificação | Ferramenta/Evidência |
|
|
72
|
+
|-------|-------------|---------------------|
|
|
73
|
+
| SQL Injection | Apenas Prisma/parameterized queries | Grep: `$queryRaw`, `$executeRaw`, string concat |
|
|
74
|
+
| XSS (Reflected/Stored) | Zod validation + DOMPurify output | Zod schemas + `isomorphic-dompurify` |
|
|
75
|
+
| CSRF | SameSite cookies + double-submit token | `csurf` ou custom token |
|
|
76
|
+
| SSRF | Allowlist domínios fetch externo | Config fetch, validação URL |
|
|
77
|
+
| Path Traversal | Validação path, `path.resolve()` + prefix check | Upload/download handlers |
|
|
78
|
+
| Prototype Pollution | `Object.freeze()` config, validação keys | `lodash.merge`/`defaultsDeep` usage |
|
|
79
|
+
| XXE | Parser XML seguro (se aplica) | `libxmljs` config |
|
|
80
|
+
| File Upload | MIME real (magic bytes) + allowlist + sanitização | `file-type`, `sharp`, antivirus |
|
|
81
|
+
|
|
82
|
+
**Validação backend = barreira obrigatória:**
|
|
83
|
+
- [ ] Zod schemas em **TODOS** endpoints (body, params, query)
|
|
84
|
+
- [ ] Rejeição campos extras (`strict()` ou `passthrough()` controlado)
|
|
85
|
+
- [ ] Unicidade verificada no service **antes** de persistir
|
|
86
|
+
- [ ] Integridade referencial (FKs) verificada no service
|
|
87
|
+
|
|
88
|
+
### Passo 4: Proteção da Aplicação
|
|
89
|
+
| Camada | Verificação | Config Esperada |
|
|
90
|
+
|--------|-------------|----------------|
|
|
91
|
+
| Rate Limiting | Global API + endpoints sensíveis | `express-rate-limit`: 100req/min global, 5/15min auth |
|
|
92
|
+
| CORS | Allowlist explícita (não `*`) | `origin: ['https://app.dominio.com']` |
|
|
93
|
+
| Headers Segurança | Helmet.js configurado | CSP, HSTS, X-Frame-Options, Referrer-Policy |
|
|
94
|
+
| TLS | Apenas HTTPS em produção | `sslmode=require`, certificado válido |
|
|
95
|
+
| Error Handling | Sem stack trace em produção | `NODE_ENV=production` → generic 500 |
|
|
96
|
+
| Logging | Estruturado, sem segredos | Pino/Winston + sanitização (senhas, tokens, PII) |
|
|
97
|
+
|
|
98
|
+
### Passo 5: Gestão de Segredos e Configuração
|
|
99
|
+
| Item | Verificação | Evidência |
|
|
100
|
+
|------|-------------|-----------|
|
|
101
|
+
| `.env` no `.gitignore` | Sim | `git check-ignore .env` |
|
|
102
|
+
| `.env.example` no Git | Sim, valores fictícios | Arquivo existe, sem valores reais |
|
|
103
|
+
| Validação startup | Zod schema + fail fast | `getEnv()` com `safeParse` |
|
|
104
|
+
| Segredos no frontend | **NENHUM** em `VITE_*` | Build analysis: `grep -r "VITE_" dist/` |
|
|
105
|
+
| Chaves JWT | Assimétricas (RS256) | `JWT_PRIVATE_KEY`, `JWT_PUBLIC_KEY` env |
|
|
106
|
+
| Secrets em logs | Sanitização automática | Pino/Winston + `serializers` deny list |
|
|
107
|
+
|
|
108
|
+
### Passo 6: Banco de Dados (PostgreSQL + Prisma)
|
|
109
|
+
| Item | Verificação |
|
|
110
|
+
|-------|-------------|
|
|
111
|
+
| Usuário DB | Role dedicada (`app_user`), **NÃO** superuser |
|
|
112
|
+
| Permissões | Grants mínimos: SELECT/INSERT/UPDATE/DELETE apenas tabelas app |
|
|
113
|
+
| Soft delete | `deletedAt` em tabelas sensíveis |
|
|
114
|
+
| Constraints | `@unique`, `@relation(onDelete: Cascade/SetNull)`, `@@index` |
|
|
115
|
+
| Transações | `$transaction` para operações multi-tabela atômicas |
|
|
116
|
+
| Migrations | Versionadas no Git, revisadas antes de deploy |
|
|
117
|
+
| Backup | Automático diário + PITR ≥ 7 dias + teste restore mensal |
|
|
118
|
+
| Criptografia | Em repouso (AES-256) + trânsito (TLS 1.3) |
|
|
119
|
+
|
|
120
|
+
### Passo 7: Dependências e Supply Chain
|
|
121
|
+
- [ ] `npm audit --audit-level=high` → **0 high/critical**
|
|
122
|
+
- [ ] Dependabot/Renovate configurado (PRs automáticos)
|
|
123
|
+
- [ ] `package-lock.json` / `pnpm-lock.yaml` commitado
|
|
124
|
+
- [ ] Lockfile versionado, sem `*` ou `^` em deps críticas
|
|
125
|
+
- [ ] Auditoria mensal: `npm outdated`, revisar CHANGELOGS
|
|
126
|
+
- [ ] Pacotes suspeitos: verificar mantenedores, downloads, última atualização
|
|
127
|
+
|
|
128
|
+
### Passo 8: Infraestrutura e Deploy
|
|
129
|
+
| Item | Verificação |
|
|
130
|
+
|-------|-------------|
|
|
131
|
+
| Variáveis produção | Validadas, separadas de dev/staging |
|
|
132
|
+
| Segredos em CI/CD | GitHub Secrets / Vercel Env / Doppler (não no código) |
|
|
133
|
+
| Deploy | Preview automático + aprovação manual para prod |
|
|
134
|
+
| Rollback | Documentado, testado, < 5 min |
|
|
135
|
+
| Monitoramento | Alertas: 5xx spike, auth failures, rate limit hits, latency p95 |
|
|
136
|
+
| Logs agregados | Structured JSON, retenção ≥ 1 ano (segurança) |
|
|
137
|
+
|
|
138
|
+
### Passo 9: Matriz de Riscos (Obrigatória)
|
|
139
|
+
Para cada achado, preencher:
|
|
140
|
+
| ID | Risco | Severidade | Impacto | Evidência (arquivo:linha) | Mitigação | Status |
|
|
141
|
+
|----|-------|------------|---------|---------------------------|-----------|--------|
|
|
142
|
+
| SEC-001 | JWT secret fraco | Crítico | Total conta compromise | `config/jwt.ts:12` (HS256) | Migrar RS256 + rotação | ABERTO |
|
|
143
|
+
|
|
144
|
+
**Severidade:** Crítico > Alto > Médio > Baixo > Informativo
|
|
145
|
+
**Status:** ABERTO | MITIGADO | ACEITO (com justificativa) | FALSO POSITIVO
|
|
146
|
+
|
|
147
|
+
### Passo 10: Relatório de Auditoria
|
|
148
|
+
```
|
|
149
|
+
# Auditoria de Segurança: [Projeto] - [Data]
|
|
150
|
+
|
|
151
|
+
## Escopo
|
|
152
|
+
- Tipo: [completa|auth|api|infra|deps]
|
|
153
|
+
- Arquivos analisados: X
|
|
154
|
+
- Linhas de código: Y
|
|
155
|
+
- Ferramentas: npm audit, grep, inspeção manual, Context7
|
|
156
|
+
|
|
157
|
+
## Sumário Executivo
|
|
158
|
+
- Total achados: X (Crítico: Y, Alto: Z, Médio: W, Baixo: V)
|
|
159
|
+
- Riscos críticos não mitigados: [lista]
|
|
160
|
+
- Conformidade geral: [Aprovado | Condicional | Reprovado]
|
|
161
|
+
|
|
162
|
+
## Achados por Categoria
|
|
163
|
+
### Autenticação/Autorização (Crítico: Y, Alto: Z)
|
|
164
|
+
| ID | Achado | Severidade | Arquivo:Linha | Mitigação |
|
|
165
|
+
|
|
166
|
+
### Validação Entrada
|
|
167
|
+
...
|
|
168
|
+
|
|
169
|
+
### Segredos/Config
|
|
170
|
+
...
|
|
171
|
+
|
|
172
|
+
### Dependências
|
|
173
|
+
- npm audit: X high, Y critical
|
|
174
|
+
- Dependabot: [configurado|não]
|
|
175
|
+
|
|
176
|
+
### Infra/Deploy
|
|
177
|
+
...
|
|
178
|
+
|
|
179
|
+
## Riscos Críticos Não Mitigados
|
|
180
|
+
[Lista - bloqueiam deploy se houver]
|
|
181
|
+
|
|
182
|
+
## Recomendações Priorizadas
|
|
183
|
+
1. **Imediato (Críticos)**: ...
|
|
184
|
+
2. **Esta Sprint (Altos)**: ...
|
|
185
|
+
3. **Backlog (Médios/Baixos)**: ...
|
|
186
|
+
|
|
187
|
+
## Checklist de Conformidade (Anexo)
|
|
188
|
+
- [ ] checklists/SEGURANCA.md completo
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Passo 11: Entregar
|
|
192
|
+
**Somente relatório.** Não modificar código, não executar exploits, não expor segredos.
|
|
193
|
+
|
|
194
|
+
## Ferramentas Necessárias
|
|
195
|
+
- `npm audit` / `pnpm audit` / `yarn audit`
|
|
196
|
+
- `grep`/`rg` para busca padrões inseguros
|
|
197
|
+
- `tools.context7` para docs de libs (ex: configuração segura Prisma, Express)
|
|
198
|
+
- `checklists/SEGURANCA.md` como guia
|
|
199
|
+
- `docs/SEGURANCA.md` como referência técnica
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## EXECUCAO OBRIGATORIA COM SUB-AGENTES (Shift-Left)
|
|
204
|
+
|
|
205
|
+
> **REGRA AGIM:** 5 areas independentes + ganho >75% = **SUB-AGENTES OBRIGATORIOS**
|
|
206
|
+
|
|
207
|
+
### Procedimento Padrao (SEMPRE usar quando escopo = "completa")
|
|
208
|
+
|
|
209
|
+
```javascript
|
|
210
|
+
// Em vez de sequencial (20s+):
|
|
211
|
+
// Lance 5 sub-agentes PARALELOS (um por area)
|
|
212
|
+
|
|
213
|
+
const AREAS = [
|
|
214
|
+
"Auth/AuthZ - middleware, RBAC, IDOR, tokens, rate limit, MFA, cookies",
|
|
215
|
+
"Validacao - Zod schemas, sanitizacao, SQLi, XSS, CSRF, SSRF, path traversal, prototype pollution, upload",
|
|
216
|
+
"Secrets/Config - .env, VITE_*, JWT keys, startup validation Zod, .gitignore, TLS",
|
|
217
|
+
"Dependencias - npm audit, Snyk, licencas, supply chain, versoes desatualizadas",
|
|
218
|
+
"Infra - Headers (CSP/HSTS/X-Frame), TLS, rate limit global, CORS, logs sanitizados, error handling"
|
|
219
|
+
];
|
|
220
|
+
|
|
221
|
+
const results = await Promise.all(
|
|
222
|
+
AREAS.map(area => subagent({
|
|
223
|
+
agent: "general",
|
|
224
|
+
description: `Security audit ${area.split("-")[0]}`,
|
|
225
|
+
prompt: `[AGIM SUB-AGENT PROTOCOL]
|
|
226
|
+
Before starting: Read AGENTS.md (project root) → memoria/ESTADO-ATUAL.md → memoria/PROXIMO-PASSO.md
|
|
227
|
+
Follow AGIM protocol: Use memoria/ for continuity, checklists/ for validation, docs/ for standards.
|
|
228
|
+
|
|
229
|
+
Audit security for: ${area}. Use checklists/SEGURANCA.md, docs/SEGURANCA.md.
|
|
230
|
+
Return findings with file:line evidence, severity (CRITICAL/HIGH/MEDIUM/LOW), mitigation.
|
|
231
|
+
Log results to memoria/HISTORICO-DE-EXECUCAO.md when done.`
|
|
232
|
+
}))
|
|
233
|
+
);
|
|
234
|
+
|
|
235
|
+
// Agregue resultados
|
|
236
|
+
const aggregated = aggregateSecurityResults(results);
|
|
237
|
+
|
|
238
|
+
// LOG OBRIGATORIO
|
|
239
|
+
await logToHistory("auditoria-de-seguranca", {
|
|
240
|
+
subAgents: 5,
|
|
241
|
+
timeTotal: "~5s",
|
|
242
|
+
estimatedSequential: "~20s",
|
|
243
|
+
savings: "75%",
|
|
244
|
+
findings: aggregated
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
return aggregated;
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Checklist de Execucao (OBRIGATORIO)
|
|
251
|
+
|
|
252
|
+
- [ ] 5 sub-agentes lancados em paralelo (escopo = completa)
|
|
253
|
+
- [ ] Cada um com area especifica e prompt detalhado
|
|
254
|
+
- [ ] Timeout 60s configurado por sub-agente
|
|
255
|
+
- [ ] Resultados agregados com matriz de riscos consolidada
|
|
256
|
+
- [ ] Log no `memoria/HISTORICO-DE-EXECUCAO.md` com tempo economia
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Limites de Responsabilidade
|
|
261
|
+
- **NÃO** executa pentest/DAST real (ex: OWASP ZAP, Burp Suite)
|
|
262
|
+
- **NÃO** acessa ambiente de produção ou dados reais
|
|
263
|
+
- **NÃO** modifica código (skill `security-and-hardening` para implementar correções)
|
|
264
|
+
- **NÃO** decide aceitação de risco (apresenta, usuário decide)
|
|
265
|
+
- **SIM** identifica com evidência código:linha, classifica, recomenda mitigação
|
|
266
|
+
|
|
267
|
+
## Critérios de Aceitação
|
|
268
|
+
- [ ] Escopo definido e comunicado
|
|
269
|
+
- [ ] Todas categorias no escopo auditadas com evidência código:linha
|
|
270
|
+
- [ ] Matriz de riscos preenchida com severidade, evidência, mitigação
|
|
271
|
+
- [ ] Relatório entregue sem segredos expostos
|
|
272
|
+
- [ ] Código **não modificado**
|
|
273
|
+
- [ ] Checklist `checklists/SEGURANCA.md` usado como guia
|
|
274
|
+
|
|
275
|
+
## Tratamento de Falhas
|
|
276
|
+
| Falha | Ação |
|
|
277
|
+
|-------|------|
|
|
278
|
+
| Código muito grande para auditoria completa | Amostragem baseada em risco (auth, API, upload, payments) |
|
|
279
|
+
| Segredo encontrado em código | Reportar IMEDIATAMENTE ao usuário, não incluir no relatório escrito, sugerir rotação |
|
|
280
|
+
| Dependência crítica vulnerável sem patch | Documentar como risco aceito temporariamente, mitigação compensatória (WAF, monitoramento) |
|
|
281
|
+
| AuthZ ausente em endpoints | Classificar como Crítico, bloquear deploy até correção |
|
|
282
|
+
| Falso positivo `npm audit` | Verificar contexto, documentar como FALSO POSITIVO com justificativa |
|
|
283
|
+
|
|
284
|
+
## Formato de Entrega
|
|
285
|
+
Relatório em `docs/AUDITORIA-SEGURANCA-[projeto]-[data].md` (sem segredos)
|
|
286
|
+
|
|
287
|
+
## Referências
|
|
288
|
+
- `checklists/SEGURANCA.md` - Checklist executável completo
|
|
289
|
+
- `docs/SEGURANCA.md` - Referência técnica detalhada
|
|
290
|
+
- `security-and-hardening` skill (implementação correções)
|
|
291
|
+
- `code-review-and-quality` skill (revisão qualidade + segurança)
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
name: bible-rag-search
|
|
2
|
+
description: Busca semântica no AGENT-BIBLE via ChromaDB local. Retorna apenas trechos relevantes (~2KB vs 50KB full docs). Reduz tokens 90%+. Indexa docs/, checklists/, templates/, skills/ na inicialização.
|
|
3
|
+
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: bible-rag-search
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
**Busca semântica eficiente no AGENT-BIBLE.** Em vez de carregar docs inteiros (27KB cada), retorna apenas os 3-5 trechos mais relevantes (~2KB total). Reduz contexto de 50-80K para 5-15K tokens por sessão.
|
|
10
|
+
|
|
11
|
+
## Quando Ativar
|
|
12
|
+
- **SEMPRE** que a IA precisar consultar o Bible para:
|
|
13
|
+
- "Como configurar X?"
|
|
14
|
+
- "Qual o padrão para Y?"
|
|
15
|
+
- "Exemplo de Z?"
|
|
16
|
+
- Qualquer dúvida técnica sobre padrões do Bible
|
|
17
|
+
- Substitui leitura completa de `docs/*.md`, `checklists/*.md`, `templates/*.md`
|
|
18
|
+
|
|
19
|
+
## Pré-condições
|
|
20
|
+
- ChromaDB local em `~/.agent-bible/rag_index/`
|
|
21
|
+
- Índice construído na primeira execução (auto)
|
|
22
|
+
- `@xenova/transformers` para embeddings (local, sem API key)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## ARQUITETURA
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
~/.agent-bible/
|
|
30
|
+
├── rag_index/ # ChromaDB persistente
|
|
31
|
+
│ ├── chroma.sqlite3
|
|
32
|
+
│ └── <collection_bible>/
|
|
33
|
+
├── bible_cache/ # Cache de textos originais (opcional)
|
|
34
|
+
│ └── <hash>.txt
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Fluxo:**
|
|
38
|
+
1. **Indexação** (primeira vez / quando Bible atualiza):
|
|
39
|
+
- Varre `docs/`, `checklists/`, `templates/`, `.opencode/skills/*/SKILL.md`
|
|
40
|
+
- Chunk: 500 chars, overlap 50
|
|
41
|
+
- Embedding: `Xenova/all-MiniLM-L6-v2` (384 dim, ~80MB, CPU)
|
|
42
|
+
- Upsert no Chroma collection `agent-bible`
|
|
43
|
+
2. **Busca** (cada query):
|
|
44
|
+
- Embedding da query
|
|
45
|
+
- `collection.query(query_embedding, n_results=5)`
|
|
46
|
+
- Retorna: trechos + metadados (arquivo, seção, score)
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## API DA SKILL
|
|
51
|
+
|
|
52
|
+
### `search(query, options?)`
|
|
53
|
+
```javascript
|
|
54
|
+
// Entrada
|
|
55
|
+
{
|
|
56
|
+
query: "como configurar argon2id",
|
|
57
|
+
options: {
|
|
58
|
+
n_results: 5, // default 5
|
|
59
|
+
min_score: 0.3, // threshold relevância
|
|
60
|
+
sources: ["docs", "checklists", "templates", "skills"] // filter
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Saída
|
|
65
|
+
{
|
|
66
|
+
results: [
|
|
67
|
+
{
|
|
68
|
+
text: "trecho relevante...",
|
|
69
|
+
metadata: {
|
|
70
|
+
file: "docs/SEGURANCA.md",
|
|
71
|
+
section: "Hash de senhas",
|
|
72
|
+
source: "docs",
|
|
73
|
+
score: 0.87
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
...
|
|
77
|
+
],
|
|
78
|
+
total_chunks_searched: 1247,
|
|
79
|
+
query_time_ms: 12
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### `rebuild_index()`
|
|
84
|
+
Força reconstrução completa do índice.
|
|
85
|
+
|
|
86
|
+
### `get_stats()`
|
|
87
|
+
Retorna: total chunks, tamanho índice, última atualização.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## INTEGRAÇÃO NO BOOTSTRAP
|
|
92
|
+
|
|
93
|
+
1. **Primeira execução**: detecta índice vazio → indexa Bible completo (~30s primeira vez)
|
|
94
|
+
2. **Execuções subsequentes**: verifica `git status` do Bible → reindexa só mudanças (<5s)
|
|
95
|
+
3. **Cache de embeddings**: modelo `Xenova/all-MiniLM-L6-v2` cacheado em `~/.cache/@xenova/transformers/`
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## COMANDOS DISPONÍVEIS
|
|
100
|
+
|
|
101
|
+
| Comando | Descrição |
|
|
102
|
+
|---------|-----------|
|
|
103
|
+
| `skill bible-rag-search "sua pergunta"` | Busca semântica |
|
|
104
|
+
| `skill bible-rag-search --rebuild` | Reconstrói índice completo |
|
|
105
|
+
| `skill bible-rag-search --stats` | Mostra estatísticas do índice |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## EXEMPLOS DE USO
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# IA precisa saber como configurar rate limiting
|
|
113
|
+
skill bible-rag-search "rate limiting configuração"
|
|
114
|
+
|
|
115
|
+
# Retorna trechos de:
|
|
116
|
+
# - docs/SEGURANCA.md (seção Rate Limiting)
|
|
117
|
+
# - checklists/SEGURANCA.md (checklist rate limit)
|
|
118
|
+
# - templates/PLANO-IMPLEMENTACAO.md (exemplo config)
|
|
119
|
+
|
|
120
|
+
# IA precisa de template ADR
|
|
121
|
+
skill bible-rag-search "template decisão técnica ADR"
|
|
122
|
+
|
|
123
|
+
# Retorna:
|
|
124
|
+
# - templates/DECISAO-TECNICA.md (template completo)
|
|
125
|
+
# - docs/DECISOES-TECNICAS.md (exemplos)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## MÉTRICAS DE ECONOMIA
|
|
131
|
+
|
|
132
|
+
| Métrica | Sem RAG | Com RAG | Economia |
|
|
133
|
+
|---------|---------|---------|----------|
|
|
134
|
+
| Contexto "como configurar X" | 27KB (doc inteiro) | 2KB (trechos) | **93%** |
|
|
135
|
+
| Contexto "nova feature" | 50KB (5 skills) | 5KB (trechos) | **90%** |
|
|
136
|
+
| Tokens por sessão típica | 50-80K | 5-15K | **80-85%** |
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## INTEGRAÇÃO COM OUTRAS SKILLS
|
|
141
|
+
|
|
142
|
+
| Skill | Como usa bible-rag-search |
|
|
143
|
+
|-------|---------------------------|
|
|
144
|
+
| `entrevista-orquestradora` | Busca padrões para classificar pedido |
|
|
145
|
+
| `planejamento-de-tarefas` | Busca templates/planos similares |
|
|
146
|
+
| `analise-de-legado` | Busca padrões legacy conhecidos |
|
|
147
|
+
| `auditoria-de-seguranca` | Busca checklists/riscos específicos |
|
|
148
|
+
| `spec-driven-development` | Busca specs/ADRs similares |
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## COMANDOS DE MANUTENÇÃO
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# Reconstruir índice (após atualizar Bible)
|
|
156
|
+
skill bible-rag-search --rebuild
|
|
157
|
+
|
|
158
|
+
# Ver stats
|
|
159
|
+
skill bible-rag-search --stats
|
|
160
|
+
|
|
161
|
+
# Limpar cache (forçar rebuild)
|
|
162
|
+
rm -rf ~/.agent-bible/rag_index && skill bible-rag-search "teste"
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## REFERÊNCIAS TÉCNICAS
|
|
168
|
+
|
|
169
|
+
- **ChromaDB**: `chromadb` npm package (persistência local SQLite)
|
|
170
|
+
- **Embeddings**: `@xenova/transformers` com `Xenova/all-MiniLM-L6-v2` (384 dim, CPU, ~80MB)
|
|
171
|
+
- **Chunking**: 500 chars / 50 overlap (otimizado para docs técnicos)
|
|
172
|
+
- **Coleção Chroma**: `agent-bible` (metadata: file, section, source, hash)
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## TRATAMENTO DE FALHAS
|
|
177
|
+
|
|
178
|
+
| Falha | Ação |
|
|
179
|
+
|-------|------|
|
|
180
|
+
| ChromaDB corrompido | `rm -rf ~/.agent-bible/rag_index && skill bible-rag-search --rebuild` |
|
|
181
|
+
| Modelo embeddings não baixa | Verificar conexão / `~/.cache/@xenova/transformers/` |
|
|
182
|
+
| Índice vazio | Auto-rebuild na primeira query |
|
|
183
|
+
| Score muito baixo (<0.3) | Retornar "não encontrado" + sugerir termos alternativos |
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## IMPLEMENTAÇÃO (Referência)
|
|
188
|
+
|
|
189
|
+
Arquivo principal: `scripts/bible-rag-index.js` (indexação) + `scripts/bible-rag-search.js` (busca)
|
|
190
|
+
Chamado via: `skill bible-rag-search <query>`
|