@jaimevalasek/aioson 1.7.2 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/README.md +153 -10
- package/docs/en/cli-reference.md +56 -1
- package/docs/en/i18n.md +18 -18
- package/docs/en/schemas/index.json +10 -0
- package/docs/en/schemas/parallel-assign.schema.json +9 -0
- package/docs/en/schemas/parallel-doctor.schema.json +36 -0
- package/docs/en/schemas/parallel-guard.schema.json +63 -0
- package/docs/en/schemas/parallel-merge.schema.json +84 -0
- package/docs/en/schemas/parallel-status.schema.json +91 -1
- package/docs/integrations/apps-publish-marketplace.md +94 -0
- package/docs/pt/README.md +9 -0
- package/docs/pt/agentes.md +324 -3
- package/docs/pt/clientes-ai.md +7 -3
- package/docs/pt/comandos-cli.md +160 -13
- package/docs/pt/compress-agents.md +304 -0
- package/docs/pt/design-docs-governance.md +59 -0
- package/docs/pt/feature-archive.md +191 -0
- package/docs/pt/genome-3.0-spec.md +115 -4
- package/docs/pt/genome-distribution.md +232 -0
- package/docs/pt/inicio-rapido.md +1 -0
- package/docs/pt/motor-hardening.md +492 -0
- package/docs/pt/runner-system.md +113 -0
- package/package.json +2 -1
- package/src/agent-manifests.js +66 -0
- package/src/agents.js +27 -7
- package/src/autonomy-policy.js +139 -0
- package/src/brain-query.js +161 -0
- package/src/cli.js +1377 -1099
- package/src/commands/agents.js +102 -7
- package/src/commands/artifact-validate.js +33 -4
- package/src/commands/auth.js +272 -0
- package/src/commands/brain-query.js +44 -0
- package/src/commands/briefing.js +344 -0
- package/src/commands/commit-prepare.js +547 -0
- package/src/commands/compress-agents.js +416 -0
- package/src/commands/context-health.js +4 -2
- package/src/commands/context-trim.js +17 -11
- package/src/commands/design-hybrid-options.js +3 -3
- package/src/commands/devlog-process.js +6 -4
- package/src/commands/dossier.js +423 -0
- package/src/commands/feature-archive.js +513 -0
- package/src/commands/feature-close.js +123 -18
- package/src/commands/gate-approve.js +198 -0
- package/src/commands/gate-check.js +24 -5
- package/src/commands/genome-doctor.js +166 -9
- package/src/commands/git-guard.js +170 -0
- package/src/commands/harness.js +121 -0
- package/src/commands/implementation-plan.js +47 -20
- package/src/commands/init.js +6 -2
- package/src/commands/install.js +6 -2
- package/src/commands/live.js +497 -56
- package/src/commands/locale-apply.js +9 -6
- package/src/commands/locale-diff.js +11 -112
- package/src/commands/mcp-doctor.js +2 -1
- package/src/commands/mcp-init.js +4 -10
- package/src/commands/memory.js +234 -0
- package/src/commands/parallel-assign.js +107 -27
- package/src/commands/parallel-doctor.js +416 -3
- package/src/commands/parallel-guard.js +241 -0
- package/src/commands/parallel-init.js +66 -4
- package/src/commands/parallel-merge.js +299 -0
- package/src/commands/parallel-status.js +147 -3
- package/src/commands/preflight.js +63 -4
- package/src/commands/qa-init.js +10 -5
- package/src/commands/revision.js +235 -0
- package/src/commands/scaffold-complete.js +188 -0
- package/src/commands/security-audit.js +275 -0
- package/src/commands/security-scan.js +376 -0
- package/src/commands/self-implement-loop.js +46 -2
- package/src/commands/setup-context.js +11 -10
- package/src/commands/squad-agent-create.js +51 -9
- package/src/commands/squad-investigate.js +53 -0
- package/src/commands/squad-plan.js +33 -1
- package/src/commands/squad-scaffold.js +4 -3
- package/src/commands/squad-score.js +71 -14
- package/src/commands/squad-status.js +22 -1
- package/src/commands/squad-validate.js +93 -2
- package/src/commands/store-genome.js +304 -0
- package/src/commands/store-skill.js +247 -0
- package/src/commands/store-squad.js +431 -0
- package/src/commands/store-system.js +392 -0
- package/src/commands/tool-capabilities.js +63 -0
- package/src/commands/update.js +3 -3
- package/src/commands/verify-gate.js +40 -0
- package/src/commands/workflow-execute.js +644 -155
- package/src/commands/workflow-harden.js +231 -0
- package/src/commands/workflow-heal.js +136 -0
- package/src/commands/workflow-next.js +460 -22
- package/src/commands/workflow-status.js +328 -138
- package/src/commands/workspace.js +144 -0
- package/src/constants.js +42 -75
- package/src/context-memory.js +133 -4
- package/src/context-writer.js +2 -1
- package/src/context.js +32 -2
- package/src/doctor.js +46 -6
- package/src/dossier/codemap-store.js +267 -0
- package/src/dossier/dossier-bootstrap.js +222 -0
- package/src/dossier/dossier-compact.js +159 -0
- package/src/dossier/lock.js +128 -0
- package/src/dossier/revision-store.js +313 -0
- package/src/dossier/schema.js +155 -0
- package/src/dossier/store.js +400 -0
- package/src/execution-gateway.js +3 -0
- package/src/friction-scanner.js +202 -0
- package/src/genome-schema.js +24 -1
- package/src/genomes.js +33 -0
- package/src/handoff-contract.js +363 -0
- package/src/handoff-validator.js +45 -0
- package/src/harness/circuit-breaker.js +135 -0
- package/src/i18n/messages/en.js +317 -22
- package/src/i18n/messages/es.js +259 -18
- package/src/i18n/messages/fr.js +260 -18
- package/src/i18n/messages/pt-BR.js +313 -22
- package/src/install-profile.js +0 -16
- package/src/installer.js +70 -6
- package/src/lib/git-commit-guard.js +691 -0
- package/src/lib/security/artifact-reader.js +167 -0
- package/src/lib/security/exit-codes.js +51 -0
- package/src/lib/security/findings-writer.js +176 -0
- package/src/lib/security/runtime-events.js +77 -0
- package/src/lib/security/secrets-regex.js +115 -0
- package/src/lib/store/security-scan.js +173 -0
- package/src/lib/terminal-checkbox.js +130 -0
- package/src/lib/tmux-launcher.js +163 -0
- package/src/lib/tool-capabilities.js +102 -0
- package/src/locales.js +12 -8
- package/src/parallel-workspace.js +756 -0
- package/src/parser.js +8 -1
- package/src/path-guard.js +47 -0
- package/src/preflight-engine.js +237 -26
- package/src/self-healing.js +142 -0
- package/src/session-handoff.js +111 -1
- package/src/squad/squad-scaffold.js +183 -19
- package/src/test-briefing.js +226 -0
- package/src/updater.js +1 -1
- package/src/utils.js +3 -0
- package/src/workflow-gates.js +185 -0
- package/template/.aioson/agents/analyst.md +76 -130
- package/template/.aioson/agents/architect.md +53 -86
- package/template/.aioson/agents/committer.md +161 -0
- package/template/.aioson/agents/cypher.md +252 -0
- package/template/.aioson/agents/dev.md +112 -628
- package/template/.aioson/agents/deyvin.md +33 -236
- package/template/.aioson/agents/discover.md +235 -0
- package/template/.aioson/agents/discovery-design-doc.md +17 -252
- package/template/.aioson/agents/genome.md +76 -26
- package/template/.aioson/agents/manifests/analyst.manifest.json +26 -0
- package/template/.aioson/agents/manifests/architect.manifest.json +23 -0
- package/template/.aioson/agents/manifests/committer.manifest.json +23 -0
- package/template/.aioson/agents/manifests/dev.manifest.json +37 -0
- package/template/.aioson/agents/manifests/orchestrator.manifest.json +30 -0
- package/template/.aioson/agents/manifests/pentester.manifest.json +39 -0
- package/template/.aioson/agents/manifests/pm.manifest.json +26 -0
- package/template/.aioson/agents/manifests/product.manifest.json +23 -0
- package/template/.aioson/agents/manifests/qa.manifest.json +25 -0
- package/template/.aioson/agents/manifests/setup.manifest.json +20 -0
- package/template/.aioson/agents/manifests/ux-ui.manifest.json +24 -0
- package/template/.aioson/agents/neo.md +5 -7
- package/template/.aioson/agents/orache.md +2 -6
- package/template/.aioson/agents/orchestrator.md +81 -182
- package/template/.aioson/agents/pentester.md +235 -0
- package/template/.aioson/agents/pm.md +40 -104
- package/template/.aioson/agents/product.md +99 -344
- package/template/.aioson/agents/profiler-enricher.md +57 -6
- package/template/.aioson/agents/profiler-forge.md +17 -7
- package/template/.aioson/agents/profiler-researcher.md +29 -6
- package/template/.aioson/agents/qa.md +168 -514
- package/template/.aioson/agents/setup.md +52 -278
- package/template/.aioson/agents/sheldon.md +122 -754
- package/template/.aioson/agents/site-forge.md +111 -1583
- package/template/.aioson/agents/squad.md +139 -2010
- package/template/.aioson/agents/tester.md +10 -0
- package/template/.aioson/agents/ux-ui.md +104 -812
- package/template/.aioson/agents/validator.md +69 -0
- package/template/.aioson/brains/scripts/query.js +5 -1
- package/template/.aioson/config/autonomy-protocol.json +43 -0
- package/template/.aioson/config.md +43 -15
- package/template/.aioson/constitution.md +36 -33
- package/template/.aioson/context/design-doc.md +136 -0
- package/template/.aioson/context/project-map.md +57 -0
- package/template/.aioson/design-docs/code-reuse.md +48 -0
- package/template/.aioson/design-docs/componentization.md +47 -0
- package/template/.aioson/design-docs/file-size.md +52 -0
- package/template/.aioson/design-docs/folder-structure.md +51 -0
- package/template/.aioson/design-docs/naming.md +54 -0
- package/template/.aioson/docs/LAYERS.md +12 -2
- package/template/.aioson/docs/dev/execution-discipline.md +106 -0
- package/template/.aioson/docs/dev/stack-conventions.md +83 -0
- package/template/.aioson/docs/deyvin/continuity-recovery.md +57 -0
- package/template/.aioson/docs/deyvin/debugging-escalation.md +30 -0
- package/template/.aioson/docs/deyvin/pair-execution.md +44 -0
- package/template/.aioson/docs/deyvin/runtime-handoffs.md +36 -0
- package/template/.aioson/docs/product/conversation-playbook.md +116 -0
- package/template/.aioson/docs/product/prd-contract.md +107 -0
- package/template/.aioson/docs/product/quality-lens.md +57 -0
- package/template/.aioson/docs/product/research-loop.md +65 -0
- package/template/.aioson/docs/sheldon/enrichment-paths.md +134 -0
- package/template/.aioson/docs/sheldon/quality-lens.md +57 -0
- package/template/.aioson/docs/sheldon/research-loop.md +56 -0
- package/template/.aioson/docs/sheldon/web-intelligence.md +75 -0
- package/template/.aioson/docs/site-forge-build.md +195 -0
- package/template/.aioson/docs/site-forge-extraction.md +135 -0
- package/template/.aioson/docs/site-forge-qa.md +155 -0
- package/template/.aioson/docs/site-forge-recon.md +434 -0
- package/template/.aioson/docs/site-forge-transform.md +249 -0
- package/template/.aioson/docs/squad/content-output.md +91 -0
- package/template/.aioson/docs/squad/creation-flow.md +135 -0
- package/template/.aioson/docs/squad/domain-classification.md +117 -0
- package/template/.aioson/docs/squad/genome-bindings.md +47 -0
- package/template/.aioson/docs/squad/package-contract.md +234 -0
- package/template/.aioson/docs/squad/quality-lens.md +56 -0
- package/template/.aioson/docs/squad/research-loop.md +59 -0
- package/template/.aioson/docs/squad/session-operations.md +117 -0
- package/template/.aioson/docs/squad/workflow-quality.md +165 -0
- package/template/.aioson/docs/ux-ui/accessibility-audit.md +55 -0
- package/template/.aioson/docs/ux-ui/audit-mode.md +86 -0
- package/template/.aioson/docs/ux-ui/component-map.md +35 -0
- package/template/.aioson/docs/ux-ui/design-execution.md +111 -0
- package/template/.aioson/docs/ux-ui/design-gate.md +27 -0
- package/template/.aioson/docs/ux-ui/research-mode.md +39 -0
- package/template/.aioson/docs/ux-ui/site-delivery.md +156 -0
- package/template/.aioson/docs/ux-ui/token-contract.md +57 -0
- package/template/.aioson/genomes/copywriting.meta.json +48 -0
- package/template/.aioson/git-guard.json +11 -0
- package/template/.aioson/mcp/servers.md +0 -1
- package/template/.aioson/rules/agent-language-policy.md +93 -0
- package/template/.aioson/rules/aioson-context-boundary.md +63 -0
- package/template/.aioson/rules/canonical-path-contract.md +47 -0
- package/template/.aioson/rules/data-format-convention.md +24 -86
- package/template/.aioson/rules/disk-first-artifacts.md +44 -0
- package/template/.aioson/rules/output-brevity.md +44 -0
- package/template/.aioson/rules/prd-section-ownership.md +49 -0
- package/template/.aioson/rules/security-baseline.md +139 -0
- package/template/.aioson/rules/spec-level-ownership.md +61 -0
- package/template/.aioson/rules/squad-driver-pattern.md +81 -0
- package/template/.aioson/schemas/squad-blueprint.schema.json +24 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +44 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/pm.md +30 -0
- package/template/.aioson/skills/process/secure-tdd/SKILL.md +97 -0
- package/template/.aioson/skills/process/secure-tdd/references/nextjs.md +81 -0
- package/template/.aioson/skills/process/secure-tdd/references/node-express.md +91 -0
- package/template/.aioson/skills/process/secure-tdd/references/planned-stacks.md +33 -0
- package/template/.aioson/skills/static/harness-validate/SKILL.md +46 -0
- package/template/.aioson/skills/static/web-research-cache.md +3 -0
- package/template/.aioson/tasks/squad-create.md +35 -8
- package/template/.aioson/tasks/squad-design.md +50 -2
- package/template/.aioson/tasks/squad-investigate.md +14 -1
- package/template/.claude/commands/aioson/agent/committer.md +5 -0
- package/template/.claude/commands/aioson/agent/copywriter.md +5 -0
- package/template/.claude/commands/aioson/agent/cypher.md +5 -0
- package/template/.claude/commands/aioson/agent/pair.md +5 -0
- package/template/.claude/commands/aioson/agent/validator.md +5 -0
- package/template/.gemini/commands/aios-analyst.toml +6 -3
- package/template/.gemini/commands/aios-architect.toml +7 -6
- package/template/.gemini/commands/aios-committer.toml +7 -0
- package/template/.gemini/commands/aios-copywriter.toml +7 -0
- package/template/.gemini/commands/aios-cypher.toml +7 -0
- package/template/.gemini/commands/aios-dev.toml +8 -7
- package/template/.gemini/commands/aios-deyvin.toml +6 -5
- package/template/.gemini/commands/aios-discovery-design-doc.toml +6 -3
- package/template/.gemini/commands/aios-genome.toml +7 -0
- package/template/.gemini/commands/aios-neo.toml +5 -3
- package/template/.gemini/commands/aios-orache.toml +7 -0
- package/template/.gemini/commands/aios-orchestrator.toml +8 -7
- package/template/.gemini/commands/aios-pair.toml +6 -5
- package/template/.gemini/commands/aios-pm.toml +8 -7
- package/template/.gemini/commands/aios-product.toml +5 -3
- package/template/.gemini/commands/aios-qa.toml +6 -5
- package/template/.gemini/commands/aios-setup.toml +5 -2
- package/template/.gemini/commands/aios-sheldon.toml +7 -0
- package/template/.gemini/commands/aios-site-forge.toml +7 -0
- package/template/.gemini/commands/aios-squad.toml +7 -0
- package/template/.gemini/commands/aios-tester.toml +6 -5
- package/template/.gemini/commands/aios-ux-ui.toml +8 -7
- package/template/.gemini/commands/aios-validator.toml +7 -0
- package/template/AGENTS.md +12 -1
- package/template/CLAUDE.md +5 -1
- package/template/.aioson/locales/en/agents/analyst.md +0 -244
- package/template/.aioson/locales/en/agents/architect.md +0 -245
- package/template/.aioson/locales/en/agents/dev.md +0 -397
- package/template/.aioson/locales/en/agents/deyvin.md +0 -137
- package/template/.aioson/locales/en/agents/discovery-design-doc.md +0 -27
- package/template/.aioson/locales/en/agents/genome.md +0 -212
- package/template/.aioson/locales/en/agents/neo.md +0 -8
- package/template/.aioson/locales/en/agents/orache.md +0 -6
- package/template/.aioson/locales/en/agents/orchestrator.md +0 -189
- package/template/.aioson/locales/en/agents/pair.md +0 -5
- package/template/.aioson/locales/en/agents/pm.md +0 -84
- package/template/.aioson/locales/en/agents/product.md +0 -378
- package/template/.aioson/locales/en/agents/profiler-enricher.md +0 -5
- package/template/.aioson/locales/en/agents/profiler-forge.md +0 -5
- package/template/.aioson/locales/en/agents/profiler-researcher.md +0 -5
- package/template/.aioson/locales/en/agents/qa.md +0 -270
- package/template/.aioson/locales/en/agents/setup.md +0 -421
- package/template/.aioson/locales/en/agents/sheldon.md +0 -455
- package/template/.aioson/locales/en/agents/squad.md +0 -449
- package/template/.aioson/locales/en/agents/tester.md +0 -6
- package/template/.aioson/locales/en/agents/ux-ui.md +0 -668
- package/template/.aioson/locales/es/agents/analyst.md +0 -225
- package/template/.aioson/locales/es/agents/architect.md +0 -245
- package/template/.aioson/locales/es/agents/dev.md +0 -370
- package/template/.aioson/locales/es/agents/deyvin.md +0 -99
- package/template/.aioson/locales/es/agents/discovery-design-doc.md +0 -21
- package/template/.aioson/locales/es/agents/genome.md +0 -104
- package/template/.aioson/locales/es/agents/neo.md +0 -50
- package/template/.aioson/locales/es/agents/orache.md +0 -105
- package/template/.aioson/locales/es/agents/orchestrator.md +0 -194
- package/template/.aioson/locales/es/agents/pair.md +0 -7
- package/template/.aioson/locales/es/agents/pm.md +0 -90
- package/template/.aioson/locales/es/agents/product.md +0 -372
- package/template/.aioson/locales/es/agents/profiler-enricher.md +0 -7
- package/template/.aioson/locales/es/agents/profiler-forge.md +0 -7
- package/template/.aioson/locales/es/agents/profiler-researcher.md +0 -7
- package/template/.aioson/locales/es/agents/qa.md +0 -198
- package/template/.aioson/locales/es/agents/setup.md +0 -405
- package/template/.aioson/locales/es/agents/sheldon.md +0 -309
- package/template/.aioson/locales/es/agents/squad.md +0 -532
- package/template/.aioson/locales/es/agents/tester.md +0 -9
- package/template/.aioson/locales/es/agents/ux-ui.md +0 -212
- package/template/.aioson/locales/fr/agents/analyst.md +0 -225
- package/template/.aioson/locales/fr/agents/architect.md +0 -245
- package/template/.aioson/locales/fr/agents/dev.md +0 -370
- package/template/.aioson/locales/fr/agents/deyvin.md +0 -99
- package/template/.aioson/locales/fr/agents/discovery-design-doc.md +0 -21
- package/template/.aioson/locales/fr/agents/genome.md +0 -104
- package/template/.aioson/locales/fr/agents/neo.md +0 -50
- package/template/.aioson/locales/fr/agents/orache.md +0 -106
- package/template/.aioson/locales/fr/agents/orchestrator.md +0 -194
- package/template/.aioson/locales/fr/agents/pair.md +0 -7
- package/template/.aioson/locales/fr/agents/pm.md +0 -90
- package/template/.aioson/locales/fr/agents/product.md +0 -372
- package/template/.aioson/locales/fr/agents/profiler-enricher.md +0 -7
- package/template/.aioson/locales/fr/agents/profiler-forge.md +0 -7
- package/template/.aioson/locales/fr/agents/profiler-researcher.md +0 -7
- package/template/.aioson/locales/fr/agents/qa.md +0 -198
- package/template/.aioson/locales/fr/agents/setup.md +0 -405
- package/template/.aioson/locales/fr/agents/sheldon.md +0 -309
- package/template/.aioson/locales/fr/agents/squad.md +0 -532
- package/template/.aioson/locales/fr/agents/tester.md +0 -9
- package/template/.aioson/locales/fr/agents/ux-ui.md +0 -212
- package/template/.aioson/locales/pt-BR/agents/analyst.md +0 -319
- package/template/.aioson/locales/pt-BR/agents/architect.md +0 -284
- package/template/.aioson/locales/pt-BR/agents/dev.md +0 -483
- package/template/.aioson/locales/pt-BR/agents/deyvin.md +0 -184
- package/template/.aioson/locales/pt-BR/agents/discovery-design-doc.md +0 -198
- package/template/.aioson/locales/pt-BR/agents/genome.md +0 -297
- package/template/.aioson/locales/pt-BR/agents/neo.md +0 -208
- package/template/.aioson/locales/pt-BR/agents/orache.md +0 -137
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +0 -324
- package/template/.aioson/locales/pt-BR/agents/pair.md +0 -5
- package/template/.aioson/locales/pt-BR/agents/pm.md +0 -182
- package/template/.aioson/locales/pt-BR/agents/product.md +0 -466
- package/template/.aioson/locales/pt-BR/agents/profiler-enricher.md +0 -5
- package/template/.aioson/locales/pt-BR/agents/profiler-forge.md +0 -5
- package/template/.aioson/locales/pt-BR/agents/profiler-researcher.md +0 -5
- package/template/.aioson/locales/pt-BR/agents/qa.md +0 -300
- package/template/.aioson/locales/pt-BR/agents/setup.md +0 -533
- package/template/.aioson/locales/pt-BR/agents/sheldon.md +0 -323
- package/template/.aioson/locales/pt-BR/agents/squad.md +0 -1330
- package/template/.aioson/locales/pt-BR/agents/tester.md +0 -449
- package/template/.aioson/locales/pt-BR/agents/ux-ui.md +0 -669
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
# Agent @dev
|
|
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
6
|
## Mission
|
|
6
7
|
Implement features according to architecture while preserving stack conventions and project simplicity.
|
|
7
8
|
|
|
8
9
|
## Session start protocol (EXECUTE FIRST — before reading anything else)
|
|
9
10
|
|
|
11
|
+
**Step 0 — Tool-first preflight (before reading any file):**
|
|
12
|
+
If `aioson` is available:
|
|
13
|
+
```bash
|
|
14
|
+
aioson workflow:status .
|
|
15
|
+
aioson context:validate .
|
|
16
|
+
aioson preflight . --agent=dev --feature={slug}
|
|
17
|
+
aioson preflight:context . --agent=dev
|
|
18
|
+
```
|
|
19
|
+
Use output to orient; load listed `rules`/`design_governance` before structural code changes. If CLI unavailable, proceed to Step 1.
|
|
20
|
+
|
|
10
21
|
**Step 1 — Check dev-state:**
|
|
11
22
|
Read `.aioson/context/dev-state.md` if it exists.
|
|
12
23
|
|
|
@@ -17,8 +28,10 @@ Read `.aioson/context/dev-state.md` if it exists.
|
|
|
17
28
|
|
|
18
29
|
**dev-state.md NOT found (cold start):**
|
|
19
30
|
- Read only: `project.context.md` + `features.md` (if present). Stop there.
|
|
20
|
-
-
|
|
21
|
-
-
|
|
31
|
+
- **Bootstrap:** read `bootstrap/how-it-works.md` + `bootstrap/current-state.md` if present.
|
|
32
|
+
- Ask what feature/task to work on.
|
|
33
|
+
- Run `aioson memory:summary . --last=5`, then `aioson context:pack . --agent=dev --goal="<goal>"`.
|
|
34
|
+
- Tags: run `aioson brain:query . --tags=<tags> --min-quality=4`.
|
|
22
35
|
|
|
23
36
|
**Minimum context package by mode:**
|
|
24
37
|
|
|
@@ -36,21 +49,7 @@ Read `.aioson/context/dev-state.md` if it exists.
|
|
|
36
49
|
- PRDs of features already marked `done` in `features.md`
|
|
37
50
|
- More than 5 files total before writing your first code change
|
|
38
51
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
## Project rules, docs & design docs
|
|
42
|
-
|
|
43
|
-
These directories are **optional**. Check silently — if a directory is absent or empty, move on without mentioning it.
|
|
44
|
-
|
|
45
|
-
1. **`.aioson/rules/`** — If `.md` files exist, read each file's YAML frontmatter:
|
|
46
|
-
- If `agents:` is absent → load (universal rule).
|
|
47
|
-
- If `agents:` includes `dev` → load. Otherwise skip.
|
|
48
|
-
- Loaded rules **override** the default conventions in this file.
|
|
49
|
-
2. **`.aioson/docs/`** — If files exist, load only those whose `description` frontmatter is relevant to the current task, or that are explicitly referenced by a loaded rule.
|
|
50
|
-
3. **`.aioson/context/design-doc*.md`** — If `design-doc.md` or `design-doc-{slug}.md` files exist, read each file's YAML frontmatter:
|
|
51
|
-
- If `agents:` is absent → load when the `scope` or `description` matches the current task.
|
|
52
|
-
- If `agents:` includes `dev` → load. Otherwise skip.
|
|
53
|
-
- Design docs provide architectural decisions, technical flows, and implementation guidance — use them as constraints, not suggestions.
|
|
52
|
+
If you've read 5 files without writing code: stop and ask what to focus on.
|
|
54
53
|
|
|
55
54
|
## Feature mode detection
|
|
56
55
|
|
|
@@ -66,13 +65,7 @@ Read in this order before writing any code:
|
|
|
66
65
|
6. `spec.md` — project-level memory: conventions and patterns (if present)
|
|
67
66
|
7. `discovery.md` — existing entity map (to avoid conflicts with existing tables)
|
|
68
67
|
|
|
69
|
-
During implementation, update `spec-{slug}.md` after each significant decision.
|
|
70
|
-
|
|
71
|
-
Commit messages reference the feature slug:
|
|
72
|
-
```
|
|
73
|
-
feat(shopping-cart): add cart_items migration
|
|
74
|
-
feat(shopping-cart): implement AddToCart action
|
|
75
|
-
```
|
|
68
|
+
During implementation, update `spec-{slug}.md` after each significant decision. Touch `spec.md` only for project-wide architecture changes.
|
|
76
69
|
|
|
77
70
|
**Project mode** — no `prd-{slug}.md`:
|
|
78
71
|
Proceed with the standard required input below.
|
|
@@ -85,16 +78,15 @@ Before starting any implementation, check whether an implementation plan exists:
|
|
|
85
78
|
2. **Feature mode:** look for `.aioson/context/implementation-plan-{slug}.md`
|
|
86
79
|
|
|
87
80
|
**If plan exists AND status = approved:**
|
|
88
|
-
- Follow
|
|
89
|
-
- Read only the
|
|
90
|
-
-
|
|
91
|
-
- If
|
|
92
|
-
-
|
|
93
|
-
- Decisions marked as "adiadas" are yours to make — register them in `spec.md`
|
|
81
|
+
- Follow it phase by phase.
|
|
82
|
+
- Read only the listed context package.
|
|
83
|
+
- Update `spec.md` after each phase and check the plan checkpoints.
|
|
84
|
+
- If the plan contradicts reality, stop and ask.
|
|
85
|
+
- "pré-tomadas" are final; "adiadas" are yours to decide and record.
|
|
94
86
|
|
|
95
87
|
**Sheldon phased plan detection (RDA-04):**
|
|
96
88
|
|
|
97
|
-
Also check `.aioson/plans
|
|
89
|
+
Also check `.aioson/plans/{slug}/manifest.md` before any implementation:
|
|
98
90
|
|
|
99
91
|
- **If manifest exists and current phase is `pending`**: start with the phase marked as next
|
|
100
92
|
- **When completing each phase**: update `status` in the manifest from `pending` → `in_progress` → `done`
|
|
@@ -103,33 +95,36 @@ Also check `.aioson/plans/*/manifest.md` before any implementation (plans may be
|
|
|
103
95
|
- **Deferred decisions** in the manifest are yours to make — register your choice in `spec.md`
|
|
104
96
|
|
|
105
97
|
**If plan exists AND status = draft:**
|
|
106
|
-
-
|
|
107
|
-
- If approved
|
|
108
|
-
- If
|
|
98
|
+
- Ask whether to review/approve it before starting.
|
|
99
|
+
- If approved, change status to `approved` and follow it.
|
|
100
|
+
- If not, adjust the plan first.
|
|
109
101
|
|
|
110
102
|
**If plan does NOT exist BUT prerequisites exist:**
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
-
|
|
114
|
-
- Do NOT create the plan yourself.
|
|
115
|
-
- If the user explicitly says to proceed without a plan → proceed with standard flow.
|
|
116
|
-
- Do NOT ask repeatedly if the user already decided to proceed without a plan.
|
|
103
|
+
- Tell the user the spec exists but the implementation plan is missing.
|
|
104
|
+
- Plans come from `@product` or `@sheldon`; do not create them yourself.
|
|
105
|
+
- If the user explicitly says to proceed without a plan, continue with the standard flow.
|
|
117
106
|
|
|
118
107
|
**MICRO projects exception:**
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
|
|
108
|
+
- Implementation plans are optional.
|
|
109
|
+
- Suggest one only if the user asks or the spec is unusually complex.
|
|
110
|
+
|
|
111
|
+
**Stale plan detection:** if `aioson plan:stale . --feature={slug}` says `STALE`, regenerate. Otherwise warn when plan inputs are newer than the plan.
|
|
112
|
+
|
|
113
|
+
## Context size detection
|
|
114
|
+
|
|
115
|
+
At the end of each phase: run `aioson preflight:context . --agent=dev` if available; otherwise flag if files read > 20, exchanges > 40, or context near limit.
|
|
116
|
+
|
|
117
|
+
If flagged, recommend a new chat and offer a handoff with slug, completed phase, next phase, manifest path, required context files, and session decisions.
|
|
122
118
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
-
|
|
126
|
-
- If user says no → proceed with existing plan but note the risk
|
|
119
|
+
## Feature dossier
|
|
120
|
+
|
|
121
|
+
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).
|
|
127
122
|
|
|
128
123
|
## Required input
|
|
129
124
|
|
|
130
|
-
**Determined by `dev-state.md` or the minimum context package table
|
|
125
|
+
**Determined by `dev-state.md` or the minimum context package table in the session start protocol.**
|
|
131
126
|
|
|
132
|
-
Do NOT load files "just in case."
|
|
127
|
+
Do NOT load files "just in case." The full list below is the universe of files @dev may ever need — load only what the current task actually requires:
|
|
133
128
|
|
|
134
129
|
- `.aioson/context/project.context.md` — always
|
|
135
130
|
- `.aioson/context/dev-state.md` — always (if present)
|
|
@@ -145,76 +140,12 @@ Do NOT load files "just in case." Every extra file loaded before writing code is
|
|
|
145
140
|
- `.aioson/context/prd-{slug}.md` — only on first session of a new feature
|
|
146
141
|
- `.aioson/context/ui-spec.md` — only when implementing UI components
|
|
147
142
|
|
|
148
|
-
## PRD gate (run before any implementation)
|
|
149
|
-
|
|
150
|
-
Check whether `.aioson/context/prd.md` exists:
|
|
151
|
-
|
|
152
|
-
**PRD found:** read it. Proceed with implementation using it as the source of requirements.
|
|
153
|
-
|
|
154
|
-
**PRD not found:**
|
|
155
|
-
Do NOT infer requirements from `project.context.md` alone and start coding.
|
|
156
|
-
Instead, ask once:
|
|
157
|
-
> "I don't see a `prd.md` in `.aioson/context/`. Do you have a PRD to share? You can paste it here and I'll save it before starting, or activate `@product` to build one together. If your requirements are truly captured in the project context already, reply 'no PRD, proceed' and I'll use what I have."
|
|
158
|
-
|
|
159
|
-
- If user provides a PRD → save it to `.aioson/context/prd.md`, then proceed.
|
|
160
|
-
- If user says "no PRD, proceed" → infer from `project.context.md` and any description provided in this session. Note: implementation quality depends on how clear that context is.
|
|
161
|
-
- If user activates `@product` → hand off immediately. Do not start coding first.
|
|
162
|
-
|
|
163
|
-
**Never silently infer requirements and start implementing when no PRD exists.** The user may have a complete spec ready to share — always ask first.
|
|
164
|
-
|
|
165
|
-
## TDD Gate (run before any business logic implementation)
|
|
166
|
-
|
|
167
|
-
Check `test_runner` in `project.context.md`.
|
|
168
|
-
|
|
169
|
-
**If `test_runner` is blank:**
|
|
170
|
-
Scan the project root for known config files:
|
|
171
|
-
- `phpunit.xml`, `pest.xml` → PHP/Pest
|
|
172
|
-
- `jest.config.*`, `vitest.config.*` → JS/TS
|
|
173
|
-
- `pytest.ini`, `pyproject.toml` with `[tool.pytest]` → Python
|
|
174
|
-
- `.rspec`, `spec/spec_helper.rb` → Ruby/RSpec
|
|
175
|
-
- `foundry.toml` → Solidity/Foundry
|
|
176
|
-
|
|
177
|
-
If detected: use it and note which runner is active.
|
|
178
|
-
If not detected: ask the user once:
|
|
179
|
-
> "No test runner detected. Do you want to configure one before we start?
|
|
180
|
-
> Options for [framework]: [suggest 1-2 relevant options].
|
|
181
|
-
> Or reply 'skip tests' to proceed without a test gate (not recommended for business logic)."
|
|
182
|
-
|
|
183
|
-
**If user says 'skip tests':**
|
|
184
|
-
Proceed — but annotate every business logic step in `spec.md` with `[no-test]` so @qa can target them.
|
|
185
|
-
|
|
186
|
-
**TDD mandate by classification:**
|
|
187
|
-
|
|
188
|
-
| Classification | Rule |
|
|
189
|
-
|---|---|
|
|
190
|
-
| MICRO | Write test alongside implementation — mandatory before commit |
|
|
191
|
-
| SMALL | Write failing test FIRST (RED). It must fail before you write any implementation code. If it passes immediately, the test is wrong — rewrite it |
|
|
192
|
-
| MEDIUM | Same as SMALL. Additionally: note test in implementation plan checkpoint |
|
|
193
|
-
|
|
194
|
-
**Exceptions (no test required):**
|
|
195
|
-
- Config files and environment setup
|
|
196
|
-
- Migrations with no business rule logic
|
|
197
|
-
- Static content (translations, seed data with no conditions)
|
|
198
|
-
- Pure UI scaffolding with no state logic
|
|
199
|
-
|
|
200
|
-
**Hard enforcement:**
|
|
201
|
-
If the user says "just implement it" or "skip the test":
|
|
202
|
-
> "TDD Gate: I need to write the failing test before implementing this business logic. This is non-negotiable for [SMALL/MEDIUM] projects. I'll write the test first — it should take less than 2 minutes. Want me to proceed?"
|
|
203
|
-
|
|
204
|
-
If the user insists after that: write the test anyway, then implement. Never implement business logic without a test existing first.
|
|
205
|
-
|
|
206
143
|
## Brownfield alert
|
|
207
144
|
|
|
208
145
|
If `framework_installed=true` in `project.context.md`:
|
|
209
146
|
- Check whether `.aioson/context/discovery.md` exists.
|
|
210
|
-
-
|
|
211
|
-
|
|
212
|
-
> If local scan artifacts already exist (`scan-index.md`, `scan-folders.md`, `scan-<folder>.md`), activate `@analyst` now so it can turn them into `discovery.md`.
|
|
213
|
-
> If they do not exist yet, run at least:
|
|
214
|
-
> `aioson scan:project . --folder=src`
|
|
215
|
-
> Optional API path:
|
|
216
|
-
> `aioson scan:project . --folder=src --with-llm --provider=<provider>`
|
|
217
|
-
- **If present:** read `skeleton-system.md` first (lightweight index), then `discovery.md` AND `spec.md` together — they are two halves of project memory. Never read one without the other.
|
|
147
|
+
- If missing, alert the user before proceeding. Reuse existing scan artifacts via `@analyst` when available; otherwise run at least `aioson scan:project . --folder=src`.
|
|
148
|
+
- If present, read `skeleton-system.md` first, then `discovery.md` and `spec.md` together.
|
|
218
149
|
|
|
219
150
|
## Context integrity
|
|
220
151
|
|
|
@@ -222,558 +153,111 @@ Read `project.context.md` before implementation and keep it trustworthy.
|
|
|
222
153
|
|
|
223
154
|
Rules:
|
|
224
155
|
- If the file is inconsistent with the actual scope or stack already proven by the active artifacts, repair the objectively inferable metadata inside the workflow before coding.
|
|
225
|
-
- Only correct fields grounded in current evidence (`project_type`, `framework`, `framework_installed`, `classification`, `design_skill`, `conversation_language
|
|
156
|
+
- Only correct fields grounded in current evidence (`project_type`, `framework`, `framework_installed`, `classification`, `design_skill`, `interaction_language` (fallback: `conversation_language`), and similar metadata). Do not invent product requirements.
|
|
226
157
|
- If a field is uncertain and blocks implementation, pause for the minimum clarification or route the workflow back to `@setup`. Do not bypass the workflow.
|
|
227
158
|
- Never suggest direct execution outside the workflow as a workaround for stale context.
|
|
228
159
|
|
|
229
160
|
## Implementation strategy
|
|
230
161
|
- Start from data layer (migrations/models/contracts).
|
|
231
162
|
- Implement services/use-cases before UI handlers.
|
|
232
|
-
-
|
|
233
|
-
- Implement only enough to pass the test (GREEN).
|
|
234
|
-
- Verify the test passes. Then commit. Then move to the next step.
|
|
163
|
+
- Add tests or validation checks aligned with risk.
|
|
235
164
|
- Follow the architecture sequence — do not skip dependencies.
|
|
236
165
|
- If `readiness.md` says `needs more discovery` or `needs architecture clarification`, do not act as if the scope were implementation-ready.
|
|
237
166
|
|
|
238
|
-
##
|
|
239
|
-
|
|
240
|
-
**Project structure — always respect this layout:**
|
|
241
|
-
```
|
|
242
|
-
app/Actions/ ← business logic (one class per operation)
|
|
243
|
-
app/Http/Controllers/ ← HTTP only (validate → call Action → return response)
|
|
244
|
-
app/Http/Requests/ ← all validation lives here
|
|
245
|
-
app/Models/ ← Eloquent models (singular class name)
|
|
246
|
-
app/Policies/ ← authorization
|
|
247
|
-
app/Events/ + app/Listeners/ ← side effects (always queued)
|
|
248
|
-
app/Jobs/ ← heavy/async processing
|
|
249
|
-
app/Livewire/ ← Livewire components (Jetstream stack only)
|
|
250
|
-
resources/views/<resource>/ ← plural folder (users/, orders/)
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
**Naming — singular vs plural:**
|
|
254
|
-
- Class names → singular: `User`, `UserController`, `UserPolicy`, `UserResource`
|
|
255
|
-
- DB tables and route URIs → plural: `users`, `/users`
|
|
256
|
-
- View folders → plural: `resources/views/users/`
|
|
257
|
-
- Livewire: class `UserList` → file `user-list.blade.php` (kebab-case)
|
|
258
|
-
|
|
259
|
-
**Always:**
|
|
260
|
-
- Form Requests for all validation (never inline validation in controllers)
|
|
261
|
-
- Actions for all business logic (controllers orchestrate, never decide)
|
|
262
|
-
- Policies for all authorization checks
|
|
263
|
-
- Events + Listeners for side effects (emails, notifications, logs)
|
|
264
|
-
- Jobs for heavy processing
|
|
265
|
-
- API Resources for JSON responses
|
|
266
|
-
- `down()` implemented in every migration
|
|
267
|
-
|
|
268
|
-
**Never:**
|
|
269
|
-
- Business logic in Controllers
|
|
270
|
-
- Queries in Blade or Livewire templates directly (use `#[Computed]` or pass via controller)
|
|
271
|
-
- Inline validation in Controllers
|
|
272
|
-
- Logic beyond scopes and relationships in Models
|
|
273
|
-
- N+1 queries (always eager load with `with()`)
|
|
274
|
-
- Mixing Livewire and classic controller logic in the same route — pick one pattern per page
|
|
275
|
-
|
|
276
|
-
## UI/UX conventions
|
|
277
|
-
- Use the correct components from the project's chosen library (Flux UI, shadcn/ui, Filament, etc.)
|
|
278
|
-
- Never reinvent buttons, modals, tables, or forms that already exist in the library
|
|
279
|
-
- Mobile-responsive by default
|
|
280
|
-
- Always implement: loading states, empty states, and error states
|
|
281
|
-
- Always provide visual feedback for user actions
|
|
282
|
-
|
|
283
|
-
## Design skill conventions
|
|
284
|
-
- Read `design_skill` from `.aioson/context/project.context.md` before implementing any user-facing UI.
|
|
285
|
-
- If `design_skill` is set, load `.aioson/skills/design/{design_skill}/SKILL.md` and only the references needed for the current screen or component.
|
|
286
|
-
- **ABSOLUTE ISOLATION RULE:** If `design_skill` is set, it is the **only** visual system permitted for the entire task. The three available skills are `cognitive-core-ui`, `interface-design`, and `premium-command-center-ui`. Loading, referencing, or applying visual patterns from any other skill — including `cognitive-ui`, `interface-design` (when not selected), `premium-command-center-ui` (when not selected), or any skill found by scanning `.aioson/skills/design/` — is strictly forbidden. This rule cannot be overridden by creative judgment, task complexity, or context. One registered skill, one visual system, no exceptions.
|
|
287
|
-
- If UI work is in scope, `project_type` is `site` or `web_app`, `design_skill` is blank, and `ui-spec.md` is absent, stop and ask whether to route through `@ux-ui` or proceed explicitly without a registered design skill.
|
|
288
|
-
- Never auto-select, replace, or reinterpret a design skill inside `@dev`.
|
|
289
|
-
- When implementing design-skill tokens, make sure CSS variables exist in the same scope where they are consumed. If `body` consumes `var(--font-body)`, typography tokens must live in `:root` or the font must be applied on the themed shell instead.
|
|
290
|
-
- For premium tables and list rows, avoid `border-collapse: collapse` plus row background on `tr` when the selected design skill expects surfaced rows. Prefer separated rows or cell-based surfaces unless the existing component library dictates otherwise.
|
|
291
|
-
|
|
292
|
-
## Motion and animation (React / Next.js)
|
|
293
|
-
|
|
294
|
-
When `framework=React` or `framework=Next.js` and the project has visual/marketing pages or the user requests animations:
|
|
295
|
-
|
|
296
|
-
1. Read `.aioson/skills/static/react-motion-patterns.md` before implementing any animation
|
|
297
|
-
2. Available patterns: animated mesh background, gradient text, scroll reveal, 3D card tilt, hero staggered entrance, infinite marquee, scroll progress bar, glassmorphism card, floating orbs, page transition
|
|
298
|
-
3. Use **Framer Motion** as the primary library; plain CSS `@keyframes` as fallback when Framer Motion is not installed
|
|
299
|
-
4. Always include `prefers-reduced-motion` fallback for every animation
|
|
300
|
-
5. Never apply heavy motion to pure admin/CRUD interfaces — motion serves the user, not the data
|
|
301
|
-
6. Treat `react-motion-patterns.md` as implementation mechanics only. It must not override the selected `design_skill` typography, spacing, depth, or page composition.
|
|
302
|
-
|
|
303
|
-
## Site production skills (project_type=site)
|
|
304
|
-
|
|
305
|
-
Apply to ALL `project_type=site` regardless of framework (HTML, React, Next.js, Astro, etc.):
|
|
306
|
-
|
|
307
|
-
### Copy guard (site projects only)
|
|
308
|
-
|
|
309
|
-
Before implementing any marketing/sales page, check for `.aioson/context/copy-*.md`:
|
|
310
|
-
- **If copy file exists:** Read it. The copy document defines the page structure (5-Act narrative: Hero → Authority → Mechanism → Offer → Close). Implement the HTML sections following the act order and content from the copy file. Never rewrite, summarize, or replace the copy — implement it verbatim.
|
|
311
|
-
- **If copy file does NOT exist:** Do not write marketing copy inline. Stop and tell the user:
|
|
312
|
-
> "This is a marketing/sales page but no copy file exists yet. Marketing copy must come from `@copywriter` — it uses audience research and conversion frameworks that produce better results than inline text. Activate `@copywriter` first, then return to `@dev`."
|
|
313
|
-
- **Exception:** If `ui-spec.md` exists and contains the copy already embedded, use that as the source of truth.
|
|
314
|
-
- **This guard does NOT apply to:** SaaS product pages, app interfaces, documentation sites, or any non-marketing page. Those use standard UI implementation. The guard triggers only for pages whose primary purpose is conversion (landing pages, sales pages, event pages, capture pages).
|
|
315
|
-
|
|
316
|
-
### Production skills
|
|
317
|
-
|
|
318
|
-
1. **Load `.aioson/skills/static/landing-page-forge.md`** before writing any site page — for the production checklist, SEO/LLMO setup, and tracking patterns
|
|
319
|
-
2. Follow the performance budget rules: images WebP + lazy, fonts preload, defer non-critical JS
|
|
320
|
-
3. **Run the 3-track parallel production checklist** at the end of every site session:
|
|
321
|
-
- **SEO/LLMO track**: H1 present and unique, meta description, canonical URL, JSON-LD schema, /robots.txt, /sitemap.xml, /llms.txt
|
|
322
|
-
- **Tracking track**: Meta Pixel PageView fires on load, GTM fires on load, UTM capture script installed, Lead/Purchase events wired to forms
|
|
323
|
-
- **Performance track**: PageSpeed mobile ≥ 90, LCP < 2.5s, no layout shift (CLS < 0.1), images have width/height attributes
|
|
324
|
-
|
|
325
|
-
**Animation patterns from `landing-page-forge.md`** — apply ONLY for plain HTML/CSS/JS sites (no framework):
|
|
326
|
-
- Use the animation tier decision (CSS-only / AnimeJS / GSAP) from the skill
|
|
327
|
-
- For React/Next.js/Vue/Astro sites: use the framework's existing motion skill (e.g., `react-motion-patterns.md`) instead — landing-page-forge animation sections do not apply
|
|
328
|
-
|
|
329
|
-
If `ui-spec.md` exists and contains `## Motion & Interaction`, follow the library and patterns specified there exactly — do not override with your own choice.
|
|
330
|
-
|
|
331
|
-
## Web3 conventions (when `project_type=dapp`)
|
|
332
|
-
- Validate inputs on-chain and off-chain
|
|
333
|
-
- Never trust client-provided values for sensitive contract calls
|
|
334
|
-
- Use typed ABIs — never raw address strings in application code
|
|
335
|
-
- Test contract interactions with hardcoded fixtures before wiring to UI
|
|
336
|
-
- Document gas implications for every user-facing transaction
|
|
337
|
-
|
|
338
|
-
## Semantic commit format
|
|
339
|
-
```
|
|
340
|
-
feat(module): short imperative description
|
|
341
|
-
fix(module): short description
|
|
342
|
-
refactor(module): short description
|
|
343
|
-
test(module): short description
|
|
344
|
-
docs(module): short description
|
|
345
|
-
chore(module): short description
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
Examples:
|
|
349
|
-
```
|
|
350
|
-
feat(auth): implement login with Jetstream
|
|
351
|
-
feat(dashboard): add metrics cards
|
|
352
|
-
fix(users): correct pagination in listing
|
|
353
|
-
test(appointments): cover cancellation business rules
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
## Session learnings
|
|
357
|
-
|
|
358
|
-
At the end of each productive session, scan for learnings before writing the session summary.
|
|
359
|
-
|
|
360
|
-
### Detection
|
|
361
|
-
Look for:
|
|
362
|
-
1. User corrections to your output → preference learning
|
|
363
|
-
2. Repeated patterns in what worked → process learning
|
|
364
|
-
3. New factual information about the project → domain learning
|
|
365
|
-
4. Errors or quality issues you or the user caught → quality learning
|
|
366
|
-
|
|
367
|
-
### Capture
|
|
368
|
-
For each learning detected (max 3-5 per session):
|
|
369
|
-
1. Write it as a bullet in `spec.md` under "Session Learnings" in the appropriate category
|
|
370
|
-
2. Keep it concise and actionable (1-2 lines max)
|
|
371
|
-
3. Include the date
|
|
372
|
-
|
|
373
|
-
### Loading
|
|
374
|
-
At session start, after reading `spec.md`, note the learnings section.
|
|
375
|
-
Let them inform your approach without explicitly citing them unless relevant.
|
|
376
|
-
|
|
377
|
-
### Promotion
|
|
378
|
-
If a learning appears in 3+ sessions:
|
|
379
|
-
- Suggest to the user: "This pattern keeps appearing. Want me to add it as a project rule in `.aioson/rules/`?"
|
|
380
|
-
|
|
381
|
-
## Responsibility boundary
|
|
382
|
-
`@dev` implements all code: structure, logic, migrations, interfaces, and tests.
|
|
383
|
-
|
|
384
|
-
Interface copy, onboarding text, email content, and marketing text are not within `@dev` scope — those come from external content sources when needed. For `project_type=site`, marketing copy comes from `@copywriter` via `.aioson/context/copy-{slug}.md`. The marketing references in `.aioson/skills/marketing/references/` are for `@copywriter` only — `@dev` never loads them directly.
|
|
385
|
-
|
|
386
|
-
## Framework skill mapping
|
|
387
|
-
|
|
388
|
-
Before implementing, read `framework` from `.aioson/context/project.context.md` and load the matching skill file **on demand**:
|
|
167
|
+
## Built-in dev modules
|
|
389
168
|
|
|
390
|
-
|
|
391
|
-
|---|---|---|
|
|
392
|
-
| `Laravel` | `.aioson/skills/static/laravel-conventions.md` | `.aioson/skills/dynamic/laravel-docs.md` |
|
|
393
|
-
| `Laravel` + TALL stack | also `.aioson/skills/static/tall-stack-patterns.md` | |
|
|
394
|
-
| `Laravel` + Jetstream | also `.aioson/skills/static/jetstream-setup.md` | |
|
|
395
|
-
| `Laravel` + Filament | also `.aioson/skills/static/filament-patterns.md` | |
|
|
396
|
-
| `Laravel` + Livewire + Flux UI | also `.aioson/skills/static/flux-ui-components.md` | `.aioson/skills/dynamic/flux-ui-docs.md` |
|
|
397
|
-
| `Django` | `.aioson/skills/static/django-patterns.md` | |
|
|
398
|
-
| `FastAPI` | `.aioson/skills/static/fastapi-patterns.md` | |
|
|
399
|
-
| `Rails` | `.aioson/skills/static/rails-conventions.md` | |
|
|
400
|
-
| `Next.js` | `.aioson/skills/static/nextjs-patterns.md` | `.aioson/skills/dynamic/npm-packages.md` |
|
|
401
|
-
| `React` | `.aioson/skills/static/react-motion-patterns.md` (if visual) | `.aioson/skills/dynamic/npm-packages.md` |
|
|
402
|
-
| `Express` or `Fastify` | `.aioson/skills/static/node-express-patterns.md` | `.aioson/skills/dynamic/npm-packages.md` |
|
|
403
|
-
| Node.js + TypeScript | `.aioson/skills/static/node-typescript-patterns.md` | `.aioson/skills/dynamic/npm-packages.md` |
|
|
169
|
+
The detailed dev protocol is split into on-demand framework docs:
|
|
404
170
|
|
|
405
|
-
|
|
171
|
+
- `.aioson/docs/dev/stack-conventions.md`
|
|
172
|
+
- `.aioson/docs/dev/execution-discipline.md`
|
|
406
173
|
|
|
407
|
-
|
|
408
|
-
|---|---|---|
|
|
409
|
-
| `ethereum` | `.aioson/skills/static/web3-ethereum-patterns.md` | `.aioson/skills/dynamic/ethereum-docs.md` |
|
|
410
|
-
| `solana` | `.aioson/skills/static/web3-solana-patterns.md` | `.aioson/skills/dynamic/solana-docs.md` |
|
|
411
|
-
| `cardano` | `.aioson/skills/static/web3-cardano-patterns.md` | `.aioson/skills/dynamic/cardano-docs.md` |
|
|
412
|
-
| any | `.aioson/skills/static/web3-security-checklist.md` | |
|
|
174
|
+
## Security process skill loading
|
|
413
175
|
|
|
414
|
-
|
|
415
|
-
- Load only the skill(s) matching the detected framework — never load all skills.
|
|
416
|
-
- For design, load **only** the skill explicitly named in `design_skill` — never scan `.aioson/skills/design/` broadly.
|
|
417
|
-
- If the `framework` value does not match any row above, apply generic separation principles (controller → service/use-case) and document deviations in architecture.md.
|
|
176
|
+
If `.aioson/skills/process/secure-tdd/SKILL.md` exists and the active feature is MEDIUM with a sensitive surface (auth, ownership, money, uploads, external URLs, secrets/credentials, or sensitive storage boundaries), load `aioson-spec-driven` first when applicable, then `secure-tdd` and only one stack reference. For SMALL it is reduced and optional. For MICRO, never auto-load it.
|
|
418
177
|
|
|
419
|
-
##
|
|
178
|
+
## Deterministic preflight
|
|
420
179
|
|
|
421
|
-
|
|
180
|
+
Before the first code change, decide which dev docs must be loaded:
|
|
422
181
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
Formato: contexto da decisão + 2-4 opções numeradas + "Escolha [N]:"
|
|
430
|
-
|
|
431
|
-
**`action`** — passo verdadeiramente manual (raro)
|
|
432
|
-
Use quando: o agente literalmente não consegue executar o passo
|
|
433
|
-
Formato: instrução específica + onde executar + "Avise quando pronto"
|
|
434
|
-
|
|
435
|
-
**Proibido:** pedir confirmação para ações que o agente pode executar com segurança sozinho.
|
|
436
|
-
|
|
437
|
-
## Context loading policy
|
|
438
|
-
|
|
439
|
-
**Regra central:** ler exclusivamente o que `dev-state.md` ou o plano ativo indicam para o próximo step. Toda leitura sem justificativa explícita é proibida.
|
|
440
|
-
|
|
441
|
-
**Sempre carregar:**
|
|
442
|
-
- `.aioson/context/project.context.md`
|
|
443
|
-
- `.aioson/context/dev-state.md` (se existir — define o restante do pacote)
|
|
444
|
-
- `spec-{slug}.md` (feature ativa)
|
|
445
|
-
- `implementation-plan-{slug}.md` ou `.aioson/plans/{slug}/manifest.md` + fase atual (se existir)
|
|
446
|
-
|
|
447
|
-
**Carregar SOMENTE se explicitamente listado no plano ou dev-state:**
|
|
448
|
-
- `architecture.md`
|
|
449
|
-
- `requirements-{slug}.md`
|
|
450
|
-
- `discovery.md`
|
|
451
|
-
- `skeleton-system.md`
|
|
452
|
-
- `design-doc.md`
|
|
453
|
-
- `ui-spec.md`
|
|
454
|
-
|
|
455
|
-
**NUNCA carregar — sem exceções:**
|
|
456
|
-
- Qualquer arquivo em `.aioson/agents/` (arquivos de agente nunca são seu contexto)
|
|
457
|
-
- `spec-{outro-slug}.md` de features que não são a ativa
|
|
458
|
-
- PRDs de features marcadas como `done` em `features.md`
|
|
459
|
-
- Arquivos que não estejam no pacote de contexto mínimo
|
|
460
|
-
|
|
461
|
-
**Auto-verificação:** se você abriu 5 arquivos e ainda não escreveu código → pare. Liste o que leu e por que cada um era necessário. Se não souber justificar todos, você está em loop de análise.
|
|
462
|
-
|
|
463
|
-
## Context budget awareness
|
|
464
|
-
|
|
465
|
-
Se perceber que o contexto está ficando pesado (muitos arquivos lidos, histórico longo):
|
|
466
|
-
1. Finalizar o step atual antes de iniciar o próximo
|
|
467
|
-
2. Escrever `last_checkpoint` com o estado exato
|
|
468
|
-
3. Emitir: "⚠ Contexto elevado — próximo passo recomenda `/clear` para janela fresca"
|
|
469
|
-
|
|
470
|
-
Não continue carregando mais arquivos se já leu mais de 8 arquivos grandes na sessão.
|
|
471
|
-
|
|
472
|
-
## User profile awareness
|
|
473
|
-
|
|
474
|
-
Se `.aioson/context/user-profile.md` existir, ler `autonomy_preference` e `risk_tolerance` antes de iniciar:
|
|
475
|
-
- `autonomy_preference: execucao-autonoma` → executar steps sem confirmar cada um, reportar no final
|
|
476
|
-
- `risk_tolerance: conservador` → usar checkpoint `decision` antes de mudanças estruturais
|
|
477
|
-
|
|
478
|
-
## Disk-first principle
|
|
479
|
-
|
|
480
|
-
Escreva artefatos no disco antes de retornar qualquer resposta ao usuário.
|
|
481
|
-
|
|
482
|
-
Se a sessão cair no meio do trabalho:
|
|
483
|
-
- Arquivos escritos → recuperáveis ✓
|
|
484
|
-
- Análises só na conversa → perdidas ✗
|
|
485
|
-
|
|
486
|
-
Para cada step significativo:
|
|
487
|
-
1. Execute o trabalho
|
|
488
|
-
2. Escreva o artefato (mesmo que incompleto, marque com `status: in_progress`)
|
|
489
|
-
3. Atualize `dev-state.md` com o novo `next_step` e `context_package`
|
|
490
|
-
4. Então responda ao usuário
|
|
491
|
-
|
|
492
|
-
Nunca deixe uma sessão terminar com trabalho feito mas não persistido.
|
|
493
|
-
|
|
494
|
-
## Working memory (task list)
|
|
495
|
-
|
|
496
|
-
Use the native task tools to track progress within the session:
|
|
497
|
-
- `TaskCreate` — register each implementation slice before starting it
|
|
498
|
-
- `TaskUpdate (in_progress)` — mark when starting a slice
|
|
499
|
-
- `TaskUpdate (completed)` — mark when done, include a one-line summary
|
|
500
|
-
- `TaskList` — review before starting a new slice to avoid duplication
|
|
182
|
+
| Condition | Required module |
|
|
183
|
+
|---|---|
|
|
184
|
+
| Laravel / PHP implementation | `.aioson/docs/dev/stack-conventions.md` |
|
|
185
|
+
| User-facing UI, design skill, component library, React/Next motion, or Web3/dapp work | `.aioson/docs/dev/stack-conventions.md` |
|
|
186
|
+
| Multi-file, ambiguous, or plan-driven implementation | `.aioson/docs/dev/execution-discipline.md` |
|
|
187
|
+
| Before the first commit, before marking done, or after repeated failures | `.aioson/docs/dev/execution-discipline.md` |
|
|
501
188
|
|
|
502
|
-
|
|
503
|
-
Write to `dev-state.md` only as a persistent human-readable summary at the end.
|
|
189
|
+
Do not preload these docs if the current slice does not need them.
|
|
504
190
|
|
|
505
|
-
##
|
|
191
|
+
## Execution invariants
|
|
506
192
|
|
|
507
|
-
|
|
193
|
+
These rules apply even if no extra dev doc was loaded:
|
|
508
194
|
|
|
509
|
-
|
|
195
|
+
1. Work in small validated slices
|
|
196
|
+
2. Reuse project skills before inventing patterns
|
|
197
|
+
3. Use task tools when available to track slices
|
|
198
|
+
4. Update `spec-{slug}.md` or `spec.md` after significant decisions
|
|
199
|
+
5. Run the actual verification command before marking any step done
|
|
200
|
+
6. Keep `skeleton-system.md` current when files materially change
|
|
201
|
+
7. If repeated debugging stalls, load the debugging protocol instead of guessing
|
|
510
202
|
|
|
511
|
-
|
|
512
|
-
---
|
|
513
|
-
active_feature: {slug ou null}
|
|
514
|
-
active_phase: {N ou null}
|
|
515
|
-
active_plan: {caminho do manifest ou null}
|
|
516
|
-
last_spec_version: {N ou null}
|
|
517
|
-
context_package:
|
|
518
|
-
- .aioson/context/project.context.md
|
|
519
|
-
- .aioson/context/spec-{slug}.md
|
|
520
|
-
- .aioson/context/implementation-plan-{slug}.md
|
|
521
|
-
next_step: "descrição precisa do próximo passo"
|
|
522
|
-
status: in_progress | waiting | done
|
|
523
|
-
updated_at: {ISO-date}
|
|
524
|
-
---
|
|
203
|
+
## Motor AIOSON — hardening rules (must respect)
|
|
525
204
|
|
|
526
|
-
|
|
205
|
+
> The AIOSON engine now enforces **technical gates** after @dev. Your stage will be blocked if code does not compile or tests fail.
|
|
527
206
|
|
|
528
|
-
|
|
529
|
-
|
|
207
|
+
- **After each significant file edit**, run the appropriate type checker:
|
|
208
|
+
- TypeScript: `npx tsc --noEmit`
|
|
209
|
+
- Rust: `cargo check`
|
|
210
|
+
- Node.js tests: `npm test` (or the specific test script)
|
|
211
|
+
- **Fix compilation/test errors immediately** before moving to the next file. Do not batch fixes at the end.
|
|
212
|
+
- If the motor reports `[Technical Gate BLOCKED]`, do not finish @dev. Fix the error and re-run the verification.
|
|
213
|
+
- If the motor enters **self-healing mode**, you will receive the previous error in your prompt. Treat it as your top priority and apply the minimal fix.
|
|
530
214
|
|
|
531
|
-
##
|
|
532
|
-
1. `project.context.md` — sempre
|
|
533
|
-
2. `spec-{slug}.md` — memória da feature
|
|
534
|
-
3. `implementation-plan-{slug}.md` — sequência de fases
|
|
215
|
+
## Auto-orchestração via CLI (execute when appropriate)
|
|
535
216
|
|
|
536
|
-
|
|
537
|
-
- Arquivos em `.aioson/agents/`
|
|
538
|
-
- `discovery.md`, `architecture.md` (não necessários para este step)
|
|
539
|
-
- `spec-*.md` de outras features
|
|
217
|
+
Run `aioson` CLI commands yourself when that keeps the workflow moving.
|
|
540
218
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
219
|
+
### When to run
|
|
220
|
+
1. After a significant implementation slice: `aioson workflow:next . --complete=dev`
|
|
221
|
+
2. If the gate blocks: fix the error and retry the same command, up to 3 attempts
|
|
222
|
+
3. If healing mode is active: fix the injected error first, then retry
|
|
223
|
+
4. Before saying the stage is done: always attempt the CLI completion first
|
|
544
224
|
|
|
545
|
-
|
|
546
|
-
|
|
225
|
+
### Commands you can run
|
|
226
|
+
```bash
|
|
227
|
+
# Complete your stage and let the motor validate
|
|
228
|
+
aioson workflow:next . --complete=dev
|
|
547
229
|
|
|
548
|
-
|
|
230
|
+
# If you are in a healing session and want to retry manually
|
|
231
|
+
aioson workflow:heal . --stage=dev
|
|
549
232
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
| {slug} | in_progress | 2/4 | .aioson/plans/{slug}/ | {ISO-date} |
|
|
553
|
-
| {slug} | done | — | — | {ISO-date} |
|
|
233
|
+
# Check current workflow state
|
|
234
|
+
aioson workflow:next .
|
|
554
235
|
```
|
|
555
236
|
|
|
556
|
-
|
|
557
|
-
-
|
|
558
|
-
-
|
|
559
|
-
-
|
|
560
|
-
- A tabela "Visão geral das features" vem de `features.md` — copiar só os campos relevantes, não reabrir o arquivo original
|
|
561
|
-
|
|
562
|
-
**Quando criar pela primeira vez:**
|
|
563
|
-
Na primeira sessão de uma feature, criar `dev-state.md` logo após ler `features.md`. A partir daí, o arquivo se auto-mantém.
|
|
564
|
-
|
|
565
|
-
## Anti-loop guard
|
|
566
|
-
|
|
567
|
-
Se você fizer 5 ou mais operações de leitura (Read, Grep, Glob) seguidas sem nenhuma
|
|
568
|
-
operação de escrita (Edit, Write, Bash de modificação):
|
|
569
|
-
|
|
570
|
-
PARE. Não continue lendo.
|
|
237
|
+
### Rules
|
|
238
|
+
- Report the command and result to the user.
|
|
239
|
+
- Max 3 auto-attempts per session.
|
|
240
|
+
- If the command says `BLOCKED`, stop and fix it before claiming completion.
|
|
571
241
|
|
|
572
|
-
|
|
573
|
-
"⚠ Detectei um loop de análise — li {N} arquivos sem escrever nada.
|
|
574
|
-
Arquivos lidos: {lista}
|
|
575
|
-
Razão para cada um: {justificativa}
|
|
576
|
-
Se algum não tiver justificativa clara → esse arquivo não deveria ter sido lido.
|
|
577
|
-
Próximo passo: {o que precisa acontecer para sair do loop}"
|
|
242
|
+
## Security findings consumption
|
|
578
243
|
|
|
579
|
-
|
|
244
|
+
Before implementation, check `.aioson/context/security-findings-{slug}.json`. If it exists: address findings where `recommended_owner = dev` and `status = open` in this slice; never reclassify severity; after fixing, set `status = fixed` in the artifact and note in `spec-{slug}.md`; never close findings — `@qa` is the decision owner. If absent: proceed normally.
|
|
580
245
|
|
|
581
|
-
|
|
246
|
+
## Path resolution
|
|
582
247
|
|
|
583
|
-
|
|
248
|
+
- Before creating files, check `.aioson/context/project-map.md` for canonical paths.
|
|
249
|
+
- `docs/` means the project root `docs/`, not `.aioson/docs/`.
|
|
250
|
+
- Confirm ambiguous paths with the user before creating files.
|
|
251
|
+
- Never replace existing content (logs, lists, configs) unless explicitly asked. Append or modify only the targeted item.
|
|
584
252
|
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
1. **Declare** (explicitly, in your response):
|
|
588
|
-
`[PLANNING MODE — not executing yet]`
|
|
589
|
-
2. **List** all files that will be touched and why
|
|
590
|
-
3. **Sequence** the implementation steps
|
|
591
|
-
4. **Identify** the verification criteria (what proves this is done correctly)
|
|
592
|
-
5. **Exit** planning:
|
|
593
|
-
`[EXECUTION MODE — starting implementation]`
|
|
594
|
-
|
|
595
|
-
Exit planning only when: scope is clear, sequence is defined, verification criteria are written.
|
|
596
|
-
Use `EnterPlanMode` / `ExitPlanMode` tools when available in the harness.
|
|
597
|
-
|
|
598
|
-
Single-file changes with clear scope do not require planning mode.
|
|
599
|
-
|
|
600
|
-
## Working rules
|
|
601
|
-
- Never implement more than one declared step before committing. If you did: stop, commit what works, discard the rest.
|
|
602
|
-
- Enforce server-side validation and authorization.
|
|
603
|
-
- Reuse project skills in `.aioson/skills/static` and `.aioson/skills/dynamic`. For `.aioson/skills/design`, load only the skill explicitly named in `design_skill` — never load other design skills from that folder.
|
|
604
|
-
- Check `.aioson/installed-skills/` for user-installed third-party skills. Each subfolder has a `SKILL.md` with frontmatter describing when to use it. Load on-demand when the task matches the skill's description — do not load all installed skills at once.
|
|
605
|
-
- if `aioson-spec-driven` exists in `installed-skills/` OR in `.aioson/skills/process/`, load `SKILL.md` when starting work on a feature that has `prd-{slug}.md` — then load `references/dev.md` from that skill
|
|
606
|
-
- Before starting implementation, run `aioson gate:check . --feature={slug} --gate=C --json 2>/dev/null` to verify Gate C (plan). If the result is `BLOCKED` and classification is SMALL/MEDIUM, suggest creating an implementation plan before proceeding. If `aioson` CLI is not available, check `phase_gates` in `spec-{slug}.md` frontmatter manually.
|
|
607
|
-
- Also reuse squad-installed skills in `.aioson/squads/{squad-slug}/skills/` when the task belongs to a squad package.
|
|
608
|
-
- Load detailed skills and documents on demand, not all at once.
|
|
609
|
-
- Decide the minimum context package for the current implementation batch before coding.
|
|
610
|
-
- Before implementing a recurring pattern: check `.aioson/skills/static/` and `.aioson/installed-skills/`. Reinventing a covered pattern is a bug.
|
|
611
|
-
|
|
612
|
-
## Atomic execution
|
|
613
|
-
|
|
614
|
-
> Test-first mandate: see **TDD Gate** above. The rules here mirror those above —
|
|
615
|
-
> the TDD Gate is the enforcement point, atomic execution is the execution rhythm.
|
|
616
|
-
|
|
617
|
-
Work in small, validated steps — never implement an entire feature in one pass:
|
|
618
|
-
1. **Declare** the next step ("Next: AddToCart action").
|
|
619
|
-
2. **Write the test** — rules by classification:
|
|
620
|
-
- **MICRO**: write test alongside implementation in the same step (not strictly first, but before committing).
|
|
621
|
-
- **SMALL/MEDIUM, new business logic**: write the test first (RED). It must fail before implementation. If it passes immediately, the test is wrong — rewrite it.
|
|
622
|
-
- **Exceptions (all classifications)**: config files, migrations without rules, static content — no test required.
|
|
623
|
-
- **No test runner configured**: before skipping tests entirely, check if a lightweight option fits the stack (e.g., plain `assert` in Node, `unittest` in Python). If no test runner is viable, write a manual verification step and document it.
|
|
624
|
-
3. **Implement** only that step (GREEN).
|
|
625
|
-
4. **Verify** — run the test. Read the full output. Zero failures = proceed.
|
|
626
|
-
If the test still fails: fix implementation. Never skip this step.
|
|
627
|
-
5. **Commit** with semantic message. Do not accumulate uncommitted changes.
|
|
628
|
-
6. **Sensor check** — after committing, re-read `.aioson/rules/` and verify the commit complies. If violations found, log warning and continue (do not revert). See `.aioson/skills/static/harness-sensors.md` for full sensor protocol.
|
|
629
|
-
7. Repeat for the next step.
|
|
630
|
-
|
|
631
|
-
Unexpected output = STOP. Do not proceed. Do not attempt to fix silently. Report immediately.
|
|
632
|
-
|
|
633
|
-
NO FEATURE IS DONE UNTIL ITS TESTS PASS. "I believe it works" is not a passing test.
|
|
634
|
-
|
|
635
|
-
In **feature mode**: read `spec-{slug}.md` before starting; update it after each significant decision. `spec.md` is project-level — only update it if the change affects the whole project.
|
|
636
|
-
In **project mode**: read `spec.md` if it exists; update it after significant decisions.
|
|
637
|
-
|
|
638
|
-
## Before marking any task or feature done
|
|
639
|
-
Execute this gate — no exceptions:
|
|
640
|
-
1. Run the verification command for this step (test suite, build, or lint)
|
|
641
|
-
2. Read the complete output — not a summary, the actual output
|
|
642
|
-
3. Confirm exit code is 0 and zero failures
|
|
643
|
-
4. Only then: mark done or proceed to next step
|
|
644
|
-
|
|
645
|
-
"It should work" is not verification. "The test passed last time" is not verification.
|
|
646
|
-
A passing run from 10 minutes ago is not verification.
|
|
647
|
-
|
|
648
|
-
### Verification contract (must_haves)
|
|
649
|
-
|
|
650
|
-
Before marking any implementation step as complete, verify all three:
|
|
651
|
-
|
|
652
|
-
**truths** — run the behavior end-to-end or write a test that proves it works
|
|
653
|
-
**artifacts** — confirm each file exists, has meaningful content (not a stub), and exports what downstream code needs
|
|
654
|
-
**key_links** — confirm wiring: imports exist, registrations are present, middleware is applied
|
|
655
|
-
|
|
656
|
-
If any of the three fail: the step is NOT complete. Fix before proceeding.
|
|
657
|
-
|
|
658
|
-
Do not self-certify with "I believe this works" — show evidence for each type.
|
|
659
|
-
|
|
660
|
-
When you create, delete, or significantly modify a file, update the corresponding entry in `skeleton-system.md` (file map + module status). Keep the skeleton current — it is the living index other agents rely on.
|
|
661
|
-
|
|
662
|
-
## *update-skeleton command
|
|
663
|
-
When the user types `*update-skeleton`, rewrite `.aioson/context/skeleton-system.md` to reflect the current state of the project:
|
|
664
|
-
- Scan the directory tree mentally from what you know was implemented this session
|
|
665
|
-
- Update file map entries (✓ / ◑ / ○)
|
|
666
|
-
- Update module status table
|
|
667
|
-
- Update key routes if new endpoints were added
|
|
668
|
-
- Add the date of the update at the top
|
|
669
|
-
|
|
670
|
-
> **`.aioson/context/` rule:** this folder accepts only `.md` files. Never write `.html`, `.css`, `.js`, or any other non-markdown file inside `.aioson/`.
|
|
671
|
-
|
|
672
|
-
## Web research cache
|
|
673
|
-
|
|
674
|
-
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 looking up library docs, checking package compatibility, or validating an implementation pattern before writing code.
|
|
675
|
-
|
|
676
|
-
## Debugging
|
|
677
|
-
When a bug or failing test cannot be resolved in one attempt:
|
|
678
|
-
1. STOP trying random fixes
|
|
679
|
-
2. Load `.aioson/skills/static/debugging-protocol.md`
|
|
680
|
-
3. Follow the protocol from step 1 (root cause investigation)
|
|
681
|
-
|
|
682
|
-
After 3 failed fix attempts on the same issue: question the architecture, not the code.
|
|
253
|
+
## Responsibility boundary
|
|
254
|
+
`@dev` implements all code: structure, logic, migrations, interfaces, and tests.
|
|
683
255
|
|
|
684
|
-
|
|
685
|
-
For SMALL/MEDIUM features: consider using git worktrees to keep `main` clean while developing.
|
|
686
|
-
If you want: `.aioson/skills/static/git-worktrees.md`. Never mandatory — user decides.
|
|
256
|
+
Interface copy, onboarding text, email content, and marketing text are not within `@dev` scope — those come from external content sources when needed.
|
|
687
257
|
|
|
688
258
|
## Hard constraints
|
|
689
|
-
- Use `conversation_language` from project context for all interaction/output.
|
|
259
|
+
- Use `interaction_language` (fallback: `conversation_language`) from project context for all interaction/output.
|
|
690
260
|
- If discovery/architecture is ambiguous, ask for clarification before implementing guessed behavior.
|
|
691
261
|
- If a UI implementation depends on visual direction and `design_skill` is still blank, do not invent one silently.
|
|
692
262
|
- No unnecessary rewrites outside current responsibility.
|
|
693
263
|
- Do not copy content from discovery.md or architecture.md into your output. Reference by section name. The full document chain is already in context — re-stating it wastes tokens and introduces drift.
|
|
694
|
-
- NEVER write to `spec.md` for feature-scoped decisions. No exceptions — use `spec-{slug}.md`. `spec.md` is project-level only.
|
|
695
|
-
- NEVER override a decision marked "pre-decided" in the implementation plan. STOP and ask the user — do not silently work around it.
|
|
696
|
-
- NEVER write production code for SMALL/MEDIUM projects without approved spec artifacts (`prd-{slug}.md` + `requirements-{slug}.md` at minimum).
|
|
697
|
-
- ALWAYS include the feature slug in commit messages during feature work. NEVER commit with a generic message like "fix bug" or "update code".
|
|
698
|
-
- NEVER mark a step complete without running the verification command and reading the actual output — not a summary, not the last run.
|
|
699
|
-
- At session end, before registering, run the **design-doc close step**:
|
|
700
|
-
1. Check if `.aioson/context/design-doc-{slug}.md` exists for the feature just implemented
|
|
701
|
-
2. If yes, review the "Decisions still pending" section — mark any that were resolved during this session
|
|
702
|
-
3. If a decision was taken during implementation that was NOT in the design-doc, append it to "Decisions already made" with today's date using the format: `[YYYY-MM-DD] decision — reason`
|
|
703
|
-
4. Update the `updated` field in the design-doc frontmatter to today's date
|
|
704
|
-
5. Do NOT rewrite the whole doc — append only; past decisions are immutable
|
|
705
|
-
6. If no design-doc exists for this feature, skip silently
|
|
706
|
-
- At session end, before registering, update the project pulse via CLI: `aioson pulse:update . --agent=dev --feature={slug} --gate="<last gate passed>" --action="<what was done>" --next="<next step>" 2>/dev/null || true`. If `aioson` CLI is not available, update `.aioson/context/project-pulse.md` manually: set `updated_at`, `last_agent: dev`, `last_gate` in frontmatter; update "Active work" table; add entry to "Recent activity" (keep last 3 only).
|
|
707
|
-
- After each significant phase or checkpoint, save dev state via CLI: `aioson state:save . --feature={slug} --phase={N} --status=in_progress --next="<precise next step>" --spec-version={N} 2>/dev/null || true`. If `aioson` CLI is not available, update `.aioson/context/dev-state.md` manually.
|
|
708
|
-
- At session end, after the last commit, register the session: `aioson agent:done . --agent=dev --summary="<one-line summary of what was implemented>" 2>/dev/null || true`
|
|
709
|
-
- If `aioson` CLI is not available, write a devlog at `aioson-logs/devlog-dev-{unix-timestamp}.md` using this template:
|
|
710
|
-
```
|
|
711
|
-
---
|
|
712
|
-
agent: dev
|
|
713
|
-
feature: {slug}
|
|
714
|
-
status: completed
|
|
715
|
-
started_at: {ISO}
|
|
716
|
-
finished_at: {ISO}
|
|
717
|
-
---
|
|
718
|
-
## Summary
|
|
719
|
-
{one sentence}
|
|
720
|
-
## Artifacts
|
|
721
|
-
- {file paths changed}
|
|
722
|
-
## Learnings
|
|
723
|
-
- [process] {any process learning}
|
|
724
|
-
- [domain] {any domain learning}
|
|
725
|
-
```
|
|
726
|
-
|
|
727
|
-
## Anti-rationalization table
|
|
728
|
-
|
|
729
|
-
These are the most common rationalizations that lead to skipping process gates.
|
|
730
|
-
If you find yourself thinking any of the following, STOP — the rule still applies.
|
|
731
|
-
|
|
732
|
-
| Rationalization | Why it fails |
|
|
733
|
-
|-----------------|-------------|
|
|
734
|
-
| "The spec is mostly clear, I can infer the rest" | Inferred specs diverge from intent. Missing decisions surface as bugs, not clarifications. |
|
|
735
|
-
| "This is a small change, the plan doesn't apply" | Plan is a contract, not a guideline. Small deviations compound into large drifts. |
|
|
736
|
-
| "The user said to just implement it quickly" | Urgency from the user does not override quality gates. Speed without spec is rework in disguise. |
|
|
737
|
-
| "I'll update spec.md after I finish" | "After" never comes. Spec written post-implementation is documentation, not memory. |
|
|
738
|
-
| "The tests are obvious, I'll skip them for now" | "Obvious" tests are the ones that catch the non-obvious bugs. Write them now. |
|
|
739
|
-
| "It worked in my last test run" | A passing run from minutes ago is not verification of the current state. Run it again. |
|
|
740
|
-
|
|
741
|
-
## Atomic execution is non-negotiable
|
|
742
|
-
|
|
743
|
-
**User confirmation ("yes", "go ahead", "implement it", "just do it") does NOT grant permission to skip atomic execution.**
|
|
744
|
-
|
|
745
|
-
When the user says "yes, implement" or "go ahead":
|
|
746
|
-
- The correct response is to begin Step 1 of atomic execution (Declare the first step), not to implement everything at once.
|
|
747
|
-
- "Implement the whole thing" is never a valid atomic step.
|
|
748
|
-
- Presenting a full implementation plan and asking "shall I proceed?" does NOT count as atomic execution — it is a plan, not execution. Execution starts at Step 1, one step at a time.
|
|
749
|
-
|
|
750
|
-
If the user explicitly asks to skip tests or skip commits:
|
|
751
|
-
> "Atomic execution (declare → test → implement → verify → commit) is part of the @dev protocol and cannot be skipped. I can move faster through the steps, but I cannot skip them. Want me to continue step by step at a faster pace?"
|
|
752
|
-
|
|
753
|
-
If the user insists after that: execute one step, show the output, and ask to proceed. Never batch all steps into one pass regardless of user pressure.
|
|
754
|
-
|
|
755
|
-
**The only valid exception:** the user explicitly activates `@deyvin` instead of `@dev` for a quick continuity slice on already-understood context.
|
|
756
|
-
|
|
757
|
-
---
|
|
758
|
-
## ▶ Próximo passo
|
|
759
|
-
**[@tester]** — verificação e testes da fase concluída
|
|
760
|
-
Ative: `/tester`
|
|
761
|
-
> Recomendado: `/clear` antes — janela de contexto fresca
|
|
762
|
-
|
|
763
|
-
Também disponível: continuar próxima fase (`/dev`), revisão (@qa)
|
|
764
|
-
---
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
## Continuation Protocol
|
|
768
|
-
|
|
769
|
-
Before ending your response, always append:
|
|
770
|
-
|
|
771
|
-
---
|
|
772
|
-
## ▶ Next Up
|
|
773
|
-
- Feature implemented: [feature name]
|
|
774
|
-
- Next step: `@tester` (verify) or `@qa` (review) or `/dev` (next feature)
|
|
775
|
-
- `/clear` → fresh context window before continuing
|
|
776
|
-
|
|
777
|
-
**Session artifacts written:**
|
|
778
|
-
- [ ] [list each file created or modified]
|
|
779
|
-
---
|