@pilotspace/add 1.14.0 → 1.15.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 +149 -1
- package/THIRD_PARTY_NOTICES.md +41 -0
- package/bin/cli.js +37 -11
- package/docs/02-the-flow.md +1 -1
- package/docs/03-step-1-specify.md +4 -0
- package/docs/04-step-2-scenarios.md +4 -0
- package/docs/06-step-4-tests.md +4 -0
- package/docs/18-personas.md +80 -0
- package/docs/add-milestone-task-lifecycle.png +0 -0
- package/docs/add-task-growth-wheel.png +0 -0
- package/docs/appendix-c-glossary.md +5 -1
- package/package.json +3 -1
- package/personas-teacher/LICENSE +21 -0
- package/personas-teacher/README.md +1067 -0
- package/personas-teacher/VENDOR.md +13 -0
- package/personas-teacher/academic/academic-anthropologist.md +125 -0
- package/personas-teacher/academic/academic-geographer.md +127 -0
- package/personas-teacher/academic/academic-historian.md +123 -0
- package/personas-teacher/academic/academic-narratologist.md +118 -0
- package/personas-teacher/academic/academic-psychologist.md +118 -0
- package/personas-teacher/design/design-brand-guardian.md +322 -0
- package/personas-teacher/design/design-image-prompt-engineer.md +236 -0
- package/personas-teacher/design/design-inclusive-visuals-specialist.md +71 -0
- package/personas-teacher/design/design-persona-walkthrough.md +272 -0
- package/personas-teacher/design/design-ui-designer.md +383 -0
- package/personas-teacher/design/design-ux-architect.md +469 -0
- package/personas-teacher/design/design-ux-researcher.md +329 -0
- package/personas-teacher/design/design-visual-storyteller.md +149 -0
- package/personas-teacher/design/design-whimsy-injector.md +438 -0
- package/personas-teacher/divisions.json +21 -0
- package/personas-teacher/engineering/engineering-ai-data-remediation-engineer.md +211 -0
- package/personas-teacher/engineering/engineering-ai-engineer.md +146 -0
- package/personas-teacher/engineering/engineering-autonomous-optimization-architect.md +107 -0
- package/personas-teacher/engineering/engineering-backend-architect.md +236 -0
- package/personas-teacher/engineering/engineering-cms-developer.md +536 -0
- package/personas-teacher/engineering/engineering-code-reviewer.md +76 -0
- package/personas-teacher/engineering/engineering-codebase-onboarding-engineer.md +173 -0
- package/personas-teacher/engineering/engineering-data-engineer.md +306 -0
- package/personas-teacher/engineering/engineering-database-optimizer.md +176 -0
- package/personas-teacher/engineering/engineering-devops-automator.md +376 -0
- package/personas-teacher/engineering/engineering-drupal-shopping-cart.md +360 -0
- package/personas-teacher/engineering/engineering-email-intelligence-engineer.md +353 -0
- package/personas-teacher/engineering/engineering-embedded-firmware-engineer.md +173 -0
- package/personas-teacher/engineering/engineering-feishu-integration-developer.md +598 -0
- package/personas-teacher/engineering/engineering-filament-optimization-specialist.md +283 -0
- package/personas-teacher/engineering/engineering-frontend-developer.md +225 -0
- package/personas-teacher/engineering/engineering-git-workflow-master.md +84 -0
- package/personas-teacher/engineering/engineering-incident-response-commander.md +444 -0
- package/personas-teacher/engineering/engineering-it-service-manager.md +561 -0
- package/personas-teacher/engineering/engineering-minimal-change-engineer.md +207 -0
- package/personas-teacher/engineering/engineering-mobile-app-builder.md +493 -0
- package/personas-teacher/engineering/engineering-multi-agent-systems-architect.md +600 -0
- package/personas-teacher/engineering/engineering-orgscript-engineer.md +113 -0
- package/personas-teacher/engineering/engineering-prompt-engineer.md +202 -0
- package/personas-teacher/engineering/engineering-rapid-prototyper.md +462 -0
- package/personas-teacher/engineering/engineering-senior-developer.md +176 -0
- package/personas-teacher/engineering/engineering-software-architect.md +112 -0
- package/personas-teacher/engineering/engineering-solidity-smart-contract-engineer.md +522 -0
- package/personas-teacher/engineering/engineering-sre.md +90 -0
- package/personas-teacher/engineering/engineering-technical-writer.md +393 -0
- package/personas-teacher/engineering/engineering-voice-ai-integration-engineer.md +561 -0
- package/personas-teacher/engineering/engineering-wechat-mini-program-developer.md +350 -0
- package/personas-teacher/engineering/engineering-wordpress-shopping-cart.md +346 -0
- package/personas-teacher/examples/README.md +48 -0
- package/personas-teacher/examples/nexus-spatial-discovery.md +852 -0
- package/personas-teacher/examples/workflow-book-chapter.md +55 -0
- package/personas-teacher/examples/workflow-landing-page.md +119 -0
- package/personas-teacher/examples/workflow-startup-mvp.md +155 -0
- package/personas-teacher/examples/workflow-with-memory.md +238 -0
- package/personas-teacher/finance/finance-bookkeeper-controller.md +260 -0
- package/personas-teacher/finance/finance-financial-analyst.md +234 -0
- package/personas-teacher/finance/finance-fpa-analyst.md +263 -0
- package/personas-teacher/finance/finance-investment-researcher.md +272 -0
- package/personas-teacher/finance/finance-tax-strategist.md +239 -0
- package/personas-teacher/game-development/blender/blender-addon-engineer.md +234 -0
- package/personas-teacher/game-development/game-audio-engineer.md +264 -0
- package/personas-teacher/game-development/game-designer.md +167 -0
- package/personas-teacher/game-development/godot/godot-gameplay-scripter.md +334 -0
- package/personas-teacher/game-development/godot/godot-multiplayer-engineer.md +297 -0
- package/personas-teacher/game-development/godot/godot-shader-developer.md +266 -0
- package/personas-teacher/game-development/level-designer.md +208 -0
- package/personas-teacher/game-development/narrative-designer.md +243 -0
- package/personas-teacher/game-development/roblox-studio/roblox-avatar-creator.md +297 -0
- package/personas-teacher/game-development/roblox-studio/roblox-experience-designer.md +305 -0
- package/personas-teacher/game-development/roblox-studio/roblox-systems-scripter.md +325 -0
- package/personas-teacher/game-development/technical-artist.md +229 -0
- package/personas-teacher/game-development/unity/unity-architect.md +271 -0
- package/personas-teacher/game-development/unity/unity-editor-tool-developer.md +310 -0
- package/personas-teacher/game-development/unity/unity-multiplayer-engineer.md +321 -0
- package/personas-teacher/game-development/unity/unity-shader-graph-artist.md +269 -0
- package/personas-teacher/game-development/unreal-engine/unreal-multiplayer-architect.md +313 -0
- package/personas-teacher/game-development/unreal-engine/unreal-systems-engineer.md +310 -0
- package/personas-teacher/game-development/unreal-engine/unreal-technical-artist.md +256 -0
- package/personas-teacher/game-development/unreal-engine/unreal-world-builder.md +273 -0
- package/personas-teacher/gis/gis-3d-scene-developer.md +111 -0
- package/personas-teacher/gis/gis-analyst.md +91 -0
- package/personas-teacher/gis/gis-bim-specialist.md +108 -0
- package/personas-teacher/gis/gis-cartography-designer.md +150 -0
- package/personas-teacher/gis/gis-drone-reality-mapping.md +120 -0
- package/personas-teacher/gis/gis-geoai-ml-engineer.md +105 -0
- package/personas-teacher/gis/gis-geoprocessing-specialist.md +97 -0
- package/personas-teacher/gis/gis-qa-engineer.md +133 -0
- package/personas-teacher/gis/gis-solution-engineer.md +101 -0
- package/personas-teacher/gis/gis-spatial-data-engineer.md +97 -0
- package/personas-teacher/gis/gis-spatial-data-scientist.md +111 -0
- package/personas-teacher/gis/gis-technical-consultant.md +86 -0
- package/personas-teacher/gis/gis-web-gis-developer.md +108 -0
- package/personas-teacher/marketing/marketing-aeo-foundations.md +264 -0
- package/personas-teacher/marketing/marketing-agentic-search-optimizer.md +311 -0
- package/personas-teacher/marketing/marketing-ai-citation-strategist.md +170 -0
- package/personas-teacher/marketing/marketing-app-store-optimizer.md +321 -0
- package/personas-teacher/marketing/marketing-baidu-seo-specialist.md +226 -0
- package/personas-teacher/marketing/marketing-bilibili-content-strategist.md +199 -0
- package/personas-teacher/marketing/marketing-book-co-author.md +110 -0
- package/personas-teacher/marketing/marketing-carousel-growth-engine.md +199 -0
- package/personas-teacher/marketing/marketing-china-ecommerce-operator.md +283 -0
- package/personas-teacher/marketing/marketing-china-market-localization-strategist.md +283 -0
- package/personas-teacher/marketing/marketing-content-creator.md +54 -0
- package/personas-teacher/marketing/marketing-cross-border-ecommerce.md +259 -0
- package/personas-teacher/marketing/marketing-douyin-strategist.md +149 -0
- package/personas-teacher/marketing/marketing-email-strategist.md +249 -0
- package/personas-teacher/marketing/marketing-global-podcast-strategist.md +206 -0
- package/personas-teacher/marketing/marketing-growth-hacker.md +54 -0
- package/personas-teacher/marketing/marketing-instagram-curator.md +113 -0
- package/personas-teacher/marketing/marketing-kuaishou-strategist.md +223 -0
- package/personas-teacher/marketing/marketing-linkedin-content-creator.md +214 -0
- package/personas-teacher/marketing/marketing-livestream-commerce-coach.md +305 -0
- package/personas-teacher/marketing/marketing-multi-platform-publisher.md +217 -0
- package/personas-teacher/marketing/marketing-podcast-strategist.md +277 -0
- package/personas-teacher/marketing/marketing-pr-communications-manager.md +473 -0
- package/personas-teacher/marketing/marketing-private-domain-operator.md +308 -0
- package/personas-teacher/marketing/marketing-reddit-community-builder.md +123 -0
- package/personas-teacher/marketing/marketing-seo-specialist.md +321 -0
- package/personas-teacher/marketing/marketing-short-video-editing-coach.md +412 -0
- package/personas-teacher/marketing/marketing-social-media-strategist.md +125 -0
- package/personas-teacher/marketing/marketing-tiktok-strategist.md +125 -0
- package/personas-teacher/marketing/marketing-twitter-engager.md +126 -0
- package/personas-teacher/marketing/marketing-video-optimization-specialist.md +119 -0
- package/personas-teacher/marketing/marketing-wechat-official-account.md +145 -0
- package/personas-teacher/marketing/marketing-weibo-strategist.md +240 -0
- package/personas-teacher/marketing/marketing-x-twitter-intelligence-analyst.md +161 -0
- package/personas-teacher/marketing/marketing-xiaohongshu-specialist.md +138 -0
- package/personas-teacher/marketing/marketing-zhihu-strategist.md +162 -0
- package/personas-teacher/paid-media/paid-media-auditor.md +71 -0
- package/personas-teacher/paid-media/paid-media-creative-strategist.md +71 -0
- package/personas-teacher/paid-media/paid-media-paid-social-strategist.md +71 -0
- package/personas-teacher/paid-media/paid-media-ppc-strategist.md +71 -0
- package/personas-teacher/paid-media/paid-media-programmatic-buyer.md +71 -0
- package/personas-teacher/paid-media/paid-media-search-query-analyst.md +71 -0
- package/personas-teacher/paid-media/paid-media-tracking-specialist.md +71 -0
- package/personas-teacher/product/product-behavioral-nudge-engine.md +80 -0
- package/personas-teacher/product/product-feedback-synthesizer.md +119 -0
- package/personas-teacher/product/product-manager.md +469 -0
- package/personas-teacher/product/product-sprint-prioritizer.md +154 -0
- package/personas-teacher/product/product-trend-researcher.md +159 -0
- package/personas-teacher/project-management/project-management-experiment-tracker.md +198 -0
- package/personas-teacher/project-management/project-management-jira-workflow-steward.md +230 -0
- package/personas-teacher/project-management/project-management-meeting-notes-specialist.md +95 -0
- package/personas-teacher/project-management/project-management-project-shepherd.md +194 -0
- package/personas-teacher/project-management/project-management-studio-operations.md +200 -0
- package/personas-teacher/project-management/project-management-studio-producer.md +203 -0
- package/personas-teacher/project-management/project-manager-senior.md +135 -0
- package/personas-teacher/sales/sales-account-strategist.md +227 -0
- package/personas-teacher/sales/sales-coach.md +271 -0
- package/personas-teacher/sales/sales-deal-strategist.md +180 -0
- package/personas-teacher/sales/sales-discovery-coach.md +225 -0
- package/personas-teacher/sales/sales-engineer.md +182 -0
- package/personas-teacher/sales/sales-offer-lead-gen-strategist.md +257 -0
- package/personas-teacher/sales/sales-outbound-strategist.md +201 -0
- package/personas-teacher/sales/sales-pipeline-analyst.md +267 -0
- package/personas-teacher/sales/sales-proposal-strategist.md +217 -0
- package/personas-teacher/security/security-appsec-engineer.md +491 -0
- package/personas-teacher/security/security-architect.md +304 -0
- package/personas-teacher/security/security-blockchain-security-auditor.md +463 -0
- package/personas-teacher/security/security-cloud-security-architect.md +523 -0
- package/personas-teacher/security/security-compliance-auditor.md +158 -0
- package/personas-teacher/security/security-incident-responder.md +437 -0
- package/personas-teacher/security/security-penetration-tester.md +399 -0
- package/personas-teacher/security/security-senior-secops.md +750 -0
- package/personas-teacher/security/security-threat-detection-engineer.md +534 -0
- package/personas-teacher/security/security-threat-intelligence-analyst.md +644 -0
- package/personas-teacher/spatial-computing/macos-spatial-metal-engineer.md +337 -0
- package/personas-teacher/spatial-computing/terminal-integration-specialist.md +70 -0
- package/personas-teacher/spatial-computing/visionos-spatial-engineer.md +54 -0
- package/personas-teacher/spatial-computing/xr-cockpit-interaction-specialist.md +32 -0
- package/personas-teacher/spatial-computing/xr-immersive-developer.md +32 -0
- package/personas-teacher/spatial-computing/xr-interface-architect.md +32 -0
- package/personas-teacher/specialized/accounts-payable-agent.md +185 -0
- package/personas-teacher/specialized/agentic-identity-trust.md +387 -0
- package/personas-teacher/specialized/agents-orchestrator.md +367 -0
- package/personas-teacher/specialized/automation-governance-architect.md +216 -0
- package/personas-teacher/specialized/business-strategist.md +488 -0
- package/personas-teacher/specialized/change-management-consultant.md +497 -0
- package/personas-teacher/specialized/chief-financial-officer.md +388 -0
- package/personas-teacher/specialized/corporate-training-designer.md +192 -0
- package/personas-teacher/specialized/customer-service.md +398 -0
- package/personas-teacher/specialized/customer-success-manager.md +460 -0
- package/personas-teacher/specialized/data-consolidation-agent.md +60 -0
- package/personas-teacher/specialized/data-privacy-officer.md +412 -0
- package/personas-teacher/specialized/esg-sustainability-officer.md +396 -0
- package/personas-teacher/specialized/government-digital-presales-consultant.md +363 -0
- package/personas-teacher/specialized/grant-writer.md +511 -0
- package/personas-teacher/specialized/healthcare-customer-service.md +389 -0
- package/personas-teacher/specialized/healthcare-marketing-compliance.md +395 -0
- package/personas-teacher/specialized/hospitality-guest-services.md +603 -0
- package/personas-teacher/specialized/hr-onboarding.md +451 -0
- package/personas-teacher/specialized/identity-graph-operator.md +260 -0
- package/personas-teacher/specialized/language-translator.md +264 -0
- package/personas-teacher/specialized/legal-billing-time-tracking.md +569 -0
- package/personas-teacher/specialized/legal-client-intake.md +492 -0
- package/personas-teacher/specialized/legal-document-review.md +454 -0
- package/personas-teacher/specialized/loan-officer-assistant.md +555 -0
- package/personas-teacher/specialized/lsp-index-engineer.md +314 -0
- package/personas-teacher/specialized/ma-integration-manager.md +427 -0
- package/personas-teacher/specialized/medical-billing-coding-specialist.md +491 -0
- package/personas-teacher/specialized/operations-manager.md +399 -0
- package/personas-teacher/specialized/organizational-psychologist.md +391 -0
- package/personas-teacher/specialized/personal-growth-mentor.md +159 -0
- package/personas-teacher/specialized/real-estate-buyer-seller.md +596 -0
- package/personas-teacher/specialized/recruitment-specialist.md +509 -0
- package/personas-teacher/specialized/report-distribution-agent.md +65 -0
- package/personas-teacher/specialized/retail-customer-returns.md +566 -0
- package/personas-teacher/specialized/sales-data-extraction-agent.md +67 -0
- package/personas-teacher/specialized/sales-outreach.md +425 -0
- package/personas-teacher/specialized/specialized-chief-of-staff.md +279 -0
- package/personas-teacher/specialized/specialized-civil-engineer.md +356 -0
- package/personas-teacher/specialized/specialized-cultural-intelligence-strategist.md +88 -0
- package/personas-teacher/specialized/specialized-developer-advocate.md +317 -0
- package/personas-teacher/specialized/specialized-document-generator.md +55 -0
- package/personas-teacher/specialized/specialized-french-consulting-market.md +192 -0
- package/personas-teacher/specialized/specialized-korean-business-navigator.md +216 -0
- package/personas-teacher/specialized/specialized-mcp-builder.md +248 -0
- package/personas-teacher/specialized/specialized-model-qa.md +488 -0
- package/personas-teacher/specialized/specialized-pricing-analyst.md +243 -0
- package/personas-teacher/specialized/specialized-salesforce-architect.md +180 -0
- package/personas-teacher/specialized/specialized-strategy-duel-agent.md +130 -0
- package/personas-teacher/specialized/specialized-workflow-architect.md +597 -0
- package/personas-teacher/specialized/study-abroad-advisor.md +282 -0
- package/personas-teacher/specialized/supply-chain-strategist.md +582 -0
- package/personas-teacher/specialized/zk-steward.md +211 -0
- package/personas-teacher/strategy/EXECUTIVE-BRIEF.md +95 -0
- package/personas-teacher/strategy/QUICKSTART.md +194 -0
- package/personas-teacher/strategy/coordination/agent-activation-prompts.md +401 -0
- package/personas-teacher/strategy/coordination/handoff-templates.md +357 -0
- package/personas-teacher/strategy/nexus-strategy.md +1110 -0
- package/personas-teacher/strategy/playbooks/phase-0-discovery.md +178 -0
- package/personas-teacher/strategy/playbooks/phase-1-strategy.md +238 -0
- package/personas-teacher/strategy/playbooks/phase-2-foundation.md +278 -0
- package/personas-teacher/strategy/playbooks/phase-3-build.md +286 -0
- package/personas-teacher/strategy/playbooks/phase-4-hardening.md +332 -0
- package/personas-teacher/strategy/playbooks/phase-5-launch.md +277 -0
- package/personas-teacher/strategy/playbooks/phase-6-operate.md +318 -0
- package/personas-teacher/strategy/runbooks/scenario-enterprise-feature.md +157 -0
- package/personas-teacher/strategy/runbooks/scenario-incident-response.md +217 -0
- package/personas-teacher/strategy/runbooks/scenario-marketing-campaign.md +187 -0
- package/personas-teacher/strategy/runbooks/scenario-startup-mvp.md +154 -0
- package/personas-teacher/support/support-analytics-reporter.md +365 -0
- package/personas-teacher/support/support-executive-summary-generator.md +212 -0
- package/personas-teacher/support/support-finance-tracker.md +442 -0
- package/personas-teacher/support/support-infrastructure-maintainer.md +618 -0
- package/personas-teacher/support/support-legal-compliance-checker.md +588 -0
- package/personas-teacher/support/support-support-responder.md +585 -0
- package/personas-teacher/testing/testing-accessibility-auditor.md +316 -0
- package/personas-teacher/testing/testing-api-tester.md +306 -0
- package/personas-teacher/testing/testing-evidence-collector.md +210 -0
- package/personas-teacher/testing/testing-performance-benchmarker.md +268 -0
- package/personas-teacher/testing/testing-reality-checker.md +236 -0
- package/personas-teacher/testing/testing-test-results-analyzer.md +305 -0
- package/personas-teacher/testing/testing-tool-evaluator.md +394 -0
- package/personas-teacher/testing/testing-workflow-optimizer.md +450 -0
- package/personas-teacher/tools.json +19 -0
- package/skill/add/SKILL.md +17 -12
- package/skill/add/advisor.md +31 -34
- package/skill/add/confidence.md +1 -1
- package/skill/add/deltas.md +12 -13
- package/skill/add/design.md +52 -49
- package/skill/add/fold.md +18 -16
- package/skill/add/intake.md +4 -3
- package/skill/add/loop.md +1 -2
- package/skill/add/phases/0-ground.md +32 -34
- package/skill/add/phases/0-setup.md +22 -21
- package/skill/add/phases/1-specify.md +8 -6
- package/skill/add/phases/3-contract.md +1 -1
- package/skill/add/phases/4-tests.md +9 -10
- package/skill/add/phases/5-build.md +17 -13
- package/skill/add/phases/6-verify.md +7 -4
- package/skill/add/phases/7-observe.md +2 -1
- package/skill/add/report-template.md +61 -18
- package/skill/add/run.md +4 -3
- package/skill/add/scope.md +2 -2
- package/skill/add/sensitivity.md +51 -0
- package/skill/add/streams.md +24 -23
- package/tooling/add.py +822 -26
- package/tooling/add_engine/autonomy.py +36 -1
- package/tooling/add_engine/constants.py +56 -3
- package/tooling/add_engine/guidelines.py +22 -20
- package/tooling/add_engine/predicates.py +56 -3
- package/tooling/add_engine/search.py +165 -0
- package/tooling/templates/GLOSSARY.md.tmpl +16 -0
- package/tooling/templates/MILESTONE.md.tmpl +9 -0
- package/tooling/templates/PROMPT.persona.md.tmpl +44 -0
- package/tooling/templates/TASK.fast.md.tmpl +1 -0
- package/tooling/templates/TASK.md.tmpl +36 -6
- package/tooling/templates/gitignore.tmpl +12 -0
- package/tooling/templates/personas/_template.md.tmpl +60 -0
package/skill/add/advisor.md
CHANGED
|
@@ -1,30 +1,29 @@
|
|
|
1
1
|
# Advisor — spawning one subagent to follow your plan
|
|
2
2
|
|
|
3
|
-
The **advisor** strategy
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
engine never spawns; this is your judgment to make per step.
|
|
3
|
+
The **advisor** strategy: spawn a *single* subagent to execute one piece of your plan, then merge
|
|
4
|
+
its verdict back. It is the single-subagent companion to `streams.md` (which pipelines *many* tasks
|
|
5
|
+
in parallel worktrees) — you delegate *one* well-scoped piece and stay in the loop. The engine never
|
|
6
|
+
spawns; this is your call per step.
|
|
8
7
|
|
|
9
8
|
## When to spawn — and when not
|
|
10
9
|
|
|
11
|
-
Spawn
|
|
10
|
+
Spawn when the piece is **separable and worth the round-trip**: a broad sweep; an independent adversarial review (the `6-verify` refute-read — fresh context, not graded by the author); a well-scoped batch; or context-offload to a small verdict.
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
- **Independent adversarial review** — a fresh context argues *against* your result (the
|
|
15
|
-
`6-verify` earned-green refute-read), so the check is not graded by the author.
|
|
16
|
-
- **A well-scoped delegable batch** — a self-contained slice with a clear contract and return shape.
|
|
17
|
-
- **Context offload** — work that would bloat your context but compresses to a small verdict.
|
|
12
|
+
Do **not** spawn for narrow, cheap work — pay the round-trip only when the piece is big or independent enough. When in doubt, do it in-context.
|
|
18
13
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
## The 3-lens sequential checklist at verify
|
|
15
|
+
|
|
16
|
+
At Verify, sweep security → concurrency → architecture in order. **Security HARD-STOP ends the checklist** (leave the rest blank). Each lens returns: **CLEAR** · **HARD-STOP** (security only) · **RESIDUE** (concurrency/architecture).
|
|
17
|
+
|
|
18
|
+
Record it in §6 `### Advisor 3-lens verdict`: **Verdict** (PASS/HARD-STOP) · **Residue** (none or brief) · **Binding** (`yes` for `sensitivity: mechanical` — the engine reads it for `advisor-gate-relax`; `advisory` otherwise).
|
|
19
|
+
|
|
20
|
+
**Persona for the refute-read.** When the piece is the earned-green refute-read, select a **Code-Reviewer** persona; its findings carry severity markers — 🔴 blocker · 🟡 concern · 💭 note. A persona is advisory: it never lowers a gate (a security finding still HARD-STOPs).
|
|
22
21
|
|
|
23
22
|
## The plan-following prompt template
|
|
24
23
|
|
|
25
|
-
Give the subagent the *piece
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
Give the subagent the *piece it owns* and a fixed return shape. This reuses `streams.md`'s
|
|
25
|
+
worker-contract tags — identical on any runner; only the spawn adapter (see `streams.md`) changes.
|
|
26
|
+
The `<strategy>` block mirrors the task's §5 as the subagent's PREFERRED path — it self-improves on that plan and reports the strategy it actually used.
|
|
28
27
|
|
|
29
28
|
```xml
|
|
30
29
|
<objective>
|
|
@@ -33,9 +32,11 @@ surrounding decisions. Return a verdict; do not record state.
|
|
|
33
32
|
</objective>
|
|
34
33
|
|
|
35
34
|
<persona>
|
|
36
|
-
|
|
35
|
+
SELECT the best-fit project persona for this piece and load `.add/personas/{{PERSONA_SLUG}}.md` —
|
|
36
|
+
Identity→your stance · Critical Rules→constraints · Success Metrics→done-bar (streams.md's worker
|
|
37
|
+
contract). No match → a {{DOMAIN}} engineer, correctness over speed; never blocks.
|
|
37
38
|
Work step by step, following the plan:
|
|
38
|
-
1. Load the context files; confirm you understand the piece you own.
|
|
39
|
+
1. Load the context files + the persona; confirm you understand the piece you own.
|
|
39
40
|
2. Do the work in small steps, honoring the orchestrator's plan and constraints.
|
|
40
41
|
3. Self-score your result with confidence.md; if any dimension < 0.9, refine before returning.
|
|
41
42
|
</persona>
|
|
@@ -53,29 +54,25 @@ the plan / task files the piece needs (read-only unless the piece says otherwise
|
|
|
53
54
|
|
|
54
55
|
<return>
|
|
55
56
|
End with a structured verdict the orchestrator parses and RECORDS:
|
|
56
|
-
{ piece, result, evidence, confidence: {per-dimension 0–1}, open_questions }.
|
|
57
|
+
{ piece, persona, result, evidence, confidence: {per-dimension 0–1}, open_questions }.
|
|
58
|
+
`persona` names the slug you adopted (or `generic`) — the orchestrator records which persona did the work.
|
|
57
59
|
Do NOT run add.py or write any shared state — you propose, the orchestrator records.
|
|
58
60
|
</return>
|
|
59
61
|
```
|
|
60
62
|
|
|
61
63
|
## Choosing the model — vendor-neutral tiers
|
|
62
64
|
|
|
63
|
-
Pick the tier from `streams.md
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
scope still escalates.
|
|
65
|
+
Pick the tier from `streams.md`: **mid** for an ordinary piece; **top** for a complex/ambiguous/
|
|
66
|
+
cross-cutting one. The tier→model-id mapping + spawn adapter live there. A stronger model never buys
|
|
67
|
+
back a gate: high-risk scope still escalates.
|
|
67
68
|
|
|
68
|
-
## The hard rule —
|
|
69
|
+
## The hard rule — delegate, don't abdicate
|
|
69
70
|
|
|
70
71
|
<constraints>
|
|
71
|
-
The engine never spawns —
|
|
72
|
-
- the subagent PROPOSES; the orchestrator RECORDS — a worker never runs add.py or writes shared
|
|
73
|
-
|
|
74
|
-
-
|
|
75
|
-
escalates to the human, whoever (or whatever tier) did the work;
|
|
76
|
-
- the spawned subagent returns its confidence.md self-score; a low score is a signal to refine or
|
|
77
|
-
re-spawn, never a pass.
|
|
72
|
+
The engine never spawns — it's the orchestrating agent's choice. And:
|
|
73
|
+
- the subagent PROPOSES; the orchestrator RECORDS — a worker never runs add.py or writes shared state;
|
|
74
|
+
- delegation never lowers a gate — a SECURITY finding still HARD-STOPs and high-risk scope still escalates, whoever did the work;
|
|
75
|
+
- the subagent returns its confidence.md self-score; a low score means refine or re-spawn, never a pass.
|
|
78
76
|
</constraints>
|
|
79
77
|
|
|
80
|
-
> Used per step: each phase guide's Advisor hook points here
|
|
81
|
-
> the phase it is in (see the per-step hooks).
|
|
78
|
+
> Used per step: each phase guide's Advisor hook points here (the per-step hooks).
|
package/skill/add/confidence.md
CHANGED
|
@@ -18,7 +18,7 @@ If **any** dimension scores **< 0.9**, refine the artifact before presenting, th
|
|
|
18
18
|
## Where it plugs in
|
|
19
19
|
|
|
20
20
|
- It **feeds the lowest-confidence flag** (run.md · 1-specify.md): the lowest-scoring dimension is what you surface ⚠-first at the contract freeze.
|
|
21
|
-
- A persistently low score on a risky scope is a signal to **recommend** lowering the autonomy level (auto → conservative / manual; run.md)
|
|
21
|
+
- A persistently low score on a risky scope is a signal to **recommend** lowering the autonomy level (auto → conservative / manual; run.md) — the level stays the human's call.
|
|
22
22
|
|
|
23
23
|
## The hard rule — advisory, never a gate
|
|
24
24
|
|
package/skill/add/deltas.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Lessons learned — how each loop sharpens the foundation
|
|
2
2
|
|
|
3
|
-
A **lesson learned** is a single learning a task produces, tagged by which of ADD's five competencies it improves. Write deltas in
|
|
3
|
+
A **lesson learned** is a single learning a task produces, tagged by which of ADD's five competencies it improves. Write deltas in **OBSERVE**; later `fold.md` consolidates confirmed ones into a versioned `PROJECT.md` — how `DDD · SDD · UDD · TDD · ADD` stop being write-once and converge.
|
|
4
4
|
|
|
5
|
-
You **emit** deltas as `open
|
|
5
|
+
You **emit** deltas as `open`; only the **human** moves one to `folded` or `rejected`. You never self-approve a consolidation.
|
|
6
6
|
|
|
7
7
|
## The grammar (frozen)
|
|
8
8
|
|
|
@@ -14,10 +14,11 @@ Each delta begins on its own **tag line**; the learning may wrap:
|
|
|
14
14
|
|
|
15
15
|
- `<COMPETENCY>` — exactly one of the five (below).
|
|
16
16
|
- `<status>` — `open` | `folded` | `rejected`. A **newly emitted delta is `open`**.
|
|
17
|
-
- `<learning>` — the insight
|
|
17
|
+
- `<learning>` — the insight; the tag line comes **first**, `(evidence: …)` **closes** the delta.
|
|
18
18
|
- `(evidence: …)` — **required**, non-empty: a failing scenario, a production signal, a review note. No evidence → it is an opinion, not a delta.
|
|
19
|
+
- **persona target (optional)** — a competency lesson MAY add `· persona:<slug> · <critical-rule|success-metric>` in brackets, e.g. `- [UDD · open · persona:ui-designer · success-metric] 4.5:1 contrast (evidence: audit)`. At `add.py fold` it lands in `.add/personas/<slug>.md` under that section (newest-first, never clobbering) instead of `PROJECT.md` (`fold.md`).
|
|
19
20
|
|
|
20
|
-
A long learning may wrap — `add.py check` joins continuation lines
|
|
21
|
+
A long learning may wrap — `add.py check` joins continuation lines into **one** delta:
|
|
21
22
|
|
|
22
23
|
```
|
|
23
24
|
- [SDD · open] the export endpoint must reject a tenant-scoped token used cross-tenant,
|
|
@@ -34,18 +35,16 @@ A long learning may wrap — `add.py check` joins continuation lines, so this is
|
|
|
34
35
|
| `TDD` | Test | how we prove correctness — a missing scenario, a flaky or hollow test |
|
|
35
36
|
| `ADD` | AI/build | how the AI builds — a harness, prompt, or convention that helped or hurt |
|
|
36
37
|
|
|
37
|
-
If a learning touches two, ask "which competency, once updated, would have PREVENTED this?" — that is its home. Split separate learnings
|
|
38
|
+
If a learning touches two, ask "which competency, once updated, would have PREVENTED this?" — that is its home. Split separate learnings; never tag one twice.
|
|
38
39
|
|
|
39
40
|
## Status lifecycle
|
|
40
41
|
|
|
41
42
|
```
|
|
42
|
-
emit (OBSERVE) human review
|
|
43
|
-
open ───────────▶ folded (
|
|
44
|
-
└──────────▶ rejected (
|
|
43
|
+
emit (OBSERVE) human review
|
|
44
|
+
open ───────────▶ folded (merged into PROJECT.md; version bumps)
|
|
45
|
+
└──────────▶ rejected (deliberately NOT consolidated — trail kept)
|
|
45
46
|
```
|
|
46
47
|
|
|
47
|
-
A `rejected` delta is left in place (not deleted) so "we saw this and chose not to act" stays auditable.
|
|
48
|
-
|
|
49
48
|
## Reject codes
|
|
50
49
|
|
|
51
50
|
<reject_codes>
|
|
@@ -58,8 +57,8 @@ A `rejected` delta is left in place (not deleted) so "we saw this and chose not
|
|
|
58
57
|
|
|
59
58
|
```
|
|
60
59
|
- [DDD · open] the account model conflated org and workspace (evidence: scenario_cross_tenant_read failed)
|
|
61
|
-
- [TDD · open] no scenario covered a deleted tenant's dangling sessions (evidence: review note
|
|
62
|
-
- [ADD · open] the scaffold's allow-list missed the tenancy lib, slowing build (evidence: build log
|
|
60
|
+
- [TDD · open] no scenario covered a deleted tenant's dangling sessions (evidence: review note)
|
|
61
|
+
- [ADD · open] the scaffold's allow-list missed the tenancy lib, slowing build (evidence: build log)
|
|
63
62
|
```
|
|
64
63
|
|
|
65
|
-
At the next
|
|
64
|
+
At the next update the human consolidated DDD+TDD (→ `folded`) and rejected ADD. Sharper foundation; nothing lost.
|
package/skill/add/design.md
CHANGED
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
When a **UI feature** reaches specify, design it before you build it. This loop takes the
|
|
4
4
|
feature from the **domain** to a screen the human has **seen and confirmed** — a real captured
|
|
5
|
-
image — *before* any implementation.
|
|
6
|
-
the engine never runs it for you.
|
|
5
|
+
image — *before* any implementation. Loaded on demand; the engine never runs it for you.
|
|
7
6
|
|
|
8
|
-
Design before code is the UDD half of the method.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
for a feature and earns the human's sign-off on the look before build.
|
|
7
|
+
Design before code is the UDD half of the method. It fills the existing token + component
|
|
8
|
+
foundation — `tokens.json` (`udd-tokens.md`), `catalog.json` + `prototypes/<name>.json`
|
|
9
|
+
(`udd-catalog.md`) — for a feature and earns the human's sign-off before build.
|
|
12
10
|
|
|
13
11
|
## The loop — five beats
|
|
14
12
|
|
|
@@ -16,71 +14,73 @@ for a feature and earns the human's sign-off on the look before build.
|
|
|
16
14
|
design-intake → review-domain → research-components → wireframe → render-capture-confirm
|
|
17
15
|
```
|
|
18
16
|
|
|
19
|
-
Run the beats in order
|
|
17
|
+
Run the beats in order; the last ends at a human design-confirm.
|
|
20
18
|
|
|
21
19
|
### 0 · design-intake
|
|
22
|
-
Before
|
|
23
|
-
|
|
20
|
+
Before reading the domain, interview the human on **four design axes** so the look is *directed*,
|
|
21
|
+
not guessed — ask each, show options, record the pick:
|
|
24
22
|
|
|
25
|
-
- **FIDELITY** — how far this
|
|
26
|
-
|
|
23
|
+
- **FIDELITY** — how far this goes: *lo-fi wireframe* · *hi-fi mockup* · *production*. Recorded
|
|
24
|
+
**intent** informing the later beats, not an engine gate.
|
|
27
25
|
- **CONCEPT** — the design *idea / mood / direction* in a line.
|
|
28
26
|
- **LAYOUT** — the *structure / grid / hierarchy* the screens lean on.
|
|
29
|
-
- **VISUAL DESIGN** — *color · type · spacing · imagery*. **Surface** identity values for the
|
|
30
|
-
|
|
27
|
+
- **VISUAL DESIGN** — *color · type · spacing · imagery*. **Surface** identity values for the human
|
|
28
|
+
to choose — never auto-pick a brand value (identity stays **human-owned**, `udd-tokens.md`).
|
|
31
29
|
|
|
32
|
-
Record the answers **before** review-domain
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
Record the answers **before** review-domain: project **defaults** in DESIGN.md's `## Design intake`;
|
|
31
|
+
per-screen **overrides** (deltas only) in the per-feature design note (`prototypes/<name>.json`
|
|
32
|
+
companion). Show-before-ask — confirm the picks.
|
|
35
33
|
|
|
36
34
|
### 1 · review-domain
|
|
37
35
|
Start from the **domain**, not a blank canvas. Read the domain model — entities, flows, the
|
|
38
36
|
ubiquitous language in `PROJECT.md` / `GLOSSARY.md` — and derive **which screens** the feature
|
|
39
|
-
needs
|
|
40
|
-
|
|
41
|
-
regions are this beat's output, grounded in the domain you just read.
|
|
37
|
+
needs + the **regions** each holds. Map each entity to a *presentational* component (shows state;
|
|
38
|
+
owns no domain decision). The screen list + regions are this beat's output.
|
|
42
39
|
|
|
43
40
|
### 2 · research-components (reuse before you invent)
|
|
44
|
-
Check `catalog.json` **first** and **reuse**
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
exception, not the default.
|
|
41
|
+
Check `catalog.json` **first** and **reuse** what's there — it keeps screens consistent. Research
|
|
42
|
+
a reference UI only to fill a **genuine gap**; propose a **new** catalog component for it with a
|
|
43
|
+
**cited** reference. Reuse before invention — a new component is the exception.
|
|
48
44
|
|
|
49
45
|
### 3 · wireframe
|
|
50
|
-
Draw a **low-fi**, **structural** layout
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
Draw a **low-fi**, **structural** layout per screen — regions and component slots, no styling, no
|
|
47
|
+
color. The cheapest artifact that shows the *expected layout*, so the human corrects structure
|
|
48
|
+
before a pixel is styled. Confirm, then move on.
|
|
53
49
|
|
|
54
50
|
### 4 · render-capture-confirm
|
|
55
|
-
Render the screen as a **self-contained HTML mock** — the
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
**Capture** a real image (a headless screenshot) and present
|
|
59
|
-
|
|
60
|
-
`
|
|
61
|
-
|
|
62
|
-
so the screen the human approved is traceable from the task that builds it. The HTML mock is the
|
|
51
|
+
Render the screen as a **self-contained HTML mock** — the component library via CDN, bound to
|
|
52
|
+
`tokens.json` (CSS variables), composed from the **reusable per-component kit** (one token-bound
|
|
53
|
+
partial per catalog component), with realistic **mock** data.
|
|
54
|
+
**Capture** a real image (a headless screenshot) and present it to the human for **design-confirm**
|
|
55
|
+
— show-before-ask, **before build**. On confirm, record the layout to `prototypes/<name>.json` +
|
|
56
|
+
`catalog.json`, save the image to `.add/design/captures/<name>.<ext>`, and **mention it in the
|
|
57
|
+
feature's `TASK.md`** — so the approved screen is traceable from the task. The HTML mock is the
|
|
63
58
|
*visible evidence*; the json-render tree is the *machine-checkable* record.
|
|
64
59
|
|
|
60
|
+
**Persona evidence checklist.** Before design-confirm, match the screen to the seeded UI personas
|
|
61
|
+
(`.add/personas/*` covering visual design and UX research) and render their `## Success Metrics`
|
|
62
|
+
as a confirmable **checklist** beside the captured image — **both dimensions**: **UI-Designer**
|
|
63
|
+
(visual + WCAG-AA **accessibility**) and **UX-Researcher** (methodology-first,
|
|
64
|
+
**validated by user evidence, not assumed**). Each item traces to a success-metric
|
|
65
|
+
the human confirms; it is **evidence, never an auto-pass** — a persona **never lowers a gate**
|
|
66
|
+
(ADD principle 2). **No UI personas**? A **generic design-confirm**, never blocked; UI-less skips it.
|
|
67
|
+
|
|
65
68
|
## Tool-agnostic capture
|
|
66
69
|
|
|
67
|
-
How you render and capture is **your** choice
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
approves; the engine never renders. This keeps the loop tool-agnostic and the method renderer-free.
|
|
70
|
+
How you render and capture is **your** choice (headless browser, `html2image`, a design tool, a
|
|
71
|
+
screenshot service). The default is the self-contained HTML mock above, captured headless — no app
|
|
72
|
+
build, yet wearing the project's real tokens and components. For a json-render project, the default
|
|
73
|
+
is **`@json-render/image`** (Satori → PNG/SVG, no browser). The captured image is **design-confirm
|
|
74
|
+
evidence** the human approves; the engine never renders — the loop stays tool-agnostic, the method
|
|
75
|
+
renderer-free.
|
|
74
76
|
|
|
75
|
-
Captures live at **`.add/design/captures/<name>.<ext
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
Captures live at **`.add/design/captures/<name>.<ext>`**, mentioned in the feature's `TASK.md`.
|
|
78
|
+
`add.py check` raises a never-red `missing_capture` WARN for any prototype lacking one — a nudge
|
|
79
|
+
to render + confirm.
|
|
78
80
|
|
|
79
|
-
The loop **binds** the
|
|
80
|
-
`prototypes/<name>.json` are read
|
|
81
|
-
|
|
82
|
-
**identity** values — brand color, palette, typeface — stay **human-owned**: surface them for the
|
|
83
|
-
human to decide, never auto-pick a brand value (`udd-tokens.md`).
|
|
81
|
+
The loop **binds** the UDD contracts **read-only** — `tokens.json` / `catalog.json` /
|
|
82
|
+
`prototypes/<name>.json` are read, never reshaped (a reshape is a change request). **Identity**
|
|
83
|
+
values stay **human-owned** (`udd-tokens.md`).
|
|
84
84
|
|
|
85
85
|
## The hard rules
|
|
86
86
|
|
|
@@ -96,6 +96,9 @@ human to decide, never auto-pick a brand value (`udd-tokens.md`).
|
|
|
96
96
|
agent's own tools; the image is evidence, not an engine artifact.
|
|
97
97
|
- **Bind, don't break.** The loop reads `tokens.json` / `catalog.json` / `prototypes/<name>.json`
|
|
98
98
|
read-only; the data contract is unchanged, and identity values stay human-owned.
|
|
99
|
+
- **Confirm against the personas.** With UI personas seeded, the checklist carries the UI-Designer
|
|
100
|
+
(visual/accessibility) + UX-Researcher (evidence-not-assumption) success-metrics — evidence,
|
|
101
|
+
never an auto-pass.
|
|
99
102
|
</constraints>
|
|
100
103
|
|
|
101
104
|
> Used at specify for a UI feature: `phases/0-setup.md` scaffolds `DESIGN.md`, and
|
package/skill/add/fold.md
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
# Consolidating lessons — how the foundation self-improves
|
|
2
2
|
|
|
3
|
-
This **closes the loop**. `deltas.md` lets a task EMIT
|
|
3
|
+
This **closes the loop**. `deltas.md` lets a task EMIT `open` lessons in OBSERVE; consolidation gathers the confirmed ones into a **versioned foundation**, so `DDD · SDD · UDD · TDD · ADD` sharpen across milestones.
|
|
4
4
|
|
|
5
|
-
`add.py fold` is **judgment-free**: it only TRANSCRIBES each lesson's
|
|
5
|
+
`add.py fold` is **judgment-free**: it only TRANSCRIBES each lesson's captured text into its routed home and bumps the version — it never composes prose and **never self-approves** (running the command records the human's confirmation). Choosing which lessons to keep, and polishing raw bullets into lean prose (the **compaction door**, `compact-foundation.md`), stay the human's work.
|
|
6
6
|
|
|
7
7
|
## When to consolidate
|
|
8
8
|
|
|
9
|
-
At **milestone close
|
|
9
|
+
At **milestone close**, or **on demand** when open lessons pile up. One `add.py fold` = ONE session: one `foundation-version` bump, every resolved lesson stamped with it.
|
|
10
10
|
|
|
11
11
|
## The ritual
|
|
12
12
|
|
|
13
13
|
1. **Gather** — `add.py deltas` reads every task's OBSERVE block for lessons still `open`.
|
|
14
|
-
2. **Confirm** —
|
|
14
|
+
2. **Confirm** — mark any lesson you do NOT want `rejected` (left in place); running `add.py fold` over the rest IS your confirmation.
|
|
15
15
|
3. **Write** — `add.py fold [--task <slug>] [--comp <TAG>]` performs the mechanical write atomically:
|
|
16
16
|
- flips each selected `open` lesson to `folded` and stamps it `[folded foundation-version N]`;
|
|
17
|
-
- transcribes each
|
|
18
|
-
- prepends one
|
|
17
|
+
- transcribes each VERBATIM as one bullet at the TOP (newest-first) of its routed section;
|
|
18
|
+
- prepends one §Key Decisions row (date · what · why · outcome);
|
|
19
19
|
- bumps `foundation-version` by one.
|
|
20
20
|
Validate-all-then-write: if any precondition fails the command writes NOTHING.
|
|
21
|
-
4. **Propose & polish** —
|
|
21
|
+
4. **Propose & polish** — raw bullets later merge into lean prose (append-only, newest-first) via the compaction door.
|
|
22
22
|
|
|
23
23
|
## Consolidation routing
|
|
24
24
|
|
|
@@ -29,15 +29,14 @@ At **milestone close** (the natural version bump), or **on demand** when open le
|
|
|
29
29
|
| `UDD` | `PROJECT.md` §Users | transcribed bullet at the top |
|
|
30
30
|
| `TDD` | `CONVENTIONS.md` §Method learnings | transcribed bullet |
|
|
31
31
|
| `ADD` | `CONVENTIONS.md` §Method learnings | transcribed bullet |
|
|
32
|
+
| `persona:<slug>` | `.add/personas/<slug>.md` §Critical Rules / §Success Metrics | dated bullet at top; schema stays conformant |
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
A `persona:<slug> · <hint>` lesson routes into that persona doc, not a foundation file; it is still flipped `folded` and still bumps the version once (`deltas.md`).
|
|
34
35
|
|
|
35
36
|
## Status transitions & version
|
|
36
37
|
|
|
37
|
-
- **confirm
|
|
38
|
-
-
|
|
39
|
-
- Consolidation is **append-only (newest-first)**: PREPENDS new bullets/rows, never silently rewrites — EXCEPT via the recorded compaction door.
|
|
40
|
-
- Each `add.py fold` run **bumps** `foundation-version:` in `PROJECT.md` by one (monotonic int).
|
|
38
|
+
- **confirm** `open` → `folded`; **decline** `open` → `rejected` (left in place — auditable trail).
|
|
39
|
+
- Consolidation is **append-only (newest-first)** — PREPENDS, never silently rewrites, EXCEPT via the recorded compaction door.
|
|
41
40
|
|
|
42
41
|
## Reject codes
|
|
43
42
|
|
|
@@ -45,17 +44,20 @@ Every consolidation ALSO prepends one row at the TOP of `PROJECT.md` §Key Decis
|
|
|
45
44
|
- `no_open_deltas` — nothing is `open` in the selected scope. Version is NOT bumped.
|
|
46
45
|
- `missing_route_section` — a lesson routes to a foundation section that does not exist. Add the section header, then re-run. Nothing is written.
|
|
47
46
|
- `no_foundation_version` — `PROJECT.md` carries no parseable `foundation-version:` marker to bump.
|
|
47
|
+
- `missing_persona_target` — a `persona:<slug>` lesson with no `.add/personas/<slug>.md`. Fail-closed: nothing written, no bump. Seed the persona first.
|
|
48
|
+
- `persona_section_unroutable` — the section hint is not `critical-rule` or `success-metric`. Nothing is written.
|
|
49
|
+
- `persona_clobber_forbidden` — INVARIANT: a persona consolidation prepends only; it never drops existing content or breaks the schema.
|
|
48
50
|
</reject_codes>
|
|
49
51
|
|
|
50
|
-
|
|
52
|
+
Retired: `unconfirmed_fold` · `unroutable_delta` — running `add.py fold` IS the confirmation; a missing destination is `missing_route_section`.
|
|
51
53
|
|
|
52
54
|
## Worked example
|
|
53
55
|
|
|
54
56
|
The `competency-deltas` task closed its OBSERVE with two lessons:
|
|
55
57
|
|
|
56
58
|
```
|
|
57
|
-
- [ADD · open] dogfood .add/tooling
|
|
58
|
-
- [TDD · open] structural tests guard canonical artifacts but not their dogfood twins (evidence:
|
|
59
|
+
- [ADD · open] dogfood .add/tooling can silently diverge from canonical (evidence: md5 mismatch)
|
|
60
|
+
- [TDD · open] structural tests guard canonical artifacts but not their dogfood twins (evidence: this build)
|
|
59
61
|
```
|
|
60
62
|
|
|
61
|
-
The human
|
|
63
|
+
The human runs `add.py fold`: both transcribe into `CONVENTIONS.md` §Method learnings, a §Key Decisions row is prepended, both flip to `folded`, and `foundation-version` bumps 1 → 2 — one atomic write.
|
package/skill/add/intake.md
CHANGED
|
@@ -6,8 +6,9 @@ Before a task exists, ADD turns a raw request into correctly-sized, versioned sc
|
|
|
6
6
|
|
|
7
7
|
## Interview before you size
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
Run `add.py search <keyword> [<keyword> ...]` first — it surfaces overlapping/prior work in one
|
|
10
|
+
command instead of a full manual re-read. When the request arrives as a question, or its intent is
|
|
11
|
+
not sharp enough to place in one bucket: explore it WITH the user before classifying. Reflect the intent you heard, name what seems in and
|
|
11
12
|
out of scope, and offer 2–3 sized options with your own recommendation. Only then emit
|
|
12
13
|
`{ bucket, rationale, command }`. `ask_human` stays the floor: when interviewing cannot sharpen the
|
|
13
14
|
request, reject — never guess a bucket.
|
|
@@ -61,7 +62,7 @@ goal/body, the new TASK.md, or a note in the affected TASK.md — never in state
|
|
|
61
62
|
Some requests decompose into **N>1 milestones of the same line** — a roadmap, not one milestone.
|
|
62
63
|
Don't create only the first and lose the rest. Instead:
|
|
63
64
|
|
|
64
|
-
1. **Propose** the roadmap — the ordered milestone list, each with a one-line goal.
|
|
65
|
+
1. **Propose** the roadmap — the ordered milestone list, each with a one-line goal.
|
|
65
66
|
2. **Confirm** — the human confirms the roadmap before anything is created. Never auto-create N
|
|
66
67
|
milestones unprompted — the intake floor (`ask_human`) still holds.
|
|
67
68
|
3. **Create** all N on confirm — the first with `add.py new-milestone <slug>` (active), the rest
|
package/skill/add/loop.md
CHANGED
|
@@ -57,8 +57,7 @@ When every task is done but the goal is not, `add.py status` shows
|
|
|
57
57
|
|
|
58
58
|
When a deepened verify finds a criterion unmet on a task already marked done,
|
|
59
59
|
`add.py reopen <task> --to <phase> --reason "..."` returns it to the flow with a recorded
|
|
60
|
-
reason and a reset gate
|
|
61
|
-
loop's job.
|
|
60
|
+
reason and a reset gate — fired by this loop's judgment, not the engine's.
|
|
62
61
|
|
|
63
62
|
## The reactivation residual (deferred)
|
|
64
63
|
|
|
@@ -1,46 +1,43 @@
|
|
|
1
1
|
# Phase 0 — Ground (the real codebase)
|
|
2
2
|
|
|
3
|
-
Goal: before you specify
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
it is **AI-owned** — no human gate here (the one approval stays at the §3 freeze).
|
|
3
|
+
Goal: before you specify, gather the REAL working folder the task touches — files, symbols,
|
|
4
|
+
signatures, docs, config, data, conventions — so the contract/tests/build are grounded in what
|
|
5
|
+
exists, not assumed. Fill **§0 GROUND** in TASK.md: a per-task preamble to the seven steps,
|
|
6
|
+
**AI-owned** — no human gate (the one approval stays at the §3 freeze).
|
|
8
7
|
|
|
9
|
-
If you cannot name the files and symbols the task touches, you do not yet understand
|
|
10
|
-
|
|
8
|
+
If you cannot name the files and symbols the task touches, you do not yet understand it —
|
|
9
|
+
gathering them IS the job.
|
|
11
10
|
|
|
12
11
|
## Gather (in TASK.md §0)
|
|
13
12
|
|
|
14
|
-
- **Touches** — the real files · symbols · signatures the task
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- **
|
|
18
|
-
- **Honors** — the patterns and conventions the work must respect, cited from `PROJECT.md` / `CONVENTIONS.md`. Task-specific delta only — never re-derive the architecture.
|
|
13
|
+
- **Touches** — the real files · symbols · signatures the task reads or changes, named from the
|
|
14
|
+
actual code (code-navigation tools — grep / symbol search, never memory). Each as `path:symbol — what it is / how keyed`; cite the **symbol**, not a bare line number (`l.NNN` rots at build; symbols survive).
|
|
15
|
+
- **Context (working folder)** — NON-code artifacts touched: docs/textbase (`*.md`) · TODOs (`TODO`/`FIXME`) · config/manifests (`pyproject`/`package`/CI) · data/fixtures. Task-delta only.
|
|
16
|
+
- **Honors** — patterns/conventions the work must respect, cited from `PROJECT.md`/`CONVENTIONS.md`. Task-delta only — never re-derive the architecture.
|
|
19
17
|
- **Anchors the contract cites** — the specific symbols §3 CONTRACT will name. The contract may cite only anchors that appear here.
|
|
18
|
+
- **Issues/Risks (→ feed §1)** — concrete problems · traps · untestable risks you find in the real code while grounding; §1 SPECIFY builds on these, not on assumptions. Task-delta only.
|
|
19
|
+
- **Related intent** — the WHY: `PROJECT.md §` · `GLOSSARY` term(s) · the originating request/milestone rationale (intent, not Honors' conventions). Task-delta.
|
|
20
|
+
- **Ground SHA** — the commit you grounded against (`git rev-parse --short HEAD`); any line ref is "as of" it. `check` warns on a §0 that cites line numbers with no SHA.
|
|
20
21
|
|
|
21
|
-
**How
|
|
22
|
-
index / skim (offload to a cheap context, return a compact map); then DEEPEN on what THIS
|
|
23
|
-
task specifically needs — never lock a shallow first pass.
|
|
22
|
+
**How:** sweep BROAD cheaply (small-model subagent / fast index / skim → compact map), then DEEPEN on what THIS task needs — don't lock a shallow pass.
|
|
24
23
|
|
|
25
24
|
## Greenfield / first task
|
|
26
25
|
|
|
27
|
-
The first task
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
existing code; honors CONVENTIONS.md §X" is a complete grounding.
|
|
26
|
+
The first task runs ground too. With little/no code (greenfield) or mid-setup, your grounding IS
|
|
27
|
+
the foundation docs / brownfield scan you produced — point at them, don't re-scan. An honest
|
|
28
|
+
"new module, no code; honors CONVENTIONS.md §X" is complete.
|
|
31
29
|
|
|
32
30
|
## AI prompt
|
|
33
31
|
|
|
34
32
|
<prompt>
|
|
35
33
|
Role: an engineer who reads the real code before designing against it.
|
|
36
|
-
Read first: PROJECT.md · CONVENTIONS.md · the
|
|
37
|
-
Objective: fill §0 GROUND
|
|
38
|
-
|
|
34
|
+
Read first: PROJECT.md · CONVENTIONS.md · the files the task touches.
|
|
35
|
+
Objective: fill §0 GROUND from the codebase — files/symbols/signatures + conventions + the
|
|
36
|
+
anchors §3 cites + issues/risks found; never assumed.
|
|
39
37
|
Steps:
|
|
40
|
-
0. Sweep broad cheaply
|
|
41
|
-
1. Locate the files
|
|
42
|
-
2. Record
|
|
43
|
-
3. Name the anchors §3 will cite.
|
|
38
|
+
0. Sweep broad cheaply (small-model subagent / fast index / skim), then deepen task-specifically.
|
|
39
|
+
1. Locate the files/symbols the task reads or changes (code tools, not memory).
|
|
40
|
+
2. Record signatures/keying; cite conventions (task-delta); note risks for §1; name §3's anchors.
|
|
44
41
|
Never: invent a file, symbol, or signature you have not opened.
|
|
45
42
|
</prompt>
|
|
46
43
|
|
|
@@ -48,17 +45,18 @@ Never: invent a file, symbol, or signature you have not opened.
|
|
|
48
45
|
|
|
49
46
|
<exit_gate>
|
|
50
47
|
- [ ] **Touches** — the real files/symbols the task touches are named (from the code, not assumed).
|
|
51
|
-
- [ ] **Context** (working folder) — the non-code artifacts
|
|
52
|
-
- [ ] **Honors** — the patterns/conventions to honor are cited (task-delta
|
|
53
|
-
- [ ] **Anchors** — the anchors §3 will cite are listed
|
|
48
|
+
- [ ] **Context** (working folder) — the non-code artifacts touched (docs · config · data) are named, task-delta only.
|
|
49
|
+
- [ ] **Honors** — the patterns/conventions to honor are cited (task-delta; no architecture re-scan).
|
|
50
|
+
- [ ] **Anchors** — the anchors §3 will cite are listed (§3 names only anchors here).
|
|
51
|
+
- [ ] **Issues/Risks** — the problems/risks found are recorded for §1 (or an honest none).
|
|
52
|
+
- [ ] **Related intent** — the PROJECT/GLOSSARY/origin intent is linked (or an honest none).
|
|
53
|
+
- [ ] **Ground SHA** — the commit grounded against is recorded (line refs read "as of" it).
|
|
54
54
|
</exit_gate>
|
|
55
55
|
|
|
56
|
-
**Grounding is complete when**
|
|
57
|
-
|
|
58
|
-
assume. All four are non-optional — skipping **Context** (the working folder beyond code) is the usual
|
|
59
|
-
silent gap. §3 may cite only anchors that appear here.
|
|
56
|
+
**Grounding is complete when** every field is filled from real assets (a `<…>` placeholder = weak;
|
|
57
|
+
all non-optional). Skipping **Context** (beyond code) is the usual silent gap. §3 cites only anchors here.
|
|
60
58
|
|
|
61
|
-
> **Advisor · Confidence** — a broad sweep is the canonical spawn
|
|
59
|
+
> **Advisor · Confidence** — a broad sweep is the canonical spawn (advisor.md); self-score before you specify (confidence.md).
|
|
62
60
|
|
|
63
61
|
## Next
|
|
64
62
|
|