# Como usar o .agent como submodulo git O repositório `.agent` é adicionado como **git submodule** em cada projeto. Isso garante controle de versão, rollback seguro e atualizações rastreáveis. --- ## Estrutura em um projeto filho ``` meu-modulo/ ├── .agent/ ← git submodule (este repo — nunca editar diretamente) │ ├── global/ │ ├── agents/ │ ├── adaptadores/ │ ├── AGENTS │ ├── EXTEND │ └── ... ├── .agent-local/ ← suas extensões (commitar no projeto) │ ├── rules/ │ ├── workflows/ │ ├── skills/ │ ├── agents/ │ └── manifesto-local.json └── .gitmodules ← gerado pelo git ao adicionar submodulo ``` --- ## Configuração inicial (uma vez por projeto) ### 1. Adicionar o .agent como submodulo ```sh # Na raiz do projeto git submodule add https://git2.idz.one/publico/.agent.git .agent git submodule update --init --recursive ``` ### 2. Criar a estrutura local ```sh mkdir -p .agent-local/rules mkdir -p .agent-local/workflows mkdir -p .agent-local/skills mkdir -p .agent-local/agents ``` ### 3. Criar o `manifesto-local.json` ```sh cp .agent/manifesto-local.template.json .agent-local/manifesto-local.json ``` Editar o arquivo: ```json { "submodulo": ".agent", "projeto": "sigma2026", "descricao": "Módulo de monitoramento ambiental", "versao": "1.0.0", "local": { "rules": [ "rules/dominio-ambiental" ], "workflows": [], "skills": [ "skills/criar-funcao-api/SKILL" ], "agents": { "ag-back": { "persona-local": "agents/ag-back/persona-local", "rules": [ "agents/ag-back/rules/knex-padrao" ] } } } } ``` ### 4. Configurar `.gitignore` ```gitignore # O .agent/ é submodulo — gerenciado pelo git automaticamente # Nada a ignorar; .agent-local/ é commitado normalmente ``` --- ## Como atualizar o .agent no futuro ```sh cd .agent git pull origin main cd .. git add .agent git commit -m "chore: atualizar .agent para versão mais recente" ``` --- ## Como fazer override de um agente Crie `persona-local` em `.agent-local/agents/{agente}/`: ```markdown --- name: ag-back extends: .agent/agents/ag-back/persona project: sigma2026 --- # Extensão: @ag-back para sigma2026 ## Contexto adicional do projeto - PostgreSQL com PostGIS (coordenadas geográficas) - JSONB para características variáveis por tipo de monitoramento - Padrão `zBaseTabelaPadrao` do sigma-comuns ## Regras adicionais - Toda query de coordenadas usa funções PostGIS - O campo `info` é cache descartável — não é fonte primária ``` --- ## Como adicionar uma rule local Crie em `.agent-local/rules/`: ```markdown --- name: dominio-ambiental description: Vocabulário e padrões do domínio ambiental para o sigma2026 scope: local --- # Regra: Domínio Ambiental (sigma2026) ## Contexto ... ## Regra ... ``` Declare no `manifesto-local.json`: ```json "local": { "rules": ["rules/dominio-ambiental"] } ``` --- ## Precedência de artefatos ``` .agent-local/ > .agent/ (base) ``` | Situação | Resultado | |----------|-----------| | Artefato só em `.agent/` | Usa o base | | Artefato só em `.agent-local/` | Usa o local | | Artefato em ambos | `.agent-local/` tem prioridade | --- ## Pinagem de versão (segurança) O submodulo fica travado em um commit específico do .agent. Para atualizar para uma versão específica: ```sh cd .agent git checkout v3.0.0 # travar em tag # ou git checkout main # usar sempre o mais recente cd .. git add .agent git commit -m "chore: atualizar .agent para v3.0.0" ``` --- ## O que commitar no projeto filho ``` ✅ Commitar: .agent-local/ (todas as extensões locais) .gitmodules (referência ao submodulo) ❌ Não commitar (gerenciado pelo git submodule): .agent/ (é submodulo — referência automática) ``` --- ## Compatibilidade com múltiplas LLMs O modelo de herança funciona com qualquer LLM: - `.agent-local/` e `.agent/` são **Markdown puro** (sem extensão) - `manifesto-local.json` é **JSON genérico** - Para gerar config nativa de uma LLM: use `.agent/adaptadores/{llm}/`