Compare commits

..

No commits in common. "master" and "master-jjj" have entirely different histories.

45 changed files with 140 additions and 225 deletions

3
.gitignore vendored
View file

@ -14,8 +14,7 @@ node_modules/
.idea/ .idea/
*.swp *.swp
# Graphify Knowledge Graph & Evidências de Testes # Graphify Knowledge Graph
.graphify/ .graphify/
.engram/ .engram/
graphify-out/ graphify-out/
.evidencias/

View file

@ -46,7 +46,7 @@ executor: null
### Passos para Reproduzir (Repro Steps) / Evidência Visual ### Passos para Reproduzir (Repro Steps) / Evidência Visual
1. <Passo 1> 1. <Passo 1>
2. <Passo 2> 2. <Passo 2>
3. <Evidência: link para screenshot em .evidencias/ ou anotação do tester> 3. <Evidência: link para screenshot em evidencias/ ou anotação do tester>
### Análise de Causa Raiz & Arquivos Mapeados ### Análise de Causa Raiz & Arquivos Mapeados
<Diagnóstico técnico preliminar apontando causas prováveis no código> <Diagnóstico técnico preliminar apontando causas prováveis no código>
@ -100,7 +100,7 @@ executor: null
1. Abrir aplicação: `agent-browser --session <modulo-id>_<contexto?> open --headed <url>` 1. Abrir aplicação: `agent-browser --session <modulo-id>_<contexto?> open --headed <url>`
2. Mapear interações: `agent-browser --session <modulo-id>_<contexto?> snapshot -i` 2. Mapear interações: `agent-browser --session <modulo-id>_<contexto?> snapshot -i`
3. Executar ações: `agent-browser --session <modulo-id>_<contexto?> fill @ref "..." && agent-browser --session <modulo-id>_<contexto?> click @ref` 3. Executar ações: `agent-browser --session <modulo-id>_<contexto?> fill @ref "..." && agent-browser --session <modulo-id>_<contexto?> click @ref`
4. Capturar evidência em `.evidencias/`: `mkdir -p .evidencias && agent-browser --session <modulo-id>_<contexto?> screenshot .evidencias/<slug>.png` 4. Capturar evidência: `agent-browser --session <modulo-id>_<contexto?> screenshot evidencias/<slug>.png`
5. Encerrar: `agent-browser --session <modulo-id>_<contexto?> close` 5. Encerrar: `agent-browser --session <modulo-id>_<contexto?> close`
--- ---
@ -113,5 +113,5 @@ executor: null
- `<caminho/arquivo>` - `<caminho/arquivo>`
- **Resumo da Solução Implementada:** - **Resumo da Solução Implementada:**
- <Descrição das mudanças realizadas e desafios superados> - <Descrição das mudanças realizadas e desafios superados>
- **Evidências de Teste / Screenshots (`.evidencias/`):** - **Evidências de Teste / Screenshots:**
- <Links para as evidências salvas em `.evidencias/` e descrições dos testes executados com sucesso> - <Links ou descrições dos testes executados com sucesso>

2
README
View file

@ -29,7 +29,6 @@ O repositório `.agent` fornece a estrutura genérica de inteligência (regras u
├── PLANOS/ ← Fila de Planos Técnicos (Tester ➔ Dev): ├── PLANOS/ ← Fila de Planos Técnicos (Tester ➔ Dev):
│ ├── pendente/ ← Planos criados por testers aguardando dev (/plano <instrução>) │ ├── pendente/ ← Planos criados por testers aguardando dev (/plano <instrução>)
│ └── executado/ ← Planos implementados, testados e arquivados (/plano.executar <slug>) │ └── executado/ ← Planos implementados, testados e arquivados (/plano.executar <slug>)
├── .evidencias/ ← Pasta obrigatória para evidências geradas pelos testes automatizados (screenshots, logs, traces)
├── .agent/ ← Polimórfico: Submódulo genérico compartilhado ├── .agent/ ← Polimórfico: Submódulo genérico compartilhado
│ ├── DOCUMENTACAO/ ← Hub DDD: Manifesto e templates padronizados │ ├── DOCUMENTACAO/ ← Hub DDD: Manifesto e templates padronizados
│ ├── global/ ← Rules, workflows e skills globais │ ├── global/ ← Rules, workflows e skills globais
@ -51,7 +50,6 @@ memorias-ia/ ← armazenamento de memórias das ações d
PLANOS/ ← fila de planos técnicos de implementação (Tester ➔ Dev) PLANOS/ ← fila de planos técnicos de implementação (Tester ➔ Dev)
├── pendente/ ← gerados via /plano pelo tester em reviews ├── pendente/ ← gerados via /plano pelo tester em reviews
└── executado/ ← arquivados após implementação pelo dev └── executado/ ← arquivados após implementação pelo dev
.evidencias/ ← evidências geradas pelos testes automatizados (screenshots, capturas E2E, relatórios)
.agent/ ← raiz do repositório de agentes (submódulo) .agent/ ← raiz do repositório de agentes (submódulo)
├── DOCUMENTACAO/ ← hub DDD — matriz canônica dos 6 pilares ├── DOCUMENTACAO/ ← hub DDD — matriz canônica dos 6 pilares
│ ├── README ← manifesto DDD: princípios e workflow │ ├── README ← manifesto DDD: princípios e workflow

View file

@ -29,7 +29,6 @@ O repositório `.agent` fornece a estrutura genérica de inteligência (regras u
├── PLANOS/ ← Fila de Planos Técnicos (Tester ➔ Dev): ├── PLANOS/ ← Fila de Planos Técnicos (Tester ➔ Dev):
│ ├── pendente/ ← Planos criados por testers aguardando dev (/plano <instrução>) │ ├── pendente/ ← Planos criados por testers aguardando dev (/plano <instrução>)
│ └── executado/ ← Planos implementados, testados e arquivados (/plano.executar <slug>) │ └── executado/ ← Planos implementados, testados e arquivados (/plano.executar <slug>)
├── .evidencias/ ← Pasta obrigatória para evidências geradas pelos testes automatizados (screenshots, logs, traces)
├── .agent/ ← Polimórfico: Submódulo genérico compartilhado ├── .agent/ ← Polimórfico: Submódulo genérico compartilhado
│ ├── DOCUMENTACAO/ ← Hub DDD: Manifesto e templates padronizados │ ├── DOCUMENTACAO/ ← Hub DDD: Manifesto e templates padronizados
│ ├── global/ ← Rules, workflows e skills globais │ ├── global/ ← Rules, workflows e skills globais
@ -51,7 +50,6 @@ memorias-ia/ ← armazenamento de memórias das ações d
PLANOS/ ← fila de planos técnicos de implementação (Tester ➔ Dev) PLANOS/ ← fila de planos técnicos de implementação (Tester ➔ Dev)
├── pendente/ ← gerados via /plano pelo tester em reviews ├── pendente/ ← gerados via /plano pelo tester em reviews
└── executado/ ← arquivados após implementação pelo dev └── executado/ ← arquivados após implementação pelo dev
.evidencias/ ← evidências geradas pelos testes automatizados (screenshots, capturas E2E, relatórios)
.agent/ ← raiz do repositório de agentes (submódulo) .agent/ ← raiz do repositório de agentes (submódulo)
├── DOCUMENTACAO/ ← hub DDD — matriz canônica dos 6 pilares ├── DOCUMENTACAO/ ← hub DDD — matriz canônica dos 6 pilares
│ ├── README ← manifesto DDD: princípios e workflow │ ├── README ← manifesto DDD: princípios e workflow

6
TOOLS
View file

@ -96,7 +96,6 @@ Este documento lista ferramentas de linha de comando (CLI) e utilitários que ot
- **Por que ajuda as IAs:** Utiliza representação compacta da árvore de acessibilidade com referências determinísticas (`@e1`, `@e2`), consumindo 200–400 tokens (até 90% menos tokens que a leitura do DOM completo). Permite executar testes E2E, interagir com telas, validar fluxos e registrar evidências visuais. - **Por que ajuda as IAs:** Utiliza representação compacta da árvore de acessibilidade com referências determinísticas (`@e1`, `@e2`), consumindo 200–400 tokens (até 90% menos tokens que a leitura do DOM completo). Permite executar testes E2E, interagir com telas, validar fluxos e registrar evidências visuais.
- **Modo Visível Obrigatório:** Para que o operador acompanhe cada teste em tempo real na tela, execute sempre com a flag `--headed` (ex: `agent-browser --session <modulo>_<contexto?> open --headed <url>`) ou defina `export AGENT_BROWSER_HEADED=true`. - **Modo Visível Obrigatório:** Para que o operador acompanhe cada teste em tempo real na tela, execute sempre com a flag `--headed` (ex: `agent-browser --session <modulo>_<contexto?> open --headed <url>`) ou defina `export AGENT_BROWSER_HEADED=true`.
- **Isolamento Mandatório de Sessão e Contexto:** Toda execução DEVE acompanhar a flag `--session <modulo>_<contexto?>` (onde `<modulo>` é o `modulo-id` extraído de `memorias-ia/modulo.yml` e `<contexto?>` discrimina acessos como `interno`, `externo`, `cliente`, `anonimo`) ou garantir `export AGENT_BROWSER_SESSION=<modulo>_<contexto?>`. Previne fechamento indevido de processos e contaminação cruzada de cookies e tokens JWT entre diferentes perfis de usuário. - **Isolamento Mandatório de Sessão e Contexto:** Toda execução DEVE acompanhar a flag `--session <modulo>_<contexto?>` (onde `<modulo>` é o `modulo-id` extraído de `memorias-ia/modulo.yml` e `<contexto?>` discrimina acessos como `interno`, `externo`, `cliente`, `anonimo`) ou garantir `export AGENT_BROWSER_SESSION=<modulo>_<contexto?>`. Previne fechamento indevido de processos e contaminação cruzada de cookies e tokens JWT entre diferentes perfis de usuário.
- **Pasta Obrigatória de Evidências (`.evidencias/`):** Todas as evidências geradas pelos testes automatizados (screenshots, capturas anotadas, vídeos, traces, relatórios) devem ser salvas obrigatoriamente na pasta `.evidencias/` na raiz do projeto (`mkdir -p .evidencias`).
- **Instalação:** - **Instalação:**
- Com Bun (padrão): `bun i -g agent-browser && agent-browser install` - Com Bun (padrão): `bun i -g agent-browser && agent-browser install`
- Com NPM: `npm install -g agent-browser && agent-browser install` - Com NPM: `npm install -g agent-browser && agent-browser install`
@ -106,11 +105,6 @@ Este documento lista ferramentas de linha de comando (CLI) e utilitários que ot
## 7. Utilitários Nativos do Framework .agent ## 7. Utilitários Nativos do Framework .agent
### atualizar-submodulo.sh (`.agent/scripts/atualizar-submodulo.sh`)
- **Descrição:** Script de ciclo de vida acionado automaticamente via hook `PreInvocation` (`.agent/hooks.json`) ou manualmente via CLI.
- **Por que ajuda as IAs e Operadores:** Garante que o submódulo `.agent` esteja sincronizado na branch `master` remota no início de cada sessão de conversa (`1x por sessão`) e verifica automaticamente **uma vez por dia** se o runtime Bun está atualizado na versão estável mais recente executando `bun upgrade --stable` (controlado via trava diária `/tmp/.antigravity_bun_upgrade_date`).
- **Uso:** `bash .agent/scripts/atualizar-submodulo.sh`
### notificar.sh (`.agent/notificar.sh`) ### notificar.sh (`.agent/notificar.sh`)
- **Descrição:** Utilitário unificado de notificação para o Sistema Operacional, compatível nativamente com **Linux** e **macOS**. - **Descrição:** Utilitário unificado de notificação para o Sistema Operacional, compatível nativamente com **Linux** e **macOS**.
- **Por que ajuda as IAs e Operadores:** Permite que comandos de longa duração (como `/plano.executar todos` e loops `/goal`) avisem o operador imediatamente no momento da conclusão, emitindo popup no desktop (KDE `kdialog`, FreeDesktop `notify-send` / `gdbus`, macOS Notification Center via `osascript`), som de alerta discreto (PipeWire, PulseAudio ou macOS `afplay`) e campainha no terminal (`\a`). Totalmente assíncrono, não-bloqueante e seguro para ambientes headless. - **Por que ajuda as IAs e Operadores:** Permite que comandos de longa duração (como `/plano.executar todos` e loops `/goal`) avisem o operador imediatamente no momento da conclusão, emitindo popup no desktop (KDE `kdialog`, FreeDesktop `notify-send` / `gdbus`, macOS Notification Center via `osascript`), som de alerta discreto (PipeWire, PulseAudio ou macOS `afplay`) e campainha no terminal (`\a`). Totalmente assíncrono, não-bloqueante e seguro para ambientes headless.

View file

@ -96,7 +96,6 @@ Este documento lista ferramentas de linha de comando (CLI) e utilitários que ot
- **Por que ajuda as IAs:** Utiliza representação compacta da árvore de acessibilidade com referências determinísticas (`@e1`, `@e2`), consumindo 200–400 tokens (até 90% menos tokens que a leitura do DOM completo). Permite executar testes E2E, interagir com telas, validar fluxos e registrar evidências visuais. - **Por que ajuda as IAs:** Utiliza representação compacta da árvore de acessibilidade com referências determinísticas (`@e1`, `@e2`), consumindo 200–400 tokens (até 90% menos tokens que a leitura do DOM completo). Permite executar testes E2E, interagir com telas, validar fluxos e registrar evidências visuais.
- **Modo Visível Obrigatório:** Para que o operador acompanhe cada teste em tempo real na tela, execute sempre com a flag `--headed` (ex: `agent-browser --session <modulo>_<contexto?> open --headed <url>`) ou defina `export AGENT_BROWSER_HEADED=true`. - **Modo Visível Obrigatório:** Para que o operador acompanhe cada teste em tempo real na tela, execute sempre com a flag `--headed` (ex: `agent-browser --session <modulo>_<contexto?> open --headed <url>`) ou defina `export AGENT_BROWSER_HEADED=true`.
- **Isolamento Mandatório de Sessão e Contexto:** Toda execução DEVE acompanhar a flag `--session <modulo>_<contexto?>` (onde `<modulo>` é o `modulo-id` extraído de `memorias-ia/modulo.yml` e `<contexto?>` discrimina acessos como `interno`, `externo`, `cliente`, `anonimo`) ou garantir `export AGENT_BROWSER_SESSION=<modulo>_<contexto?>`. Previne fechamento indevido de processos e contaminação cruzada de cookies e tokens JWT entre diferentes perfis de usuário. - **Isolamento Mandatório de Sessão e Contexto:** Toda execução DEVE acompanhar a flag `--session <modulo>_<contexto?>` (onde `<modulo>` é o `modulo-id` extraído de `memorias-ia/modulo.yml` e `<contexto?>` discrimina acessos como `interno`, `externo`, `cliente`, `anonimo`) ou garantir `export AGENT_BROWSER_SESSION=<modulo>_<contexto?>`. Previne fechamento indevido de processos e contaminação cruzada de cookies e tokens JWT entre diferentes perfis de usuário.
- **Pasta Obrigatória de Evidências (`.evidencias/`):** Todas as evidências geradas pelos testes automatizados (screenshots, capturas anotadas, vídeos, traces, relatórios) devem ser salvas obrigatoriamente na pasta `.evidencias/` na raiz do projeto (`mkdir -p .evidencias`).
- **Instalação:** - **Instalação:**
- Com Bun (padrão): `bun i -g agent-browser && agent-browser install` - Com Bun (padrão): `bun i -g agent-browser && agent-browser install`
- Com NPM: `npm install -g agent-browser && agent-browser install` - Com NPM: `npm install -g agent-browser && agent-browser install`
@ -106,11 +105,6 @@ Este documento lista ferramentas de linha de comando (CLI) e utilitários que ot
## 7. Utilitários Nativos do Framework .agent ## 7. Utilitários Nativos do Framework .agent
### atualizar-submodulo.sh (`.agent/scripts/atualizar-submodulo.sh`)
- **Descrição:** Script de ciclo de vida acionado automaticamente via hook `PreInvocation` (`.agent/hooks.json`) ou manualmente via CLI.
- **Por que ajuda as IAs e Operadores:** Garante que o submódulo `.agent` esteja sincronizado na branch `master` remota no início de cada sessão de conversa (`1x por sessão`) e verifica automaticamente **uma vez por dia** se o runtime Bun está atualizado na versão estável mais recente executando `bun upgrade --stable` (controlado via trava diária `/tmp/.antigravity_bun_upgrade_date`).
- **Uso:** `bash .agent/scripts/atualizar-submodulo.sh`
### notificar.sh (`.agent/notificar.sh`) ### notificar.sh (`.agent/notificar.sh`)
- **Descrição:** Utilitário unificado de notificação para o Sistema Operacional, compatível nativamente com **Linux** e **macOS**. - **Descrição:** Utilitário unificado de notificação para o Sistema Operacional, compatível nativamente com **Linux** e **macOS**.
- **Por que ajuda as IAs e Operadores:** Permite que comandos de longa duração (como `/plano.executar todos` e loops `/goal`) avisem o operador imediatamente no momento da conclusão, emitindo popup no desktop (KDE `kdialog`, FreeDesktop `notify-send` / `gdbus`, macOS Notification Center via `osascript`), som de alerta discreto (PipeWire, PulseAudio ou macOS `afplay`) e campainha no terminal (`\a`). Totalmente assíncrono, não-bloqueante e seguro para ambientes headless. - **Por que ajuda as IAs e Operadores:** Permite que comandos de longa duração (como `/plano.executar todos` e loops `/goal`) avisem o operador imediatamente no momento da conclusão, emitindo popup no desktop (KDE `kdialog`, FreeDesktop `notify-send` / `gdbus`, macOS Notification Center via `osascript`), som de alerta discreto (PipeWire, PulseAudio ou macOS `afplay`) e campainha no terminal (`\a`). Totalmente assíncrono, não-bloqueante e seguro para ambientes headless.

File diff suppressed because one or more lines are too long

View file

@ -48,7 +48,7 @@ Toda sua comunicação — incluindo raciocínio interno, reflexões e respostas
9. Criar e manter arquivo `{componente}.ajuda.md` co-localizado (para `modalX.vue` $\rightarrow$ `modalX.ajuda.md`) sempre que houver ajuda contextual (ver `skills/adicionar-ajuda`) 9. Criar e manter arquivo `{componente}.ajuda.md` co-localizado (para `modalX.vue` $\rightarrow$ `modalX.ajuda.md`) sempre que houver ajuda contextual (ver `skills/adicionar-ajuda`)
10. Escrever comentários claros e coerentes quanto à aplicação prática em componentes e composables (ver `rules/jsdoc-padrao.md`) 10. Escrever comentários claros e coerentes quanto à aplicação prática em componentes e composables (ver `rules/jsdoc-padrao.md`)
11. **Garantir Despoluição Visual e Hierarquia (*Refactoring UI*)** — construir telas limpas, sem excesso de bordas/divisores ou *cards* aninhados (*Card-ception*), com pirâmide de ações estrita (apenas 1 botão primário sólido por vista e botões destrutivos discretos fora do modal de confirmação), consolidação de colunas correlatas em tabelas (2 linhas por célula) e espaçamento regido pela Lei da Proximidade (ver `rules/refactoring-ui-hierarquia-despoluicao.md` e `https://adm.paiol.idz.one/estaticos/Refactoring-UI-Steve-Schoger-Adam-Wathan.pdf`) 11. **Garantir Despoluição Visual e Hierarquia (*Refactoring UI*)** — construir telas limpas, sem excesso de bordas/divisores ou *cards* aninhados (*Card-ception*), com pirâmide de ações estrita (apenas 1 botão primário sólido por vista e botões destrutivos discretos fora do modal de confirmação), consolidação de colunas correlatas em tabelas (2 linhas por célula) e espaçamento regido pela Lei da Proximidade (ver `rules/refactoring-ui-hierarquia-despoluicao.md` e `https://adm.paiol.idz.one/estaticos/Refactoring-UI-Steve-Schoger-Adam-Wathan.pdf`)
12. Validar comportamento interativo e renderização visual de telas utilizando `agent-browser`, **sempre em modo visível (`--headed`), com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`) e salvando obrigatoriamente todas as evidências geradas na pasta `.evidencias/`** para acompanhamento do operador e prevenção de mistura de tokens e conflitos de sessão (ver `rules/testes-interface-agent-browser.md`) 12. Validar comportamento interativo e renderização visual de telas utilizando `agent-browser`, **sempre em modo visível (`--headed`) e com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`)** para acompanhamento do operador e prevenção de mistura de tokens e conflitos de sessão (ver `rules/testes-interface-agent-browser.md`)
## Restrições ## Restrições

View file

@ -48,7 +48,7 @@ Toda sua comunicação — incluindo raciocínio interno, reflexões e respostas
9. Criar e manter arquivo `{componente}.ajuda.md` co-localizado (para `modalX.vue` $\rightarrow$ `modalX.ajuda.md`) sempre que houver ajuda contextual (ver `skills/adicionar-ajuda`) 9. Criar e manter arquivo `{componente}.ajuda.md` co-localizado (para `modalX.vue` $\rightarrow$ `modalX.ajuda.md`) sempre que houver ajuda contextual (ver `skills/adicionar-ajuda`)
10. Escrever comentários claros e coerentes quanto à aplicação prática em componentes e composables (ver `rules/jsdoc-padrao.md`) 10. Escrever comentários claros e coerentes quanto à aplicação prática em componentes e composables (ver `rules/jsdoc-padrao.md`)
11. **Garantir Despoluição Visual e Hierarquia (*Refactoring UI*)** — construir telas limpas, sem excesso de bordas/divisores ou *cards* aninhados (*Card-ception*), com pirâmide de ações estrita (apenas 1 botão primário sólido por vista e botões destrutivos discretos fora do modal de confirmação), consolidação de colunas correlatas em tabelas (2 linhas por célula) e espaçamento regido pela Lei da Proximidade (ver `rules/refactoring-ui-hierarquia-despoluicao.md` e `https://adm.paiol.idz.one/estaticos/Refactoring-UI-Steve-Schoger-Adam-Wathan.pdf`) 11. **Garantir Despoluição Visual e Hierarquia (*Refactoring UI*)** — construir telas limpas, sem excesso de bordas/divisores ou *cards* aninhados (*Card-ception*), com pirâmide de ações estrita (apenas 1 botão primário sólido por vista e botões destrutivos discretos fora do modal de confirmação), consolidação de colunas correlatas em tabelas (2 linhas por célula) e espaçamento regido pela Lei da Proximidade (ver `rules/refactoring-ui-hierarquia-despoluicao.md` e `https://adm.paiol.idz.one/estaticos/Refactoring-UI-Steve-Schoger-Adam-Wathan.pdf`)
12. Validar comportamento interativo e renderização visual de telas utilizando `agent-browser`, **sempre em modo visível (`--headed`), com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`) e salvando obrigatoriamente todas as evidências geradas na pasta `.evidencias/`** para acompanhamento do operador e prevenção de mistura de tokens e conflitos de sessão (ver `rules/testes-interface-agent-browser.md`) 12. Validar comportamento interativo e renderização visual de telas utilizando `agent-browser`, **sempre em modo visível (`--headed`) e com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`)** para acompanhamento do operador e prevenção de mistura de tokens e conflitos de sessão (ver `rules/testes-interface-agent-browser.md`)
## Restrições ## Restrições

