@jaimevalasek/aioson 1.4.0 → 1.5.1

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.
Files changed (199) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/LICENSE +661 -21
  3. package/README.md +3 -1
  4. package/docs/en/squad-dashboard.md +372 -0
  5. package/docs/openclaw-bridge.md +308 -0
  6. package/docs/pt/agentes.md +124 -10
  7. package/docs/pt/cenarios.md +46 -2
  8. package/docs/pt/comandos-cli.md +60 -1
  9. package/docs/pt/inicio-rapido.md +18 -2
  10. package/docs/pt/squad-dashboard.md +373 -0
  11. package/docs/testing/genome-2.0-matrix.md +5 -5
  12. package/docs/testing/genome-2.0-rollout.md +9 -9
  13. package/package.json +2 -2
  14. package/src/backup-local.js +74 -0
  15. package/src/cli.js +98 -0
  16. package/src/commands/backup-local-cmd.js +25 -0
  17. package/src/commands/runtime.js +242 -0
  18. package/src/commands/setup-context.js +7 -2
  19. package/src/commands/squad-daemon.js +209 -0
  20. package/src/commands/squad-dashboard.js +39 -0
  21. package/src/commands/squad-deploy.js +64 -0
  22. package/src/commands/squad-doctor.js +52 -0
  23. package/src/commands/squad-mcp.js +270 -0
  24. package/src/commands/squad-processes.js +56 -0
  25. package/src/commands/squad-recovery.js +42 -0
  26. package/src/commands/squad-roi.js +291 -0
  27. package/src/commands/squad-score.js +250 -0
  28. package/src/commands/squad-status.js +37 -1
  29. package/src/commands/squad-validate.js +62 -1
  30. package/src/commands/squad-webhook.js +160 -0
  31. package/src/commands/squad-worker.js +191 -0
  32. package/src/commands/squad-worktrees.js +75 -0
  33. package/src/commands/web-map.js +70 -0
  34. package/src/commands/web-scrape.js +71 -0
  35. package/src/constants.js +8 -0
  36. package/src/context-writer.js +45 -1
  37. package/src/i18n/messages/en.js +127 -1
  38. package/src/i18n/messages/es.js +117 -0
  39. package/src/i18n/messages/fr.js +117 -0
  40. package/src/i18n/messages/pt-BR.js +126 -1
  41. package/src/lib/webhook-server.js +328 -0
  42. package/src/mcp-connectors/registry.js +602 -0
  43. package/src/runtime-store.js +259 -2
  44. package/src/squad/external-session.js +180 -0
  45. package/src/squad/inter-squad.js +74 -0
  46. package/src/squad/recovery-context.js +201 -0
  47. package/src/squad/worktree-manager.js +114 -0
  48. package/src/squad-daemon.js +490 -0
  49. package/src/squad-dashboard/api.js +223 -0
  50. package/src/squad-dashboard/attachment-handler.js +93 -0
  51. package/src/squad-dashboard/context-monitor.js +157 -0
  52. package/src/squad-dashboard/execution-logs.js +115 -0
  53. package/src/squad-dashboard/hunk-review.js +209 -0
  54. package/src/squad-dashboard/metrics.js +133 -0
  55. package/src/squad-dashboard/process-monitor.js +125 -0
  56. package/src/squad-dashboard/renderer.js +858 -0
  57. package/src/squad-dashboard/server.js +232 -0
  58. package/src/squad-dashboard/styles.js +525 -0
  59. package/src/squad-dashboard/token-tracker.js +99 -0
  60. package/src/web.js +284 -0
  61. package/src/worker-runner.js +339 -0
  62. package/template/.aioson/agents/analyst.md +4 -0
  63. package/template/.aioson/agents/architect.md +4 -0
  64. package/template/.aioson/agents/dev.md +120 -11
  65. package/template/.aioson/agents/deyvin.md +8 -0
  66. package/template/.aioson/agents/neo.md +152 -0
  67. package/template/.aioson/agents/orache.md +17 -0
  68. package/template/.aioson/agents/orchestrator.md +26 -0
  69. package/template/.aioson/agents/product.md +60 -12
  70. package/template/.aioson/agents/qa.md +1 -0
  71. package/template/.aioson/agents/setup.md +63 -19
  72. package/template/.aioson/agents/sheldon.md +603 -0
  73. package/template/.aioson/agents/squad.md +191 -0
  74. package/template/.aioson/agents/tester.md +254 -0
  75. package/template/.aioson/agents/ux-ui.md +12 -0
  76. package/template/.aioson/config.md +6 -0
  77. package/template/.aioson/locales/en/agents/analyst.md +8 -0
  78. package/template/.aioson/locales/en/agents/architect.md +8 -0
  79. package/template/.aioson/locales/en/agents/dev.md +66 -7
  80. package/template/.aioson/locales/en/agents/deyvin.md +8 -0
  81. package/template/.aioson/locales/en/agents/neo.md +8 -0
  82. package/template/.aioson/locales/en/agents/orchestrator.md +26 -0
  83. package/template/.aioson/locales/en/agents/qa.md +49 -0
  84. package/template/.aioson/locales/en/agents/setup.md +2 -1
  85. package/template/.aioson/locales/en/agents/sheldon.md +340 -0
  86. package/template/.aioson/locales/en/agents/ux-ui.md +8 -0
  87. package/template/.aioson/locales/es/agents/analyst.md +8 -0
  88. package/template/.aioson/locales/es/agents/architect.md +8 -0
  89. package/template/.aioson/locales/es/agents/dev.md +66 -7
  90. package/template/.aioson/locales/es/agents/deyvin.md +8 -0
  91. package/template/.aioson/locales/es/agents/neo.md +48 -0
  92. package/template/.aioson/locales/es/agents/orchestrator.md +26 -0
  93. package/template/.aioson/locales/es/agents/qa.md +26 -0
  94. package/template/.aioson/locales/es/agents/setup.md +2 -1
  95. package/template/.aioson/locales/es/agents/sheldon.md +192 -0
  96. package/template/.aioson/locales/es/agents/squad.md +63 -0
  97. package/template/.aioson/locales/es/agents/ux-ui.md +8 -0
  98. package/template/.aioson/locales/fr/agents/analyst.md +8 -0
  99. package/template/.aioson/locales/fr/agents/architect.md +8 -0
  100. package/template/.aioson/locales/fr/agents/dev.md +66 -7
  101. package/template/.aioson/locales/fr/agents/deyvin.md +8 -0
  102. package/template/.aioson/locales/fr/agents/neo.md +48 -0
  103. package/template/.aioson/locales/fr/agents/orchestrator.md +26 -0
  104. package/template/.aioson/locales/fr/agents/qa.md +26 -0
  105. package/template/.aioson/locales/fr/agents/setup.md +2 -1
  106. package/template/.aioson/locales/fr/agents/sheldon.md +192 -0
  107. package/template/.aioson/locales/fr/agents/squad.md +63 -0
  108. package/template/.aioson/locales/fr/agents/ux-ui.md +8 -0
  109. package/template/.aioson/locales/pt-BR/agents/analyst.md +19 -0
  110. package/template/.aioson/locales/pt-BR/agents/architect.md +19 -0
  111. package/template/.aioson/locales/pt-BR/agents/dev.md +75 -12
  112. package/template/.aioson/locales/pt-BR/agents/deyvin.md +8 -0
  113. package/template/.aioson/locales/pt-BR/agents/neo.md +147 -0
  114. package/template/.aioson/locales/pt-BR/agents/orchestrator.md +26 -0
  115. package/template/.aioson/locales/pt-BR/agents/product.md +8 -3
  116. package/template/.aioson/locales/pt-BR/agents/qa.md +60 -0
  117. package/template/.aioson/locales/pt-BR/agents/setup.md +2 -1
  118. package/template/.aioson/locales/pt-BR/agents/sheldon.md +192 -0
  119. package/template/.aioson/locales/pt-BR/agents/squad.md +105 -0
  120. package/template/.aioson/locales/pt-BR/agents/ux-ui.md +8 -0
  121. package/template/.aioson/schemas/squad-blueprint.schema.json +21 -0
  122. package/template/.aioson/schemas/squad-manifest.schema.json +178 -1
  123. package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +205 -0
  124. package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -0
  125. package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -0
  126. package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -0
  127. package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -0
  128. package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -0
  129. package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -0
  130. package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -0
  131. package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +210 -0
  132. package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -0
  133. package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -0
  134. package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -0
  135. package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -0
  136. package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -0
  137. package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -0
  138. package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -0
  139. package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +55 -9
  140. package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -0
  141. package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +1 -1
  142. package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +100 -0
  143. package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +43 -9
  144. package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +40 -0
  145. package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +1 -1
  146. package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +99 -12
  147. package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +209 -0
  148. package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -0
  149. package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -0
  150. package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -0
  151. package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -0
  152. package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -0
  153. package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -0
  154. package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -0
  155. package/template/.aioson/skills/premium-visual-design/SKILL.md +83 -0
  156. package/template/.aioson/skills/premium-visual-design/components/agent-badge.md +92 -0
  157. package/template/.aioson/skills/premium-visual-design/components/dependency-node.md +102 -0
  158. package/template/.aioson/skills/premium-visual-design/components/mention-autocomplete.md +136 -0
  159. package/template/.aioson/skills/premium-visual-design/components/notification-center.md +136 -0
  160. package/template/.aioson/skills/premium-visual-design/components/review-action-bar.md +188 -0
  161. package/template/.aioson/skills/premium-visual-design/components/team-switcher.md +131 -0
  162. package/template/.aioson/skills/premium-visual-design/patterns/agent-message-thread.md +198 -0
  163. package/template/.aioson/skills/premium-visual-design/patterns/notification-panel.md +275 -0
  164. package/template/.aioson/skills/premium-visual-design/patterns/review-workflow-ui.md +234 -0
  165. package/template/.aioson/skills/premium-visual-design/patterns/task-dependency-graph.md +147 -0
  166. package/template/.aioson/skills/premium-visual-design/tokens/status-extended.md +142 -0
  167. package/template/.aioson/skills/squad/formats/catalog.json +15 -0
  168. package/template/.aioson/skills/squad/formats/content/blog-post.md +47 -0
  169. package/template/.aioson/skills/squad/formats/content/newsletter.md +47 -0
  170. package/template/.aioson/skills/squad/formats/creative/podcast-script.md +43 -0
  171. package/template/.aioson/skills/squad/formats/creative/video-script.md +41 -0
  172. package/template/.aioson/skills/squad/formats/social/instagram-feed.md +42 -0
  173. package/template/.aioson/skills/squad/formats/social/linkedin-post.md +42 -0
  174. package/template/.aioson/skills/squad/formats/social/tiktok.md +39 -0
  175. package/template/.aioson/skills/squad/formats/social/twitter-thread.md +39 -0
  176. package/template/.aioson/skills/squad/formats/social/youtube-long.md +47 -0
  177. package/template/.aioson/skills/squad/formats/social/youtube-shorts.md +39 -0
  178. package/template/.aioson/skills/squad/patterns/multi-platform-pattern.md +108 -0
  179. package/template/.aioson/skills/squad/patterns/persona-based-pattern.md +98 -0
  180. package/template/.aioson/skills/squad/patterns/pipeline-pattern.md +106 -0
  181. package/template/.aioson/skills/squad/patterns/review-loop-pattern.md +81 -0
  182. package/template/.aioson/skills/squad/references/checklist-templates.md +122 -0
  183. package/template/.aioson/skills/squad/references/executor-archetypes.md +123 -0
  184. package/template/.aioson/skills/squad/references/workflow-templates.md +169 -0
  185. package/template/.aioson/skills/static/debugging-protocol.md +42 -0
  186. package/template/.aioson/skills/static/git-worktrees.md +36 -0
  187. package/template/.aioson/tasks/implementation-plan.md +19 -0
  188. package/template/.aioson/tasks/squad-design.md +28 -0
  189. package/template/.aioson/tasks/squad-profile.md +48 -0
  190. package/template/.aioson/tasks/squad-review.md +61 -0
  191. package/template/.aioson/tasks/squad-task-decompose.md +66 -0
  192. package/template/.claude/commands/aioson/agent/neo.md +5 -0
  193. package/template/.claude/commands/aioson/agent/tester.md +5 -0
  194. package/template/.gemini/GEMINI.md +1 -0
  195. package/template/.gemini/commands/aios-neo.toml +4 -0
  196. package/template/.gemini/commands/aios-tester.toml +6 -0
  197. package/template/AGENTS.md +3 -0
  198. package/template/CLAUDE.md +5 -2
  199. package/template/OPENCODE.md +2 -0
