@jaimevalasek/aioson 1.8.0 → 1.9.0

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 (967) hide show
  1. package/CHANGELOG.md +595 -595
  2. package/CODE_OF_CONDUCT.md +12 -12
  3. package/CONTRIBUTING.md +13 -13
  4. package/LICENSE +661 -661
  5. package/README.md +919 -919
  6. package/bin/aioson.js +4 -4
  7. package/docs/design-previews/aurora-command-ui-website.html +884 -884
  8. package/docs/design-previews/aurora-command-ui.html +682 -682
  9. package/docs/design-previews/bold-editorial-ui-website.html +658 -658
  10. package/docs/design-previews/bold-editorial-ui.html +717 -717
  11. package/docs/design-previews/clean-saas-ui-website.html +1202 -1202
  12. package/docs/design-previews/clean-saas-ui.html +549 -549
  13. package/docs/design-previews/cognitive-core-ui-website.html +1009 -1009
  14. package/docs/design-previews/cognitive-core-ui.html +463 -463
  15. package/docs/design-previews/glassmorphism-ui-website.html +572 -572
  16. package/docs/design-previews/glassmorphism-ui.html +886 -886
  17. package/docs/design-previews/index.html +699 -699
  18. package/docs/design-previews/interface-design-website.html +1187 -1187
  19. package/docs/design-previews/interface-design.html +513 -513
  20. package/docs/design-previews/neo-brutalist-ui-website.html +621 -621
  21. package/docs/design-previews/neo-brutalist-ui.html +797 -797
  22. package/docs/design-previews/premium-command-center-ui-website.html +1217 -1217
  23. package/docs/design-previews/premium-command-center-ui.html +552 -552
  24. package/docs/design-previews/pt.squarespace.com-homepage.html +889 -889
  25. package/docs/design-previews/warm-craft-ui-website.html +684 -684
  26. package/docs/design-previews/warm-craft-ui.html +739 -739
  27. package/docs/en/1-understand/ecosystem-map.md +228 -0
  28. package/docs/en/1-understand/glossary.md +288 -0
  29. package/docs/en/1-understand/what-is-aioson.md +94 -0
  30. package/docs/en/1-understand/why-it-exists.md +106 -0
  31. package/docs/en/2-start/existing-project.md +246 -0
  32. package/docs/en/2-start/first-project.md +307 -0
  33. package/docs/en/2-start/initial-decisions.md +223 -0
  34. package/docs/en/3-recipes/README.md +28 -0
  35. package/docs/en/3-recipes/continuity-between-sessions.md +303 -0
  36. package/docs/en/3-recipes/from-idea-to-prd-via-briefing.md +235 -0
  37. package/docs/en/3-recipes/full-feature-with-sheldon.md +338 -0
  38. package/docs/en/4-agents/README.md +56 -0
  39. package/docs/en/5-reference/README.md +60 -0
  40. package/docs/en/{cli-reference.md → 5-reference/cli-reference.md} +639 -464
  41. package/docs/en/{i18n.md → 5-reference/i18n.md} +52 -52
  42. package/docs/en/{json-schemas.md → 5-reference/json-schemas.md} +41 -41
  43. package/docs/en/{mcp.md → 5-reference/mcp.md} +56 -56
  44. package/docs/en/{parallel.md → 5-reference/parallel.md} +82 -82
  45. package/docs/en/{qa-browser.md → 5-reference/qa-browser.md} +339 -339
  46. package/docs/en/{release-flow.md → 5-reference/release-flow.md} +22 -22
  47. package/docs/en/{release-notes-template.md → 5-reference/release-notes-template.md} +41 -41
  48. package/docs/en/{release.md → 5-reference/release.md} +28 -28
  49. package/docs/en/{schemas → 5-reference/schemas}/agent-prompt.schema.json +17 -17
  50. package/docs/en/{schemas → 5-reference/schemas}/agents.schema.json +32 -32
  51. package/docs/en/{schemas → 5-reference/schemas}/context-validate.schema.json +36 -36
  52. package/docs/en/{schemas → 5-reference/schemas}/doctor.schema.json +89 -89
  53. package/docs/en/{schemas → 5-reference/schemas}/error.schema.json +24 -24
  54. package/docs/en/{schemas → 5-reference/schemas}/i18n-add.schema.json +15 -15
  55. package/docs/en/{schemas → 5-reference/schemas}/index.json +126 -126
  56. package/docs/en/{schemas → 5-reference/schemas}/info.schema.json +39 -39
  57. package/docs/en/{schemas → 5-reference/schemas}/init.schema.json +48 -48
  58. package/docs/en/{schemas → 5-reference/schemas}/install.schema.json +60 -60
  59. package/docs/en/{schemas → 5-reference/schemas}/locale-apply.schema.json +30 -30
  60. package/docs/en/{schemas → 5-reference/schemas}/mcp-doctor.schema.json +95 -95
  61. package/docs/en/{schemas → 5-reference/schemas}/mcp-init.schema.json +122 -122
  62. package/docs/en/{schemas → 5-reference/schemas}/package-test.schema.json +24 -24
  63. package/docs/en/{schemas → 5-reference/schemas}/parallel-assign.schema.json +66 -66
  64. package/docs/en/{schemas → 5-reference/schemas}/parallel-doctor.schema.json +122 -122
  65. package/docs/en/{schemas → 5-reference/schemas}/parallel-guard.schema.json +63 -63
  66. package/docs/en/{schemas → 5-reference/schemas}/parallel-init.schema.json +53 -53
  67. package/docs/en/{schemas → 5-reference/schemas}/parallel-merge.schema.json +84 -84
  68. package/docs/en/{schemas → 5-reference/schemas}/parallel-status.schema.json +184 -184
  69. package/docs/en/{schemas → 5-reference/schemas}/setup-context.schema.json +39 -39
  70. package/docs/en/{schemas → 5-reference/schemas}/smoke.schema.json +23 -23
  71. package/docs/en/{schemas → 5-reference/schemas}/update.schema.json +48 -48
  72. package/docs/en/{schemas → 5-reference/schemas}/workflow-plan.schema.json +30 -30
  73. package/docs/en/{squad-dashboard.md → 5-reference/squad-dashboard.md} +372 -372
  74. package/docs/en/{web3.md → 5-reference/web3.md} +54 -54
  75. package/docs/en/README.md +115 -0
  76. package/docs/en/active-learning-loop/README.md +117 -0
  77. package/docs/en/active-learning-loop/active-learning-loop.md +117 -0
  78. package/docs/en/active-learning-loop/cli-commands.md +320 -0
  79. package/docs/en/active-learning-loop/diagrams.md +225 -0
  80. package/docs/en/active-learning-loop/doctor-checks.md +151 -0
  81. package/docs/en/active-learning-loop/how-to-use.md +313 -0
  82. package/docs/en/active-learning-loop/troubleshooting.md +283 -0
  83. package/docs/en/deyvin-subtask-scout/README.md +109 -0
  84. package/docs/en/deyvin-subtask-scout/cli-commands.md +248 -0
  85. package/docs/en/deyvin-subtask-scout/diagrams.md +124 -0
  86. package/docs/en/deyvin-subtask-scout/how-to-use.md +221 -0
  87. package/docs/en/deyvin-subtask-scout/sub-task-scout.md +115 -0
  88. package/docs/en/deyvin-subtask-scout/troubleshooting.md +184 -0
  89. package/docs/integrations/apps-publish-marketplace.md +94 -94
  90. package/docs/integrations/sdlc-genius-boundary.md +76 -76
  91. package/docs/integrations/sdlc-genius-eval-matrix.md +75 -75
  92. package/docs/integrations/sdlc-genius-install-checklist.md +93 -93
  93. package/docs/integrations/sdlc-genius-review-samples.md +86 -86
  94. package/docs/openclaw-bridge.md +308 -308
  95. package/docs/pt/1-entender/glossario.md +288 -0
  96. package/docs/pt/1-entender/mapa-do-ecossistema.md +228 -0
  97. package/docs/pt/1-entender/o-que-e-aioson.md +94 -0
  98. package/docs/pt/1-entender/por-que-existe.md +107 -0
  99. package/docs/pt/2-comecar/decisoes-iniciais.md +223 -0
  100. package/docs/pt/2-comecar/primeiro-projeto.md +307 -0
  101. package/docs/pt/2-comecar/projeto-existente.md +245 -0
  102. package/docs/pt/3-receitas/README.md +28 -0
  103. package/docs/pt/3-receitas/app-saas-do-zero.md +324 -0
  104. package/docs/pt/3-receitas/auditoria-seguranca.md +254 -0
  105. package/docs/pt/3-receitas/clonar-design-de-site.md +211 -0
  106. package/docs/pt/3-receitas/continuidade-entre-sessoes.md +303 -0
  107. package/docs/pt/3-receitas/da-ideia-ao-prd-via-briefing.md +234 -0
  108. package/docs/pt/3-receitas/feature-completa-com-sheldon.md +338 -0
  109. package/docs/pt/3-receitas/integracao-em-codebase-grande.md +243 -0
  110. package/docs/pt/3-receitas/landing-page.md +281 -0
  111. package/docs/pt/3-receitas/plans-externos-para-product.md +191 -0
  112. package/docs/pt/3-receitas/publicar-no-aioson-com.md +219 -0
  113. package/docs/pt/3-receitas/refatoracao-grande.md +251 -0
  114. package/docs/pt/4-agentes/README.md +65 -0
  115. package/docs/pt/4-agentes/analyst.md +111 -0
  116. package/docs/pt/4-agentes/architect.md +113 -0
  117. package/docs/pt/4-agentes/briefing.md +95 -0
  118. package/docs/pt/4-agentes/committer.md +108 -0
  119. package/docs/pt/4-agentes/copywriter.md +279 -0
  120. package/docs/pt/4-agentes/design-hybrid-forge.md +116 -0
  121. package/docs/pt/4-agentes/dev.md +136 -0
  122. package/docs/pt/4-agentes/deyvin.md +99 -0
  123. package/docs/pt/4-agentes/discover.md +122 -0
  124. package/docs/pt/4-agentes/discovery-design-doc.md +91 -0
  125. package/docs/pt/4-agentes/genome.md +115 -0
  126. package/docs/pt/4-agentes/neo.md +93 -0
  127. package/docs/pt/4-agentes/orache.md +107 -0
  128. package/docs/pt/4-agentes/orchestrator.md +118 -0
  129. package/docs/pt/4-agentes/pentester.md +131 -0
  130. package/docs/pt/4-agentes/pm.md +97 -0
  131. package/docs/pt/4-agentes/product.md +114 -0
  132. package/docs/pt/4-agentes/profiler-enricher.md +93 -0
  133. package/docs/pt/4-agentes/profiler-forge.md +93 -0
  134. package/docs/pt/4-agentes/profiler-researcher.md +98 -0
  135. package/docs/pt/4-agentes/qa.md +124 -0
  136. package/docs/pt/4-agentes/setup.md +104 -0
  137. package/docs/pt/4-agentes/sheldon.md +95 -0
  138. package/docs/pt/4-agentes/site-forge.md +104 -0
  139. package/docs/pt/4-agentes/squad.md +127 -0
  140. package/docs/pt/4-agentes/tester.md +105 -0
  141. package/docs/pt/4-agentes/ux-ui.md +110 -0
  142. package/docs/pt/4-agentes/validator.md +118 -0
  143. package/docs/pt/5-referencia/README.md +88 -0
  144. package/docs/pt/5-referencia/agent-chain-continuity.md +124 -0
  145. package/docs/pt/{agent-sharding.md → 5-referencia/agent-sharding.md} +132 -132
  146. package/docs/pt/5-referencia/aioson-com-store.md +119 -0
  147. package/docs/pt/{automacao-squads.md → 5-referencia/automacao-squads.md} +407 -407
  148. package/docs/pt/{clientes-ai.md → 5-referencia/clientes-ai.md} +300 -290
  149. package/docs/pt/{comandos-cli.md → 5-referencia/comandos-cli.md} +1823 -1781
  150. package/docs/pt/{compress-agents.md → 5-referencia/compress-agents.md} +304 -304
  151. package/docs/pt/{design-docs-governance.md → 5-referencia/design-docs-governance.md} +59 -59
  152. package/docs/pt/{devlog-pipeline.md → 5-referencia/devlog-pipeline.md} +270 -270
  153. package/docs/pt/{feature-archive.md → 5-referencia/feature-archive.md} +199 -191
  154. package/docs/pt/5-referencia/feature-dossier.md +121 -0
  155. package/docs/pt/{fluxo-artefatos.md → 5-referencia/fluxo-artefatos.md} +179 -178
  156. package/docs/pt/{genome-3.0-spec.md → 5-referencia/genome-4.0-spec.md} +407 -407
  157. package/docs/pt/{genome-distribution.md → 5-referencia/genome-distribution.md} +232 -232
  158. package/docs/pt/{hooks-session-guard.md → 5-referencia/hooks-session-guard.md} +454 -454
  159. package/docs/pt/{inteligencia-adaptativa.md → 5-referencia/inteligencia-adaptativa.md} +324 -324
  160. package/docs/pt/5-referencia/live-sessions.md +144 -0
  161. package/docs/pt/5-referencia/memoria-e-contexto.md +340 -0
  162. package/docs/pt/{motor-hardening.md → 5-referencia/motor-hardening.md} +493 -492
  163. package/docs/pt/{output-strategy-delivery.md → 5-referencia/output-strategy-delivery.md} +655 -655
  164. package/docs/pt/{runner-system.md → 5-referencia/runner-system.md} +113 -113
  165. package/docs/pt/{runtime-observability.md → 5-referencia/runtime-observability.md} +76 -76
  166. package/docs/pt/{sandbox.md → 5-referencia/sandbox.md} +125 -125
  167. package/docs/pt/{sdd-automation-scripts.md → 5-referencia/sdd-automation-scripts.md} +559 -557
  168. package/docs/pt/5-referencia/sdd-framework.md +115 -0
  169. package/docs/pt/5-referencia/sdd-planos-e-estrutura.md +321 -0
  170. package/docs/pt/5-referencia/secure-by-default.md +117 -0
  171. package/docs/pt/{skills.md → 5-referencia/skills.md} +275 -267
  172. package/docs/pt/{spec-learnings-pipeline.md → 5-referencia/spec-learnings-pipeline.md} +265 -265
  173. package/docs/pt/{squad-dashboard.md → 5-referencia/squad-dashboard.md} +373 -373
  174. package/docs/pt/{web3.md → 5-referencia/web3.md} +797 -797
  175. package/docs/pt/README.md +111 -125
  176. package/docs/pt/_arquivo/README.md +130 -0
  177. package/docs/pt/{advisor-spec.md → _arquivo/advisor-spec.md} +343 -335
  178. package/docs/pt/{agentes-customizados.md → _arquivo/agentes-customizados.md} +678 -670
  179. package/docs/pt/{busca-de-contexto.md → _arquivo/busca-de-contexto.md} +136 -129
  180. package/docs/pt/{cache-de-contexto.md → _arquivo/cache-de-contexto.md} +163 -156
  181. package/docs/pt/{cenarios.md → _arquivo/cenarios.md} +1282 -1274
  182. package/docs/pt/{design-hybrid-forge.md → _arquivo/design-hybrid-forge.md} +365 -356
  183. package/docs/pt/{deyvin.md → _arquivo/deyvin.md} +123 -115
  184. package/docs/pt/{guia-engineer.md → _arquivo/guia-engineer.md} +234 -226
  185. package/docs/pt/{inicio-rapido.md → _arquivo/inicio-rapido.md} +261 -251
  186. package/docs/pt/{memoria-contexto.md → _arquivo/memoria-contexto.md} +262 -255
  187. package/docs/pt/{monitor-de-contexto.md → _arquivo/monitor-de-contexto.md} +165 -158
  188. package/docs/pt/{profiler-system.md → _arquivo/profiler-system.md} +222 -214
  189. package/docs/pt/{recuperacao-de-sessao.md → _arquivo/recuperacao-de-sessao.md} +134 -125
  190. package/docs/pt/{site-forge.md → _arquivo/site-forge.md} +318 -309
  191. package/docs/pt/{squad-genome.md → _arquivo/squad-genome.md} +793 -783
  192. package/docs/pt/active-learning-loop/README.md +117 -0
  193. package/docs/pt/active-learning-loop/ativo-learning-loop.md +117 -0
  194. package/docs/pt/active-learning-loop/comandos-cli.md +320 -0
  195. package/docs/pt/active-learning-loop/como-usar.md +313 -0
  196. package/docs/pt/active-learning-loop/diagramas.md +225 -0
  197. package/docs/pt/active-learning-loop/doctor-checks.md +151 -0
  198. package/docs/pt/active-learning-loop/troubleshooting.md +283 -0
  199. package/docs/pt/agentes.md +996 -993
  200. package/docs/pt/deyvin-subtask-scout/README.md +109 -0
  201. package/docs/pt/deyvin-subtask-scout/comandos-cli.md +248 -0
  202. package/docs/pt/deyvin-subtask-scout/como-usar.md +221 -0
  203. package/docs/pt/deyvin-subtask-scout/diagramas.md +124 -0
  204. package/docs/pt/deyvin-subtask-scout/sub-task-scout.md +113 -0
  205. package/docs/pt/deyvin-subtask-scout/troubleshooting.md +184 -0
  206. package/docs/pt/living-memory/README.md +81 -0
  207. package/docs/pt/living-memory/autonomy-contract.md +206 -0
  208. package/docs/pt/living-memory/diagramas.md +365 -0
  209. package/docs/pt/living-memory/memoria-viva.md +141 -0
  210. package/docs/pt/living-memory/notificacoes-info.md +142 -0
  211. package/docs/pt/living-memory/reflexao-in-harness.md +218 -0
  212. package/docs/pt/living-memory/troubleshooting.md +286 -0
  213. package/docs/testing/genome-2.0-manual-regression.md +23 -23
  214. package/docs/testing/genome-2.0-matrix.md +36 -36
  215. package/docs/testing/genome-2.0-rollout.md +184 -184
  216. package/package.json +51 -51
  217. package/src/a2a/client.js +165 -165
  218. package/src/a2a/server.js +223 -223
  219. package/src/agent-loader.js +280 -280
  220. package/src/agent-manifests.js +86 -66
  221. package/src/agents.js +92 -92
  222. package/src/autonomy-policy.js +163 -139
  223. package/src/backup-local.js +74 -74
  224. package/src/backup-provider.js +303 -303
  225. package/src/brain-query.js +171 -161
  226. package/src/cli.js +77 -4
  227. package/src/commands/agent-audit.js +397 -397
  228. package/src/commands/agent-export-skill.js +229 -229
  229. package/src/commands/agent-loader.js +85 -85
  230. package/src/commands/agents.js +273 -255
  231. package/src/commands/artifact-validate.js +218 -218
  232. package/src/commands/auth.js +298 -272
  233. package/src/commands/backup-local-cmd.js +25 -25
  234. package/src/commands/backup.js +533 -533
  235. package/src/commands/brain-query.js +44 -44
  236. package/src/commands/brief-gen.js +405 -405
  237. package/src/commands/brief-validate.js +65 -65
  238. package/src/commands/briefing.js +344 -344
  239. package/src/commands/classify.js +256 -256
  240. package/src/commands/cloud.js +1767 -1767
  241. package/src/commands/commit-prepare.js +610 -547
  242. package/src/commands/compress-agents.js +416 -416
  243. package/src/commands/config.js +90 -90
  244. package/src/commands/context-cache.js +90 -90
  245. package/src/commands/context-compact.js +49 -49
  246. package/src/commands/context-health.js +187 -177
  247. package/src/commands/context-load.js +219 -0
  248. package/src/commands/context-monitor.js +163 -163
  249. package/src/commands/context-pack.js +45 -45
  250. package/src/commands/context-search.js +66 -66
  251. package/src/commands/context-trim.js +183 -183
  252. package/src/commands/context-validate.js +91 -91
  253. package/src/commands/design-hybrid-options.js +385 -385
  254. package/src/commands/detect-test-runner.js +55 -55
  255. package/src/commands/dev-resume.js +32 -0
  256. package/src/commands/devlog-export-brains.js +27 -27
  257. package/src/commands/devlog-process.js +294 -294
  258. package/src/commands/devlog-watch.js +131 -131
  259. package/src/commands/doctor.js +123 -123
  260. package/src/commands/dossier-add-research.js +114 -0
  261. package/src/commands/dossier-audit.js +222 -0
  262. package/src/commands/dossier.js +423 -423
  263. package/src/commands/feature-archive.js +513 -513
  264. package/src/commands/feature-close.js +554 -270
  265. package/src/commands/gate-approve.js +198 -198
  266. package/src/commands/gate-check.js +247 -247
  267. package/src/commands/genome-doctor.js +489 -198
  268. package/src/commands/genome-migrate.js +49 -49
  269. package/src/commands/git-guard.js +170 -170
  270. package/src/commands/harness.js +307 -121
  271. package/src/commands/health.js +214 -214
  272. package/src/commands/hooks-emit.js +253 -253
  273. package/src/commands/hooks-install.js +347 -347
  274. package/src/commands/i18n-add.js +56 -56
  275. package/src/commands/implementation-plan.js +367 -367
  276. package/src/commands/info.js +41 -41
  277. package/src/commands/init.js +120 -120
  278. package/src/commands/install.js +162 -111
  279. package/src/commands/learning-auto-promote.js +197 -195
  280. package/src/commands/learning-evolve.js +364 -364
  281. package/src/commands/learning-export.js +103 -103
  282. package/src/commands/learning-rollback.js +164 -164
  283. package/src/commands/learning.js +134 -134
  284. package/src/commands/live.js +2101 -2082
  285. package/src/commands/locale-apply.js +54 -54
  286. package/src/commands/locale-diff.js +25 -25
  287. package/src/commands/mcp-doctor.js +407 -407
  288. package/src/commands/mcp-init.js +373 -373
  289. package/src/commands/memory-archive.js +193 -0
  290. package/src/commands/memory-reflect-commit.js +148 -0
  291. package/src/commands/memory-reflect-prepare.js +97 -0
  292. package/src/commands/memory-restore.js +177 -0
  293. package/src/commands/memory-search.js +135 -0
  294. package/src/commands/memory.js +299 -234
  295. package/src/commands/notify.js +68 -0
  296. package/src/commands/package-e2e.js +273 -273
  297. package/src/commands/parallel-assign.js +483 -483
  298. package/src/commands/parallel-doctor.js +850 -850
  299. package/src/commands/parallel-guard.js +241 -241
  300. package/src/commands/parallel-init.js +311 -311
  301. package/src/commands/parallel-merge.js +299 -299
  302. package/src/commands/parallel-status.js +434 -434
  303. package/src/commands/pattern-detect.js +33 -33
  304. package/src/commands/preflight-context.js +30 -30
  305. package/src/commands/preflight.js +267 -267
  306. package/src/commands/pulse-update.js +130 -130
  307. package/src/commands/qa-doctor.js +185 -185
  308. package/src/commands/qa-init.js +166 -166
  309. package/src/commands/qa-report.js +58 -58
  310. package/src/commands/qa-run.js +873 -873
  311. package/src/commands/qa-scan.js +337 -337
  312. package/src/commands/recovery.js +43 -43
  313. package/src/commands/revision.js +235 -235
  314. package/src/commands/runner-daemon.js +274 -274
  315. package/src/commands/runner-plan.js +70 -70
  316. package/src/commands/runner-queue-from-plan.js +166 -166
  317. package/src/commands/runner-queue.js +189 -189
  318. package/src/commands/runner-run.js +129 -129
  319. package/src/commands/runtime.js +2086 -2067
  320. package/src/commands/sandbox.js +37 -37
  321. package/src/commands/scaffold-complete.js +188 -188
  322. package/src/commands/scan-project.js +1371 -1371
  323. package/src/commands/scout-commit.js +163 -0
  324. package/src/commands/scout-prep.js +214 -0
  325. package/src/commands/scout-validate.js +112 -0
  326. package/src/commands/security-audit.js +275 -275
  327. package/src/commands/security-scan.js +376 -376
  328. package/src/commands/self-implement-loop.js +306 -300
  329. package/src/commands/session-guard.js +218 -218
  330. package/src/commands/setup-context.js +699 -699
  331. package/src/commands/setup.js +178 -178
  332. package/src/commands/sizing.js +165 -165
  333. package/src/commands/skill.js +670 -670
  334. package/src/commands/smoke.js +426 -426
  335. package/src/commands/spec-checkpoint.js +177 -177
  336. package/src/commands/spec-status.js +79 -79
  337. package/src/commands/spec-sync.js +190 -190
  338. package/src/commands/spec-tasks.js +288 -288
  339. package/src/commands/squad-agent-create.js +830 -830
  340. package/src/commands/squad-autorun.js +1220 -1220
  341. package/src/commands/squad-bus.js +217 -217
  342. package/src/commands/squad-card.js +149 -149
  343. package/src/commands/squad-daemon.js +343 -343
  344. package/src/commands/squad-dashboard.js +39 -39
  345. package/src/commands/squad-dependency-graph.js +164 -164
  346. package/src/commands/squad-deploy.js +64 -64
  347. package/src/commands/squad-doctor.js +460 -460
  348. package/src/commands/squad-export.js +77 -46
  349. package/src/commands/squad-investigate.js +314 -314
  350. package/src/commands/squad-learning.js +209 -209
  351. package/src/commands/squad-mcp.js +270 -270
  352. package/src/commands/squad-pipeline.js +343 -343
  353. package/src/commands/squad-plan.js +361 -361
  354. package/src/commands/squad-processes.js +56 -56
  355. package/src/commands/squad-recovery.js +42 -42
  356. package/src/commands/squad-repair-genomes.js +39 -39
  357. package/src/commands/squad-review.js +106 -106
  358. package/src/commands/squad-roi.js +291 -291
  359. package/src/commands/squad-scaffold.js +56 -56
  360. package/src/commands/squad-score.js +311 -307
  361. package/src/commands/squad-status.js +481 -481
  362. package/src/commands/squad-tool-register.js +157 -157
  363. package/src/commands/squad-validate.js +438 -438
  364. package/src/commands/squad-webhook.js +160 -160
  365. package/src/commands/squad-worker.js +191 -191
  366. package/src/commands/squad-worktrees.js +75 -75
  367. package/src/commands/state-save.js +122 -122
  368. package/src/commands/store-genome.js +667 -304
  369. package/src/commands/store-skill.js +247 -247
  370. package/src/commands/store-squad.js +431 -431
  371. package/src/commands/store-system.js +392 -392
  372. package/src/commands/sync-agents-preflight.js +176 -0
  373. package/src/commands/test-agents.js +199 -199
  374. package/src/commands/tool-capabilities.js +63 -63
  375. package/src/commands/tool-registry-cmd.js +232 -232
  376. package/src/commands/update.js +64 -64
  377. package/src/commands/verify-gate.js +612 -612
  378. package/src/commands/web-map.js +70 -70
  379. package/src/commands/web-scrape.js +71 -71
  380. package/src/commands/workflow-execute.js +730 -730
  381. package/src/commands/workflow-harden.js +231 -231
  382. package/src/commands/workflow-heal.js +136 -136
  383. package/src/commands/workflow-next.js +1279 -1039
  384. package/src/commands/workflow-plan.js +108 -108
  385. package/src/commands/workflow-status.js +440 -440
  386. package/src/commands/workspace.js +144 -144
  387. package/src/constants.js +413 -384
  388. package/src/context-cache.js +159 -159
  389. package/src/context-memory.js +975 -966
  390. package/src/context-parse-reason.js +22 -22
  391. package/src/context-search.js +326 -326
  392. package/src/context-writer.js +197 -197
  393. package/src/context.js +247 -247
  394. package/src/delivery-runner.js +319 -319
  395. package/src/design-variation-catalog.js +503 -503
  396. package/src/detector.js +261 -261
  397. package/src/doctor.js +760 -329
  398. package/src/dossier/codemap-store.js +267 -267
  399. package/src/dossier/dossier-bootstrap.js +222 -222
  400. package/src/dossier/dossier-compact.js +159 -159
  401. package/src/dossier/lock.js +128 -128
  402. package/src/dossier/research-index-store.js +233 -0
  403. package/src/dossier/revision-store.js +313 -313
  404. package/src/dossier/schema.js +162 -155
  405. package/src/dossier/scout-section.js +127 -0
  406. package/src/dossier/store.js +406 -400
  407. package/src/execution-gateway.js +464 -464
  408. package/src/friction-scanner.js +202 -202
  409. package/src/genome-files.js +198 -198
  410. package/src/genome-format.js +442 -442
  411. package/src/genome-schema.js +238 -238
  412. package/src/genomes/bindings.js +281 -281
  413. package/src/genomes.js +500 -500
  414. package/src/handoff-contract.js +417 -363
  415. package/src/handoff-validator.js +45 -45
  416. package/src/harness/circuit-breaker.js +135 -135
  417. package/src/i18n/index.js +103 -103
  418. package/src/i18n/messages/en.js +1541 -1434
  419. package/src/i18n/messages/es.js +1325 -1221
  420. package/src/i18n/messages/fr.js +1333 -1229
  421. package/src/i18n/messages/pt-BR.js +1561 -1457
  422. package/src/i18n/scaffold.js +64 -64
  423. package/src/install-animation.js +260 -260
  424. package/src/install-profile.js +127 -127
  425. package/src/install-wizard.js +475 -475
  426. package/src/installer-config-merge.js +207 -0
  427. package/src/installer.js +449 -358
  428. package/src/learning-loop-archive.js +595 -0
  429. package/src/learning-loop-doctor.js +217 -0
  430. package/src/learning-loop-engine.js +254 -0
  431. package/src/learning-loop-fts5.js +132 -0
  432. package/src/learning-loop-migration.js +163 -0
  433. package/src/lib/dev-resume.js +140 -0
  434. package/src/lib/dossier-telemetry.js +36 -0
  435. package/src/lib/genomes/compat.js +206 -206
  436. package/src/lib/genomes/migrate.js +90 -90
  437. package/src/lib/git-commit-guard.js +751 -691
  438. package/src/lib/health-check.js +158 -158
  439. package/src/lib/hook-protocol.js +76 -76
  440. package/src/lib/llm-content-sanitizer.js +44 -0
  441. package/src/lib/security/artifact-reader.js +167 -167
  442. package/src/lib/security/exit-codes.js +51 -51
  443. package/src/lib/security/findings-writer.js +176 -176
  444. package/src/lib/security/runtime-events.js +77 -77
  445. package/src/lib/security/secrets-regex.js +115 -115
  446. package/src/lib/squads/genome-repair.js +49 -49
  447. package/src/lib/store/security-scan.js +175 -173
  448. package/src/lib/terminal-checkbox.js +135 -130
  449. package/src/lib/terminal-picker.js +447 -0
  450. package/src/lib/tmux-launcher.js +163 -163
  451. package/src/lib/tool-capabilities.js +102 -102
  452. package/src/lib/webhook-server.js +328 -328
  453. package/src/locales.js +88 -88
  454. package/src/mcp/apps/squad-dashboard/app.js +163 -163
  455. package/src/mcp/apps/squad-dashboard/index.html +261 -261
  456. package/src/mcp/apps/squad-dashboard/mcp-manifest.json +23 -23
  457. package/src/mcp/resources/squad-state.js +130 -130
  458. package/src/mcp-connectors/registry.js +602 -602
  459. package/src/memory-reflect-engine.js +359 -0
  460. package/src/notify-renderer.js +32 -0
  461. package/src/onboarding.js +305 -305
  462. package/src/parallel-workspace.js +756 -756
  463. package/src/parser.js +66 -66
  464. package/src/path-guard.js +47 -47
  465. package/src/permissions-generator.js +400 -0
  466. package/src/preflight-engine.js +654 -654
  467. package/src/prompt-tool.js +20 -20
  468. package/src/qa-html-report.js +472 -472
  469. package/src/recovery-context-session.js +154 -154
  470. package/src/runner/cascade.js +97 -97
  471. package/src/runner/cli-launcher.js +109 -109
  472. package/src/runner/plan-importer.js +63 -63
  473. package/src/runner/queue-store.js +159 -159
  474. package/src/runtime-store.js +2720 -2676
  475. package/src/sandbox.js +194 -177
  476. package/src/self-healing.js +142 -142
  477. package/src/session-handoff.js +295 -187
  478. package/src/squad/agent-teams-adapter.js +270 -264
  479. package/src/squad/brief-validator.js +350 -350
  480. package/src/squad/bus-bridge.js +140 -140
  481. package/src/squad/context-compactor.js +265 -265
  482. package/src/squad/cross-ai-synthesizer.js +250 -250
  483. package/src/squad/external-session.js +180 -180
  484. package/src/squad/hooks-generator.js +196 -196
  485. package/src/squad/inter-squad-events.js +175 -175
  486. package/src/squad/inter-squad.js +74 -74
  487. package/src/squad/intra-bus.js +345 -345
  488. package/src/squad/learning-extractor.js +213 -213
  489. package/src/squad/pattern-detector.js +365 -365
  490. package/src/squad/preflight-context.js +296 -296
  491. package/src/squad/recovery-context.js +372 -372
  492. package/src/squad/reflection.js +365 -365
  493. package/src/squad/squad-scaffold.js +341 -341
  494. package/src/squad/state-manager.js +310 -310
  495. package/src/squad/task-decomposer.js +652 -652
  496. package/src/squad/verify-gate.js +303 -303
  497. package/src/squad/worktree-manager.js +114 -114
  498. package/src/squad-daemon.js +490 -490
  499. package/src/squad-dashboard/api.js +223 -223
  500. package/src/squad-dashboard/attachment-handler.js +93 -93
  501. package/src/squad-dashboard/context-monitor.js +157 -157
  502. package/src/squad-dashboard/execution-logs.js +115 -115
  503. package/src/squad-dashboard/hunk-review.js +209 -209
  504. package/src/squad-dashboard/metrics.js +133 -133
  505. package/src/squad-dashboard/process-monitor.js +125 -125
  506. package/src/squad-dashboard/renderer.js +858 -858
  507. package/src/squad-dashboard/server.js +232 -232
  508. package/src/squad-dashboard/styles.js +525 -525
  509. package/src/squad-dashboard/token-tracker.js +99 -99
  510. package/src/squads/apply-genome.js +21 -21
  511. package/src/squads/genome-binding-service.js +154 -154
  512. package/src/sub-task-engine.js +415 -0
  513. package/src/sub-task-schemas.js +150 -0
  514. package/src/sub-task-state.js +152 -0
  515. package/src/sub-task-telemetry.js +69 -0
  516. package/src/test-briefing.js +226 -226
  517. package/src/tool-executor.js +94 -94
  518. package/src/updater.js +39 -39
  519. package/src/utils.js +49 -49
  520. package/src/version.js +50 -50
  521. package/src/web.js +284 -284
  522. package/src/worker-runner.js +541 -524
  523. package/src/workflow-gates.js +185 -185
  524. package/template/.aioson/advisors/.gitkeep +1 -1
  525. package/template/.aioson/agents/analyst.md +333 -318
  526. package/template/.aioson/agents/architect.md +325 -305
  527. package/template/.aioson/agents/{cypher.md → briefing.md} +264 -252
  528. package/template/.aioson/agents/committer.md +161 -161
  529. package/template/.aioson/agents/copywriter.md +937 -463
  530. package/template/.aioson/agents/design-hybrid-forge.md +141 -141
  531. package/template/.aioson/agents/dev.md +295 -263
  532. package/template/.aioson/agents/deyvin.md +198 -87
  533. package/template/.aioson/agents/discover.md +235 -235
  534. package/template/.aioson/agents/discovery-design-doc.md +56 -29
  535. package/template/.aioson/agents/genome.md +1904 -364
  536. package/template/.aioson/agents/manifests/analyst.manifest.json +26 -26
  537. package/template/.aioson/agents/manifests/architect.manifest.json +23 -23
  538. package/template/.aioson/agents/manifests/committer.manifest.json +23 -23
  539. package/template/.aioson/agents/manifests/dev.manifest.json +54 -37
  540. package/template/.aioson/agents/manifests/deyvin.manifest.json +41 -0
  541. package/template/.aioson/agents/manifests/orchestrator.manifest.json +30 -30
  542. package/template/.aioson/agents/manifests/pentester.manifest.json +39 -39
  543. package/template/.aioson/agents/manifests/pm.manifest.json +26 -26
  544. package/template/.aioson/agents/manifests/product.manifest.json +23 -23
  545. package/template/.aioson/agents/manifests/qa.manifest.json +41 -25
  546. package/template/.aioson/agents/manifests/setup.manifest.json +20 -20
  547. package/template/.aioson/agents/manifests/ux-ui.manifest.json +24 -24
  548. package/template/.aioson/agents/neo.md +341 -231
  549. package/template/.aioson/agents/orache.md +430 -430
  550. package/template/.aioson/agents/orchestrator.md +274 -263
  551. package/template/.aioson/agents/pair.md +5 -5
  552. package/template/.aioson/agents/pentester.md +289 -235
  553. package/template/.aioson/agents/pm.md +141 -130
  554. package/template/.aioson/agents/product.md +351 -273
  555. package/template/.aioson/agents/profiler-enricher.md +331 -331
  556. package/template/.aioson/agents/profiler-forge.md +212 -212
  557. package/template/.aioson/agents/profiler-researcher.md +282 -282
  558. package/template/.aioson/agents/qa.md +432 -342
  559. package/template/.aioson/agents/setup.md +423 -423
  560. package/template/.aioson/agents/sheldon.md +259 -197
  561. package/template/.aioson/agents/site-forge.md +281 -281
  562. package/template/.aioson/agents/squad.md +160 -156
  563. package/template/.aioson/agents/tester.md +536 -473
  564. package/template/.aioson/agents/ux-ui.md +195 -162
  565. package/template/.aioson/agents/validator.md +101 -69
  566. package/template/.aioson/brains/README.md +132 -128
  567. package/template/.aioson/brains/_archived/.gitkeep +0 -0
  568. package/template/.aioson/brains/_index.json +34 -16
  569. package/template/.aioson/brains/dev/patterns.brain.json +79 -0
  570. package/template/.aioson/brains/scripts/query.js +107 -107
  571. package/template/.aioson/brains/sheldon/architecture-decisions.brain.json +79 -0
  572. package/template/.aioson/brains/site-forge/visual-patterns.brain.json +205 -205
  573. package/template/.aioson/config/autonomy-protocol.json +125 -43
  574. package/template/.aioson/config/learning-loop.json +10 -0
  575. package/template/.aioson/config/scout-engine.json +1 -0
  576. package/template/.aioson/config.md +410 -410
  577. package/template/.aioson/context/_archived/.gitkeep +0 -0
  578. package/template/.aioson/context/design-doc.md +136 -136
  579. package/template/.aioson/context/project-map.md +57 -57
  580. package/template/.aioson/context/project-pulse.md +34 -34
  581. package/template/.aioson/context/seeds/seed-example.md +27 -27
  582. package/template/.aioson/context/spec.md.template +54 -54
  583. package/template/.aioson/context/user-profile.md +42 -42
  584. package/template/.aioson/design-docs/code-reuse.md +48 -48
  585. package/template/.aioson/design-docs/componentization.md +47 -47
  586. package/template/.aioson/design-docs/file-size.md +52 -52
  587. package/template/.aioson/design-docs/folder-structure.md +51 -51
  588. package/template/.aioson/design-docs/naming.md +54 -54
  589. package/template/.aioson/docs/LAYERS.md +89 -89
  590. package/template/.aioson/docs/README.md +76 -76
  591. package/template/.aioson/docs/autonomy-protocol.md +80 -0
  592. package/template/.aioson/docs/briefing/briefing-craft.md +237 -0
  593. package/template/.aioson/docs/dev/execution-discipline.md +106 -106
  594. package/template/.aioson/docs/dev/stack-conventions.md +83 -83
  595. package/template/.aioson/docs/deyvin/continuity-recovery.md +57 -57
  596. package/template/.aioson/docs/deyvin/debugging-escalation.md +30 -30
  597. package/template/.aioson/docs/deyvin/pair-execution.md +44 -44
  598. package/template/.aioson/docs/deyvin/runtime-handoffs.md +36 -36
  599. package/template/.aioson/docs/example-external-api-context.md +72 -72
  600. package/template/.aioson/docs/pentester/app-playbooks.md +206 -0
  601. package/template/.aioson/docs/pentester/llm-supplychain.md +165 -0
  602. package/template/.aioson/docs/product/conversation-playbook.md +116 -116
  603. package/template/.aioson/docs/product/prd-contract.md +107 -107
  604. package/template/.aioson/docs/product/quality-lens.md +57 -57
  605. package/template/.aioson/docs/product/research-loop.md +65 -65
  606. package/template/.aioson/docs/sheldon/enrichment-paths.md +134 -134
  607. package/template/.aioson/docs/sheldon/harness-contract.md +118 -0
  608. package/template/.aioson/docs/sheldon/quality-lens.md +57 -57
  609. package/template/.aioson/docs/sheldon/research-loop.md +56 -56
  610. package/template/.aioson/docs/sheldon/web-intelligence.md +75 -75
  611. package/template/.aioson/docs/site-forge-build.md +195 -195
  612. package/template/.aioson/docs/site-forge-extraction.md +135 -135
  613. package/template/.aioson/docs/site-forge-qa.md +155 -155
  614. package/template/.aioson/docs/site-forge-recon.md +434 -434
  615. package/template/.aioson/docs/site-forge-transform.md +249 -249
  616. package/template/.aioson/docs/squad/content-output.md +91 -91
  617. package/template/.aioson/docs/squad/creation-flow.md +149 -135
  618. package/template/.aioson/docs/squad/domain-breadth.md +322 -0
  619. package/template/.aioson/docs/squad/domain-classification.md +117 -117
  620. package/template/.aioson/docs/squad/genome-bindings.md +47 -47
  621. package/template/.aioson/docs/squad/package-contract.md +260 -234
  622. package/template/.aioson/docs/squad/quality-lens.md +60 -56
  623. package/template/.aioson/docs/squad/research-loop.md +59 -59
  624. package/template/.aioson/docs/squad/session-operations.md +117 -117
  625. package/template/.aioson/docs/squad/workflow-quality.md +165 -165
  626. package/template/.aioson/docs/tester/coverage-quality.md +351 -0
  627. package/template/.aioson/docs/ux-ui/accessibility-audit.md +55 -55
  628. package/template/.aioson/docs/ux-ui/audit-mode.md +86 -86
  629. package/template/.aioson/docs/ux-ui/component-map.md +35 -35
  630. package/template/.aioson/docs/ux-ui/design-execution.md +111 -111
  631. package/template/.aioson/docs/ux-ui/design-gate.md +27 -27
  632. package/template/.aioson/docs/ux-ui/research-mode.md +39 -39
  633. package/template/.aioson/docs/ux-ui/site-delivery.md +156 -156
  634. package/template/.aioson/docs/ux-ui/token-contract.md +57 -57
  635. package/template/.aioson/genomes/INDEX.md +195 -0
  636. package/template/.aioson/genomes/copywriting/SKILL.md +137 -0
  637. package/template/.aioson/genomes/copywriting/manifest.json +140 -0
  638. package/template/.aioson/genomes/copywriting/references/application-notes.md +145 -0
  639. package/template/.aioson/genomes/copywriting/references/decision-weights.md +45 -0
  640. package/template/.aioson/genomes/copywriting/references/frameworks/5-act-narrative.md +184 -0
  641. package/template/.aioson/genomes/copywriting/references/frameworks/classical-formulas.md +164 -0
  642. package/template/.aioson/genomes/copywriting/references/frameworks/offer-stack.md +195 -0
  643. package/template/.aioson/genomes/copywriting/references/frameworks/one-belief.md +135 -0
  644. package/template/.aioson/genomes/copywriting/references/frameworks/pms-research.md +211 -0
  645. package/template/.aioson/genomes/copywriting/references/frameworks/two-paths-close.md +190 -0
  646. package/template/.aioson/genomes/copywriting/references/heuristics.md +114 -0
  647. package/template/.aioson/genomes/copywriting/references/meta-axioms.md +68 -0
  648. package/template/.aioson/genomes/copywriting/references/methodology.md +115 -0
  649. package/template/.aioson/genomes/copywriting-brunson/SKILL.md +133 -0
  650. package/template/.aioson/genomes/copywriting-brunson/manifest.json +152 -0
  651. package/template/.aioson/genomes/copywriting-brunson/references/application-notes.md +113 -0
  652. package/template/.aioson/genomes/copywriting-brunson/references/decision-weights.md +33 -0
  653. package/template/.aioson/genomes/copywriting-brunson/references/evidence-and-attribution.md +81 -0
  654. package/template/.aioson/genomes/copywriting-brunson/references/frameworks/6-part-structure.md +136 -0
  655. package/template/.aioson/genomes/copywriting-brunson/references/frameworks/origin-story.md +121 -0
  656. package/template/.aioson/genomes/copywriting-brunson/references/frameworks/perfect-webinar-script.md +139 -0
  657. package/template/.aioson/genomes/copywriting-brunson/references/frameworks/persuasive-storytelling-5-structures.md +164 -0
  658. package/template/.aioson/genomes/copywriting-brunson/references/frameworks/value-stack.md +136 -0
  659. package/template/.aioson/genomes/copywriting-brunson/references/frameworks/who-what-why-how.md +110 -0
  660. package/template/.aioson/genomes/copywriting-brunson/references/meta-axioms.md +36 -0
  661. package/template/.aioson/genomes/copywriting-brunson/references/methodology.md +112 -0
  662. package/template/.aioson/git-guard.json +12 -11
  663. package/template/.aioson/mcp/servers.md +23 -23
  664. package/template/.aioson/profiler-reports/.gitkeep +1 -1
  665. package/template/.aioson/rules/README.md +69 -69
  666. package/template/.aioson/rules/_archived/.gitkeep +0 -0
  667. package/template/.aioson/rules/agent-language-policy.md +93 -93
  668. package/template/.aioson/rules/aioson-context-boundary.md +63 -63
  669. package/template/.aioson/rules/canonical-path-contract.md +47 -47
  670. package/template/.aioson/rules/data-format-convention.md +74 -74
  671. package/template/.aioson/rules/disk-first-artifacts.md +44 -44
  672. package/template/.aioson/rules/example-monetary-values.md +30 -30
  673. package/template/.aioson/rules/output-brevity.md +44 -44
  674. package/template/.aioson/rules/prd-section-ownership.md +49 -49
  675. package/template/.aioson/rules/security-baseline.md +139 -139
  676. package/template/.aioson/rules/spec-level-ownership.md +61 -61
  677. package/template/.aioson/rules/squad/README.md +50 -50
  678. package/template/.aioson/rules/squad-driver-pattern.md +81 -81
  679. package/template/.aioson/schemas/content-blueprint.schema.json +30 -30
  680. package/template/.aioson/schemas/genome-meta.schema.json +150 -150
  681. package/template/.aioson/schemas/genome.schema.json +115 -115
  682. package/template/.aioson/schemas/readiness.schema.json +27 -27
  683. package/template/.aioson/schemas/squad-blueprint.schema.json +228 -228
  684. package/template/.aioson/schemas/squad-manifest.schema.json +874 -874
  685. package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +243 -243
  686. package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -293
  687. package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -827
  688. package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -250
  689. package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -585
  690. package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -365
  691. package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +482 -482
  692. package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +387 -387
  693. package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +205 -205
  694. package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -338
  695. package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -977
  696. package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -218
  697. package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -326
  698. package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -461
  699. package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -293
  700. package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -352
  701. package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +210 -210
  702. package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -319
  703. package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -365
  704. package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -196
  705. package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -244
  706. package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -235
  707. package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -215
  708. package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -295
  709. package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +203 -203
  710. package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -339
  711. package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +407 -407
  712. package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +272 -272
  713. package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +524 -524
  714. package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +279 -279
  715. package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +289 -289
  716. package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +437 -437
  717. package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +222 -222
  718. package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -159
  719. package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -498
  720. package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -236
  721. package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -274
  722. package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -355
  723. package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -198
  724. package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -307
  725. package/template/.aioson/skills/design/interface-design/SKILL.md +47 -47
  726. package/template/.aioson/skills/design/interface-design/references/components-and-states.md +105 -105
  727. package/template/.aioson/skills/design/interface-design/references/design-directions.md +101 -101
  728. package/template/.aioson/skills/design/interface-design/references/handoff-and-quality.md +71 -71
  729. package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +74 -74
  730. package/template/.aioson/skills/design/interface-design/references/tokens-and-depth.md +173 -173
  731. package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +213 -213
  732. package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -228
  733. package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -855
  734. package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -334
  735. package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -342
  736. package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -286
  737. package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -458
  738. package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -723
  739. package/template/.aioson/skills/design/premium-command-center-ui/SKILL.md +62 -62
  740. package/template/.aioson/skills/design/premium-command-center-ui/references/operations.md +74 -74
  741. package/template/.aioson/skills/design/premium-command-center-ui/references/patterns.md +116 -116
  742. package/template/.aioson/skills/design/premium-command-center-ui/references/validation.md +47 -47
  743. package/template/.aioson/skills/design/premium-command-center-ui/references/visual-system.md +215 -215
  744. package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -31
  745. package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +66 -66
  746. package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +368 -368
  747. package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -150
  748. package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -270
  749. package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -189
  750. package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +165 -165
  751. package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +209 -209
  752. package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -324
  753. package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -508
  754. package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -223
  755. package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -374
  756. package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -356
  757. package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -288
  758. package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -289
  759. package/template/.aioson/skills/design-system/SKILL.md +92 -92
  760. package/template/.aioson/skills/design-system/components/SKILL.md +274 -274
  761. package/template/.aioson/skills/design-system/dashboards/SKILL.md +184 -184
  762. package/template/.aioson/skills/design-system/foundations/SKILL.md +250 -250
  763. package/template/.aioson/skills/design-system/motion/SKILL.md +197 -197
  764. package/template/.aioson/skills/design-system/patterns/SKILL.md +231 -231
  765. package/template/.aioson/skills/dynamic/README.md +30 -30
  766. package/template/.aioson/skills/dynamic/cardano-docs.md +16 -16
  767. package/template/.aioson/skills/dynamic/ethereum-docs.md +17 -17
  768. package/template/.aioson/skills/dynamic/flux-ui-docs.md +13 -13
  769. package/template/.aioson/skills/dynamic/laravel-docs.md +41 -41
  770. package/template/.aioson/skills/dynamic/npm-packages.md +16 -16
  771. package/template/.aioson/skills/dynamic/solana-docs.md +16 -16
  772. package/template/.aioson/skills/marketing/references/anti-patterns.md +254 -254
  773. package/template/.aioson/skills/marketing/references/cta-matrix.md +361 -0
  774. package/template/.aioson/skills/marketing/references/fascinations.md +192 -192
  775. package/template/.aioson/skills/marketing/references/five-acts.md +248 -248
  776. package/template/.aioson/skills/marketing/references/headline-matrix.md +358 -0
  777. package/template/.aioson/skills/marketing/references/market-intelligence.md +198 -198
  778. package/template/.aioson/skills/marketing/references/offer-structure.md +203 -203
  779. package/template/.aioson/skills/marketing/references/one-belief.md +149 -149
  780. package/template/.aioson/skills/marketing/references/patterns.md +218 -218
  781. package/template/.aioson/skills/marketing/references/platform-constraints.md +337 -0
  782. package/template/.aioson/skills/marketing/references/pms-research.md +193 -193
  783. package/template/.aioson/skills/marketing/vsl-craft.md +385 -385
  784. package/template/.aioson/skills/premium-visual-design/SKILL.md +83 -83
  785. package/template/.aioson/skills/premium-visual-design/components/agent-badge.md +92 -92
  786. package/template/.aioson/skills/premium-visual-design/components/dependency-node.md +102 -102
  787. package/template/.aioson/skills/premium-visual-design/components/mention-autocomplete.md +136 -136
  788. package/template/.aioson/skills/premium-visual-design/components/notification-center.md +136 -136
  789. package/template/.aioson/skills/premium-visual-design/components/review-action-bar.md +188 -188
  790. package/template/.aioson/skills/premium-visual-design/components/team-switcher.md +131 -131
  791. package/template/.aioson/skills/premium-visual-design/patterns/agent-message-thread.md +198 -198
  792. package/template/.aioson/skills/premium-visual-design/patterns/notification-panel.md +275 -275
  793. package/template/.aioson/skills/premium-visual-design/patterns/review-workflow-ui.md +234 -234
  794. package/template/.aioson/skills/premium-visual-design/patterns/task-dependency-graph.md +147 -147
  795. package/template/.aioson/skills/premium-visual-design/tokens/status-extended.md +142 -142
  796. package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +46 -46
  797. package/template/.aioson/skills/process/aioson-spec-driven/references/analyst.md +30 -30
  798. package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +109 -109
  799. package/template/.aioson/skills/process/aioson-spec-driven/references/architect.md +23 -23
  800. package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +44 -44
  801. package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +37 -37
  802. package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +47 -47
  803. package/template/.aioson/skills/process/aioson-spec-driven/references/deyvin.md +27 -27
  804. package/template/.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md +49 -49
  805. package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +101 -101
  806. package/template/.aioson/skills/process/aioson-spec-driven/references/pm.md +30 -30
  807. package/template/.aioson/skills/process/aioson-spec-driven/references/product.md +25 -25
  808. package/template/.aioson/skills/process/aioson-spec-driven/references/qa.md +30 -30
  809. package/template/.aioson/skills/process/aioson-spec-driven/references/sheldon.md +25 -25
  810. package/template/.aioson/skills/process/aioson-spec-driven/references/ui-language.md +75 -75
  811. package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +147 -147
  812. package/template/.aioson/skills/process/design-hybrid-forge/references/crossover-protocol.md +221 -221
  813. package/template/.aioson/skills/process/design-hybrid-forge/references/naming-registry.md +88 -88
  814. package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +306 -306
  815. package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +149 -149
  816. package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +208 -208
  817. package/template/.aioson/skills/process/design-hybrid-forge/references/variation-library.md +125 -125
  818. package/template/.aioson/skills/process/secure-tdd/SKILL.md +97 -97
  819. package/template/.aioson/skills/process/simplify/SKILL.md +173 -173
  820. package/template/.aioson/skills/references/premium-command-center-ui/master-application-prompt.md +79 -79
  821. package/template/.aioson/skills/references/premium-command-center-ui/operational-ux-playbook.md +253 -253
  822. package/template/.aioson/skills/references/premium-command-center-ui/quality-validation-checklist.md +82 -82
  823. package/template/.aioson/skills/references/premium-command-center-ui/visual-system-and-component-patterns.md +270 -270
  824. package/template/.aioson/skills/squad/SKILL.md +58 -58
  825. package/template/.aioson/skills/squad/formats/catalog.json +15 -15
  826. package/template/.aioson/skills/squad/formats/content/blog-post.md +47 -47
  827. package/template/.aioson/skills/squad/formats/content/newsletter.md +47 -47
  828. package/template/.aioson/skills/squad/formats/creative/podcast-script.md +43 -43
  829. package/template/.aioson/skills/squad/formats/creative/video-script.md +41 -41
  830. package/template/.aioson/skills/squad/formats/social/instagram-feed.md +42 -42
  831. package/template/.aioson/skills/squad/formats/social/linkedin-post.md +42 -42
  832. package/template/.aioson/skills/squad/formats/social/tiktok.md +39 -39
  833. package/template/.aioson/skills/squad/formats/social/twitter-thread.md +39 -39
  834. package/template/.aioson/skills/squad/formats/social/youtube-long.md +47 -47
  835. package/template/.aioson/skills/squad/formats/social/youtube-shorts.md +39 -39
  836. package/template/.aioson/skills/squad/patterns/multi-platform-pattern.md +108 -108
  837. package/template/.aioson/skills/squad/patterns/persona-based-pattern.md +98 -98
  838. package/template/.aioson/skills/squad/patterns/pipeline-pattern.md +106 -106
  839. package/template/.aioson/skills/squad/patterns/review-loop-pattern.md +81 -81
  840. package/template/.aioson/skills/squad/references/checklist-templates.md +122 -122
  841. package/template/.aioson/skills/squad/references/executor-archetypes.md +123 -123
  842. package/template/.aioson/skills/squad/references/workflow-templates.md +169 -169
  843. package/template/.aioson/skills/static/context-budget-guide.md +46 -46
  844. package/template/.aioson/skills/static/debugging-protocol.md +42 -42
  845. package/template/.aioson/skills/static/django-patterns.md +342 -342
  846. package/template/.aioson/skills/static/fastapi-patterns.md +344 -344
  847. package/template/.aioson/skills/static/filament-patterns.md +267 -267
  848. package/template/.aioson/skills/static/flux-ui-components.md +262 -262
  849. package/template/.aioson/skills/static/git-conventions.md +227 -227
  850. package/template/.aioson/skills/static/git-worktrees.md +36 -36
  851. package/template/.aioson/skills/static/harness-sensors.md +74 -74
  852. package/template/.aioson/skills/static/harness-validate/SKILL.md +46 -46
  853. package/template/.aioson/skills/static/jetstream-setup.md +200 -200
  854. package/template/.aioson/skills/static/landing-page-deploy.md +192 -192
  855. package/template/.aioson/skills/static/landing-page-forge.md +730 -730
  856. package/template/.aioson/skills/static/laravel-conventions.md +491 -491
  857. package/template/.aioson/skills/static/multi-agent-patterns.md +43 -43
  858. package/template/.aioson/skills/static/nextjs-patterns.md +321 -321
  859. package/template/.aioson/skills/static/node-express-patterns.md +317 -317
  860. package/template/.aioson/skills/static/node-typescript-patterns.md +282 -282
  861. package/template/.aioson/skills/static/rails-conventions.md +307 -307
  862. package/template/.aioson/skills/static/react-motion-patterns.md +599 -599
  863. package/template/.aioson/skills/static/static-html-patterns/checklists.md +43 -43
  864. package/template/.aioson/skills/static/static-html-patterns/css-tokens.md +609 -609
  865. package/template/.aioson/skills/static/static-html-patterns/motion.md +193 -193
  866. package/template/.aioson/skills/static/static-html-patterns/premium.md +711 -711
  867. package/template/.aioson/skills/static/static-html-patterns/structure.md +209 -209
  868. package/template/.aioson/skills/static/static-html-patterns/utilities.md +190 -190
  869. package/template/.aioson/skills/static/static-html-patterns.md +80 -80
  870. package/template/.aioson/skills/static/tall-stack-patterns.md +286 -286
  871. package/template/.aioson/skills/static/threejs-patterns.md +929 -929
  872. package/template/.aioson/skills/static/ui-ux-modern.md +76 -76
  873. package/template/.aioson/skills/static/web-research-cache.md +115 -115
  874. package/template/.aioson/skills/static/web3-cardano-patterns.md +337 -337
  875. package/template/.aioson/skills/static/web3-ethereum-patterns.md +310 -310
  876. package/template/.aioson/skills/static/web3-security-checklist.md +284 -284
  877. package/template/.aioson/skills/static/web3-solana-patterns.md +324 -324
  878. package/template/.aioson/squads/memory.md +5 -5
  879. package/template/.aioson/tasks/implementation-plan.md +327 -327
  880. package/template/.aioson/tasks/squad-analyze.md +83 -83
  881. package/template/.aioson/tasks/squad-create.md +148 -148
  882. package/template/.aioson/tasks/squad-design.md +206 -206
  883. package/template/.aioson/tasks/squad-execution-plan.md +279 -279
  884. package/template/.aioson/tasks/squad-export.md +20 -20
  885. package/template/.aioson/tasks/squad-extend.md +68 -68
  886. package/template/.aioson/tasks/squad-investigate.md +57 -57
  887. package/template/.aioson/tasks/squad-learning-review.md +44 -44
  888. package/template/.aioson/tasks/squad-output-config.md +177 -177
  889. package/template/.aioson/tasks/squad-pipeline.md +122 -122
  890. package/template/.aioson/tasks/squad-profile.md +48 -48
  891. package/template/.aioson/tasks/squad-refresh.md +236 -0
  892. package/template/.aioson/tasks/squad-repair.md +85 -85
  893. package/template/.aioson/tasks/squad-review.md +61 -61
  894. package/template/.aioson/tasks/squad-task-decompose.md +66 -66
  895. package/template/.aioson/tasks/squad-validate.md +58 -58
  896. package/template/.aioson/templates/reflect-prompts/current-state.md +36 -0
  897. package/template/.aioson/templates/reflect-prompts/how-it-works.md +23 -0
  898. package/template/.aioson/templates/reflect-prompts/what-it-does.md +21 -0
  899. package/template/.aioson/templates/squads/content-basic/template.json +21 -21
  900. package/template/.aioson/templates/squads/digital-marketing-agency/template.json +96 -96
  901. package/template/.aioson/templates/squads/media-channel/template.json +24 -24
  902. package/template/.aioson/templates/squads/research-analysis/template.json +22 -22
  903. package/template/.aioson/templates/squads/software-delivery/template.json +21 -21
  904. package/template/.claude/commands/aioson/agent/analyst.md +5 -5
  905. package/template/.claude/commands/aioson/agent/architect.md +5 -5
  906. package/template/.claude/commands/aioson/agent/briefing.md +5 -0
  907. package/template/.claude/commands/aioson/agent/committer.md +5 -5
  908. package/template/.claude/commands/aioson/agent/copywriter.md +5 -5
  909. package/template/.claude/commands/aioson/agent/design-hybrid-forge.md +5 -5
  910. package/template/.claude/commands/aioson/agent/dev.md +5 -5
  911. package/template/.claude/commands/aioson/agent/deyvin.md +5 -5
  912. package/template/.claude/commands/aioson/agent/discover.md +5 -0
  913. package/template/.claude/commands/aioson/agent/discovery-design-doc.md +5 -5
  914. package/template/.claude/commands/aioson/agent/genome.md +5 -5
  915. package/template/.claude/commands/aioson/agent/neo.md +5 -5
  916. package/template/.claude/commands/aioson/agent/orache.md +5 -5
  917. package/template/.claude/commands/aioson/agent/orchestrator.md +5 -5
  918. package/template/.claude/commands/aioson/agent/pair.md +5 -5
  919. package/template/.claude/commands/aioson/agent/pentester.md +5 -0
  920. package/template/.claude/commands/aioson/agent/pm.md +5 -5
  921. package/template/.claude/commands/aioson/agent/product.md +5 -5
  922. package/template/.claude/commands/aioson/agent/profiler-enricher.md +5 -5
  923. package/template/.claude/commands/aioson/agent/profiler-forge.md +5 -5
  924. package/template/.claude/commands/aioson/agent/profiler-researcher.md +5 -5
  925. package/template/.claude/commands/aioson/agent/qa.md +5 -5
  926. package/template/.claude/commands/aioson/agent/setup.md +5 -5
  927. package/template/.claude/commands/aioson/agent/sheldon.md +5 -5
  928. package/template/.claude/commands/aioson/agent/site-forge.md +5 -5
  929. package/template/.claude/commands/aioson/agent/squad.md +5 -5
  930. package/template/.claude/commands/aioson/agent/tester.md +5 -5
  931. package/template/.claude/commands/aioson/agent/ux-ui.md +5 -5
  932. package/template/.claude/commands/aioson/agent/validator.md +5 -5
  933. package/template/.gemini/GEMINI.md +13 -13
  934. package/template/.gemini/commands/aios-analyst.toml +7 -7
  935. package/template/.gemini/commands/aios-architect.toml +8 -8
  936. package/template/.gemini/commands/aios-committer.toml +7 -7
  937. package/template/.gemini/commands/aios-copywriter.toml +7 -7
  938. package/template/.gemini/commands/aios-cypher.toml +7 -7
  939. package/template/.gemini/commands/aios-dev.toml +9 -9
  940. package/template/.gemini/commands/aios-deyvin.toml +7 -7
  941. package/template/.gemini/commands/aios-discover.toml +6 -0
  942. package/template/.gemini/commands/aios-discovery-design-doc.toml +7 -7
  943. package/template/.gemini/commands/aios-genome.toml +7 -7
  944. package/template/.gemini/commands/aios-neo.toml +6 -6
  945. package/template/.gemini/commands/aios-orache.toml +7 -7
  946. package/template/.gemini/commands/aios-orchestrator.toml +9 -9
  947. package/template/.gemini/commands/aios-pair.toml +7 -7
  948. package/template/.gemini/commands/aios-pm.toml +9 -9
  949. package/template/.gemini/commands/aios-product.toml +6 -6
  950. package/template/.gemini/commands/aios-qa.toml +7 -7
  951. package/template/.gemini/commands/aios-setup.toml +6 -6
  952. package/template/.gemini/commands/aios-sheldon.toml +7 -7
  953. package/template/.gemini/commands/aios-site-forge.toml +7 -7
  954. package/template/.gemini/commands/aios-squad.toml +7 -7
  955. package/template/.gemini/commands/aios-tester.toml +7 -7
  956. package/template/.gemini/commands/aios-ux-ui.toml +9 -9
  957. package/template/.gemini/commands/aios-validator.toml +7 -7
  958. package/template/AGENTS.md +184 -183
  959. package/template/CLAUDE.md +98 -97
  960. package/template/OPENCODE.md +35 -34
  961. package/template/aioson-models.json +40 -40
  962. package/template/.aioson/genomes/copywriting.md +0 -204
  963. package/template/.aioson/genomes/copywriting.meta.json +0 -48
  964. package/template/.aioson/skills/process/secure-tdd/references/nextjs.md +0 -81
  965. package/template/.aioson/skills/process/secure-tdd/references/node-express.md +0 -91
  966. package/template/.aioson/skills/process/secure-tdd/references/planned-stacks.md +0 -33
  967. package/template/.claude/commands/aioson/agent/cypher.md +0 -5