File diff suppressed because one or more lines are too long

View file

@ -45,13 +45,12 @@ Toda sua comunicação — incluindo raciocínio interno, reflexões e respostas
6. Identificar casos extremos e cenários de falha não cobertos 6. Identificar casos extremos e cenários de falha não cobertos
7. Validar schemas Zod contra dados reais de produção 7. Validar schemas Zod contra dados reais de produção
8. Documentar bugs encontrados com passos de reprodução 8. Documentar bugs encontrados com passos de reprodução
9. Realizar testes automatizados de interface (E2E) com `agent-browser`, **sempre em modo visível (`--headed`), com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`) e salvando obrigatoriamente todas as evidências geradas na pasta `.evidencias/`** para que o operador acompanhe cada ação na tela e evitar mistura de tokens/cookies entre acessos interno, cliente, externo e anônimo (ver `rules/testes-interface-agent-browser.md` e skill `testar-interface-agent-browser`) 9. Realizar testes automatizados de interface (E2E) com `agent-browser`, **sempre em modo visível (`--headed`) e com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`)** para que o operador acompanhe cada ação na tela e evitar mistura de tokens/cookies entre acessos interno, cliente, externo e anônimo (ver `rules/testes-interface-agent-browser.md` e skill `testar-interface-agent-browser`)
10. **Gerar Planos Técnicos via `/plano`** — durante homologações, reviews ou testes, formalizar bugs, melhorias e gaps em planos estruturados em `PLANOS/pendente/` para posterior implementação pelo time de desenvolvimento (ver `global/workflows/plano.md`). 10. **Gerar Planos Técnicos via `/plano`** — durante homologações, reviews ou testes, formalizar bugs, melhorias e gaps em planos estruturados em `PLANOS/pendente/` para posterior implementação pelo time de desenvolvimento (ver `global/workflows/plano.md`).
## Restrições ## Restrições
- NUNCA criar testes sem antes diagnosticar a cobertura existente (ver `global/rules/diagnostico-antes-correcao`) - NUNCA criar testes sem antes diagnosticar a cobertura existente (ver `global/rules/diagnostico-antes-correcao`)
- NUNCA salvar evidências geradas pelos testes automatizados (screenshots, vídeos, traces, logs ou relatórios) fora da pasta `.evidencias/` (proibido salvar solto na raiz, em `/tmp/` ou em `evidencias/` sem ponto)
- NÃO modifica código de produção — apenas cria/modifica arquivos de teste - NÃO modifica código de produção — apenas cria/modifica arquivos de teste
- NÃO aprova uma feature sem cobertura dos cenários críticos - NÃO aprova uma feature sem cobertura dos cenários críticos
- Testes devem ser independentes e repetíveis - Testes devem ser independentes e repetíveis
@ -115,7 +114,7 @@ Artefatos em `.agent-local/` sempre têm prioridade sobre os herdados de `.agent
- [ ] Casos extremos (null, vazio, limite) testados? - [ ] Casos extremos (null, vazio, limite) testados?
- [ ] Erros de rede/banco simulados? - [ ] Erros de rede/banco simulados?
- [ ] Performance em volume realista de dados? - [ ] Performance em volume realista de dados?
- [ ] Teste de interface E2E via `agent-browser` executado em modo visível (`--headed`) e com sessão isolada por contexto (`--session <modulo-id>_<contexto?>`), com screenshots e evidências comprobatórias salvos obrigatoriamente na pasta `.evidencias/`? - [ ] Teste de interface E2E via `agent-browser` executado em modo visível (`--headed`) e com sessão isolada por contexto (`--session <modulo-id>_<contexto?>`), com screenshots comprobatórios?
## Memória Persistente & Identidade do Projeto ## Memória Persistente & Identidade do Projeto

View file

@ -45,13 +45,12 @@ Toda sua comunicação — incluindo raciocínio interno, reflexões e respostas
6. Identificar casos extremos e cenários de falha não cobertos 6. Identificar casos extremos e cenários de falha não cobertos
7. Validar schemas Zod contra dados reais de produção 7. Validar schemas Zod contra dados reais de produção
8. Documentar bugs encontrados com passos de reprodução 8. Documentar bugs encontrados com passos de reprodução
9. Realizar testes automatizados de interface (E2E) com `agent-browser`, **sempre em modo visível (`--headed`), com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`) e salvando obrigatoriamente todas as evidências geradas na pasta `.evidencias/`** para que o operador acompanhe cada ação na tela e evitar mistura de tokens/cookies entre acessos interno, cliente, externo e anônimo (ver `rules/testes-interface-agent-browser.md` e skill `testar-interface-agent-browser`) 9. Realizar testes automatizados de interface (E2E) com `agent-browser`, **sempre em modo visível (`--headed`) e com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`)** para que o operador acompanhe cada ação na tela e evitar mistura de tokens/cookies entre acessos interno, cliente, externo e anônimo (ver `rules/testes-interface-agent-browser.md` e skill `testar-interface-agent-browser`)
10. **Gerar Planos Técnicos via `/plano`** — durante homologações, reviews ou testes, formalizar bugs, melhorias e gaps em planos estruturados em `PLANOS/pendente/` para posterior implementação pelo time de desenvolvimento (ver `global/workflows/plano.md`). 10. **Gerar Planos Técnicos via `/plano`** — durante homologações, reviews ou testes, formalizar bugs, melhorias e gaps em planos estruturados em `PLANOS/pendente/` para posterior implementação pelo time de desenvolvimento (ver `global/workflows/plano.md`).
## Restrições ## Restrições
- NUNCA criar testes sem antes diagnosticar a cobertura existente (ver `global/rules/diagnostico-antes-correcao`) - NUNCA criar testes sem antes diagnosticar a cobertura existente (ver `global/rules/diagnostico-antes-correcao`)
- NUNCA salvar evidências geradas pelos testes automatizados (screenshots, vídeos, traces, logs ou relatórios) fora da pasta `.evidencias/` (proibido salvar solto na raiz, em `/tmp/` ou em `evidencias/` sem ponto)
- NÃO modifica código de produção — apenas cria/modifica arquivos de teste - NÃO modifica código de produção — apenas cria/modifica arquivos de teste
- NÃO aprova uma feature sem cobertura dos cenários críticos - NÃO aprova uma feature sem cobertura dos cenários críticos
- Testes devem ser independentes e repetíveis - Testes devem ser independentes e repetíveis
@ -115,7 +114,7 @@ Artefatos em `.agent-local/` sempre têm prioridade sobre os herdados de `.agent
- [ ] Casos extremos (null, vazio, limite) testados? - [ ] Casos extremos (null, vazio, limite) testados?
- [ ] Erros de rede/banco simulados? - [ ] Erros de rede/banco simulados?
- [ ] Performance em volume realista de dados? - [ ] Performance em volume realista de dados?
- [ ] Teste de interface E2E via `agent-browser` executado em modo visível (`--headed`) e com sessão isolada por contexto (`--session <modulo-id>_<contexto?>`), com screenshots e evidências comprobatórias salvos obrigatoriamente na pasta `.evidencias/`? - [ ] Teste de interface E2E via `agent-browser` executado em modo visível (`--headed`) e com sessão isolada por contexto (`--session <modulo-id>_<contexto?>`), com screenshots comprobatórios?
## Memória Persistente & Identidade do Projeto ## Memória Persistente & Identidade do Projeto

