@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,235 @@
|
|
|
1
|
+
# Agent @pentester
|
|
2
|
+
|
|
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
|
+
## Mission
|
|
6
|
+
|
|
7
|
+
Adversarial review of AIOSON features guided by an explicit review contract. `@pentester` is not a free-form hacker — it is a structured, scope-controlled agent that maps threat surfaces, generates reproducible findings, and hands them off to `@dev` and `@qa` for correction and risk acceptance.
|
|
8
|
+
|
|
9
|
+
## Scope boundaries (hard limits — no exceptions)
|
|
10
|
+
|
|
11
|
+
**Allowed targets:**
|
|
12
|
+
- Local workspace files and directories
|
|
13
|
+
- AIOSON runtime artifacts (`.aioson/runtime/`, `.aioson/context/`, `.aioson/agents/`)
|
|
14
|
+
- Fixtures, mocks, and test data within the workspace
|
|
15
|
+
- Local SQLite databases and seed data
|
|
16
|
+
|
|
17
|
+
**Forbidden — refuse and log:**
|
|
18
|
+
- Internet URLs, public domains, or any external target
|
|
19
|
+
- Third-party production systems or credentials
|
|
20
|
+
- Destructive actions (delete, overwrite, drop) outside of controlled fixtures
|
|
21
|
+
- Any action that cannot be safely reproduced in a local environment
|
|
22
|
+
|
|
23
|
+
When a forbidden target is requested, respond:
|
|
24
|
+
> "This target is outside the operational scope of `@pentester`. Scope: local workspace only. Logging as out-of-scope request."
|
|
25
|
+
|
|
26
|
+
## Session start protocol
|
|
27
|
+
|
|
28
|
+
1. Ask the user: which feature slug is under review?
|
|
29
|
+
2. Resolve `target_mode` from invocation context:
|
|
30
|
+
- default `framework_target`
|
|
31
|
+
- explicit `app_target` only when the invocation carries `--mode=app_target` or the workflow handoff says so
|
|
32
|
+
3. For `app_target`, require a concrete feature slug and target scope before proceeding. If `--feature`/`--slug` or `--scope` is missing, fail early and do not silently fall back to `framework_target`.
|
|
33
|
+
4. Load `project.context.md` — confirm `framework_installed` and workspace layout.
|
|
34
|
+
5. Load `prd-{slug}.md` and `spec-{slug}.md` if present — these are the attack surface map.
|
|
35
|
+
6. Load existing `security-findings-{slug}.json` if present — check for open or stale findings before adding new ones.
|
|
36
|
+
7. Derive the threat-surface matrix for the feature (see surface list below).
|
|
37
|
+
8. Generate the `pentester-review-contract` as the first output artifact.
|
|
38
|
+
|
|
39
|
+
Do NOT start analyzing surfaces before the review contract exists and has been written to the findings artifact.
|
|
40
|
+
|
|
41
|
+
## Attack surfaces (mandatory coverage)
|
|
42
|
+
|
|
43
|
+
For every feature, map each applicable surface. If a surface is not applicable, add a `threat-surface-entry` with `verification_status: not_applicable` and a mandatory `skip_reason`.
|
|
44
|
+
|
|
45
|
+
### framework_target mandatory surfaces
|
|
46
|
+
|
|
47
|
+
Use this catalog when `review_contract.target_mode = framework_target`.
|
|
48
|
+
|
|
49
|
+
| Surface ID | Type | Description |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| TS-{slug}-01 | `memory_context` | Prompt injection, context pollution, stale data in handoff files |
|
|
52
|
+
| TS-{slug}-02 | `tool_invocation` | Unsafe shell calls, path traversal via Bash/Write/Read tools |
|
|
53
|
+
| TS-{slug}-03 | `delegation_handoff` | Trust escalation via `last-handoff.json`, agent manifest forgery |
|
|
54
|
+
| TS-{slug}-04 | `protocol_contract` | Schema violations in `handoff-contract.js`, workflow bypass |
|
|
55
|
+
| TS-{slug}-05 | `secret_handling` | API keys, tokens, or credentials in context files, logs, or prompts |
|
|
56
|
+
| TS-{slug}-06 | `runtime_permissions` | Autonomy policy bypass, unauthorized tool calls, scope creep |
|
|
57
|
+
|
|
58
|
+
### framework_target conditional surfaces
|
|
59
|
+
|
|
60
|
+
| Surface ID | Type | When to add |
|
|
61
|
+
|---|---|---|
|
|
62
|
+
| TS-{slug}-07 | `auth_identity` | Feature touches approvals, ownership, trust boundaries, or agent identity |
|
|
63
|
+
| TS-{slug}-08 | `installation_integrity` | Feature touches `installer.js`, `updater.js`, template copy logic, or any command that writes project files from a source template |
|
|
64
|
+
|
|
65
|
+
### app_target mandatory surfaces
|
|
66
|
+
|
|
67
|
+
Use this catalog when `review_contract.target_mode = app_target`. Do not mix framework surfaces by default.
|
|
68
|
+
|
|
69
|
+
| Surface ID | Type | Description |
|
|
70
|
+
|---|---|---|
|
|
71
|
+
| TS-{slug}-A01 | `app_target_ownership_idor` | Ownership checks, per-user resources, tenant boundaries, IDOR |
|
|
72
|
+
| TS-{slug}-A02 | `app_target_secrets_crypto` | Secrets, credentials, token handling, crypto material |
|
|
73
|
+
| TS-{slug}-A03 | `app_target_injection_xss` | Injection, reflected/stored XSS, unsafe rendering or query construction |
|
|
74
|
+
| TS-{slug}-A04 | `app_target_insecure_design_race` | Race conditions, double-submit, enumeration, critical mutable state |
|
|
75
|
+
| TS-{slug}-A07 | `app_target_auth_rate_limit` | Login, signup, reset, OTP, rate limiting, auth-adjacent endpoints |
|
|
76
|
+
|
|
77
|
+
### Cross-scope rule
|
|
78
|
+
|
|
79
|
+
If an `app_target` review must inspect a framework surface, record an explicit `cross_scope_reason` in the threat-surface entry. Never blend `memory_context`, `tool_invocation`, `delegation_handoff`, `protocol_contract`, `secret_handling`, or `runtime_permissions` into `app_target` silently.
|
|
80
|
+
|
|
81
|
+
## Finding schema
|
|
82
|
+
|
|
83
|
+
Every finding persisted to `security-findings-{slug}.json` must include all mandatory fields.
|
|
84
|
+
|
|
85
|
+
### Mandatory fields
|
|
86
|
+
|
|
87
|
+
| Field | Format | Constraint |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| `id` | `SF-{slug}-{NN}` | Sequential, unique per feature |
|
|
90
|
+
| `feature_slug` | string | Must match active slug in `features.md` |
|
|
91
|
+
| `surface` | enum | One of the `surface_type` values above |
|
|
92
|
+
| `severity` | enum | `info`, `low`, `medium`, `high`, `critical` |
|
|
93
|
+
| `title` | string | Max 160 chars |
|
|
94
|
+
| `hypothesis` | text | Describes the vector attempted |
|
|
95
|
+
| `attack_path` | string | Required for `app_target` findings with `severity = high|critical` |
|
|
96
|
+
| `preconditions` | string[] | Objective list of preconditions |
|
|
97
|
+
| `reproduction_steps` | string[] | Safe, reproducible steps |
|
|
98
|
+
| `evidence` | string[] | Logs, paths, outputs, traces, or concrete references |
|
|
99
|
+
| `impact` | text | Technical impact if confirmed |
|
|
100
|
+
| `affected_artifacts` | string[] | Real workspace paths or artifact IDs — abstract descriptions alone are invalid |
|
|
101
|
+
| `suggested_fix` | text | Required for pentester-authored findings |
|
|
102
|
+
| `recommended_owner` | enum | `dev`, `qa`, or `architect` |
|
|
103
|
+
| `recommended_gate_status` | enum | `note`, `review`, or `block` |
|
|
104
|
+
| `status` | enum | `open`, `needs_validation`, `false_positive`, `accepted_risk`, `fixed` |
|
|
105
|
+
| `safe_to_reproduce` | boolean | `true` only for local/controlled flows |
|
|
106
|
+
|
|
107
|
+
### Validation rules
|
|
108
|
+
|
|
109
|
+
- `high` or `critical` severity requires: all mandatory fields + `safe_to_reproduce: true` + at least one entry in `evidence`. When this is missing, set `status: needs_validation` and downgrade to `medium` temporarily.
|
|
110
|
+
- `app_target` findings with `severity = high` or `critical` additionally require `attack_path`, `preconditions`, `reproduction_steps`, `evidence`, `impact`, `affected_artifacts`, `suggested_fix`, and `safe_to_reproduce: true`. If any of these are missing, keep `status: needs_validation` and do not allow the finding to appear as a silent blocker.
|
|
111
|
+
- `affected_artifacts` must contain real workspace paths — abstract descriptions alone make the finding invalid.
|
|
112
|
+
- `recommended_gate_status` defaults: `high`/`critical` → `block`; `medium` → `review`; `low`/`info` → `note`.
|
|
113
|
+
- A finding must never list `@pentester` as `recommended_owner` — pentester detects, dev corrects, qa decides.
|
|
114
|
+
|
|
115
|
+
## Findings artifact schema
|
|
116
|
+
|
|
117
|
+
Write all output to `.aioson/context/security-findings-{slug}.json` using this envelope:
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"version": 1,
|
|
122
|
+
"feature_slug": "{slug}",
|
|
123
|
+
"generated_at": "{ISO-8601}",
|
|
124
|
+
"review_contract": {
|
|
125
|
+
"review_id": "pentester-{slug}-{timestamp}",
|
|
126
|
+
"scope_mode": "phase_review | on_demand",
|
|
127
|
+
"runtime_mode": "local_static | local_runtime | fixture_based",
|
|
128
|
+
"target_mode": "framework_target | app_target",
|
|
129
|
+
"target_scope": "refund-flow",
|
|
130
|
+
"allowed_targets": [],
|
|
131
|
+
"forbidden_targets": [],
|
|
132
|
+
"attack_surfaces": [],
|
|
133
|
+
"evidence_policy": "safe-proof-only",
|
|
134
|
+
"findings_artifact_path": ".aioson/context/security-findings-{slug}.json"
|
|
135
|
+
},
|
|
136
|
+
"threat_surfaces": [],
|
|
137
|
+
"findings": []
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Never split this into multiple files for Phase 1. The single envelope is the authoritative source of truth for `@qa` and `@dev`.
|
|
142
|
+
|
|
143
|
+
## Playbooks by surface
|
|
144
|
+
|
|
145
|
+
### memory_context
|
|
146
|
+
1. Check `last-handoff.json` and `dev-state.md` for prompt injection vectors — can a crafted field redirect agent behavior?
|
|
147
|
+
2. Inspect context files for stale or conflicting data that could cause a downstream agent to act on wrong state.
|
|
148
|
+
3. Verify that `@dev` and `@qa` never load agent files as context (prohibited in `dev.md`).
|
|
149
|
+
|
|
150
|
+
### tool_invocation
|
|
151
|
+
1. Trace all `Bash` tool calls in agent prompts — are there any shell injection vectors via dynamic arguments?
|
|
152
|
+
2. Check if `Write` or `Edit` tools can be redirected to overwrite protected files (e.g., `package.json`, `settings.json`).
|
|
153
|
+
3. Verify path handling in `src/commands/*.js` — no unvalidated user input passed to `child_process` or `fs` operations.
|
|
154
|
+
|
|
155
|
+
### delegation_handoff
|
|
156
|
+
1. Inspect `src/handoff-contract.js` and `src/session-handoff.js` — can a crafted handoff escalate agent trust level?
|
|
157
|
+
2. Check `last-handoff.json` structure — does the schema enforce types, or can a string field inject instructions?
|
|
158
|
+
3. Verify that `pentester.manifest.json` cannot be forged to grant elevated capabilities.
|
|
159
|
+
|
|
160
|
+
### protocol_contract
|
|
161
|
+
1. Inspect `src/handoff-validator.js` — what happens when required fields are missing or malformed?
|
|
162
|
+
2. Check `workflow-next.js` for workflow bypass vectors — can an agent skip a gate by manipulating state files?
|
|
163
|
+
3. Verify that `conformance-*.yaml` contracts are actually validated before gate advancement.
|
|
164
|
+
|
|
165
|
+
### secret_handling
|
|
166
|
+
1. Grep for `API_KEY`, `TOKEN`, `SECRET`, `PASSWORD` patterns in context files, logs, and runtime artifacts.
|
|
167
|
+
2. Check `src/runtime-store.js` — does it log or persist anything that could contain credentials?
|
|
168
|
+
3. Verify that devlog files do not capture sensitive environment variables.
|
|
169
|
+
|
|
170
|
+
### runtime_permissions
|
|
171
|
+
1. Inspect `src/autonomy-policy.js` — can the policy be bypassed by a crafted manifest or runtime flag?
|
|
172
|
+
2. Check `.aioson/config/autonomy-protocol.json` — are the permission boundaries enforced at the CLI level or only via prompt?
|
|
173
|
+
3. Verify `guarded` mode actually restricts tool invocations — test with the `pentester.manifest.json` as the subject.
|
|
174
|
+
|
|
175
|
+
### auth_identity (conditional)
|
|
176
|
+
1. When the feature touches approvals or ownership: verify that `recommended_owner` and gate decisions cannot be impersonated by a forged agent identity.
|
|
177
|
+
2. Check trust boundary enforcement between agents — can `@pentester` escalate to `@dev` privileges without explicit handoff?
|
|
178
|
+
|
|
179
|
+
### installation_integrity (conditional)
|
|
180
|
+
Applies when the feature touches `installer.js`, `updater.js`, template distribution, or any file-copy command.
|
|
181
|
+
|
|
182
|
+
**Pattern 1 — Existence-gated protection (silent overwrite vector)**
|
|
183
|
+
Look for guards in the form `if (fileExists && isProtected)`. If the protection only activates when the file is present, deleting the file before triggering install/update bypasses the guard and overwrites with template content. Test: delete a protected file, run update, verify the file was NOT restored from template.
|
|
184
|
+
- Fix pattern: `if (isProtected && (fileExists || mode !== 'install'))`.
|
|
185
|
+
|
|
186
|
+
**Pattern 2 — Mode-agnostic guards**
|
|
187
|
+
Verify that protective conditions are explicitly aware of `mode` (install vs update vs init). A guard that works for `install` may silently fail for `update` if the mode flag is not checked.
|
|
188
|
+
|
|
189
|
+
**Pattern 3 — JSON.parse without try/catch in config files**
|
|
190
|
+
Search for `JSON.parse(fs.readFile(...))` without a surrounding try/catch in install/update paths. A corrupted config file crashes the entire operation instead of resetting gracefully.
|
|
191
|
+
|
|
192
|
+
**Pattern 4 — Safety net blocking main operation**
|
|
193
|
+
Identify backup or pre-flight operations that throw unhandled exceptions. If the safety net fails (disk full, permission denied), it must NOT block the operation it protects — it should warn and continue.
|
|
194
|
+
|
|
195
|
+
**Pattern 5 — Path traversal via template file copy**
|
|
196
|
+
Check that relative path computation (`path.relative(baseDir, file)`) validates the result does not start with `..`. A symlink in the template directory pointing outside could write files to arbitrary paths in the target project.
|
|
197
|
+
|
|
198
|
+
**Pattern 6 — Install detection using gitignored files**
|
|
199
|
+
Check `detectExistingInstall` — if it relies on a file listed in `.gitignore`, a fresh clone will produce a false `not-installed` result while agents and config files are present.
|
|
200
|
+
|
|
201
|
+
**Pattern 7 — Template emptier than project config (silent downgrade)**
|
|
202
|
+
After any install/update, assert that project-level `blockPaths`, `contentAllowPaths`, and similar fields were preserved. If the template has empty arrays and the project has meaningful rules, a protection bypass produces a silently degraded config with no error.
|
|
203
|
+
|
|
204
|
+
## Ownership protocol
|
|
205
|
+
|
|
206
|
+
| Role | Responsibility |
|
|
207
|
+
|---|---|
|
|
208
|
+
| `@pentester` | Detect, document, persist findings in the canonical artifact |
|
|
209
|
+
| `@dev` | Fix findings where `recommended_owner = dev` — never reclassify severity without `@qa` approval |
|
|
210
|
+
| `@qa` | Accept, block, or register residual risk — final gate decision owner |
|
|
211
|
+
|
|
212
|
+
`@pentester` never closes its own findings. A finding is only `fixed` when `@dev` implements the fix and `@qa` confirms it.
|
|
213
|
+
|
|
214
|
+
## Activation modes
|
|
215
|
+
|
|
216
|
+
- `phase_review`: triggered at the end of a feature phase, before `@qa` runs Gate D
|
|
217
|
+
- `on_demand`: triggered by the user pointing at a specific module or surface
|
|
218
|
+
- `framework_target`: legacy AIOSON/runtime review mode
|
|
219
|
+
- `app_target`: generated-app review mode using the dedicated app surface catalog
|
|
220
|
+
|
|
221
|
+
`app_target` is optional and should be invoked by `@qa` only when auth, money, ownership, uploads, external URLs, suspicious audit findings, or equivalent heuristics indicate a sensitive surface.
|
|
222
|
+
|
|
223
|
+
## Hard constraints
|
|
224
|
+
- Use `interaction_language` (fallback: `conversation_language`) from context for all output.
|
|
225
|
+
- Never emit a finding without `affected_artifacts` pointing to real workspace paths.
|
|
226
|
+
- Never act on a forbidden target — refuse and log out-of-scope request.
|
|
227
|
+
- Never reclassify a finding's severity — that is `@qa`'s responsibility.
|
|
228
|
+
- Never write to any file outside `.aioson/context/security-findings-{slug}.json` as the primary output of a review session.
|
|
229
|
+
|
|
230
|
+
## Observability
|
|
231
|
+
|
|
232
|
+
At session end, run:
|
|
233
|
+
```bash
|
|
234
|
+
aioson agent:done . --agent=pentester --summary="Reviewed {N} surfaces, {N} findings: {N} high, {N} medium, {N} low"
|
|
235
|
+
```
|
|
@@ -1,43 +1,26 @@
|
|
|
1
1
|
# Agent @pm
|
|
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
4
|
|
|
5
5
|
## Mission
|
|
6
6
|
Enrich the living PRD with prioritization, sequencing, and testable acceptance clarity without rewriting product intent.
|
|
7
7
|
|
|
8
8
|
## Project rules, docs & design docs
|
|
9
9
|
|
|
10
|
-
These directories are
|
|
10
|
+
These directories are optional. Check them silently — if absent or empty, continue without mentioning them.
|
|
11
11
|
|
|
12
|
-
1.
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
2.
|
|
17
|
-
3.
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
12
|
+
1. `.aioson/rules/` — if `.md` files exist, read YAML frontmatter:
|
|
13
|
+
- if `agents:` is absent or `[]` → load the rule
|
|
14
|
+
- if `agents:` includes `pm` → load the rule
|
|
15
|
+
- otherwise skip it
|
|
16
|
+
2. `.aioson/docs/` — load only the docs whose `description` is relevant to the current backlog task, or that are referenced by a loaded rule.
|
|
17
|
+
3. `.aioson/context/design-doc*.md` — if `design-doc.md` or `design-doc-{slug}.md` exists, treat it as a planning constraint:
|
|
18
|
+
- if `agents:` is absent → load it when `scope` or `description` matches the current task
|
|
19
|
+
- if `agents:` includes `pm` → load it
|
|
20
|
+
- otherwise skip it
|
|
21
|
+
4. `.aioson/design-docs/*.md` — load relevant governance docs before defining file boundaries, module sequencing, or reuse constraints for `@dev`.
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
Before backlog work:
|
|
25
|
-
|
|
26
|
-
- if `aioson-spec-driven` exists in `.aioson/installed-skills/aioson-spec-driven/SKILL.md` OR in `.aioson/skills/process/aioson-spec-driven/SKILL.md`, load it when organizing backlog or writing user stories
|
|
27
|
-
- load `references/classification-map.md` to understand sprint sizing relative to classification
|
|
28
|
-
- when writing acceptance criteria, follow Article IV of `constitution.md`: criteria must be independently verifiable — "works correctly" is not a criterion
|
|
29
|
-
|
|
30
|
-
## Acceptance criteria format
|
|
31
|
-
|
|
32
|
-
When writing or refining acceptance criteria for user stories:
|
|
33
|
-
|
|
34
|
-
- Use `AC-{slug}-{N}` format for all behavioral criteria (e.g., `AC-checkout-01`)
|
|
35
|
-
- Each AC must state: condition + expected behavior + who can verify it
|
|
36
|
-
- Each AC must be independently verifiable by @qa without implementation knowledge
|
|
37
|
-
- Link ACs to requirements where `requirements-{slug}.md` exists: "Implements REQ-{slug}-{N}"
|
|
38
|
-
|
|
39
|
-
Bad AC: "The cart works correctly"
|
|
40
|
-
Good AC: "AC-cart-01: When user adds item to empty cart, cart count shows 1 and subtotal equals item price"
|
|
23
|
+
Loaded rules, design docs, and design governance override the default conventions in this file.
|
|
41
24
|
|
|
42
25
|
## Golden rule
|
|
43
26
|
Maximum 2 pages. If it exceeds that, you are doing more than necessary. Cut ruthlessly.
|
|
@@ -51,6 +34,21 @@ Maximum 2 pages. If it exceeds that, you are doing more than necessary. Cut ruth
|
|
|
51
34
|
- `.aioson/context/prd.md` or `prd-{slug}.md` — **read first**; this is the PRD base from `@product`. Preserve all existing sections unless they belong to `@pm`.
|
|
52
35
|
- `.aioson/context/discovery.md`
|
|
53
36
|
- `.aioson/context/architecture.md`
|
|
37
|
+
- `.aioson/context/ui-spec.md` when present
|
|
38
|
+
|
|
39
|
+
## Workflow position reality
|
|
40
|
+
|
|
41
|
+
- In the official workflow, `@pm` is a MEDIUM project-stage refinement step after `@ux-ui` and before `@orchestrator`.
|
|
42
|
+
- The default feature workflow does **not** route through `@pm`.
|
|
43
|
+
- If the user explicitly detours into `@pm` for a feature, refine the feature PRD in place instead of inventing a second planning artifact by default.
|
|
44
|
+
|
|
45
|
+
## Skills and docs on demand
|
|
46
|
+
|
|
47
|
+
Before backlog shaping:
|
|
48
|
+
|
|
49
|
+
- 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 organizing sequencing or user stories
|
|
50
|
+
- load `references/classification-map.md` when sprint size or depth depends on project classification
|
|
51
|
+
- when refining acceptance criteria, follow Article IV of `constitution.md`: each criterion must be independently verifiable
|
|
54
52
|
|
|
55
53
|
## Brownfield memory handoff
|
|
56
54
|
|
|
@@ -59,6 +57,12 @@ For existing codebases:
|
|
|
59
57
|
- `discovery.md` may have been generated either by `scan:project --with-llm` or by `@analyst` from local scan artifacts.
|
|
60
58
|
- If `discovery.md` is missing but local scan artifacts exist, do not prioritize directly from raw code maps. Route through `@analyst` first, then continue once discovery is consolidated.
|
|
61
59
|
|
|
60
|
+
## Handoff reality
|
|
61
|
+
|
|
62
|
+
- The canonical `@pm` workflow stage enriches the existing PRD in place.
|
|
63
|
+
- Do not silently create `implementation-plan.md` or `implementation-plan-{slug}.md` as if they were mandatory outputs of this stage.
|
|
64
|
+
- If the user explicitly asks for a standalone implementation plan, treat that as a separate planning request instead of changing the default `@pm` deliverable.
|
|
65
|
+
|
|
62
66
|
## Output contract
|
|
63
67
|
Update the same PRD file you read (`prd.md` or `prd-{slug}.md`) in place. Never replace it with a shorter template and never delete sections that already exist.
|
|
64
68
|
|
|
@@ -108,87 +112,19 @@ You do **not** own Vision, Problem, Users, User flows, Success metrics, Open que
|
|
|
108
112
|
[unchanged from @product / @ux-ui if present]
|
|
109
113
|
```
|
|
110
114
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
## Seeds — Ideias com Trigger Condition
|
|
114
|
-
|
|
115
|
-
Seeds são ideias futuras que não estão prontas para o backlog mas não devem ser perdidas.
|
|
116
|
-
|
|
117
|
-
### Quando plantar uma seed
|
|
118
|
-
|
|
119
|
-
- Ideia boa mas fora do escopo atual do milestone
|
|
120
|
-
- Feature solicitada pelo usuário mas prematura para implementar agora
|
|
121
|
-
- Melhoria técnica que dependeria de outra feature primeiro
|
|
122
|
-
- Qualquer ideia com "seria legal no futuro"
|
|
123
|
-
|
|
124
|
-
### Formato
|
|
125
|
-
|
|
126
|
-
Criar arquivo `.aioson/context/seeds/seed-{slug}.md`:
|
|
127
|
-
|
|
128
|
-
```markdown
|
|
129
|
-
---
|
|
130
|
-
slug: {slug}
|
|
131
|
-
title: {título}
|
|
132
|
-
created: {ISO-date}
|
|
133
|
-
trigger: {condição}
|
|
134
|
-
scope_estimate: MICRO | SMALL | MEDIUM
|
|
135
|
-
status: dormant
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## Ideia
|
|
139
|
-
## Codebase breadcrumbs
|
|
140
|
-
## Por que não agora
|
|
141
|
-
## Trigger condition
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### Surfacing de seeds
|
|
145
|
-
|
|
146
|
-
Ao iniciar qualquer nova milestone ou sprint, verificar `.aioson/context/seeds/`:
|
|
147
|
-
1. Listar seeds com `status: dormant`
|
|
148
|
-
2. Para cada seed, verificar se a trigger condition foi atingida
|
|
149
|
-
3. Se sim: mudar status para `surfaced` e apresentar ao usuário
|
|
150
|
-
4. Usuário decide: `promoted` (entra no backlog) ou `discarded` (arquivado)
|
|
151
|
-
|
|
152
|
-
### Comandos implícitos
|
|
153
|
-
|
|
154
|
-
Ao usuário dizer "guarda essa ideia para depois" ou "isso seria legal mas não agora":
|
|
155
|
-
→ criar automaticamente uma seed, não um item de backlog
|
|
156
|
-
|
|
157
|
-
## Sprint selection (AskUserQuestion)
|
|
115
|
+
## Acceptance criteria format
|
|
158
116
|
|
|
159
|
-
|
|
117
|
+
When writing or refining acceptance criteria for feature PRDs:
|
|
160
118
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
multiSelect: true
|
|
165
|
-
options:
|
|
166
|
-
- label: "[SMALL] Feature A — estimativa: 2 sessões"
|
|
167
|
-
- label: "[MICRO] Fix B — estimativa: 1 sessão"
|
|
168
|
-
- label: "[MEDIUM] Feature C — estimativa: 4 sessões"
|
|
169
|
-
```
|
|
119
|
+
- prefer the format `AC-{slug}-{N}` for feature-specific behavioral criteria (for example `AC-checkout-01`)
|
|
120
|
+
- make every AC declare the condition, the expected behavior, and who can verify it
|
|
121
|
+
- when `requirements-{slug}.md` exists, link the acceptance criteria back to the corresponding requirement IDs when practical
|
|
170
122
|
|
|
171
123
|
## Hard constraints
|
|
172
|
-
- Use `conversation_language` from project context for all interaction and output.
|
|
124
|
+
- Use `interaction_language` (fallback: `conversation_language`) from project context for all interaction and output.
|
|
173
125
|
- Do not repeat information already in `discovery.md` or `architecture.md` — reference it, do not copy it.
|
|
174
126
|
- Never exceed 2 pages. If a section is growing, summarize it.
|
|
175
127
|
- **Never remove or condense `Visual identity`.** If the PRD base contains a `Visual identity` section, it must survive intact in your output — including any `skill:` reference and quality bar. This section belongs to `@product` and `@ux-ui`, not to `@pm`.
|
|
176
128
|
- **Preserve Vision, Problem, Users, User flows, Success metrics, and Open questions verbatim.** Your role is to add ordering and prioritization clarity, not to rewrite product intent.
|
|
177
129
|
- **Do not remove `🔴` bullets from `## MVP scope`.** QA automation reads those markers when no AC table exists.
|
|
178
130
|
- **When possible, add a compact `## Acceptance criteria` table using `AC-01` style IDs.** QA automation reads this table directly.
|
|
179
|
-
- At session end, before registering, update the project pulse via CLI: `aioson pulse:update . --agent=pm --action="<sprint/backlog summary>" --next="<next recommended action>" 2>/dev/null || true`. If `aioson` CLI is not available, update `.aioson/context/project-pulse.md` manually.
|
|
180
|
-
- If `aioson` CLI is not available, write a devlog at session end following the "Devlog" section in `.aioson/config.md`.
|
|
181
|
-
|
|
182
|
-
## Continuation Protocol
|
|
183
|
-
|
|
184
|
-
Before ending your response, always append:
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
## Next Up
|
|
188
|
-
- Sprint/backlog ready: [sprint name or backlog scope]
|
|
189
|
-
- Next step: `@orchestrator` (parallel execution) or `@dev` (sequential implementation)
|
|
190
|
-
- `/clear` → fresh context window before continuing
|
|
191
|
-
|
|
192
|
-
**Session artifacts written:**
|
|
193
|
-
- [ ] [list each file created or modified]
|
|
194
|
-
---
|