@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.
- package/CHANGELOG.md +595 -595
- package/CODE_OF_CONDUCT.md +12 -12
- package/CONTRIBUTING.md +13 -13
- package/LICENSE +661 -661
- package/README.md +919 -919
- package/bin/aioson.js +4 -4
- package/docs/design-previews/aurora-command-ui-website.html +884 -884
- package/docs/design-previews/aurora-command-ui.html +682 -682
- package/docs/design-previews/bold-editorial-ui-website.html +658 -658
- package/docs/design-previews/bold-editorial-ui.html +717 -717
- package/docs/design-previews/clean-saas-ui-website.html +1202 -1202
- package/docs/design-previews/clean-saas-ui.html +549 -549
- package/docs/design-previews/cognitive-core-ui-website.html +1009 -1009
- package/docs/design-previews/cognitive-core-ui.html +463 -463
- package/docs/design-previews/glassmorphism-ui-website.html +572 -572
- package/docs/design-previews/glassmorphism-ui.html +886 -886
- package/docs/design-previews/index.html +699 -699
- package/docs/design-previews/interface-design-website.html +1187 -1187
- package/docs/design-previews/interface-design.html +513 -513
- package/docs/design-previews/neo-brutalist-ui-website.html +621 -621
- package/docs/design-previews/neo-brutalist-ui.html +797 -797
- package/docs/design-previews/premium-command-center-ui-website.html +1217 -1217
- package/docs/design-previews/premium-command-center-ui.html +552 -552
- package/docs/design-previews/pt.squarespace.com-homepage.html +889 -889
- package/docs/design-previews/warm-craft-ui-website.html +684 -684
- package/docs/design-previews/warm-craft-ui.html +739 -739
- package/docs/en/1-understand/ecosystem-map.md +228 -0
- package/docs/en/1-understand/glossary.md +288 -0
- package/docs/en/1-understand/what-is-aioson.md +94 -0
- package/docs/en/1-understand/why-it-exists.md +106 -0
- package/docs/en/2-start/existing-project.md +246 -0
- package/docs/en/2-start/first-project.md +307 -0
- package/docs/en/2-start/initial-decisions.md +223 -0
- package/docs/en/3-recipes/README.md +28 -0
- package/docs/en/3-recipes/continuity-between-sessions.md +303 -0
- package/docs/en/3-recipes/from-idea-to-prd-via-briefing.md +235 -0
- package/docs/en/3-recipes/full-feature-with-sheldon.md +338 -0
- package/docs/en/4-agents/README.md +56 -0
- package/docs/en/5-reference/README.md +60 -0
- package/docs/en/{cli-reference.md → 5-reference/cli-reference.md} +639 -464
- package/docs/en/{i18n.md → 5-reference/i18n.md} +52 -52
- package/docs/en/{json-schemas.md → 5-reference/json-schemas.md} +41 -41
- package/docs/en/{mcp.md → 5-reference/mcp.md} +56 -56
- package/docs/en/{parallel.md → 5-reference/parallel.md} +82 -82
- package/docs/en/{qa-browser.md → 5-reference/qa-browser.md} +339 -339
- package/docs/en/{release-flow.md → 5-reference/release-flow.md} +22 -22
- package/docs/en/{release-notes-template.md → 5-reference/release-notes-template.md} +41 -41
- package/docs/en/{release.md → 5-reference/release.md} +28 -28
- package/docs/en/{schemas → 5-reference/schemas}/agent-prompt.schema.json +17 -17
- package/docs/en/{schemas → 5-reference/schemas}/agents.schema.json +32 -32
- package/docs/en/{schemas → 5-reference/schemas}/context-validate.schema.json +36 -36
- package/docs/en/{schemas → 5-reference/schemas}/doctor.schema.json +89 -89
- package/docs/en/{schemas → 5-reference/schemas}/error.schema.json +24 -24
- package/docs/en/{schemas → 5-reference/schemas}/i18n-add.schema.json +15 -15
- package/docs/en/{schemas → 5-reference/schemas}/index.json +126 -126
- package/docs/en/{schemas → 5-reference/schemas}/info.schema.json +39 -39
- package/docs/en/{schemas → 5-reference/schemas}/init.schema.json +48 -48
- package/docs/en/{schemas → 5-reference/schemas}/install.schema.json +60 -60
- package/docs/en/{schemas → 5-reference/schemas}/locale-apply.schema.json +30 -30
- package/docs/en/{schemas → 5-reference/schemas}/mcp-doctor.schema.json +95 -95
- package/docs/en/{schemas → 5-reference/schemas}/mcp-init.schema.json +122 -122
- package/docs/en/{schemas → 5-reference/schemas}/package-test.schema.json +24 -24
- package/docs/en/{schemas → 5-reference/schemas}/parallel-assign.schema.json +66 -66
- package/docs/en/{schemas → 5-reference/schemas}/parallel-doctor.schema.json +122 -122
- package/docs/en/{schemas → 5-reference/schemas}/parallel-guard.schema.json +63 -63
- package/docs/en/{schemas → 5-reference/schemas}/parallel-init.schema.json +53 -53
- package/docs/en/{schemas → 5-reference/schemas}/parallel-merge.schema.json +84 -84
- package/docs/en/{schemas → 5-reference/schemas}/parallel-status.schema.json +184 -184
- package/docs/en/{schemas → 5-reference/schemas}/setup-context.schema.json +39 -39
- package/docs/en/{schemas → 5-reference/schemas}/smoke.schema.json +23 -23
- package/docs/en/{schemas → 5-reference/schemas}/update.schema.json +48 -48
- package/docs/en/{schemas → 5-reference/schemas}/workflow-plan.schema.json +30 -30
- package/docs/en/{squad-dashboard.md → 5-reference/squad-dashboard.md} +372 -372
- package/docs/en/{web3.md → 5-reference/web3.md} +54 -54
- package/docs/en/README.md +115 -0
- package/docs/en/active-learning-loop/README.md +117 -0
- package/docs/en/active-learning-loop/active-learning-loop.md +117 -0
- package/docs/en/active-learning-loop/cli-commands.md +320 -0
- package/docs/en/active-learning-loop/diagrams.md +225 -0
- package/docs/en/active-learning-loop/doctor-checks.md +151 -0
- package/docs/en/active-learning-loop/how-to-use.md +313 -0
- package/docs/en/active-learning-loop/troubleshooting.md +283 -0
- package/docs/en/deyvin-subtask-scout/README.md +109 -0
- package/docs/en/deyvin-subtask-scout/cli-commands.md +248 -0
- package/docs/en/deyvin-subtask-scout/diagrams.md +124 -0
- package/docs/en/deyvin-subtask-scout/how-to-use.md +221 -0
- package/docs/en/deyvin-subtask-scout/sub-task-scout.md +115 -0
- package/docs/en/deyvin-subtask-scout/troubleshooting.md +184 -0
- package/docs/integrations/apps-publish-marketplace.md +94 -94
- package/docs/integrations/sdlc-genius-boundary.md +76 -76
- package/docs/integrations/sdlc-genius-eval-matrix.md +75 -75
- package/docs/integrations/sdlc-genius-install-checklist.md +93 -93
- package/docs/integrations/sdlc-genius-review-samples.md +86 -86
- package/docs/openclaw-bridge.md +308 -308
- package/docs/pt/1-entender/glossario.md +288 -0
- package/docs/pt/1-entender/mapa-do-ecossistema.md +228 -0
- package/docs/pt/1-entender/o-que-e-aioson.md +94 -0
- package/docs/pt/1-entender/por-que-existe.md +107 -0
- package/docs/pt/2-comecar/decisoes-iniciais.md +223 -0
- package/docs/pt/2-comecar/primeiro-projeto.md +307 -0
- package/docs/pt/2-comecar/projeto-existente.md +245 -0
- package/docs/pt/3-receitas/README.md +28 -0
- package/docs/pt/3-receitas/app-saas-do-zero.md +324 -0
- package/docs/pt/3-receitas/auditoria-seguranca.md +254 -0
- package/docs/pt/3-receitas/clonar-design-de-site.md +211 -0
- package/docs/pt/3-receitas/continuidade-entre-sessoes.md +303 -0
- package/docs/pt/3-receitas/da-ideia-ao-prd-via-briefing.md +234 -0
- package/docs/pt/3-receitas/feature-completa-com-sheldon.md +338 -0
- package/docs/pt/3-receitas/integracao-em-codebase-grande.md +243 -0
- package/docs/pt/3-receitas/landing-page.md +281 -0
- package/docs/pt/3-receitas/plans-externos-para-product.md +191 -0
- package/docs/pt/3-receitas/publicar-no-aioson-com.md +219 -0
- package/docs/pt/3-receitas/refatoracao-grande.md +251 -0
- package/docs/pt/4-agentes/README.md +65 -0
- package/docs/pt/4-agentes/analyst.md +111 -0
- package/docs/pt/4-agentes/architect.md +113 -0
- package/docs/pt/4-agentes/briefing.md +95 -0
- package/docs/pt/4-agentes/committer.md +108 -0
- package/docs/pt/4-agentes/copywriter.md +279 -0
- package/docs/pt/4-agentes/design-hybrid-forge.md +116 -0
- package/docs/pt/4-agentes/dev.md +136 -0
- package/docs/pt/4-agentes/deyvin.md +99 -0
- package/docs/pt/4-agentes/discover.md +122 -0
- package/docs/pt/4-agentes/discovery-design-doc.md +91 -0
- package/docs/pt/4-agentes/genome.md +115 -0
- package/docs/pt/4-agentes/neo.md +93 -0
- package/docs/pt/4-agentes/orache.md +107 -0
- package/docs/pt/4-agentes/orchestrator.md +118 -0
- package/docs/pt/4-agentes/pentester.md +131 -0
- package/docs/pt/4-agentes/pm.md +97 -0
- package/docs/pt/4-agentes/product.md +114 -0
- package/docs/pt/4-agentes/profiler-enricher.md +93 -0
- package/docs/pt/4-agentes/profiler-forge.md +93 -0
- package/docs/pt/4-agentes/profiler-researcher.md +98 -0
- package/docs/pt/4-agentes/qa.md +124 -0
- package/docs/pt/4-agentes/setup.md +104 -0
- package/docs/pt/4-agentes/sheldon.md +95 -0
- package/docs/pt/4-agentes/site-forge.md +104 -0
- package/docs/pt/4-agentes/squad.md +127 -0
- package/docs/pt/4-agentes/tester.md +105 -0
- package/docs/pt/4-agentes/ux-ui.md +110 -0
- package/docs/pt/4-agentes/validator.md +118 -0
- package/docs/pt/5-referencia/README.md +88 -0
- package/docs/pt/5-referencia/agent-chain-continuity.md +124 -0
- package/docs/pt/{agent-sharding.md → 5-referencia/agent-sharding.md} +132 -132
- package/docs/pt/5-referencia/aioson-com-store.md +119 -0
- package/docs/pt/{automacao-squads.md → 5-referencia/automacao-squads.md} +407 -407
- package/docs/pt/{clientes-ai.md → 5-referencia/clientes-ai.md} +300 -290
- package/docs/pt/{comandos-cli.md → 5-referencia/comandos-cli.md} +1823 -1781
- package/docs/pt/{compress-agents.md → 5-referencia/compress-agents.md} +304 -304
- package/docs/pt/{design-docs-governance.md → 5-referencia/design-docs-governance.md} +59 -59
- package/docs/pt/{devlog-pipeline.md → 5-referencia/devlog-pipeline.md} +270 -270
- package/docs/pt/{feature-archive.md → 5-referencia/feature-archive.md} +199 -191
- package/docs/pt/5-referencia/feature-dossier.md +121 -0
- package/docs/pt/{fluxo-artefatos.md → 5-referencia/fluxo-artefatos.md} +179 -178
- package/docs/pt/{genome-3.0-spec.md → 5-referencia/genome-4.0-spec.md} +407 -407
- package/docs/pt/{genome-distribution.md → 5-referencia/genome-distribution.md} +232 -232
- package/docs/pt/{hooks-session-guard.md → 5-referencia/hooks-session-guard.md} +454 -454
- package/docs/pt/{inteligencia-adaptativa.md → 5-referencia/inteligencia-adaptativa.md} +324 -324
- package/docs/pt/5-referencia/live-sessions.md +144 -0
- package/docs/pt/5-referencia/memoria-e-contexto.md +340 -0
- package/docs/pt/{motor-hardening.md → 5-referencia/motor-hardening.md} +493 -492
- package/docs/pt/{output-strategy-delivery.md → 5-referencia/output-strategy-delivery.md} +655 -655
- package/docs/pt/{runner-system.md → 5-referencia/runner-system.md} +113 -113
- package/docs/pt/{runtime-observability.md → 5-referencia/runtime-observability.md} +76 -76
- package/docs/pt/{sandbox.md → 5-referencia/sandbox.md} +125 -125
- package/docs/pt/{sdd-automation-scripts.md → 5-referencia/sdd-automation-scripts.md} +559 -557
- package/docs/pt/5-referencia/sdd-framework.md +115 -0
- package/docs/pt/5-referencia/sdd-planos-e-estrutura.md +321 -0
- package/docs/pt/5-referencia/secure-by-default.md +117 -0
- package/docs/pt/{skills.md → 5-referencia/skills.md} +275 -267
- package/docs/pt/{spec-learnings-pipeline.md → 5-referencia/spec-learnings-pipeline.md} +265 -265
- package/docs/pt/{squad-dashboard.md → 5-referencia/squad-dashboard.md} +373 -373
- package/docs/pt/{web3.md → 5-referencia/web3.md} +797 -797
- package/docs/pt/README.md +111 -125
- package/docs/pt/_arquivo/README.md +130 -0
- package/docs/pt/{advisor-spec.md → _arquivo/advisor-spec.md} +343 -335
- package/docs/pt/{agentes-customizados.md → _arquivo/agentes-customizados.md} +678 -670
- package/docs/pt/{busca-de-contexto.md → _arquivo/busca-de-contexto.md} +136 -129
- package/docs/pt/{cache-de-contexto.md → _arquivo/cache-de-contexto.md} +163 -156
- package/docs/pt/{cenarios.md → _arquivo/cenarios.md} +1282 -1274
- package/docs/pt/{design-hybrid-forge.md → _arquivo/design-hybrid-forge.md} +365 -356
- package/docs/pt/{deyvin.md → _arquivo/deyvin.md} +123 -115
- package/docs/pt/{guia-engineer.md → _arquivo/guia-engineer.md} +234 -226
- package/docs/pt/{inicio-rapido.md → _arquivo/inicio-rapido.md} +261 -251
- package/docs/pt/{memoria-contexto.md → _arquivo/memoria-contexto.md} +262 -255
- package/docs/pt/{monitor-de-contexto.md → _arquivo/monitor-de-contexto.md} +165 -158
- package/docs/pt/{profiler-system.md → _arquivo/profiler-system.md} +222 -214
- package/docs/pt/{recuperacao-de-sessao.md → _arquivo/recuperacao-de-sessao.md} +134 -125
- package/docs/pt/{site-forge.md → _arquivo/site-forge.md} +318 -309
- package/docs/pt/{squad-genome.md → _arquivo/squad-genome.md} +793 -783
- package/docs/pt/active-learning-loop/README.md +117 -0
- package/docs/pt/active-learning-loop/ativo-learning-loop.md +117 -0
- package/docs/pt/active-learning-loop/comandos-cli.md +320 -0
- package/docs/pt/active-learning-loop/como-usar.md +313 -0
- package/docs/pt/active-learning-loop/diagramas.md +225 -0
- package/docs/pt/active-learning-loop/doctor-checks.md +151 -0
- package/docs/pt/active-learning-loop/troubleshooting.md +283 -0
- package/docs/pt/agentes.md +996 -993
- package/docs/pt/deyvin-subtask-scout/README.md +109 -0
- package/docs/pt/deyvin-subtask-scout/comandos-cli.md +248 -0
- package/docs/pt/deyvin-subtask-scout/como-usar.md +221 -0
- package/docs/pt/deyvin-subtask-scout/diagramas.md +124 -0
- package/docs/pt/deyvin-subtask-scout/sub-task-scout.md +113 -0
- package/docs/pt/deyvin-subtask-scout/troubleshooting.md +184 -0
- package/docs/pt/living-memory/README.md +81 -0
- package/docs/pt/living-memory/autonomy-contract.md +206 -0
- package/docs/pt/living-memory/diagramas.md +365 -0
- package/docs/pt/living-memory/memoria-viva.md +141 -0
- package/docs/pt/living-memory/notificacoes-info.md +142 -0
- package/docs/pt/living-memory/reflexao-in-harness.md +218 -0
- package/docs/pt/living-memory/troubleshooting.md +286 -0
- package/docs/testing/genome-2.0-manual-regression.md +23 -23
- package/docs/testing/genome-2.0-matrix.md +36 -36
- package/docs/testing/genome-2.0-rollout.md +184 -184
- package/package.json +51 -51
- package/src/a2a/client.js +165 -165
- package/src/a2a/server.js +223 -223
- package/src/agent-loader.js +280 -280
- package/src/agent-manifests.js +86 -66
- package/src/agents.js +92 -92
- package/src/autonomy-policy.js +163 -139
- package/src/backup-local.js +74 -74
- package/src/backup-provider.js +303 -303
- package/src/brain-query.js +171 -161
- package/src/cli.js +77 -4
- package/src/commands/agent-audit.js +397 -397
- package/src/commands/agent-export-skill.js +229 -229
- package/src/commands/agent-loader.js +85 -85
- package/src/commands/agents.js +273 -255
- package/src/commands/artifact-validate.js +218 -218
- package/src/commands/auth.js +298 -272
- package/src/commands/backup-local-cmd.js +25 -25
- package/src/commands/backup.js +533 -533
- package/src/commands/brain-query.js +44 -44
- package/src/commands/brief-gen.js +405 -405
- package/src/commands/brief-validate.js +65 -65
- package/src/commands/briefing.js +344 -344
- package/src/commands/classify.js +256 -256
- package/src/commands/cloud.js +1767 -1767
- package/src/commands/commit-prepare.js +610 -547
- package/src/commands/compress-agents.js +416 -416
- package/src/commands/config.js +90 -90
- package/src/commands/context-cache.js +90 -90
- package/src/commands/context-compact.js +49 -49
- package/src/commands/context-health.js +187 -177
- package/src/commands/context-load.js +219 -0
- package/src/commands/context-monitor.js +163 -163
- package/src/commands/context-pack.js +45 -45
- package/src/commands/context-search.js +66 -66
- package/src/commands/context-trim.js +183 -183
- package/src/commands/context-validate.js +91 -91
- package/src/commands/design-hybrid-options.js +385 -385
- package/src/commands/detect-test-runner.js +55 -55
- package/src/commands/dev-resume.js +32 -0
- package/src/commands/devlog-export-brains.js +27 -27
- package/src/commands/devlog-process.js +294 -294
- package/src/commands/devlog-watch.js +131 -131
- package/src/commands/doctor.js +123 -123
- package/src/commands/dossier-add-research.js +114 -0
- package/src/commands/dossier-audit.js +222 -0
- package/src/commands/dossier.js +423 -423
- package/src/commands/feature-archive.js +513 -513
- package/src/commands/feature-close.js +554 -270
- package/src/commands/gate-approve.js +198 -198
- package/src/commands/gate-check.js +247 -247
- package/src/commands/genome-doctor.js +489 -198
- package/src/commands/genome-migrate.js +49 -49
- package/src/commands/git-guard.js +170 -170
- package/src/commands/harness.js +307 -121
- package/src/commands/health.js +214 -214
- package/src/commands/hooks-emit.js +253 -253
- package/src/commands/hooks-install.js +347 -347
- package/src/commands/i18n-add.js +56 -56
- package/src/commands/implementation-plan.js +367 -367
- package/src/commands/info.js +41 -41
- package/src/commands/init.js +120 -120
- package/src/commands/install.js +162 -111
- package/src/commands/learning-auto-promote.js +197 -195
- package/src/commands/learning-evolve.js +364 -364
- package/src/commands/learning-export.js +103 -103
- package/src/commands/learning-rollback.js +164 -164
- package/src/commands/learning.js +134 -134
- package/src/commands/live.js +2101 -2082
- package/src/commands/locale-apply.js +54 -54
- package/src/commands/locale-diff.js +25 -25
- package/src/commands/mcp-doctor.js +407 -407
- package/src/commands/mcp-init.js +373 -373
- package/src/commands/memory-archive.js +193 -0
- package/src/commands/memory-reflect-commit.js +148 -0
- package/src/commands/memory-reflect-prepare.js +97 -0
- package/src/commands/memory-restore.js +177 -0
- package/src/commands/memory-search.js +135 -0
- package/src/commands/memory.js +299 -234
- package/src/commands/notify.js +68 -0
- package/src/commands/package-e2e.js +273 -273
- package/src/commands/parallel-assign.js +483 -483
- package/src/commands/parallel-doctor.js +850 -850
- package/src/commands/parallel-guard.js +241 -241
- package/src/commands/parallel-init.js +311 -311
- package/src/commands/parallel-merge.js +299 -299
- package/src/commands/parallel-status.js +434 -434
- package/src/commands/pattern-detect.js +33 -33
- package/src/commands/preflight-context.js +30 -30
- package/src/commands/preflight.js +267 -267
- package/src/commands/pulse-update.js +130 -130
- package/src/commands/qa-doctor.js +185 -185
- package/src/commands/qa-init.js +166 -166
- package/src/commands/qa-report.js +58 -58
- package/src/commands/qa-run.js +873 -873
- package/src/commands/qa-scan.js +337 -337
- package/src/commands/recovery.js +43 -43
- package/src/commands/revision.js +235 -235
- package/src/commands/runner-daemon.js +274 -274
- package/src/commands/runner-plan.js +70 -70
- package/src/commands/runner-queue-from-plan.js +166 -166
- package/src/commands/runner-queue.js +189 -189
- package/src/commands/runner-run.js +129 -129
- package/src/commands/runtime.js +2086 -2067
- package/src/commands/sandbox.js +37 -37
- package/src/commands/scaffold-complete.js +188 -188
- package/src/commands/scan-project.js +1371 -1371
- package/src/commands/scout-commit.js +163 -0
- package/src/commands/scout-prep.js +214 -0
- package/src/commands/scout-validate.js +112 -0
- package/src/commands/security-audit.js +275 -275
- package/src/commands/security-scan.js +376 -376
- package/src/commands/self-implement-loop.js +306 -300
- package/src/commands/session-guard.js +218 -218
- package/src/commands/setup-context.js +699 -699
- package/src/commands/setup.js +178 -178
- package/src/commands/sizing.js +165 -165
- package/src/commands/skill.js +670 -670
- package/src/commands/smoke.js +426 -426
- package/src/commands/spec-checkpoint.js +177 -177
- package/src/commands/spec-status.js +79 -79
- package/src/commands/spec-sync.js +190 -190
- package/src/commands/spec-tasks.js +288 -288
- package/src/commands/squad-agent-create.js +830 -830
- package/src/commands/squad-autorun.js +1220 -1220
- package/src/commands/squad-bus.js +217 -217
- package/src/commands/squad-card.js +149 -149
- package/src/commands/squad-daemon.js +343 -343
- package/src/commands/squad-dashboard.js +39 -39
- package/src/commands/squad-dependency-graph.js +164 -164
- package/src/commands/squad-deploy.js +64 -64
- package/src/commands/squad-doctor.js +460 -460
- package/src/commands/squad-export.js +77 -46
- package/src/commands/squad-investigate.js +314 -314
- package/src/commands/squad-learning.js +209 -209
- package/src/commands/squad-mcp.js +270 -270
- package/src/commands/squad-pipeline.js +343 -343
- package/src/commands/squad-plan.js +361 -361
- package/src/commands/squad-processes.js +56 -56
- package/src/commands/squad-recovery.js +42 -42
- package/src/commands/squad-repair-genomes.js +39 -39
- package/src/commands/squad-review.js +106 -106
- package/src/commands/squad-roi.js +291 -291
- package/src/commands/squad-scaffold.js +56 -56
- package/src/commands/squad-score.js +311 -307
- package/src/commands/squad-status.js +481 -481
- package/src/commands/squad-tool-register.js +157 -157
- package/src/commands/squad-validate.js +438 -438
- package/src/commands/squad-webhook.js +160 -160
- package/src/commands/squad-worker.js +191 -191
- package/src/commands/squad-worktrees.js +75 -75
- package/src/commands/state-save.js +122 -122
- package/src/commands/store-genome.js +667 -304
- package/src/commands/store-skill.js +247 -247
- package/src/commands/store-squad.js +431 -431
- package/src/commands/store-system.js +392 -392
- package/src/commands/sync-agents-preflight.js +176 -0
- package/src/commands/test-agents.js +199 -199
- package/src/commands/tool-capabilities.js +63 -63
- package/src/commands/tool-registry-cmd.js +232 -232
- package/src/commands/update.js +64 -64
- package/src/commands/verify-gate.js +612 -612
- package/src/commands/web-map.js +70 -70
- package/src/commands/web-scrape.js +71 -71
- package/src/commands/workflow-execute.js +730 -730
- package/src/commands/workflow-harden.js +231 -231
- package/src/commands/workflow-heal.js +136 -136
- package/src/commands/workflow-next.js +1279 -1039
- package/src/commands/workflow-plan.js +108 -108
- package/src/commands/workflow-status.js +440 -440
- package/src/commands/workspace.js +144 -144
- package/src/constants.js +413 -384
- package/src/context-cache.js +159 -159
- package/src/context-memory.js +975 -966
- package/src/context-parse-reason.js +22 -22
- package/src/context-search.js +326 -326
- package/src/context-writer.js +197 -197
- package/src/context.js +247 -247
- package/src/delivery-runner.js +319 -319
- package/src/design-variation-catalog.js +503 -503
- package/src/detector.js +261 -261
- package/src/doctor.js +760 -329
- package/src/dossier/codemap-store.js +267 -267
- package/src/dossier/dossier-bootstrap.js +222 -222
- package/src/dossier/dossier-compact.js +159 -159
- package/src/dossier/lock.js +128 -128
- package/src/dossier/research-index-store.js +233 -0
- package/src/dossier/revision-store.js +313 -313
- package/src/dossier/schema.js +162 -155
- package/src/dossier/scout-section.js +127 -0
- package/src/dossier/store.js +406 -400
- package/src/execution-gateway.js +464 -464
- package/src/friction-scanner.js +202 -202
- package/src/genome-files.js +198 -198
- package/src/genome-format.js +442 -442
- package/src/genome-schema.js +238 -238
- package/src/genomes/bindings.js +281 -281
- package/src/genomes.js +500 -500
- package/src/handoff-contract.js +417 -363
- package/src/handoff-validator.js +45 -45
- package/src/harness/circuit-breaker.js +135 -135
- package/src/i18n/index.js +103 -103
- package/src/i18n/messages/en.js +1541 -1434
- package/src/i18n/messages/es.js +1325 -1221
- package/src/i18n/messages/fr.js +1333 -1229
- package/src/i18n/messages/pt-BR.js +1561 -1457
- package/src/i18n/scaffold.js +64 -64
- package/src/install-animation.js +260 -260
- package/src/install-profile.js +127 -127
- package/src/install-wizard.js +475 -475
- package/src/installer-config-merge.js +207 -0
- package/src/installer.js +449 -358
- package/src/learning-loop-archive.js +595 -0
- package/src/learning-loop-doctor.js +217 -0
- package/src/learning-loop-engine.js +254 -0
- package/src/learning-loop-fts5.js +132 -0
- package/src/learning-loop-migration.js +163 -0
- package/src/lib/dev-resume.js +140 -0
- package/src/lib/dossier-telemetry.js +36 -0
- package/src/lib/genomes/compat.js +206 -206
- package/src/lib/genomes/migrate.js +90 -90
- package/src/lib/git-commit-guard.js +751 -691
- package/src/lib/health-check.js +158 -158
- package/src/lib/hook-protocol.js +76 -76
- package/src/lib/llm-content-sanitizer.js +44 -0
- package/src/lib/security/artifact-reader.js +167 -167
- package/src/lib/security/exit-codes.js +51 -51
- package/src/lib/security/findings-writer.js +176 -176
- package/src/lib/security/runtime-events.js +77 -77
- package/src/lib/security/secrets-regex.js +115 -115
- package/src/lib/squads/genome-repair.js +49 -49
- package/src/lib/store/security-scan.js +175 -173
- package/src/lib/terminal-checkbox.js +135 -130
- package/src/lib/terminal-picker.js +447 -0
- package/src/lib/tmux-launcher.js +163 -163
- package/src/lib/tool-capabilities.js +102 -102
- package/src/lib/webhook-server.js +328 -328
- package/src/locales.js +88 -88
- package/src/mcp/apps/squad-dashboard/app.js +163 -163
- package/src/mcp/apps/squad-dashboard/index.html +261 -261
- package/src/mcp/apps/squad-dashboard/mcp-manifest.json +23 -23
- package/src/mcp/resources/squad-state.js +130 -130
- package/src/mcp-connectors/registry.js +602 -602
- package/src/memory-reflect-engine.js +359 -0
- package/src/notify-renderer.js +32 -0
- package/src/onboarding.js +305 -305
- package/src/parallel-workspace.js +756 -756
- package/src/parser.js +66 -66
- package/src/path-guard.js +47 -47
- package/src/permissions-generator.js +400 -0
- package/src/preflight-engine.js +654 -654
- package/src/prompt-tool.js +20 -20
- package/src/qa-html-report.js +472 -472
- package/src/recovery-context-session.js +154 -154
- package/src/runner/cascade.js +97 -97
- package/src/runner/cli-launcher.js +109 -109
- package/src/runner/plan-importer.js +63 -63
- package/src/runner/queue-store.js +159 -159
- package/src/runtime-store.js +2720 -2676
- package/src/sandbox.js +194 -177
- package/src/self-healing.js +142 -142
- package/src/session-handoff.js +295 -187
- package/src/squad/agent-teams-adapter.js +270 -264
- package/src/squad/brief-validator.js +350 -350
- package/src/squad/bus-bridge.js +140 -140
- package/src/squad/context-compactor.js +265 -265
- package/src/squad/cross-ai-synthesizer.js +250 -250
- package/src/squad/external-session.js +180 -180
- package/src/squad/hooks-generator.js +196 -196
- package/src/squad/inter-squad-events.js +175 -175
- package/src/squad/inter-squad.js +74 -74
- package/src/squad/intra-bus.js +345 -345
- package/src/squad/learning-extractor.js +213 -213
- package/src/squad/pattern-detector.js +365 -365
- package/src/squad/preflight-context.js +296 -296
- package/src/squad/recovery-context.js +372 -372
- package/src/squad/reflection.js +365 -365
- package/src/squad/squad-scaffold.js +341 -341
- package/src/squad/state-manager.js +310 -310
- package/src/squad/task-decomposer.js +652 -652
- package/src/squad/verify-gate.js +303 -303
- package/src/squad/worktree-manager.js +114 -114
- package/src/squad-daemon.js +490 -490
- package/src/squad-dashboard/api.js +223 -223
- package/src/squad-dashboard/attachment-handler.js +93 -93
- package/src/squad-dashboard/context-monitor.js +157 -157
- package/src/squad-dashboard/execution-logs.js +115 -115
- package/src/squad-dashboard/hunk-review.js +209 -209
- package/src/squad-dashboard/metrics.js +133 -133
- package/src/squad-dashboard/process-monitor.js +125 -125
- package/src/squad-dashboard/renderer.js +858 -858
- package/src/squad-dashboard/server.js +232 -232
- package/src/squad-dashboard/styles.js +525 -525
- package/src/squad-dashboard/token-tracker.js +99 -99
- package/src/squads/apply-genome.js +21 -21
- package/src/squads/genome-binding-service.js +154 -154
- package/src/sub-task-engine.js +415 -0
- package/src/sub-task-schemas.js +150 -0
- package/src/sub-task-state.js +152 -0
- package/src/sub-task-telemetry.js +69 -0
- package/src/test-briefing.js +226 -226
- package/src/tool-executor.js +94 -94
- package/src/updater.js +39 -39
- package/src/utils.js +49 -49
- package/src/version.js +50 -50
- package/src/web.js +284 -284
- package/src/worker-runner.js +541 -524
- package/src/workflow-gates.js +185 -185
- package/template/.aioson/advisors/.gitkeep +1 -1
- package/template/.aioson/agents/analyst.md +333 -318
- package/template/.aioson/agents/architect.md +325 -305
- package/template/.aioson/agents/{cypher.md → briefing.md} +264 -252
- package/template/.aioson/agents/committer.md +161 -161
- package/template/.aioson/agents/copywriter.md +937 -463
- package/template/.aioson/agents/design-hybrid-forge.md +141 -141
- package/template/.aioson/agents/dev.md +295 -263
- package/template/.aioson/agents/deyvin.md +198 -87
- package/template/.aioson/agents/discover.md +235 -235
- package/template/.aioson/agents/discovery-design-doc.md +56 -29
- package/template/.aioson/agents/genome.md +1904 -364
- package/template/.aioson/agents/manifests/analyst.manifest.json +26 -26
- package/template/.aioson/agents/manifests/architect.manifest.json +23 -23
- package/template/.aioson/agents/manifests/committer.manifest.json +23 -23
- package/template/.aioson/agents/manifests/dev.manifest.json +54 -37
- package/template/.aioson/agents/manifests/deyvin.manifest.json +41 -0
- package/template/.aioson/agents/manifests/orchestrator.manifest.json +30 -30
- package/template/.aioson/agents/manifests/pentester.manifest.json +39 -39
- package/template/.aioson/agents/manifests/pm.manifest.json +26 -26
- package/template/.aioson/agents/manifests/product.manifest.json +23 -23
- package/template/.aioson/agents/manifests/qa.manifest.json +41 -25
- package/template/.aioson/agents/manifests/setup.manifest.json +20 -20
- package/template/.aioson/agents/manifests/ux-ui.manifest.json +24 -24
- package/template/.aioson/agents/neo.md +341 -231
- package/template/.aioson/agents/orache.md +430 -430
- package/template/.aioson/agents/orchestrator.md +274 -263
- package/template/.aioson/agents/pair.md +5 -5
- package/template/.aioson/agents/pentester.md +289 -235
- package/template/.aioson/agents/pm.md +141 -130
- package/template/.aioson/agents/product.md +351 -273
- package/template/.aioson/agents/profiler-enricher.md +331 -331
- package/template/.aioson/agents/profiler-forge.md +212 -212
- package/template/.aioson/agents/profiler-researcher.md +282 -282
- package/template/.aioson/agents/qa.md +432 -342
- package/template/.aioson/agents/setup.md +423 -423
- package/template/.aioson/agents/sheldon.md +259 -197
- package/template/.aioson/agents/site-forge.md +281 -281
- package/template/.aioson/agents/squad.md +160 -156
- package/template/.aioson/agents/tester.md +536 -473
- package/template/.aioson/agents/ux-ui.md +195 -162
- package/template/.aioson/agents/validator.md +101 -69
- package/template/.aioson/brains/README.md +132 -128
- package/template/.aioson/brains/_archived/.gitkeep +0 -0
- package/template/.aioson/brains/_index.json +34 -16
- package/template/.aioson/brains/dev/patterns.brain.json +79 -0
- package/template/.aioson/brains/scripts/query.js +107 -107
- package/template/.aioson/brains/sheldon/architecture-decisions.brain.json +79 -0
- package/template/.aioson/brains/site-forge/visual-patterns.brain.json +205 -205
- package/template/.aioson/config/autonomy-protocol.json +125 -43
- package/template/.aioson/config/learning-loop.json +10 -0
- package/template/.aioson/config/scout-engine.json +1 -0
- package/template/.aioson/config.md +410 -410
- package/template/.aioson/context/_archived/.gitkeep +0 -0
- package/template/.aioson/context/design-doc.md +136 -136
- package/template/.aioson/context/project-map.md +57 -57
- package/template/.aioson/context/project-pulse.md +34 -34
- package/template/.aioson/context/seeds/seed-example.md +27 -27
- package/template/.aioson/context/spec.md.template +54 -54
- package/template/.aioson/context/user-profile.md +42 -42
- package/template/.aioson/design-docs/code-reuse.md +48 -48
- package/template/.aioson/design-docs/componentization.md +47 -47
- package/template/.aioson/design-docs/file-size.md +52 -52
- package/template/.aioson/design-docs/folder-structure.md +51 -51
- package/template/.aioson/design-docs/naming.md +54 -54
- package/template/.aioson/docs/LAYERS.md +89 -89
- package/template/.aioson/docs/README.md +76 -76
- package/template/.aioson/docs/autonomy-protocol.md +80 -0
- package/template/.aioson/docs/briefing/briefing-craft.md +237 -0
- package/template/.aioson/docs/dev/execution-discipline.md +106 -106
- package/template/.aioson/docs/dev/stack-conventions.md +83 -83
- package/template/.aioson/docs/deyvin/continuity-recovery.md +57 -57
- package/template/.aioson/docs/deyvin/debugging-escalation.md +30 -30
- package/template/.aioson/docs/deyvin/pair-execution.md +44 -44
- package/template/.aioson/docs/deyvin/runtime-handoffs.md +36 -36
- package/template/.aioson/docs/example-external-api-context.md +72 -72
- package/template/.aioson/docs/pentester/app-playbooks.md +206 -0
- package/template/.aioson/docs/pentester/llm-supplychain.md +165 -0
- package/template/.aioson/docs/product/conversation-playbook.md +116 -116
- package/template/.aioson/docs/product/prd-contract.md +107 -107
- package/template/.aioson/docs/product/quality-lens.md +57 -57
- package/template/.aioson/docs/product/research-loop.md +65 -65
- package/template/.aioson/docs/sheldon/enrichment-paths.md +134 -134
- package/template/.aioson/docs/sheldon/harness-contract.md +118 -0
- package/template/.aioson/docs/sheldon/quality-lens.md +57 -57
- package/template/.aioson/docs/sheldon/research-loop.md +56 -56
- package/template/.aioson/docs/sheldon/web-intelligence.md +75 -75
- package/template/.aioson/docs/site-forge-build.md +195 -195
- package/template/.aioson/docs/site-forge-extraction.md +135 -135
- package/template/.aioson/docs/site-forge-qa.md +155 -155
- package/template/.aioson/docs/site-forge-recon.md +434 -434
- package/template/.aioson/docs/site-forge-transform.md +249 -249
- package/template/.aioson/docs/squad/content-output.md +91 -91
- package/template/.aioson/docs/squad/creation-flow.md +149 -135
- package/template/.aioson/docs/squad/domain-breadth.md +322 -0
- package/template/.aioson/docs/squad/domain-classification.md +117 -117
- package/template/.aioson/docs/squad/genome-bindings.md +47 -47
- package/template/.aioson/docs/squad/package-contract.md +260 -234
- package/template/.aioson/docs/squad/quality-lens.md +60 -56
- package/template/.aioson/docs/squad/research-loop.md +59 -59
- package/template/.aioson/docs/squad/session-operations.md +117 -117
- package/template/.aioson/docs/squad/workflow-quality.md +165 -165
- package/template/.aioson/docs/tester/coverage-quality.md +351 -0
- package/template/.aioson/docs/ux-ui/accessibility-audit.md +55 -55
- package/template/.aioson/docs/ux-ui/audit-mode.md +86 -86
- package/template/.aioson/docs/ux-ui/component-map.md +35 -35
- package/template/.aioson/docs/ux-ui/design-execution.md +111 -111
- package/template/.aioson/docs/ux-ui/design-gate.md +27 -27
- package/template/.aioson/docs/ux-ui/research-mode.md +39 -39
- package/template/.aioson/docs/ux-ui/site-delivery.md +156 -156
- package/template/.aioson/docs/ux-ui/token-contract.md +57 -57
- package/template/.aioson/genomes/INDEX.md +195 -0
- package/template/.aioson/genomes/copywriting/SKILL.md +137 -0
- package/template/.aioson/genomes/copywriting/manifest.json +140 -0
- package/template/.aioson/genomes/copywriting/references/application-notes.md +145 -0
- package/template/.aioson/genomes/copywriting/references/decision-weights.md +45 -0
- package/template/.aioson/genomes/copywriting/references/frameworks/5-act-narrative.md +184 -0
- package/template/.aioson/genomes/copywriting/references/frameworks/classical-formulas.md +164 -0
- package/template/.aioson/genomes/copywriting/references/frameworks/offer-stack.md +195 -0
- package/template/.aioson/genomes/copywriting/references/frameworks/one-belief.md +135 -0
- package/template/.aioson/genomes/copywriting/references/frameworks/pms-research.md +211 -0
- package/template/.aioson/genomes/copywriting/references/frameworks/two-paths-close.md +190 -0
- package/template/.aioson/genomes/copywriting/references/heuristics.md +114 -0
- package/template/.aioson/genomes/copywriting/references/meta-axioms.md +68 -0
- package/template/.aioson/genomes/copywriting/references/methodology.md +115 -0
- package/template/.aioson/genomes/copywriting-brunson/SKILL.md +133 -0
- package/template/.aioson/genomes/copywriting-brunson/manifest.json +152 -0
- package/template/.aioson/genomes/copywriting-brunson/references/application-notes.md +113 -0
- package/template/.aioson/genomes/copywriting-brunson/references/decision-weights.md +33 -0
- package/template/.aioson/genomes/copywriting-brunson/references/evidence-and-attribution.md +81 -0
- package/template/.aioson/genomes/copywriting-brunson/references/frameworks/6-part-structure.md +136 -0
- package/template/.aioson/genomes/copywriting-brunson/references/frameworks/origin-story.md +121 -0
- package/template/.aioson/genomes/copywriting-brunson/references/frameworks/perfect-webinar-script.md +139 -0
- package/template/.aioson/genomes/copywriting-brunson/references/frameworks/persuasive-storytelling-5-structures.md +164 -0
- package/template/.aioson/genomes/copywriting-brunson/references/frameworks/value-stack.md +136 -0
- package/template/.aioson/genomes/copywriting-brunson/references/frameworks/who-what-why-how.md +110 -0
- package/template/.aioson/genomes/copywriting-brunson/references/meta-axioms.md +36 -0
- package/template/.aioson/genomes/copywriting-brunson/references/methodology.md +112 -0
- package/template/.aioson/git-guard.json +12 -11
- package/template/.aioson/mcp/servers.md +23 -23
- package/template/.aioson/profiler-reports/.gitkeep +1 -1
- package/template/.aioson/rules/README.md +69 -69
- package/template/.aioson/rules/_archived/.gitkeep +0 -0
- package/template/.aioson/rules/agent-language-policy.md +93 -93
- package/template/.aioson/rules/aioson-context-boundary.md +63 -63
- package/template/.aioson/rules/canonical-path-contract.md +47 -47
- package/template/.aioson/rules/data-format-convention.md +74 -74
- package/template/.aioson/rules/disk-first-artifacts.md +44 -44
- package/template/.aioson/rules/example-monetary-values.md +30 -30
- package/template/.aioson/rules/output-brevity.md +44 -44
- package/template/.aioson/rules/prd-section-ownership.md +49 -49
- package/template/.aioson/rules/security-baseline.md +139 -139
- package/template/.aioson/rules/spec-level-ownership.md +61 -61
- package/template/.aioson/rules/squad/README.md +50 -50
- package/template/.aioson/rules/squad-driver-pattern.md +81 -81
- package/template/.aioson/schemas/content-blueprint.schema.json +30 -30
- package/template/.aioson/schemas/genome-meta.schema.json +150 -150
- package/template/.aioson/schemas/genome.schema.json +115 -115
- package/template/.aioson/schemas/readiness.schema.json +27 -27
- package/template/.aioson/schemas/squad-blueprint.schema.json +228 -228
- package/template/.aioson/schemas/squad-manifest.schema.json +874 -874
- package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +243 -243
- package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -293
- package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -827
- package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -250
- package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -585
- package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -365
- package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +482 -482
- package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +387 -387
- package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +205 -205
- package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -338
- package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -977
- package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -218
- package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -326
- package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -461
- package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -293
- package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -352
- package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +210 -210
- package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -319
- package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -365
- package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -196
- package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -244
- package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -235
- package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -215
- package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -295
- package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +203 -203
- package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -339
- package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +407 -407
- package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +272 -272
- package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +524 -524
- package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +279 -279
- package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +289 -289
- package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +437 -437
- package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +222 -222
- package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -159
- package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -498
- package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -236
- package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -274
- package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -355
- package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -198
- package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -307
- package/template/.aioson/skills/design/interface-design/SKILL.md +47 -47
- package/template/.aioson/skills/design/interface-design/references/components-and-states.md +105 -105
- package/template/.aioson/skills/design/interface-design/references/design-directions.md +101 -101
- package/template/.aioson/skills/design/interface-design/references/handoff-and-quality.md +71 -71
- package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +74 -74
- package/template/.aioson/skills/design/interface-design/references/tokens-and-depth.md +173 -173
- package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +213 -213
- package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -228
- package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -855
- package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -334
- package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -342
- package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -286
- package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -458
- package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -723
- package/template/.aioson/skills/design/premium-command-center-ui/SKILL.md +62 -62
- package/template/.aioson/skills/design/premium-command-center-ui/references/operations.md +74 -74
- package/template/.aioson/skills/design/premium-command-center-ui/references/patterns.md +116 -116
- package/template/.aioson/skills/design/premium-command-center-ui/references/validation.md +47 -47
- package/template/.aioson/skills/design/premium-command-center-ui/references/visual-system.md +215 -215
- package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -31
- package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +66 -66
- package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +368 -368
- package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -150
- package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -270
- package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -189
- package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +165 -165
- package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +209 -209
- package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -324
- package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -508
- package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -223
- package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -374
- package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -356
- package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -288
- package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -289
- package/template/.aioson/skills/design-system/SKILL.md +92 -92
- package/template/.aioson/skills/design-system/components/SKILL.md +274 -274
- package/template/.aioson/skills/design-system/dashboards/SKILL.md +184 -184
- package/template/.aioson/skills/design-system/foundations/SKILL.md +250 -250
- package/template/.aioson/skills/design-system/motion/SKILL.md +197 -197
- package/template/.aioson/skills/design-system/patterns/SKILL.md +231 -231
- package/template/.aioson/skills/dynamic/README.md +30 -30
- package/template/.aioson/skills/dynamic/cardano-docs.md +16 -16
- package/template/.aioson/skills/dynamic/ethereum-docs.md +17 -17
- package/template/.aioson/skills/dynamic/flux-ui-docs.md +13 -13
- package/template/.aioson/skills/dynamic/laravel-docs.md +41 -41
- package/template/.aioson/skills/dynamic/npm-packages.md +16 -16
- package/template/.aioson/skills/dynamic/solana-docs.md +16 -16
- package/template/.aioson/skills/marketing/references/anti-patterns.md +254 -254
- package/template/.aioson/skills/marketing/references/cta-matrix.md +361 -0
- package/template/.aioson/skills/marketing/references/fascinations.md +192 -192
- package/template/.aioson/skills/marketing/references/five-acts.md +248 -248
- package/template/.aioson/skills/marketing/references/headline-matrix.md +358 -0
- package/template/.aioson/skills/marketing/references/market-intelligence.md +198 -198
- package/template/.aioson/skills/marketing/references/offer-structure.md +203 -203
- package/template/.aioson/skills/marketing/references/one-belief.md +149 -149
- package/template/.aioson/skills/marketing/references/patterns.md +218 -218
- package/template/.aioson/skills/marketing/references/platform-constraints.md +337 -0
- package/template/.aioson/skills/marketing/references/pms-research.md +193 -193
- package/template/.aioson/skills/marketing/vsl-craft.md +385 -385
- package/template/.aioson/skills/premium-visual-design/SKILL.md +83 -83
- package/template/.aioson/skills/premium-visual-design/components/agent-badge.md +92 -92
- package/template/.aioson/skills/premium-visual-design/components/dependency-node.md +102 -102
- package/template/.aioson/skills/premium-visual-design/components/mention-autocomplete.md +136 -136
- package/template/.aioson/skills/premium-visual-design/components/notification-center.md +136 -136
- package/template/.aioson/skills/premium-visual-design/components/review-action-bar.md +188 -188
- package/template/.aioson/skills/premium-visual-design/components/team-switcher.md +131 -131
- package/template/.aioson/skills/premium-visual-design/patterns/agent-message-thread.md +198 -198
- package/template/.aioson/skills/premium-visual-design/patterns/notification-panel.md +275 -275
- package/template/.aioson/skills/premium-visual-design/patterns/review-workflow-ui.md +234 -234
- package/template/.aioson/skills/premium-visual-design/patterns/task-dependency-graph.md +147 -147
- package/template/.aioson/skills/premium-visual-design/tokens/status-extended.md +142 -142
- package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +46 -46
- package/template/.aioson/skills/process/aioson-spec-driven/references/analyst.md +30 -30
- package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +109 -109
- package/template/.aioson/skills/process/aioson-spec-driven/references/architect.md +23 -23
- package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +44 -44
- package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +37 -37
- package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +47 -47
- package/template/.aioson/skills/process/aioson-spec-driven/references/deyvin.md +27 -27
- package/template/.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md +49 -49
- package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +101 -101
- package/template/.aioson/skills/process/aioson-spec-driven/references/pm.md +30 -30
- package/template/.aioson/skills/process/aioson-spec-driven/references/product.md +25 -25
- package/template/.aioson/skills/process/aioson-spec-driven/references/qa.md +30 -30
- package/template/.aioson/skills/process/aioson-spec-driven/references/sheldon.md +25 -25
- package/template/.aioson/skills/process/aioson-spec-driven/references/ui-language.md +75 -75
- package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +147 -147
- package/template/.aioson/skills/process/design-hybrid-forge/references/crossover-protocol.md +221 -221
- package/template/.aioson/skills/process/design-hybrid-forge/references/naming-registry.md +88 -88
- package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +306 -306
- package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +149 -149
- package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +208 -208
- package/template/.aioson/skills/process/design-hybrid-forge/references/variation-library.md +125 -125
- package/template/.aioson/skills/process/secure-tdd/SKILL.md +97 -97
- package/template/.aioson/skills/process/simplify/SKILL.md +173 -173
- package/template/.aioson/skills/references/premium-command-center-ui/master-application-prompt.md +79 -79
- package/template/.aioson/skills/references/premium-command-center-ui/operational-ux-playbook.md +253 -253
- package/template/.aioson/skills/references/premium-command-center-ui/quality-validation-checklist.md +82 -82
- package/template/.aioson/skills/references/premium-command-center-ui/visual-system-and-component-patterns.md +270 -270
- package/template/.aioson/skills/squad/SKILL.md +58 -58
- package/template/.aioson/skills/squad/formats/catalog.json +15 -15
- package/template/.aioson/skills/squad/formats/content/blog-post.md +47 -47
- package/template/.aioson/skills/squad/formats/content/newsletter.md +47 -47
- package/template/.aioson/skills/squad/formats/creative/podcast-script.md +43 -43
- package/template/.aioson/skills/squad/formats/creative/video-script.md +41 -41
- package/template/.aioson/skills/squad/formats/social/instagram-feed.md +42 -42
- package/template/.aioson/skills/squad/formats/social/linkedin-post.md +42 -42
- package/template/.aioson/skills/squad/formats/social/tiktok.md +39 -39
- package/template/.aioson/skills/squad/formats/social/twitter-thread.md +39 -39
- package/template/.aioson/skills/squad/formats/social/youtube-long.md +47 -47
- package/template/.aioson/skills/squad/formats/social/youtube-shorts.md +39 -39
- package/template/.aioson/skills/squad/patterns/multi-platform-pattern.md +108 -108
- package/template/.aioson/skills/squad/patterns/persona-based-pattern.md +98 -98
- package/template/.aioson/skills/squad/patterns/pipeline-pattern.md +106 -106
- package/template/.aioson/skills/squad/patterns/review-loop-pattern.md +81 -81
- package/template/.aioson/skills/squad/references/checklist-templates.md +122 -122
- package/template/.aioson/skills/squad/references/executor-archetypes.md +123 -123
- package/template/.aioson/skills/squad/references/workflow-templates.md +169 -169
- package/template/.aioson/skills/static/context-budget-guide.md +46 -46
- package/template/.aioson/skills/static/debugging-protocol.md +42 -42
- package/template/.aioson/skills/static/django-patterns.md +342 -342
- package/template/.aioson/skills/static/fastapi-patterns.md +344 -344
- package/template/.aioson/skills/static/filament-patterns.md +267 -267
- package/template/.aioson/skills/static/flux-ui-components.md +262 -262
- package/template/.aioson/skills/static/git-conventions.md +227 -227
- package/template/.aioson/skills/static/git-worktrees.md +36 -36
- package/template/.aioson/skills/static/harness-sensors.md +74 -74
- package/template/.aioson/skills/static/harness-validate/SKILL.md +46 -46
- package/template/.aioson/skills/static/jetstream-setup.md +200 -200
- package/template/.aioson/skills/static/landing-page-deploy.md +192 -192
- package/template/.aioson/skills/static/landing-page-forge.md +730 -730
- package/template/.aioson/skills/static/laravel-conventions.md +491 -491
- package/template/.aioson/skills/static/multi-agent-patterns.md +43 -43
- package/template/.aioson/skills/static/nextjs-patterns.md +321 -321
- package/template/.aioson/skills/static/node-express-patterns.md +317 -317
- package/template/.aioson/skills/static/node-typescript-patterns.md +282 -282
- package/template/.aioson/skills/static/rails-conventions.md +307 -307
- package/template/.aioson/skills/static/react-motion-patterns.md +599 -599
- package/template/.aioson/skills/static/static-html-patterns/checklists.md +43 -43
- package/template/.aioson/skills/static/static-html-patterns/css-tokens.md +609 -609
- package/template/.aioson/skills/static/static-html-patterns/motion.md +193 -193
- package/template/.aioson/skills/static/static-html-patterns/premium.md +711 -711
- package/template/.aioson/skills/static/static-html-patterns/structure.md +209 -209
- package/template/.aioson/skills/static/static-html-patterns/utilities.md +190 -190
- package/template/.aioson/skills/static/static-html-patterns.md +80 -80
- package/template/.aioson/skills/static/tall-stack-patterns.md +286 -286
- package/template/.aioson/skills/static/threejs-patterns.md +929 -929
- package/template/.aioson/skills/static/ui-ux-modern.md +76 -76
- package/template/.aioson/skills/static/web-research-cache.md +115 -115
- package/template/.aioson/skills/static/web3-cardano-patterns.md +337 -337
- package/template/.aioson/skills/static/web3-ethereum-patterns.md +310 -310
- package/template/.aioson/skills/static/web3-security-checklist.md +284 -284
- package/template/.aioson/skills/static/web3-solana-patterns.md +324 -324
- package/template/.aioson/squads/memory.md +5 -5
- package/template/.aioson/tasks/implementation-plan.md +327 -327
- package/template/.aioson/tasks/squad-analyze.md +83 -83
- package/template/.aioson/tasks/squad-create.md +148 -148
- package/template/.aioson/tasks/squad-design.md +206 -206
- package/template/.aioson/tasks/squad-execution-plan.md +279 -279
- package/template/.aioson/tasks/squad-export.md +20 -20
- package/template/.aioson/tasks/squad-extend.md +68 -68
- package/template/.aioson/tasks/squad-investigate.md +57 -57
- package/template/.aioson/tasks/squad-learning-review.md +44 -44
- package/template/.aioson/tasks/squad-output-config.md +177 -177
- package/template/.aioson/tasks/squad-pipeline.md +122 -122
- package/template/.aioson/tasks/squad-profile.md +48 -48
- package/template/.aioson/tasks/squad-refresh.md +236 -0
- package/template/.aioson/tasks/squad-repair.md +85 -85
- package/template/.aioson/tasks/squad-review.md +61 -61
- package/template/.aioson/tasks/squad-task-decompose.md +66 -66
- package/template/.aioson/tasks/squad-validate.md +58 -58
- package/template/.aioson/templates/reflect-prompts/current-state.md +36 -0
- package/template/.aioson/templates/reflect-prompts/how-it-works.md +23 -0
- package/template/.aioson/templates/reflect-prompts/what-it-does.md +21 -0
- package/template/.aioson/templates/squads/content-basic/template.json +21 -21
- package/template/.aioson/templates/squads/digital-marketing-agency/template.json +96 -96
- package/template/.aioson/templates/squads/media-channel/template.json +24 -24
- package/template/.aioson/templates/squads/research-analysis/template.json +22 -22
- package/template/.aioson/templates/squads/software-delivery/template.json +21 -21
- package/template/.claude/commands/aioson/agent/analyst.md +5 -5
- package/template/.claude/commands/aioson/agent/architect.md +5 -5
- package/template/.claude/commands/aioson/agent/briefing.md +5 -0
- package/template/.claude/commands/aioson/agent/committer.md +5 -5
- package/template/.claude/commands/aioson/agent/copywriter.md +5 -5
- package/template/.claude/commands/aioson/agent/design-hybrid-forge.md +5 -5
- package/template/.claude/commands/aioson/agent/dev.md +5 -5
- package/template/.claude/commands/aioson/agent/deyvin.md +5 -5
- package/template/.claude/commands/aioson/agent/discover.md +5 -0
- package/template/.claude/commands/aioson/agent/discovery-design-doc.md +5 -5
- package/template/.claude/commands/aioson/agent/genome.md +5 -5
- package/template/.claude/commands/aioson/agent/neo.md +5 -5
- package/template/.claude/commands/aioson/agent/orache.md +5 -5
- package/template/.claude/commands/aioson/agent/orchestrator.md +5 -5
- package/template/.claude/commands/aioson/agent/pair.md +5 -5
- package/template/.claude/commands/aioson/agent/pentester.md +5 -0
- package/template/.claude/commands/aioson/agent/pm.md +5 -5
- package/template/.claude/commands/aioson/agent/product.md +5 -5
- package/template/.claude/commands/aioson/agent/profiler-enricher.md +5 -5
- package/template/.claude/commands/aioson/agent/profiler-forge.md +5 -5
- package/template/.claude/commands/aioson/agent/profiler-researcher.md +5 -5
- package/template/.claude/commands/aioson/agent/qa.md +5 -5
- package/template/.claude/commands/aioson/agent/setup.md +5 -5
- package/template/.claude/commands/aioson/agent/sheldon.md +5 -5
- package/template/.claude/commands/aioson/agent/site-forge.md +5 -5
- package/template/.claude/commands/aioson/agent/squad.md +5 -5
- package/template/.claude/commands/aioson/agent/tester.md +5 -5
- package/template/.claude/commands/aioson/agent/ux-ui.md +5 -5
- package/template/.claude/commands/aioson/agent/validator.md +5 -5
- package/template/.gemini/GEMINI.md +13 -13
- package/template/.gemini/commands/aios-analyst.toml +7 -7
- package/template/.gemini/commands/aios-architect.toml +8 -8
- package/template/.gemini/commands/aios-committer.toml +7 -7
- package/template/.gemini/commands/aios-copywriter.toml +7 -7
- package/template/.gemini/commands/aios-cypher.toml +7 -7
- package/template/.gemini/commands/aios-dev.toml +9 -9
- package/template/.gemini/commands/aios-deyvin.toml +7 -7
- package/template/.gemini/commands/aios-discover.toml +6 -0
- package/template/.gemini/commands/aios-discovery-design-doc.toml +7 -7
- package/template/.gemini/commands/aios-genome.toml +7 -7
- package/template/.gemini/commands/aios-neo.toml +6 -6
- package/template/.gemini/commands/aios-orache.toml +7 -7
- package/template/.gemini/commands/aios-orchestrator.toml +9 -9
- package/template/.gemini/commands/aios-pair.toml +7 -7
- package/template/.gemini/commands/aios-pm.toml +9 -9
- package/template/.gemini/commands/aios-product.toml +6 -6
- package/template/.gemini/commands/aios-qa.toml +7 -7
- package/template/.gemini/commands/aios-setup.toml +6 -6
- package/template/.gemini/commands/aios-sheldon.toml +7 -7
- package/template/.gemini/commands/aios-site-forge.toml +7 -7
- package/template/.gemini/commands/aios-squad.toml +7 -7
- package/template/.gemini/commands/aios-tester.toml +7 -7
- package/template/.gemini/commands/aios-ux-ui.toml +9 -9
- package/template/.gemini/commands/aios-validator.toml +7 -7
- package/template/AGENTS.md +184 -183
- package/template/CLAUDE.md +98 -97
- package/template/OPENCODE.md +35 -34
- package/template/aioson-models.json +40 -40
- package/template/.aioson/genomes/copywriting.md +0 -204
- package/template/.aioson/genomes/copywriting.meta.json +0 -48
- package/template/.aioson/skills/process/secure-tdd/references/nextjs.md +0 -81
- package/template/.aioson/skills/process/secure-tdd/references/node-express.md +0 -91
- package/template/.aioson/skills/process/secure-tdd/references/planned-stacks.md +0 -33
- package/template/.claude/commands/aioson/agent/cypher.md +0 -5
|
@@ -1,1274 +1,1282 @@
|
|
|
1
|
-
# Cenários de Uso
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
```
|
|
187
|
-
*Você responde:*
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
-
|
|
225
|
-
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
'
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
**
|
|
370
|
-
|
|
371
|
-
**
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
/
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
### Passo
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
### Passo
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
```
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
-
|
|
470
|
-
-
|
|
471
|
-
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
/
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
```
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
Lane
|
|
531
|
-
-
|
|
532
|
-
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
Lane
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
--
|
|
584
|
-
--
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
```
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
}
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
### Passo
|
|
755
|
-
|
|
756
|
-
```
|
|
757
|
-
/
|
|
758
|
-
```
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
**
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
});
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
}
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
```
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
### Passo
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
**
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
}
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
```
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
def
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
@app.
|
|
1200
|
-
def
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
```bash
|
|
1262
|
-
npx @jaimevalasek/aioson
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
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 API já está 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 só 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 só 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.rb ← mó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)
|