@pilotspace/add 1.13.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 +189 -1
- package/THIRD_PARTY_NOTICES.md +41 -0
- package/bin/cli.js +240 -26
- 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/17-components.md +23 -5
- 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 +8 -4
- package/docs/appendix-d-worked-example.md +79 -0
- 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/components.md +21 -23
- 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 +1076 -39
- 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 +2 -1
- 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/components.md
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# Components — monorepo and multi-repo slices
|
|
2
2
|
|
|
3
|
-
Opt-in pillar for a milestone
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
for this only when one milestone genuinely crosses components. Full narrative:
|
|
7
|
-
book chapter `17-components.md`.
|
|
3
|
+
Opt-in pillar for a milestone spanning **more than one green bar** — a BE + its
|
|
4
|
+
FE, a shared lib + two apps, services across repos. No components declared =
|
|
5
|
+
byte-identical to a single-codebase project. Full narrative: `17-components.md`.
|
|
8
6
|
|
|
9
7
|
## Declare (never inferred)
|
|
10
8
|
|
|
@@ -13,21 +11,21 @@ book chapter `17-components.md`.
|
|
|
13
11
|
```toml
|
|
14
12
|
[component.gateway]
|
|
15
13
|
root = "apps/gateway"
|
|
16
|
-
|
|
14
|
+
green_bar = "pytest + pyright"
|
|
17
15
|
[component.dashboard]
|
|
18
16
|
root = "apps/web"
|
|
19
|
-
|
|
17
|
+
green_bar = "vitest + a11y"
|
|
20
18
|
```
|
|
21
19
|
|
|
22
|
-
A task binds with a `component: <name>` header
|
|
23
|
-
|
|
20
|
+
A task binds with a `component: <name>` header → that root joins its §5 Scope,
|
|
21
|
+
and verify holds it to that component's green-bar.
|
|
24
22
|
|
|
25
23
|
## The loop
|
|
26
24
|
|
|
27
|
-
1. **Per-component verify.** A bound task must CITE its
|
|
28
|
-
the
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
1. **Per-component verify.** A bound task must CITE its green-bar in §6 evidence
|
|
26
|
+
or the gate refuses `component_green_bar_uncited`. The engine never runs the
|
|
27
|
+
suite — it **surfaces** the component's `verify` command (and records it in §6);
|
|
28
|
+
you run it (NO-EXEC). The fast lane carries the same `component:` affordance.
|
|
31
29
|
2. **Freeze a cross-component contract.** Declare `[contract.<id>]`
|
|
32
30
|
(producer + consumers). A task names its role `produces: <id>` / `consumes: <id>`.
|
|
33
31
|
The producer's freeze (contract→tests) writes the immutable snapshot
|
|
@@ -35,20 +33,20 @@ Scope, and verify holds it to that component's green-bar.
|
|
|
35
33
|
flags consumers `contract_consumer_stale`; a missing/malformed snapshot
|
|
36
34
|
HARD-STOPS — never build against an unfrozen shape.
|
|
37
35
|
3. **One milestone, full slice.** A `consumes:` task is HELD from advancing
|
|
38
|
-
scenarios→contract (`producer_contract_unfrozen`) until the producer's
|
|
39
|
-
|
|
40
|
-
milestone.
|
|
36
|
+
scenarios→contract (`producer_contract_unfrozen`) until the producer's snapshot
|
|
37
|
+
exists — and `producer_contract_stale` if a live producer re-opened/drifted its
|
|
38
|
+
§3 (freeze-recency). The FE stays downstream of the frozen BE, in one milestone.
|
|
41
39
|
4. **Across repos — federate.** A consumer repo declares `[federation.<id>]`
|
|
42
40
|
(`source` + optional `pin`); `add.py federate pull <id>` validates and lands a
|
|
43
|
-
byte-for-byte copy of the producer
|
|
44
|
-
|
|
41
|
+
byte-for-byte copy of the producer's snapshot locally. Fail-loud:
|
|
42
|
+
unknown id / unreadable source / a `source` escaping the repo's allowlist
|
|
43
|
+
(`federation_source_escapes`, confined to a repo-root sibling) / invalid
|
|
45
44
|
snapshot / version mismatch each HARD-STOPS and lands nothing.
|
|
46
45
|
|
|
47
46
|
## Hold the line
|
|
48
47
|
|
|
49
48
|
- **Declared, not inferred** — no scanning `apps/*`.
|
|
50
|
-
- **No central server / no shared mutable state** — federation copies an
|
|
51
|
-
|
|
52
|
-
- **No new approval** —
|
|
53
|
-
|
|
54
|
-
identity story (`streams.md`, governance), layered on this graph.
|
|
49
|
+
- **No central server / no shared mutable state** — federation copies an immutable
|
|
50
|
+
snapshot; each repo keeps its own `state.json`.
|
|
51
|
+
- **No new approval** — engine-enforced gates on the six-step flow, not extra human
|
|
52
|
+
checkpoints. Per-component ownership/autonomy is the identity story (`streams.md`).
|
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
|
|