File diff suppressed because one or more lines are too long

View file

@ -47,7 +47,7 @@ Toda sua comunicação — incluindo raciocínio interno, reflexões e respostas
8. Organizar a hierarquia de informação das telas (3 níveis de cor de texto, 2 faixas de peso `400/500` e `600/700`, títulos contidos `16px–20px` em *Sentence case*) 8. Organizar a hierarquia de informação das telas (3 níveis de cor de texto, 2 faixas de peso `400/500` e `600/700`, títulos contidos `16px–20px` em *Sentence case*)
9. Revisar labels, placeholders, textos de ajuda e acessibilidade textual (`alt` conciso até 125 caracteres sem `"Imagem de..."`, `alt=""` para decorativos e proibição de `text-truncate` sem tooltip/expansão) 9. Revisar labels, placeholders, textos de ajuda e acessibilidade textual (`alt` conciso até 125 caracteres sem `"Imagem de..."`, `alt=""` para decorativos e proibição de `text-truncate` sem tooltip/expansão)
10. Identificar inconsistências de UX entre módulos 10. Identificar inconsistências de UX entre módulos
11. Auditar a usabilidade e inspeção de telas em tempo de execução com `agent-browser`, **sempre em modo visível (`--headed`), com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`) e salvando obrigatoriamente todas as evidências geradas na pasta `.evidencias/`** para que o operador acompanhe a validação visual e evitar mistura de tokens e estados de interface (ver `rules/testes-interface-agent-browser.md`) 11. Auditar a usabilidade e inspeção de telas em tempo de execução com `agent-browser`, **sempre em modo visível (`--headed`) e com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`)** para que o operador acompanhe a validação visual e evitar mistura de tokens e estados de interface (ver `rules/testes-interface-agent-browser.md`)
## Restrições ## Restrições

View file

