AGENTS.md — Índice único para agentes de IA
Este arquivo é o entrypoint de contexto para agentes que vão programar no projeto. Objetivo: reduzir leitura desnecessária e guiar rapidamente para os arquivos corretos.
1) Resumo rápido do projeto
- Nome:
ikariam-builder - Tipo: extensão Chrome MV3 + automação/scraper do Ikariam
- Linguagem principal: JavaScript ESM
- Testes: Vitest (unitários em
tests/unit)
Arquivos-base:
2) Estratégia de leitura recomendada (token-efficient)
- Ler este arquivo
AGENTS.md. - Ir direto para o documento-alvo conforme a tarefa (seção 3).
- Ler apenas os módulos impactados (seções 4 e 5).
- Validar com testes focados em
tests/unit.
Evitar leitura completa de toda a documentação quando a tarefa for local.
3) Roteador de documentação por tipo de tarefa
- Regra de negócio / priorização / ROI / papéis (CFO/COO/HR/CTO/CSO/MnA):
- Implementação técnica, camadas, wiring e eventos:
- Contratos HTTP, parâmetros e ações do jogo:
- Modelo do jogo (
ikariam.*,bgViewData): - UI/painel e contratos de estado para interface:
- Coleta via Playwright/scraper:
4) Mapa rápido de código (onde mexer)
Núcleo de execução
- Eventos (pub/sub):
modules/Events.js - Estado global:
modules/StateManager.js - Fila e execução de tarefas:
modules/TaskQueue.js - Cliente de requests do jogo:
modules/GameClient.js - Coleta/interceptação de dados:
modules/DataCollector.js
Módulos de negócio
- Financeiro/build:
modules/CFO.js - Logística/transporte:
modules/COO.js - Vinho/população:
modules/HR.js - Pesquisa:
modules/CTO.js - Segurança/ruído:
modules/CSO.js - Expansão/novas cidades:
modules/MnA.js
Infra/config/auditoria
- Persistência:
modules/Storage.js - Configuração:
modules/Config.js - Auditoria/logs:
modules/Audit.js - Utilitários:
modules/utils.js
UI e integração com página
- Injeção no contexto da página:
inject/inject.js - Content script bridge:
content/content.js - Worker/background:
background/background.js - Bridge para UI:
modules/UIBridge.js - Painel:
ui/panel.html,ui/panel.js,ui/panel.css
Dados estáticos
- Constantes:
data/const.js - Custos de edifícios:
data/buildings.js - Efeitos:
data/effects.js - Vinho:
data/wine.js - Pesquisa:
data/research.js
5) “Se a tarefa for X, abra Y”
- “Bug em consumo/cache de recurso” →
modules/ResourceCache.js,modules/ResourceBalance.js,tests/unit/resourcecache.test.js - “Build não entra/falha/duplica” →
modules/CFO.js,modules/TaskQueue.js,modules/GameClient.js - “Transporte atrasado ou payload errado” →
modules/COO.js,modules/GameClient.js,ENDPOINTS.md - “Problema de UI” →
modules/UIBridge.js,ui/panel.js,UI.md - “Falha de captura de dados do jogo” →
modules/DataCollector.js,inject/inject.js,GAME_MODEL.md - “Problema de storage/config” →
modules/Storage.js,modules/Config.js,content/content.js
6) Fluxos rápidos para agentes
Fluxo A — corrigir bug
- Identificar módulo dono (seção 5).
- Ler teste existente correspondente em
tests/unit. - Corrigir no módulo alvo.
- Rodar teste focado.
- Rodar suíte completa.
Fluxo B — implementar feature pequena
- Confirmar regra em
BUSINESS.mde contrato técnico emARCHITECTURE.md. - Alterar módulo principal + dependências mínimas.
- Adicionar/ajustar teste unitário.
- Validar sem expandir escopo.
Fluxo C — ajustar contrato HTTP/jogo
- Validar parâmetros em
ENDPOINTS.md. - Ajustar chamadas em
modules/GameClient.js. - Confirmar impactos em
modules/TaskQueue.jsemodules/DataCollector.js.
7) Comandos de validação
Scripts disponíveis em package.json:
npm test→ executa testes uma veznpm run test:watch→ modo watchnpm run test:coverage→ cobertura
8) Regras práticas para agentes (objetivas)
- Preferir mudanças pequenas e localizadas.
- Não refatorar módulos não relacionados à tarefa.
- Preservar nomes e contratos já usados por outros módulos.
- Sempre que possível, provar mudança com teste unitário.
- Em caso de dúvida de regra de negócio, priorizar
BUSINESS.md; de implementação, priorizarARCHITECTURE.md.
9) Ordem de prioridade de fontes (desempate)
- Código atual em
modules/,data/,inject/,content/,ui/ ARCHITECTURE.mdBUSINESS.md- Demais docs especializadas (
ENDPOINTS.md,GAME_MODEL.md,UI.md,SCRAPER.md)
Quando houver divergência, reportar explicitamente no PR/commit o ponto de conflito e a decisão tomada.