@@ -90,6 +90,7 @@ Regras do fluxo:
90
90
  **Quando usar:** Depois do `@setup` em projetos novos. Em features novas de projeto existente, pode entrar direto sem repetir `@setup`.
91
91
 
92
92
  **O que faz:**
93
+ - varre a raiz do projeto em busca de documentos de entrada (`plans/*.md`, `prds/*.md`) antes de iniciar a conversa
93
94
  - conduz a conversa de produto e gera o `PRD base`
94
95
  - registra visão, problema, usuários, escopo inicial e perguntas em aberto
95
96
  - detecta sinais visuais cedo e preserva a intenção no PRD
@@ -97,6 +98,21 @@ Regras do fluxo:
97
98
  - aponta o próximo agente do fluxo
98
99
  - em brownfield, usa `discovery.md` quando já existir e trata os artefatos locais do scan apenas como orientação estrutural, nunca como substituto do `@analyst`
99
100
 
101
+ **Documentos de kickoff (plans/ e prds/ na raiz):**
102
+
103
+ Você pode criar arquivos de entrada na raiz do projeto antes de ativar o `@product`:
104
+
105
+ ```
106
+ plans/minha-ideia.md ← notas, esboços, planos escritos por você
107
+ prds/visao-produto.md ← rascunhos de requisitos, referências
108
+ ```
109
+
110
+ O `@product` detecta esses arquivos automaticamente e pergunta se deve usá-los como fonte. Se sim, ele sintetiza o conteúdo e gera o PRD formal em `.aioson/context/`. Os arquivos originais nunca são modificados — você pode deletá-los depois que o PRD estiver gerado.
111
+
112
+ **Sinal de greenfield vs feature:**
113
+ - `plans/*.md` ou `prds/*.md` existem + `prd.md` ainda não existe → kickoff de projeto novo
114
+ - `plans/*.md` ou `prds/*.md` existem + `prd.md` já existe → nova feature ou refinamento
115
+
100
116
  **Como ativar:**