@ -47,7 +47,7 @@ Toda sua comunicação — incluindo raciocínio interno, reflexões e respostas
8. Organizar a hierarquia de informação das telas (3 níveis de cor de texto, 2 faixas de peso `400/500` e `600/700`, títulos contidos `16px–20px` em *Sentence case*) 8. Organizar a hierarquia de informação das telas (3 níveis de cor de texto, 2 faixas de peso `400/500` e `600/700`, títulos contidos `16px–20px` em *Sentence case*)
9. Revisar labels, placeholders, textos de ajuda e acessibilidade textual (`alt` conciso até 125 caracteres sem `"Imagem de..."`, `alt=""` para decorativos e proibição de `text-truncate` sem tooltip/expansão) 9. Revisar labels, placeholders, textos de ajuda e acessibilidade textual (`alt` conciso até 125 caracteres sem `"Imagem de..."`, `alt=""` para decorativos e proibição de `text-truncate` sem tooltip/expansão)
10. Identificar inconsistências de UX entre módulos 10. Identificar inconsistências de UX entre módulos
11. Auditar a usabilidade e inspeção de telas em tempo de execução com `agent-browser`, **sempre em modo visível (`--headed`), com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`) e salvando obrigatoriamente todas as evidências geradas na pasta `.evidencias/`** para que o operador acompanhe a validação visual e evitar mistura de tokens e estados de interface (ver `rules/testes-interface-agent-browser.md`) 11. Auditar a usabilidade e inspeção de telas em tempo de execução com `agent-browser`, **sempre em modo visível (`--headed`) e com isolamento por sessão e contexto (`--session <modulo-id>_<contexto?>`)** para que o operador acompanhe a validação visual e evitar mistura de tokens e estados de interface (ver `rules/testes-interface-agent-browser.md`)
## Restrições ## Restrições

View file

@ -142,7 +142,7 @@ Conforme as diretrizes de **Layout (`Panes` e `Canonical Layouts`), `Dialogs` e
- Inserir links de navegação cruzada e *empty states* guiados entre telas dependentes. - Inserir links de navegação cruzada e *empty states* guiados entre telas dependentes.
- Garantir que quadros Kanban sejam horizontais e responsivos. - Garantir que quadros Kanban sejam horizontais e responsivos.
5. **Validar Visualmente com `agent-browser`:** 5. **Validar Visualmente com `agent-browser`:**
- Inspecionar o fluxo ponta a ponta em modo visível (`agent-browser --session <modulo-id>_<contexto?> --headed`) e salvar as evidências geradas em `.evidencias/`, conforme `rules/testes-interface-agent-browser.md`. - Inspecionar o fluxo ponta a ponta em modo visível (`agent-browser --session <modulo-id>_<contexto?> --headed`) conforme `rules/testes-interface-agent-browser.md`.
--- ---

View file

@ -1,13 +1,13 @@
--- ---
type: rule type: rule
name: atualizacao-submodulo-sessao name: atualizacao-submodulo-sessao
description: Atualização obrigatória do submódulo .agent na branch master ao iniciar qualquer sessão de trabalho e verificação diária do runtime Bun (bun upgrade --stable) description: Atualização obrigatória do submódulo .agent na branch master ao iniciar qualquer sessão de trabalho
scope: global scope: global
trigger: always_on trigger: always_on
updatedAt: "2026-10-30" updatedAt: "2026-10-14"
--- ---
# Regra: Atualização Obrigatória do Submódulo `.agent` ao Iniciar Sessão e Verificação Diária do Bun # Regra: Atualização Obrigatória do Submódulo `.agent` na Branch Master ao Iniciar Sessão
## Contexto ## Contexto
@ -17,22 +17,19 @@ O ecossistema Azteca adota o framework `.agent` como um **git submodule** polim
https://git2.idz.one/publico/.agent.git https://git2.idz.one/publico/.agent.git
``` ```
Além disso, todo o ecossistema utiliza o **Bun** como runtime e gerenciador de pacotes padrão. Trabalhar com uma versão defasada do submódulo `.agent` ou do runtime `bun` faz com que o agente tome decisões baseadas em regras antigas, falhe em auditorias de setup ou enfrente incompatibilidades de runtime. Por isso, a sincronização do submódulo na branch `master` (a cada sessão) e a verificação de atualização do Bun na versão estável (uma vez por dia) são mandatórias. Trabalhar com uma versão defasada do submódulo `.agent` faz com que o agente tome decisões baseadas em regras antigas, falhe em auditorias de setup ou use padrões depreciados. Por isso, a sincronização do submódulo na branch `master` é mandatória ao iniciar qualquer sessão.
--- ---
## Regra Mandatória de Inicialização e Manutenção Diária ## Regra Mandatória de Inicialização
1. **Sincronização por Sessão do `.agent`:** Ao iniciar uma nova sessão de trabalho ou interação no projeto hospedeiro, a sincronização do submódulo `.agent` **DEVE OBRIGATORIAMENTE ser executada** na branch `master`: Ao iniciar uma nova sessão de trabalho ou interação no projeto hospedeiro, a sincronização do submódulo `.agent` **DEVE OBRIGATORIAMENTE ser executada** na branch `master`:
```bash
git submodule update --init --recursive --remote
```
2. **Verificação Diária do Runtime Bun (1x por dia):** Uma vez por dia, o ambiente **DEVE verificar se o Bun está atualizado** na versão estável mais recente executando:
```bash
bun upgrade --stable
```
Ambas as operações são classificadas como **ações autônomas** (conforme `rules/autonomia-agente.md`) e não requerem autorização prévia do operador humano. ```bash
git submodule update --init --recursive --remote
```
Esta operação é classificada como uma **ação autônoma** (conforme `rules/autonomia-agente.md`) e não requer autorização prévia do operador humano.
--- ---
@ -60,25 +57,24 @@ git submodule set-branch --branch master .agent
O framework `.agent` disponibiliza um hook nativo do Antigravity em `.agent/hooks.json` vinculado ao evento `PreInvocation`: O framework `.agent` disponibiliza um hook nativo do Antigravity em `.agent/hooks.json` vinculado ao evento `PreInvocation`:
1. No início da conversa, o hook aciona o script `.agent/scripts/atualizar-submodulo.sh`. 1. No início da conversa, o hook aciona o script `.agent/scripts/atualizar-submodulo.sh`.
2. **Idempotência Diária do Bun (`1x por dia`):** O script verifica o arquivo de controle `/tmp/.antigravity_bun_upgrade_date` (formato `YYYY-MM-DD`). Caso ainda não tenha sido verificado na data atual, executa `bun upgrade --stable` e grava a data do dia no arquivo de controle. Execuções subsequentes no mesmo dia ignoram o comando com zero latência. 2. O script detecta a raiz do projeto pai (superprojeto) e verifica a existência de uma trava temporária da sessão (`/tmp/.antigravity_agent_updated_${conversationId}`).
3. **Idempotência de Sessão do `.agent` (`1x por conversa`):** O script detecta a raiz do projeto pai (superprojeto) e verifica a existência da trava temporária da sessão (`/tmp/.antigravity_agent_updated_${conversationId}`). A sincronização remota do submódulo é executada apenas no primeiro turno da sessão, retornando imediatamente (`{}`) nos turnos seguintes. 3. **Idempotência:** A sincronização remota é executada apenas no primeiro turno da sessão. Turnos subsequentes retornam imediatamente (`{}`), garantindo zero latência adicional durante o diálogo.
4. Ao concluir com sucesso, o script emite uma notificação efêmera informando a IA sobre a sincronização na branch `master` e, quando executada no dia, o resultado da atualização do Bun. 4. Ao concluir com sucesso, o script emite uma notificação efêmera informando a IA sobre a sincronização na branch `master`.
--- ---
## 3. Resiliência e Fallback Offline ## 3. Resiliência e Fallback Offline
A atualização do submódulo e a verificação diária do Bun nunca devem interromper ou impedir o atendimento ao operador: A atualização do submódulo nunca deve interromper ou impedir o atendimento ao operador:
- Se o ambiente estiver sem acesso à internet, com DNS indisponível ou falha temporária de rede, o script captura o erro graciosamente. - Se o ambiente estiver sem acesso à internet, com DNS indisponível ou falha temporária de rede, o script captura o erro graciosamente.
- O agente emite um aviso no log/contexto informando que a sincronização remota ou verificação do Bun não pôde ser completada e prossegue normalmente a execução com as versões locais já presentes. - O agente emite um aviso no log/contexto informando que a sincronização remota não pôde ser completada e prossegue normalmente a execução com a versão local já presente no submódulo.
--- ---
## Proibições ## Proibições
- **NUNCA** travar o submódulo `.agent` em branches experimentais ou desatualizadas sem autorização explícita do operador. - **NUNCA** travar o submódulo `.agent` em branches experimentais ou desatualizadas sem autorização explícita do operador.
- **NUNCA** atualizar o Bun para versões canary/instáveis automaticamente (utilizar sempre `--stable`).
- **NUNCA** abortar a sessão ou falhar com crash caso a rede esteja indisponível para atualização remota. - **NUNCA** abortar a sessão ou falhar com crash caso a rede esteja indisponível para atualização remota.
- **NUNCA** executar `git submodule update --remote` descartando alterações locais em desenvolvimento sem verificação prévia. - **NUNCA** executar `git submodule update --remote` descartando alterações locais em desenvolvimento sem verificação prévia.

View file

@ -29,7 +29,6 @@ O agente pode executar sem perguntar:
- Aplicar padrões de nomenclatura já definidos em rules - Aplicar padrões de nomenclatura já definidos em rules
- Sugerir o texto de mensagem de commit (padrão Conventional Commits) ao operador humano após concluir implementações ou documentações - Sugerir o texto de mensagem de commit (padrão Conventional Commits) ao operador humano após concluir implementações ou documentações
- Atualizar o submódulo `.agent` ao iniciar uma sessão executando `git submodule update --init --recursive --remote` na branch `master` - Atualizar o submódulo `.agent` ao iniciar uma sessão executando `git submodule update --init --recursive --remote` na branch `master`
- Verificar e atualizar o runtime Bun uma vez por dia executando `bun upgrade --stable`
- Executar `git add`, `git commit`, `git pull --rebase` e `git push` diretamente na branch `master` **exclusivamente no submódulo `.agent`** ao evoluir artefatos de IA - Executar `git add`, `git commit`, `git pull --rebase` e `git push` diretamente na branch `master` **exclusivamente no submódulo `.agent`** ao evoluir artefatos de IA
## Ações que Requerem Confirmação ## Ações que Requerem Confirmação

View file

@ -5,7 +5,11 @@ trigger: always_on
description: Exige uso de arrow functions (const x = () => {}) em vez de function declarations (function x() {}) description: Exige uso de arrow functions (const x = () => {}) em vez de function declarations (function x() {})
scope: global scope: global
updatedAt: "2026-07-01" updatedAt: "2026-07-01"
globs: "**/*.ts, **/*.tsx, **/*.js, **/*.vue" globs:
- "**/*.ts"
- "**/*.tsx"
- "**/*.js"
- "**/*.vue"
alwaysApply: true alwaysApply: true
--- ---

View file

@ -82,7 +82,7 @@ Sempre que qualquer agente, persona, workflow ou skill necessitar de:
3. **Propósito ou Stack (`modulo-descricao` e `modulo-tipo`)**: para contextualizar novos agentes, gerar propostas comerciais, marketing, reels, análises de arquitetura ou testes; 3. **Propósito ou Stack (`modulo-descricao` e `modulo-tipo`)**: para contextualizar novos agentes, gerar propostas comerciais, marketing, reels, análises de arquitetura ou testes;
4. **Credenciais de Testes (`modulo-acesso`)**: O agente de testes (`@testes`, rotinas com `agent-browser`, QA) DEVE extrair as credenciais do contexto específico (`interno`, `externo`, `cliente`, etc.) ou credenciais diretas de `modulo-acesso` em `memorias-ia/modulo.yml` para autenticação determinística sem contaminação de cookies/tokens entre perfis; 4. **Credenciais de Testes (`modulo-acesso`)**: O agente de testes (`@testes`, rotinas com `agent-browser`, QA) DEVE extrair as credenciais do contexto específico (`interno`, `externo`, `cliente`, etc.) ou credenciais diretas de `modulo-acesso` em `memorias-ia/modulo.yml` para autenticação determinística sem contaminação de cookies/tokens entre perfis;
5. **Caminho da Wiki (`modulo-wiki`)**: Qualquer operação de documentação, leitura de regras ou escrita na Wiki deve resolver o caminho a partir de `modulo-wiki`, adotando compulsoriamente `../wiki/` caso a chave não esteja presente ou esteja vazia; 5. **Caminho da Wiki (`modulo-wiki`)**: Qualquer operação de documentação, leitura de regras ou escrita na Wiki deve resolver o caminho a partir de `modulo-wiki`, adotando compulsoriamente `../wiki/` caso a chave não esteja presente ou esteja vazia;
6. **Sincronização do Submódulo (`.agent`) e Verificação Diária do Bun**: Ao iniciar qualquer sessão ou interação no projeto hospedeiro, o agente DEVE assegurar que o submódulo `.agent` esteja atualizado com a branch `master` remota executando `git submodule update --init --recursive --remote` e que o runtime Bun seja verificado uma vez por dia com `bun upgrade --stable` (automatizado via `.agent/scripts/atualizar-submodulo.sh`). 6. **Sincronização do Submódulo (`.agent`)**: Ao iniciar qualquer sessão ou interação no projeto hospedeiro, o agente DEVE assegurar que o submódulo `.agent` esteja atualizado com a branch `master` remota executando `git submodule update --init --recursive --remote`.
👉 **O agente DEVE obrigatoriamente ler e extrair as informações de `memorias-ia/modulo.yml`.** 👉 **O agente DEVE obrigatoriamente ler e extrair as informações de `memorias-ia/modulo.yml`.**

View file

@ -1,10 +1,10 @@
--- ---
type: rule type: rule
name: testes-interface-agent-browser name: testes-interface-agent-browser
description: Testes automatizados de interface (E2E) e acesso visual ao frontend devem usar agent-browser, sempre visível (--headed), com isolamento por sessão e contexto (--session <modulo>_<contexto?>) e salvando evidências obrigatoriamente na pasta .evidencias/. description: Testes automatizados de interface (E2E) e acesso visual ao frontend devem usar agent-browser, sempre visível (--headed) e com isolamento por sessão e contexto (--session <modulo>_<contexto?>).
scope: global scope: global
trigger: always_on trigger: always_on
updatedAt: "2026-10-30" updatedAt: "2026-10-08"
--- ---
# Regra: Testes Automatizados de Interface e Navegação com agent-browser # Regra: Testes Automatizados de Interface e Navegação com agent-browser
@ -37,10 +37,8 @@ Sempre que qualquer agente de IA (`@testes`, `@front`, `@ux` ou outro) precisar
4. **Utilizar o modelo de referências (`@ref`)**: 4. **Utilizar o modelo de referências (`@ref`)**:
- Mapear a tela via `agent-browser --session <modulo>_<contexto?> snapshot -i`, obtendo referências compactas como `@e1`, `@e2`. - Mapear a tela via `agent-browser --session <modulo>_<contexto?> snapshot -i`, obtendo referências compactas como `@e1`, `@e2`.
- Executar ações determinísticas referenciando os IDs gerados (`click @e1`, `fill @e2 "texto"`). - Executar ações determinísticas referenciando os IDs gerados (`click @e1`, `fill @e2 "texto"`).
5. **Registrar evidências obrigatoriamente na pasta `.evidencias/` e fechar sessão**: 5. **Registrar evidências e fechar sessão**:
- Todas as evidências geradas pelos testes automatizados (screenshots, capturas anotadas, PDFs, vídeos, traces, relatórios ou dumps de console/rede) **DEVEM OBRIGATORIAMENTE ser salvas na pasta `.evidencias/`** na raiz do projeto (`mkdir -p .evidencias`). - Registrar comprovações visuais com `agent-browser --session <modulo>_<contexto?> screenshot <arquivo.png>`.
- Registrar comprovações visuais com `agent-browser --session <modulo>_<contexto?> screenshot .evidencias/<arquivo.png>`.
- Garantir que `.evidencias/` conste no `.gitignore` do projeto para evitar o versionamento acidental de binários de teste.
- Encerrar graciosamente o navegador com `agent-browser --session <modulo>_<contexto?> close` ao término do fluxo. - Encerrar graciosamente o navegador com `agent-browser --session <modulo>_<contexto?> close` ao término do fluxo.
6. **Credenciais Canônicas por Contexto (`modulo-acesso`)**: 6. **Credenciais Canônicas por Contexto (`modulo-acesso`)**:
- Sempre que o teste exigir autenticação, o agente **DEVE OBRIGATORIAMENTE extrair as credenciais do contexto específico** em `modulo-acesso` de `memorias-ia/modulo.yml` (ex: `modulo-acesso.interno`, `modulo-acesso.cliente`, etc.). - Sempre que o teste exigir autenticação, o agente **DEVE OBRIGATORIAMENTE extrair as credenciais do contexto específico** em `modulo-acesso` de `memorias-ia/modulo.yml` (ex: `modulo-acesso.interno`, `modulo-acesso.cliente`, etc.).
@ -117,9 +115,8 @@ agent-browser --session "${MODULO}_${CONTEXTO}" wait 1000
# Obter novo snapshot para verificar estado pós-ação # Obter novo snapshot para verificar estado pós-ação
agent-browser --session "${MODULO}_${CONTEXTO}" snapshot -i agent-browser --session "${MODULO}_${CONTEXTO}" snapshot -i
# Garantir pasta .evidencias e capturar evidência gráfica do teste # Capturar evidência gráfica do teste
mkdir -p .evidencias agent-browser --session "${MODULO}_${CONTEXTO}" screenshot evidencias/teste-login-sucesso.png
agent-browser --session "${MODULO}_${CONTEXTO}" screenshot .evidencias/teste-login-sucesso.png
# Verificar erros no console do navegador # Verificar erros no console do navegador
agent-browser --session "${MODULO}_${CONTEXTO}" console agent-browser --session "${MODULO}_${CONTEXTO}" console
@ -140,7 +137,6 @@ agent-browser --session "${MODULO}_${CONTEXTO}" close
- **Proibido executar sem a flag `--session <modulo>_<contexto?>`** (ou sem `AGENT_BROWSER_SESSION`), evitando poluir a sessão default compartilhada. - **Proibido executar sem a flag `--session <modulo>_<contexto?>`** (ou sem `AGENT_BROWSER_SESSION`), evitando poluir a sessão default compartilhada.
- **Proibido misturar acessos com perfis diferentes na mesma sessão genérica sem contexto** (ex: logar como operador interno e depois testar fluxo de cliente ou anônimo na mesma sessão, causando mistura de tokens). - **Proibido misturar acessos com perfis diferentes na mesma sessão genérica sem contexto** (ex: logar como operador interno e depois testar fluxo de cliente ou anônimo na mesma sessão, causando mistura de tokens).
- **Proibido abrir em modo headless silencioso** sem flag `--headed` ou variável `AGENT_BROWSER_HEADED=true`. - **Proibido abrir em modo headless silencioso** sem flag `--headed` ou variável `AGENT_BROWSER_HEADED=true`.
- **Proibido salvar evidências de testes automatizados fora da pasta `.evidencias/`** (como soltas na raiz do projeto, em `/tmp/` ou em `evidencias/` sem ponto inicial).
- **Proibido despejar o HTML/DOM completo** no contexto da IA (consome milhares de tokens desnecessários; use sempre `snapshot -i`). - **Proibido despejar o HTML/DOM completo** no contexto da IA (consome milhares de tokens desnecessários; use sempre `snapshot -i`).
- **Proibido navegar para URLs desconhecidas** ou inventadas pela IA fora do escopo aprovado do teste. - **Proibido navegar para URLs desconhecidas** ou inventadas pela IA fora do escopo aprovado do teste.
- **Proibido deixar processos ou janelas órfãs** após a conclusão do trabalho (sempre executar `agent-browser --session <modulo>_<contexto?> close`). - **Proibido deixar processos ou janelas órfãs** após a conclusão do trabalho (sempre executar `agent-browser --session <modulo>_<contexto?> close`).
@ -148,7 +144,7 @@ agent-browser --session "${MODULO}_${CONTEXTO}" close
### Permitido e Recomendado ✅ ### Permitido e Recomendado ✅
- Manter sessões persistentes por contexto quando necessário via `--session <modulo>_<contexto> --restore`. - Manter sessões persistentes por contexto quando necessário via `--session <modulo>_<contexto> --restore`.
- Utilizar sub-isolamento determinístico (`<modulo>_<contexto>_<slug-ou-pid>`) caso múltiplos testes do mesmo contexto ocorram simultaneamente no mesmo host. - Utilizar sub-isolamento determinístico (`<modulo>_<contexto>_<slug-ou-pid>`) caso múltiplos testes do mesmo contexto ocorram simultaneamente no mesmo host.
- Usar `agent-browser --session <modulo>_<contexto> screenshot --annotate .evidencias/<slug>-anotado.png` para inspecionar layouts complexos com visão computacional. - Usar `agent-browser --session <modulo>_<contexto> screenshot --annotate` para inspecionar layouts complexos com visão computacional.
- Consultar guias embutidos do próprio binário via `agent-browser skills get core --full` ou `agent-browser skills get dogfood`. - Consultar guias embutidos do próprio binário via `agent-browser skills get core --full` ou `agent-browser skills get dogfood`.
--- ---

View file

@ -5,7 +5,10 @@ trigger: always_on
description: Proíbe uso de any, casts inseguros e padroniza uso de enums em código TypeScript description: Proíbe uso de any, casts inseguros e padroniza uso de enums em código TypeScript
scope: global scope: global
updatedAt: "2026-06-01" updatedAt: "2026-06-01"
globs: "**/*.ts, **/*.tsx, **/*.vue" globs:
- "**/*.ts"
- "**/*.tsx"
- "**/*.vue"
alwaysApply: true alwaysApply: true
--- ---

View file

@ -6,7 +6,10 @@ version: "1.0"
scope: global scope: global
priority: alta priority: alta
trigger: always_on trigger: always_on
globs: "**/*.ts, **/*.tsx, **/*.vue" globs:
- "**/*.ts"
- "**/*.tsx"
- "**/*.vue"
alwaysApply: true alwaysApply: true
updatedAt: "2026-06-01" updatedAt: "2026-06-01"
references: references:

View file

@ -42,7 +42,7 @@ Ao acionar `/plano.executar`, o agente adota estritamente o compromisso do **/go
- O agente **NÃO desiste nem pede ajuda** imediatamente. - O agente **NÃO desiste nem pede ajuda** imediatamente.
- Ele analisa o stack trace / log de erro, diagnostica a causa raiz, refatora o trecho e roda a validação novamente. - Ele analisa o stack trace / log de erro, diagnostica a causa raiz, refatora o trecho e roda a validação novamente.
- Esse loop continua até que todos os critérios de aceite (Definition of Done) estejam 100% verdes. - Esse loop continua até que todos os critérios de aceite (Definition of Done) estejam 100% verdes.
3. **Comprovação Baseada em Evidências (`.evidencias/`):** Apenas testes reais e verificações executadas contam como conclusão, com todas as evidências geradas pelos testes automatizados salvas obrigatoriamente na pasta `.evidencias/`. Não há "deve estar funcionando" sem validação com comandos concretos. 3. **Comprovação Baseada em Evidências:** Apenas testes reais e verificações executadas contam como conclusão. Não há "deve estar funcionando" sem validação com comandos concretos.
--- ---
@ -56,7 +56,7 @@ O Orquestrador Líder decompõe a especificação técnica do plano e distribui
| **`@front`** *(Frontend Specialist)* | `*-front`, `*-comuns` | Componentes Vue 3, composables, views, formulários reativos, binding de eventos, consumo de APIs, CSS co-localizado e despoluição visual (`refactoring-ui-hierarquia-despoluicao`). | | **`@front`** *(Frontend Specialist)* | `*-front`, `*-comuns` | Componentes Vue 3, composables, views, formulários reativos, binding de eventos, consumo de APIs, CSS co-localizado e despoluição visual (`refactoring-ui-hierarquia-despoluicao`). |
| **`@ux`** *(UX Specialist)* | `*-front` (Interface, Heurísticas, Fluxo Funcional & *Refactoring UI*) | Aplicação das Heurísticas de Nielsen, `ux-fluxo-funcional` e `refactoring-ui-hierarquia-despoluicao` (livro no Paiol: `https://adm.paiol.idz.one/estaticos/Refactoring-UI-Steve-Schoger-Adam-Wathan.pdf`): navegação exclusiva no `MenuLateral.vue` ordenada pela jornada, pré-requisitos guiados, revelação progressiva (`12 colunas`), pirâmide de ações (1 primária sólida; destrutivas discretas fora do modal), zero *Card-ception* / menos bordas, consolidação de colunas em tabelas, contraste de tokens Vuetify (`secondary` escuro), zero jargão técnico e feedback imediato. | | **`@ux`** *(UX Specialist)* | `*-front` (Interface, Heurísticas, Fluxo Funcional & *Refactoring UI*) | Aplicação das Heurísticas de Nielsen, `ux-fluxo-funcional` e `refactoring-ui-hierarquia-despoluicao` (livro no Paiol: `https://adm.paiol.idz.one/estaticos/Refactoring-UI-Steve-Schoger-Adam-Wathan.pdf`): navegação exclusiva no `MenuLateral.vue` ordenada pela jornada, pré-requisitos guiados, revelação progressiva (`12 colunas`), pirâmide de ações (1 primária sólida; destrutivas discretas fora do modal), zero *Card-ception* / menos bordas, consolidação de colunas em tabelas, contraste de tokens Vuetify (`secondary` escuro), zero jargão técnico e feedback imediato. |
| **`@refatorar`** *(Clean Code Specialist)* | Todo o código alterado | Governança estrita das 12 regras de Código Limpo: garantia do **limite de 250 linhas por arquivo**, eliminação de code smells, modularidade e Dispatch Tables. | | **`@refatorar`** *(Clean Code Specialist)* | Todo o código alterado | Governança estrita das 12 regras de Código Limpo: garantia do **limite de 250 linhas por arquivo**, eliminação de code smells, modularidade e Dispatch Tables. |
| **`@testes`** *(QA & Automation)* | Checagens e Validação E2E | Tipagem (`bun run typecheck` / `tsc --noEmit`), linter (`biome check --write`), governança (`sh .agent/verificar-linhas.sh`) e testes de interface visual via `agent-browser --session <modulo>_<contexto?> --headed` com evidências salvas em `.evidencias/`. | | **`@testes`** *(QA & Automation)* | Checagens e Validação E2E | Tipagem (`bun run typecheck` / `tsc --noEmit`), linter (`biome check --write`), governança (`sh .agent/verificar-linhas.sh`) e testes de interface visual via `agent-browser --session <modulo>_<contexto?> --headed`. |
| **`@documentacao`** *(Memory & Docs)* | `memorias-ia/`, `<modulo-wiki>/` | Registro de sessão no Pilar 6 (`memorias-ia/sessao-*.md`), indexação no `historico-acoes.md`, atualização de regras técnicas na Wiki de Dev (`<modulo-wiki>/dev/<modulo-id>/`). | | **`@documentacao`** *(Memory & Docs)* | `memorias-ia/`, `<modulo-wiki>/` | Registro de sessão no Pilar 6 (`memorias-ia/sessao-*.md`), indexação no `historico-acoes.md`, atualização de regras técnicas na Wiki de Dev (`<modulo-wiki>/dev/<modulo-id>/`). |
--- ---
@ -80,7 +80,7 @@ Em implementações integradas, o Orquestrador segue a ordem canônica de handof
↓ ↓
4. [@refatorar] Extrai módulos se exceder 250 linhas e aplica Código Limpo 4. [@refatorar] Extrai módulos se exceder 250 linhas e aplica Código Limpo
↓ ↓
5. [@testes] Roda typecheck, biome e testes E2E com agent-browser --session <modulo>_<contexto?> --headed (evidências em .evidencias/) 5. [@testes] Roda typecheck, biome e testes E2E com agent-browser --session <modulo>_<contexto?> --headed
↓ (Loop /goal de auto-correção se houver falhas) ↓ (Loop /goal de auto-correção se houver falhas)
6. [@documentacao] Atualiza memórias-ia/, historico-acoes.md e arquiva o plano 6. [@documentacao] Atualiza memórias-ia/, historico-acoes.md e arquiva o plano
``` ```
@ -149,7 +149,7 @@ Ao atingir 100% de conformidade com todos os critérios do plano:
1. **Atualizar Metadados e Histórico do Plano:** 1. **Atualizar Metadados e Histórico do Plano:**
- Frontmatter: `status: "executado"`, `data-execucao: "AAAA-MM-DD HH:mm"`, `executor: "Orquestrador /goal + Multiagentes (@back, @front, @ux, @refatorar, @testes, @documentacao)"`. - Frontmatter: `status: "executado"`, `data-execucao: "AAAA-MM-DD HH:mm"`, `executor: "Orquestrador /goal + Multiagentes (@back, @front, @ux, @refatorar, @testes, @documentacao)"`.
- Seção 6 (*Histórico de Execução*): arquivos modificados, resumo da solução e evidências de validação salvas em `.evidencias/`. - Seção 6 (*Histórico de Execução*): arquivos modificados, resumo da solução e evidências de validação.
2. **Mover o Plano:** 2. **Mover o Plano:**
- Salvar em `./PLANOS/executado/<nome-original>.md` e remover de `./PLANOS/pendente/<nome-original>.md` (preservando o nome original do arquivo). - Salvar em `./PLANOS/executado/<nome-original>.md` e remover de `./PLANOS/pendente/<nome-original>.md` (preservando o nome original do arquivo).
3. **Atualizar Grafo de Conhecimento (Graphify):** 3. **Atualizar Grafo de Conhecimento (Graphify):**