@@ -1,1274 +1,1282 @@
1
- # Cenários de Uso
2
-
3
- > Exemplos completos e práticos de como usar o AIOSON em projetos reais.
4
-
5
- ---
6
-
7
- ## Cenário 1 — Landing page com formulário (MICRO)
8
-
9
- **Projeto:** Landing page de captura de leads com formulário de e-mail.
10
- **Stack:** HTML + Alpine.js + Tailwind + PHP simples para envio de e-mail.
11
- **Classificação:** MICRO (1 tipo de usuário, 1 integração, sem regras complexas → 1 ponto)
12
-
13
- ### Passo 1: Instalar e configurar
14
-
15
- ```bash
16
- mkdir landing-captura && cd landing-captura
17
- npx @jaimevalasek/aioson install
18
- npx @jaimevalasek/aioson setup:context . --defaults \
19
- --project-name="Landing Captura" \
20
- --project-type=site \
21
- --framework="None" \
22
- --framework-installed=false \
23
- --classification=MICRO \
24
- --lang=pt-BR
25
- ```
26
-
27
- ### Passo 2: Abrir Claude e ativar @setup
28
-
29
- No arquivo CLAUDE.md, o contexto já foi lido. Digite:
30
-
31
- ```
32
- /setup
33
- ```
34
-
35
- **O agente confirma o contexto pré-configurado:**
36
- ```
37
- Contexto carregado:
38
- - Projeto: Landing Captura
39
- - Tipo: site (MICRO)
40
- - Framework: Nenhum detectado
41
- - Idioma: pt-BR
42
-
43
- Classificação MICRO confirmada (0 pts): 1 tipo de usuário, sem integrações, sem regras complexas.
44
-
45
- Plano: @setup → @dev
46
- Próximo passo: ative /dev e descreva o que o projeto precisa ter.
47
- ```
48
-
49
- > **Nota:** As flags `--defaults` acima pré-preenchem o contexto sem perguntas interativas.
50
- > Se preferir o fluxo guiado, basta rodar `npx @jaimevalasek/aioson setup:context` sem flags — o agente
51
- > vai fazer as perguntas e identificar o projeto a partir da sua descrição.
52
-
53
- ### Passo 3: Ativar @dev diretamente
54
-
55
- ```
56
- /dev
57
-
58
- Preciso de uma landing page com:
59
- - Hero section com headline e CTA
60
- - Formulário de captura de e-mail (nome + e-mail)
61
- - Envio por PHP para um arquivo de log (sem banco)
62
- - Design limpo com Tailwind
63
- ```
64
-
65
- **O @dev entrega:**
66
- - `index.html` com estrutura completa
67
- - `style.css` ou classes Tailwind inline
68
- - `submit.php` para processar o formulário
69
- - Validação básica no frontend e backend
70
-
71
- ### Por que MICRO?
72
-
73
- Não precisa de @analyst (domínio simples), não precisa de @architect (estrutura trivial), não precisa de @qa (sem lógica crítica a testar). O @dev tem contexto suficiente para entregar direto.
74
-
75
- > Se até num projeto MICRO o pedido vier muito vago, você ainda pode encaixar `@discovery-design-doc` antes do `@dev`. Isso é exceção útil, não fluxo padrão.
76
-
77
- ---
78
-
79
- ## Cenário 2 — API REST com autenticação (SMALL)
80
-
81
- **Projeto:** API para gerenciar agendamentos de uma clínica médica.
82
- **Stack:** Laravel 11 + PostgreSQL + Sanctum.
83
- **Classificação:** SMALL (3 tipos de usuário=2pt, 2 integrações=1pt 3 pontos)
84
-
85
- ### Passo 1: Instalar
86
-
87
- ```bash
88
- # Laravel já está instalado e configurado
89
- cd minha-clinica-api
90
- npx @jaimevalasek/aioson install
91
- npx @jaimevalasek/aioson setup:context . --defaults \
92
- --project-name="Clinica API" \
93
- --project-type=api \
94
- --framework=Laravel \
95
- --framework-installed=true \
96
- --classification=SMALL \
97
- --lang=pt-BR
98
- ```
99
-
100
- ### Passo 2: Verificar saúde
101
-
102
- ```bash
103
- npx @jaimevalasek/aioson doctor
104
- ```
105
-
106
- ### Passo 3: @setup
107
-
108
- ```
109
- /setup
110
- ```
111
-
112
- **O agente confirma:**
113
- ```
114
- Contexto carregado:
115
- - Projeto: Clinica API (SMALL)
116
- - Framework: Laravel 11 (instalado ✓)
117
- - Classificação: SMALL
118
-
119
- Plano: @setup → @product → @analyst → @architect → @dev → @qa
120
-
121
- Próximo passo: /product
122
- Objetivo: gerar o PRD base antes de mapear pacientes, médicos, agendamentos e regras de negócio.
123
- ```
124
-
125
- ### Passo 4: @product — PRD base
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
-
143
- ```
144
- /product
145
- ```
146
-
147
- **O @product registra no `prd.md`:**
148
- - visão do produto
149
- - usuários principais
150
- - escopo inicial do MVP
151
- - perguntas em aberto
152
-
153
- ### Passo 5: @analyst — Descoberta do domínio
154
-
155
- ```
156
- /analyst
157
- ```
158
-
159
- **O agente faz suas 6 perguntas:**
160
-
161
- ```
162
- 1. Quem são os tipos de usuário?
163
- ```
164
- *Você responde:* Paciente, Médico, Recepcionista
165
-
166
- ```
167
- 2. Qual o fluxo principal que gera valor?
168
- ```
169
- *Você responde:* Paciente agenda consulta → médico confirma → recepcionista valida presença
170
-
171
- ```
172
- 3. Existe processo manual hoje?
173
- ```
174
- *Você responde:* Sim, tudo é feito por telefone e planilha Excel
175
-
176
- ```
177
- 4. Quais são as regras de negócio críticas?
178
- ```
179
- *Você responde:*
180
- - Médico pode ter 1 consulta por horário
181
- - Cancelamento até 24h antes sem penalidade
182
- - Paciente não pode ter 2 consultas no mesmo dia com o mesmo médico
183
-
184
- ```
185
- 5. Integrações externas?
186
- ```
187
- *Você responde:* Envio de e-mail de confirmação (SMTP) e SMS via Twilio
188
-
189
- ```
190
- 6. Dados sensíveis?
191
- ```
192
- *Você responde:* Dados de saúde dos pacientes (LGPD)
193
-
194
- **O @analyst entrega** `.aioson/context/discovery.md`:
195
- ```markdown
196
- ## Entidades principais
197
-
198
- | Entidade | Atributos principais | Restrições |
199
- |--------------|-----------------------------------------------|------------------------------|
200
- | User | id, name, email, role, password | role: patient/doctor/staff |
201
- | Doctor | id, user_id, crm, specialty, schedule_config | CRM único |
202
- | Patient | id, user_id, cpf, birth_date, health_notes | CPF único, dados LGPD |
203
- | Appointment | id, doctor_id, patient_id, date, status | 1 por médico/horário |
204
- | TimeSlot | id, doctor_id, starts_at, ends_at, available | — |
205
-
206
- ## Regras de negócio
207
- - RN01: 1 consulta por médico por horário (check no create)
208
- - RN02: Cancelamento livre até 24h antes
209
- - RN03: 1 consulta por paciente/médico por dia
210
-
211
- ## Integrações
212
- - SMTP (Laravel Mail) confirmação de agendamento
213
- - Twilio SMS — lembrete 1h antes
214
-
215
- ## Riscos
216
- - LGPD: health_notes precisa de criptografia ou controle de acesso
217
- - Conflito de horários: critical path, requer lock otimista
218
- ```
219
-
220
- ### Onde `@discovery-design-doc` entraria neste cenário
221
-
222
- Se antes do `@analyst` você ainda não souber bem:
223
- - o recorte do MVP
224
- - o que fica fora de escopo
225
- - quais módulos atuais serão afetados
226
- - ou se a API já está pronta para implementação
227
-
228
- vale inserir:
229
-
230
- ```text
231
- @setup -> @discovery-design-doc -> @analyst -> @architect -> @dev
232
- ```
233
-
234
- Isso ajuda especialmente quando o projeto existe e a clínica quer adicionar uma feature grande sem sair codando cedo demais.
235
-
236
- ### Passo 5: @architect — Estrutura do projeto
237
-
238
- ```
239
- /architect
240
- ```
241
-
242
- **O @architect o discovery e entrega** `.aioson/context/architecture.md`:
243
-
244
- ```
245
- Classificação: SMALL → estrutura Laravel padrão, sem sub-pastas excessivas
246
-
247
- app/
248
- Actions/
249
- CreateAppointmentAction.php
250
- CancelAppointmentAction.php
251
- Http/
252
- Controllers/
253
- AppointmentController.php
254
- DoctorController.php
255
- Requests/
256
- CreateAppointmentRequest.php
257
- Models/
258
- User.php, Doctor.php, Patient.php, Appointment.php
259
- Policies/
260
- AppointmentPolicy.php
261
- Events/
262
- AppointmentCreated.php
263
- AppointmentCancelled.php
264
- Listeners/
265
- SendConfirmationEmail.php
266
- SendSmsReminder.php
267
-
268
- database/migrations/
269
- resources/ (apenas para erros API)
270
- routes/api.php
271
- tests/Feature/AppointmentTest.php
272
- ```
273
-
274
- **Decisões técnicas:**
275
- - Auth: Sanctum (tokens de API)
276
- - N+1: Eager loading em todos os índices (with('doctor.user', 'patient.user'))
277
- - Timezone: UTC no banco, conversão na camada de apresentação
278
-
279
- ### Passo 6: @dev — Implementação com TDD Gate
280
-
281
- ```
282
- /dev
283
-
284
- Implemente a feature de agendamentos primeiro.
285
- Comece pela migration, model, action e controller.
286
- ```
287
-
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:
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):**
314
- ```php
315
- // app/Actions/CreateAppointmentAction.php
316
- class CreateAppointmentAction
317
- {
318
- public function execute(array $data): Appointment
319
- {
320
- // RN01: verificar conflito de horário
321
- $conflict = Appointment::where('doctor_id', $data['doctor_id'])
322
- ->where('date', $data['date'])
323
- ->where('status', '!=', 'cancelled')
324
- ->exists();
325
-
326
- if ($conflict) {
327
- throw new AppointmentConflictException();
328
- }
329
-
330
- // RN03: verificar duplicata paciente/médico/dia
331
- $duplicate = Appointment::where([
332
- 'patient_id' => $data['patient_id'],
333
- 'doctor_id' => $data['doctor_id'],
334
- ])->whereDate('date', $data['date'])->exists();
335
-
336
- if ($duplicate) {
337
- throw new DuplicateAppointmentException();
338
- }
339
-
340
- $appointment = Appointment::create($data);
341
- AppointmentCreated::dispatch($appointment);
342
- return $appointment;
343
- }
344
- }
345
- ```
346
-
347
- Roda o teste → **passa** (GREEN). Commit. Próximo passo.
348
-
349
- ### Passo 7: @qa — Testes
350
-
351
- ```
352
- /qa
353
-
354
- Revise a CreateAppointmentAction e escreva os testes para:
355
- - criação com sucesso
356
- - conflito de horário (RN01)
357
- - duplicata paciente (RN03)
358
- - cancelamento fora do prazo (RN02)
359
- ```
360
-
361
- **O @qa entrega** `tests/Feature/AppointmentTest.php` com todos os casos.
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
-
365
- ---
366
-
367
- ## Cenário 3 — SaaS multi-tenant (MEDIUM)
368
-
369
- **Projeto:** Plataforma SaaS de gestão de projetos para agências digitais.
370
- **Stack:** Next.js 14 (App Router) + Prisma + PostgreSQL + Stripe.
371
- **Usuários:** Admin da agência, Gerente de projeto, Cliente (visualização).
372
- **Classificação:** MEDIUM (3 usuários=2pt, 3+ integrações=2pt, regras complexas=2pt → 6 pontos)
373
-
374
- ### Passo 1: Instalar
375
-
376
- ```bash
377
- npx create-next-app@latest saas-agencia --typescript
378
- cd saas-agencia
379
- npx @jaimevalasek/aioson install
380
- npx @jaimevalasek/aioson setup:context . --defaults \
381
- --project-name="Agency SaaS" \
382
- --project-type=web_app \
383
- --framework="Next.js" \
384
- --framework-installed=true \
385
- --classification=MEDIUM \
386
- --lang=pt-BR
387
- ```
388
-
389
- ### Passo 2: @setup
390
-
391
- ```
392
- /setup
393
- ```
394
-
395
- **O agente confirma o plano MEDIUM completo:**
396
- ```
397
- Plano de execução:
398
- 1. /product → PRD base vivo
399
- 2. /analyst → discovery e modelagem de domínio
400
- 3. /architect → estrutura de pastas Next.js MEDIUM + decisões técnicas
401
- 4. /ux-ui → UI/UX, sistema de design e componentes
402
- 5. /pm → priorização e critérios de aceite no PRD vivo
403
- 6. /orchestrator lanes de desenvolvimento paralelo
404
- 7. /dev → implementação por lane
405
- 8. /qa → revisão e testes
406
-
407
- Próximo: /product
408
- ```
409
-
410
- ### Passo 3: @product
411
-
412
- ```
413
- /product
414
- ```
415
-
416
- **O @product gera o PRD base** com visão, problema, usuários, MVP inicial e direção visual.
417
-
418
- ### Passo 4: @analyst
419
-
420
- O analista descobre:
421
- - **Entidades:** Organization, Project, Task, User, Invoice, Subscription
422
- - **Multi-tenancy:** Cada organização é isolada (Row-Level Security)
423
- - **Integrações:** Stripe (billing), GitHub (integração de commits), Slack (notificações), S3 (uploads)
424
- - **Regras:** Plano free = máx 3 projetos, Plano pro = ilimitado; cobrança proporcional por membro
425
-
426
- ### Passo 5: @architect
427
-
428
- Para MEDIUM com Next.js App Router:
429
-
430
- ```
431
- src/
432
- app/
433
- (auth)/login/page.tsx
434
- (dashboard)/
435
- layout.tsx ← verifica tenant
436
- projects/page.tsx
437
- projects/[id]/page.tsx
438
- api/
439
- webhooks/stripe/route.ts
440
- components/
441
- ui/ ← Button, Input, Modal (design system)
442
- features/
443
- projects/ProjectCard.tsx
444
- tasks/TaskBoard.tsx
445
- lib/
446
- db/prisma.ts
447
- auth/session.ts
448
- billing/stripe.ts
449
- actions/ Server Actions
450
- project.actions.ts
451
- task.actions.ts
452
- types/
453
- ```
454
-
455
- ### Passo 6: UI/UX (`@ux-ui`)
456
-
457
- ```
458
- /ux-ui
459
-
460
- Precisamos de:
461
- - Dashboard principal com lista de projetos
462
- - Board Kanban para tarefas
463
- - Sidebar com navegação entre projetos
464
- - Página de configurações de billing
465
- ```
466
-
467
- **O agente UI/UX (`@ux-ui`) entrega** `.aioson/context/ui-spec.md`:
468
- - Tokens: primary=#6366F1, gray scale, radius-md=8px
469
- - Componentes: ProjectCard, TaskCard, KanbanBoard, Sidebar, BillingModal
470
- - Estados: loading skeleton, empty state, error state para cada componente
471
- - Acessibilidade: foco visível, ARIA labels em boards interativos
472
-
473
- ### Passo 7: @pm
474
-
475
- ```
476
- /pm
477
- ```
478
-
479
- **O @pm enriquece** `.aioson/context/prd.md` preservando visão, usuários e identidade visual. O foco passa a ser priorização, fases e critérios de aceite compactos:
480
-
481
- ```markdown
482
- ## Escopo do MVP
483
- ### Must-have 🔴
484
- - Criar e gerenciar projetos
485
- - Operar board Kanban com atribuição
486
- - Convidar membros por e-mail
487
-
488
- ## Plano de entrega
489
- ### Fase 1 — Núcleo
490
- 1. Projetos e permissões
491
- 2. Board Kanban
492
- 3. Convites e limites do plano
493
-
494
- ### Fase 2 Monetização
495
- 1. Billing e Stripe
496
- 2. Regras de bloqueio por plano
497
-
498
- ## Criterios de aceite
499
- | AC | Descricao |
500
- |---|---|
501
- | AC-01 | Admin cria projeto com nome, descricao e deadline |
502
- | AC-02 | Board possui colunas To Do / In Progress / Done |
503
- | AC-03 | Convite por e-mail expira em 48h |
504
- | AC-04 | Conta free respeita limite de projetos |
505
- ```
506
-
507
- ### Passo 8: @orchestrator
508
-
509
- ```
510
- /orchestrator
511
- ```
512
-
513
- Ou via CLI:
514
- ```bash
515
- npx @jaimevalasek/aioson parallel:init --workers=3
516
- npx @jaimevalasek/aioson parallel:assign --source=prd --workers=3
517
- ```
518
-
519
- **O orquestrador cria 3 lanes:**
520
-
521
- ```
522
- Lane 1 (@dev instância A):
523
- - Auth + Multi-tenancy (Organization, User, middleware)
524
- - US-03: Sistema de convites
525
-
526
- Lane 2 (@dev instância B):
527
- - US-01: CRUD de projetos
528
- - US-02: Board Kanban + drag-and-drop
529
-
530
- Lane 3 (@dev instância C):
531
- - US-04: Integração Stripe
532
- - Webhook handler
533
- - Página de billing
534
- ```
535
-
536
- **Cada @dev instance** seu lane file:
537
- ```
538
- Lane 1: /dev Implemente o escopo do agent-1.status.md
539
- Lane 2: /dev Implemente o escopo do agent-2.status.md
540
- Lane 3: /dev Implemente o escopo do agent-3.status.md
541
- ```
542
-
543
- **Monitorar progresso:**
544
- ```bash
545
- npx @jaimevalasek/aioson parallel:status
546
- ```
547
-
548
- ### Passo 8: @qa
549
-
550
- ```
551
- /qa
552
-
553
- Revise as implementações das 3 lanes e escreva testes para:
554
- - Isolamento de tenant (crítico)
555
- - Fluxo de billing e webhook Stripe
556
- - Permissões por role (admin vs gerente vs cliente)
557
- ```
558
-
559
- ---
560
-
561
- ## Cenário 4 dApp Ethereum (MEDIUM)
562
-
563
- **Projeto:** Marketplace de NFTs com contrato de royalties.
564
- **Stack:** Hardhat + Solidity + Next.js + wagmi + RainbowKit.
565
- **Classificação:** MEDIUM (múltiplos usuários, Web3 + frontend, regras de contrato complexas)
566
-
567
- ### Passo 1: Instalar
568
-
569
- ```bash
570
- mkdir nft-marketplace && cd nft-marketplace
571
- npx create-next-app@latest frontend --typescript
572
- npx hardhat init # no mesmo diretório raiz
573
- npx @jaimevalasek/aioson install
574
- npx @jaimevalasek/aioson setup:context . --defaults \
575
- --project-name="NFT Marketplace" \
576
- --project-type=dapp \
577
- --framework=Hardhat \
578
- --framework-installed=true \
579
- --classification=MEDIUM \
580
- --web3-enabled=true \
581
- --web3-networks=ethereum \
582
- --contract-framework=Hardhat \
583
- --wallet-provider=wagmi \
584
- --lang=pt-BR
585
- ```
586
-
587
- > **Nota:** Se Hardhat e Next.js coexistem no mesmo diretório, o AIOSON detecta automaticamente como **monorepo** e exibe um aviso de configuração.
588
-
589
- ### Passo 2: @analyst
590
-
591
- O analista identifica:
592
- - **Buyer:** compra NFTs via marketplace
593
- - **Creator:** lista NFTs com royalty configurado
594
- - **Marketplace:** cobra fee sobre cada venda
595
-
596
- **Entidades on-chain:**
597
- | Entidade | Tipo | Notas |
598
- |---|---|---|
599
- | NFT | ERC-721 | tokenURI no IPFS |
600
- | Listing | struct | price, seller, royaltyBps |
601
- | Sale | event | buyer, seller, price, royalty |
602
-
603
- **Regras críticas:**
604
- - RN01: Royalty máximo de 10% (1000 bps)
605
- - RN02: Reentrancy guard em todas as funções de pagamento
606
- - RN03: Withdraw pattern para pagamentos (nunca push)
607
-
608
- ### Passo 3: @architect
609
-
610
- **Estrutura monorepo:**
611
- ```
612
- contracts/
613
- Marketplace.sol
614
- NFT.sol
615
- interfaces/IMarketplace.sol
616
- scripts/
617
- deploy.js
618
- test/
619
- Marketplace.test.js
620
- frontend/
621
- src/
622
- app/
623
- marketplace/page.tsx
624
- create/page.tsx
625
- components/
626
- NFTCard.tsx
627
- ListingModal.tsx
628
- hooks/
629
- useMarketplace.ts ← wagmi hooks
630
- lib/
631
- contracts.ts ← ABIs e endereços
632
- ```
633
-
634
- ### Passo 4: @dev (contratos)
635
-
636
- ```
637
- /dev
638
-
639
- Implemente o contrato Marketplace.sol com:
640
- - ERC-721 listing
641
- - Royalties on-chain
642
- - Reentrancy guard (OpenZeppelin)
643
- - Withdraw pattern para pagamentos
644
- ```
645
-
646
- **O @dev escreve:**
647
- ```solidity
648
- // SPDX-License-Identifier: MIT
649
- pragma solidity ^0.8.20;
650
-
651
- import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
652
- import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
653
-
654
- contract Marketplace is ReentrancyGuard {
655
- struct Listing {
656
- address seller;
657
- uint256 price;
658
- uint256 royaltyBps; // base points: 1000 = 10%
659
- address royaltyRecipient;
660
- }
661
-
662
- mapping(address => mapping(uint256 => Listing)) public listings;
663
- mapping(address => uint256) public pendingWithdrawals; // pull pattern
664
-
665
- uint256 public constant MAX_ROYALTY_BPS = 1000;
666
-
667
- function buyNFT(address nftContract, uint256 tokenId)
668
- external payable nonReentrant
669
- {
670
- Listing memory listing = listings[nftContract][tokenId];
671
- require(msg.value >= listing.price, "Insufficient payment");
672
-
673
- uint256 royalty = (listing.price * listing.royaltyBps) / 10000;
674
- uint256 sellerAmount = listing.price - royalty;
675
-
676
- // Acumular (não enviar direto — evita reentrancy)
677
- pendingWithdrawals[listing.royaltyRecipient] += royalty;
678
- pendingWithdrawals[listing.seller] += sellerAmount;
679
-
680
- delete listings[nftContract][tokenId];
681
- IERC721(nftContract).safeTransferFrom(listing.seller, msg.sender, tokenId);
682
- }
683
-
684
- function withdraw() external nonReentrant {
685
- uint256 amount = pendingWithdrawals[msg.sender];
686
- require(amount > 0, "Nothing to withdraw");
687
- pendingWithdrawals[msg.sender] = 0;
688
- payable(msg.sender).transfer(amount);
689
- }
690
- }
691
- ```
692
-
693
- ### Passo 5: @qa (auditoria de contrato)
694
-
695
- ```
696
- /qa
697
-
698
- Audite o Marketplace.sol para:
699
- - Vulnerabilidades de reentrancy
700
- - Integer overflow/underflow
701
- - Access control
702
- - Edge cases no withdraw pattern
703
- Escreva testes Hardhat cobrindo todos os cenários críticos.
704
- ```
705
-
706
- ---
707
-
708
- ## Cenário 5 — API Node.js com Fastify (SMALL)
709
-
710
- **Projeto:** API de gerenciamento de pedidos para restaurante.
711
- **Stack:** Node.js + Fastify + PostgreSQL + Prisma + JWT.
712
- **Classificação:** SMALL (2 tipos de usuário=1pt, 2 integrações=1pt, algumas regras=1pt → 3 pontos)
713
-
714
- ### Passo 1: Instalar
715
-
716
- ```bash
717
- mkdir restaurante-api && cd restaurante-api
718
- npm init -y
719
- npm install fastify @prisma/client
720
- npm install -D prisma
721
- npx @jaimevalasek/aioson install
722
- npx @jaimevalasek/aioson setup:context . --defaults \
723
- --project-name="Restaurante API" \
724
- --project-type=api \
725
- --framework="Node" \
726
- --framework-installed=true \
727
- --classification=SMALL \
728
- --lang=pt-BR
729
- ```
730
-
731
- ### Passo 2: @setup
732
-
733
- ```
734
- /setup
735
- ```
736
-
737
- **O agente confirma:**
738
- ```
739
- Framework detectado: Node.js (package.json ✓)
740
- Projeto: Restaurante API (SMALL)
741
-
742
- Plano: @setup → @product → @analyst → @architect → @dev → @qa
743
- Próximo: /product
744
- ```
745
-
746
- ### Passo 3: @product
747
-
748
- ```
749
- /product
750
- ```
751
-
752
- **O @product gera o PRD base** com visão, usuários, escopo do MVP e fora do escopo.
753
-
754
- ### Passo 4: @analyst
755
-
756
- ```
757
- /analyst
758
- ```
759
-
760
- *Você responde às perguntas:*
761
-
762
- - **Usuários:** Garçom (cria pedidos), Cozinha (atualiza status)
763
- - **Fluxo principal:** Garçom abre mesa → adiciona itens → cozinha vê e prepara → garçom fecha conta
764
- - **Regras críticas:**
765
- - Pedido não pode ser fechado com itens pendentes
766
- - Item cancelado não volta ao estoque (soft delete no pedido)
767
- - Mesa só pode ter 1 pedido aberto por vez
768
- - **Integrações:** WhatsApp (aviso ao garçom quando prato fica pronto), impressora fiscal
769
-
770
- **O @analyst entrega** `.aioson/context/discovery.md`:
771
-
772
- ```markdown
773
- ## Entidades principais
774
-
775
- | Entidade | Atributos | Restrições |
776
- |-------------|------------------------------------------|----------------------------------|
777
- | Table | id, number, status (free/occupied) | 1 pedido aberto por vez |
778
- | Order | id, table_id, status, opened_at | closed só se itens = ready |
779
- | OrderItem | id, order_id, menu_item_id, qty, status | status: pending/ready/cancelled |
780
- | MenuItem | id, name, price, category, available | — |
781
- | User | id, name, role (waiter/kitchen) | JWT auth por role |
782
-
783
- ## Regras de negócio
784
- - RN01: Mesa não pode ter 2 pedidos abertos simultaneamente
785
- - RN02: Pedido fecha se todos os itens estiverem ready ou cancelled
786
- - RN03: Garçom suas próprias mesas; cozinha tudo
787
-
788
- ## Integrações
789
- - WhatsApp API (Evolution API) notificação quando item fica pronto
790
- - Impressora fiscal — payload no fechamento do pedido
791
- ```
792
-
793
- ### Passo 4: @architect
794
-
795
- ```
796
- /architect
797
- ```
798
-
799
- **O @architect entrega** `.aioson/context/architecture.md`:
800
-
801
- ```
802
- Classificação: SMALL → estrutura Fastify por domínio
803
-
804
- src/
805
- plugins/
806
- prisma.js ← decorador global do cliente Prisma
807
- auth.js ← fastify-jwt plugin
808
- routes/
809
- orders/
810
- index.js ← GET /orders, POST /orders
811
- [id].js ← GET, PATCH, DELETE /orders/:id
812
- items/
813
- index.js
814
- tables/
815
- index.js
816
- services/
817
- order.service.js ← regras de negócio (RN01, RN02)
818
- notification.service.js WhatsApp integration
819
- schemas/
820
- order.schema.js ← Fastify JSON Schema para validação
821
- app.js
822
-
823
- prisma/
824
- schema.prisma
825
- migrations/
826
-
827
- test/
828
- orders.test.js
829
- ```
830
-
831
- **Decisões técnicas:**
832
- - Auth: `fastify-jwt` com roles no payload (`{ id, role }`)
833
- - Validação: Fastify JSON Schema (não Zod — evitar overhead)
834
- - ORM: Prisma (type-safe, migrations automáticas)
835
-
836
- ### Passo 5: @dev
837
-
838
- ```
839
- /dev
840
-
841
- Implemente a rota POST /orders e o OrderService.
842
- Inclua a validação RN01 (mesa com pedido aberto).
843
- ```
844
-
845
- **O @dev implementa:**
846
-
847
- ```javascript
848
- // src/services/order.service.js
849
- class OrderService {
850
- constructor(prisma) {
851
- this.prisma = prisma;
852
- }
853
-
854
- async create({ tableId, waiterId }) {
855
- // RN01: verificar mesa livre
856
- const open = await this.prisma.order.findFirst({
857
- where: { tableId, status: { in: ['open', 'in_progress'] } },
858
- });
859
- if (open) {
860
- throw new Error('Table already has an open order');
861
- }
862
-
863
- return this.prisma.order.create({
864
- data: { tableId, waiterId, status: 'open' },
865
- });
866
- }
867
-
868
- async close(orderId) {
869
- // RN02: verificar itens pendentes
870
- const pending = await this.prisma.orderItem.count({
871
- where: { orderId, status: 'pending' },
872
- });
873
- if (pending > 0) {
874
- throw new Error('Cannot close order with pending items');
875
- }
876
-
877
- return this.prisma.order.update({
878
- where: { id: orderId },
879
- data: { status: 'closed', closedAt: new Date() },
880
- });
881
- }
882
- }
883
-
884
- module.exports = { OrderService };
885
- ```
886
-
887
- ```javascript
888
- // src/routes/orders/index.js
889
- module.exports = async function orderRoutes(fastify) {
890
- const service = new OrderService(fastify.prisma);
891
-
892
- fastify.post('/', {
893
- preHandler: [fastify.authenticate, fastify.requireRole('waiter')],
894
- schema: {
895
- body: { type: 'object', required: ['tableId'], properties: {
896
- tableId: { type: 'integer' }
897
- }},
898
- },
899
- }, async (request, reply) => {
900
- const order = await service.create({
901
- tableId: request.body.tableId,
902
- waiterId: request.user.id,
903
- });
904
- return reply.code(201).send(order);
905
- });
906
- };
907
- ```
908
-
909
- ### Passo 6: @qa
910
-
911
- ```
912
- /qa
913
-
914
- Escreva testes para o OrderService:
915
- - criação com sucesso
916
- - RN01: mesa com pedido aberto (deve lançar erro)
917
- - RN02: fechamento com itens pendentes (deve lançar erro)
918
- - fechamento com sucesso
919
- ```
920
-
921
- ---
922
-
923
- ## Cenário 6 — Aplicação Rails + Hotwire (SMALL)
924
-
925
- **Projeto:** Plataforma colaborativa de gerenciamento de tarefas.
926
- **Stack:** Rails 7 + PostgreSQL + Hotwire (Turbo + Stimulus) + Tailwind CSS.
927
- **Classificação:** SMALL (2 tipos de usuário=1pt, 1 integração=1pt, algumas regras=1pt → 3 pontos)
928
-
929
- ### Passo 1: Instalar
930
-
931
- ```bash
932
- rails new task-app --database=postgresql --css=tailwind
933
- cd task-app
934
- npx @jaimevalasek/aioson install
935
- npx @jaimevalasek/aioson setup:context . --defaults \
936
- --project-name="Task App" \
937
- --project-type=web_app \
938
- --framework="Rails" \
939
- --framework-installed=true \
940
- --classification=SMALL \
941
- --lang=pt-BR
942
- ```
943
-
944
- ### Passo 2: @setup
945
-
946
- ```
947
- /setup
948
- ```
949
-
950
- **O agente confirma:**
951
- ```
952
- Framework detectado: Rails (config/application.rb ✓)
953
- Versão: Rails 7.x
954
-
955
- Plano: @setup → @product → @analyst → @architect → @dev → @qa
956
- Próximo: /product
957
- ```
958
-
959
- ### Passo 3: @product
960
-
961
- ```
962
- /product
963
- ```
964
-
965
- **O @product gera o PRD base** com visão, usuários, escopo do MVP e fora do escopo.
966
-
967
- ### Passo 4: @analyst
968
-
969
- *Você responde às perguntas:*
970
-
971
- - **Usuários:** Admin (cria projetos e convida membros), Membro (cria e move tarefas)
972
- - **Fluxo:** Admin cria projeto → convida membros → membros criam e movem tarefas entre colunas (To Do / In Progress / Done)
973
- - **Regras:**
974
- - Tarefa só pode ser atribuída a membros do mesmo projeto
975
- - Admin pode arquivar projeto (tarefas ficam read-only)
976
- - Membros recebem e-mail ao serem atribuídos a uma tarefa
977
- - **Integrações:** ActionMailer (e-mails de notificação)
978
-
979
- **O @analyst entrega** `.aioson/context/discovery.md`:
980
-
981
- ```markdown
982
- ## Entidades
983
- | Entidade | Atributos | Restrições |
984
- |-------------|----------------------------------------------|-------------------------------------|
985
- | User | id, name, email, password_digest | Devise ou has_secure_password |
986
- | Project | id, name, archived, owner_id | owner deve ser admin |
987
- | Membership | id, project_id, user_id, role | role: admin/member |
988
- | Task | id, project_id, assignee_id, title, status | assignee deve ser membro do projeto |
989
- | Column | status enum: todo/in_progress/done | — |
990
-
991
- ## Regras
992
- - RN01: Atribuição restrita a membros do projeto (validação no model)
993
- - RN02: Projeto arquivado tarefas readonly
994
- - RN03: E-mail via ActionMailer ao atribuir tarefa
995
- ```
996
-
997
- ### Passo 4: @architect
998
-
999
- **O @architect entrega:**
1000
-
1001
- ```
1002
- Classificação: SMALL estrutura Rails padrão com concerns
1003
-
1004
- app/
1005
- models/
1006
- user.rb, project.rb, membership.rb, task.rb
1007
- concerns/
1008
- archivable.rb ← módulo para lógica de arquivamento
1009
- controllers/
1010
- projects_controller.rb
1011
- tasks_controller.rb
1012
- memberships_controller.rb
1013
- views/
1014
- projects/
1015
- index.html.erb
1016
- show.html.erbboard Kanban
1017
- tasks/
1018
- _task.html.erb ← Turbo Frame por tarefa
1019
- _form.html.erb
1020
- layouts/
1021
- application.html.erb
1022
- mailers/
1023
- task_mailer.rb
1024
- javascript/
1025
- controllers/
1026
- kanban_controller.js Stimulus: drag-and-drop colunas
1027
-
1028
- config/routes.rb
1029
- db/schema.rb
1030
- test/models/, test/controllers/
1031
- ```
1032
-
1033
- **Decisões técnicas:**
1034
- - Realtime: Turbo Streams via ActionCable (move de tarefa sem refresh)
1035
- - Auth: `has_secure_password` + `before_action :require_login`
1036
- - Drag-and-drop: Stimulus + Sortable.js (sem React)
1037
-
1038
- ### Passo 5: @dev
1039
-
1040
- ```
1041
- /dev
1042
-
1043
- Implemente a move de tarefa via Turbo Stream.
1044
- Quando o usuário arrasta uma tarefa para outra coluna,
1045
- o status deve ser atualizado sem reload de página.
1046
- ```
1047
-
1048
- **O @dev implementa:**
1049
-
1050
- ```ruby
1051
- # app/controllers/tasks_controller.rb
1052
- def update
1053
- @task = current_user.accessible_tasks.find(params[:id])
1054
-
1055
- if @task.update(task_params)
1056
- respond_to do |format|
1057
- format.turbo_stream do
1058
- render turbo_stream: [
1059
- turbo_stream.remove("task_#{@task.id}"),
1060
- turbo_stream.append("column_#{@task.status}", partial: "tasks/task", locals: { task: @task })
1061
- ]
1062
- end
1063
- format.html { redirect_to project_path(@task.project) }
1064
- end
1065
- end
1066
- end
1067
- ```
1068
-
1069
- ```javascript
1070
- // app/javascript/controllers/kanban_controller.js
1071
- import { Controller } from "@hotwired/stimulus"
1072
- import Sortable from "sortablejs"
1073
-
1074
- export default class extends Controller {
1075
- static targets = ["column"]
1076
-
1077
- connect() {
1078
- this.columnTargets.forEach(column => {
1079
- new Sortable(column, {
1080
- group: "tasks",
1081
- animation: 150,
1082
- onEnd: (event) => this.#moved(event),
1083
- })
1084
- })
1085
- }
1086
-
1087
- #moved(event) {
1088
- const taskId = event.item.dataset.taskId
1089
- const newStatus = event.to.dataset.status
1090
- fetch(`/tasks/${taskId}`, {
1091
- method: "PATCH",
1092
- headers: { "Content-Type": "application/json", "X-CSRF-Token": this.#csrfToken() },
1093
- body: JSON.stringify({ task: { status: newStatus } }),
1094
- })
1095
- }
1096
-
1097
- #csrfToken() {
1098
- return document.querySelector('meta[name="csrf-token"]').content
1099
- }
1100
- }
1101
- ```
1102
-
1103
- ### Passo 6: @qa
1104
-
1105
- ```
1106
- /qa
1107
-
1108
- Escreva testes para:
1109
- - RN01: atribuição de tarefa a não-membro (deve falhar)
1110
- - RN02: projeto arquivado — atualização de tarefa deve ser bloqueada
1111
- - Turbo Stream: resposta correta ao mover tarefa
1112
- ```
1113
-
1114
- ---
1115
-
1116
- ## Cenário 7 — API Python com FastAPI (MICRO)
1117
-
1118
- **Projeto:** API de controle de estoque pessoal.
1119
- **Stack:** Python + FastAPI + SQLite + SQLAlchemy + Pydantic.
1120
- **Classificação:** MICRO (1 tipo de usuário=0pt, 0 integrações=0pt, sem regras complexas=0pt → 0 pontos)
1121
-
1122
- > **Django:** Para projetos Python SMALL ou MEDIUM (múltiplos usuários, banco relacional maior, admin panel), prefira Django + DRF. O FastAPI brilha em APIs simples, serviços assíncronos e microsserviços.
1123
-
1124
- ### Passo 1: Instalar
1125
-
1126
- ```bash
1127
- mkdir estoque-api && cd estoque-api
1128
- pip install fastapi uvicorn sqlalchemy pydantic
1129
- npx @jaimevalasek/aioson install
1130
- npx @jaimevalasek/aioson setup:context . --defaults \
1131
- --project-name="Estoque API" \
1132
- --project-type=api \
1133
- --framework="FastAPI" \
1134
- --framework-installed=true \
1135
- --classification=MICRO \
1136
- --lang=pt-BR
1137
- ```
1138
-
1139
- ### Passo 2: @setup (detectando FastAPI)
1140
-
1141
- ```
1142
- /setup
1143
- ```
1144
-
1145
- **O agente confirma:**
1146
- ```
1147
- Framework detectado: FastAPI (dependência em requirements.txt ✓)
1148
- Classificação: MICRO
1149
-
1150
- Nota: FastAPI não está na lista padrão de detecção automática.
1151
- O framework foi registrado a partir da sua descrição.
1152
-
1153
- Plano simplificado (MICRO): @setup → @dev
1154
- Próximo passo: ative /dev e descreva o que precisa.
1155
- ```
1156
-
1157
- > O @setup registra `framework: "FastAPI"` no context.md e segue normalmente.
1158
- > Não existe stack "errada" qualquer framework que você descrever é aceito.
1159
-
1160
- ### Passo 3: @dev direto
1161
-
1162
- ```
1163
- /dev
1164
-
1165
- Crie uma API FastAPI para controle de estoque com:
1166
- - CRUD de produtos (nome, quantidade, preço, categoria)
1167
- - Endpoint de busca por categoria
1168
- - SQLAlchemy com SQLite
1169
- - Validação via Pydantic
1170
- ```
1171
-
1172
- **O @dev implementa:**
1173
-
1174
- ```python
1175
- # main.py
1176
- from fastapi import FastAPI, Depends, HTTPException
1177
- from sqlalchemy.orm import Session
1178
- from . import models, schemas, crud
1179
- from .database import SessionLocal, engine
1180
-
1181
- models.Base.metadata.create_all(bind=engine)
1182
- app = FastAPI(title="Estoque API")
1183
-
1184
- def get_db():
1185
- db = SessionLocal()
1186
- try:
1187
- yield db
1188
- finally:
1189
- db.close()
1190
-
1191
- @app.post("/products/", response_model=schemas.Product, status_code=201)
1192
- def create_product(product: schemas.ProductCreate, db: Session = Depends(get_db)):
1193
- return crud.create_product(db, product)
1194
-
1195
- @app.get("/products/", response_model=list[schemas.Product])
1196
- def list_products(category: str | None = None, db: Session = Depends(get_db)):
1197
- return crud.get_products(db, category=category)
1198
-
1199
- @app.put("/products/{product_id}", response_model=schemas.Product)
1200
- def update_product(product_id: int, product: schemas.ProductCreate, db: Session = Depends(get_db)):
1201
- db_product = crud.update_product(db, product_id, product)
1202
- if not db_product:
1203
- raise HTTPException(status_code=404, detail="Product not found")
1204
- return db_product
1205
- ```
1206
-
1207
- ```python
1208
- # schemas.py
1209
- from pydantic import BaseModel, Field
1210
-
1211
- class ProductBase(BaseModel):
1212
- name: str
1213
- quantity: int = Field(ge=0)
1214
- price: float = Field(ge=0)
1215
- category: str
1216
-
1217
- class ProductCreate(ProductBase):
1218
- pass
1219
-
1220
- class Product(ProductBase):
1221
- id: int
1222
- class Config:
1223
- from_attributes = True
1224
- ```
1225
-
1226
- **Por que MICRO?**
1227
- Domínio único (Produto), sem autenticação, sem integrações externas. O @dev tem contexto suficiente para implementar sem @analyst ou @architect.
1228
-
1229
- ---
1230
-
1231
- ## Dicas gerais
1232
-
1233
- ### Quando recomeçar um agente
1234
-
1235
- Se você forneceu informações incompletas, pode simplesmente reativar:
1236
- ```
1237
- /analyst
1238
-
1239
- Preciso adicionar uma informação: o sistema também vai ter integração com Mercado Pago
1240
- ```
1241
-
1242
- O agente vai incorporar a nova informação antes de gerar a entrega final.
1243
-
1244
- ### Quando pular um agente
1245
-
1246
- - Em projetos **MICRO**, pule @analyst, @architect e @qa — vá direto ao @dev.
1247
- - Se o projeto não tem interface visual, pode pular @ux-ui mesmo em projetos SMALL.
1248
- - Se o projeto MEDIUM tem módulos pouco interdependentes, pode pular @orchestrator e usar @dev sequencialmente.
1249
-
1250
- ### Mudança de contexto
1251
-
1252
- Se durante o desenvolvimento o projeto crescer e mudar de SMALL para MEDIUM:
1253
- ```bash
1254
- npx @jaimevalasek/aioson setup:context . --defaults --classification=MEDIUM
1255
- ```
1256
-
1257
- Então ative @pm e @orchestrator antes de continuar com @dev.
1258
-
1259
- ### Verificar estado atual
1260
-
1261
- ```bash
1262
- npx @jaimevalasek/aioson doctor # valida saúde dos arquivos
1263
- npx @jaimevalasek/aioson context:validate # valida o project.context.md
1264
- npx @jaimevalasek/aioson parallel:status # progresso das lanes (MEDIUM)
1265
- ```
1266
-
1267
- ---
1268
-
1269
- ## Veja também
1270
-
1271
- - [Início rápido](./inicio-rapido.md)
1272
- - [Guia de agentes](./agentes.md)
1273
- - [Suporte Web3](./web3.md) — cenários completos Ethereum, Solana e Midnight Network
1274
- - [Orquestração paralela](../en/parallel.md)
1
+ # [Arquivado] Cenários de Uso
2
+
3
+ > **Esta doc foi substituída.**
4
+ > Os cenários foram reorganizados em receitas individuais com diálogos reais em [`../3-receitas/README.md`](../3-receitas/README.md).
5
+ > Conteúdo abaixo preservado para referência histórica.
6
+
7
+ ---
8
+
9
+ # Cenários de Uso
10
+
11
+ > Exemplos completos e práticos de como usar o AIOSON em projetos reais.
12
+
13
+ ---
14
+
15
+ ## Cenário 1 — Landing page com formulário (MICRO)
16
+
17
+ **Projeto:** Landing page de captura de leads com formulário de e-mail.
18
+ **Stack:** HTML + Alpine.js + Tailwind + PHP simples para envio de e-mail.
19
+ **Classificação:** MICRO (1 tipo de usuário, 1 integração, sem regras complexas → 1 ponto)
20
+
21
+ ### Passo 1: Instalar e configurar
22
+
23
+ ```bash
24
+ mkdir landing-captura && cd landing-captura
25
+ npx @jaimevalasek/aioson install
26
+ npx @jaimevalasek/aioson setup:context . --defaults \
27
+ --project-name="Landing Captura" \
28
+ --project-type=site \
29
+ --framework="None" \
30
+ --framework-installed=false \
31
+ --classification=MICRO \
32
+ --lang=pt-BR
33
+ ```
34
+
35
+ ### Passo 2: Abrir Claude e ativar @setup
36
+
37
+ No arquivo CLAUDE.md, o contexto já foi lido. Digite:
38
+
39
+ ```
40
+ /setup
41
+ ```
42
+
43
+ **O agente confirma o contexto pré-configurado:**
44
+ ```
45
+ Contexto carregado:
46
+ - Projeto: Landing Captura
47
+ - Tipo: site (MICRO)
48
+ - Framework: Nenhum detectado
49
+ - Idioma: pt-BR
50
+
51
+ Classificação MICRO confirmada (0 pts): 1 tipo de usuário, sem integrações, sem regras complexas.
52
+
53
+ Plano: @setup @dev
54
+ Próximo passo: ative /dev e descreva o que o projeto precisa ter.
55
+ ```
56
+
57
+ > **Nota:** As flags `--defaults` acima pré-preenchem o contexto sem perguntas interativas.
58
+ > Se preferir o fluxo guiado, basta rodar `npx @jaimevalasek/aioson setup:context` sem flags — o agente
59
+ > vai fazer as perguntas e identificar o projeto a partir da sua descrição.
60
+
61
+ ### Passo 3: Ativar @dev diretamente
62
+
63
+ ```
64
+ /dev
65
+
66
+ Preciso de uma landing page com:
67
+ - Hero section com headline e CTA
68
+ - Formulário de captura de e-mail (nome + e-mail)
69
+ - Envio por PHP para um arquivo de log (sem banco)
70
+ - Design limpo com Tailwind
71
+ ```
72
+
73
+ **O @dev entrega:**
74
+ - `index.html` com estrutura completa
75
+ - `style.css` ou classes Tailwind inline
76
+ - `submit.php` para processar o formulário
77
+ - Validação básica no frontend e backend
78
+
79
+ ### Por que MICRO?
80
+
81
+ Não precisa de @analyst (domínio simples), não precisa de @architect (estrutura trivial), não precisa de @qa (sem lógica crítica a testar). O @dev tem contexto suficiente para entregar direto.
82
+
83
+ > Se até num projeto MICRO o pedido vier muito vago, você ainda pode encaixar `@discovery-design-doc` antes do `@dev`. Isso é exceção útil, não fluxo padrão.
84
+
85
+ ---
86
+
87
+ ## Cenário 2 — API REST com autenticação (SMALL)
88
+
89
+ **Projeto:** API para gerenciar agendamentos de uma clínica médica.
90
+ **Stack:** Laravel 11 + PostgreSQL + Sanctum.
91
+ **Classificação:** SMALL (3 tipos de usuário=2pt, 2 integrações=1pt → 3 pontos)
92
+
93
+ ### Passo 1: Instalar
94
+
95
+ ```bash
96
+ # Laravel já está instalado e configurado
97
+ cd minha-clinica-api
98
+ npx @jaimevalasek/aioson install
99
+ npx @jaimevalasek/aioson setup:context . --defaults \
100
+ --project-name="Clinica API" \
101
+ --project-type=api \
102
+ --framework=Laravel \
103
+ --framework-installed=true \
104
+ --classification=SMALL \
105
+ --lang=pt-BR
106
+ ```
107
+
108
+ ### Passo 2: Verificar saúde
109
+
110
+ ```bash
111
+ npx @jaimevalasek/aioson doctor
112
+ ```
113
+
114
+ ### Passo 3: @setup
115
+
116
+ ```
117
+ /setup
118
+ ```
119
+
120
+ **O agente confirma:**
121
+ ```
122
+ Contexto carregado:
123
+ - Projeto: Clinica API (SMALL)
124
+ - Framework: Laravel 11 (instalado ✓)
125
+ - Classificação: SMALL
126
+
127
+ Plano: @setup @product @analyst → @architect → @dev → @qa
128
+
129
+ Próximo passo: /product
130
+ Objetivo: gerar o PRD base antes de mapear pacientes, médicos, agendamentos e regras de negócio.
131
+ ```
132
+
133
+ ### Passo 4: @product PRD base
134
+
135
+ **Atalho com documento de kickoff (opcional):**
136
+
137
+ Se você já tiver uma ideia esboçada, crie um arquivo de entrada antes de ativar o `@product`:
138
+
139
+ ```bash
140
+ # Crie plans/agendamentos.md com suas notas brutas:
141
+ # - quero que pacientes agendem consultas online
142
+ # - médico pode bloquear horários
143
+ # - notificação por email na confirmação
144
+ ```
145
+
146
+ Ao ativar `/product`, o agente detecta `plans/agendamentos.md` e pergunta:
147
+ > "Encontrei `plans/agendamentos.md`. Quer que eu use como fonte para o PRD?"
148
+
149
+ Se sim, ele sintetiza o conteúdo e gera o PRD formal. Você pode deletar o arquivo original depois.
150
+
151
+ ```
152
+ /product
153
+ ```
154
+
155
+ **O @product registra no `prd.md`:**
156
+ - visão do produto
157
+ - usuários principais
158
+ - escopo inicial do MVP
159
+ - perguntas em aberto
160
+
161
+ ### Passo 5: @analyst — Descoberta do domínio
162
+
163
+ ```
164
+ /analyst
165
+ ```
166
+
167
+ **O agente faz suas 6 perguntas:**
168
+
169
+ ```
170
+ 1. Quem são os tipos de usuário?
171
+ ```
172
+ *Você responde:* Paciente, Médico, Recepcionista
173
+
174
+ ```
175
+ 2. Qual o fluxo principal que gera valor?
176
+ ```
177
+ *Você responde:* Paciente agenda consulta médico confirma → recepcionista valida presença
178
+
179
+ ```
180
+ 3. Existe processo manual hoje?
181
+ ```
182
+ *Você responde:* Sim, tudo é feito por telefone e planilha Excel
183
+
184
+ ```
185
+ 4. Quais são as regras de negócio críticas?
186
+ ```
187
+ *Você responde:*
188
+ - Médico só pode ter 1 consulta por horário
189
+ - Cancelamento até 24h antes sem penalidade
190
+ - Paciente não pode ter 2 consultas no mesmo dia com o mesmo médico
191
+
192
+ ```
193
+ 5. Integrações externas?
194
+ ```
195
+ *Você responde:* Envio de e-mail de confirmação (SMTP) e SMS via Twilio
196
+
197
+ ```
198
+ 6. Dados sensíveis?
199
+ ```
200
+ *Você responde:* Dados de saúde dos pacientes (LGPD)
201
+
202
+ **O @analyst entrega** `.aioson/context/discovery.md`:
203
+ ```markdown
204
+ ## Entidades principais
205
+
206
+ | Entidade | Atributos principais | Restrições |
207
+ |--------------|-----------------------------------------------|------------------------------|
208
+ | User | id, name, email, role, password | role: patient/doctor/staff |
209
+ | Doctor | id, user_id, crm, specialty, schedule_config | CRM único |
210
+ | Patient | id, user_id, cpf, birth_date, health_notes | CPF único, dados LGPD |
211
+ | Appointment | id, doctor_id, patient_id, date, status | 1 por médico/horário |
212
+ | TimeSlot | id, doctor_id, starts_at, ends_at, available | — |
213
+
214
+ ## Regras de negócio
215
+ - RN01: 1 consulta por médico por horário (check no create)
216
+ - RN02: Cancelamento livre até 24h antes
217
+ - RN03: 1 consulta por paciente/médico por dia
218
+
219
+ ## Integrações
220
+ - SMTP (Laravel Mail) confirmação de agendamento
221
+ - Twilio SMS — lembrete 1h antes
222
+
223
+ ## Riscos
224
+ - LGPD: health_notes precisa de criptografia ou controle de acesso
225
+ - Conflito de horários: critical path, requer lock otimista
226
+ ```
227
+
228
+ ### Onde `@discovery-design-doc` entraria neste cenário
229
+
230
+ Se antes do `@analyst` você ainda não souber bem:
231
+ - o recorte do MVP
232
+ - o que fica fora de escopo
233
+ - quais módulos atuais serão afetados
234
+ - ou se a APIestá pronta para implementação
235
+
236
+ vale inserir:
237
+
238
+ ```text
239
+ @setup -> @discovery-design-doc -> @analyst -> @architect -> @dev
240
+ ```
241
+
242
+ Isso ajuda especialmente quando o projeto já existe e a clínica quer adicionar uma feature grande sem sair codando cedo demais.
243
+
244
+ ### Passo 5: @architect — Estrutura do projeto
245
+
246
+ ```
247
+ /architect
248
+ ```
249
+
250
+ **O @architect lê o discovery e entrega** `.aioson/context/architecture.md`:
251
+
252
+ ```
253
+ Classificação: SMALL → estrutura Laravel padrão, sem sub-pastas excessivas
254
+
255
+ app/
256
+ Actions/
257
+ CreateAppointmentAction.php
258
+ CancelAppointmentAction.php
259
+ Http/
260
+ Controllers/
261
+ AppointmentController.php
262
+ DoctorController.php
263
+ Requests/
264
+ CreateAppointmentRequest.php
265
+ Models/
266
+ User.php, Doctor.php, Patient.php, Appointment.php
267
+ Policies/
268
+ AppointmentPolicy.php
269
+ Events/
270
+ AppointmentCreated.php
271
+ AppointmentCancelled.php
272
+ Listeners/
273
+ SendConfirmationEmail.php
274
+ SendSmsReminder.php
275
+
276
+ database/migrations/
277
+ resources/ (apenas para erros API)
278
+ routes/api.php
279
+ tests/Feature/AppointmentTest.php
280
+ ```
281
+
282
+ **Decisões técnicas:**
283
+ - Auth: Sanctum (tokens de API)
284
+ - N+1: Eager loading em todos os índices (with('doctor.user', 'patient.user'))
285
+ - Timezone: UTC no banco, conversão na camada de apresentação
286
+
287
+ ### Passo 6: @dev — Implementação com TDD Gate
288
+
289
+ ```
290
+ /dev
291
+
292
+ Implemente a feature de agendamentos primeiro.
293
+ Comece pela migration, model, action e controller.
294
+ ```
295
+
296
+ 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:
297
+
298
+ **1. Escreve o teste com falha (RED):**
299
+ ```php
300
+ // tests/Feature/CreateAppointmentTest.php
301
+ it('throws exception on doctor schedule conflict', function () {
302
+ $doctor = Doctor::factory()->create();
303
+ $slot = now()->addDay()->setHour(10)->setMinute(0);
304
+
305
+ Appointment::factory()->create([
306
+ 'doctor_id' => $doctor->id,
307
+ 'date' => $slot,
308
+ 'status' => 'confirmed',
309
+ ]);
310
+
311
+ expect(fn () => (new CreateAppointmentAction)->execute([
312
+ 'doctor_id' => $doctor->id,
313
+ 'patient_id' => Patient::factory()->create()->id,
314
+ 'date' => $slot,
315
+ ]))->toThrow(AppointmentConflictException::class);
316
+ });
317
+ ```
318
+
319
+ Roda o teste → **falha** (RED confirmado). Só então implementa:
320
+
321
+ **2. Implementa o suficiente para passar (GREEN):**
322
+ ```php
323
+ // app/Actions/CreateAppointmentAction.php
324
+ class CreateAppointmentAction
325
+ {
326
+ public function execute(array $data): Appointment
327
+ {
328
+ // RN01: verificar conflito de horário
329
+ $conflict = Appointment::where('doctor_id', $data['doctor_id'])
330
+ ->where('date', $data['date'])
331
+ ->where('status', '!=', 'cancelled')
332
+ ->exists();
333
+
334
+ if ($conflict) {
335
+ throw new AppointmentConflictException();
336
+ }
337
+
338
+ // RN03: verificar duplicata paciente/médico/dia
339
+ $duplicate = Appointment::where([
340
+ 'patient_id' => $data['patient_id'],
341
+ 'doctor_id' => $data['doctor_id'],
342
+ ])->whereDate('date', $data['date'])->exists();
343
+
344
+ if ($duplicate) {
345
+ throw new DuplicateAppointmentException();
346
+ }
347
+
348
+ $appointment = Appointment::create($data);
349
+ AppointmentCreated::dispatch($appointment);
350
+ return $appointment;
351
+ }
352
+ }
353
+ ```
354
+
355
+ Roda o teste → **passa** (GREEN). Commit. Próximo passo.
356
+
357
+ ### Passo 7: @qa — Testes
358
+
359
+ ```
360
+ /qa
361
+
362
+ Revise a CreateAppointmentAction e escreva os testes para:
363
+ - criação com sucesso
364
+ - conflito de horário (RN01)
365
+ - duplicata paciente (RN03)
366
+ - cancelamento fora do prazo (RN02)
367
+ ```
368
+
369
+ **O @qa entrega** `tests/Feature/AppointmentTest.php` com todos os casos.
370
+
371
+ > **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.
372
+
373
+ ---
374
+
375
+ ## Cenário 3 — SaaS multi-tenant (MEDIUM)
376
+
377
+ **Projeto:** Plataforma SaaS de gestão de projetos para agências digitais.
378
+ **Stack:** Next.js 14 (App Router) + Prisma + PostgreSQL + Stripe.
379
+ **Usuários:** Admin da agência, Gerente de projeto, Cliente (visualização).
380
+ **Classificação:** MEDIUM (3 usuários=2pt, 3+ integrações=2pt, regras complexas=2pt → 6 pontos)
381
+
382
+ ### Passo 1: Instalar
383
+
384
+ ```bash
385
+ npx create-next-app@latest saas-agencia --typescript
386
+ cd saas-agencia
387
+ npx @jaimevalasek/aioson install
388
+ npx @jaimevalasek/aioson setup:context . --defaults \
389
+ --project-name="Agency SaaS" \
390
+ --project-type=web_app \
391
+ --framework="Next.js" \
392
+ --framework-installed=true \
393
+ --classification=MEDIUM \
394
+ --lang=pt-BR
395
+ ```
396
+
397
+ ### Passo 2: @setup
398
+
399
+ ```
400
+ /setup
401
+ ```
402
+
403
+ **O agente confirma o plano MEDIUM completo:**
404
+ ```
405
+ Plano de execução:
406
+ 1. /product → PRD base vivo
407
+ 2. /analyst → discovery e modelagem de domínio
408
+ 3. /architect → estrutura de pastas Next.js MEDIUM + decisões técnicas
409
+ 4. /ux-ui → UI/UX, sistema de design e componentes
410
+ 5. /pm → priorização e critérios de aceite no PRD vivo
411
+ 6. /orchestrator → lanes de desenvolvimento paralelo
412
+ 7. /dev → implementação por lane
413
+ 8. /qa → revisão e testes
414
+
415
+ Próximo: /product
416
+ ```
417
+
418
+ ### Passo 3: @product
419
+
420
+ ```
421
+ /product
422
+ ```
423
+
424
+ **O @product gera o PRD base** com visão, problema, usuários, MVP inicial e direção visual.
425
+
426
+ ### Passo 4: @analyst
427
+
428
+ O analista descobre:
429
+ - **Entidades:** Organization, Project, Task, User, Invoice, Subscription
430
+ - **Multi-tenancy:** Cada organização é isolada (Row-Level Security)
431
+ - **Integrações:** Stripe (billing), GitHub (integração de commits), Slack (notificações), S3 (uploads)
432
+ - **Regras:** Plano free = máx 3 projetos, Plano pro = ilimitado; cobrança proporcional por membro
433
+
434
+ ### Passo 5: @architect
435
+
436
+ Para MEDIUM com Next.js App Router:
437
+
438
+ ```
439
+ src/
440
+ app/
441
+ (auth)/login/page.tsx
442
+ (dashboard)/
443
+ layout.tsx ← verifica tenant
444
+ projects/page.tsx
445
+ projects/[id]/page.tsx
446
+ api/
447
+ webhooks/stripe/route.ts
448
+ components/
449
+ ui/ Button, Input, Modal (design system)
450
+ features/
451
+ projects/ProjectCard.tsx
452
+ tasks/TaskBoard.tsx
453
+ lib/
454
+ db/prisma.ts
455
+ auth/session.ts
456
+ billing/stripe.ts
457
+ actions/ ← Server Actions
458
+ project.actions.ts
459
+ task.actions.ts
460
+ types/
461
+ ```
462
+
463
+ ### Passo 6: UI/UX (`@ux-ui`)
464
+
465
+ ```
466
+ /ux-ui
467
+
468
+ Precisamos de:
469
+ - Dashboard principal com lista de projetos
470
+ - Board Kanban para tarefas
471
+ - Sidebar com navegação entre projetos
472
+ - Página de configurações de billing
473
+ ```
474
+
475
+ **O agente UI/UX (`@ux-ui`) entrega** `.aioson/context/ui-spec.md`:
476
+ - Tokens: primary=#6366F1, gray scale, radius-md=8px
477
+ - Componentes: ProjectCard, TaskCard, KanbanBoard, Sidebar, BillingModal
478
+ - Estados: loading skeleton, empty state, error state para cada componente
479
+ - Acessibilidade: foco visível, ARIA labels em boards interativos
480
+
481
+ ### Passo 7: @pm
482
+
483
+ ```
484
+ /pm
485
+ ```
486
+
487
+ **O @pm enriquece** `.aioson/context/prd.md` preservando visão, usuários e identidade visual. O foco passa a ser priorização, fases e critérios de aceite compactos:
488
+
489
+ ```markdown
490
+ ## Escopo do MVP
491
+ ### Must-have 🔴
492
+ - Criar e gerenciar projetos
493
+ - Operar board Kanban com atribuição
494
+ - Convidar membros por e-mail
495
+
496
+ ## Plano de entrega
497
+ ### Fase 1 — Núcleo
498
+ 1. Projetos e permissões
499
+ 2. Board Kanban
500
+ 3. Convites e limites do plano
501
+
502
+ ### Fase 2 Monetização
503
+ 1. Billing e Stripe
504
+ 2. Regras de bloqueio por plano
505
+
506
+ ## Criterios de aceite
507
+ | AC | Descricao |
508
+ |---|---|
509
+ | AC-01 | Admin cria projeto com nome, descricao e deadline |
510
+ | AC-02 | Board possui colunas To Do / In Progress / Done |
511
+ | AC-03 | Convite por e-mail expira em 48h |
512
+ | AC-04 | Conta free respeita limite de projetos |
513
+ ```
514
+
515
+ ### Passo 8: @orchestrator
516
+
517
+ ```
518
+ /orchestrator
519
+ ```
520
+
521
+ Ou via CLI:
522
+ ```bash
523
+ npx @jaimevalasek/aioson parallel:init --workers=3
524
+ npx @jaimevalasek/aioson parallel:assign --source=prd --workers=3
525
+ ```
526
+
527
+ **O orquestrador cria 3 lanes:**
528
+
529
+ ```
530
+ Lane 1 (@dev instância A):
531
+ - Auth + Multi-tenancy (Organization, User, middleware)
532
+ - US-03: Sistema de convites
533
+
534
+ Lane 2 (@dev instância B):
535
+ - US-01: CRUD de projetos
536
+ - US-02: Board Kanban + drag-and-drop
537
+
538
+ Lane 3 (@dev instância C):
539
+ - US-04: Integração Stripe
540
+ - Webhook handler
541
+ - Página de billing
542
+ ```
543
+
544
+ **Cada @dev instance** lê seu lane file:
545
+ ```
546
+ Lane 1: /dev Implemente o escopo do agent-1.status.md
547
+ Lane 2: /dev Implemente o escopo do agent-2.status.md
548
+ Lane 3: /dev Implemente o escopo do agent-3.status.md
549
+ ```
550
+
551
+ **Monitorar progresso:**
552
+ ```bash
553
+ npx @jaimevalasek/aioson parallel:status
554
+ ```
555
+
556
+ ### Passo 8: @qa
557
+
558
+ ```
559
+ /qa
560
+
561
+ Revise as implementações das 3 lanes e escreva testes para:
562
+ - Isolamento de tenant (crítico)
563
+ - Fluxo de billing e webhook Stripe
564
+ - Permissões por role (admin vs gerente vs cliente)
565
+ ```
566
+
567
+ ---
568
+
569
+ ## Cenário 4 — dApp Ethereum (MEDIUM)
570
+
571
+ **Projeto:** Marketplace de NFTs com contrato de royalties.
572
+ **Stack:** Hardhat + Solidity + Next.js + wagmi + RainbowKit.
573
+ **Classificação:** MEDIUM (múltiplos usuários, Web3 + frontend, regras de contrato complexas)
574
+
575
+ ### Passo 1: Instalar
576
+
577
+ ```bash
578
+ mkdir nft-marketplace && cd nft-marketplace
579
+ npx create-next-app@latest frontend --typescript
580
+ npx hardhat init # no mesmo diretório raiz
581
+ npx @jaimevalasek/aioson install
582
+ npx @jaimevalasek/aioson setup:context . --defaults \
583
+ --project-name="NFT Marketplace" \
584
+ --project-type=dapp \
585
+ --framework=Hardhat \
586
+ --framework-installed=true \
587
+ --classification=MEDIUM \
588
+ --web3-enabled=true \
589
+ --web3-networks=ethereum \
590
+ --contract-framework=Hardhat \
591
+ --wallet-provider=wagmi \
592
+ --lang=pt-BR
593
+ ```
594
+
595
+ > **Nota:** Se Hardhat e Next.js coexistem no mesmo diretório, o AIOSON detecta automaticamente como **monorepo** e exibe um aviso de configuração.
596
+
597
+ ### Passo 2: @analyst
598
+
599
+ O analista identifica:
600
+ - **Buyer:** compra NFTs via marketplace
601
+ - **Creator:** lista NFTs com royalty configurado
602
+ - **Marketplace:** cobra fee sobre cada venda
603
+
604
+ **Entidades on-chain:**
605
+ | Entidade | Tipo | Notas |
606
+ |---|---|---|
607
+ | NFT | ERC-721 | tokenURI no IPFS |
608
+ | Listing | struct | price, seller, royaltyBps |
609
+ | Sale | event | buyer, seller, price, royalty |
610
+
611
+ **Regras críticas:**
612
+ - RN01: Royalty máximo de 10% (1000 bps)
613
+ - RN02: Reentrancy guard em todas as funções de pagamento
614
+ - RN03: Withdraw pattern para pagamentos (nunca push)
615
+
616
+ ### Passo 3: @architect
617
+
618
+ **Estrutura monorepo:**
619
+ ```
620
+ contracts/
621
+ Marketplace.sol
622
+ NFT.sol
623
+ interfaces/IMarketplace.sol
624
+ scripts/
625
+ deploy.js
626
+ test/
627
+ Marketplace.test.js
628
+ frontend/
629
+ src/
630
+ app/
631
+ marketplace/page.tsx
632
+ create/page.tsx
633
+ components/
634
+ NFTCard.tsx
635
+ ListingModal.tsx
636
+ hooks/
637
+ useMarketplace.ts ← wagmi hooks
638
+ lib/
639
+ contracts.ts ← ABIs e endereços
640
+ ```
641
+
642
+ ### Passo 4: @dev (contratos)
643
+
644
+ ```
645
+ /dev
646
+
647
+ Implemente o contrato Marketplace.sol com:
648
+ - ERC-721 listing
649
+ - Royalties on-chain
650
+ - Reentrancy guard (OpenZeppelin)
651
+ - Withdraw pattern para pagamentos
652
+ ```
653
+
654
+ **O @dev escreve:**
655
+ ```solidity
656
+ // SPDX-License-Identifier: MIT
657
+ pragma solidity ^0.8.20;
658
+
659
+ import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
660
+ import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
661
+
662
+ contract Marketplace is ReentrancyGuard {
663
+ struct Listing {
664
+ address seller;
665
+ uint256 price;
666
+ uint256 royaltyBps; // base points: 1000 = 10%
667
+ address royaltyRecipient;
668
+ }
669
+
670
+ mapping(address => mapping(uint256 => Listing)) public listings;
671
+ mapping(address => uint256) public pendingWithdrawals; // pull pattern
672
+
673
+ uint256 public constant MAX_ROYALTY_BPS = 1000;
674
+
675
+ function buyNFT(address nftContract, uint256 tokenId)
676
+ external payable nonReentrant
677
+ {
678
+ Listing memory listing = listings[nftContract][tokenId];
679
+ require(msg.value >= listing.price, "Insufficient payment");
680
+
681
+ uint256 royalty = (listing.price * listing.royaltyBps) / 10000;
682
+ uint256 sellerAmount = listing.price - royalty;
683
+
684
+ // Acumular (não enviar direto — evita reentrancy)
685
+ pendingWithdrawals[listing.royaltyRecipient] += royalty;
686
+ pendingWithdrawals[listing.seller] += sellerAmount;
687
+
688
+ delete listings[nftContract][tokenId];
689
+ IERC721(nftContract).safeTransferFrom(listing.seller, msg.sender, tokenId);
690
+ }
691
+
692
+ function withdraw() external nonReentrant {
693
+ uint256 amount = pendingWithdrawals[msg.sender];
694
+ require(amount > 0, "Nothing to withdraw");
695
+ pendingWithdrawals[msg.sender] = 0;
696
+ payable(msg.sender).transfer(amount);
697
+ }
698
+ }
699
+ ```
700
+
701
+ ### Passo 5: @qa (auditoria de contrato)
702
+
703
+ ```
704
+ /qa
705
+
706
+ Audite o Marketplace.sol para:
707
+ - Vulnerabilidades de reentrancy
708
+ - Integer overflow/underflow
709
+ - Access control
710
+ - Edge cases no withdraw pattern
711
+ Escreva testes Hardhat cobrindo todos os cenários críticos.
712
+ ```
713
+
714
+ ---
715
+
716
+ ## Cenário 5 — API Node.js com Fastify (SMALL)
717
+
718
+ **Projeto:** API de gerenciamento de pedidos para restaurante.
719
+ **Stack:** Node.js + Fastify + PostgreSQL + Prisma + JWT.
720
+ **Classificação:** SMALL (2 tipos de usuário=1pt, 2 integrações=1pt, algumas regras=1pt → 3 pontos)
721
+
722
+ ### Passo 1: Instalar
723
+
724
+ ```bash
725
+ mkdir restaurante-api && cd restaurante-api
726
+ npm init -y
727
+ npm install fastify @prisma/client
728
+ npm install -D prisma
729
+ npx @jaimevalasek/aioson install
730
+ npx @jaimevalasek/aioson setup:context . --defaults \
731
+ --project-name="Restaurante API" \
732
+ --project-type=api \
733
+ --framework="Node" \
734
+ --framework-installed=true \
735
+ --classification=SMALL \
736
+ --lang=pt-BR
737
+ ```
738
+
739
+ ### Passo 2: @setup
740
+
741
+ ```
742
+ /setup
743
+ ```
744
+
745
+ **O agente confirma:**
746
+ ```
747
+ Framework detectado: Node.js (package.json ✓)
748
+ Projeto: Restaurante API (SMALL)
749
+
750
+ Plano: @setup → @product → @analyst → @architect → @dev → @qa
751
+ Próximo: /product
752
+ ```
753
+
754
+ ### Passo 3: @product
755
+
756
+ ```
757
+ /product
758
+ ```
759
+
760
+ **O @product gera o PRD base** com visão, usuários, escopo do MVP e fora do escopo.
761
+
762
+ ### Passo 4: @analyst
763
+
764
+ ```
765
+ /analyst
766
+ ```
767
+
768
+ *Você responde às perguntas:*
769
+
770
+ - **Usuários:** Garçom (cria pedidos), Cozinha (atualiza status)
771
+ - **Fluxo principal:** Garçom abre mesa → adiciona itens → cozinha vê e prepara → garçom fecha conta
772
+ - **Regras críticas:**
773
+ - Pedido não pode ser fechado com itens pendentes
774
+ - Item cancelado não volta ao estoque (soft delete no pedido)
775
+ - Mesa pode ter 1 pedido aberto por vez
776
+ - **Integrações:** WhatsApp (aviso ao garçom quando prato fica pronto), impressora fiscal
777
+
778
+ **O @analyst entrega** `.aioson/context/discovery.md`:
779
+
780
+ ```markdown
781
+ ## Entidades principais
782
+
783
+ | Entidade | Atributos | Restrições |
784
+ |-------------|------------------------------------------|----------------------------------|
785
+ | Table | id, number, status (free/occupied) | 1 pedido aberto por vez |
786
+ | Order | id, table_id, status, opened_at | closed se itens = ready |
787
+ | OrderItem | id, order_id, menu_item_id, qty, status | status: pending/ready/cancelled |
788
+ | MenuItem | id, name, price, category, available | — |
789
+ | User | id, name, role (waiter/kitchen) | JWT auth por role |
790
+
791
+ ## Regras de negócio
792
+ - RN01: Mesa não pode ter 2 pedidos abertos simultaneamente
793
+ - RN02: Pedido só fecha se todos os itens estiverem ready ou cancelled
794
+ - RN03: Garçom só vê suas próprias mesas; cozinha vê tudo
795
+
796
+ ## Integrações
797
+ - WhatsApp API (Evolution API) — notificação quando item fica pronto
798
+ - Impressora fiscal — payload no fechamento do pedido
799
+ ```
800
+
801
+ ### Passo 4: @architect
802
+
803
+ ```
804
+ /architect
805
+ ```
806
+
807
+ **O @architect entrega** `.aioson/context/architecture.md`:
808
+
809
+ ```
810
+ Classificação: SMALL estrutura Fastify por domínio
811
+
812
+ src/
813
+ plugins/
814
+ prisma.js ← decorador global do cliente Prisma
815
+ auth.js ← fastify-jwt plugin
816
+ routes/
817
+ orders/
818
+ index.js GET /orders, POST /orders
819
+ [id].js ← GET, PATCH, DELETE /orders/:id
820
+ items/
821
+ index.js
822
+ tables/
823
+ index.js
824
+ services/
825
+ order.service.js ← regras de negócio (RN01, RN02)
826
+ notification.service.js ← WhatsApp integration
827
+ schemas/
828
+ order.schema.js ← Fastify JSON Schema para validação
829
+ app.js
830
+
831
+ prisma/
832
+ schema.prisma
833
+ migrations/
834
+
835
+ test/
836
+ orders.test.js
837
+ ```
838
+
839
+ **Decisões técnicas:**
840
+ - Auth: `fastify-jwt` com roles no payload (`{ id, role }`)
841
+ - Validação: Fastify JSON Schema (não Zod — evitar overhead)
842
+ - ORM: Prisma (type-safe, migrations automáticas)
843
+
844
+ ### Passo 5: @dev
845
+
846
+ ```
847
+ /dev
848
+
849
+ Implemente a rota POST /orders e o OrderService.
850
+ Inclua a validação RN01 (mesa com pedido aberto).
851
+ ```
852
+
853
+ **O @dev implementa:**
854
+
855
+ ```javascript
856
+ // src/services/order.service.js
857
+ class OrderService {
858
+ constructor(prisma) {
859
+ this.prisma = prisma;
860
+ }
861
+
862
+ async create({ tableId, waiterId }) {
863
+ // RN01: verificar mesa livre
864
+ const open = await this.prisma.order.findFirst({
865
+ where: { tableId, status: { in: ['open', 'in_progress'] } },
866
+ });
867
+ if (open) {
868
+ throw new Error('Table already has an open order');
869
+ }
870
+
871
+ return this.prisma.order.create({
872
+ data: { tableId, waiterId, status: 'open' },
873
+ });
874
+ }
875
+
876
+ async close(orderId) {
877
+ // RN02: verificar itens pendentes
878
+ const pending = await this.prisma.orderItem.count({
879
+ where: { orderId, status: 'pending' },
880
+ });
881
+ if (pending > 0) {
882
+ throw new Error('Cannot close order with pending items');
883
+ }
884
+
885
+ return this.prisma.order.update({
886
+ where: { id: orderId },
887
+ data: { status: 'closed', closedAt: new Date() },
888
+ });
889
+ }
890
+ }
891
+
892
+ module.exports = { OrderService };
893
+ ```
894
+
895
+ ```javascript
896
+ // src/routes/orders/index.js
897
+ module.exports = async function orderRoutes(fastify) {
898
+ const service = new OrderService(fastify.prisma);
899
+
900
+ fastify.post('/', {
901
+ preHandler: [fastify.authenticate, fastify.requireRole('waiter')],
902
+ schema: {
903
+ body: { type: 'object', required: ['tableId'], properties: {
904
+ tableId: { type: 'integer' }
905
+ }},
906
+ },
907
+ }, async (request, reply) => {
908
+ const order = await service.create({
909
+ tableId: request.body.tableId,
910
+ waiterId: request.user.id,
911
+ });
912
+ return reply.code(201).send(order);
913
+ });
914
+ };
915
+ ```
916
+
917
+ ### Passo 6: @qa
918
+
919
+ ```
920
+ /qa
921
+
922
+ Escreva testes para o OrderService:
923
+ - criação com sucesso
924
+ - RN01: mesa com pedido aberto (deve lançar erro)
925
+ - RN02: fechamento com itens pendentes (deve lançar erro)
926
+ - fechamento com sucesso
927
+ ```
928
+
929
+ ---
930
+
931
+ ## Cenário 6 — Aplicação Rails + Hotwire (SMALL)
932
+
933
+ **Projeto:** Plataforma colaborativa de gerenciamento de tarefas.
934
+ **Stack:** Rails 7 + PostgreSQL + Hotwire (Turbo + Stimulus) + Tailwind CSS.
935
+ **Classificação:** SMALL (2 tipos de usuário=1pt, 1 integração=1pt, algumas regras=1pt → 3 pontos)
936
+
937
+ ### Passo 1: Instalar
938
+
939
+ ```bash
940
+ rails new task-app --database=postgresql --css=tailwind
941
+ cd task-app
942
+ npx @jaimevalasek/aioson install
943
+ npx @jaimevalasek/aioson setup:context . --defaults \
944
+ --project-name="Task App" \
945
+ --project-type=web_app \
946
+ --framework="Rails" \
947
+ --framework-installed=true \
948
+ --classification=SMALL \
949
+ --lang=pt-BR
950
+ ```
951
+
952
+ ### Passo 2: @setup
953
+
954
+ ```
955
+ /setup
956
+ ```
957
+
958
+ **O agente confirma:**
959
+ ```
960
+ Framework detectado: Rails (config/application.rb ✓)
961
+ Versão: Rails 7.x
962
+
963
+ Plano: @setup → @product → @analyst → @architect → @dev → @qa
964
+ Próximo: /product
965
+ ```
966
+
967
+ ### Passo 3: @product
968
+
969
+ ```
970
+ /product
971
+ ```
972
+
973
+ **O @product gera o PRD base** com visão, usuários, escopo do MVP e fora do escopo.
974
+
975
+ ### Passo 4: @analyst
976
+
977
+ *Você responde às perguntas:*
978
+
979
+ - **Usuários:** Admin (cria projetos e convida membros), Membro (cria e move tarefas)
980
+ - **Fluxo:** Admin cria projeto → convida membros → membros criam e movem tarefas entre colunas (To Do / In Progress / Done)
981
+ - **Regras:**
982
+ - Tarefa só pode ser atribuída a membros do mesmo projeto
983
+ - Admin pode arquivar projeto (tarefas ficam read-only)
984
+ - Membros recebem e-mail ao serem atribuídos a uma tarefa
985
+ - **Integrações:** ActionMailer (e-mails de notificação)
986
+
987
+ **O @analyst entrega** `.aioson/context/discovery.md`:
988
+
989
+ ```markdown
990
+ ## Entidades
991
+ | Entidade | Atributos | Restrições |
992
+ |-------------|----------------------------------------------|-------------------------------------|
993
+ | User | id, name, email, password_digest | Devise ou has_secure_password |
994
+ | Project | id, name, archived, owner_id | owner deve ser admin |
995
+ | Membership | id, project_id, user_id, role | role: admin/member |
996
+ | Task | id, project_id, assignee_id, title, status | assignee deve ser membro do projeto |
997
+ | Column | status enum: todo/in_progress/done | — |
998
+
999
+ ## Regras
1000
+ - RN01: Atribuição restrita a membros do projeto (validação no model)
1001
+ - RN02: Projeto arquivado → tarefas readonly
1002
+ - RN03: E-mail via ActionMailer ao atribuir tarefa
1003
+ ```
1004
+
1005
+ ### Passo 4: @architect
1006
+
1007
+ **O @architect entrega:**
1008
+
1009
+ ```
1010
+ Classificação: SMALL → estrutura Rails padrão com concerns
1011
+
1012
+ app/
1013
+ models/
1014
+ user.rb, project.rb, membership.rb, task.rb
1015
+ concerns/
1016
+ archivable.rbmódulo para lógica de arquivamento
1017
+ controllers/
1018
+ projects_controller.rb
1019
+ tasks_controller.rb
1020
+ memberships_controller.rb
1021
+ views/
1022
+ projects/
1023
+ index.html.erb
1024
+ show.html.erb ← board Kanban
1025
+ tasks/
1026
+ _task.html.erb Turbo Frame por tarefa
1027
+ _form.html.erb
1028
+ layouts/
1029
+ application.html.erb
1030
+ mailers/
1031
+ task_mailer.rb
1032
+ javascript/
1033
+ controllers/
1034
+ kanban_controller.js ← Stimulus: drag-and-drop colunas
1035
+
1036
+ config/routes.rb
1037
+ db/schema.rb
1038
+ test/models/, test/controllers/
1039
+ ```
1040
+
1041
+ **Decisões técnicas:**
1042
+ - Realtime: Turbo Streams via ActionCable (move de tarefa sem refresh)
1043
+ - Auth: `has_secure_password` + `before_action :require_login`
1044
+ - Drag-and-drop: Stimulus + Sortable.js (sem React)
1045
+
1046
+ ### Passo 5: @dev
1047
+
1048
+ ```
1049
+ /dev
1050
+
1051
+ Implemente a move de tarefa via Turbo Stream.
1052
+ Quando o usuário arrasta uma tarefa para outra coluna,
1053
+ o status deve ser atualizado sem reload de página.
1054
+ ```
1055
+
1056
+ **O @dev implementa:**
1057
+
1058
+ ```ruby
1059
+ # app/controllers/tasks_controller.rb
1060
+ def update
1061
+ @task = current_user.accessible_tasks.find(params[:id])
1062
+
1063
+ if @task.update(task_params)
1064
+ respond_to do |format|
1065
+ format.turbo_stream do
1066
+ render turbo_stream: [
1067
+ turbo_stream.remove("task_#{@task.id}"),
1068
+ turbo_stream.append("column_#{@task.status}", partial: "tasks/task", locals: { task: @task })
1069
+ ]
1070
+ end
1071
+ format.html { redirect_to project_path(@task.project) }
1072
+ end
1073
+ end
1074
+ end
1075
+ ```
1076
+
1077
+ ```javascript
1078
+ // app/javascript/controllers/kanban_controller.js
1079
+ import { Controller } from "@hotwired/stimulus"
1080
+ import Sortable from "sortablejs"
1081
+
1082
+ export default class extends Controller {
1083
+ static targets = ["column"]
1084
+
1085
+ connect() {
1086
+ this.columnTargets.forEach(column => {
1087
+ new Sortable(column, {
1088
+ group: "tasks",
1089
+ animation: 150,
1090
+ onEnd: (event) => this.#moved(event),
1091
+ })
1092
+ })
1093
+ }
1094
+
1095
+ #moved(event) {
1096
+ const taskId = event.item.dataset.taskId
1097
+ const newStatus = event.to.dataset.status
1098
+ fetch(`/tasks/${taskId}`, {
1099
+ method: "PATCH",
1100
+ headers: { "Content-Type": "application/json", "X-CSRF-Token": this.#csrfToken() },
1101
+ body: JSON.stringify({ task: { status: newStatus } }),
1102
+ })
1103
+ }
1104
+
1105
+ #csrfToken() {
1106
+ return document.querySelector('meta[name="csrf-token"]').content
1107
+ }
1108
+ }
1109
+ ```
1110
+
1111
+ ### Passo 6: @qa
1112
+
1113
+ ```
1114
+ /qa
1115
+
1116
+ Escreva testes para:
1117
+ - RN01: atribuição de tarefa a não-membro (deve falhar)
1118
+ - RN02: projeto arquivado — atualização de tarefa deve ser bloqueada
1119
+ - Turbo Stream: resposta correta ao mover tarefa
1120
+ ```
1121
+
1122
+ ---
1123
+
1124
+ ## Cenário 7 — API Python com FastAPI (MICRO)
1125
+
1126
+ **Projeto:** API de controle de estoque pessoal.
1127
+ **Stack:** Python + FastAPI + SQLite + SQLAlchemy + Pydantic.
1128
+ **Classificação:** MICRO (1 tipo de usuário=0pt, 0 integrações=0pt, sem regras complexas=0pt → 0 pontos)
1129
+
1130
+ > **Django:** Para projetos Python SMALL ou MEDIUM (múltiplos usuários, banco relacional maior, admin panel), prefira Django + DRF. O FastAPI brilha em APIs simples, serviços assíncronos e microsserviços.
1131
+
1132
+ ### Passo 1: Instalar
1133
+
1134
+ ```bash
1135
+ mkdir estoque-api && cd estoque-api
1136
+ pip install fastapi uvicorn sqlalchemy pydantic
1137
+ npx @jaimevalasek/aioson install
1138
+ npx @jaimevalasek/aioson setup:context . --defaults \
1139
+ --project-name="Estoque API" \
1140
+ --project-type=api \
1141
+ --framework="FastAPI" \
1142
+ --framework-installed=true \
1143
+ --classification=MICRO \
1144
+ --lang=pt-BR
1145
+ ```
1146
+
1147
+ ### Passo 2: @setup (detectando FastAPI)
1148
+
1149
+ ```
1150
+ /setup
1151
+ ```
1152
+
1153
+ **O agente confirma:**
1154
+ ```
1155
+ Framework detectado: FastAPI (dependência em requirements.txt ✓)
1156
+ Classificação: MICRO
1157
+
1158
+ Nota: FastAPI não está na lista padrão de detecção automática.
1159
+ O framework foi registrado a partir da sua descrição.
1160
+
1161
+ Plano simplificado (MICRO): @setup → @dev
1162
+ Próximo passo: ative /dev e descreva o que precisa.
1163
+ ```
1164
+
1165
+ > O @setup registra `framework: "FastAPI"` no context.md e segue normalmente.
1166
+ > Não existe stack "errada" qualquer framework que você descrever é aceito.
1167
+
1168
+ ### Passo 3: @dev direto
1169
+
1170
+ ```
1171
+ /dev
1172
+
1173
+ Crie uma API FastAPI para controle de estoque com:
1174
+ - CRUD de produtos (nome, quantidade, preço, categoria)
1175
+ - Endpoint de busca por categoria
1176
+ - SQLAlchemy com SQLite
1177
+ - Validação via Pydantic
1178
+ ```
1179
+
1180
+ **O @dev implementa:**
1181
+
1182
+ ```python
1183
+ # main.py
1184
+ from fastapi import FastAPI, Depends, HTTPException
1185
+ from sqlalchemy.orm import Session
1186
+ from . import models, schemas, crud
1187
+ from .database import SessionLocal, engine
1188
+
1189
+ models.Base.metadata.create_all(bind=engine)
1190
+ app = FastAPI(title="Estoque API")
1191
+
1192
+ def get_db():
1193
+ db = SessionLocal()
1194
+ try:
1195
+ yield db
1196
+ finally:
1197
+ db.close()
1198
+
1199
+ @app.post("/products/", response_model=schemas.Product, status_code=201)
1200
+ def create_product(product: schemas.ProductCreate, db: Session = Depends(get_db)):
1201
+ return crud.create_product(db, product)
1202
+
1203
+ @app.get("/products/", response_model=list[schemas.Product])
1204
+ def list_products(category: str | None = None, db: Session = Depends(get_db)):
1205
+ return crud.get_products(db, category=category)
1206
+
1207
+ @app.put("/products/{product_id}", response_model=schemas.Product)
1208
+ def update_product(product_id: int, product: schemas.ProductCreate, db: Session = Depends(get_db)):
1209
+ db_product = crud.update_product(db, product_id, product)
1210
+ if not db_product:
1211
+ raise HTTPException(status_code=404, detail="Product not found")
1212
+ return db_product
1213
+ ```
1214
+
1215
+ ```python
1216
+ # schemas.py
1217
+ from pydantic import BaseModel, Field
1218
+
1219
+ class ProductBase(BaseModel):
1220
+ name: str
1221
+ quantity: int = Field(ge=0)
1222
+ price: float = Field(ge=0)
1223
+ category: str
1224
+
1225
+ class ProductCreate(ProductBase):
1226
+ pass
1227
+
1228
+ class Product(ProductBase):
1229
+ id: int
1230
+ class Config:
1231
+ from_attributes = True
1232
+ ```
1233
+
1234
+ **Por que MICRO?**
1235
+ Domínio único (Produto), sem autenticação, sem integrações externas. O @dev tem contexto suficiente para implementar sem @analyst ou @architect.
1236
+
1237
+ ---
1238
+
1239
+ ## Dicas gerais
1240
+
1241
+ ### Quando recomeçar um agente
1242
+
1243
+ Se você forneceu informações incompletas, pode simplesmente reativar:
1244
+ ```
1245
+ /analyst
1246
+
1247
+ Preciso adicionar uma informação: o sistema também vai ter integração com Mercado Pago
1248
+ ```
1249
+
1250
+ O agente vai incorporar a nova informação antes de gerar a entrega final.
1251
+
1252
+ ### Quando pular um agente
1253
+
1254
+ - Em projetos **MICRO**, pule @analyst, @architect e @qa — vá direto ao @dev.
1255
+ - Se o projeto não tem interface visual, pode pular @ux-ui mesmo em projetos SMALL.
1256
+ - Se o projeto MEDIUM tem módulos pouco interdependentes, pode pular @orchestrator e usar @dev sequencialmente.
1257
+
1258
+ ### Mudança de contexto
1259
+
1260
+ Se durante o desenvolvimento o projeto crescer e mudar de SMALL para MEDIUM:
1261
+ ```bash
1262
+ npx @jaimevalasek/aioson setup:context . --defaults --classification=MEDIUM
1263
+ ```
1264
+
1265
+ Então ative @pm e @orchestrator antes de continuar com @dev.
1266
+
1267
+ ### Verificar estado atual
1268
+
1269
+ ```bash
1270
+ npx @jaimevalasek/aioson doctor # valida saúde dos arquivos
1271
+ npx @jaimevalasek/aioson context:validate # valida o project.context.md
1272
+ npx @jaimevalasek/aioson parallel:status # progresso das lanes (MEDIUM)
1273
+ ```
1274
+
1275
+ ---
1276
+
1277
+ ## Veja também
1278
+
1279
+ - [Início rápido](./inicio-rapido.md)
1280
+ - [Guia de agentes](./agentes.md)
1281
+ - [Suporte Web3](./web3.md) — cenários completos Ethereum, Solana e Midnight Network
1282
+ - [Orquestração paralela](../en/parallel.md)