101
117
  ```
102
118
  /product
@@ -481,12 +497,25 @@ Depois disso, ela passa a ser parte real do pacote local da squad e deve ser con
481
497
  - Seguir as convenções nativas do framework do projeto
482
498
  - Verificar skills disponíveis em `.aioson/skills/static/` antes de implementar
483
499
 
500
+ **TDD Gate** — Antes de qualquer implementação de lógica de negócio, o `@dev` verifica o test runner configurado em `project.context.md`. Se não houver nenhum configurado, escaneia a raiz em busca de arquivos de configuração conhecidos (`pest.xml`, `vitest.config.*`, `pytest.ini`, `.rspec`, `foundry.toml`) e pergunta ao usuário se deseja configurar um antes de começar.
501
+
502
+ | Classificação | Mandato |
503
+ |---|---|
504
+ | MICRO | Escrever o teste junto com a implementação — obrigatório antes do commit |
505
+ | SMALL | Escrever o teste com falha (RED) **antes** de qualquer código de implementação |
506
+ | MEDIUM | Igual ao SMALL. Anotar o teste no checkpoint do plano de implementação |
507
+
508
+ **Exceções ao TDD** (nenhum teste exigido): arquivos de configuração, migrations sem regras de negócio, conteúdo estático, scaffolding de UI sem lógica de estado.
509
+
510
+ Se o usuário pedir para pular o teste, o `@dev` resiste, explica, e só cede após insistência — nunca implementa lógica de negócio sem teste existindo primeiro.
511
+
484
512
  **Execução atômica** — O @dev trabalha em passos pequenos e validados, nunca implementa uma feature inteira de uma vez:
485
513
  1. Declara o próximo passo antes de escrever código
486
- 2. Implementa apenas aquele passo
487
- 3. Valida antes de avançar se houver dúvida, pergunta
488
- 4. Faz commit do passo funcional antes de seguir
489
- 5. Para e reporta se algo der errado — não continua em estado quebrado
514
+ 2. Escreve o teste com falha (RED) — o teste deve falhar antes de qualquer implementação
515
+ 3. Implementa apenas o suficiente para o teste passar (GREEN)
516
+ 4. Verifica que o teste passa o output completo, não um resumo
517
+ 5. Faz commit com mensagem semântica
518
+ 6. Repete para o próximo passo
490
519
 
491
520
  **Em projetos com Laravel especificamente:**
492
521
  - Form Requests para validação (nunca inline no controller)
@@ -505,7 +534,7 @@ Depois disso, ela passa a ser parte real do pacote local da squad e deve ser con
505
534
 
506
535
  **O que faz:**
507
536
  - Revisa o código implementado
508
- - Escreve testes unitários e de integração
537
+ - Escreve testes para achados Critical e High
509
538
  - Identifica casos de borda não cobertos
510
539
  - Valida se os critérios de aceite foram atendidos
511
540
  - usa `discovery.md` como fonte de regras e relacionamentos; se só existirem artefatos de scan, o fluxo correto ainda passa por `@analyst`
@@ -516,10 +545,92 @@ Depois disso, ela passa a ser parte real do pacote local da squad e deve ser con
516
545
  ```
517
546
 
518
547
  **Entrega:**
519
- - Suite de testes
520
- - Lista de problemas encontrados
548
+ - Lista de problemas encontrados por severidade
549
+ - Testes para achados críticos
521
550
  - Relatório de cobertura
522
551
 
552
+ > **@qa vs @tester** — O `@qa` é um revisor: lê o que foi implementado, aponta riscos e escreve testes pontuais para achados críticos. O `@tester` é um engenheiro de testes: parte de cobertura zero e constrói uma estratégia sistemática (inventário, mapa de risco, estratégia por camada). Use `@tester` quando a aplicação foi implementada sem testes adequados ou quando `@qa` identificar lacunas em 3+ módulos.
553
+
554
+ ---
555
+
556
+ ## @tester
557
+
558
+ **Quando usar:** Após `@dev`, quando a aplicação foi implementada sem testes adequados. Também em projetos legados ou quando `@qa` identificar cobertura insuficiente em múltiplos módulos.
559
+
560
+ **O que faz:**
561
+ - Produz um inventário completo de cobertura (`test-inventory.md`)
562
+ - Mapeia regras de negócio descobertas vs testes existentes, priorizando por risco
563
+ - Escolhe e documenta a estratégia de teste antes de escrever qualquer linha
564
+ - Escreve testes por módulo em ordem de prioridade, com commit atômico por módulo
565
+ - Gera relatório de cobertura antes vs depois
566
+
567
+ **Estratégias disponíveis:**
568
+
569
+ | Cenário | Estratégia |
570
+ |---|---|
571
+ | Código legado sem testes, precisa refatorar | Characterization Testing |
572
+ | App implementada, cobertura zero | Test Pyramid Bottom-up |
573
+ | Cobertura razoável, regras descobertas | Risk-first Gap Filling |
574
+ | Código crítico com edge cases complexos | Property-based Testing |
575
+ | APIs entre times | Contract Testing |
576
+ | Suspeita de testes fracos que sempre passam | Mutation Testing |
577
+
578
+ **Frameworks detectados automaticamente por stack:**
579
+
580
+ | Stack | Test Runner | Unit | Integration | E2E |
581
+ |---|---|---|---|---|
582
+ | Laravel | Pest PHP | Pest unit | Pest feature (HTTP) | Dusk/Playwright |
583
+ | Next.js | Vitest | Vitest + RTL | MSW + Vitest | Playwright |
584
+ | Django | pytest-django | pytest | pytest + client | Playwright |
585
+ | FastAPI | pytest + httpx | pytest | AsyncClient | — |
586
+ | Rails | RSpec | RSpec unit | Request specs | Capybara |
587
+ | Solidity | Foundry | forge unit | forge integration | — |
588
+
589
+ **Como ativar:**
590
+ ```
591
+ /tester
592
+ ```
593
+
594
+ **Entrega:**
595
+ - `.aioson/context/test-inventory.md` — mapa de cobertura por arquivo
596
+ - `.aioson/context/test-plan.md` — estratégia escolhida + cobertura antes/depois
597
+ - Testes escritos por módulo, commitados incrementalmente
598
+
599
+ **Restrições:**
600
+ - Nunca modifica código de produção
601
+ - Se encontrar um bug real: documenta em `test-plan.md` e para — não corrige silenciosamente
602
+ - Testes sem assertions são proibidos
603
+
604
+ ---
605
+
606
+ ## @sheldon
607
+
608
+ **Quando usar:** Após `@product`, antes de iniciar a cadeia de execução — para garantir que o PRD está completo, sem lacunas e pronto para gerar código correto.
609
+
610
+ **O que faz:**
611
+ - Detecta documentos de entrada na raiz (`plans/*.md`, `prds/*.md`) e oferece incorporá-los ao enriquecimento do PRD
612
+ - Analisa o PRD por prioridade de melhorias
613
+ - Decide entre enriquecimento in-place ou plano de fases externo
614
+ - Valida se o PRD está legível e implementável antes de ativar `@dev`
615
+
616
+ **Modos de operação:**
617
+
618
+ | Modo | Como ativar | O que faz |
619
+ |---|---|---|
620
+ | A — Enriquecimento (padrão) | `/sheldon` | Analisa o PRD alvo e sugere melhorias prioritárias |
621
+ | B — Revisão Global | `/sheldon` + "revisão geral" | Escaneia todos os PRDs e planos ativos |
622
+ | C — Validação Completa | `/sheldon` + "validar" ou "preparar para dev" | Auditoria completa + checklist final antes de codar |
623
+
624
+ **Como ativar:**
625
+ ```
626
+ /sheldon
627
+ ```
628
+
629
+ **Entrega:**
630
+ - PRD enriquecido in-place (Modo A)
631
+ - Relatório de status de todos os PRDs (Modo B)
632
+ - Checklist de validação + decisão go/no-go para implementação (Modo C)
633
+
523
634
  ---
