Compare commits
No commits in common. "master" and "master-jjj" have entirely different histories.
master
...
master-jjj
45 changed files with 140 additions and 225 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -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/
|
|
||||||
|
|
|
||||||
|
|
@ -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
2
README
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
6
TOOLS
|
|
@ -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.
|
||||||
|
|
|
||||||
6
TOOLS.md
6
TOOLS.md
|
|
@ -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
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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`.**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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):**
|
||||||
|
|
|
||||||
|
|
@ -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`.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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": {
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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`.**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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 "{\"injectSteps\":[{\"ephemeralMessage\":\"ℹ️${BUN_STATUS_MSG}\"}]}"
|
|
||||||
else
|
|
||||||
echo "{}"
|
echo "{}"
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "ℹ️ Nenhum arquivo .gitmodules detectado.${BUN_STATUS_MSG}"
|
echo "ℹ️ Nenhum arquivo .gitmodules detectado."
|
||||||
fi
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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):**
|
||||||
|
|
|
||||||
|
|
@ -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`.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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}"
|
||||||
|
|
|
||||||
|
|
@ -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 \
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue