@jaimevalasek/aioson 1.7.2 → 1.8.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 +35 -0
- package/README.md +153 -10
- package/docs/en/cli-reference.md +56 -1
- package/docs/en/i18n.md +18 -18
- package/docs/en/schemas/index.json +10 -0
- package/docs/en/schemas/parallel-assign.schema.json +9 -0
- package/docs/en/schemas/parallel-doctor.schema.json +36 -0
- package/docs/en/schemas/parallel-guard.schema.json +63 -0
- package/docs/en/schemas/parallel-merge.schema.json +84 -0
- package/docs/en/schemas/parallel-status.schema.json +91 -1
- package/docs/integrations/apps-publish-marketplace.md +94 -0
- package/docs/pt/README.md +9 -0
- package/docs/pt/agentes.md +324 -3
- package/docs/pt/clientes-ai.md +7 -3
- package/docs/pt/comandos-cli.md +160 -13
- package/docs/pt/compress-agents.md +304 -0
- package/docs/pt/design-docs-governance.md +59 -0
- package/docs/pt/feature-archive.md +191 -0
- package/docs/pt/genome-3.0-spec.md +115 -4
- package/docs/pt/genome-distribution.md +232 -0
- package/docs/pt/inicio-rapido.md +1 -0
- package/docs/pt/motor-hardening.md +492 -0
- package/docs/pt/runner-system.md +113 -0
- package/package.json +2 -1
- package/src/agent-manifests.js +66 -0
- package/src/agents.js +27 -7
- package/src/autonomy-policy.js +139 -0
- package/src/brain-query.js +161 -0
- package/src/cli.js +1377 -1099
- package/src/commands/agents.js +102 -7
- package/src/commands/artifact-validate.js +33 -4
- package/src/commands/auth.js +272 -0
- package/src/commands/brain-query.js +44 -0
- package/src/commands/briefing.js +344 -0
- package/src/commands/commit-prepare.js +547 -0
- package/src/commands/compress-agents.js +416 -0
- package/src/commands/context-health.js +4 -2
- package/src/commands/context-trim.js +17 -11
- package/src/commands/design-hybrid-options.js +3 -3
- package/src/commands/devlog-process.js +6 -4
- package/src/commands/dossier.js +423 -0
- package/src/commands/feature-archive.js +513 -0
- package/src/commands/feature-close.js +123 -18
- package/src/commands/gate-approve.js +198 -0
- package/src/commands/gate-check.js +24 -5
- package/src/commands/genome-doctor.js +166 -9
- package/src/commands/git-guard.js +170 -0
- package/src/commands/harness.js +121 -0
- package/src/commands/implementation-plan.js +47 -20
- package/src/commands/init.js +6 -2
- package/src/commands/install.js +6 -2
- package/src/commands/live.js +497 -56
- package/src/commands/locale-apply.js +9 -6
- package/src/commands/locale-diff.js +11 -112
- package/src/commands/mcp-doctor.js +2 -1
- package/src/commands/mcp-init.js +4 -10
- package/src/commands/memory.js +234 -0
- package/src/commands/parallel-assign.js +107 -27
- package/src/commands/parallel-doctor.js +416 -3
- package/src/commands/parallel-guard.js +241 -0
- package/src/commands/parallel-init.js +66 -4
- package/src/commands/parallel-merge.js +299 -0
- package/src/commands/parallel-status.js +147 -3
- package/src/commands/preflight.js +63 -4
- package/src/commands/qa-init.js +10 -5
- package/src/commands/revision.js +235 -0
- package/src/commands/scaffold-complete.js +188 -0
- package/src/commands/security-audit.js +275 -0
- package/src/commands/security-scan.js +376 -0
- package/src/commands/self-implement-loop.js +46 -2
- package/src/commands/setup-context.js +11 -10
- package/src/commands/squad-agent-create.js +51 -9
- package/src/commands/squad-investigate.js +53 -0
- package/src/commands/squad-plan.js +33 -1
- package/src/commands/squad-scaffold.js +4 -3
- package/src/commands/squad-score.js +71 -14
- package/src/commands/squad-status.js +22 -1
- package/src/commands/squad-validate.js +93 -2
- package/src/commands/store-genome.js +304 -0
- package/src/commands/store-skill.js +247 -0
- package/src/commands/store-squad.js +431 -0
- package/src/commands/store-system.js +392 -0
- package/src/commands/tool-capabilities.js +63 -0
- package/src/commands/update.js +3 -3
- package/src/commands/verify-gate.js +40 -0
- package/src/commands/workflow-execute.js +644 -155
- package/src/commands/workflow-harden.js +231 -0
- package/src/commands/workflow-heal.js +136 -0
- package/src/commands/workflow-next.js +460 -22
- package/src/commands/workflow-status.js +328 -138
- package/src/commands/workspace.js +144 -0
- package/src/constants.js +42 -75
- package/src/context-memory.js +133 -4
- package/src/context-writer.js +2 -1
- package/src/context.js +32 -2
- package/src/doctor.js +46 -6
- package/src/dossier/codemap-store.js +267 -0
- package/src/dossier/dossier-bootstrap.js +222 -0
- package/src/dossier/dossier-compact.js +159 -0
- package/src/dossier/lock.js +128 -0
- package/src/dossier/revision-store.js +313 -0
- package/src/dossier/schema.js +155 -0
- package/src/dossier/store.js +400 -0
- package/src/execution-gateway.js +3 -0
- package/src/friction-scanner.js +202 -0
- package/src/genome-schema.js +24 -1
- package/src/genomes.js +33 -0
- package/src/handoff-contract.js +363 -0
- package/src/handoff-validator.js +45 -0
- package/src/harness/circuit-breaker.js +135 -0
- package/src/i18n/messages/en.js +317 -22
- package/src/i18n/messages/es.js +259 -18
- package/src/i18n/messages/fr.js +260 -18
- package/src/i18n/messages/pt-BR.js +313 -22
- package/src/install-profile.js +0 -16
- package/src/installer.js +70 -6
- package/src/lib/git-commit-guard.js +691 -0
- package/src/lib/security/artifact-reader.js +167 -0
- package/src/lib/security/exit-codes.js +51 -0
- package/src/lib/security/findings-writer.js +176 -0
- package/src/lib/security/runtime-events.js +77 -0
- package/src/lib/security/secrets-regex.js +115 -0
- package/src/lib/store/security-scan.js +173 -0
- package/src/lib/terminal-checkbox.js +130 -0
- package/src/lib/tmux-launcher.js +163 -0
- package/src/lib/tool-capabilities.js +102 -0
- package/src/locales.js +12 -8
- package/src/parallel-workspace.js +756 -0
- package/src/parser.js +8 -1
- package/src/path-guard.js +47 -0
- package/src/preflight-engine.js +237 -26
- package/src/self-healing.js +142 -0
- package/src/session-handoff.js +111 -1
- package/src/squad/squad-scaffold.js +183 -19
- package/src/test-briefing.js +226 -0
- package/src/updater.js +1 -1
- package/src/utils.js +3 -0
- package/src/workflow-gates.js +185 -0
- package/template/.aioson/agents/analyst.md +76 -130
- package/template/.aioson/agents/architect.md +53 -86
- package/template/.aioson/agents/committer.md +161 -0
- package/template/.aioson/agents/cypher.md +252 -0
- package/template/.aioson/agents/dev.md +112 -628
- package/template/.aioson/agents/deyvin.md +33 -236
- package/template/.aioson/agents/discover.md +235 -0
- package/template/.aioson/agents/discovery-design-doc.md +17 -252
- package/template/.aioson/agents/genome.md +76 -26
- package/template/.aioson/agents/manifests/analyst.manifest.json +26 -0
- package/template/.aioson/agents/manifests/architect.manifest.json +23 -0
- package/template/.aioson/agents/manifests/committer.manifest.json +23 -0
- package/template/.aioson/agents/manifests/dev.manifest.json +37 -0
- package/template/.aioson/agents/manifests/orchestrator.manifest.json +30 -0
- package/template/.aioson/agents/manifests/pentester.manifest.json +39 -0
- package/template/.aioson/agents/manifests/pm.manifest.json +26 -0
- package/template/.aioson/agents/manifests/product.manifest.json +23 -0
- package/template/.aioson/agents/manifests/qa.manifest.json +25 -0
- package/template/.aioson/agents/manifests/setup.manifest.json +20 -0
- package/template/.aioson/agents/manifests/ux-ui.manifest.json +24 -0
- package/template/.aioson/agents/neo.md +5 -7
- package/template/.aioson/agents/orache.md +2 -6
- package/template/.aioson/agents/orchestrator.md +81 -182
- package/template/.aioson/agents/pentester.md +235 -0
- package/template/.aioson/agents/pm.md +40 -104
- package/template/.aioson/agents/product.md +99 -344
- package/template/.aioson/agents/profiler-enricher.md +57 -6
- package/template/.aioson/agents/profiler-forge.md +17 -7
- package/template/.aioson/agents/profiler-researcher.md +29 -6
- package/template/.aioson/agents/qa.md +168 -514
- package/template/.aioson/agents/setup.md +52 -278
- package/template/.aioson/agents/sheldon.md +122 -754
- package/template/.aioson/agents/site-forge.md +111 -1583
- package/template/.aioson/agents/squad.md +139 -2010
- package/template/.aioson/agents/tester.md +10 -0
- package/template/.aioson/agents/ux-ui.md +104 -812
- package/template/.aioson/agents/validator.md +69 -0
- package/template/.aioson/brains/scripts/query.js +5 -1
- package/template/.aioson/config/autonomy-protocol.json +43 -0
- package/template/.aioson/config.md +43 -15
- package/template/.aioson/constitution.md +36 -33
- package/template/.aioson/context/design-doc.md +136 -0
- package/template/.aioson/context/project-map.md +57 -0
- package/template/.aioson/design-docs/code-reuse.md +48 -0
- package/template/.aioson/design-docs/componentization.md +47 -0
- package/template/.aioson/design-docs/file-size.md +52 -0
- package/template/.aioson/design-docs/folder-structure.md +51 -0
- package/template/.aioson/design-docs/naming.md +54 -0
- package/template/.aioson/docs/LAYERS.md +12 -2
- package/template/.aioson/docs/dev/execution-discipline.md +106 -0
- package/template/.aioson/docs/dev/stack-conventions.md +83 -0
- package/template/.aioson/docs/deyvin/continuity-recovery.md +57 -0
- package/template/.aioson/docs/deyvin/debugging-escalation.md +30 -0
- package/template/.aioson/docs/deyvin/pair-execution.md +44 -0
- package/template/.aioson/docs/deyvin/runtime-handoffs.md +36 -0
- package/template/.aioson/docs/product/conversation-playbook.md +116 -0
- package/template/.aioson/docs/product/prd-contract.md +107 -0
- package/template/.aioson/docs/product/quality-lens.md +57 -0
- package/template/.aioson/docs/product/research-loop.md +65 -0
- package/template/.aioson/docs/sheldon/enrichment-paths.md +134 -0
- package/template/.aioson/docs/sheldon/quality-lens.md +57 -0
- package/template/.aioson/docs/sheldon/research-loop.md +56 -0
- package/template/.aioson/docs/sheldon/web-intelligence.md +75 -0
- package/template/.aioson/docs/site-forge-build.md +195 -0
- package/template/.aioson/docs/site-forge-extraction.md +135 -0
- package/template/.aioson/docs/site-forge-qa.md +155 -0
- package/template/.aioson/docs/site-forge-recon.md +434 -0
- package/template/.aioson/docs/site-forge-transform.md +249 -0
- package/template/.aioson/docs/squad/content-output.md +91 -0
- package/template/.aioson/docs/squad/creation-flow.md +135 -0
- package/template/.aioson/docs/squad/domain-classification.md +117 -0
- package/template/.aioson/docs/squad/genome-bindings.md +47 -0
- package/template/.aioson/docs/squad/package-contract.md +234 -0
- package/template/.aioson/docs/squad/quality-lens.md +56 -0
- package/template/.aioson/docs/squad/research-loop.md +59 -0
- package/template/.aioson/docs/squad/session-operations.md +117 -0
- package/template/.aioson/docs/squad/workflow-quality.md +165 -0
- package/template/.aioson/docs/ux-ui/accessibility-audit.md +55 -0
- package/template/.aioson/docs/ux-ui/audit-mode.md +86 -0
- package/template/.aioson/docs/ux-ui/component-map.md +35 -0
- package/template/.aioson/docs/ux-ui/design-execution.md +111 -0
- package/template/.aioson/docs/ux-ui/design-gate.md +27 -0
- package/template/.aioson/docs/ux-ui/research-mode.md +39 -0
- package/template/.aioson/docs/ux-ui/site-delivery.md +156 -0
- package/template/.aioson/docs/ux-ui/token-contract.md +57 -0
- package/template/.aioson/genomes/copywriting.meta.json +48 -0
- package/template/.aioson/git-guard.json +11 -0
- package/template/.aioson/mcp/servers.md +0 -1
- package/template/.aioson/rules/agent-language-policy.md +93 -0
- package/template/.aioson/rules/aioson-context-boundary.md +63 -0
- package/template/.aioson/rules/canonical-path-contract.md +47 -0
- package/template/.aioson/rules/data-format-convention.md +24 -86
- package/template/.aioson/rules/disk-first-artifacts.md +44 -0
- package/template/.aioson/rules/output-brevity.md +44 -0
- package/template/.aioson/rules/prd-section-ownership.md +49 -0
- package/template/.aioson/rules/security-baseline.md +139 -0
- package/template/.aioson/rules/spec-level-ownership.md +61 -0
- package/template/.aioson/rules/squad-driver-pattern.md +81 -0
- package/template/.aioson/schemas/squad-blueprint.schema.json +24 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +44 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/pm.md +30 -0
- package/template/.aioson/skills/process/secure-tdd/SKILL.md +97 -0
- package/template/.aioson/skills/process/secure-tdd/references/nextjs.md +81 -0
- package/template/.aioson/skills/process/secure-tdd/references/node-express.md +91 -0
- package/template/.aioson/skills/process/secure-tdd/references/planned-stacks.md +33 -0
- package/template/.aioson/skills/static/harness-validate/SKILL.md +46 -0
- package/template/.aioson/skills/static/web-research-cache.md +3 -0
- package/template/.aioson/tasks/squad-create.md +35 -8
- package/template/.aioson/tasks/squad-design.md +50 -2
- package/template/.aioson/tasks/squad-investigate.md +14 -1
- package/template/.claude/commands/aioson/agent/committer.md +5 -0
- package/template/.claude/commands/aioson/agent/copywriter.md +5 -0
- package/template/.claude/commands/aioson/agent/cypher.md +5 -0
- package/template/.claude/commands/aioson/agent/pair.md +5 -0
- package/template/.claude/commands/aioson/agent/validator.md +5 -0
- package/template/.gemini/commands/aios-analyst.toml +6 -3
- package/template/.gemini/commands/aios-architect.toml +7 -6
- package/template/.gemini/commands/aios-committer.toml +7 -0
- package/template/.gemini/commands/aios-copywriter.toml +7 -0
- package/template/.gemini/commands/aios-cypher.toml +7 -0
- package/template/.gemini/commands/aios-dev.toml +8 -7
- package/template/.gemini/commands/aios-deyvin.toml +6 -5
- package/template/.gemini/commands/aios-discovery-design-doc.toml +6 -3
- package/template/.gemini/commands/aios-genome.toml +7 -0
- package/template/.gemini/commands/aios-neo.toml +5 -3
- package/template/.gemini/commands/aios-orache.toml +7 -0
- package/template/.gemini/commands/aios-orchestrator.toml +8 -7
- package/template/.gemini/commands/aios-pair.toml +6 -5
- package/template/.gemini/commands/aios-pm.toml +8 -7
- package/template/.gemini/commands/aios-product.toml +5 -3
- package/template/.gemini/commands/aios-qa.toml +6 -5
- package/template/.gemini/commands/aios-setup.toml +5 -2
- package/template/.gemini/commands/aios-sheldon.toml +7 -0
- package/template/.gemini/commands/aios-site-forge.toml +7 -0
- package/template/.gemini/commands/aios-squad.toml +7 -0
- package/template/.gemini/commands/aios-tester.toml +6 -5
- package/template/.gemini/commands/aios-ux-ui.toml +8 -7
- package/template/.gemini/commands/aios-validator.toml +7 -0
- package/template/AGENTS.md +12 -1
- package/template/CLAUDE.md +5 -1
- package/template/.aioson/locales/en/agents/analyst.md +0 -244
- package/template/.aioson/locales/en/agents/architect.md +0 -245
- package/template/.aioson/locales/en/agents/dev.md +0 -397
- package/template/.aioson/locales/en/agents/deyvin.md +0 -137
- package/template/.aioson/locales/en/agents/discovery-design-doc.md +0 -27
- package/template/.aioson/locales/en/agents/genome.md +0 -212
- package/template/.aioson/locales/en/agents/neo.md +0 -8
- package/template/.aioson/locales/en/agents/orache.md +0 -6
- package/template/.aioson/locales/en/agents/orchestrator.md +0 -189
- package/template/.aioson/locales/en/agents/pair.md +0 -5
- package/template/.aioson/locales/en/agents/pm.md +0 -84
- package/template/.aioson/locales/en/agents/product.md +0 -378
- package/template/.aioson/locales/en/agents/profiler-enricher.md +0 -5
- package/template/.aioson/locales/en/agents/profiler-forge.md +0 -5
- package/template/.aioson/locales/en/agents/profiler-researcher.md +0 -5
- package/template/.aioson/locales/en/agents/qa.md +0 -270
- package/template/.aioson/locales/en/agents/setup.md +0 -421
- package/template/.aioson/locales/en/agents/sheldon.md +0 -455
- package/template/.aioson/locales/en/agents/squad.md +0 -449
- package/template/.aioson/locales/en/agents/tester.md +0 -6
- package/template/.aioson/locales/en/agents/ux-ui.md +0 -668
- package/template/.aioson/locales/es/agents/analyst.md +0 -225
- package/template/.aioson/locales/es/agents/architect.md +0 -245
- package/template/.aioson/locales/es/agents/dev.md +0 -370
- package/template/.aioson/locales/es/agents/deyvin.md +0 -99
- package/template/.aioson/locales/es/agents/discovery-design-doc.md +0 -21
- package/template/.aioson/locales/es/agents/genome.md +0 -104
- package/template/.aioson/locales/es/agents/neo.md +0 -50
- package/template/.aioson/locales/es/agents/orache.md +0 -105
- package/template/.aioson/locales/es/agents/orchestrator.md +0 -194
- package/template/.aioson/locales/es/agents/pair.md +0 -7
- package/template/.aioson/locales/es/agents/pm.md +0 -90
- package/template/.aioson/locales/es/agents/product.md +0 -372
- package/template/.aioson/locales/es/agents/profiler-enricher.md +0 -7
- package/template/.aioson/locales/es/agents/profiler-forge.md +0 -7
- package/template/.aioson/locales/es/agents/profiler-researcher.md +0 -7
- package/template/.aioson/locales/es/agents/qa.md +0 -198
- package/template/.aioson/locales/es/agents/setup.md +0 -405
- package/template/.aioson/locales/es/agents/sheldon.md +0 -309
- package/template/.aioson/locales/es/agents/squad.md +0 -532
- package/template/.aioson/locales/es/agents/tester.md +0 -9
- package/template/.aioson/locales/es/agents/ux-ui.md +0 -212
- package/template/.aioson/locales/fr/agents/analyst.md +0 -225
- package/template/.aioson/locales/fr/agents/architect.md +0 -245
- package/template/.aioson/locales/fr/agents/dev.md +0 -370
- package/template/.aioson/locales/fr/agents/deyvin.md +0 -99
- package/template/.aioson/locales/fr/agents/discovery-design-doc.md +0 -21
- package/template/.aioson/locales/fr/agents/genome.md +0 -104
- package/template/.aioson/locales/fr/agents/neo.md +0 -50
- package/template/.aioson/locales/fr/agents/orache.md +0 -106
- package/template/.aioson/locales/fr/agents/orchestrator.md +0 -194
- package/template/.aioson/locales/fr/agents/pair.md +0 -7
- package/template/.aioson/locales/fr/agents/pm.md +0 -90
- package/template/.aioson/locales/fr/agents/product.md +0 -372
- package/template/.aioson/locales/fr/agents/profiler-enricher.md +0 -7
- package/template/.aioson/locales/fr/agents/profiler-forge.md +0 -7
- package/template/.aioson/locales/fr/agents/profiler-researcher.md +0 -7
- package/template/.aioson/locales/fr/agents/qa.md +0 -198
- package/template/.aioson/locales/fr/agents/setup.md +0 -405
- package/template/.aioson/locales/fr/agents/sheldon.md +0 -309
- package/template/.aioson/locales/fr/agents/squad.md +0 -532
- package/template/.aioson/locales/fr/agents/tester.md +0 -9
- package/template/.aioson/locales/fr/agents/ux-ui.md +0 -212
- package/template/.aioson/locales/pt-BR/agents/analyst.md +0 -319
- package/template/.aioson/locales/pt-BR/agents/architect.md +0 -284
- package/template/.aioson/locales/pt-BR/agents/dev.md +0 -483
- package/template/.aioson/locales/pt-BR/agents/deyvin.md +0 -184
- package/template/.aioson/locales/pt-BR/agents/discovery-design-doc.md +0 -198
- package/template/.aioson/locales/pt-BR/agents/genome.md +0 -297
- package/template/.aioson/locales/pt-BR/agents/neo.md +0 -208
- package/template/.aioson/locales/pt-BR/agents/orache.md +0 -137
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +0 -324
- package/template/.aioson/locales/pt-BR/agents/pair.md +0 -5
- package/template/.aioson/locales/pt-BR/agents/pm.md +0 -182
- package/template/.aioson/locales/pt-BR/agents/product.md +0 -466
- package/template/.aioson/locales/pt-BR/agents/profiler-enricher.md +0 -5
- package/template/.aioson/locales/pt-BR/agents/profiler-forge.md +0 -5
- package/template/.aioson/locales/pt-BR/agents/profiler-researcher.md +0 -5
- package/template/.aioson/locales/pt-BR/agents/qa.md +0 -300
- package/template/.aioson/locales/pt-BR/agents/setup.md +0 -533
- package/template/.aioson/locales/pt-BR/agents/sheldon.md +0 -323
- package/template/.aioson/locales/pt-BR/agents/squad.md +0 -1330
- package/template/.aioson/locales/pt-BR/agents/tester.md +0 -449
- package/template/.aioson/locales/pt-BR/agents/ux-ui.md +0 -669
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# secure-tdd reference: Node / Express
|
|
2
|
+
|
|
3
|
+
Use this when the feature runs on Node.js request handlers, Express routes, or service boundaries tested with `node:test`.
|
|
4
|
+
|
|
5
|
+
## Preferred runners
|
|
6
|
+
|
|
7
|
+
- `node:test`
|
|
8
|
+
- `supertest` when the project already exposes an HTTP app
|
|
9
|
+
|
|
10
|
+
If the project is not HTTP-based, keep the same adversarial logic at the boundary-function level.
|
|
11
|
+
|
|
12
|
+
## Write first
|
|
13
|
+
|
|
14
|
+
Start with the smallest set of failing tests that proves the server rejects unsafe behavior.
|
|
15
|
+
|
|
16
|
+
Priority order:
|
|
17
|
+
1. auth bypass / missing auth
|
|
18
|
+
2. cross-user access (IDOR / ownership)
|
|
19
|
+
3. invalid payload beyond server-side limits
|
|
20
|
+
4. unsafe external URL or redirect target
|
|
21
|
+
5. concurrent mutation / race / double-submit when the feature mutates critical state
|
|
22
|
+
|
|
23
|
+
## Minimum patterns
|
|
24
|
+
|
|
25
|
+
### Auth bypass / ownership
|
|
26
|
+
|
|
27
|
+
Write a test that proves user A cannot read, mutate, or delete user B's resource.
|
|
28
|
+
|
|
29
|
+
```js
|
|
30
|
+
it('returns 403 when accessing another users resource', async () => {
|
|
31
|
+
const token = await loginAs(userA);
|
|
32
|
+
const res = await request(app)
|
|
33
|
+
.get(`/api/resources/${userBResource.id}`)
|
|
34
|
+
.set('Authorization', `Bearer ${token}`);
|
|
35
|
+
assert.equal(res.status, 403);
|
|
36
|
+
});
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Server-side validation
|
|
40
|
+
|
|
41
|
+
Write a test that sends a forged payload bigger or riskier than the UI should allow.
|
|
42
|
+
|
|
43
|
+
```js
|
|
44
|
+
it('rejects payloads that exceed server-side limits', async () => {
|
|
45
|
+
const res = await request(app)
|
|
46
|
+
.post('/api/resources')
|
|
47
|
+
.send({ title: 'x'.repeat(10_000) });
|
|
48
|
+
assert.equal(res.status, 422);
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### External URL sanitization
|
|
53
|
+
|
|
54
|
+
Write a test that sends an unsafe URL and expects rejection or strict allowlisting.
|
|
55
|
+
|
|
56
|
+
```js
|
|
57
|
+
it('rejects unsafe external urls', async () => {
|
|
58
|
+
const res = await request(app)
|
|
59
|
+
.post('/api/redirects')
|
|
60
|
+
.send({ target: 'javascript:alert(1)' });
|
|
61
|
+
assert.equal(res.status, 422);
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Race condition / double-submit
|
|
66
|
+
|
|
67
|
+
When the feature changes critical state, write two competing calls and assert one of them is rejected or serialized correctly.
|
|
68
|
+
|
|
69
|
+
```js
|
|
70
|
+
it('prevents duplicate critical mutations under concurrency', async () => {
|
|
71
|
+
const [a, b] = await Promise.all([
|
|
72
|
+
request(app).post('/api/refunds').send({ paymentId }),
|
|
73
|
+
request(app).post('/api/refunds').send({ paymentId })
|
|
74
|
+
]);
|
|
75
|
+
assert.equal([a.status, b.status].filter((s) => s === 200).length, 1);
|
|
76
|
+
});
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Control mapping
|
|
80
|
+
|
|
81
|
+
- `SEC-SBD-01`: payload size / field limit tests
|
|
82
|
+
- `SEC-SBD-03`: auth bypass and IDOR tests
|
|
83
|
+
- `SEC-SBD-04`: concurrency / double-submit tests
|
|
84
|
+
- `SEC-SBD-06`: external URL rejection / allowlist tests
|
|
85
|
+
- `SEC-SBD-08`: generic auth error / rate-limiting tests when applicable
|
|
86
|
+
|
|
87
|
+
## Avoid
|
|
88
|
+
|
|
89
|
+
- trusting frontend validation as evidence
|
|
90
|
+
- writing only happy-path tests for sensitive endpoints
|
|
91
|
+
- creating broad fixtures when a narrow reproduction is enough
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# secure-tdd reference: planned stacks
|
|
2
|
+
|
|
3
|
+
These stacks are in v1 as planned or minimal references only. They should not block the release of `secure-tdd`.
|
|
4
|
+
|
|
5
|
+
## Laravel / Pest
|
|
6
|
+
|
|
7
|
+
- Preferred runner: Pest
|
|
8
|
+
- Minimum attacks to cover: IDOR / policy bypass, server-side validation, unsafe upload, double-submit on critical state
|
|
9
|
+
- Minimal pattern: feature tests hitting routes or actions with unauthorized users and invalid payloads
|
|
10
|
+
|
|
11
|
+
## Django / Pytest
|
|
12
|
+
|
|
13
|
+
- Preferred runner: pytest
|
|
14
|
+
- Minimum attacks to cover: auth bypass, object-level access control, forged form / serializer payloads, unsafe redirects
|
|
15
|
+
- Minimal pattern: request-level tests plus service-level tests for critical state transitions
|
|
16
|
+
|
|
17
|
+
## Rails / RSpec
|
|
18
|
+
|
|
19
|
+
- Preferred runner: RSpec
|
|
20
|
+
- Minimum attacks to cover: ownership checks, server-side validation, double-submit, redirect sanitization
|
|
21
|
+
- Minimal pattern: request specs for auth/ownership and model/service specs for critical state
|
|
22
|
+
|
|
23
|
+
## FastAPI / Pytest
|
|
24
|
+
|
|
25
|
+
- Preferred runner: pytest
|
|
26
|
+
- Minimum attacks to cover: auth bypass, Pydantic boundary validation, IDOR, external URL handling, concurrent mutation
|
|
27
|
+
- Minimal pattern: TestClient request tests plus async service tests when concurrency matters
|
|
28
|
+
|
|
29
|
+
## Rule for all planned stacks
|
|
30
|
+
|
|
31
|
+
- Do not invent a full template until the stack is actively needed.
|
|
32
|
+
- Keep the first implementation narrow: runner expectation, attacks to cover, and the minimum assertion style.
|
|
33
|
+
- If a future phase expands one of these stacks, split it into its own dedicated reference file.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Skill: Harness-Driven Validation (pt-BR)
|
|
2
|
+
|
|
3
|
+
> **Uso:** Implementação e Verificação Contratual (Padrão Nautilus).
|
|
4
|
+
> **Agentes:** @dev, @validator.
|
|
5
|
+
> **Contexto:** Projetos MEDIUM ou com `harness-contract.json` presente.
|
|
6
|
+
|
|
7
|
+
## Missão
|
|
8
|
+
Garantir que o ciclo de implementação do implementador (@dev) seja fechado com uma validação imparcial do validador (@validator) antes de qualquer entrega ser considerada concluída.
|
|
9
|
+
|
|
10
|
+
## Fluxo de Trabalho do @dev (Harness-Aware)
|
|
11
|
+
|
|
12
|
+
### 1. Início de Tarefa
|
|
13
|
+
Antes de escrever o primeiro arquivo de uma feature, verifique se o Harness está inicializado:
|
|
14
|
+
```bash
|
|
15
|
+
aioson harness:init . --slug=<feature-slug>
|
|
16
|
+
```
|
|
17
|
+
Isso criará o contrato stube em `.aioson/plans/<slug>/harness-contract.json`.
|
|
18
|
+
|
|
19
|
+
### 2. Implementação com Feedback
|
|
20
|
+
Sempre que concluir um slice lógico (ex: uma migration, um service, uma rota), execute a validação:
|
|
21
|
+
```bash
|
|
22
|
+
aioson harness:validate . --slug=<feature-slug>
|
|
23
|
+
```
|
|
24
|
+
O sistema invocará o `@validator` em um processo separado. O resultado será injetado no seu `progress.json`.
|
|
25
|
+
|
|
26
|
+
### 3. Recuperação de Falhas (Circuit Breaker)
|
|
27
|
+
Se a validação falhar:
|
|
28
|
+
- Leia o campo `last_error` em `progress.json`.
|
|
29
|
+
- Corrija apenas o ponto indicado pelo erro.
|
|
30
|
+
- Re-valide imediatamente.
|
|
31
|
+
- **Aviso:** Se falhar repetidamente (conforme `error_streak_limit`), o sistema abrirá o circuito (`OPEN`) e você não poderá continuar sem a intervenção explícita do usuário.
|
|
32
|
+
|
|
33
|
+
## Done Gate
|
|
34
|
+
O `@dev` não deve tentar marcar a feature como `done` em `features.md` manualmente. O gateway bloqueará a alteração se:
|
|
35
|
+
1. Um `harness-contract.json` existir.
|
|
36
|
+
2. E o `progress.json` não tiver `ready_for_done_gate: true`.
|
|
37
|
+
|
|
38
|
+
## Melhores Práticas
|
|
39
|
+
- **Commits Atômicos:** Faça commit após cada `harness:validate` bem-sucedido.
|
|
40
|
+
- **Contratos Binários:** No contrato, prefira critérios que possam ser validados mecanicamente (arquivos, assinaturas, testes).
|
|
41
|
+
- **Isolamento de Contexto:** Nunca tente "explicar" seu código para o `@validator` através de comentários. O validador deve julgar apenas o arquivo final e o contrato.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
## Referências
|
|
45
|
+
- [Doc] Padrão Nautilus & PBQ — `.aioson/docs/integrations/harness-engineering.md`
|
|
46
|
+
- [CLI] Comandos `harness:init` e `harness:validate` — `/help`
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Load this file when you are about to run a web search.
|
|
4
4
|
> Check the cache first. Save results after. Never search twice for the same thing.
|
|
5
|
+
> Treat `researchs/` as a temporary shared evidence layer for current and nearby sessions.
|
|
5
6
|
|
|
6
7
|
## Cache location
|
|
7
8
|
|
|
@@ -93,6 +94,7 @@ If all findings are `confirmed`:
|
|
|
93
94
|
| Agent | Reads cache | Writes cache |
|
|
94
95
|
|---|---|---|
|
|
95
96
|
| @sheldon | ✅ | ✅ — primary writer for PRD technical decisions |
|
|
97
|
+
| @squad | ✅ | ✅ — lightweight domain/pattern scouting for squad packages |
|
|
96
98
|
| @analyst | ✅ | ✅ — technology and integration validation |
|
|
97
99
|
| @architect | ✅ | ✅ — infrastructure and library trade-offs |
|
|
98
100
|
| @dev | ✅ | ✅ — library docs and implementation patterns |
|
|
@@ -109,4 +111,5 @@ If all findings are `confirmed`:
|
|
|
109
111
|
- **Never show `confirmed` findings** — they add noise without value
|
|
110
112
|
- **Never modify the PRD/plan without user confirmation** — surface findings, let the user decide
|
|
111
113
|
- **Cache is shared across all agents** — if another agent already searched the same topic this week, use their result
|
|
114
|
+
- `@product`, `@sheldon`, and `@squad` should derive short keyword phrases from the active task and scout the cache before finalizing substantial output
|
|
112
115
|
- The user decides whether to act on findings. Agents surface, humans decide.
|
|
@@ -16,6 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
### Passo 1 — Ler blueprint
|
|
18
18
|
Leia `.aioson/squads/.designs/<slug>.blueprint.json` e valide que os campos obrigatórios existem (slug, name, problem, goal, mode, executors).
|
|
19
|
+
Se existirem, preserve também:
|
|
20
|
+
- `locale_scope`
|
|
21
|
+
- `locale_rationale`
|
|
22
|
+
- `domainClassification`
|
|
23
|
+
- `investigation`
|
|
24
|
+
- `sourceDocs`
|
|
19
25
|
|
|
20
26
|
### Passo 2 — Criar estrutura de diretórios
|
|
21
27
|
```
|
|
@@ -48,7 +54,11 @@ Leia o campo `uiCapability` do blueprint. Se ausente, trate como `mode: none`.
|
|
|
48
54
|
|
|
49
55
|
**Se `mode = executor`:**
|
|
50
56
|
1. Execute os mesmos passos de skills acima (executor depende das skills)
|
|
51
|
-
2. Gere o arquivo `.aioson/squads/{slug}/agents/ui-specialist.md`
|
|
57
|
+
2. Gere o arquivo `.aioson/squads/{slug}/agents/ui-specialist.md` seguindo `.aioson/docs/squad/package-contract.md`:
|
|
58
|
+
- usar a mesma estrutura dos demais executores permanentes
|
|
59
|
+
- missão focada em UI, layout, componentes e direção visual
|
|
60
|
+
- output esperado: `ui-spec.md` e, quando fizer sentido, HTML/entregável visual
|
|
61
|
+
- deixar explícito quando delegar contexto de negócio de volta ao `@orquestrador`
|
|
52
62
|
3. Registre o executor no `squad.manifest.json` com `modelTier: powerful` e `behavioralProfile: compliant-dominant`
|
|
53
63
|
4. Adicione ao routing guide do orquestrador: "Visual / UI / layout requests → @ui-specialist"
|
|
54
64
|
|
|
@@ -61,8 +71,22 @@ Em todos os casos, salve `uiCapability` no `squad.manifest.json`.
|
|
|
61
71
|
### Passo 3 — Gerar squad.manifest.json
|
|
62
72
|
Monte o manifesto a partir do blueprint. O JSON deve seguir o schema `squad-manifest.schema.json`. Copie executors, skills, mcps, genomes, contentBlueprints do blueprint. Adicione package paths e rules.
|
|
63
73
|
|
|
74
|
+
Persistência obrigatória:
|
|
75
|
+
- `locale_scope`: usar `"universal"` por padrão quando o blueprint não trouxer valor explícito
|
|
76
|
+
- `locale_rationale`: copiar quando existir
|
|
77
|
+
- `domainClassification`: copiar quando existir
|
|
78
|
+
- `investigation`: copiar quando existir
|
|
79
|
+
- `sourceDocs`: copiar quando existir
|
|
80
|
+
|
|
64
81
|
### Passo 4 — Gerar agents.md (manifesto textual)
|
|
65
|
-
Siga
|
|
82
|
+
Siga `.aioson/docs/squad/package-contract.md` na seção `agents/agents.md`.
|
|
83
|
+
|
|
84
|
+
Regras adicionais para o manifesto textual:
|
|
85
|
+
- agrupe executores por tipo quando houver workers, clones, assistants ou human-gates
|
|
86
|
+
- se uma categoria não existir, omita a seção em vez de deixar placeholder
|
|
87
|
+
- reflita `locale_scope`, skills, MCPs e política de revisão quando isso mudar o comportamento real do squad
|
|
88
|
+
|
|
89
|
+
Formato mínimo:
|
|
66
90
|
```markdown
|
|
67
91
|
# Squad <name>
|
|
68
92
|
|
|
@@ -86,28 +110,31 @@ Siga o formato existente no squad.md atual:
|
|
|
86
110
|
```
|
|
87
111
|
|
|
88
112
|
### Passo 5 — Gerar cada executor
|
|
89
|
-
Para cada executor no blueprint, crie `.aioson/squads/<slug>/agents/<executor-slug>.md` seguindo
|
|
113
|
+
Para cada executor no blueprint, crie `.aioson/squads/<slug>/agents/<executor-slug>.md` seguindo `.aioson/docs/squad/package-contract.md` na seção `Executor generation`:
|
|
90
114
|
- Header com `# Agent @<slug>` + bloco ACTIVATED
|
|
91
115
|
- Mission, Quick context, Active genomes, Focus, Response standard, Hard constraints, Output contract
|
|
116
|
+
- Se `locale_scope` for locale-specific, escreva o prompt no idioma do locale; identificadores de código continuam em inglês
|
|
92
117
|
|
|
93
118
|
### Passo 6 — Gerar orquestrador
|
|
94
|
-
Crie `.aioson/squads/<slug>/agents/orquestrador.md` seguindo
|
|
119
|
+
Crie `.aioson/squads/<slug>/agents/orquestrador.md` seguindo `.aioson/docs/squad/package-contract.md` na seção `Orchestrator prompt`.
|
|
120
|
+
Se `uiCapability.mode = executor`, inclua no routing guide que demandas visuais vão para `@ui-specialist`.
|
|
95
121
|
|
|
96
122
|
### Passo 7 — Gerar docs
|
|
97
123
|
- `docs/design-doc.md`: resumo do design derivado do blueprint
|
|
98
124
|
- `docs/readiness.md`: estado de readiness derivado do blueprint
|
|
99
125
|
|
|
100
126
|
### Passo 8 — Registrar nos gateways
|
|
101
|
-
Atualize `CLAUDE.md` e `AGENTS.md` no root do projeto conforme
|
|
127
|
+
Atualize `CLAUDE.md` e `AGENTS.md` no root do projeto conforme `.aioson/docs/squad/package-contract.md` na seção `Gateway registration`.
|
|
102
128
|
|
|
103
129
|
### Passo 9 — Salvar metadata
|
|
104
|
-
Salve `.aioson/squads/<slug>/squad.md`
|
|
130
|
+
Salve `.aioson/squads/<slug>/squad.md` conforme `.aioson/docs/squad/package-contract.md` na seção `Squad metadata`.
|
|
131
|
+
Inclua `locale_scope`, `locale_rationale`, `investigation` e `sourceDocs` quando existirem.
|
|
105
132
|
|
|
106
133
|
### Passo 10 — Rodar validate
|
|
107
134
|
Após criar tudo, execute mentalmente a task squad-validate (leia `.aioson/tasks/squad-validate.md`) para verificar que o pacote está consistente.
|
|
108
135
|
|
|
109
136
|
### Passo 11 — Warm-up round
|
|
110
|
-
Siga
|
|
137
|
+
Siga `.aioson/docs/squad/workflow-quality.md` na seção `Confirmation, coverage, and warm-up`: mostre cada especialista com problem reading, initial recommendation, main risk e suggested next step.
|
|
111
138
|
|
|
112
139
|
## Saída
|
|
113
140
|
- Pacote completo em `.aioson/squads/<slug>/`
|
|
@@ -116,6 +143,6 @@ Siga as regras existentes no squad.md: mostre cada especialista com problem read
|
|
|
116
143
|
|
|
117
144
|
## Regras
|
|
118
145
|
- SEMPRE leia o blueprint antes de gerar
|
|
119
|
-
- SIGA
|
|
146
|
+
- SIGA `.aioson/docs/squad/package-contract.md` e `.aioson/docs/squad/workflow-quality.md`
|
|
120
147
|
- MANTENHA o HTML deliverable após cada rodada (regra existente)
|
|
121
148
|
- NÃO pule o warm-up — é mandatório
|
|
@@ -13,7 +13,25 @@
|
|
|
13
13
|
|
|
14
14
|
## Processo
|
|
15
15
|
|
|
16
|
-
### Passo 0 — Verificar artisan input e templates disponíveis
|
|
16
|
+
### Passo 0 — Verificar contexto do projeto, artisan input e templates disponíveis
|
|
17
|
+
|
|
18
|
+
**0A — Artifacts do pipeline AIOSON**
|
|
19
|
+
|
|
20
|
+
Antes de perguntar qualquer coisa, procure:
|
|
21
|
+
- `.aioson/context/implementation-plan-*.md`
|
|
22
|
+
- `.aioson/context/requirements-*.md`
|
|
23
|
+
- `.aioson/context/architecture.md`
|
|
24
|
+
- `.aioson/context/prd.md` e `prd-*.md`
|
|
25
|
+
|
|
26
|
+
Se encontrar arquivos claramente relevantes para o squad atual:
|
|
27
|
+
1. Leia primeiro o `implementation-plan` quando existir
|
|
28
|
+
2. Depois leia `requirements`, `architecture` e `prd` relevantes
|
|
29
|
+
3. Extraia: domain, goal, output type, constraints, expected behaviors, risks e sinais de done
|
|
30
|
+
4. Registre os caminhos consumidos em `sourceDocs`
|
|
31
|
+
5. NÃO repita perguntas cujas respostas já estão explícitas nesses artifacts
|
|
32
|
+
6. Se houver mais de um conjunto possível de artifacts, faça uma única pergunta curta de desambiguação
|
|
33
|
+
|
|
34
|
+
**0B — Artisan input**
|
|
17
35
|
|
|
18
36
|
Se o usuário forneceu `--from-artisan <id>`:
|
|
19
37
|
1. Procure `.aioson/squads/.artisan/<id>.md`
|
|
@@ -22,7 +40,7 @@ Se o usuário forneceu `--from-artisan <id>`:
|
|
|
22
40
|
4. Use como base para o blueprint — pule para o Passo 5 (calcular readiness)
|
|
23
41
|
5. Mostre ao usuário: "Li o PRD do Artisan. Posso gerar o blueprint com base nele — quer ajustar algo?"
|
|
24
42
|
|
|
25
|
-
|
|
43
|
+
**0C — Templates**
|
|
26
44
|
Verifique se existe `.aioson/templates/squads/`. Se existir, liste os templates disponíveis e pergunte:
|
|
27
45
|
"Quer partir de um template? Opções: content-basic, research-analysis, software-delivery, media-channel — ou começar do zero."
|
|
28
46
|
Se o usuário escolher um template, leia o `template.json` e use como base para o blueprint (executores, content blueprints, mode).
|
|
@@ -37,6 +55,28 @@ Pergunte em um bloco só (não faça múltiplas rodadas):
|
|
|
37
55
|
|
|
38
56
|
Se o usuário já forneceu contexto suficiente (texto, docs, imagens), infira as respostas e siga em frente. Pergunte somente se há lacunas materiais.
|
|
39
57
|
|
|
58
|
+
### Passo 1.5 — Gate de classificação de domínio + locale scope
|
|
59
|
+
|
|
60
|
+
Antes de definir executores, classifique o domínio usando `.aioson/docs/squad/domain-classification.md`:
|
|
61
|
+
|
|
62
|
+
- **Tier 1 — regulado:** investigação via `@squad investigate` / `@orache` é obrigatória. Não finalize o blueprint sem relatório.
|
|
63
|
+
- **Tier 2 — especializado:** recomende fortemente investigação. Se o usuário recusar, registre a limitação em `assumptions` e `risks`.
|
|
64
|
+
- **Tier 3 — comum:** prossiga sem criar fricção desnecessária.
|
|
65
|
+
|
|
66
|
+
Se já existir investigação relevante, reutilize o relatório em vez de pedir uma nova.
|
|
67
|
+
|
|
68
|
+
Depois da classificação:
|
|
69
|
+
- decida `locale_scope` com base em `.aioson/rules/agent-language-policy.md` quando a rule existir
|
|
70
|
+
- sugira `universal` por padrão
|
|
71
|
+
- se o squad for claramente local, confirme um locale específico (`pt-BR`, `es-MX`, etc.) e registre `locale_rationale`
|
|
72
|
+
- capture no blueprint:
|
|
73
|
+
- `domainClassification.tier`
|
|
74
|
+
- `domainClassification.rationale`
|
|
75
|
+
- `domainClassification.regulations` quando existirem
|
|
76
|
+
- `domainClassification.investigationPolicy`
|
|
77
|
+
- `locale_scope`
|
|
78
|
+
- `locale_rationale` quando aplicável
|
|
79
|
+
|
|
40
80
|
### Passo 2 — Derivar design-doc mental
|
|
41
81
|
Antes de definir executores, consolide:
|
|
42
82
|
- Problema que está sendo resolvido
|
|
@@ -45,6 +85,9 @@ Antes de definir executores, consolide:
|
|
|
45
85
|
- Risks e assumptions
|
|
46
86
|
- Skills e docs que precisam entrar no contexto
|
|
47
87
|
- Mode do squad (content | software | research | mixed)
|
|
88
|
+
- Source docs consumidos
|
|
89
|
+
- Investigation aplicada e o que ela muda no design
|
|
90
|
+
- Locale scope do squad
|
|
48
91
|
|
|
49
92
|
### Passo 3 — Definir executores
|
|
50
93
|
Determine 3-5 roles especializados. Para cada executor, defina:
|
|
@@ -97,6 +140,7 @@ Avalie cada dimensão:
|
|
|
97
140
|
- contextReady: há contexto suficiente?
|
|
98
141
|
- blueprintReady: o blueprint está completo?
|
|
99
142
|
- generationReady: dá para gerar os executores?
|
|
143
|
+
- se `domainClassification.tier = tier-1-regulated`: generationReady = false enquanto não houver `investigation`
|
|
100
144
|
|
|
101
145
|
### Passo 6 — Gerar blueprint JSON
|
|
102
146
|
Salve o blueprint em `.aioson/squads/.designs/<slug>.blueprint.json`
|
|
@@ -137,6 +181,8 @@ Se tudo OK: prosseguir para Passo 7.
|
|
|
137
181
|
Mostre ao usuário:
|
|
138
182
|
- Executores propostos com roles
|
|
139
183
|
- Content blueprints definidos
|
|
184
|
+
- Tier de domínio e política de investigação
|
|
185
|
+
- Locale scope
|
|
140
186
|
- Assumptions feitas
|
|
141
187
|
- Risks identificados
|
|
142
188
|
- Readiness status
|
|
@@ -156,3 +202,5 @@ Pergunte se quer ajustar algo antes de criar.
|
|
|
156
202
|
- NÃO crie o pacote do squad aqui — isso é responsabilidade da task create
|
|
157
203
|
- NÃO pule o blueprint — ele é obrigatório
|
|
158
204
|
- MANTENHA o blueprint leve — o LLM preenche lacunas na fase create
|
|
205
|
+
- NÃO ignore `implementation-plan` / `requirements` relevantes quando existirem
|
|
206
|
+
- NÃO bypass o gate de domínio regulado
|
|
@@ -25,6 +25,14 @@ Passe o contexto do domínio coletado pelo @squad.
|
|
|
25
25
|
### Passo 3 — Receber relatório
|
|
26
26
|
@orache salva o relatório em `squad-searches/`.
|
|
27
27
|
|
|
28
|
+
### Passo 3.5 — Extrair payload de integração
|
|
29
|
+
Do relatório, extraia explicitamente:
|
|
30
|
+
- regulações / obrigações
|
|
31
|
+
- vocabulário de domínio
|
|
32
|
+
- anti-patterns
|
|
33
|
+
- benchmarks de qualidade
|
|
34
|
+
- padrões estruturais / de workflow
|
|
35
|
+
|
|
28
36
|
### Passo 4 — Validar completude
|
|
29
37
|
Verifique que o relatório cobre pelo menos 4 das 7 dimensões.
|
|
30
38
|
Se não cobrir, pergunte ao usuário se quer aprofundar.
|
|
@@ -32,11 +40,16 @@ Se não cobrir, pergunte ao usuário se quer aprofundar.
|
|
|
32
40
|
### Passo 5 — Integrar com design
|
|
33
41
|
Se esta task foi invocada do flow do @squad:
|
|
34
42
|
- Retorne o path do relatório para o @squad
|
|
35
|
-
-
|
|
43
|
+
- Registre no blueprint o objeto `investigation`
|
|
44
|
+
- Use regulações para hard constraints, human gates e review criteria
|
|
45
|
+
- Use anti-patterns para checklist e `vetoConditions`
|
|
46
|
+
- Use benchmarks para qualidade, warm-up e score de cobertura
|
|
47
|
+
- Use vocabulário e padrões estruturais para executores, workflow e content blueprints
|
|
36
48
|
|
|
37
49
|
## Saída
|
|
38
50
|
- Relatório de investigação salvo em `squad-searches/`
|
|
39
51
|
- Path do relatório disponível para o @squad design
|
|
52
|
+
- Payload de integração disponível para blueprint/checklist/workflow
|
|
40
53
|
|
|
41
54
|
## Regras
|
|
42
55
|
- NÃO gere o squad aqui — isso é responsabilidade da task create
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
name = "aios-analyst"
|
|
2
1
|
description = "Requirements analysis"
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
prompt = """
|
|
3
|
+
@{ .aioson/context/project.context.md }
|
|
4
|
+
@{ .aioson/agents/analyst.md }
|
|
5
|
+
|
|
6
|
+
{{args}}
|
|
7
|
+
"""
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
name = "aios-architect"
|
|
2
1
|
description = "Project architecture"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
prompt = """
|
|
3
|
+
@{ .aioson/context/project.context.md }
|
|
4
|
+
@{ .aioson/context/discovery.md }
|
|
5
|
+
@{ .aioson/agents/architect.md }
|
|
6
|
+
|
|
7
|
+
{{args}}
|
|
8
|
+
"""
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
name = "aios-dev"
|
|
2
1
|
description = "Development"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
prompt = """
|
|
3
|
+
@{ .aioson/context/project.context.md }
|
|
4
|
+
@{ .aioson/context/discovery.md }
|
|
5
|
+
@{ .aioson/context/architecture.md }
|
|
6
|
+
@{ .aioson/agents/dev.md }
|
|
7
|
+
|
|
8
|
+
{{args}}
|
|
9
|
+
"""
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
name = "aios-deyvin"
|
|
2
1
|
description = "Continuity pair programming"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
prompt = """
|
|
3
|
+
@{ .aioson/context/project.context.md }
|
|
4
|
+
@{ .aioson/agents/deyvin.md }
|
|
5
|
+
|
|
6
|
+
{{args}}
|
|
7
|
+
"""
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
name = "aios-discovery-design-doc"
|
|
2
1
|
description = "Discovery and living design doc"
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
prompt = """
|
|
3
|
+
@{ .aioson/context/project.context.md }
|
|
4
|
+
@{ .aioson/agents/discovery-design-doc.md }
|
|
5
|
+
|
|
6
|
+
{{args}}
|
|
7
|
+
"""
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
name = "aios-orchestrator"
|
|
2
1
|
description = "Multi-agent orchestration"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
prompt = """
|
|
3
|
+
@{ .aioson/context/discovery.md }
|
|
4
|
+
@{ .aioson/context/architecture.md }
|
|
5
|
+
@{ .aioson/context/prd.md }
|
|
6
|
+
@{ .aioson/agents/orchestrator.md }
|
|
7
|
+
|
|
8
|
+
{{args}}
|
|
9
|
+
"""
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
name = "aios-pair"
|
|
2
1
|
description = "Compatibility alias for aios-deyvin"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
prompt = """
|
|
3
|
+
@{ .aioson/context/project.context.md }
|
|
4
|
+
@{ .aioson/agents/deyvin.md }
|
|
5
|
+
|
|
6
|
+
{{args}}
|
|
7
|
+
"""
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
name = "aios-pm"
|
|
2
1
|
description = "Lightweight PRD"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
prompt = """
|
|
3
|
+
@{ .aioson/context/project.context.md }
|
|
4
|
+
@{ .aioson/context/discovery.md }
|
|
5
|
+
@{ .aioson/context/architecture.md }
|
|
6
|
+
@{ .aioson/agents/pm.md }
|
|
7
|
+
|
|
8
|
+
{{args}}
|
|
9
|
+
"""
|