524
635
 
525
636
  ## Resumo: fluxo por tamanho
@@ -532,15 +643,18 @@ Duração típica: minutos a horas. Sem análise, sem arquitetura formal.
532
643
 
533
644
  ### SMALL
534
645
  ```
535
- @setup → @product → @analyst → @architect → @ux-ui → @dev → @qa
646
+ @setup → @product → [@sheldon] → @analyst → @architect → @dev → @qa[@tester]
536
647
  ```
537
648
  Duração típica: horas a dias. Análise leve, estrutura clara.
538
649
 
539
650
  ### MEDIUM
540
651
  ```
541
- @setup → @product → @analyst → @architect → @ux-ui → @pm → @orchestrator → @dev → @qa
652
+ @setup → @product → [@sheldon] → @analyst → @architect → @ux-ui → @pm → @orchestrator → @dev → @qa → [@tester]
542
653
  ```
543
- Duração típica: dias a semanas. Análise completa, parallelismo, backlog formal.
654
+ Duração típica: dias a semanas. Análise completa, paralelismo, backlog formal.
655
+
656
+ `[@sheldon]` — opcional, recomendado antes de iniciar a cadeia de execução para validar o PRD.
657
+ `[@tester]` — opcional, recomendado quando a cobertura de testes for insuficiente após `@dev`.
544
658
 
545
659
  ---
546
660
 
@@ -124,6 +124,22 @@ Objetivo: gerar o PRD base antes de mapear pacientes, médicos, agendamentos e r
124
124
 
125
125
  ### Passo 4: @product — PRD base
126
126
 
127
+ **Atalho com documento de kickoff (opcional):**
128
+
129
+ Se você já tiver uma ideia esboçada, crie um arquivo de entrada antes de ativar o `@product`:
130
+
131
+ ```bash
132
+ # Crie plans/agendamentos.md com suas notas brutas:
133
+ # - quero que pacientes agendem consultas online
134
+ # - médico pode bloquear horários
135
+ # - notificação por email na confirmação
136
+ ```
137
+
138
+ Ao ativar `/product`, o agente detecta `plans/agendamentos.md` e pergunta:
139
+ > "Encontrei `plans/agendamentos.md`. Quer que eu use como fonte para o PRD?"
140
+
141
+ Se sim, ele sintetiza o conteúdo e gera o PRD formal. Você pode deletar o arquivo original depois.
142
+
127
143
  ```
128
144
  /product
129
145
  ```
@@ -260,7 +276,7 @@ tests/Feature/AppointmentTest.php
260
276
  - N+1: Eager loading em todos os índices (with('doctor.user', 'patient.user'))
261
277
  - Timezone: UTC no banco, conversão na camada de apresentação
262
278
 
263
- ### Passo 6: @dev — Implementação
279
+ ### Passo 6: @dev — Implementação com TDD Gate
264
280
 
265
281
  ```
266
282
  /dev
@@ -269,8 +285,32 @@ Implemente a feature de agendamentos primeiro.
269
285
  Comece pela migration, model, action e controller.
270
286
  ```
271
287
 
272
- **O @dev implementa seguindo as convenções:**
288
+ O `@dev` detecta o test runner (`pest.xml` encontrado → Pest PHP) e aplica o TDD Gate antes de implementar qualquer lógica de negócio:
273
289
 
290
+ **1. Escreve o teste com falha (RED):**
291
+ ```php
292
+ // tests/Feature/CreateAppointmentTest.php
293
+ it('throws exception on doctor schedule conflict', function () {
294
+ $doctor = Doctor::factory()->create();
295
+ $slot = now()->addDay()->setHour(10)->setMinute(0);
296
+
297
+ Appointment::factory()->create([
298
+ 'doctor_id' => $doctor->id,
299
+ 'date' => $slot,
300
+ 'status' => 'confirmed',
301
+ ]);
302
+
303
+ expect(fn () => (new CreateAppointmentAction)->execute([
304
+ 'doctor_id' => $doctor->id,
305
+ 'patient_id' => Patient::factory()->create()->id,
306
+ 'date' => $slot,
307
+ ]))->toThrow(AppointmentConflictException::class);
308
+ });
309
+ ```
310
+
311
+ Roda o teste → **falha** (RED confirmado). Só então implementa:
312
+
313
+ **2. Implementa o suficiente para passar (GREEN):**
274
314
  ```php
275
315
  // app/Actions/CreateAppointmentAction.php
276
316
  class CreateAppointmentAction
@@ -304,6 +344,8 @@ class CreateAppointmentAction
304
344
  }
305
345
  ```
