@jaimevalasek/aioson 1.6.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +74 -0
- package/README.md +729 -232
- package/docs/design-previews/pt.squarespace.com-homepage.html +889 -0
- package/docs/integrations/sdlc-genius-boundary.md +76 -0
- package/docs/integrations/sdlc-genius-eval-matrix.md +75 -0
- package/docs/integrations/sdlc-genius-install-checklist.md +93 -0
- package/docs/integrations/sdlc-genius-review-samples.md +86 -0
- package/docs/pt/README.md +3 -0
- package/docs/pt/agentes.md +1 -0
- package/docs/pt/comandos-cli.md +888 -2
- package/docs/pt/design-hybrid-forge.md +255 -6
- package/docs/pt/devlog-pipeline.md +270 -0
- package/docs/pt/fluxo-artefatos.md +178 -0
- package/docs/pt/hooks-session-guard.md +454 -0
- package/docs/pt/monitor-de-contexto.md +59 -5
- package/docs/pt/sdd-automation-scripts.md +557 -0
- package/docs/pt/site-forge.md +309 -0
- package/docs/pt/spec-learnings-pipeline.md +265 -0
- package/package.json +1 -1
- package/src/a2a/client.js +165 -0
- package/src/a2a/server.js +223 -0
- package/src/cli.js +235 -1
- package/src/commands/agent-audit.js +397 -0
- package/src/commands/agent-export-skill.js +229 -0
- package/src/commands/artifact-validate.js +189 -0
- package/src/commands/brief-gen.js +405 -0
- package/src/commands/brief-validate.js +65 -0
- package/src/commands/classify.js +256 -0
- package/src/commands/context-compact.js +49 -0
- package/src/commands/context-health.js +175 -0
- package/src/commands/context-monitor.js +71 -0
- package/src/commands/context-trim.js +177 -0
- package/src/commands/detect-test-runner.js +55 -0
- package/src/commands/devlog-export-brains.js +27 -0
- package/src/commands/devlog-process.js +292 -0
- package/src/commands/devlog-watch.js +131 -0
- package/src/commands/feature-close.js +165 -0
- package/src/commands/gate-check.js +228 -0
- package/src/commands/hooks-emit.js +253 -0
- package/src/commands/hooks-install.js +347 -0
- package/src/commands/learning-auto-promote.js +195 -0
- package/src/commands/learning-evolve.js +18 -9
- package/src/commands/learning-export.js +103 -0
- package/src/commands/learning-rollback.js +164 -0
- package/src/commands/live.js +25 -1
- package/src/commands/pattern-detect.js +33 -0
- package/src/commands/preflight-context.js +30 -0
- package/src/commands/preflight.js +208 -0
- package/src/commands/pulse-update.js +130 -0
- package/src/commands/runner-daemon.js +274 -0
- package/src/commands/runner-plan.js +70 -0
- package/src/commands/runner-queue-from-plan.js +166 -0
- package/src/commands/runner-queue.js +189 -0
- package/src/commands/runner-run.js +129 -0
- package/src/commands/runtime.js +47 -1
- package/src/commands/self-implement-loop.js +256 -0
- package/src/commands/session-guard.js +218 -0
- package/src/commands/sizing.js +165 -0
- package/src/commands/skill.js +65 -0
- package/src/commands/spec-checkpoint.js +177 -0
- package/src/commands/spec-status.js +79 -0
- package/src/commands/spec-sync.js +190 -0
- package/src/commands/spec-tasks.js +288 -0
- package/src/commands/squad-autorun.js +1220 -0
- package/src/commands/squad-bus.js +217 -0
- package/src/commands/squad-card.js +149 -0
- package/src/commands/squad-daemon.js +134 -0
- package/src/commands/squad-dependency-graph.js +164 -0
- package/src/commands/squad-review.js +106 -0
- package/src/commands/squad-scaffold.js +55 -0
- package/src/commands/squad-tool-register.js +157 -0
- package/src/commands/state-save.js +122 -0
- package/src/commands/update.js +2 -0
- package/src/commands/verify-gate.js +572 -0
- package/src/commands/workflow-execute.js +241 -0
- package/src/constants.js +22 -0
- package/src/install-profile.js +2 -2
- package/src/install-wizard.js +3 -2
- package/src/installer.js +6 -0
- package/src/lib/health-check.js +158 -0
- package/src/lib/hook-protocol.js +76 -0
- package/src/mcp/apps/squad-dashboard/app.js +163 -0
- package/src/mcp/apps/squad-dashboard/index.html +261 -0
- package/src/mcp/apps/squad-dashboard/mcp-manifest.json +23 -0
- package/src/mcp/resources/squad-state.js +130 -0
- package/src/preflight-engine.js +443 -0
- package/src/runner/cascade.js +97 -0
- package/src/runner/cli-launcher.js +109 -0
- package/src/runner/plan-importer.js +63 -0
- package/src/runner/queue-store.js +159 -0
- package/src/runtime-store.js +61 -3
- package/src/squad/agent-teams-adapter.js +264 -0
- package/src/squad/brief-validator.js +350 -0
- package/src/squad/bus-bridge.js +140 -0
- package/src/squad/context-compactor.js +265 -0
- package/src/squad/cross-ai-synthesizer.js +250 -0
- package/src/squad/hooks-generator.js +196 -0
- package/src/squad/inter-squad-events.js +175 -0
- package/src/squad/intra-bus.js +345 -0
- package/src/squad/learning-extractor.js +213 -0
- package/src/squad/pattern-detector.js +365 -0
- package/src/squad/preflight-context.js +296 -0
- package/src/squad/recovery-context.js +242 -71
- package/src/squad/reflection.js +365 -0
- package/src/squad/squad-scaffold.js +177 -0
- package/src/squad/state-manager.js +310 -0
- package/src/squad/task-decomposer.js +652 -0
- package/src/squad/verify-gate.js +303 -0
- package/src/updater.js +4 -5
- package/src/worker-runner.js +186 -1
- package/template/.aioson/agents/analyst.md +62 -1
- package/template/.aioson/agents/architect.md +61 -1
- package/template/.aioson/agents/copywriter.md +463 -0
- package/template/.aioson/agents/design-hybrid-forge.md +14 -0
- package/template/.aioson/agents/dev.md +271 -25
- package/template/.aioson/agents/deyvin.md +67 -8
- package/template/.aioson/agents/discovery-design-doc.md +44 -0
- package/template/.aioson/agents/genome.md +14 -0
- package/template/.aioson/agents/neo.md +83 -2
- package/template/.aioson/agents/orache.md +50 -4
- package/template/.aioson/agents/orchestrator.md +197 -1
- package/template/.aioson/agents/pm.md +35 -0
- package/template/.aioson/agents/product.md +50 -5
- package/template/.aioson/agents/profiler-enricher.md +14 -0
- package/template/.aioson/agents/profiler-forge.md +14 -0
- package/template/.aioson/agents/profiler-researcher.md +14 -0
- package/template/.aioson/agents/qa.md +273 -21
- package/template/.aioson/agents/setup.md +96 -10
- package/template/.aioson/agents/sheldon.md +131 -6
- package/template/.aioson/agents/site-forge.md +1753 -0
- package/template/.aioson/agents/squad.md +352 -0
- package/template/.aioson/agents/tester.md +53 -0
- package/template/.aioson/agents/ux-ui.md +203 -4
- package/template/.aioson/brains/README.md +128 -0
- package/template/.aioson/brains/_index.json +16 -0
- package/template/.aioson/brains/scripts/query.js +103 -0
- package/template/.aioson/brains/site-forge/visual-patterns.brain.json +205 -0
- package/template/.aioson/config.md +143 -13
- package/template/.aioson/constitution.md +33 -0
- package/template/.aioson/context/project-pulse.md +34 -0
- package/template/.aioson/docs/LAYERS.md +79 -0
- package/template/.aioson/docs/README.md +76 -0
- package/template/.aioson/docs/example-external-api-context.md +72 -0
- package/template/.aioson/genomes/copywriting.md +204 -0
- package/template/.aioson/locales/en/agents/architect.md +17 -0
- package/template/.aioson/locales/en/agents/dev.md +79 -13
- package/template/.aioson/locales/en/agents/orache.md +6 -0
- package/template/.aioson/locales/en/agents/orchestrator.md +24 -0
- package/template/.aioson/locales/en/agents/product.md +50 -0
- package/template/.aioson/locales/en/agents/sheldon.md +115 -0
- package/template/.aioson/locales/en/agents/squad.md +14 -0
- package/template/.aioson/locales/en/agents/tester.md +6 -0
- package/template/.aioson/locales/es/agents/analyst.md +2 -0
- package/template/.aioson/locales/es/agents/architect.md +19 -0
- package/template/.aioson/locales/es/agents/dev.md +64 -4
- package/template/.aioson/locales/es/agents/deyvin.md +2 -0
- package/template/.aioson/locales/es/agents/discovery-design-doc.md +2 -0
- package/template/.aioson/locales/es/agents/genome.md +2 -0
- package/template/.aioson/locales/es/agents/neo.md +2 -0
- package/template/.aioson/locales/es/agents/orache.md +2 -0
- package/template/.aioson/locales/es/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/es/agents/pair.md +2 -0
- package/template/.aioson/locales/es/agents/pm.md +2 -0
- package/template/.aioson/locales/es/agents/product.md +52 -0
- package/template/.aioson/locales/es/agents/profiler-enricher.md +2 -0
- package/template/.aioson/locales/es/agents/profiler-forge.md +2 -0
- package/template/.aioson/locales/es/agents/profiler-researcher.md +2 -0
- package/template/.aioson/locales/es/agents/qa.md +2 -0
- package/template/.aioson/locales/es/agents/setup.md +2 -0
- package/template/.aioson/locales/es/agents/sheldon.md +117 -0
- package/template/.aioson/locales/es/agents/squad.md +16 -0
- package/template/.aioson/locales/es/agents/tester.md +9 -0
- package/template/.aioson/locales/es/agents/ux-ui.md +2 -0
- package/template/.aioson/locales/fr/agents/analyst.md +2 -0
- package/template/.aioson/locales/fr/agents/architect.md +19 -0
- package/template/.aioson/locales/fr/agents/dev.md +64 -4
- package/template/.aioson/locales/fr/agents/deyvin.md +2 -0
- package/template/.aioson/locales/fr/agents/discovery-design-doc.md +2 -0
- package/template/.aioson/locales/fr/agents/genome.md +2 -0
- package/template/.aioson/locales/fr/agents/neo.md +2 -0
- package/template/.aioson/locales/fr/agents/orache.md +2 -0
- package/template/.aioson/locales/fr/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/fr/agents/pair.md +2 -0
- package/template/.aioson/locales/fr/agents/pm.md +2 -0
- package/template/.aioson/locales/fr/agents/product.md +52 -0
- package/template/.aioson/locales/fr/agents/profiler-enricher.md +2 -0
- package/template/.aioson/locales/fr/agents/profiler-forge.md +2 -0
- package/template/.aioson/locales/fr/agents/profiler-researcher.md +2 -0
- package/template/.aioson/locales/fr/agents/qa.md +2 -0
- package/template/.aioson/locales/fr/agents/setup.md +2 -0
- package/template/.aioson/locales/fr/agents/sheldon.md +117 -0
- package/template/.aioson/locales/fr/agents/squad.md +16 -0
- package/template/.aioson/locales/fr/agents/tester.md +9 -0
- package/template/.aioson/locales/fr/agents/ux-ui.md +2 -0
- package/template/.aioson/locales/pt-BR/agents/analyst.md +64 -3
- package/template/.aioson/locales/pt-BR/agents/architect.md +42 -0
- package/template/.aioson/locales/pt-BR/agents/dev.md +147 -14
- package/template/.aioson/locales/pt-BR/agents/deyvin.md +47 -0
- package/template/.aioson/locales/pt-BR/agents/neo.md +62 -1
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +158 -2
- package/template/.aioson/locales/pt-BR/agents/pm.md +95 -1
- package/template/.aioson/locales/pt-BR/agents/product.md +145 -18
- package/template/.aioson/locales/pt-BR/agents/qa.md +16 -0
- package/template/.aioson/locales/pt-BR/agents/setup.md +101 -18
- package/template/.aioson/locales/pt-BR/agents/sheldon.md +132 -1
- package/template/.aioson/locales/pt-BR/agents/squad.md +14 -0
- package/template/.aioson/locales/pt-BR/agents/tester.md +449 -0
- package/template/.aioson/rules/README.md +69 -0
- package/template/.aioson/rules/data-format-convention.md +136 -0
- package/template/.aioson/rules/example-monetary-values.md +30 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +124 -3
- package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +2 -0
- package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -0
- package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +66 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +368 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +165 -0
- package/template/.aioson/skills/marketing/references/anti-patterns.md +254 -0
- package/template/.aioson/skills/marketing/references/fascinations.md +192 -0
- package/template/.aioson/skills/marketing/references/five-acts.md +248 -0
- package/template/.aioson/skills/marketing/references/market-intelligence.md +198 -0
- package/template/.aioson/skills/marketing/references/offer-structure.md +203 -0
- package/template/.aioson/skills/marketing/references/one-belief.md +149 -0
- package/template/.aioson/skills/marketing/references/patterns.md +218 -0
- package/template/.aioson/skills/marketing/references/pms-research.md +193 -0
- package/template/.aioson/skills/marketing/vsl-craft.md +385 -0
- package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +1 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/analyst.md +30 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/architect.md +23 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +47 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/deyvin.md +27 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +35 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/product.md +25 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/qa.md +30 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/sheldon.md +25 -0
- package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +4 -1
- package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +15 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +32 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +20 -0
- package/template/.aioson/skills/process/simplify/SKILL.md +173 -0
- package/template/.aioson/skills/static/context-budget-guide.md +46 -0
- package/template/.aioson/skills/static/harness-sensors.md +74 -0
- package/template/.aioson/skills/static/landing-page-deploy.md +192 -0
- package/template/.aioson/skills/static/landing-page-forge.md +730 -0
- package/template/.aioson/skills/static/multi-agent-patterns.md +43 -0
- package/template/.aioson/skills/static/react-motion-patterns.md +22 -0
- package/template/.aioson/skills/static/static-html-patterns/checklists.md +43 -0
- package/template/.aioson/skills/static/static-html-patterns/css-tokens.md +609 -0
- package/template/.aioson/skills/static/static-html-patterns/motion.md +193 -0
- package/template/.aioson/skills/static/static-html-patterns/premium.md +711 -0
- package/template/.aioson/skills/static/static-html-patterns/structure.md +209 -0
- package/template/.aioson/skills/static/static-html-patterns/utilities.md +190 -0
- package/template/.aioson/skills/static/static-html-patterns.md +58 -1913
- package/template/.aioson/skills/static/threejs-patterns.md +929 -0
- package/template/.aioson/skills/static/ui-ux-modern.md +1 -0
- package/template/.aioson/skills/static/web-research-cache.md +112 -0
- package/template/.aioson/tasks/implementation-plan.md +21 -1
- package/template/.aioson/tasks/squad-create.md +22 -0
- package/template/.aioson/tasks/squad-design.md +30 -0
- package/template/.aioson/templates/squads/digital-marketing-agency/template.json +96 -0
- package/template/.claude/commands/aioson/agent/design-hybrid-forge.md +5 -0
- package/template/.claude/commands/aioson/agent/orache.md +5 -0
- package/template/.claude/commands/aioson/agent/sheldon.md +5 -0
- package/template/.claude/commands/aioson/agent/site-forge.md +5 -0
- package/template/AGENTS.md +55 -3
- package/template/CLAUDE.md +31 -0
- package/template/OPENCODE.md +4 -0
- package/template/researchs/.gitkeep +0 -0
- package/template/.aioson/skills/design-system/components/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/dashboards/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/foundations/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/motion/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/patterns/SKILL.md:Zone.Identifier +0 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Fluxo de artefatos entre agentes
|
|
2
|
+
|
|
3
|
+
> Como os artefatos produzidos por @product e @sheldon chegam ao @analyst e ao @dev — e o que cada agente lê de fato.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Visão geral
|
|
8
|
+
|
|
9
|
+
Cada agente produz arquivos que os agentes subsequentes leem. Nenhum agente lê tudo de uma vez — cada um carrega apenas o que precisa. Este documento mapeia o que é criado, onde é salvo e quem consome o quê.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
@product → prd.md / prd-{slug}.md
|
|
13
|
+
↓
|
|
14
|
+
@sheldon (N rodadas) → enriquece PRD + gera sheldon-enrichment-{slug}.md
|
|
15
|
+
pode criar .aioson/plans/{slug}/manifest.md + plan-{fase}.md
|
|
16
|
+
↓
|
|
17
|
+
@analyst → lê sheldon-enrichment → discovery.md / requirements-{slug}.md + spec-{slug}.md
|
|
18
|
+
↓
|
|
19
|
+
@dev → carrega minimum context package → implementa fase por fase
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## O que @product gera
|
|
25
|
+
|
|
26
|
+
| Artefato | Onde | Quando |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| `prd.md` | `.aioson/context/` | Projeto novo |
|
|
29
|
+
| `prd-{slug}.md` | `.aioson/context/` | Feature nova |
|
|
30
|
+
| `features.md` | `.aioson/context/` | Sempre que uma feature é aberta |
|
|
31
|
+
| `plans/source-manifest.md` | raiz do projeto | Se usou `plans/*.md` ou `prds/*.md` como fonte |
|
|
32
|
+
|
|
33
|
+
O PRD produzido pelo @product é o **documento base vivo** — nenhum agente downstream reescreve Vision, Problem ou Users. Eles só adicionam.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## O que @sheldon gera (pode rodar N vezes)
|
|
38
|
+
|
|
39
|
+
@sheldon avalia o escopo total do PRD e decide como organizar o trabalho com base em um **score de complexidade**:
|
|
40
|
+
|
|
41
|
+
| Score | Decisão | O que é criado |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| 0–3 | Enriquecimento in-place | Expande o próprio `prd-{slug}.md` diretamente |
|
|
44
|
+
| 4–6 | In-place + Delivery plan | Expande o PRD e adiciona `## Delivery plan` com fases numeradas dentro do arquivo |
|
|
45
|
+
| 7+ | Plano externo | Cria `.aioson/plans/{slug}/manifest.md` + `plan-{slug-fase}.md` por fase |
|
|
46
|
+
|
|
47
|
+
**Em todos os casos**, @sheldon gera:
|
|
48
|
+
- `sheldon-enrichment-{slug}.md` (ou `sheldon-enrichment.md`) em `.aioson/context/` — log de cada rodada, decisões de gray areas, score e readiness
|
|
49
|
+
|
|
50
|
+
**No Modo C (validação completa)**, gera adicionalmente:
|
|
51
|
+
- `sheldon-validation.md` — relatório de auditoria com gate por agente (🟢/🟡/🔴)
|
|
52
|
+
- `.aioson/plans/{slug}/checklist.md` — checklist de implementação por fase
|
|
53
|
+
|
|
54
|
+
**Pesquisas web (RF-WEB)** ficam em:
|
|
55
|
+
- `researchs/{slug}/summary.md` — cache de 7 dias, compartilhado com outros agentes
|
|
56
|
+
|
|
57
|
+
O campo `readiness` em `sheldon-enrichment-{slug}.md` define se o PRD está pronto:
|
|
58
|
+
- `ready_for_downstream` → pode avançar para @analyst
|
|
59
|
+
- `needs_work` → itens bloqueantes ainda abertos
|
|
60
|
+
- `needs_enrichment` → sessão iniciada mas não concluída
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Como @analyst consome esses artefatos
|
|
65
|
+
|
|
66
|
+
@analyst lê o arquivo de enrichment **silenciosamente** antes de iniciar qualquer pergunta:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Se sheldon-enrichment-{slug}.md existir:
|
|
70
|
+
→ ler — não re-perguntar o que já está documentado
|
|
71
|
+
→ se plan_path estiver setado: ler manifest e scopar discovery para Fase 1 primeiro
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Em modo feature**, @analyst produz:
|
|
75
|
+
- `requirements-{slug}.md` — regras de negócio com IDs (`REQ-{slug}-N`), acceptance criteria verificáveis (`AC-{slug}-N`), edge cases e out-of-scope explícito
|
|
76
|
+
- `spec-{slug}.md` — esqueleto de memória da feature com `phase_gates` no frontmatter
|
|
77
|
+
|
|
78
|
+
O `spec-{slug}.md` é o **artefato de handoff para @dev** — ele inclui as decisões já tomadas, dependências e o status de cada gate (`requirements`, `design`, `plan`).
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Como @dev consome tudo isso
|
|
83
|
+
|
|
84
|
+
@dev usa um **minimum context package** — nunca carrega mais de 5 arquivos antes do primeiro código.
|
|
85
|
+
|
|
86
|
+
| Modo | O que @dev carrega |
|
|
87
|
+
|---|---|
|
|
88
|
+
| Feature MICRO | `project.context.md` + `prd-{slug}.md` |
|
|
89
|
+
| Feature SMALL/MEDIUM | `project.context.md` + `spec-{slug}.md` + `implementation-plan-{slug}.md` |
|
|
90
|
+
| Feature com plano do Sheldon | `project.context.md` + `spec-{slug}.md` + `.aioson/plans/{slug}/manifest.md` + arquivo da fase atual |
|
|
91
|
+
| Modo projeto | `project.context.md` + `spec.md` + `skeleton-system.md` |
|
|
92
|
+
|
|
93
|
+
### Como o plano do Sheldon chega ao @dev
|
|
94
|
+
|
|
95
|
+
Quando @sheldon criou um plano externo (score 7+):
|
|
96
|
+
|
|
97
|
+
1. @dev detecta `.aioson/plans/*/manifest.md` antes de qualquer implementação
|
|
98
|
+
2. Lê o `manifest.md` para saber qual fase está com `status: pending`
|
|
99
|
+
3. Carrega **apenas o arquivo dessa fase** (ex: `plan-autenticacao.md`)
|
|
100
|
+
4. Implementa a fase, marca como `done` no manifest
|
|
101
|
+
5. Na próxima sessão, pega a próxima fase
|
|
102
|
+
|
|
103
|
+
Decisões marcadas como `pre-tomadas` no manifest são **finais** — @dev não re-discute. Decisões `adiadas` são dele para tomar e registrar em `spec-{slug}.md`.
|
|
104
|
+
|
|
105
|
+
### O controlador de estado entre sessões: `dev-state.md`
|
|
106
|
+
|
|
107
|
+
`.aioson/context/dev-state.md` é o primeiro arquivo que @dev lê em cada sessão:
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
---
|
|
111
|
+
active_feature: {slug}
|
|
112
|
+
active_phase: 2
|
|
113
|
+
active_plan: .aioson/plans/{slug}/manifest.md
|
|
114
|
+
context_package:
|
|
115
|
+
- .aioson/context/project.context.md
|
|
116
|
+
- .aioson/context/spec-{slug}.md
|
|
117
|
+
- .aioson/plans/{slug}/manifest.md
|
|
118
|
+
- .aioson/plans/{slug}/plan-autenticacao.md
|
|
119
|
+
next_step: "Implementar migration da tabela users + teste RED"
|
|
120
|
+
status: in_progress
|
|
121
|
+
---
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Se `dev-state.md` existe, @dev carrega **exatamente** o `context_package` listado e começa no `next_step` — sem exploração, sem leitura extra. É o ponteiro preciso entre sessões.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## O que @dev nunca carrega
|
|
129
|
+
|
|
130
|
+
Regras duras — sem exceções:
|
|
131
|
+
|
|
132
|
+
- Qualquer arquivo em `.aioson/agents/` — arquivos de agente nunca são contexto de @dev
|
|
133
|
+
- `spec-{outro-slug}.md` — specs de features que não são a ativa
|
|
134
|
+
- PRDs de features marcadas como `done` em `features.md`
|
|
135
|
+
- `discovery.md` ou `architecture.md` a menos que estejam explicitamente no plano ou no `dev-state.md`
|
|
136
|
+
- Mais de 5 arquivos antes do primeiro código (auto-verificação: se leu 5 arquivos sem escrever nada → para e reporta)
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Por que @analyst é o elo entre @sheldon e @dev
|
|
141
|
+
|
|
142
|
+
Quando @sheldon cria um plano externo, **@analyst é obrigatório** antes de @dev para projetos SMALL/MEDIUM. O motivo:
|
|
143
|
+
|
|
144
|
+
- O manifest do Sheldon define **o quê** (fases, escopo, sequência)
|
|
145
|
+
- O @analyst produz **como** (entidades concretas, campos, regras de negócio com IDs, ACs verificáveis)
|
|
146
|
+
- O @dev precisa de `requirements-{slug}.md` e `spec-{slug}.md` para implementar com qualidade — sem eles, há uma hard constraint no próprio agente: `NEVER write production code for SMALL/MEDIUM projects without approved spec artifacts`
|
|
147
|
+
|
|
148
|
+
Se você pular @analyst e ir direto para @dev com um plano do Sheldon, @dev entende a estrutura do plano via `manifest.md`, mas vai parar e avisar que faltam os artefatos de spec.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Arquivos que @dev pode ler — universo completo
|
|
153
|
+
|
|
154
|
+
Esta é a lista completa de arquivos que @dev pode consultar em qualquer sessão. Na prática, ele carrega apenas o subconjunto necessário para o step atual:
|
|
155
|
+
|
|
156
|
+
| Arquivo | Quando carregar |
|
|
157
|
+
|---|---|
|
|
158
|
+
| `project.context.md` | Sempre |
|
|
159
|
+
| `dev-state.md` | Sempre (se existir — define o restante) |
|
|
160
|
+
| `features.md` | Cold start apenas |
|
|
161
|
+
| `spec-{slug}.md` | Feature ativa |
|
|
162
|
+
| `implementation-plan-{slug}.md` | Se plano existe |
|
|
163
|
+
| `.aioson/plans/{slug}/manifest.md` + fase atual | Se plano Sheldon existe |
|
|
164
|
+
| `skeleton-system.md` | Só ao navegar estrutura do projeto |
|
|
165
|
+
| `design-doc.md` | Só se listado no plano |
|
|
166
|
+
| `readiness.md` | Só na primeira sessão de uma feature nova |
|
|
167
|
+
| `architecture.md` | SMALL/MEDIUM, só se listado no plano |
|
|
168
|
+
| `discovery.md` | SMALL/MEDIUM, só se listado no plano |
|
|
169
|
+
| `prd-{slug}.md` | Só na primeira sessão de uma feature nova |
|
|
170
|
+
| `ui-spec.md` | Só ao implementar componentes de UI |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Veja também
|
|
175
|
+
|
|
176
|
+
- [Guia de Agentes](./agentes.md) — quando usar cada agente e o que ele entrega
|
|
177
|
+
- [Cenários completos com exemplos práticos](./cenarios.md)
|
|
178
|
+
- [Recuperação de sessão](./recuperacao-de-sessao.md)
|
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
# Hooks & Session Guard
|
|
2
|
+
|
|
3
|
+
> Visibilidade automática no dashboard sem nenhuma chamada manual ao CLI durante a sessão.
|
|
4
|
+
|
|
5
|
+
Por padrão, o dashboard só vê o que o CLI registrou explicitamente. Com o sistema de hooks, cada vez que o agente escreve um arquivo, roda um comando ou termina a sessão, um evento é automaticamente gravado no SQLite — sem o agente precisar chamar `aioson` manualmente.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Como funciona
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Claude Code / Antigravity / Codex
|
|
13
|
+
└─ agente escreve src/cart.ts (PostToolUse: Write)
|
|
14
|
+
└─ hook dispara → aioson hooks:emit
|
|
15
|
+
└─ verifica se live session existe
|
|
16
|
+
└─ se não: auto-inicia sessão (session:guard ou auto-start inline)
|
|
17
|
+
└─ grava evento "artifact" no SQLite + events.ndjson
|
|
18
|
+
└─ dashboard atualiza em tempo real
|
|
19
|
+
|
|
20
|
+
└─ agente roda npm test (PostToolUse: Bash)
|
|
21
|
+
└─ hook dispara → aioson hooks:emit
|
|
22
|
+
└─ grava evento "step_done" no SQLite
|
|
23
|
+
|
|
24
|
+
└─ sessão termina (Stop / SessionEnd)
|
|
25
|
+
└─ hook dispara → aioson agent:done
|
|
26
|
+
└─ fecha a run, registra completion
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
O `session:guard` é opcional — o `hooks:emit` já inicia a sessão automaticamente na primeira chamada se não houver uma ativa.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Passo a passo: Claude Code
|
|
34
|
+
|
|
35
|
+
### 1. Instalar os hooks
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Instalar hooks para o agente dev (padrão)
|
|
39
|
+
aioson hooks:install . --agent=dev --tool=claude
|
|
40
|
+
|
|
41
|
+
# Para outro agente (ex: qa)
|
|
42
|
+
aioson hooks:install . --agent=qa --tool=claude
|
|
43
|
+
|
|
44
|
+
# Preview sem modificar nada
|
|
45
|
+
aioson hooks:install . --agent=dev --tool=claude --dry-run
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Saída:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Hooks Install — agent: @dev
|
|
52
|
+
──────────────────────────────────────────────────
|
|
53
|
+
✓ Claude Code — /home/user/.claude/settings.json
|
|
54
|
+
|
|
55
|
+
Hooks installed. From now on:
|
|
56
|
+
• Every file write/edit → logged as artifact event
|
|
57
|
+
• Every bash command → logged as step_done event
|
|
58
|
+
• Session end → logged as agent:done
|
|
59
|
+
|
|
60
|
+
To verify: aioson live:status . --agent=dev
|
|
61
|
+
To uninstall: aioson hooks:uninstall --tool=claude
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 2. O que é adicionado em `~/.claude/settings.json`
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"hooks": {
|
|
69
|
+
"PostToolUse": [
|
|
70
|
+
{
|
|
71
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
72
|
+
"hooks": [{
|
|
73
|
+
"type": "command",
|
|
74
|
+
"command": "aioson hooks:emit \"$PWD\" --agent=dev --source=claude 2>/dev/null || true"
|
|
75
|
+
}]
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"matcher": "Bash",
|
|
79
|
+
"hooks": [{
|
|
80
|
+
"type": "command",
|
|
81
|
+
"command": "aioson hooks:emit \"$PWD\" --agent=dev --source=claude 2>/dev/null || true"
|
|
82
|
+
}]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"matcher": "Task|TodoWrite",
|
|
86
|
+
"hooks": [{
|
|
87
|
+
"type": "command",
|
|
88
|
+
"command": "aioson hooks:emit \"$PWD\" --agent=dev --source=claude 2>/dev/null || true"
|
|
89
|
+
}]
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"Stop": [
|
|
93
|
+
{
|
|
94
|
+
"hooks": [{
|
|
95
|
+
"type": "command",
|
|
96
|
+
"command": "aioson agent:done \"$PWD\" --agent=dev --summary=\"Session ended via dev hook\" 2>/dev/null || true"
|
|
97
|
+
}]
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
O `2>/dev/null || true` garante que o hook nunca bloqueia o agente mesmo que o AIOSON falhe.
|
|
105
|
+
|
|
106
|
+
### 3. Verificar que está funcionando
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Abrir Claude Code e fazer qualquer edição de arquivo
|
|
110
|
+
# Depois, checar o status:
|
|
111
|
+
aioson live:status . --agent=dev
|
|
112
|
+
|
|
113
|
+
# Ou ver eventos recentes:
|
|
114
|
+
aioson runtime:status . --json | jq '.recentEvents'
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 4. Remover os hooks
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
aioson hooks:uninstall . --agent=dev --tool=claude
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Passo a passo: Antigravity (Google)
|
|
126
|
+
|
|
127
|
+
Antigravity tem um sistema de hooks mais rico — inclui `SessionStart` e `SessionEnd`, o que elimina a necessidade do `session:guard`.
|
|
128
|
+
|
|
129
|
+
### 1. Instalar os hooks
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
aioson hooks:install . --agent=dev --tool=antigravity
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Saída:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
Hooks Install — agent: @dev
|
|
139
|
+
──────────────────────────────────────────────────
|
|
140
|
+
✓ Antigravity global — /home/user/.gemini/antigravity/hooks.json
|
|
141
|
+
✓ Antigravity workspace — .agents/hooks.json
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### 2. O que é configurado
|
|
145
|
+
|
|
146
|
+
**Global** (`~/.gemini/antigravity/hooks.json`):
|
|
147
|
+
|
|
148
|
+
```json
|
|
149
|
+
{
|
|
150
|
+
"hooks": {
|
|
151
|
+
"SessionStart": [{
|
|
152
|
+
"type": "command",
|
|
153
|
+
"command": "aioson live:start \"$PWD\" --agent=dev --tool=antigravity --no-launch 2>/dev/null || true"
|
|
154
|
+
}],
|
|
155
|
+
"PostToolUse": [
|
|
156
|
+
{
|
|
157
|
+
"matcher": "Write|Edit|MultiEdit",
|
|
158
|
+
"hooks": [{ "type": "command", "command": "aioson hooks:emit \"$PWD\" --agent=dev --source=antigravity 2>/dev/null || true" }]
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"matcher": "Bash",
|
|
162
|
+
"hooks": [{ "type": "command", "command": "aioson hooks:emit \"$PWD\" --agent=dev --source=antigravity 2>/dev/null || true" }]
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"SessionEnd": [{ "type": "command", "command": "aioson agent:done \"$PWD\" --agent=dev --summary=\"Session ended via dev hook\" 2>/dev/null || true" }],
|
|
166
|
+
"Stop": [{ "type": "command", "command": "aioson agent:done \"$PWD\" --agent=dev --summary=\"Session ended via dev hook\" 2>/dev/null || true" }]
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Workspace** (`.agents/hooks.json` na pasta do projeto — sobrescreve global):
|
|
172
|
+
|
|
173
|
+
Mesma estrutura, mas scoped para o projeto. Útil quando o agente varia por projeto.
|
|
174
|
+
|
|
175
|
+
### 3. Diferença do Claude Code
|
|
176
|
+
|
|
177
|
+
| Feature | Claude Code | Antigravity |
|
|
178
|
+
|---|---|---|
|
|
179
|
+
| `SessionStart` hook | ✗ Não tem | ✓ Disponível |
|
|
180
|
+
| `SessionEnd` hook | ✗ Apenas `Stop` | ✓ Disponível |
|
|
181
|
+
| `SubagentStop` hook | ✗ Não tem | ✓ Disponível |
|
|
182
|
+
| Config location | `~/.claude/settings.json` | `~/.gemini/antigravity/` + `.agents/` |
|
|
183
|
+
| Workspace override | `~/.claude/projects/` | `.agents/hooks.json` |
|
|
184
|
+
|
|
185
|
+
Com Antigravity, a sessão é aberta no `SessionStart` (limpo) e fechada no `SessionEnd` (limpo). Com Claude Code, o `hooks:emit` auto-inicia a sessão na primeira tool call.
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Passo a passo: Codex (OpenAI)
|
|
190
|
+
|
|
191
|
+
Codex CLI **não tem sistema de hooks nativo**. A solução é um wrapper shell que envolve o comando `codex`.
|
|
192
|
+
|
|
193
|
+
### 1. Gerar o wrapper
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
aioson hooks:install . --agent=dev --tool=codex
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Saída:
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
Hooks Install — agent: @dev
|
|
203
|
+
──────────────────────────────────────────────────
|
|
204
|
+
✓ Codex wrapper — /home/user/.codex/aioson-wrapper.sh
|
|
205
|
+
⚠ Codex has no native hooks. Add this to ~/.bashrc:
|
|
206
|
+
alias codex='/home/user/.codex/aioson-wrapper.sh'
|
|
207
|
+
Or rename: mv $(which codex) $(which codex)-bin
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 2. Ativar o wrapper
|
|
211
|
+
|
|
212
|
+
**Opção A — Alias (recomendado):**
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
echo "alias codex='~/.codex/aioson-wrapper.sh'" >> ~/.bashrc
|
|
216
|
+
source ~/.bashrc
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**Opção B — Rename:**
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
mv $(which codex) $(which codex)-bin
|
|
223
|
+
cp ~/.codex/aioson-wrapper.sh $(which codex)-bin/../codex
|
|
224
|
+
chmod +x $(which codex)-bin/../codex
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### 3. O que o wrapper faz
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
# Quando você roda: codex "implemente o cart"
|
|
231
|
+
# O wrapper executa:
|
|
232
|
+
aioson live:start "$PWD" --agent=dev --tool=codex --no-launch # abre sessão
|
|
233
|
+
codex-bin "implemente o cart" # roda Codex
|
|
234
|
+
aioson agent:done "$PWD" --agent=dev --summary="..." # fecha sessão
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**Limitação:** sem hooks nativos, não há eventos intermediários (só abertura e fechamento de sessão). Para eventos durante a sessão com Codex, use `devlog:watch` em paralelo.
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Instalar para todos os tools detectados
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
# Detecta automaticamente o que está instalado e configura tudo
|
|
245
|
+
aioson hooks:install . --agent=dev --tool=all
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Saída se Claude Code e Antigravity estiverem instalados:
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
Detected tools: claude, antigravity
|
|
252
|
+
Hooks Install — agent: @dev
|
|
253
|
+
──────────────────────────────────────────────────
|
|
254
|
+
✓ Claude Code — /home/user/.claude/settings.json
|
|
255
|
+
✓ Antigravity global — /home/user/.gemini/antigravity/hooks.json
|
|
256
|
+
✓ Antigravity workspace — .agents/hooks.json
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## session:guard — supervisor de sessão
|
|
262
|
+
|
|
263
|
+
O `session:guard` é um processo de fundo que garante que uma live session esteja sempre ativa. Útil quando você quer que a sessão apareça no dashboard **antes** da primeira tool call.
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
# Iniciar em background
|
|
267
|
+
aioson session:guard . --agent=dev --tool=claude &
|
|
268
|
+
|
|
269
|
+
# Com idle timeout customizado (padrão: 60 minutos)
|
|
270
|
+
aioson session:guard . --agent=dev --tool=claude --idle-minutes=30 &
|
|
271
|
+
|
|
272
|
+
# Verificação única (sem loop — útil para scripts)
|
|
273
|
+
aioson session:guard . --agent=dev --tool=claude --once
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Saída durante operação:
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
[session:guard] Watching: /meu-projeto
|
|
280
|
+
[session:guard] Agent: @dev | Tool: claude | Idle timeout: 60m
|
|
281
|
+
[session:guard] Press Ctrl+C to stop.
|
|
282
|
+
[session:guard] Session started: guard-dev-1711234567 (run: dev-run-xxx)
|
|
283
|
+
... (silencioso até próximo evento)
|
|
284
|
+
[session:guard] Idle for 62m — closing session
|
|
285
|
+
[session:guard] Session closed: dev-run-xxx (Idle for 62 minutes)
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Para parar: `Ctrl+C` ou `kill %1`.
|
|
289
|
+
|
|
290
|
+
### Quando usar session:guard
|
|
291
|
+
|
|
292
|
+
| Cenário | Recomendação |
|
|
293
|
+
|---|---|
|
|
294
|
+
| Usando Claude Code com hooks instalados | `session:guard` é opcional — `hooks:emit` auto-inicia |
|
|
295
|
+
| Quer que a sessão apareça no dashboard antes de começar | Use `session:guard --once` antes de abrir o Claude Code |
|
|
296
|
+
| Sessões longas com pausas > 60 min | Use `session:guard --idle-minutes=120` |
|
|
297
|
+
| Antigravity | Não precisa — `SessionStart` hook cuida disso |
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## hooks:emit — o que cada tool registra
|
|
302
|
+
|
|
303
|
+
| Tool call | Tipo de evento | Exemplo de mensagem |
|
|
304
|
+
|---|---|---|
|
|
305
|
+
| `Write` (criar arquivo) | `artifact` | `Write: cart.ts` |
|
|
306
|
+
| `Edit` / `MultiEdit` | `artifact` | `Edit: src/cart.ts` |
|
|
307
|
+
| `Bash` (rodar comando) | `step_done` | `$ npm test -- --filter=cart` |
|
|
308
|
+
| `Task` (sub-agente) | `note` | `Task launched` |
|
|
309
|
+
| `TodoWrite` | `note` | `Task list updated` |
|
|
310
|
+
| `Read`, `Glob`, `Grep` | *(ignorado)* | Ferramentas somente-leitura não geram eventos |
|
|
311
|
+
|
|
312
|
+
### Emissão manual durante sessão
|
|
313
|
+
|
|
314
|
+
Mesmo com hooks instalados, você pode emitir eventos adicionais manualmente:
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
# Checkpoint de plano com progresso
|
|
318
|
+
aioson runtime:emit . --agent=dev \
|
|
319
|
+
--type=plan_checkpoint \
|
|
320
|
+
--plan-step=FASE-1 \
|
|
321
|
+
--summary="Migration criada e testada" \
|
|
322
|
+
--progress-pct=40
|
|
323
|
+
|
|
324
|
+
# Blocker
|
|
325
|
+
aioson runtime:emit . --agent=dev \
|
|
326
|
+
--type=task_blocked \
|
|
327
|
+
--summary="Aguardando schema de pagamentos"
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Fluxo completo recomendado
|
|
333
|
+
|
|
334
|
+
### Setup inicial (uma vez)
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
# Instalar hooks para a ferramenta que você usa
|
|
338
|
+
aioson hooks:install . --agent=dev --tool=claude # ou --tool=antigravity ou --tool=all
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### Início de cada sessão de trabalho
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
# Opcional — garante sessão visível antes da primeira tool call
|
|
345
|
+
aioson session:guard . --agent=dev --tool=claude --once
|
|
346
|
+
|
|
347
|
+
# Abrir Claude Code / Antigravity normalmente
|
|
348
|
+
claude # ou agy (Antigravity)
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### Durante a sessão
|
|
352
|
+
|
|
353
|
+
Nada precisa ser feito — os hooks capturam automaticamente:
|
|
354
|
+
- Cada arquivo criado/editado → evento `artifact`
|
|
355
|
+
- Cada comando bash → evento `step_done`
|
|
356
|
+
- Tarefas no TodoWrite → evento `note`
|
|
357
|
+
|
|
358
|
+
### Fim da sessão
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
# Verificar o que foi registrado
|
|
362
|
+
aioson live:status . --agent=dev
|
|
363
|
+
|
|
364
|
+
# Acompanhar no dashboard
|
|
365
|
+
# abrir o aioson-dashboard e navegar até o projeto
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
## Verificação e diagnóstico
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
# Ver se a sessão está ativa
|
|
374
|
+
aioson live:status . --agent=dev
|
|
375
|
+
|
|
376
|
+
# Ver últimos eventos registrados
|
|
377
|
+
aioson runtime:status . --json | jq '.recentEvents[:5]'
|
|
378
|
+
|
|
379
|
+
# Ver se os hooks estão configurados (inspecionar settings.json)
|
|
380
|
+
cat ~/.claude/settings.json | jq '.hooks'
|
|
381
|
+
|
|
382
|
+
# Testar manualmente o hooks:emit (simula uma tool call Write)
|
|
383
|
+
echo '{"tool_name":"Write","tool_input":{"file_path":"src/test.ts"},"session_id":"test-123"}' | \
|
|
384
|
+
aioson hooks:emit . --agent=dev --source=claude
|
|
385
|
+
|
|
386
|
+
# Ver se o evento chegou
|
|
387
|
+
aioson runtime:status . --json | jq '.recentEvents[0]'
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
## Troubleshooting
|
|
393
|
+
|
|
394
|
+
### "Nenhum evento aparece no dashboard"
|
|
395
|
+
|
|
396
|
+
1. Verificar se os hooks estão configurados: `cat ~/.claude/settings.json | jq '.hooks'`
|
|
397
|
+
2. Verificar se `aioson` está no PATH: `which aioson`
|
|
398
|
+
3. Testar manualmente: `aioson hooks:emit . --agent=dev --source=claude` (sem stdin — deve retornar `{ok:true,skipped:true}`)
|
|
399
|
+
|
|
400
|
+
### "Session not found quando rodo hooks:emit"
|
|
401
|
+
|
|
402
|
+
O `hooks:emit` cria a sessão automaticamente na primeira chamada. Se isso não está acontecendo:
|
|
403
|
+
|
|
404
|
+
```bash
|
|
405
|
+
# Verificar se existe banco SQLite
|
|
406
|
+
ls .aioson/runtime/aios.sqlite
|
|
407
|
+
|
|
408
|
+
# Se não existe, inicializar
|
|
409
|
+
aioson runtime:init .
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### "Hook está bloqueando o Claude Code"
|
|
413
|
+
|
|
414
|
+
O hook usa `2>/dev/null || true` — nunca deve bloquear. Se estiver bloqueando:
|
|
415
|
+
|
|
416
|
+
```bash
|
|
417
|
+
# Verificar se o hooks:emit está travando
|
|
418
|
+
time echo '{}' | aioson hooks:emit . --agent=dev --source=claude
|
|
419
|
+
# Deve completar em < 200ms
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### "Quero hooks só para o projeto atual, não global"
|
|
423
|
+
|
|
424
|
+
Para Claude Code, a configuração é sempre global (`~/.claude/settings.json`). Para limitar a um projeto específico, adicione uma condição no hook command:
|
|
425
|
+
|
|
426
|
+
```bash
|
|
427
|
+
# Hook condicional: só emite se estiver na pasta do projeto
|
|
428
|
+
[ "$PWD" = "/caminho/do/projeto" ] && aioson hooks:emit "$PWD" --agent=dev --source=claude 2>/dev/null; true
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
Para Antigravity, use `.agents/hooks.json` na pasta do projeto em vez do global.
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
## Referência rápida
|
|
436
|
+
|
|
437
|
+
```bash
|
|
438
|
+
# Instalar hooks
|
|
439
|
+
aioson hooks:install . --agent=dev --tool=claude
|
|
440
|
+
aioson hooks:install . --agent=dev --tool=antigravity
|
|
441
|
+
aioson hooks:install . --agent=dev --tool=all
|
|
442
|
+
|
|
443
|
+
# Remover hooks
|
|
444
|
+
aioson hooks:uninstall . --agent=dev --tool=claude
|
|
445
|
+
|
|
446
|
+
# Supervisor de sessão
|
|
447
|
+
aioson session:guard . --agent=dev --tool=claude &
|
|
448
|
+
aioson session:guard . --agent=dev --tool=claude --once
|
|
449
|
+
aioson session:guard . --agent=dev --tool=claude --idle-minutes=30 &
|
|
450
|
+
|
|
451
|
+
# Emissão manual (chamada pelo hook — raramente precisa chamar direto)
|
|
452
|
+
echo '{"tool_name":"Write","tool_input":{"file_path":"src/foo.ts"}}' | \
|
|
453
|
+
aioson hooks:emit . --agent=dev --source=claude
|
|
454
|
+
```
|