View file

@ -83,10 +83,10 @@ Quando invocado com uma instrução (ex.: `/plano corrigir validação do númer
--- ---
``` ```
- **1. Objetivo & Contexto:** Descrição concisa da demanda e impacto de negócio. - **1. Objetivo & Contexto:** Descrição concisa da demanda e impacto de negócio.
- **2. Diagnóstico Técnico & Evidências:** Comportamento observado vs esperado, repro steps, evidências salvas em `.evidencias/`, arquivos mapeados com links `[arquivo](file://...)` e subseção **Raio de Impacto & Dependências (Graphify)** extraída via `bash .agent/scripts/graphify.sh impact`. - **2. Diagnóstico Técnico & Evidências:** Comportamento observado vs esperado, repro steps, arquivos mapeados com links `[arquivo](file://...)` e subseção **Raio de Impacto & Dependências (Graphify)** extraída via `bash .agent/scripts/graphify.sh impact`.
- **3. Critérios de Aceite & Validação (DoD):** Checklist com caixas `- [ ]` contendo condições verificáveis de sucesso. - **3. Critérios de Aceite & Validação (DoD):** Checklist com caixas `- [ ]` contendo condições verificáveis de sucesso.
- **4. Especificação Técnica & Passos de Implementação:** Roteiro prático para o desenvolvedor (schemas, backend, frontend, código sugerido). - **4. Especificação Técnica & Passos de Implementação:** Roteiro prático para o desenvolvedor (schemas, backend, frontend, código sugerido).
- **5. Plano de Verificação & Testes:** Testes automatizados (`typecheck`, `biome`) e roteiro manual/E2E com `agent-browser --session <modulo>_<contexto?> --headed` (salvando evidências obrigatoriamente em `.evidencias/`). - **5. Plano de Verificação & Testes:** Testes automatizados (`typecheck`, `biome`) e roteiro manual/E2E com `agent-browser --session <modulo>_<contexto?> --headed`.
- **6. Histórico de Execução:** Cabeçalho reservado para preenchimento na conclusão pelo executor. - **6. Histórico de Execução:** Cabeçalho reservado para preenchimento na conclusão pelo executor.
- Salve o arquivo em `./PLANOS/pendente/AAAA-MM-DD-HH-mm-<slug>.md` usando `write_to_file`. - Salve o arquivo em `./PLANOS/pendente/AAAA-MM-DD-HH-mm-<slug>.md` usando `write_to_file`.

View file

@ -2,9 +2,8 @@
name: testar-interface-agent-browser name: testar-interface-agent-browser
description: > description: >
Executar testes automatizados de interface (E2E), navegação e validação visual Executar testes automatizados de interface (E2E), navegação e validação visual
no frontend utilizando a CLI agent-browser, com janela sempre visível (--headed), no frontend utilizando a CLI agent-browser, com janela sempre visível (--headed)
isolamento mandatório de sessão e contexto (--session <modulo>_<contexto?>) e e isolamento mandatório de sessão e contexto (--session <modulo>_<contexto?>).
salvamento obrigatório das evidências na pasta .evidencias/.
scope: global scope: global
--- ---
@ -126,13 +125,12 @@ agent-browser --session "${MODULO}_${CONTEXTO}" console
agent-browser --session "${MODULO}_${CONTEXTO}" network agent-browser --session "${MODULO}_${CONTEXTO}" network
``` ```
### 6. Registrar Evidência Visual (Pasta Obrigatória `.evidencias/`) ### 6. Registrar Evidência Visual
Capture um screenshot na pasta `.evidencias/` para comprovação do resultado do teste (é proibido salvar evidências fora de `.evidencias/`): Capture um screenshot para comprovação do resultado do teste:
```bash ```bash
# Garantir a pasta .evidencias/ e capturar screenshot padrão ou anotado # Screenshot padrão ou anotado com identificadores visuais
mkdir -p .evidencias agent-browser --session "${MODULO}_${CONTEXTO}" screenshot evidencias/resultado-sucesso.png
agent-browser --session "${MODULO}_${CONTEXTO}" screenshot .evidencias/resultado-sucesso.png # agent-browser --session "${MODULO}_${CONTEXTO}" screenshot --annotate evidencias/resultado-anotado.png
# agent-browser --session "${MODULO}_${CONTEXTO}" screenshot --annotate .evidencias/resultado-anotado.png
``` ```
### 7. Encerrar Navegador daquele Contexto ### 7. Encerrar Navegador daquele Contexto
@ -158,7 +156,7 @@ agent-browser --session "${MODULO}_${CONTEXTO}" close
| **Aguardar seletor** | `agent-browser --session <modulo>_<contexto?> wait --selector "<seletor>"` | | **Aguardar seletor** | `agent-browser --session <modulo>_<contexto?> wait --selector "<seletor>"` |
| **Inspecionar console** | `agent-browser --session <modulo>_<contexto?> console` | | **Inspecionar console** | `agent-browser --session <modulo>_<contexto?> console` |
| **Inspecionar rede** | `agent-browser --session <modulo>_<contexto?> network` | | **Inspecionar rede** | `agent-browser --session <modulo>_<contexto?> network` |
| **Screenshot (em `.evidencias/`)** | `agent-browser --session <modulo>_<contexto?> screenshot .evidencias/<arquivo.png>` | | **Screenshot** | `agent-browser --session <modulo>_<contexto?> screenshot <arquivo.png>` |
| **Auditoria a11y (WCAG)** | `agent-browser --session <modulo>_<contexto?> a11y` | | **Auditoria a11y (WCAG)** | `agent-browser --session <modulo>_<contexto?> a11y` |
| **Fechar sessão** | `agent-browser --session <modulo>_<contexto?> close` | | **Fechar sessão** | `agent-browser --session <modulo>_<contexto?> close` |
@ -219,4 +217,4 @@ agent-browser skills get dogfood
1. **Campos Vuetify (`v-text-field`, `v-select`)**: O `snapshot -i` mapeia diretamente o `textbox` e o `combobox`. Utilize `agent-browser --session "${MODULO}_${CONTEXTO}" fill @ref` ou `click @ref`. 1. **Campos Vuetify (`v-text-field`, `v-select`)**: O `snapshot -i` mapeia diretamente o `textbox` e o `combobox`. Utilize `agent-browser --session "${MODULO}_${CONTEXTO}" fill @ref` ou `click @ref`.
2. **Modais e Diálogos**: Após clicar no botão que abre o modal (`v-dialog`), execute `agent-browser --session "${MODULO}_${CONTEXTO}" wait 500 && agent-browser --session "${MODULO}_${CONTEXTO}" snapshot -i` para interagir com o conteúdo do diálogo. 2. **Modais e Diálogos**: Após clicar no botão que abre o modal (`v-dialog`), execute `agent-browser --session "${MODULO}_${CONTEXTO}" wait 500 && agent-browser --session "${MODULO}_${CONTEXTO}" snapshot -i` para interagir com o conteúdo do diálogo.
3. **Reporte de Teste e Evidências em `.evidencias/`**: Salve obrigatoriamente todas as evidências geradas na pasta `.evidencias/` e apresente ao operador o roteiro executado, os links das evidências em `.evidencias/` e a verificação de logs do console. 3. **Reporte de Teste**: Apresente ao operador o roteiro executado, evidências de screenshot e verificação de logs do console.

View file

@ -142,7 +142,7 @@ Conforme as diretrizes de **Layout (`Panes` e `Canonical Layouts`), `Dialogs` e
- Inserir links de navegação cruzada e *empty states* guiados entre telas dependentes. - Inserir links de navegação cruzada e *empty states* guiados entre telas dependentes.
- Garantir que quadros Kanban sejam horizontais e responsivos. - Garantir que quadros Kanban sejam horizontais e responsivos.
5. **Validar Visualmente com `agent-browser`:** 5. **Validar Visualmente com `agent-browser`:**
- Inspecionar o fluxo ponta a ponta em modo visível (`agent-browser --session <modulo-id>_<contexto?> --headed`) e salvar as evidências geradas em `.evidencias/`, conforme `rules/testes-interface-agent-browser.md`. - Inspecionar o fluxo ponta a ponta em modo visível (`agent-browser --session <modulo-id>_<contexto?> --headed`) conforme `rules/testes-interface-agent-browser.md`.
--- ---

View file

@ -69,7 +69,7 @@ Quando o comando for executado:
- Preenche: - Preenche:
- Frontmatter com `id: AAAA-MM-DD-HH-mm-<slug>`, `data-criacao: "AAAA-MM-DD HH:mm"`, `status: pendente` e tags do domínio. - Frontmatter com `id: AAAA-MM-DD-HH-mm-<slug>`, `data-criacao: "AAAA-MM-DD HH:mm"`, `status: pendente` e tags do domínio.
- Objetivo & Contexto (visão funcional). - Objetivo & Contexto (visão funcional).
- Diagnóstico Técnico & Evidências (repro steps, evidências em `.evidencias/`, arquivos mapeados e **Raio de Impacto & Dependências via Graphify**). - Diagnóstico Técnico & Evidências (repro steps, arquivos mapeados e **Raio de Impacto & Dependências via Graphify**).
- Critérios de Aceite (Definition of Done). - Critérios de Aceite (Definition of Done).
- Especificação Técnica passo a passo para orientar o desenvolvedor. - Especificação Técnica passo a passo para orientar o desenvolvedor.
- Plano de Verificação & Testes. - Plano de Verificação & Testes.
@ -101,7 +101,7 @@ O Orquestrador divide as tarefas entre os especialistas:
- **`@front`**: Implementa telas Vue 3, composables e formulários consumindo `*-comuns`. - **`@front`**: Implementa telas Vue 3, composables e formulários consumindo `*-comuns`.
- **`@ux`**: Aplica as Heurísticas de Nielsen (visibilidade de loading/erro, feedback imediato). - **`@ux`**: Aplica as Heurísticas de Nielsen (visibilidade de loading/erro, feedback imediato).
- **`@refatorar`**: Governança de Código Limpo (limite estrito de 250 linhas, Dispatch Tables). - **`@refatorar`**: Governança de Código Limpo (limite estrito de 250 linhas, Dispatch Tables).
- **`@testes`**: Roda `typecheck`, `biome check` e validação visual via `agent-browser --session <modulo>_<contexto?> --headed` (salvando evidências obrigatoriamente em `.evidencias/`). - **`@testes`**: Roda `typecheck`, `biome check` e validação visual via `agent-browser --session <modulo>_<contexto?> --headed`.
- **`@documentacao`**: Documenta a memória da sessão (Pilar 6) e regras de negócio. - **`@documentacao`**: Documenta a memória da sessão (Pilar 6) e regras de negócio.
### 3. Modos de Invocação ### 3. Modos de Invocação
@ -120,7 +120,7 @@ Ao confirmar que a implementação está verde e validada:
- `status: executado` - `status: executado`
- `data-execucao: "AAAA-MM-DD HH:mm"` - `data-execucao: "AAAA-MM-DD HH:mm"`
- `executor: "Orquestrador /goal + Multiagentes (@back, @front, @ux, @refatorar, @testes, @documentacao)"` - `executor: "Orquestrador /goal + Multiagentes (@back, @front, @ux, @refatorar, @testes, @documentacao)"`
- Preenche a Seção 6 (`Histórico de Execução`) com o resumo das modificações feitas e evidências de validação salvas em `.evidencias/`. - Preenche a Seção 6 (`Histórico de Execução`) com o resumo das modificações feitas e evidências de validação.
2. **Movimentação do Arquivo:** 2. **Movimentação do Arquivo:**
- Move o arquivo preservando o nome original: - Move o arquivo preservando o nome original:

View file

@ -4,7 +4,7 @@
{ {
"type": "command", "type": "command",
"command": "[ -f .agent/scripts/atualizar-submodulo.sh ] && bash .agent/scripts/atualizar-submodulo.sh || bash scripts/atualizar-submodulo.sh", "command": "[ -f .agent/scripts/atualizar-submodulo.sh ] && bash .agent/scripts/atualizar-submodulo.sh || bash scripts/atualizar-submodulo.sh",
"timeout": 45 "timeout": 20
} }
] ]
} }

View file

@ -1,6 +1,6 @@
{ {
"versao": "3.4.2", "versao": "3.4.0",
"atualizadoEm": "2026-10-30", "atualizadoEm": "2026-10-26",
"projeto": "agnostico-submodulo", "projeto": "agnostico-submodulo",
"identidade": "memorias-ia/modulo.yml", "identidade": "memorias-ia/modulo.yml",
"artefatos": { "artefatos": {

View file

@ -1,13 +1,13 @@
--- ---
type: rule type: rule
name: atualizacao-submodulo-sessao name: atualizacao-submodulo-sessao
description: Atualização obrigatória do submódulo .agent na branch master ao iniciar qualquer sessão de trabalho e verificação diária do runtime Bun (bun upgrade --stable) description: Atualização obrigatória do submódulo .agent na branch master ao iniciar qualquer sessão de trabalho
scope: global scope: global
trigger: always_on trigger: always_on
updatedAt: "2026-10-30" updatedAt: "2026-10-14"
--- ---
# Regra: Atualização Obrigatória do Submódulo `.agent` ao Iniciar Sessão e Verificação Diária do Bun # Regra: Atualização Obrigatória do Submódulo `.agent` na Branch Master ao Iniciar Sessão
## Contexto ## Contexto
@ -17,22 +17,19 @@ O ecossistema Azteca adota o framework `.agent` como um **git submodule** polim
https://git2.idz.one/publico/.agent.git https://git2.idz.one/publico/.agent.git
``` ```
Além disso, todo o ecossistema utiliza o **Bun** como runtime e gerenciador de pacotes padrão. Trabalhar com uma versão defasada do submódulo `.agent` ou do runtime `bun` faz com que o agente tome decisões baseadas em regras antigas, falhe em auditorias de setup ou enfrente incompatibilidades de runtime. Por isso, a sincronização do submódulo na branch `master` (a cada sessão) e a verificação de atualização do Bun na versão estável (uma vez por dia) são mandatórias. Trabalhar com uma versão defasada do submódulo `.agent` faz com que o agente tome decisões baseadas em regras antigas, falhe em auditorias de setup ou use padrões depreciados. Por isso, a sincronização do submódulo na branch `master` é mandatória ao iniciar qualquer sessão.
--- ---
## Regra Mandatória de Inicialização e Manutenção Diária ## Regra Mandatória de Inicialização
1. **Sincronização por Sessão do `.agent`:** Ao iniciar uma nova sessão de trabalho ou interação no projeto hospedeiro, a sincronização do submódulo `.agent` **DEVE OBRIGATORIAMENTE ser executada** na branch `master`: Ao iniciar uma nova sessão de trabalho ou interação no projeto hospedeiro, a sincronização do submódulo `.agent` **DEVE OBRIGATORIAMENTE ser executada** na branch `master`:
```bash
git submodule update --init --recursive --remote
```
2. **Verificação Diária do Runtime Bun (1x por dia):** Uma vez por dia, o ambiente **DEVE verificar se o Bun está atualizado** na versão estável mais recente executando:
```bash
bun upgrade --stable
```
Ambas as operações são classificadas como **ações autônomas** (conforme `rules/autonomia-agente.md`) e não requerem autorização prévia do operador humano. ```bash
git submodule update --init --recursive --remote
```
Esta operação é classificada como uma **ação autônoma** (conforme `rules/autonomia-agente.md`) e não requer autorização prévia do operador humano.
--- ---
@ -60,25 +57,24 @@ git submodule set-branch --branch master .agent
O framework `.agent` disponibiliza um hook nativo do Antigravity em `.agent/hooks.json` vinculado ao evento `PreInvocation`: O framework `.agent` disponibiliza um hook nativo do Antigravity em `.agent/hooks.json` vinculado ao evento `PreInvocation`:
1. No início da conversa, o hook aciona o script `.agent/scripts/atualizar-submodulo.sh`. 1. No início da conversa, o hook aciona o script `.agent/scripts/atualizar-submodulo.sh`.
2. **Idempotência Diária do Bun (`1x por dia`):** O script verifica o arquivo de controle `/tmp/.antigravity_bun_upgrade_date` (formato `YYYY-MM-DD`). Caso ainda não tenha sido verificado na data atual, executa `bun upgrade --stable` e grava a data do dia no arquivo de controle. Execuções subsequentes no mesmo dia ignoram o comando com zero latência. 2. O script detecta a raiz do projeto pai (superprojeto) e verifica a existência de uma trava temporária da sessão (`/tmp/.antigravity_agent_updated_${conversationId}`).
3. **Idempotência de Sessão do `.agent` (`1x por conversa`):** O script detecta a raiz do projeto pai (superprojeto) e verifica a existência da trava temporária da sessão (`/tmp/.antigravity_agent_updated_${conversationId}`). A sincronização remota do submódulo é executada apenas no primeiro turno da sessão, retornando imediatamente (`{}`) nos turnos seguintes. 3. **Idempotência:** A sincronização remota é executada apenas no primeiro turno da sessão. Turnos subsequentes retornam imediatamente (`{}`), garantindo zero latência adicional durante o diálogo.
4. Ao concluir com sucesso, o script emite uma notificação efêmera informando a IA sobre a sincronização na branch `master` e, quando executada no dia, o resultado da atualização do Bun. 4. Ao concluir com sucesso, o script emite uma notificação efêmera informando a IA sobre a sincronização na branch `master`.
--- ---
## 3. Resiliência e Fallback Offline ## 3. Resiliência e Fallback Offline
A atualização do submódulo e a verificação diária do Bun nunca devem interromper ou impedir o atendimento ao operador: A atualização do submódulo nunca deve interromper ou impedir o atendimento ao operador:
- Se o ambiente estiver sem acesso à internet, com DNS indisponível ou falha temporária de rede, o script captura o erro graciosamente. - Se o ambiente estiver sem acesso à internet, com DNS indisponível ou falha temporária de rede, o script captura o erro graciosamente.
- O agente emite um aviso no log/contexto informando que a sincronização remota ou verificação do Bun não pôde ser completada e prossegue normalmente a execução com as versões locais já presentes. - O agente emite um aviso no log/contexto informando que a sincronização remota não pôde ser completada e prossegue normalmente a execução com a versão local já presente no submódulo.
--- ---
## Proibições ## Proibições
- **NUNCA** travar o submódulo `.agent` em branches experimentais ou desatualizadas sem autorização explícita do operador. - **NUNCA** travar o submódulo `.agent` em branches experimentais ou desatualizadas sem autorização explícita do operador.
- **NUNCA** atualizar o Bun para versões canary/instáveis automaticamente (utilizar sempre `--stable`).
- **NUNCA** abortar a sessão ou falhar com crash caso a rede esteja indisponível para atualização remota. - **NUNCA** abortar a sessão ou falhar com crash caso a rede esteja indisponível para atualização remota.
- **NUNCA** executar `git submodule update --remote` descartando alterações locais em desenvolvimento sem verificação prévia. - **NUNCA** executar `git submodule update --remote` descartando alterações locais em desenvolvimento sem verificação prévia.

View file

@ -29,7 +29,6 @@ O agente pode executar sem perguntar:
- Aplicar padrões de nomenclatura já definidos em rules - Aplicar padrões de nomenclatura já definidos em rules
- Sugerir o texto de mensagem de commit (padrão Conventional Commits) ao operador humano após concluir implementações ou documentações - Sugerir o texto de mensagem de commit (padrão Conventional Commits) ao operador humano após concluir implementações ou documentações
- Atualizar o submódulo `.agent` ao iniciar uma sessão executando `git submodule update --init --recursive --remote` na branch `master` - Atualizar o submódulo `.agent` ao iniciar uma sessão executando `git submodule update --init --recursive --remote` na branch `master`
- Verificar e atualizar o runtime Bun uma vez por dia executando `bun upgrade --stable`
- Executar `git add`, `git commit`, `git pull --rebase` e `git push` diretamente na branch `master` **exclusivamente no submódulo `.agent`** ao evoluir artefatos de IA - Executar `git add`, `git commit`, `git pull --rebase` e `git push` diretamente na branch `master` **exclusivamente no submódulo `.agent`** ao evoluir artefatos de IA
## Ações que Requerem Confirmação ## Ações que Requerem Confirmação

View file

@ -5,7 +5,11 @@ trigger: always_on
description: Exige uso de arrow functions (const x = () => {}) em vez de function declarations (function x() {}) description: Exige uso de arrow functions (const x = () => {}) em vez de function declarations (function x() {})
scope: global scope: global
updatedAt: "2026-07-01" updatedAt: "2026-07-01"
globs: "**/*.ts, **/*.tsx, **/*.js, **/*.vue" globs:
- "**/*.ts"
- "**/*.tsx"
- "**/*.js"
- "**/*.vue"
alwaysApply: true alwaysApply: true
--- ---

View file

@ -82,7 +82,7 @@ Sempre que qualquer agente, persona, workflow ou skill necessitar de:
3. **Propósito ou Stack (`modulo-descricao` e `modulo-tipo`)**: para contextualizar novos agentes, gerar propostas comerciais, marketing, reels, análises de arquitetura ou testes; 3. **Propósito ou Stack (`modulo-descricao` e `modulo-tipo`)**: para contextualizar novos agentes, gerar propostas comerciais, marketing, reels, análises de arquitetura ou testes;
4. **Credenciais de Testes (`modulo-acesso`)**: O agente de testes (`@testes`, rotinas com `agent-browser`, QA) DEVE extrair as credenciais do contexto específico (`interno`, `externo`, `cliente`, etc.) ou credenciais diretas de `modulo-acesso` em `memorias-ia/modulo.yml` para autenticação determinística sem contaminação de cookies/tokens entre perfis; 4. **Credenciais de Testes (`modulo-acesso`)**: O agente de testes (`@testes`, rotinas com `agent-browser`, QA) DEVE extrair as credenciais do contexto específico (`interno`, `externo`, `cliente`, etc.) ou credenciais diretas de `modulo-acesso` em `memorias-ia/modulo.yml` para autenticação determinística sem contaminação de cookies/tokens entre perfis;
5. **Caminho da Wiki (`modulo-wiki`)**: Qualquer operação de documentação, leitura de regras ou escrita na Wiki deve resolver o caminho a partir de `modulo-wiki`, adotando compulsoriamente `../wiki/` caso a chave não esteja presente ou esteja vazia; 5. **Caminho da Wiki (`modulo-wiki`)**: Qualquer operação de documentação, leitura de regras ou escrita na Wiki deve resolver o caminho a partir de `modulo-wiki`, adotando compulsoriamente `../wiki/` caso a chave não esteja presente ou esteja vazia;
6. **Sincronização do Submódulo (`.agent`) e Verificação Diária do Bun**: Ao iniciar qualquer sessão ou interação no projeto hospedeiro, o agente DEVE assegurar que o submódulo `.agent` esteja atualizado com a branch `master` remota executando `git submodule update --init --recursive --remote` e que o runtime Bun seja verificado uma vez por dia com `bun upgrade --stable` (automatizado via `.agent/scripts/atualizar-submodulo.sh`). 6. **Sincronização do Submódulo (`.agent`)**: Ao iniciar qualquer sessão ou interação no projeto hospedeiro, o agente DEVE assegurar que o submódulo `.agent` esteja atualizado com a branch `master` remota executando `git submodule update --init --recursive --remote`.
👉 **O agente DEVE obrigatoriamente ler e extrair as informações de `memorias-ia/modulo.yml`.** 👉 **O agente DEVE obrigatoriamente ler e extrair as informações de `memorias-ia/modulo.yml`.**

View file

@ -1,10 +1,10 @@
--- ---
type: rule type: rule
name: testes-interface-agent-browser name: testes-interface-agent-browser
description: Testes automatizados de interface (E2E) e acesso visual ao frontend devem usar agent-browser, sempre visível (--headed), com isolamento por sessão e contexto (--session <modulo>_<contexto?>) e salvando evidências obrigatoriamente na pasta .evidencias/. description: Testes automatizados de interface (E2E) e acesso visual ao frontend devem usar agent-browser, sempre visível (--headed) e com isolamento por sessão e contexto (--session <modulo>_<contexto?>).
scope: global scope: global
trigger: always_on trigger: always_on
updatedAt: "2026-10-30" updatedAt: "2026-10-08"
--- ---
# Regra: Testes Automatizados de Interface e Navegação com agent-browser # Regra: Testes Automatizados de Interface e Navegação com agent-browser
@ -37,10 +37,8 @@ Sempre que qualquer agente de IA (`@testes`, `@front`, `@ux` ou outro) precisar
4. **Utilizar o modelo de referências (`@ref`)**: 4. **Utilizar o modelo de referências (`@ref`)**:
- Mapear a tela via `agent-browser --session <modulo>_<contexto?> snapshot -i`, obtendo referências compactas como `@e1`, `@e2`. - Mapear a tela via `agent-browser --session <modulo>_<contexto?> snapshot -i`, obtendo referências compactas como `@e1`, `@e2`.
- Executar ações determinísticas referenciando os IDs gerados (`click @e1`, `fill @e2 "texto"`). - Executar ações determinísticas referenciando os IDs gerados (`click @e1`, `fill @e2 "texto"`).
5. **Registrar evidências obrigatoriamente na pasta `.evidencias/` e fechar sessão**: 5. **Registrar evidências e fechar sessão**:
- Todas as evidências geradas pelos testes automatizados (screenshots, capturas anotadas, PDFs, vídeos, traces, relatórios ou dumps de console/rede) **DEVEM OBRIGATORIAMENTE ser salvas na pasta `.evidencias/`** na raiz do projeto (`mkdir -p .evidencias`). - Registrar comprovações visuais com `agent-browser --session <modulo>_<contexto?> screenshot <arquivo.png>`.
- Registrar comprovações visuais com `agent-browser --session <modulo>_<contexto?> screenshot .evidencias/<arquivo.png>`.
- Garantir que `.evidencias/` conste no `.gitignore` do projeto para evitar o versionamento acidental de binários de teste.
- Encerrar graciosamente o navegador com `agent-browser --session <modulo>_<contexto?> close` ao término do fluxo. - Encerrar graciosamente o navegador com `agent-browser --session <modulo>_<contexto?> close` ao término do fluxo.
6. **Credenciais Canônicas por Contexto (`modulo-acesso`)**: 6. **Credenciais Canônicas por Contexto (`modulo-acesso`)**:
- Sempre que o teste exigir autenticação, o agente **DEVE OBRIGATORIAMENTE extrair as credenciais do contexto específico** em `modulo-acesso` de `memorias-ia/modulo.yml` (ex: `modulo-acesso.interno`, `modulo-acesso.cliente`, etc.). - Sempre que o teste exigir autenticação, o agente **DEVE OBRIGATORIAMENTE extrair as credenciais do contexto específico** em `modulo-acesso` de `memorias-ia/modulo.yml` (ex: `modulo-acesso.interno`, `modulo-acesso.cliente`, etc.).
@ -117,9 +115,8 @@ agent-browser --session "${MODULO}_${CONTEXTO}" wait 1000
# Obter novo snapshot para verificar estado pós-ação # Obter novo snapshot para verificar estado pós-ação
agent-browser --session "${MODULO}_${CONTEXTO}" snapshot -i agent-browser --session "${MODULO}_${CONTEXTO}" snapshot -i
# Garantir pasta .evidencias e capturar evidência gráfica do teste # Capturar evidência gráfica do teste
mkdir -p .evidencias agent-browser --session "${MODULO}_${CONTEXTO}" screenshot evidencias/teste-login-sucesso.png
agent-browser --session "${MODULO}_${CONTEXTO}" screenshot .evidencias/teste-login-sucesso.png
# Verificar erros no console do navegador # Verificar erros no console do navegador
agent-browser --session "${MODULO}_${CONTEXTO}" console agent-browser --session "${MODULO}_${CONTEXTO}" console
@ -140,7 +137,6 @@ agent-browser --session "${MODULO}_${CONTEXTO}" close
- **Proibido executar sem a flag `--session <modulo>_<contexto?>`** (ou sem `AGENT_BROWSER_SESSION`), evitando poluir a sessão default compartilhada. - **Proibido executar sem a flag `--session <modulo>_<contexto?>`** (ou sem `AGENT_BROWSER_SESSION`), evitando poluir a sessão default compartilhada.
- **Proibido misturar acessos com perfis diferentes na mesma sessão genérica sem contexto** (ex: logar como operador interno e depois testar fluxo de cliente ou anônimo na mesma sessão, causando mistura de tokens). - **Proibido misturar acessos com perfis diferentes na mesma sessão genérica sem contexto** (ex: logar como operador interno e depois testar fluxo de cliente ou anônimo na mesma sessão, causando mistura de tokens).
- **Proibido abrir em modo headless silencioso** sem flag `--headed` ou variável `AGENT_BROWSER_HEADED=true`. - **Proibido abrir em modo headless silencioso** sem flag `--headed` ou variável `AGENT_BROWSER_HEADED=true`.
- **Proibido salvar evidências de testes automatizados fora da pasta `.evidencias/`** (como soltas na raiz do projeto, em `/tmp/` ou em `evidencias/` sem ponto inicial).
- **Proibido despejar o HTML/DOM completo** no contexto da IA (consome milhares de tokens desnecessários; use sempre `snapshot -i`). - **Proibido despejar o HTML/DOM completo** no contexto da IA (consome milhares de tokens desnecessários; use sempre `snapshot -i`).
- **Proibido navegar para URLs desconhecidas** ou inventadas pela IA fora do escopo aprovado do teste. - **Proibido navegar para URLs desconhecidas** ou inventadas pela IA fora do escopo aprovado do teste.
- **Proibido deixar processos ou janelas órfãs** após a conclusão do trabalho (sempre executar `agent-browser --session <modulo>_<contexto?> close`). - **Proibido deixar processos ou janelas órfãs** após a conclusão do trabalho (sempre executar `agent-browser --session <modulo>_<contexto?> close`).
@ -148,7 +144,7 @@ agent-browser --session "${MODULO}_${CONTEXTO}" close
### Permitido e Recomendado ✅ ### Permitido e Recomendado ✅
- Manter sessões persistentes por contexto quando necessário via `--session <modulo>_<contexto> --restore`. - Manter sessões persistentes por contexto quando necessário via `--session <modulo>_<contexto> --restore`.
- Utilizar sub-isolamento determinístico (`<modulo>_<contexto>_<slug-ou-pid>`) caso múltiplos testes do mesmo contexto ocorram simultaneamente no mesmo host. - Utilizar sub-isolamento determinístico (`<modulo>_<contexto>_<slug-ou-pid>`) caso múltiplos testes do mesmo contexto ocorram simultaneamente no mesmo host.
- Usar `agent-browser --session <modulo>_<contexto> screenshot --annotate .evidencias/<slug>-anotado.png` para inspecionar layouts complexos com visão computacional. - Usar `agent-browser --session <modulo>_<contexto> screenshot --annotate` para inspecionar layouts complexos com visão computacional.
- Consultar guias embutidos do próprio binário via `agent-browser skills get core --full` ou `agent-browser skills get dogfood`. - Consultar guias embutidos do próprio binário via `agent-browser skills get core --full` ou `agent-browser skills get dogfood`.
--- ---

View file

@ -5,7 +5,10 @@ trigger: always_on
description: Proíbe uso de any, casts inseguros e padroniza uso de enums em código TypeScript description: Proíbe uso de any, casts inseguros e padroniza uso de enums em código TypeScript
scope: global scope: global
updatedAt: "2026-06-01" updatedAt: "2026-06-01"
globs: "**/*.ts, **/*.tsx, **/*.vue" globs:
- "**/*.ts"
- "**/*.tsx"
- "**/*.vue"
alwaysApply: true alwaysApply: true
--- ---

View file

@ -6,7 +6,10 @@ version: "1.0"
scope: global scope: global
priority: alta priority: alta
trigger: always_on trigger: always_on
globs: "**/*.ts, **/*.tsx, **/*.vue" globs:
- "**/*.ts"
- "**/*.tsx"
- "**/*.vue"
alwaysApply: true alwaysApply: true
updatedAt: "2026-06-01" updatedAt: "2026-06-01"
references: references:

View file

@ -1,16 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# ============================================================================== # ==============================================================================
# Script de Ciclo de Vida: Atualização do Submódulo .agent e Runtime Bun # Script de Ciclo de Vida: Atualização do Submódulo .agent ao Iniciar Sessão
# - Sincroniza o submódulo .agent na branch master (1x por sessão de conversa) # Executa: git submodule update --init --recursive --remote na branch master
# - Verifica e atualiza o Bun com `bun upgrade --stable` (1x por dia)
# Compatível com CLI e Lifecycle Hook do Antigravity (PreInvocation). # Compatível com CLI e Lifecycle Hook do Antigravity (PreInvocation).
# ============================================================================== # ==============================================================================
set -e set -e
# Garantir que o diretório padrão do Bun esteja no PATH em execuções não-interativas (Hook)
export PATH="$HOME/.bun/bin:$PATH"
INPUT_JSON="" INPUT_JSON=""
IS_PIPE=0 IS_PIPE=0
if [ ! -t 0 ]; then if [ ! -t 0 ]; then
@ -24,52 +20,15 @@ if [ -n "$INPUT_JSON" ]; then
CONV_ID=$(echo "$INPUT_JSON" | grep -o '"conversationId":[[:space:]]*"[^"]*' | sed 's/.*"//' || true) CONV_ID=$(echo "$INPUT_JSON" | grep -o '"conversationId":[[:space:]]*"[^"]*' | sed 's/.*"//' || true)
fi fi
# Controle de verificação diária do Bun (1x por dia: YYYY-MM-DD) # Idempotência: executar apenas uma vez por sessão de conversa
BUN_STAMP_FILE="/tmp/.antigravity_bun_upgrade_date"
TODAY=$(date +%Y-%m-%d)
LAST_BUN_CHECK=$(cat "$BUN_STAMP_FILE" 2>/dev/null || true)
NEEDS_BUN_CHECK=0
if [ "$LAST_BUN_CHECK" != "$TODAY" ]; then
NEEDS_BUN_CHECK=1
fi
# Idempotência por sessão: se o submódulo já foi atualizado nesta conversa E o Bun já foi verificado hoje
if [ -n "$CONV_ID" ]; then if [ -n "$CONV_ID" ]; then
LOCK_FILE="/tmp/.antigravity_agent_updated_${CONV_ID}" LOCK_FILE="/tmp/.antigravity_agent_updated_${CONV_ID}"
if [ -f "$LOCK_FILE" ] && [ "$NEEDS_BUN_CHECK" -eq 0 ]; then if [ -f "$LOCK_FILE" ]; then
echo "{}" echo "{}"
exit 0 exit 0
fi fi
fi fi
# Executar verificação diária do Bun (1x por dia)
BUN_STATUS_MSG=""
if [ "$NEEDS_BUN_CHECK" -eq 1 ]; then
if command -v bun >/dev/null 2>&1; then
if bun upgrade --stable >/dev/null 2>&1; then
echo "$TODAY" > "$BUN_STAMP_FILE" 2>/dev/null || true
BUN_VER=$(bun --version 2>/dev/null || true)
BUN_STATUS_MSG=" Bun verificado/atualizado hoje (bun upgrade --stable -> v${BUN_VER})."
else
BUN_STATUS_MSG=" Aviso: não foi possível verificar atualização diária do Bun (bun upgrade --stable)."
fi
else
BUN_STATUS_MSG=" Aviso: binário 'bun' não encontrado no PATH para verificação diária."
fi
fi
# Se a sessão já havia atualizado o submódulo antes (ex: virou o dia na mesma conversa), retornar status do Bun
if [ -n "$CONV_ID" ] && [ -f "$LOCK_FILE" ]; then
if [ "$IS_PIPE" -eq 1 ] && [ -n "$INPUT_JSON" ] && [ -n "$BUN_STATUS_MSG" ]; then
echo "{\"injectSteps\":[{\"ephemeralMessage\":\"ℹ️${BUN_STATUS_MSG}\"}]}"
elif [ "$IS_PIPE" -eq 1 ]; then
echo "{}"
else
echo "✅${BUN_STATUS_MSG}"
fi
exit 0
fi
# Detectar diretório raiz do superprojeto # Detectar diretório raiz do superprojeto
SUPER_DIR=$(git rev-parse --show-superproject-working-tree 2>/dev/null || true) SUPER_DIR=$(git rev-parse --show-superproject-working-tree 2>/dev/null || true)
if [ -z "$SUPER_DIR" ]; then if [ -z "$SUPER_DIR" ]; then
@ -101,28 +60,24 @@ if [ -f "$SUPER_DIR/.gitmodules" ]; then
fi fi
[ -n "$CONV_ID" ] && touch "$LOCK_FILE" 2>/dev/null || true [ -n "$CONV_ID" ] && touch "$LOCK_FILE" 2>/dev/null || true
if [ "$IS_PIPE" -eq 1 ] && [ -n "$INPUT_JSON" ]; then if [ "$IS_PIPE" -eq 1 ] && [ -n "$INPUT_JSON" ]; then
echo "{\"injectSteps\":[{\"ephemeralMessage\":\"ℹ️ Submódulo .agent sincronizado com sucesso na branch master (git submodule update --init --recursive --remote).${BUN_STATUS_MSG}\"}]}" echo '{"injectSteps":[{"ephemeralMessage":"ℹ️ Submódulo .agent sincronizado com sucesso na branch master (git submodule update --init --recursive --remote)."}]}'
else else
echo "✅ Submódulo .agent sincronizado com sucesso na branch master.${BUN_STATUS_MSG}" echo "✅ Submódulo .agent sincronizado com sucesso na branch master."
fi fi
exit 0 exit 0
else else
if [ "$IS_PIPE" -eq 1 ] && [ -n "$INPUT_JSON" ]; then if [ "$IS_PIPE" -eq 1 ] && [ -n "$INPUT_JSON" ]; then
echo "{\"injectSteps\":[{\"ephemeralMessage\":\"⚠️ Não foi possível sincronizar o submódulo .agent com origin/master (sem conexão ou erro de rede). Continuando com versão local.${BUN_STATUS_MSG}\"}]}" echo '{"injectSteps":[{"ephemeralMessage":"⚠️ Não foi possível sincronizar o submódulo .agent com origin/master (sem conexão ou erro de rede). Continuando com versão local."}]}'
else else
echo "⚠️ Não foi possível sincronizar o submódulo .agent com origin/master. Continuando com versão local.${BUN_STATUS_MSG}" echo "⚠️ Não foi possível sincronizar o submódulo .agent com origin/master. Continuando com versão local."
fi fi
exit 0 exit 0
fi fi
fi fi
if [ "$IS_PIPE" -eq 1 ]; then if [ "$IS_PIPE" -eq 1 ]; then
if [ -n "$INPUT_JSON" ] && [ -n "$BUN_STATUS_MSG" ]; then echo "{}"
echo "{\"injectSteps\":[{\"ephemeralMessage\":\"ℹ️${BUN_STATUS_MSG}\"}]}"
else
echo "{}"
fi
else else
echo "ℹ️ Nenhum arquivo .gitmodules detectado.${BUN_STATUS_MSG}" echo "ℹ️ Nenhum arquivo .gitmodules detectado."
fi fi
exit 0 exit 0

View file

@ -45,7 +45,7 @@ garantir_gitignore() {
adicionou_cabecalho=1 adicionou_cabecalho=1
fi fi
for entrada in ".graphify/" ".engram/" "graphify-out/" ".evidencias/"; do for entrada in ".graphify/" ".engram/" "graphify-out/"; do
if ! grep -qxF "$entrada" "$gitignore_file" 2>/dev/null; then if ! grep -qxF "$entrada" "$gitignore_file" 2>/dev/null; then
if [ "$adicionou_cabecalho" -eq 0 ]; then if [ "$adicionou_cabecalho" -eq 0 ]; then
printf "\n# Graphify Knowledge Graph\n" >> "$gitignore_file" printf "\n# Graphify Knowledge Graph\n" >> "$gitignore_file"

View file

@ -42,7 +42,7 @@ Ao acionar `/plano.executar`, o agente adota estritamente o compromisso do **/go
- O agente **NÃO desiste nem pede ajuda** imediatamente. - O agente **NÃO desiste nem pede ajuda** imediatamente.
- Ele analisa o stack trace / log de erro, diagnostica a causa raiz, refatora o trecho e roda a validação novamente. - Ele analisa o stack trace / log de erro, diagnostica a causa raiz, refatora o trecho e roda a validação novamente.
- Esse loop continua até que todos os critérios de aceite (Definition of Done) estejam 100% verdes. - Esse loop continua até que todos os critérios de aceite (Definition of Done) estejam 100% verdes.
3. **Comprovação Baseada em Evidências (`.evidencias/`):** Apenas testes reais e verificações executadas contam como conclusão, com todas as evidências geradas pelos testes automatizados salvas obrigatoriamente na pasta `.evidencias/`. Não há "deve estar funcionando" sem validação com comandos concretos. 3. **Comprovação Baseada em Evidências:** Apenas testes reais e verificações executadas contam como conclusão. Não há "deve estar funcionando" sem validação com comandos concretos.
--- ---
@ -56,7 +56,7 @@ O Orquestrador Líder decompõe a especificação técnica do plano e distribui
| **`@front`** *(Frontend Specialist)* | `*-front`, `*-comuns` | Componentes Vue 3, composables, views, formulários reativos, binding de eventos, consumo de APIs, CSS co-localizado e despoluição visual (`refactoring-ui-hierarquia-despoluicao`). | | **`@front`** *(Frontend Specialist)* | `*-front`, `*-comuns` | Componentes Vue 3, composables, views, formulários reativos, binding de eventos, consumo de APIs, CSS co-localizado e despoluição visual (`refactoring-ui-hierarquia-despoluicao`). |
| **`@ux`** *(UX Specialist)* | `*-front` (Interface, Heurísticas, Fluxo Funcional & *Refactoring UI*) | Aplicação das Heurísticas de Nielsen, `ux-fluxo-funcional` e `refactoring-ui-hierarquia-despoluicao` (livro no Paiol: `https://adm.paiol.idz.one/estaticos/Refactoring-UI-Steve-Schoger-Adam-Wathan.pdf`): navegação exclusiva no `MenuLateral.vue` ordenada pela jornada, pré-requisitos guiados, revelação progressiva (`12 colunas`), pirâmide de ações (1 primária sólida; destrutivas discretas fora do modal), zero *Card-ception* / menos bordas, consolidação de colunas em tabelas, contraste de tokens Vuetify (`secondary` escuro), zero jargão técnico e feedback imediato. | | **`@ux`** *(UX Specialist)* | `*-front` (Interface, Heurísticas, Fluxo Funcional & *Refactoring UI*) | Aplicação das Heurísticas de Nielsen, `ux-fluxo-funcional` e `refactoring-ui-hierarquia-despoluicao` (livro no Paiol: `https://adm.paiol.idz.one/estaticos/Refactoring-UI-Steve-Schoger-Adam-Wathan.pdf`): navegação exclusiva no `MenuLateral.vue` ordenada pela jornada, pré-requisitos guiados, revelação progressiva (`12 colunas`), pirâmide de ações (1 primária sólida; destrutivas discretas fora do modal), zero *Card-ception* / menos bordas, consolidação de colunas em tabelas, contraste de tokens Vuetify (`secondary` escuro), zero jargão técnico e feedback imediato. |
| **`@refatorar`** *(Clean Code Specialist)* | Todo o código alterado | Governança estrita das 12 regras de Código Limpo: garantia do **limite de 250 linhas por arquivo**, eliminação de code smells, modularidade e Dispatch Tables. | | **`@refatorar`** *(Clean Code Specialist)* | Todo o código alterado | Governança estrita das 12 regras de Código Limpo: garantia do **limite de 250 linhas por arquivo**, eliminação de code smells, modularidade e Dispatch Tables. |
| **`@testes`** *(QA & Automation)* | Checagens e Validação E2E | Tipagem (`bun run typecheck` / `tsc --noEmit`), linter (`biome check --write`), governança (`sh .agent/verificar-linhas.sh`) e testes de interface visual via `agent-browser --session <modulo>_<contexto?> --headed` com evidências salvas em `.evidencias/`. | | **`@testes`** *(QA & Automation)* | Checagens e Validação E2E | Tipagem (`bun run typecheck` / `tsc --noEmit`), linter (`biome check --write`), governança (`sh .agent/verificar-linhas.sh`) e testes de interface visual via `agent-browser --session <modulo>_<contexto?> --headed`. |
| **`@documentacao`** *(Memory & Docs)* | `memorias-ia/`, `<modulo-wiki>/` | Registro de sessão no Pilar 6 (`memorias-ia/sessao-*.md`), indexação no `historico-acoes.md`, atualização de regras técnicas na Wiki de Dev (`<modulo-wiki>/dev/<modulo-id>/`). | | **`@documentacao`** *(Memory & Docs)* | `memorias-ia/`, `<modulo-wiki>/` | Registro de sessão no Pilar 6 (`memorias-ia/sessao-*.md`), indexação no `historico-acoes.md`, atualização de regras técnicas na Wiki de Dev (`<modulo-wiki>/dev/<modulo-id>/`). |
--- ---
@ -80,7 +80,7 @@ Em implementações integradas, o Orquestrador segue a ordem canônica de handof
↓ ↓
4. [@refatorar] Extrai módulos se exceder 250 linhas e aplica Código Limpo 4. [@refatorar] Extrai módulos se exceder 250 linhas e aplica Código Limpo
↓ ↓
5. [@testes] Roda typecheck, biome e testes E2E com agent-browser --session <modulo>_<contexto?> --headed (evidências em .evidencias/) 5. [@testes] Roda typecheck, biome e testes E2E com agent-browser --session <modulo>_<contexto?> --headed
↓ (Loop /goal de auto-correção se houver falhas) ↓ (Loop /goal de auto-correção se houver falhas)
6. [@documentacao] Atualiza memórias-ia/, historico-acoes.md e arquiva o plano 6. [@documentacao] Atualiza memórias-ia/, historico-acoes.md e arquiva o plano
``` ```
@ -149,7 +149,7 @@ Ao atingir 100% de conformidade com todos os critérios do plano:
1. **Atualizar Metadados e Histórico do Plano:** 1. **Atualizar Metadados e Histórico do Plano:**
- Frontmatter: `status: "executado"`, `data-execucao: "AAAA-MM-DD HH:mm"`, `executor: "Orquestrador /goal + Multiagentes (@back, @front, @ux, @refatorar, @testes, @documentacao)"`. - Frontmatter: `status: "executado"`, `data-execucao: "AAAA-MM-DD HH:mm"`, `executor: "Orquestrador /goal + Multiagentes (@back, @front, @ux, @refatorar, @testes, @documentacao)"`.
- Seção 6 (*Histórico de Execução*): arquivos modificados, resumo da solução e evidências de validação salvas em `.evidencias/`. - Seção 6 (*Histórico de Execução*): arquivos modificados, resumo da solução e evidências de validação.
2. **Mover o Plano:** 2. **Mover o Plano:**
- Salvar em `./PLANOS/executado/<nome-original>.md` e remover de `./PLANOS/pendente/<nome-original>.md` (preservando o nome original do arquivo). - Salvar em `./PLANOS/executado/<nome-original>.md` e remover de `./PLANOS/pendente/<nome-original>.md` (preservando o nome original do arquivo).
3. **Atualizar Grafo de Conhecimento (Graphify):** 3. **Atualizar Grafo de Conhecimento (Graphify):**

View file

@ -83,10 +83,10 @@ Quando invocado com uma instrução (ex.: `/plano corrigir validação do númer
--- ---
``` ```
- **1. Objetivo & Contexto:** Descrição concisa da demanda e impacto de negócio. - **1. Objetivo & Contexto:** Descrição concisa da demanda e impacto de negócio.
- **2. Diagnóstico Técnico & Evidências:** Comportamento observado vs esperado, repro steps, evidências salvas em `.evidencias/`, arquivos mapeados com links `[arquivo](file://...)` e subseção **Raio de Impacto & Dependências (Graphify)** extraída via `bash .agent/scripts/graphify.sh impact`. - **2. Diagnóstico Técnico & Evidências:** Comportamento observado vs esperado, repro steps, arquivos mapeados com links `[arquivo](file://...)` e subseção **Raio de Impacto & Dependências (Graphify)** extraída via `bash .agent/scripts/graphify.sh impact`.
- **3. Critérios de Aceite & Validação (DoD):** Checklist com caixas `- [ ]` contendo condições verificáveis de sucesso. - **3. Critérios de Aceite & Validação (DoD):** Checklist com caixas `- [ ]` contendo condições verificáveis de sucesso.
- **4. Especificação Técnica & Passos de Implementação:** Roteiro prático para o desenvolvedor (schemas, backend, frontend, código sugerido). - **4. Especificação Técnica & Passos de Implementação:** Roteiro prático para o desenvolvedor (schemas, backend, frontend, código sugerido).
- **5. Plano de Verificação & Testes:** Testes automatizados (`typecheck`, `biome`) e roteiro manual/E2E com `agent-browser --session <modulo>_<contexto?> --headed` (salvando evidências obrigatoriamente em `.evidencias/`). - **5. Plano de Verificação & Testes:** Testes automatizados (`typecheck`, `biome`) e roteiro manual/E2E com `agent-browser --session <modulo>_<contexto?> --headed`.
- **6. Histórico de Execução:** Cabeçalho reservado para preenchimento na conclusão pelo executor. - **6. Histórico de Execução:** Cabeçalho reservado para preenchimento na conclusão pelo executor.
- Salve o arquivo em `./PLANOS/pendente/AAAA-MM-DD-HH-mm-<slug>.md` usando `write_to_file`. - Salve o arquivo em `./PLANOS/pendente/AAAA-MM-DD-HH-mm-<slug>.md` usando `write_to_file`.

View file

@ -2,9 +2,8 @@
name: testar-interface-agent-browser name: testar-interface-agent-browser
description: > description: >
Executar testes automatizados de interface (E2E), navegação e validação visual Executar testes automatizados de interface (E2E), navegação e validação visual
no frontend utilizando a CLI agent-browser, com janela sempre visível (--headed), no frontend utilizando a CLI agent-browser, com janela sempre visível (--headed)
isolamento mandatório de sessão e contexto (--session <modulo>_<contexto?>) e e isolamento mandatório de sessão e contexto (--session <modulo>_<contexto?>).
salvamento obrigatório das evidências na pasta .evidencias/.
scope: global scope: global
--- ---
@ -126,13 +125,12 @@ agent-browser --session "${MODULO}_${CONTEXTO}" console
agent-browser --session "${MODULO}_${CONTEXTO}" network agent-browser --session "${MODULO}_${CONTEXTO}" network
``` ```
### 6. Registrar Evidência Visual (Pasta Obrigatória `.evidencias/`) ### 6. Registrar Evidência Visual
Capture um screenshot na pasta `.evidencias/` para comprovação do resultado do teste (é proibido salvar evidências fora de `.evidencias/`): Capture um screenshot para comprovação do resultado do teste:
```bash ```bash
# Garantir a pasta .evidencias/ e capturar screenshot padrão ou anotado # Screenshot padrão ou anotado com identificadores visuais
mkdir -p .evidencias agent-browser --session "${MODULO}_${CONTEXTO}" screenshot evidencias/resultado-sucesso.png
agent-browser --session "${MODULO}_${CONTEXTO}" screenshot .evidencias/resultado-sucesso.png # agent-browser --session "${MODULO}_${CONTEXTO}" screenshot --annotate evidencias/resultado-anotado.png
# agent-browser --session "${MODULO}_${CONTEXTO}" screenshot --annotate .evidencias/resultado-anotado.png
``` ```
### 7. Encerrar Navegador daquele Contexto ### 7. Encerrar Navegador daquele Contexto
@ -158,7 +156,7 @@ agent-browser --session "${MODULO}_${CONTEXTO}" close
| **Aguardar seletor** | `agent-browser --session <modulo>_<contexto?> wait --selector "<seletor>"` | | **Aguardar seletor** | `agent-browser --session <modulo>_<contexto?> wait --selector "<seletor>"` |
| **Inspecionar console** | `agent-browser --session <modulo>_<contexto?> console` | | **Inspecionar console** | `agent-browser --session <modulo>_<contexto?> console` |
| **Inspecionar rede** | `agent-browser --session <modulo>_<contexto?> network` | | **Inspecionar rede** | `agent-browser --session <modulo>_<contexto?> network` |
| **Screenshot (em `.evidencias/`)** | `agent-browser --session <modulo>_<contexto?> screenshot .evidencias/<arquivo.png>` | | **Screenshot** | `agent-browser --session <modulo>_<contexto?> screenshot <arquivo.png>` |
| **Auditoria a11y (WCAG)** | `agent-browser --session <modulo>_<contexto?> a11y` | | **Auditoria a11y (WCAG)** | `agent-browser --session <modulo>_<contexto?> a11y` |
| **Fechar sessão** | `agent-browser --session <modulo>_<contexto?> close` | | **Fechar sessão** | `agent-browser --session <modulo>_<contexto?> close` |
@ -219,4 +217,4 @@ agent-browser skills get dogfood
1. **Campos Vuetify (`v-text-field`, `v-select`)**: O `snapshot -i` mapeia diretamente o `textbox` e o `combobox`. Utilize `agent-browser --session "${MODULO}_${CONTEXTO}" fill @ref` ou `click @ref`. 1. **Campos Vuetify (`v-text-field`, `v-select`)**: O `snapshot -i` mapeia diretamente o `textbox` e o `combobox`. Utilize `agent-browser --session "${MODULO}_${CONTEXTO}" fill @ref` ou `click @ref`.
2. **Modais e Diálogos**: Após clicar no botão que abre o modal (`v-dialog`), execute `agent-browser --session "${MODULO}_${CONTEXTO}" wait 500 && agent-browser --session "${MODULO}_${CONTEXTO}" snapshot -i` para interagir com o conteúdo do diálogo. 2. **Modais e Diálogos**: Após clicar no botão que abre o modal (`v-dialog`), execute `agent-browser --session "${MODULO}_${CONTEXTO}" wait 500 && agent-browser --session "${MODULO}_${CONTEXTO}" snapshot -i` para interagir com o conteúdo do diálogo.
3. **Reporte de Teste e Evidências em `.evidencias/`**: Salve obrigatoriamente todas as evidências geradas na pasta `.evidencias/` e apresente ao operador o roteiro executado, os links das evidências em `.evidencias/` e a verificação de logs do console. 3. **Reporte de Teste**: Apresente ao operador o roteiro executado, evidências de screenshot e verificação de logs do console.

View file

@ -142,7 +142,7 @@ Conforme as diretrizes de **Layout (`Panes` e `Canonical Layouts`), `Dialogs` e
- Inserir links de navegação cruzada e *empty states* guiados entre telas dependentes. - Inserir links de navegação cruzada e *empty states* guiados entre telas dependentes.
- Garantir que quadros Kanban sejam horizontais e responsivos. - Garantir que quadros Kanban sejam horizontais e responsivos.
5. **Validar Visualmente com `agent-browser`:** 5. **Validar Visualmente com `agent-browser`:**
- Inspecionar o fluxo ponta a ponta em modo visível (`agent-browser --session <modulo-id>_<contexto?> --headed`) e salvar as evidências geradas em `.evidencias/`, conforme `rules/testes-interface-agent-browser.md`. - Inspecionar o fluxo ponta a ponta em modo visível (`agent-browser --session <modulo-id>_<contexto?> --headed`) conforme `rules/testes-interface-agent-browser.md`.
--- ---

View file

@ -75,24 +75,6 @@ if [ -n "$HOST_MODULO_ID" ] && [ -d "$ROOT_DIR/.agent/rules" ]; then
fi fi
fi fi
# Verificar runtime Bun e atualização diária (bun upgrade --stable)
export PATH="$HOME/.bun/bin:$PATH"
if command -v bun >/dev/null 2>&1; then
BUN_STAMP_FILE="/tmp/.antigravity_bun_upgrade_date"
TODAY=$(date +%Y-%m-%d)
LAST_BUN_CHECK=$(cat "$BUN_STAMP_FILE" 2>/dev/null || true)
if [ "$LAST_BUN_CHECK" != "$TODAY" ]; then
if bun upgrade --stable >/dev/null 2>&1; then
echo "$TODAY" > "$BUN_STAMP_FILE" 2>/dev/null || true
fi
fi
BUN_VER=$(bun --version 2>/dev/null || true)
echo -e " ${VERDE}✓${RESET} Runtime Bun verificado (${NEGRITO}v${BUN_VER}${RESET} — check diário: ${NEGRITO}bun upgrade --stable${RESET})."
else
echo -e " ${AMARELO}⚠${RESET} Runtime Bun não encontrado no PATH."
TOTAL_AVISOS=$((TOTAL_AVISOS + 1))
fi
# 1. Validar memorias-ia/modulo.yml (Pilar 6 - Identidade) # 1. Validar memorias-ia/modulo.yml (Pilar 6 - Identidade)
MODULO_YML="$ROOT_DIR/memorias-ia/modulo.yml" MODULO_YML="$ROOT_DIR/memorias-ia/modulo.yml"
echo -e "\n${NEGRITO}[1/6] Identidade do Módulo (memorias-ia/modulo.yml)${RESET}" echo -e "\n${NEGRITO}[1/6] Identidade do Módulo (memorias-ia/modulo.yml)${RESET}"

View file

@ -20,7 +20,6 @@ RESULTADO=$(
-name .output -o \ -name .output -o \
-name .nuxt -o \ -name .nuxt -o \
-name .cache -o \ -name .cache -o \
-name .evidencias -o \
-name build \ -name build \
\) -prune \ \) -prune \
-o \ -o \