306
346
 
347
+ Roda o teste → **passa** (GREEN). Commit. Próximo passo.
348
+
307
349
  ### Passo 7: @qa — Testes
308
350
 
309
351
  ```
@@ -318,6 +360,8 @@ Revise a CreateAppointmentAction e escreva os testes para:
318
360
 
319
361
  **O @qa entrega** `tests/Feature/AppointmentTest.php` com todos os casos.
320
362
 
363
+ > **Quando usar @tester em vez de @qa:** Se após o `@dev` a cobertura estiver em zero ou muito baixa, ative `/tester` em vez de `/qa`. O `@tester` começa por um inventário completo (`test-inventory.md`), mapeia os riscos, escolhe a estratégia e escreve testes em ordem de prioridade — Auth/Authorization > Business rules > Data integrity > UI. O `@qa` é um revisor pontual; o `@tester` é um engenheiro de testes que parte do zero.
364
+
321
365
  ---
322
366
 
323
367
  ## Cenário 3 — SaaS multi-tenant (MEDIUM)
@@ -77,6 +77,13 @@
77
77
  | `qa:scan` | Faz crawl automático do app e procura riscos | Quando quer inspeção ampla de rotas |
78
78
  | `qa:report` | Reexibe ou exporta o último relatório | Quando quer consultar ou regenerar o relatório |
79
79
 
80
+ ### Web nativa
81
+
82
+ | Comando | O que faz | Quando usar |
83
+ |---|---|---|
84
+ | `web:map` | Descobre URLs internas de um site por crawl simples | Quando quer mapear docs, páginas públicas ou áreas navegáveis sem serviço externo |
85
+ | `web:scrape` | Extrai conteúdo principal de uma página em markdown, text, html ou links | Quando quer transformar HTML em contexto utilizável para agentes |
86
+
80
87
  ### Genomes e squads
81
88
 
82
89
  | Comando | O que faz | Quando usar |
@@ -90,6 +97,13 @@
90
97
  | `squad:export` | Exporta uma squad local para snapshot/entrega | Quando quer empacotar a squad |
91
98
  | `squad:pipeline` | Lista, inspeciona ou acompanha pipelines declarados na squad | Quando a squad define pipelines reutilizáveis |
92
99
  | `squad:agent-create` | Cria agente customizado em `.aioson/my-agents/` ou dentro de uma squad | Quando quer criar agente personalizado. Veja [Agentes Customizados](./agentes-customizados.md) |
100
+ | `squad:dashboard` | Painel web local para monitorar squads em tempo real | Quando quer ver agentes rodando, contexto, tokens e métricas. Veja [Squad Dashboard](./squad-dashboard.md) |
101
+ | `squad:worker` | Executa, lista e testa workers não-LLM de uma squad | Quando quer rodar workers determinísticos manualmente |
102
+ | `squad:daemon` | Inicia/para/monitora daemon de workers automáticos | Quando quer execução 24/7 com cron e webhooks |
103
+ | `squad:mcp` | Configura e testa conectores MCP (WhatsApp, Telegram, etc.) | Quando quer integrar canais reais à squad |
104
+ | `squad:roi` | Define modelo de precificação e registra métricas de resultado | Quando quer calcular e reportar ROI da squad |
105
+ | `squad:processes` | Lista e encerra processos ativos de uma squad | Quando quer inspecionar ou parar agentes sem usar o dashboard |
106
+ | `squad:recovery` | Gera contexto de recovery para reinjecting após compact | Quando um agente perdeu contexto após compactação |
93
107
  | `output-strategy:export` | Exporta a estratégia de output (webhooks, delivery) de uma squad | Quando quer copiar configuração para outra squad ou documentar |
94
108
  | `output-strategy:import` | Importa estratégia de output de um arquivo ou outra squad | Quando quer replicar webhooks/delivery entre squads |
95
109
  | `deliver` | Dispara delivery manual de conteúdo para webhooks configurados | Quando quer reenviar conteúdo ou testar webhooks |
@@ -519,7 +533,52 @@ Use:
519
533
  - `squad:export` para empacotar a squad
520
534
  - `squad:pipeline` para inspecionar pipelines definidos dentro da squad
521
535
 
522
- ### 18. Reparar bindings de genome em squads
536
+ ### 18. Monitorar squads com o Squad Dashboard
537
+
538
+ ```bash
539
+ # Levantar o dashboard na raiz do projeto
540
+ aioson squad:dashboard
541
+
542
+ # Porta customizada
543
+ aioson squad:dashboard --port=4200
544
+
545
+ # Abrir direto em um squad específico
546
+ aioson squad:dashboard --squad=marketing-odonto
547
+ ```
548
+
549
+ Acesse `http://localhost:4180` no browser. O dashboard mostra todos os squads do projeto com agentes rodando, uso de contexto, tokens, logs de execução e métricas em tempo real.
550
+
551
+ Para documentação completa: [Squad Dashboard](./squad-dashboard.md)
552
+
553
+ ### 19. Workers, Daemon e Integrações
554
+
555
+ ```bash
556
+ # Listar workers de uma squad
557
+ aioson squad:worker . --sub=list --squad=clinica
558
+
559
+ # Executar um worker manualmente
560
+ aioson squad:worker . --sub=run --squad=clinica --worker=confirma-consulta --input='{"phone":"5511999999999"}'
561
+
562
+ # Iniciar daemon (workers automáticos 24/7)
563
+ aioson squad:daemon . --sub=start --squad=clinica
564
+
565
+ # Ver status do daemon
566
+ aioson squad:daemon . --sub=status
567
+
568
+ # Configurar integração WhatsApp
569
+ aioson squad:mcp . --sub=configure --squad=clinica --mcp=whatsapp --connector=whatsapp-business
570
+
571
+ # Testar conexão
572
+ aioson squad:mcp . --sub=test --squad=clinica --mcp=whatsapp
573
+
574
+ # Registrar métrica de ROI
575
+ aioson squad:roi . --sub=metric --squad=clinica --key=no_show_rate --value=8 --unit=% --baseline=20 --target=5
576
+
577
+ # Ver relatório de ROI
578
+ aioson squad:roi . --sub=report --squad=clinica
579
+ ```
580
+
581
+ ### 20. Reparar bindings de genome em squads
523
582
 
