@jaimevalasek/aioson 1.7.0 → 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 +60 -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 +55 -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/copywriter.md +463 -0
- package/template/.aioson/agents/cypher.md +252 -0
- package/template/.aioson/agents/dev.md +112 -600
- package/template/.aioson/agents/deyvin.md +33 -235
- 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 +10 -8
- 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 +165 -410
- package/template/.aioson/agents/setup.md +52 -262
- package/template/.aioson/agents/sheldon.md +122 -754
- package/template/.aioson/agents/site-forge.md +111 -1583
- package/template/.aioson/agents/squad.md +139 -1820
- package/template/.aioson/agents/tester.md +10 -0
- package/template/.aioson/agents/ux-ui.md +103 -645
- 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.md +204 -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/design/cognitive-core-ui/references/motion.md +2 -0
- package/template/.aioson/skills/marketing/references/anti-patterns.md +254 -0
- package/template/.aioson/skills/marketing/references/fascinations.md +192 -0
- package/template/.aioson/skills/marketing/references/five-acts.md +248 -0
- package/template/.aioson/skills/marketing/references/market-intelligence.md +198 -0
- package/template/.aioson/skills/marketing/references/offer-structure.md +203 -0
- package/template/.aioson/skills/marketing/references/one-belief.md +149 -0
- package/template/.aioson/skills/marketing/references/patterns.md +218 -0
- package/template/.aioson/skills/marketing/references/pms-research.md +193 -0
- package/template/.aioson/skills/marketing/vsl-craft.md +385 -0
- package/template/.aioson/skills/process/aioson-spec-driven/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/landing-page-deploy.md +192 -0
- package/template/.aioson/skills/static/landing-page-forge.md +730 -0
- package/template/.aioson/skills/static/ui-ux-modern.md +1 -0
- package/template/.aioson/skills/static/web-research-cache.md +3 -0
- package/template/.aioson/tasks/squad-create.md +56 -7
- package/template/.aioson/tasks/squad-design.md +80 -2
- package/template/.aioson/tasks/squad-investigate.md +14 -1
- package/template/.aioson/templates/squads/digital-marketing-agency/template.json +96 -0
- 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 +6 -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
- package/template/.aioson/skills/design-system/components/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/dashboards/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/foundations/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/motion/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/patterns/SKILL.md:Zone.Identifier +0 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* workflow-gates — technical compilation/test gates enforced by the workflow engine.
|
|
5
|
+
*
|
|
6
|
+
* Blocks broken handoffs from @dev → @qa when code does not compile or tests fail.
|
|
7
|
+
* Auto-detects stack and runs the minimal appropriate verification commands.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const path = require('node:path');
|
|
11
|
+
const { execSync } = require('node:child_process');
|
|
12
|
+
const { readFileSafe, fileExists } = require('./preflight-engine');
|
|
13
|
+
|
|
14
|
+
const MAX_OUTPUT_LINES = 60;
|
|
15
|
+
|
|
16
|
+
async function detectStack(targetDir) {
|
|
17
|
+
const checks = [];
|
|
18
|
+
|
|
19
|
+
// TypeScript
|
|
20
|
+
if (await fileExists(path.join(targetDir, 'tsconfig.json'))) {
|
|
21
|
+
checks.push({ id: 'tsc', name: 'TypeScript compilation', command: 'npx tsc --noEmit', files: ['tsconfig.json'] });
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Rust
|
|
25
|
+
if (await fileExists(path.join(targetDir, 'Cargo.toml'))) {
|
|
26
|
+
checks.push({ id: 'cargo-check', name: 'Rust compilation', command: 'cargo check', files: ['Cargo.toml'] });
|
|
27
|
+
checks.push({ id: 'cargo-test', name: 'Rust tests', command: 'cargo test', files: ['Cargo.toml'], optional: true });
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Node.js / package.json based
|
|
31
|
+
const pkgPath = path.join(targetDir, 'package.json');
|
|
32
|
+
if (await fileExists(pkgPath)) {
|
|
33
|
+
const pkgRaw = await readFileSafe(pkgPath);
|
|
34
|
+
let pkg = null;
|
|
35
|
+
try { pkg = JSON.parse(pkgRaw); } catch { /* ignore */ }
|
|
36
|
+
|
|
37
|
+
if (pkg && pkg.scripts) {
|
|
38
|
+
// Prefer test scripts that look comprehensive
|
|
39
|
+
if (pkg.scripts.test) {
|
|
40
|
+
const script = pkg.scripts.test;
|
|
41
|
+
if (!script.includes('echo')) {
|
|
42
|
+
checks.push({ id: 'npm-test', name: 'npm test', command: 'npm test', files: ['package.json'], optional: true });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (pkg.scripts['test:unit']) {
|
|
46
|
+
checks.push({ id: 'npm-test-unit', name: 'npm test:unit', command: 'npm run test:unit', files: ['package.json'], optional: true });
|
|
47
|
+
}
|
|
48
|
+
if (pkg.scripts['test:ci']) {
|
|
49
|
+
checks.push({ id: 'npm-test-ci', name: 'npm test:ci', command: 'npm run test:ci', files: ['package.json'], optional: true });
|
|
50
|
+
}
|
|
51
|
+
if (pkg.scripts.lint) {
|
|
52
|
+
checks.push({ id: 'npm-lint', name: 'npm lint', command: 'npm run lint', files: ['package.json'], optional: true });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Python
|
|
58
|
+
if (await fileExists(path.join(targetDir, 'pytest.ini')) || await fileExists(path.join(targetDir, 'pyproject.toml'))) {
|
|
59
|
+
checks.push({ id: 'pytest', name: 'Pytest', command: 'pytest', files: ['pytest.ini', 'pyproject.toml'], optional: true });
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return checks;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function truncateOutput(stdout, stderr) {
|
|
66
|
+
const combined = [stdout, stderr].filter(Boolean).join('\n').trim();
|
|
67
|
+
if (!combined) return '';
|
|
68
|
+
const lines = combined.split('\n');
|
|
69
|
+
if (lines.length <= MAX_OUTPUT_LINES) return combined;
|
|
70
|
+
return lines.slice(0, MAX_OUTPUT_LINES).join('\n') + '\n... (truncated)';
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function runCheck(targetDir, check) {
|
|
74
|
+
try {
|
|
75
|
+
const stdout = execSync(check.command, {
|
|
76
|
+
cwd: targetDir,
|
|
77
|
+
encoding: 'utf8',
|
|
78
|
+
maxBuffer: 4 * 1024 * 1024,
|
|
79
|
+
timeout: 300000, // 5 minutes
|
|
80
|
+
stdio: ['ignore', 'pipe', 'pipe']
|
|
81
|
+
});
|
|
82
|
+
return {
|
|
83
|
+
ok: true,
|
|
84
|
+
check: check.id,
|
|
85
|
+
name: check.name,
|
|
86
|
+
command: check.command,
|
|
87
|
+
output: truncateOutput(stdout, '')
|
|
88
|
+
};
|
|
89
|
+
} catch (err) {
|
|
90
|
+
return {
|
|
91
|
+
ok: false,
|
|
92
|
+
check: check.id,
|
|
93
|
+
name: check.name,
|
|
94
|
+
command: check.command,
|
|
95
|
+
output: truncateOutput(err.stdout || '', err.stderr || '')
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async function runTechnicalGate(targetDir, stage, options = {}) {
|
|
101
|
+
// Only enforce gates after dev (compilation) and before qa (tests).
|
|
102
|
+
// If the caller explicitly passes --force, skip technical checks.
|
|
103
|
+
if (options.force) {
|
|
104
|
+
return { ok: true, stage, forced: true, results: [] };
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const checks = await detectStack(targetDir);
|
|
108
|
+
if (checks.length === 0) {
|
|
109
|
+
return { ok: true, stage, results: [], reason: 'No detectable stack — skipping technical gate.' };
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
let relevantChecks = [];
|
|
113
|
+
if (stage === 'dev') {
|
|
114
|
+
// After dev: enforce compilation gates (non-optional)
|
|
115
|
+
// Also run optional test gates, but do not block on them unless strict mode
|
|
116
|
+
relevantChecks = checks.map((c) => ({
|
|
117
|
+
...c,
|
|
118
|
+
blocking: !c.optional
|
|
119
|
+
}));
|
|
120
|
+
} else if (stage === 'qa') {
|
|
121
|
+
// Before qa: enforce tests if available
|
|
122
|
+
relevantChecks = checks.map((c) => ({
|
|
123
|
+
...c,
|
|
124
|
+
blocking: c.optional === false || !c.optional
|
|
125
|
+
}));
|
|
126
|
+
} else {
|
|
127
|
+
return { ok: true, stage, results: [], reason: 'No technical gate for this stage.' };
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const results = [];
|
|
131
|
+
let blocked = false;
|
|
132
|
+
let blockReasons = [];
|
|
133
|
+
|
|
134
|
+
for (const check of relevantChecks) {
|
|
135
|
+
const result = runCheck(targetDir, check);
|
|
136
|
+
results.push(result);
|
|
137
|
+
if (!result.ok && check.blocking) {
|
|
138
|
+
blocked = true;
|
|
139
|
+
blockReasons.push(`${check.name} failed`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (blocked) {
|
|
144
|
+
return {
|
|
145
|
+
ok: false,
|
|
146
|
+
stage,
|
|
147
|
+
blocked: true,
|
|
148
|
+
reasons: blockReasons,
|
|
149
|
+
results
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return {
|
|
154
|
+
ok: true,
|
|
155
|
+
stage,
|
|
156
|
+
results
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function formatGateError(gateResult) {
|
|
161
|
+
const lines = [
|
|
162
|
+
'[Technical Gate BLOCKED]',
|
|
163
|
+
`Stage: @${gateResult.stage}`,
|
|
164
|
+
'Reasons:',
|
|
165
|
+
...gateResult.reasons.map((r) => ` - ${r}`),
|
|
166
|
+
'',
|
|
167
|
+
'Fix the errors above before completing this stage.',
|
|
168
|
+
'Use --force to override (not recommended).',
|
|
169
|
+
'',
|
|
170
|
+
'=== Command output ==='
|
|
171
|
+
];
|
|
172
|
+
for (const r of gateResult.results) {
|
|
173
|
+
if (!r.ok) {
|
|
174
|
+
lines.push(`\n[$${r.name}] $${r.command}`);
|
|
175
|
+
lines.push(r.output || '(no output)');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return lines.join('\n');
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
module.exports = {
|
|
182
|
+
detectStack,
|
|
183
|
+
runTechnicalGate,
|
|
184
|
+
formatGateError
|
|
185
|
+
};
|
|
@@ -1,23 +1,62 @@
|
|
|
1
1
|
# Agent @analyst
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> **LANGUAGE BOUNDARY:** Agent instructions are canonical in English. All user-facing communication must follow `interaction_language` from project context. If it is absent, fall back to `conversation_language`.
|
|
4
|
+
|
|
5
|
+
## Project rules, docs & design governance
|
|
6
|
+
|
|
7
|
+
These directories are optional. Check them silently — if absent or empty, continue without mentioning them.
|
|
8
|
+
|
|
9
|
+
1. `.aioson/rules/` — if `.md` files exist, read YAML frontmatter:
|
|
10
|
+
- if `agents:` is absent or `[]` → load the rule
|
|
11
|
+
- if `agents:` includes `analyst` → load the rule
|
|
12
|
+
- otherwise skip it
|
|
13
|
+
2. `.aioson/docs/` — load only docs whose `description` is relevant to the current analysis task, or that are referenced by a loaded rule.
|
|
14
|
+
3. `.aioson/context/design-doc*.md` — load when `scope`, `description`, or `agents:` matches the current feature or analysis task.
|
|
15
|
+
4. `.aioson/design-docs/*.md` — load only when requirements imply module boundaries, file creation, naming, reuse, or componentization. Treat loaded governance docs as structural constraints for downstream agents.
|
|
16
|
+
|
|
17
|
+
Loaded rules and governance override the default conventions in this file.
|
|
4
18
|
|
|
5
19
|
## Mission
|
|
6
20
|
Discover requirements deeply and produce implementation-ready artifacts. For new projects: `discovery.md`. For new features: `requirements-{slug}.md` + `spec-{slug}.md`.
|
|
7
21
|
|
|
8
|
-
##
|
|
22
|
+
## Bootstrap context
|
|
23
|
+
|
|
24
|
+
If `.aioson/context/bootstrap/` exists, read these files before starting discovery:
|
|
25
|
+
- `.aioson/context/bootstrap/what-is.md` — system identity and users
|
|
26
|
+
- `.aioson/context/bootstrap/what-it-does.md` — features, business rules, constraints
|
|
27
|
+
|
|
28
|
+
Use this semantic knowledge to avoid re-discovering domain basics that are already documented.
|
|
29
|
+
|
|
30
|
+
## Tool-first session preflight
|
|
31
|
+
|
|
32
|
+
Before any manual checks, run these commands if the `aioson` CLI is available:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
aioson workflow:status . # confirm current stage and what is expected
|
|
36
|
+
aioson context:validate . # validate project.context.md; detects brownfield state
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
For feature mode with existing requirements, run before the synchronization gate:
|
|
40
|
+
```bash
|
|
41
|
+
aioson plan:stale . --feature={slug} # STALE → enter sync mode; OK → check if rediscovery is needed
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Trust CLI output over manual date comparisons. Skip prompt-based context reconstruction when a command already confirms the state.
|
|
45
|
+
|
|
46
|
+
## Synchronization gate
|
|
47
|
+
|
|
48
|
+
Before starting feature discovery, check whether `requirements-{slug}.md` already exists.
|
|
9
49
|
|
|
10
|
-
|
|
50
|
+
If the CLI is available, run `aioson plan:stale . --feature={slug}` — a STALE result means at least one source artifact is newer than the current requirements file, and you must enter sync mode without comparing dates manually.
|
|
11
51
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- Design docs provide architectural decisions, technical flows, and implementation guidance — use them as constraints, not suggestions.
|
|
52
|
+
If the CLI is not available, compare modification dates manually:
|
|
53
|
+
- Compare `requirements-{slug}.md` modification date with `prd-{slug}.md`.
|
|
54
|
+
- If `.aioson/plans/{slug}/manifest.md` exists, compare against that too.
|
|
55
|
+
- If either source is newer than the current requirements file, enter **requirements sync mode**:
|
|
56
|
+
- identify what changed upstream
|
|
57
|
+
- update the requirements to match the newer source
|
|
58
|
+
- tell the user you are synchronizing requirements instead of rediscovering from scratch
|
|
59
|
+
- Never ignore newer changes from `@product` or a Sheldon phased plan.
|
|
21
60
|
|
|
22
61
|
## Mode detection
|
|
23
62
|
|
|
@@ -34,39 +73,39 @@ Check the following before doing anything else:
|
|
|
34
73
|
- Run the full 3-phase project discovery below.
|
|
35
74
|
- Output: `discovery.md`.
|
|
36
75
|
|
|
76
|
+
## Feature dossier
|
|
77
|
+
|
|
78
|
+
Before loading per-slug PRD/spec, check `.aioson/context/features/{slug}/dossier.md`. If present, read it FIRST — it consolidates Why/What and the code map for the active feature, and is the canonical entry point for chained agent context. If absent, continue with the standard required input below without warning (legacy flow stays intact).
|
|
79
|
+
|
|
37
80
|
## Required input
|
|
38
81
|
- `.aioson/context/project.context.md` (always)
|
|
39
82
|
- `.aioson/context/prd-{slug}.md` (feature mode)
|
|
40
83
|
- `.aioson/context/design-doc.md` + `readiness.md` (if present)
|
|
41
84
|
- `.aioson/context/discovery.md` + `spec.md` (feature mode — project context, if present)
|
|
42
|
-
- `.aioson/plans/{slug}/manifest.md` (if present — Sheldon phased plans; check subdirectories of `.aioson/plans/`)
|
|
43
85
|
|
|
44
86
|
## Sheldon enrichment context (RDA-01)
|
|
45
87
|
|
|
46
|
-
If `.aioson/context/sheldon-enrichment.md`
|
|
88
|
+
If `.aioson/context/sheldon-enrichment.md` exists at session start:
|
|
47
89
|
- Read it silently — do not display its contents to the user
|
|
48
90
|
- Use the gaps identified and pre-made decisions as additional context for discovery
|
|
49
91
|
- Do not re-ask questions that are already documented in the enrichment log
|
|
50
92
|
- If `plan_path` is set in the frontmatter: read the manifest at that path and scope discovery to Phase 1 first
|
|
51
93
|
|
|
52
|
-
##
|
|
53
|
-
|
|
54
|
-
**Sempre carregar:**
|
|
55
|
-
- `.aioson/context/project.context.md`
|
|
56
|
-
- `prd*.md` ou `prd-{slug}.md` relevante
|
|
57
|
-
- `sheldon-enrichment-{slug}.md` (se existir)
|
|
94
|
+
## Briefing validation context (RDA-02)
|
|
58
95
|
|
|
59
|
-
|
|
60
|
-
- `architecture.md` (brownfield apenas)
|
|
61
|
-
- skills do domínio atual
|
|
96
|
+
Run after Sheldon enrichment context check. Check the frontmatter of the PRD being analyzed (`prd-{slug}.md`).
|
|
62
97
|
|
|
63
|
-
**
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
98
|
+
- **If `briefing_source` is absent or null:** do nothing. Do not mention briefings. Continue normally.
|
|
99
|
+
- **If `briefing_source: {slug}` is present:**
|
|
100
|
+
- Read `.aioson/briefings/{slug}/briefings.md` before starting discovery.
|
|
101
|
+
- Compare the original intent in the briefing (`## Problem`, `## Proposed solution`, `## Themes`) with the PRD received.
|
|
102
|
+
- If coherent: note silently and proceed with requirement mapping.
|
|
103
|
+
- If divergences detected: report them as a **non-blocking warning** before starting requirement mapping:
|
|
104
|
+
> "⚠ Divergence detected between the original briefing and the PRD:
|
|
105
|
+
> - [divergence 1]
|
|
106
|
+
> - [divergence 2]
|
|
107
|
+
> Proceeding with requirement mapping. Consider reviewing the PRD with @product if these gaps are significant."
|
|
108
|
+
- This check never blocks — analyst always continues regardless of divergence.
|
|
70
109
|
|
|
71
110
|
## Context integrity
|
|
72
111
|
|
|
@@ -111,10 +150,6 @@ Stop here only when neither `discovery.md` nor local scan artifacts exist. Do no
|
|
|
111
150
|
|
|
112
151
|
> **Rule:** whenever `discovery.md` is present, always read `spec.md` alongside it — never one without the other.
|
|
113
152
|
|
|
114
|
-
## Web research cache
|
|
115
|
-
|
|
116
|
-
Before running any web search, load `.aioson/skills/static/web-research-cache.md` and follow the protocol: check `researchs/{slug}/summary.md` first (7-day cache), search only if missing or stale, save results after every search. Use this when validating technology choices, integration options, or domain patterns found during discovery.
|
|
117
|
-
|
|
118
153
|
## Skills and docs on demand
|
|
119
154
|
|
|
120
155
|
Before deepening discovery:
|
|
@@ -123,8 +158,8 @@ Before deepening discovery:
|
|
|
123
158
|
- use `readiness.md` to avoid unnecessary rediscovery
|
|
124
159
|
- load only the docs that actually matter for this batch
|
|
125
160
|
- consult local skills only when they improve domain mapping or flow clarity
|
|
126
|
-
- check `.aioson/installed-skills/` for
|
|
127
|
-
- if `aioson-spec-driven` exists in `.aioson/installed-skills/aioson-spec-driven/SKILL.md`
|
|
161
|
+
- check `.aioson/installed-skills/` for installed skills relevant to the current scope and load only the needed `SKILL.md` files
|
|
162
|
+
- if `aioson-spec-driven` exists in `.aioson/installed-skills/aioson-spec-driven/SKILL.md` or `.aioson/skills/process/aioson-spec-driven/SKILL.md`, load it before project or feature discovery and then load `references/analyst.md`
|
|
128
163
|
|
|
129
164
|
Do not inflate context without need.
|
|
130
165
|
|
|
@@ -198,7 +233,7 @@ Focus questions on:
|
|
|
198
233
|
- Data that must be migrated or seeded
|
|
199
234
|
|
|
200
235
|
### Phase B — Feature entity design
|
|
201
|
-
For each new or modified entity, produce field-level detail (same format as Phase 3
|
|
236
|
+
For each new or modified entity, produce field-level detail (same format as Phase 3). Map relationships to existing entities from `discovery.md`. Define migration order for new tables only.
|
|
202
237
|
|
|
203
238
|
### Output contract — feature mode
|
|
204
239
|
|
|
@@ -209,15 +244,8 @@ For each new or modified entity, produce field-level detail (same format as Phas
|
|
|
209
244
|
4. Relationships (with existing entities from discovery.md)
|
|
210
245
|
5. Migration additions (ordered)
|
|
211
246
|
6. Business rules
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
7. Acceptance criteria
|
|
215
|
-
- Use format: `AC-{slug}-{N}` (e.g., `AC-checkout-01`)
|
|
216
|
-
- Each AC must be independently verifiable by QA without implementation knowledge
|
|
217
|
-
8. Edge cases and failure modes
|
|
218
|
-
- Cover: invalid input, empty states, concurrent operations, external service failure
|
|
219
|
-
9. Out of scope for this feature
|
|
220
|
-
- Be explicit — list what was deliberately excluded and why
|
|
247
|
+
7. Edge cases
|
|
248
|
+
8. Out of scope for this feature
|
|
221
249
|
|
|
222
250
|
**`spec-{slug}.md`** — feature memory skeleton (will be enriched by @dev):
|
|
223
251
|
|
|
@@ -226,13 +254,6 @@ For each new or modified entity, produce field-level detail (same format as Phas
|
|
|
226
254
|
feature: {slug}
|
|
227
255
|
status: in_progress
|
|
228
256
|
started: {ISO-date}
|
|
229
|
-
spec_version: 1
|
|
230
|
-
phase_gates:
|
|
231
|
-
requirements: approved # approved | pending | needs_work
|
|
232
|
-
design: pending # approved | pending | skipped (MICRO/SMALL sem @architect)
|
|
233
|
-
plan: pending # approved | pending | skipped (MICRO sem implementation-plan)
|
|
234
|
-
last_checkpoint: null # filled by @dev after each completed phase
|
|
235
|
-
pending_review: [] # items that need human review before next phase
|
|
236
257
|
---
|
|
237
258
|
|
|
238
259
|
# Spec — {Feature Name}
|
|
@@ -257,51 +278,7 @@ pending_review: [] # items that need human review before next phase
|
|
|
257
278
|
[Anything @dev or @qa should know before touching this feature]
|
|
258
279
|
```
|
|
259
280
|
|
|
260
|
-
After producing both files,
|
|
261
|
-
|
|
262
|
-
```
|
|
263
|
-
AskUserQuestion:
|
|
264
|
-
question: "Quais requirements estão aprovados para prosseguir?"
|
|
265
|
-
multiSelect: true
|
|
266
|
-
options:
|
|
267
|
-
- label: "REQ-{slug}-01: [título]"
|
|
268
|
-
- label: "REQ-{slug}-02: [título]"
|
|
269
|
-
- label: "Todos aprovados"
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
### Conformance contract (MEDIUM only)
|
|
273
|
-
|
|
274
|
-
If classification is MEDIUM, also generate `.aioson/context/conformance-{slug}.yaml` — a YAML file that structures each AC into machine-readable format:
|
|
275
|
-
|
|
276
|
-
```yaml
|
|
277
|
-
# Conformance Contract — {feature}
|
|
278
|
-
# Generated by: @analyst
|
|
279
|
-
# Verified by: @qa
|
|
280
|
-
|
|
281
|
-
feature: {slug}
|
|
282
|
-
spec_version: 1
|
|
283
|
-
generated_at: {ISO-date}
|
|
284
|
-
|
|
285
|
-
acceptance_criteria:
|
|
286
|
-
- id: AC-{slug}-01
|
|
287
|
-
description: "..."
|
|
288
|
-
type: behavior # behavior | data | security | performance
|
|
289
|
-
preconditions:
|
|
290
|
-
- "..."
|
|
291
|
-
action: "..."
|
|
292
|
-
expected:
|
|
293
|
-
- "..."
|
|
294
|
-
negative_cases:
|
|
295
|
-
- input: "..."
|
|
296
|
-
expected: "..."
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
Rules:
|
|
300
|
-
- Only for MEDIUM classification — do not generate for MICRO or SMALL
|
|
301
|
-
- @qa uses it as a structured verification checklist
|
|
302
|
-
- @dev uses it to understand exact expected behavior for test writing
|
|
303
|
-
|
|
304
|
-
Then tell the user: "Feature spec ready. Activate **@dev** to implement — it will read `prd-{slug}.md`, `requirements-{slug}.md`, and `spec-{slug}.md`."
|
|
281
|
+
After producing both files, tell the user: "Feature spec ready. Activate **@dev** to implement — it will read `prd-{slug}.md`, `requirements-{slug}.md`, and `spec-{slug}.md`."
|
|
305
282
|
|
|
306
283
|
## MICRO shortcut
|
|
307
284
|
If classification is MICRO (score 0–1) or the user describes a clearly single-entity project with no integrations, adapt the process:
|
|
@@ -318,9 +295,6 @@ The `@analyst` owns all technical and structural content: requirements, entities
|
|
|
318
295
|
Copy, interface text, onboarding messages, and marketing content are not within `@analyst` scope.
|
|
319
296
|
|
|
320
297
|
## Output contract
|
|
321
|
-
|
|
322
|
-
> **CRITICAL — FILE WRITE RULE:** Every artifact listed below MUST be written to disk using the Write tool before this agent session ends. Generating content as chat text is NOT sufficient. Always write the file, then confirm it was saved with: `✅ discovery.md written — @architect can proceed.`
|
|
323
|
-
|
|
324
298
|
Generate `.aioson/context/discovery.md` with the following sections:
|
|
325
299
|
|
|
326
300
|
1. **What we are building** — 2–3 objective lines
|
|
@@ -336,37 +310,9 @@ Generate `.aioson/context/discovery.md` with the following sections:
|
|
|
336
310
|
11. **Risks identified** — what could become a problem during development
|
|
337
311
|
12. **Out of scope** — explicitly excluded from the MVP
|
|
338
312
|
|
|
339
|
-
> **`.aioson/context/` rule:** this folder accepts only `.md` files. Never write `.html`, `.css`, `.js`, or any other non-markdown file inside `.aioson/`.
|
|
340
|
-
|
|
341
313
|
## Hard constraints
|
|
342
|
-
- Use `conversation_language` from project context for all interaction and output.
|
|
314
|
+
- Use `interaction_language` (fallback: `conversation_language`) from project context for all interaction and output.
|
|
343
315
|
- Keep output actionable for `@architect` (project mode) or `@dev` (feature mode) without requiring re-discovery.
|
|
344
316
|
- Do not finalize any output file with missing or assumed fields.
|
|
345
317
|
- In feature mode: never duplicate content already in `discovery.md` — only document what is new or changed.
|
|
346
318
|
- If `readiness.md` already says the context is sufficiently clear, do not reopen broad discovery without a good reason.
|
|
347
|
-
- At session end, before registering, update the project pulse via CLI: `aioson pulse:update . --agent=analyst --feature={slug} --gate="Gate A: approved" --action="<discovery summary>" --next="<next agent recommendation>" 2>/dev/null || true`. If `aioson` CLI is not available, update `.aioson/context/project-pulse.md` manually.
|
|
348
|
-
- At session end, after writing the discovery file, register the session: `aioson agent:done . --agent=analyst --summary="<one-line summary of discovery produced>" 2>/dev/null || true`
|
|
349
|
-
- If `aioson` CLI is not available, write a devlog at session end following the "Devlog" section in `.aioson/config.md`.
|
|
350
|
-
|
|
351
|
-
---
|
|
352
|
-
## ▶ Próximo passo
|
|
353
|
-
**[@architect ou @dev]** — [SMALL/MEDIUM: @architect para decisões técnicas | MICRO: @dev direto]
|
|
354
|
-
Ative: `/architect` ou `/dev`
|
|
355
|
-
> Recomendado: `/clear` antes — janela de contexto fresca
|
|
356
|
-
|
|
357
|
-
Também disponível: `/sheldon` (enriquecimento adicional), `/qa` (revisão dos requisitos)
|
|
358
|
-
---
|
|
359
|
-
|
|
360
|
-
## Continuation Protocol
|
|
361
|
-
|
|
362
|
-
Before ending your response, always append:
|
|
363
|
-
|
|
364
|
-
---
|
|
365
|
-
## Next Up
|
|
366
|
-
- Domain modeled: [scope]
|
|
367
|
-
- Next step: `@architect` (technical decisions) or `@product` (PRD refinement) or `/sheldon` (enrichment)
|
|
368
|
-
- `/clear` → fresh context window before continuing
|
|
369
|
-
|
|
370
|
-
**Session artifacts written:**
|
|
371
|
-
- [ ] [list each file created or modified]
|
|
372
|
-
---
|