524
583
  ```bash
525
584
  aioson squad:repair-genomes .aioson/squads/marketing/squad.manifest.json --write
@@ -129,8 +129,24 @@ Se voce estiver entrando num projeto ja existente e quiser um companheiro tecnic
129
129
  | Tamanho do projeto | Sequência de agentes |
130
130
  |---|---|
131
131
  | **MICRO** — 0–1 ponto | `@setup → @dev` |
132
- | **SMALL** — 2–3 pontos | `@setup → @product → @analyst → @architect → @ux-ui → @dev → @qa` |
133
- | **MEDIUM** — 4–6 pontos | `@setup → @product → @analyst → @architect → @ux-ui → @pm → @orchestrator → @dev → @qa` |
132
+ | **SMALL** — 2–3 pontos | `@setup → @product → [@sheldon] → @analyst → @architect → @dev → @qa[@tester]` |
133
+ | **MEDIUM** — 4–6 pontos | `@setup → @product → [@sheldon] → @analyst → @architect → @ux-ui → @pm → @orchestrator → @dev → @qa → [@tester]` |
134
+
135
+ `[@sheldon]` — opcional, recomendado para validar e enriquecer o PRD antes de codar.
136
+ `[@tester]` — opcional, para cobertura sistemática quando o `@dev` implementou sem testes adequados.
137
+
138
+ ### Estratégia de documentos de kickoff
139
+
140
+ Antes de ativar `@product`, você pode criar arquivos de entrada na raiz do projeto:
141
+
142
+ ```
143
+ plans/minha-ideia.md ← suas notas brutas, esboços, referências
144
+ prds/visao-produto.md ← rascunhos de requisitos, inspirações
145
+ ```
146
+
147
+ O `@product` e o `@sheldon` detectam esses arquivos automaticamente e perguntam se devem usá-los como fonte para gerar os artefatos formais em `.aioson/context/`. Os arquivos originais nunca são modificados — você decide quando deletá-los.
148
+
149
+ Esses arquivos de kickoff **não são versionados por padrão** (estão no `.gitignore`). Eles são documentos de trabalho do desenvolvedor, não artefatos do projeto.
134
150
 
135
151
  ### Atalho recomendado quando o escopo ainda está nebuloso
136
152