drt-method 1.0.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/AGENTS.md +45 -0
- package/GETTING-STARTED.md +269 -0
- package/README.md +233 -0
- package/drt-method-1.0.0.tgz +0 -0
- package/drt-modules.yaml +1 -0
- package/package.json +51 -0
- package/scripts/install-from-github.ps1 +22 -0
- package/scripts/install-from-github.sh +17 -0
- package/src/core-skills/drt-advanced-elicitation/SKILL.md +142 -0
- package/src/core-skills/drt-advanced-elicitation/methods.csv +72 -0
- package/src/core-skills/drt-brainstorming/SKILL.md +80 -0
- package/src/core-skills/drt-brainstorming/assets/brain-icons.json +166 -0
- package/src/core-skills/drt-brainstorming/assets/brain-methods.csv +109 -0
- package/src/core-skills/drt-brainstorming/assets/brain-selector.html +326 -0
- package/src/core-skills/drt-brainstorming/customize.toml +84 -0
- package/src/core-skills/drt-brainstorming/references/converge.md +24 -0
- package/src/core-skills/drt-brainstorming/references/finalize.md +26 -0
- package/src/core-skills/drt-brainstorming/references/headless.md +54 -0
- package/src/core-skills/drt-brainstorming/references/in-chat-techniques.md +18 -0
- package/src/core-skills/drt-brainstorming/references/mode-autonomous.md +10 -0
- package/src/core-skills/drt-brainstorming/references/mode-facilitator.md +11 -0
- package/src/core-skills/drt-brainstorming/references/mode-partner.md +16 -0
- package/src/core-skills/drt-brainstorming/references/resume.md +5 -0
- package/src/core-skills/drt-brainstorming/scripts/brain.py +740 -0
- package/src/core-skills/drt-customize/SKILL.md +111 -0
- package/src/core-skills/drt-customize/scripts/list_customizable_skills.py +231 -0
- package/src/core-skills/drt-editorial-review-prose/SKILL.md +86 -0
- package/src/core-skills/drt-editorial-review-structure/SKILL.md +179 -0
- package/src/core-skills/drt-forge-idea/SKILL.md +107 -0
- package/src/core-skills/drt-forge-idea/customize.toml +42 -0
- package/src/core-skills/drt-forge-idea/scripts/resolve_personas.py +270 -0
- package/src/core-skills/drt-help/SKILL.md +75 -0
- package/src/core-skills/drt-index-docs/SKILL.md +66 -0
- package/src/core-skills/drt-party-mode/SKILL.md +60 -0
- package/src/core-skills/drt-party-mode/customize.toml +211 -0
- package/src/core-skills/drt-party-mode/references/create-party.md +70 -0
- package/src/core-skills/drt-party-mode/references/mode-agent-team.md +13 -0
- package/src/core-skills/drt-party-mode/references/mode-auto.md +13 -0
- package/src/core-skills/drt-party-mode/references/mode-subagent.md +31 -0
- package/src/core-skills/drt-party-mode/references/party-memory.md +51 -0
- package/src/core-skills/drt-party-mode/scripts/resolve_party.py +272 -0
- package/src/core-skills/drt-review-adversarial-general/SKILL.md +37 -0
- package/src/core-skills/drt-review-edge-case-hunter/SKILL.md +73 -0
- package/src/core-skills/drt-review-edge-case-hunter/references/deletion-check.md +14 -0
- package/src/core-skills/drt-review-verification-gap/SKILL.md +106 -0
- package/src/core-skills/drt-shard-doc/SKILL.md +105 -0
- package/src/core-skills/drt-spec/SKILL.md +160 -0
- package/src/core-skills/drt-spec/assets/headless-schemas.md +33 -0
- package/src/core-skills/drt-spec/assets/spec-template.md +49 -0
- package/src/core-skills/drt-spec/assets/stories-schema.md +44 -0
- package/src/core-skills/drt-spec/customize.toml +53 -0
- package/src/core-skills/module-help.csv +14 -0
- package/src/core-skills/module.yaml +33 -0
- package/src/drt-skills/1-analysis/drt-agent-analyst/SKILL.md +76 -0
- package/src/drt-skills/1-analysis/drt-agent-analyst/customize.toml +90 -0
- package/src/drt-skills/1-analysis/drt-agent-tech-writer/SKILL.md +76 -0
- package/src/drt-skills/1-analysis/drt-agent-tech-writer/customize.toml +81 -0
- package/src/drt-skills/1-analysis/drt-agent-tech-writer/explain-concept.md +20 -0
- package/src/drt-skills/1-analysis/drt-agent-tech-writer/mermaid-gen.md +20 -0
- package/src/drt-skills/1-analysis/drt-agent-tech-writer/validate-doc.md +19 -0
- package/src/drt-skills/1-analysis/drt-agent-tech-writer/write-document.md +20 -0
- package/src/drt-skills/1-analysis/drt-document-project/SKILL.md +62 -0
- package/src/drt-skills/1-analysis/drt-document-project/checklist.md +245 -0
- package/src/drt-skills/1-analysis/drt-document-project/customize.toml +41 -0
- package/src/drt-skills/1-analysis/drt-document-project/documentation-requirements.csv +12 -0
- package/src/drt-skills/1-analysis/drt-document-project/instructions.md +128 -0
- package/src/drt-skills/1-analysis/drt-document-project/templates/deep-dive-template.md +345 -0
- package/src/drt-skills/1-analysis/drt-document-project/templates/index-template.md +169 -0
- package/src/drt-skills/1-analysis/drt-document-project/templates/project-overview-template.md +103 -0
- package/src/drt-skills/1-analysis/drt-document-project/templates/project-scan-report-schema.json +160 -0
- package/src/drt-skills/1-analysis/drt-document-project/templates/source-tree-template.md +135 -0
- package/src/drt-skills/1-analysis/drt-document-project/workflows/deep-dive-instructions.md +300 -0
- package/src/drt-skills/1-analysis/drt-document-project/workflows/deep-dive-workflow.md +34 -0
- package/src/drt-skills/1-analysis/drt-document-project/workflows/full-scan-instructions.md +1111 -0
- package/src/drt-skills/1-analysis/drt-document-project/workflows/full-scan-workflow.md +34 -0
- package/src/drt-skills/1-analysis/drt-prfaq/SKILL.md +135 -0
- package/src/drt-skills/1-analysis/drt-prfaq/agents/artifact-analyzer.md +60 -0
- package/src/drt-skills/1-analysis/drt-prfaq/agents/web-researcher.md +49 -0
- package/src/drt-skills/1-analysis/drt-prfaq/assets/prfaq-template.md +62 -0
- package/src/drt-skills/1-analysis/drt-prfaq/bmad-manifest.json +16 -0
- package/src/drt-skills/1-analysis/drt-prfaq/customize.toml +41 -0
- package/src/drt-skills/1-analysis/drt-prfaq/references/customer-faq.md +55 -0
- package/src/drt-skills/1-analysis/drt-prfaq/references/internal-faq.md +51 -0
- package/src/drt-skills/1-analysis/drt-prfaq/references/press-release.md +60 -0
- package/src/drt-skills/1-analysis/drt-prfaq/references/verdict.md +83 -0
- package/src/drt-skills/1-analysis/drt-product-brief/SKILL.md +91 -0
- package/src/drt-skills/1-analysis/drt-product-brief/assets/brief-template.md +41 -0
- package/src/drt-skills/1-analysis/drt-product-brief/customize.toml +99 -0
- package/src/drt-skills/1-analysis/research/drt-domain-research/SKILL.md +96 -0
- package/src/drt-skills/1-analysis/research/drt-domain-research/customize.toml +41 -0
- package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-01-init.md +137 -0
- package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-02-domain-analysis.md +229 -0
- package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-05-technical-trends.md +234 -0
- package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-06-research-synthesis.md +450 -0
- package/src/drt-skills/1-analysis/research/drt-domain-research/research.template.md +29 -0
- package/src/drt-skills/1-analysis/research/drt-market-research/SKILL.md +96 -0
- package/src/drt-skills/1-analysis/research/drt-market-research/customize.toml +41 -0
- package/src/drt-skills/1-analysis/research/drt-market-research/research.template.md +29 -0
- package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-01-init.md +184 -0
- package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-02-customer-behavior.md +239 -0
- package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-03-customer-pain-points.md +251 -0
- package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-04-customer-decisions.md +261 -0
- package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-05-competitive-analysis.md +173 -0
- package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-06-research-completion.md +484 -0
- package/src/drt-skills/1-analysis/research/drt-technical-research/SKILL.md +96 -0
- package/src/drt-skills/1-analysis/research/drt-technical-research/customize.toml +41 -0
- package/src/drt-skills/1-analysis/research/drt-technical-research/research.template.md +29 -0
- package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-01-init.md +137 -0
- package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-02-technical-overview.md +239 -0
- package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-03-integration-patterns.md +248 -0
- package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-05-implementation-research.md +233 -0
- package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-06-research-synthesis.md +493 -0
- package/src/drt-skills/2-plan-workflows/drt-agent-pm/SKILL.md +76 -0
- package/src/drt-skills/2-plan-workflows/drt-agent-pm/customize.toml +75 -0
- package/src/drt-skills/2-plan-workflows/drt-agent-ux-designer/SKILL.md +76 -0
- package/src/drt-skills/2-plan-workflows/drt-agent-ux-designer/customize.toml +60 -0
- package/src/drt-skills/2-plan-workflows/drt-create-prd/SKILL.md +30 -0
- package/src/drt-skills/2-plan-workflows/drt-create-prd/customize.toml +41 -0
- package/src/drt-skills/2-plan-workflows/drt-edit-prd/SKILL.md +30 -0
- package/src/drt-skills/2-plan-workflows/drt-edit-prd/customize.toml +42 -0
- package/src/drt-skills/2-plan-workflows/drt-prd/SKILL.md +92 -0
- package/src/drt-skills/2-plan-workflows/drt-prd/assets/headless-schemas.md +76 -0
- package/src/drt-skills/2-plan-workflows/drt-prd/assets/prd-template.md +165 -0
- package/src/drt-skills/2-plan-workflows/drt-prd/assets/prd-validation-checklist.md +135 -0
- package/src/drt-skills/2-plan-workflows/drt-prd/assets/validation-report-template.html +325 -0
- package/src/drt-skills/2-plan-workflows/drt-prd/customize.toml +147 -0
- package/src/drt-skills/2-plan-workflows/drt-prd/references/headless.md +39 -0
- package/src/drt-skills/2-plan-workflows/drt-prd/references/validate.md +97 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/SKILL.md +90 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/assets/color-themes.md +9 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/assets/design-directions.md +9 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/assets/design-example-editorial.md +158 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/assets/design-example-mobile.md +93 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/assets/design-example-shadcn.md +109 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/assets/excalidraw-wireframe.md +19 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/assets/experience-example-mobile.md +112 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/assets/experience-example-shadcn.md +133 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/assets/headless-schemas.md +84 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/assets/key-screens.md +29 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/assets/validation-report-template.html +319 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/customize.toml +100 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/references/creative-tools.md +19 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/references/design-md-spec.md +50 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/references/headless.md +37 -0
- package/src/drt-skills/2-plan-workflows/drt-ux/references/validate.md +115 -0
- package/src/drt-skills/2-plan-workflows/drt-validate-prd/SKILL.md +30 -0
- package/src/drt-skills/2-plan-workflows/drt-validate-prd/customize.toml +42 -0
- package/src/drt-skills/3-solutioning/drt-agent-architect/SKILL.md +76 -0
- package/src/drt-skills/3-solutioning/drt-agent-architect/customize.toml +65 -0
- package/src/drt-skills/3-solutioning/drt-architecture/SKILL.md +85 -0
- package/src/drt-skills/3-solutioning/drt-architecture/assets/spine-template.md +79 -0
- package/src/drt-skills/3-solutioning/drt-architecture/customize.toml +100 -0
- package/src/drt-skills/3-solutioning/drt-architecture/references/headless.md +26 -0
- package/src/drt-skills/3-solutioning/drt-architecture/references/reviewer-gate.md +13 -0
- package/src/drt-skills/3-solutioning/drt-architecture/scripts/lint_spine.py +257 -0
- package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/SKILL.md +91 -0
- package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/customize.toml +41 -0
- package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-01-document-discovery.md +179 -0
- package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-02-prd-analysis.md +168 -0
- package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +169 -0
- package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-04-ux-alignment.md +129 -0
- package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-05-epic-quality-review.md +241 -0
- package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-06-final-assessment.md +132 -0
- package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/src/drt-skills/3-solutioning/drt-create-architecture/SKILL.md +30 -0
- package/src/drt-skills/3-solutioning/drt-create-architecture/customize.toml +41 -0
- package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/SKILL.md +93 -0
- package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/customize.toml +41 -0
- package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/steps/step-01-validate-prerequisites.md +263 -0
- package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/steps/step-02-design-epics.md +242 -0
- package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
- package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/steps/step-04-final-validation.md +143 -0
- package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/templates/epics-template.md +61 -0
- package/src/drt-skills/3-solutioning/drt-generate-project-context/SKILL.md +81 -0
- package/src/drt-skills/3-solutioning/drt-generate-project-context/customize.toml +41 -0
- package/src/drt-skills/3-solutioning/drt-generate-project-context/project-context-template.md +21 -0
- package/src/drt-skills/3-solutioning/drt-generate-project-context/steps/step-01-discover.md +186 -0
- package/src/drt-skills/3-solutioning/drt-generate-project-context/steps/step-02-generate.md +321 -0
- package/src/drt-skills/3-solutioning/drt-generate-project-context/steps/step-03-complete.md +284 -0
- package/src/drt-skills/4-implementation/drt-agent-dev/SKILL.md +76 -0
- package/src/drt-skills/4-implementation/drt-agent-dev/customize.toml +95 -0
- package/src/drt-skills/4-implementation/drt-checkpoint-preview/SKILL.md +68 -0
- package/src/drt-skills/4-implementation/drt-checkpoint-preview/customize.toml +41 -0
- package/src/drt-skills/4-implementation/drt-checkpoint-preview/generate-trail.md +38 -0
- package/src/drt-skills/4-implementation/drt-checkpoint-preview/step-01-orientation.md +105 -0
- package/src/drt-skills/4-implementation/drt-checkpoint-preview/step-02-walkthrough.md +89 -0
- package/src/drt-skills/4-implementation/drt-checkpoint-preview/step-03-detail-pass.md +106 -0
- package/src/drt-skills/4-implementation/drt-checkpoint-preview/step-04-testing.md +74 -0
- package/src/drt-skills/4-implementation/drt-checkpoint-preview/step-05-wrapup.md +30 -0
- package/src/drt-skills/4-implementation/drt-code-review/SKILL.md +90 -0
- package/src/drt-skills/4-implementation/drt-code-review/customize.toml +93 -0
- package/src/drt-skills/4-implementation/drt-code-review/steps/step-01-gather-context.md +84 -0
- package/src/drt-skills/4-implementation/drt-code-review/steps/step-02-review.md +32 -0
- package/src/drt-skills/4-implementation/drt-code-review/steps/step-03-triage.md +50 -0
- package/src/drt-skills/4-implementation/drt-code-review/steps/step-04-present.md +132 -0
- package/src/drt-skills/4-implementation/drt-correct-course/SKILL.md +301 -0
- package/src/drt-skills/4-implementation/drt-correct-course/checklist.md +288 -0
- package/src/drt-skills/4-implementation/drt-correct-course/customize.toml +41 -0
- package/src/drt-skills/4-implementation/drt-create-story/SKILL.md +432 -0
- package/src/drt-skills/4-implementation/drt-create-story/checklist.md +357 -0
- package/src/drt-skills/4-implementation/drt-create-story/customize.toml +41 -0
- package/src/drt-skills/4-implementation/drt-create-story/discover-inputs.md +88 -0
- package/src/drt-skills/4-implementation/drt-create-story/template.md +49 -0
- package/src/drt-skills/4-implementation/drt-dev-auto/SKILL.md +123 -0
- package/src/drt-skills/4-implementation/drt-dev-auto/compile-epic-context.md +62 -0
- package/src/drt-skills/4-implementation/drt-dev-auto/customize.toml +108 -0
- package/src/drt-skills/4-implementation/drt-dev-auto/spec-template.md +98 -0
- package/src/drt-skills/4-implementation/drt-dev-auto/step-01-clarify-and-route.md +84 -0
- package/src/drt-skills/4-implementation/drt-dev-auto/step-02-plan.md +31 -0
- package/src/drt-skills/4-implementation/drt-dev-auto/step-03-implement.md +42 -0
- package/src/drt-skills/4-implementation/drt-dev-auto/step-04-review.md +95 -0
- package/src/drt-skills/4-implementation/drt-dev-story/SKILL.md +500 -0
- package/src/drt-skills/4-implementation/drt-dev-story/checklist.md +80 -0
- package/src/drt-skills/4-implementation/drt-dev-story/customize.toml +41 -0
- package/src/drt-skills/4-implementation/drt-implement-task/SKILL.md +101 -0
- package/src/drt-skills/4-implementation/drt-implement-task/assets/task-spec-template.md +60 -0
- package/src/drt-skills/4-implementation/drt-implement-task/customize.toml +17 -0
- package/src/drt-skills/4-implementation/drt-implement-task/steps/step-01-gather-intent.md +42 -0
- package/src/drt-skills/4-implementation/drt-implement-task/steps/step-02-plan-and-approve.md +43 -0
- package/src/drt-skills/4-implementation/drt-implement-task/steps/step-03-confirm-dependencies.md +38 -0
- package/src/drt-skills/4-implementation/drt-implement-task/steps/step-04-implement.md +42 -0
- package/src/drt-skills/4-implementation/drt-implement-task/steps/step-05-qc-test.md +31 -0
- package/src/drt-skills/4-implementation/drt-implement-task/steps/step-06-quality-review.md +30 -0
- package/src/drt-skills/4-implementation/drt-implement-task/steps/step-07-fix-findings.md +33 -0
- package/src/drt-skills/4-implementation/drt-implement-task/steps/step-08-complete.md +35 -0
- package/src/drt-skills/4-implementation/drt-qa-generate-e2e-tests/SKILL.md +176 -0
- package/src/drt-skills/4-implementation/drt-qa-generate-e2e-tests/checklist.md +33 -0
- package/src/drt-skills/4-implementation/drt-qa-generate-e2e-tests/customize.toml +41 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/SKILL.md +13 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/compile-epic-context.md +62 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/customize.toml +83 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/render.js +206 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/spec-template.md +89 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/step-01-clarify-and-route.md +103 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/step-02-plan.md +47 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/step-03-implement.md +45 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/step-04-review.md +55 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/step-05-present.md +78 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/step-oneshot.md +78 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/sync-sprint-status.md +19 -0
- package/src/drt-skills/4-implementation/drt-quick-dev/workflow.md +85 -0
- package/src/drt-skills/4-implementation/drt-retrospective/SKILL.md +1527 -0
- package/src/drt-skills/4-implementation/drt-retrospective/customize.toml +41 -0
- package/src/drt-skills/4-implementation/drt-sprint-planning/SKILL.md +319 -0
- package/src/drt-skills/4-implementation/drt-sprint-planning/checklist.md +34 -0
- package/src/drt-skills/4-implementation/drt-sprint-planning/customize.toml +41 -0
- package/src/drt-skills/4-implementation/drt-sprint-planning/sprint-status-template.yaml +69 -0
- package/src/drt-skills/4-implementation/drt-sprint-status/SKILL.md +311 -0
- package/src/drt-skills/4-implementation/drt-sprint-status/customize.toml +41 -0
- package/src/drt-skills/module-help.csv +32 -0
- package/src/drt-skills/module.yaml +95 -0
- package/src/scripts/lib/load-toml.js +43 -0
- package/src/scripts/lib/merge-utils.js +89 -0
- package/src/scripts/memlog.js +184 -0
- package/src/scripts/package.json +7 -0
- package/src/scripts/resolve-config.js +56 -0
- package/src/scripts/resolve-customization.js +77 -0
- package/tools/installer/cli-utils.js +53 -0
- package/tools/installer/commands/install.js +149 -0
- package/tools/installer/commands/status.js +65 -0
- package/tools/installer/commands/uninstall.js +167 -0
- package/tools/installer/core/config.js +73 -0
- package/tools/installer/core/existing-install.js +121 -0
- package/tools/installer/core/install-paths.js +132 -0
- package/tools/installer/core/installer.js +1762 -0
- package/tools/installer/core/legacy-warnings.js +151 -0
- package/tools/installer/core/manifest-generator.js +859 -0
- package/tools/installer/core/manifest.js +433 -0
- package/tools/installer/core/uv-check.js +97 -0
- package/tools/installer/core/wsl-node-check.js +109 -0
- package/tools/installer/drt-cli.js +104 -0
- package/tools/installer/file-ops.js +204 -0
- package/tools/installer/fs-native.js +116 -0
- package/tools/installer/ide/_config-driven.js +972 -0
- package/tools/installer/ide/manager.js +324 -0
- package/tools/installer/ide/platform-codes.js +80 -0
- package/tools/installer/ide/platform-codes.yaml +343 -0
- package/tools/installer/ide/shared/installed-skills.js +50 -0
- package/tools/installer/ide/shared/path-utils.js +217 -0
- package/tools/installer/ide/shared/skill-manifest.js +57 -0
- package/tools/installer/install-messages.yaml +29 -0
- package/tools/installer/list-options.js +210 -0
- package/tools/installer/message-loader.js +83 -0
- package/tools/installer/modules/channel-plan.js +203 -0
- package/tools/installer/modules/channel-resolver.js +241 -0
- package/tools/installer/modules/custom-module-manager.js +918 -0
- package/tools/installer/modules/external-manager.js +667 -0
- package/tools/installer/modules/module-help-schema.js +13 -0
- package/tools/installer/modules/official-modules.js +2257 -0
- package/tools/installer/modules/plugin-resolver.js +398 -0
- package/tools/installer/modules/version-resolver.js +336 -0
- package/tools/installer/project-root.js +224 -0
- package/tools/installer/prompts.js +852 -0
- package/tools/installer/set-overrides.js +330 -0
- package/tools/installer/ui.js +2090 -0
- package/tools/installer/yaml-format.js +245 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# PRD Quality Rubric
|
|
2
|
+
|
|
3
|
+
A judgment rubric for the validator subagent. Walk the PRD with these dimensions in mind and write substantive findings — not box-ticking. The goal is a review that tells the user whether this PRD is *good*, not whether it has the right section headers.
|
|
4
|
+
|
|
5
|
+
Most PRDs do not need every dimension scrutinized equally. Calibrate to the agreed stakes, the PRD's shape (consumer product, internal tool, regulatory update, technical capability spec), and what the PRD itself is trying to do. Be specific — cite locations, quote phrases, name what's missing. Abstract criticism is failure of nerve.
|
|
6
|
+
|
|
7
|
+
## How to use this rubric
|
|
8
|
+
|
|
9
|
+
1. Read the full PRD (and addendum.md if present) before writing anything.
|
|
10
|
+
2. For each of the seven dimensions below, form a judgment — *strong / adequate / thin / broken* — backed by specifics from the PRD.
|
|
11
|
+
3. Write findings only where they add information. A `strong` dimension may need no findings; a `broken` one needs concrete, fixable ones.
|
|
12
|
+
4. Severity ranks impact on the PRD's usefulness, not how easy the fix is. A vague Vision statement is *critical* even though it's a one-paragraph fix; a glossary drift might be *low* even though it appears in many places.
|
|
13
|
+
5. The overall verdict is your synthesis — 2–3 sentences that name what holds up and what's at risk. Earn it with the dimension judgments.
|
|
14
|
+
|
|
15
|
+
## Output format
|
|
16
|
+
|
|
17
|
+
Write findings to `{doc_workspace}/review-rubric.md`:
|
|
18
|
+
|
|
19
|
+
```markdown
|
|
20
|
+
# PRD Quality Review — {prd_name}
|
|
21
|
+
|
|
22
|
+
## Overall verdict
|
|
23
|
+
[2–3 sentences. What holds up, what's at risk. Earned by the dimension judgments below.]
|
|
24
|
+
|
|
25
|
+
## Decision-readiness — [strong | adequate | thin | broken]
|
|
26
|
+
[1–3 paragraphs of judgment with specific PRD locations.]
|
|
27
|
+
|
|
28
|
+
### Findings
|
|
29
|
+
- **[critical|high|medium|low]** [Title] (§ location) — [Note]. *Fix:* [suggested fix].
|
|
30
|
+
|
|
31
|
+
## Substance over theater — [verdict]
|
|
32
|
+
...
|
|
33
|
+
|
|
34
|
+
(repeat for each dimension)
|
|
35
|
+
|
|
36
|
+
## Mechanical notes
|
|
37
|
+
[Glossary drift, ID continuity, broken cross-refs, Assumptions Index roundtrip. Lighter weight — these matter for downstream but don't drive the overall verdict.]
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## The seven dimensions
|
|
41
|
+
|
|
42
|
+
### 1. Decision-readiness
|
|
43
|
+
|
|
44
|
+
Can a decision-maker act on this PRD? Are the trade-offs surfaced honestly, or has the PRD smoothed everything to neutral? Would someone pushing back find their objection acknowledged or dodged?
|
|
45
|
+
|
|
46
|
+
Look for:
|
|
47
|
+
- Decisions that are stated as decisions, not buried as "considerations."
|
|
48
|
+
- Trade-offs named with what was given up, not just what was chosen.
|
|
49
|
+
- Open Questions that are actually open — not rhetorical questions with an answer in the next sentence.
|
|
50
|
+
- `[NOTE FOR PM]` callouts at real tensions, not at safe checkpoints.
|
|
51
|
+
|
|
52
|
+
Red flag: a PRD where every choice "balances" everything, every NFR is "important," every persona "values" the product.
|
|
53
|
+
|
|
54
|
+
### 2. Substance over theater
|
|
55
|
+
|
|
56
|
+
Is the content earned, or is it furniture? Distinguish:
|
|
57
|
+
|
|
58
|
+
- **Persona theater** — Personas that don't drive a single decision in the PRD. More than four personas. Personas whose only function is to make the PRD look thorough.
|
|
59
|
+
- **Innovation theater** — claimed novelty that isn't novel. Differentiation sections written because the template had one, not because Discovery surfaced something.
|
|
60
|
+
- **NFR theater** — copied boilerplate ("system must be scalable / secure / reliable") without product-specific thresholds.
|
|
61
|
+
- **Vision theater** — a Vision statement that could swap into any PRD in this category without change.
|
|
62
|
+
|
|
63
|
+
Flag what reads like furniture, even if it's well-written furniture.
|
|
64
|
+
|
|
65
|
+
### 3. Strategic coherence
|
|
66
|
+
|
|
67
|
+
Does the PRD have a thesis? Do the features serve a unified arc, or is it a list of capabilities someone wanted?
|
|
68
|
+
|
|
69
|
+
Look for:
|
|
70
|
+
- A stated thesis the PRD bets on (problem framing, user insight, market move).
|
|
71
|
+
- Feature prioritization that follows from the thesis — not from "what's easy first."
|
|
72
|
+
- Success Metrics that validate the thesis, not metrics that just measure activity (DAU/MAU when the thesis is about engagement quality is a tell).
|
|
73
|
+
- Counter-metrics named when SMs exist.
|
|
74
|
+
- Coherent MVP scope kind — problem-solving, experience, platform, or revenue — with scope logic that matches.
|
|
75
|
+
|
|
76
|
+
Red flag: a PRD that reads as a backlog with section headings.
|
|
77
|
+
|
|
78
|
+
### 4. Done-ness clarity
|
|
79
|
+
|
|
80
|
+
Would an engineer reading this PRD know what "done" looks like for each FR?
|
|
81
|
+
|
|
82
|
+
Look for:
|
|
83
|
+
- FRs with at least one testable consequence per FR — verifiable condition, measurable outcome.
|
|
84
|
+
- "System handles X gracefully," "reasonable performance," "user-friendly" — flag every one.
|
|
85
|
+
- Acceptance criteria implied or explicit. Sometimes the FR's consequences carry this; sometimes the PRD genuinely needs an Acceptance section.
|
|
86
|
+
- For non-functional sections (UX, performance, security): bounds, not adjectives.
|
|
87
|
+
|
|
88
|
+
This is the dimension downstream story creation will lean on hardest. Be unforgiving here.
|
|
89
|
+
|
|
90
|
+
### 5. Scope honesty
|
|
91
|
+
|
|
92
|
+
Are omissions explicit, or is the reader meant to infer them?
|
|
93
|
+
|
|
94
|
+
Look for:
|
|
95
|
+
- A Non-Goals section where it would do real work — and `[NON-GOAL for MVP]` callouts where omissions could be silently assumed.
|
|
96
|
+
- `[ASSUMPTION: …]` tags on inferences the user didn't directly confirm, indexed at the end.
|
|
97
|
+
- `[NOTE FOR PM]` callouts at deferred decisions and unresolved tensions.
|
|
98
|
+
- De-scoping proposed honestly, not done silently.
|
|
99
|
+
|
|
100
|
+
Open-items density: count Open Questions + `[ASSUMPTION]` + `[NOTE FOR PM]` callouts relative to stakes. High counts on a low-stakes PRD is fine; high counts on a green-light-to-build PRD is a blocker.
|
|
101
|
+
|
|
102
|
+
### 6. Downstream usability
|
|
103
|
+
|
|
104
|
+
If this PRD feeds UX, architecture, or story creation, can those workflows source-extract from it cleanly?
|
|
105
|
+
|
|
106
|
+
Look for:
|
|
107
|
+
- Glossary present; every domain noun used identically across FRs, UJs, SM definitions.
|
|
108
|
+
- FR / UJ / SM IDs contiguous, unique, and cross-references that resolve.
|
|
109
|
+
- Each section makes sense pulled out alone — cross-references via Glossary terms, not "see above."
|
|
110
|
+
- UJs each have a named protagonist; no floating UJs.
|
|
111
|
+
|
|
112
|
+
For standalone PRDs (no downstream), this dimension matters less — say so.
|
|
113
|
+
|
|
114
|
+
### 7. Shape fit
|
|
115
|
+
|
|
116
|
+
Has the PRD been forced into a shape that doesn't match the product?
|
|
117
|
+
|
|
118
|
+
- Consumer product / multi-stakeholder B2B / meaningful UX → UJs with named protagonists are load-bearing.
|
|
119
|
+
- Internal tool, single-operator role → capability spec shape; UJs may be overhead; SMs may be operational rather than user-facing.
|
|
120
|
+
- Regulatory or compliance update → constraint traceability is non-negotiable; UJs may be irrelevant.
|
|
121
|
+
- Hobby / solo → rigor light, substance bar still applies.
|
|
122
|
+
- Brownfield → existing-code references must be accurate; new UJs and existing UJs must be distinguished.
|
|
123
|
+
- Chain-top (feeds UX → architecture → stories) → downstream usability matters more; standalone PRDs can be lighter on traceability.
|
|
124
|
+
|
|
125
|
+
Flag PRDs that are over-formalized (UJ density for a single-operator tool) or under-formalized (consumer product with no UJs).
|
|
126
|
+
|
|
127
|
+
## Mechanical notes
|
|
128
|
+
|
|
129
|
+
Cover these as a tail section, not a primary dimension. They matter for downstream but don't drive the verdict on whether the PRD is good.
|
|
130
|
+
|
|
131
|
+
- Glossary drift (case, plural, synonyms across the PRD).
|
|
132
|
+
- ID continuity (gaps, duplicates, unresolved cross-references).
|
|
133
|
+
- Assumptions Index roundtrip (every inline `[ASSUMPTION]` indexed; index entries all appear inline).
|
|
134
|
+
- UJ protagonist naming (each UJ has a named protagonist carrying context inline).
|
|
135
|
+
- Required sections present for the agreed stakes and product type.
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<!--
|
|
3
|
+
PRD Validation Report — skeleton template.
|
|
4
|
+
|
|
5
|
+
This file is a starter the synthesis pass fills in directly. There is no
|
|
6
|
+
substitution engine. The LLM:
|
|
7
|
+
1. Reads {doc_workspace}/review-rubric.md and every review-{slug}.md from
|
|
8
|
+
additional reviewers.
|
|
9
|
+
2. Copies this skeleton.
|
|
10
|
+
3. Replaces the placeholder content (everything between TEMPLATE markers)
|
|
11
|
+
with the consolidated review, preserving the structure and CSS.
|
|
12
|
+
4. Writes the result to {doc_workspace}/validation-report.html.
|
|
13
|
+
5. Writes a markdown twin to {doc_workspace}/validation-report.md.
|
|
14
|
+
|
|
15
|
+
Visual rules the LLM must preserve:
|
|
16
|
+
- The container width, the color tokens, the typography.
|
|
17
|
+
- One dimension = one collapsible <section class="dimension">.
|
|
18
|
+
- Verdict pill uses the verdict-* class matching its judgment.
|
|
19
|
+
- Severity badge uses the sev-* class matching its level.
|
|
20
|
+
- Each extra reviewer (adversarial, etc.) gets its own collapsible section
|
|
21
|
+
below the rubric dimensions.
|
|
22
|
+
- The footer always shows the artifact paths and timestamp.
|
|
23
|
+
-->
|
|
24
|
+
<html lang="en">
|
|
25
|
+
<head>
|
|
26
|
+
<meta charset="utf-8">
|
|
27
|
+
<title>PRD Validation: TEMPLATE_PRD_NAME</title>
|
|
28
|
+
<style>
|
|
29
|
+
:root {
|
|
30
|
+
--bg: #fafaf9;
|
|
31
|
+
--surface: #ffffff;
|
|
32
|
+
--border: #e7e5e4;
|
|
33
|
+
--text: #1c1917;
|
|
34
|
+
--muted: #78716c;
|
|
35
|
+
|
|
36
|
+
--verdict-strong: #16a34a;
|
|
37
|
+
--verdict-adequate: #65a30d;
|
|
38
|
+
--verdict-thin: #d97706;
|
|
39
|
+
--verdict-broken: #dc2626;
|
|
40
|
+
|
|
41
|
+
--sev-low: #64748b;
|
|
42
|
+
--sev-medium: #ca8a04;
|
|
43
|
+
--sev-high: #ea580c;
|
|
44
|
+
--sev-critical: #dc2626;
|
|
45
|
+
|
|
46
|
+
--grade-exc: #16a34a;
|
|
47
|
+
--grade-good: #65a30d;
|
|
48
|
+
--grade-fair: #d97706;
|
|
49
|
+
--grade-poor: #dc2626;
|
|
50
|
+
}
|
|
51
|
+
* { box-sizing: border-box; }
|
|
52
|
+
html, body { margin: 0; padding: 0; }
|
|
53
|
+
body {
|
|
54
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, system-ui, sans-serif;
|
|
55
|
+
background: var(--bg);
|
|
56
|
+
color: var(--text);
|
|
57
|
+
line-height: 1.6;
|
|
58
|
+
font-size: 15px;
|
|
59
|
+
}
|
|
60
|
+
.container { max-width: 960px; margin: 0 auto; padding: 32px 24px 64px; }
|
|
61
|
+
|
|
62
|
+
header.report-header {
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: flex-start;
|
|
65
|
+
justify-content: space-between;
|
|
66
|
+
gap: 24px;
|
|
67
|
+
padding-bottom: 16px;
|
|
68
|
+
border-bottom: 1px solid var(--border);
|
|
69
|
+
margin-bottom: 24px;
|
|
70
|
+
}
|
|
71
|
+
.title h1 { margin: 0; font-size: 22px; font-weight: 600; letter-spacing: -0.01em; }
|
|
72
|
+
.title .subtitle { color: var(--muted); font-size: 13px; margin-top: 4px; font-family: ui-monospace, "SF Mono", Menlo, monospace; }
|
|
73
|
+
.grade {
|
|
74
|
+
padding: 10px 18px;
|
|
75
|
+
border-radius: 8px;
|
|
76
|
+
font-weight: 600;
|
|
77
|
+
color: white;
|
|
78
|
+
font-size: 15px;
|
|
79
|
+
white-space: nowrap;
|
|
80
|
+
}
|
|
81
|
+
.grade-excellent { background: var(--grade-exc); }
|
|
82
|
+
.grade-good { background: var(--grade-good); }
|
|
83
|
+
.grade-fair { background: var(--grade-fair); }
|
|
84
|
+
.grade-poor { background: var(--grade-poor); }
|
|
85
|
+
|
|
86
|
+
.synthesis {
|
|
87
|
+
background: var(--surface);
|
|
88
|
+
border: 1px solid var(--border);
|
|
89
|
+
border-left: 3px solid var(--muted);
|
|
90
|
+
border-radius: 8px;
|
|
91
|
+
padding: 18px 22px;
|
|
92
|
+
margin-bottom: 24px;
|
|
93
|
+
font-size: 15.5px;
|
|
94
|
+
}
|
|
95
|
+
.synthesis p { margin: 0 0 10px; }
|
|
96
|
+
.synthesis p:last-child { margin-bottom: 0; }
|
|
97
|
+
|
|
98
|
+
.dimension-summary {
|
|
99
|
+
display: grid;
|
|
100
|
+
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
101
|
+
gap: 10px;
|
|
102
|
+
margin-bottom: 24px;
|
|
103
|
+
}
|
|
104
|
+
.dim-card {
|
|
105
|
+
background: var(--surface);
|
|
106
|
+
border: 1px solid var(--border);
|
|
107
|
+
border-radius: 8px;
|
|
108
|
+
padding: 12px 14px;
|
|
109
|
+
}
|
|
110
|
+
.dim-card .dim-name { font-size: 13px; color: var(--muted); margin-bottom: 6px; }
|
|
111
|
+
.dim-card .dim-verdict { font-size: 14px; font-weight: 600; }
|
|
112
|
+
|
|
113
|
+
section.dimension, section.reviewer-section { margin-bottom: 14px; }
|
|
114
|
+
section.dimension details, section.reviewer-section details {
|
|
115
|
+
background: var(--surface);
|
|
116
|
+
border: 1px solid var(--border);
|
|
117
|
+
border-radius: 8px;
|
|
118
|
+
overflow: hidden;
|
|
119
|
+
}
|
|
120
|
+
section summary {
|
|
121
|
+
padding: 14px 20px;
|
|
122
|
+
cursor: pointer;
|
|
123
|
+
user-select: none;
|
|
124
|
+
list-style: none;
|
|
125
|
+
display: flex;
|
|
126
|
+
align-items: center;
|
|
127
|
+
gap: 12px;
|
|
128
|
+
}
|
|
129
|
+
section summary::-webkit-details-marker { display: none; }
|
|
130
|
+
section summary::before {
|
|
131
|
+
content: "▸";
|
|
132
|
+
display: inline-block;
|
|
133
|
+
color: var(--muted);
|
|
134
|
+
transition: transform 0.15s ease;
|
|
135
|
+
}
|
|
136
|
+
section details[open] summary::before { transform: rotate(90deg); }
|
|
137
|
+
section summary h2 {
|
|
138
|
+
display: inline;
|
|
139
|
+
margin: 0;
|
|
140
|
+
font-size: 16px;
|
|
141
|
+
font-weight: 600;
|
|
142
|
+
letter-spacing: -0.005em;
|
|
143
|
+
flex: 1;
|
|
144
|
+
}
|
|
145
|
+
.verdict-pill {
|
|
146
|
+
font-size: 11px;
|
|
147
|
+
padding: 3px 10px;
|
|
148
|
+
border-radius: 999px;
|
|
149
|
+
font-weight: 600;
|
|
150
|
+
text-transform: uppercase;
|
|
151
|
+
letter-spacing: 0.04em;
|
|
152
|
+
color: white;
|
|
153
|
+
}
|
|
154
|
+
.verdict-strong { background: var(--verdict-strong); }
|
|
155
|
+
.verdict-adequate { background: var(--verdict-adequate); }
|
|
156
|
+
.verdict-thin { background: var(--verdict-thin); }
|
|
157
|
+
.verdict-broken { background: var(--verdict-broken); }
|
|
158
|
+
|
|
159
|
+
.dim-body { padding: 4px 20px 18px; }
|
|
160
|
+
.dim-judgment { color: var(--text); font-size: 14.5px; }
|
|
161
|
+
.dim-judgment p { margin: 0 0 10px; }
|
|
162
|
+
|
|
163
|
+
.findings-list { padding: 0 20px 4px; }
|
|
164
|
+
article.finding {
|
|
165
|
+
padding: 14px 0;
|
|
166
|
+
border-top: 1px solid var(--border);
|
|
167
|
+
}
|
|
168
|
+
article.finding:first-child { border-top: none; }
|
|
169
|
+
article.finding header {
|
|
170
|
+
display: flex;
|
|
171
|
+
align-items: center;
|
|
172
|
+
gap: 10px;
|
|
173
|
+
flex-wrap: wrap;
|
|
174
|
+
margin-bottom: 6px;
|
|
175
|
+
}
|
|
176
|
+
.badge {
|
|
177
|
+
font-size: 10.5px;
|
|
178
|
+
padding: 3px 8px;
|
|
179
|
+
border-radius: 4px;
|
|
180
|
+
font-weight: 600;
|
|
181
|
+
text-transform: uppercase;
|
|
182
|
+
letter-spacing: 0.04em;
|
|
183
|
+
line-height: 1.4;
|
|
184
|
+
}
|
|
185
|
+
.badge-sev-low { background: rgba(100, 116, 139, 0.12); color: var(--sev-low); }
|
|
186
|
+
.badge-sev-medium { background: rgba(202, 138, 4, 0.14); color: var(--sev-medium); }
|
|
187
|
+
.badge-sev-high { background: rgba(234, 88, 12, 0.14); color: var(--sev-high); }
|
|
188
|
+
.badge-sev-critical { background: rgba(220, 38, 38, 0.14); color: var(--sev-critical); }
|
|
189
|
+
.finding-title { margin: 0; font-size: 15px; font-weight: 500; flex: 1; min-width: 200px; }
|
|
190
|
+
.finding-location { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 12.5px; color: var(--muted); }
|
|
191
|
+
.finding-note, .finding-fix { margin-top: 6px; font-size: 14px; }
|
|
192
|
+
.finding-fix strong { color: var(--muted); font-weight: 500; }
|
|
193
|
+
|
|
194
|
+
.reviewer-source {
|
|
195
|
+
font-size: 12px;
|
|
196
|
+
color: var(--muted);
|
|
197
|
+
font-family: ui-monospace, "SF Mono", Menlo, monospace;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.mechanical {
|
|
201
|
+
background: var(--surface);
|
|
202
|
+
border: 1px solid var(--border);
|
|
203
|
+
border-radius: 8px;
|
|
204
|
+
padding: 16px 20px;
|
|
205
|
+
margin-top: 24px;
|
|
206
|
+
font-size: 14px;
|
|
207
|
+
}
|
|
208
|
+
.mechanical h3 { margin: 0 0 10px; font-size: 14px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.04em; }
|
|
209
|
+
.mechanical ul { margin: 0; padding-left: 20px; }
|
|
210
|
+
.mechanical li { margin-bottom: 4px; color: var(--text); }
|
|
211
|
+
|
|
212
|
+
footer.report-footer {
|
|
213
|
+
margin-top: 40px;
|
|
214
|
+
padding-top: 16px;
|
|
215
|
+
border-top: 1px solid var(--border);
|
|
216
|
+
font-size: 12px;
|
|
217
|
+
color: var(--muted);
|
|
218
|
+
font-family: ui-monospace, "SF Mono", Menlo, monospace;
|
|
219
|
+
}
|
|
220
|
+
footer .meta { display: flex; gap: 24px; flex-wrap: wrap; }
|
|
221
|
+
</style>
|
|
222
|
+
</head>
|
|
223
|
+
<body>
|
|
224
|
+
<div class="container">
|
|
225
|
+
|
|
226
|
+
<!-- TEMPLATE: header. Fill prd name, prd path, grade text & class. -->
|
|
227
|
+
<header class="report-header">
|
|
228
|
+
<div class="title">
|
|
229
|
+
<h1>TEMPLATE_PRD_NAME — Validation Report</h1>
|
|
230
|
+
<div class="subtitle">TEMPLATE_PRD_PATH</div>
|
|
231
|
+
</div>
|
|
232
|
+
<div class="grade TEMPLATE_GRADE_CLASS">TEMPLATE_GRADE</div>
|
|
233
|
+
</header>
|
|
234
|
+
|
|
235
|
+
<!-- TEMPLATE: overall synthesis paragraphs. Lift directly from
|
|
236
|
+
review-rubric.md "Overall verdict" section; expand if extra reviewers
|
|
237
|
+
materially shift the picture. Wrap each paragraph in <p>. -->
|
|
238
|
+
<div class="synthesis">
|
|
239
|
+
<p>TEMPLATE_SYNTHESIS_PARAGRAPH</p>
|
|
240
|
+
</div>
|
|
241
|
+
|
|
242
|
+
<!-- TEMPLATE: dimension summary cards. One per rubric dimension. The
|
|
243
|
+
dim-verdict text uses one of: strong | adequate | thin | broken. -->
|
|
244
|
+
<div class="dimension-summary">
|
|
245
|
+
<div class="dim-card">
|
|
246
|
+
<div class="dim-name">Decision-readiness</div>
|
|
247
|
+
<div class="dim-verdict" style="color: var(--verdict-TEMPLATE_VERDICT)">TEMPLATE_VERDICT_TEXT</div>
|
|
248
|
+
</div>
|
|
249
|
+
<!-- repeat for each of the seven dimensions -->
|
|
250
|
+
</div>
|
|
251
|
+
|
|
252
|
+
<!-- TEMPLATE: one section per rubric dimension. Skip a dimension entirely
|
|
253
|
+
if the rubric review marked it n/a for this PRD (e.g. downstream
|
|
254
|
+
usability for a standalone PRD). Open the section by default if
|
|
255
|
+
verdict is thin or broken. -->
|
|
256
|
+
<section class="dimension">
|
|
257
|
+
<details open>
|
|
258
|
+
<summary>
|
|
259
|
+
<h2>Decision-readiness</h2>
|
|
260
|
+
<span class="verdict-pill verdict-TEMPLATE_VERDICT">TEMPLATE_VERDICT_TEXT</span>
|
|
261
|
+
</summary>
|
|
262
|
+
<div class="dim-body">
|
|
263
|
+
<div class="dim-judgment">
|
|
264
|
+
<p>TEMPLATE_DIMENSION_JUDGMENT</p>
|
|
265
|
+
</div>
|
|
266
|
+
</div>
|
|
267
|
+
<div class="findings-list">
|
|
268
|
+
<!-- TEMPLATE: zero or more findings -->
|
|
269
|
+
<article class="finding">
|
|
270
|
+
<header>
|
|
271
|
+
<span class="badge badge-sev-TEMPLATE_SEVERITY">TEMPLATE_SEVERITY</span>
|
|
272
|
+
<h3 class="finding-title">TEMPLATE_FINDING_TITLE</h3>
|
|
273
|
+
<span class="finding-location">TEMPLATE_LOCATION</span>
|
|
274
|
+
</header>
|
|
275
|
+
<div class="finding-note">TEMPLATE_FINDING_NOTE</div>
|
|
276
|
+
<div class="finding-fix"><strong>Fix:</strong> TEMPLATE_SUGGESTED_FIX</div>
|
|
277
|
+
</article>
|
|
278
|
+
</div>
|
|
279
|
+
</details>
|
|
280
|
+
</section>
|
|
281
|
+
|
|
282
|
+
<!-- TEMPLATE: one section per extra reviewer that ran (adversarial, etc.).
|
|
283
|
+
Skip this block entirely if only the rubric walker ran. -->
|
|
284
|
+
<section class="reviewer-section">
|
|
285
|
+
<details>
|
|
286
|
+
<summary>
|
|
287
|
+
<h2>Adversarial review</h2>
|
|
288
|
+
<span class="reviewer-source">TEMPLATE_REVIEWER_SOURCE_FILE</span>
|
|
289
|
+
</summary>
|
|
290
|
+
<div class="dim-body">
|
|
291
|
+
<div class="dim-judgment">
|
|
292
|
+
<p>TEMPLATE_REVIEWER_PREAMBLE</p>
|
|
293
|
+
</div>
|
|
294
|
+
</div>
|
|
295
|
+
<div class="findings-list">
|
|
296
|
+
<article class="finding">
|
|
297
|
+
<header>
|
|
298
|
+
<span class="badge badge-sev-TEMPLATE_SEVERITY">TEMPLATE_SEVERITY</span>
|
|
299
|
+
<h3 class="finding-title">TEMPLATE_FINDING_TITLE</h3>
|
|
300
|
+
<span class="finding-location">TEMPLATE_LOCATION</span>
|
|
301
|
+
</header>
|
|
302
|
+
<div class="finding-note">TEMPLATE_FINDING_NOTE</div>
|
|
303
|
+
<div class="finding-fix"><strong>Fix:</strong> TEMPLATE_SUGGESTED_FIX</div>
|
|
304
|
+
</article>
|
|
305
|
+
</div>
|
|
306
|
+
</details>
|
|
307
|
+
</section>
|
|
308
|
+
|
|
309
|
+
<!-- TEMPLATE: mechanical notes — short, bulleted. Skip if there are none. -->
|
|
310
|
+
<div class="mechanical">
|
|
311
|
+
<h3>Mechanical notes</h3>
|
|
312
|
+
<ul>
|
|
313
|
+
<li>TEMPLATE_MECHANICAL_NOTE</li>
|
|
314
|
+
</ul>
|
|
315
|
+
</div>
|
|
316
|
+
|
|
317
|
+
<footer class="report-footer">
|
|
318
|
+
<div class="meta">
|
|
319
|
+
<span>Rubric: TEMPLATE_RUBRIC_PATH</span>
|
|
320
|
+
<span>Generated: TEMPLATE_TIMESTAMP</span>
|
|
321
|
+
</div>
|
|
322
|
+
</footer>
|
|
323
|
+
</div>
|
|
324
|
+
</body>
|
|
325
|
+
</html>
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# DO NOT EDIT -- overwritten on every update.
|
|
2
|
+
#
|
|
3
|
+
# Workflow customization surface for drt-prd.
|
|
4
|
+
#
|
|
5
|
+
# Override files (not edited here):
|
|
6
|
+
# {project-root}/_drt/custom/drt-prd.toml (team)
|
|
7
|
+
# {project-root}/_drt/custom/drt-prd.user.toml (personal)
|
|
8
|
+
|
|
9
|
+
[workflow]
|
|
10
|
+
|
|
11
|
+
# --- Configurable below. Overrides merge per DRT structural rules: ---
|
|
12
|
+
# scalars: override wins • arrays: append
|
|
13
|
+
|
|
14
|
+
# Steps to run before the standard activation (config load, greet).
|
|
15
|
+
# Use for pre-flight loads, compliance checks, etc.
|
|
16
|
+
activation_steps_prepend = []
|
|
17
|
+
|
|
18
|
+
# Steps to run after greet but before the workflow begins.
|
|
19
|
+
# Use for context-heavy setup that should happen once the user has been acknowledged.
|
|
20
|
+
activation_steps_append = []
|
|
21
|
+
|
|
22
|
+
# Persistent facts the workflow keeps in mind for the whole run
|
|
23
|
+
# (standards, compliance constraints, stylistic guardrails).
|
|
24
|
+
# Each entry is either a literal sentence, a skill prefixed with `skill:`, or a `file:`-prefixed path/glob
|
|
25
|
+
# whose contents are loaded as facts.
|
|
26
|
+
#
|
|
27
|
+
# Default loads project-context.md if drt-generate-project-context has produced one — this gives
|
|
28
|
+
# the facilitator persistent awareness of the project's tech, domain, and constraints without
|
|
29
|
+
# re-asking. Common opt-ins (set in team/user override TOML):
|
|
30
|
+
# "skill:acme-co:terms-and-conditions" # a skill that contains some relevant info
|
|
31
|
+
# "Investor PRDs must include a market sizing section." # generic agent instruction
|
|
32
|
+
persistent_facts = [
|
|
33
|
+
"file:{project-root}/**/project-context.md",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
# Executed when the workflow completes (after the user has been told the
|
|
37
|
+
# PRD is ready). Accepts either a string scalar (single instruction)
|
|
38
|
+
# or an array of instructions executed in order. Empty for none.
|
|
39
|
+
on_complete = ""
|
|
40
|
+
|
|
41
|
+
# Default PRD structure. Treated as a starting point — the LLM adapts it
|
|
42
|
+
# to the product, project type, and domain. Override the path in team/user TOML
|
|
43
|
+
# to enforce a different structure (e.g. regulated-industry, internal-tool, investor-input).
|
|
44
|
+
prd_template = "assets/prd-template.md"
|
|
45
|
+
|
|
46
|
+
# PRD quality rubric used at the Validate intent and at Finalize step 3.
|
|
47
|
+
# A subagent walks the rubric against prd.md and writes a substantive review
|
|
48
|
+
# organized by quality dimensions (decision-readiness, substance, strategic
|
|
49
|
+
# coherence, etc.). Override the path in team/user TOML to enforce an
|
|
50
|
+
# org-specific rubric (regulated-industry compliance, investor-pitch standards,
|
|
51
|
+
# etc.). The filename "checklist" is retained for back-compat with override
|
|
52
|
+
# files; the content is a judgment rubric, not a boolean checklist.
|
|
53
|
+
validation_checklist_template = "assets/prd-validation-checklist.md"
|
|
54
|
+
|
|
55
|
+
# HTML skeleton the synthesis pass fills directly when consolidating reviewer
|
|
56
|
+
# outputs into a validation report. No substitution engine — the parent LLM
|
|
57
|
+
# reads every {doc_workspace}/review-*.md, fills the skeleton's TEMPLATE_*
|
|
58
|
+
# placeholders, and writes the result. Fully overridable to match org branding.
|
|
59
|
+
# Uses inline CSS, no external dependencies, and native HTML <details> for
|
|
60
|
+
# collapse — no JS.
|
|
61
|
+
validation_report_template = "assets/validation-report-template.html"
|
|
62
|
+
|
|
63
|
+
# Run folder location. The PRD, optional addendum, memlog, and optional
|
|
64
|
+
# validation report all land inside `{prd_output_path}/{run_folder_pattern}/`.
|
|
65
|
+
# Resume-check scans `{prd_output_path}` for prior unfinished runs.
|
|
66
|
+
prd_output_path = "{planning_artifacts}/prds"
|
|
67
|
+
run_folder_pattern = "prd-{project_name}-{date}"
|
|
68
|
+
|
|
69
|
+
# Document standards applied to human-consumed docs at finalize. Each entry is
|
|
70
|
+
# a `skill:`, `file:`, or plain-text directive; the parent LLM applies the
|
|
71
|
+
# findings before the user sees the draft. Encodes standards, not options.
|
|
72
|
+
#
|
|
73
|
+
# Examples:
|
|
74
|
+
# "skill:drt-editorial-review-prose"
|
|
75
|
+
# "file:{project-root}/_drt/style-guides/company-voice.md"
|
|
76
|
+
# "Convert all dates to ISO 8601 format."
|
|
77
|
+
#
|
|
78
|
+
# Suggested order (broader passes first, narrower last):
|
|
79
|
+
# 1. Structural (cuts, reorganization, section sizing)
|
|
80
|
+
# 2. Content/voice/conventions (org standards, tone, terminology, compliance)
|
|
81
|
+
# 3. Prose mechanics (grammar, clarity, typos)
|
|
82
|
+
#
|
|
83
|
+
# Override the array in team/user TOML to add additional standards. Append-only:
|
|
84
|
+
# base entries cannot be removed or replaced (resolver has no removal mechanism).
|
|
85
|
+
doc_standards = [
|
|
86
|
+
"skill:drt-editorial-review-structure",
|
|
87
|
+
"skill:drt-editorial-review-prose",
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
# External-source registry. Natural-language directives describing knowledge
|
|
91
|
+
# bases, MCP tools, or internal systems the LLM may consult during the workflow
|
|
92
|
+
# when a relevant need surfaces. The LLM does NOT query these preemptively —
|
|
93
|
+
# it consults them on demand (during Discovery, validation, drafting, etc.).
|
|
94
|
+
# Each entry names the tool, the conditions for using it, and any fields the
|
|
95
|
+
# tool needs. If a named MCP tool is unavailable at runtime, the LLM falls
|
|
96
|
+
# back to standard behavior and notes the gap. Empty by default.
|
|
97
|
+
#
|
|
98
|
+
# Lifecycle note: distinct from persistent_facts. persistent_facts are loaded
|
|
99
|
+
# once at activation and kept in mind for the whole run; external_sources are
|
|
100
|
+
# a registry consulted on demand and only when the conversation surfaces a
|
|
101
|
+
# matching need.
|
|
102
|
+
#
|
|
103
|
+
# Examples (set in team/user override TOML):
|
|
104
|
+
# "When researching internal product context, consult corp:kb_search (database='product-docs') before web search."
|
|
105
|
+
# "For competitive landscape during Discovery, query corp:competitive_db with category={project_name}."
|
|
106
|
+
# "When validating domain-compliance claims, cross-check against corp:hipaa_reference for healthcare or corp:pci_reference for fintech."
|
|
107
|
+
external_sources = []
|
|
108
|
+
|
|
109
|
+
# External-handoff routing. Natural-language directives the LLM applies at
|
|
110
|
+
# Finalize to route outputs beyond local files (Confluence, Notion, Google
|
|
111
|
+
# Drive, ticket systems, etc.). Each entry names the MCP tool, the destination,
|
|
112
|
+
# and the fields the tool needs. Handoffs run after the artifact is polished
|
|
113
|
+
# and before the final user-facing message. URLs or IDs returned by the
|
|
114
|
+
# destination are captured and surfaced to the user. If a named tool is
|
|
115
|
+
# unavailable at runtime, the handoff is skipped and flagged in the JSON
|
|
116
|
+
# status; local files always exist regardless. Fires automatically — users
|
|
117
|
+
# can opt out in their prompt for a specific run. Empty by default.
|
|
118
|
+
#
|
|
119
|
+
# Lifecycle note: distinct from persistent_facts and external_sources.
|
|
120
|
+
# Fired once at Finalize step 6, never during Discovery or drafting.
|
|
121
|
+
#
|
|
122
|
+
# Examples (set in team/user override TOML):
|
|
123
|
+
# "After finalize, upload prd.md and addendum.md to Confluence via corp:confluence_upload (space_key='PROD', parent_page='PRDs', label='prd', author={user_name})."
|
|
124
|
+
# "Mirror the PRD to Notion via notion:create_page (database_id='abc123', title='PRD: '+{project_name})."
|
|
125
|
+
# "When the PRD references a parent initiative, link via corp:jira_link on the epic key in frontmatter."
|
|
126
|
+
external_handoffs = []
|
|
127
|
+
|
|
128
|
+
# --- Finalize reviewers ---
|
|
129
|
+
# Reviewers spawned at Finalize step 3 (and at the Validate intent) alongside
|
|
130
|
+
# the structural checklist validator. The authoring skill assembles the gate
|
|
131
|
+
# menu (validator + these reviewers + any ad-hoc reviewers it judges warranted
|
|
132
|
+
# by the artifact content) and lets the user pick all, a subset, or skip. Gate
|
|
133
|
+
# UX is stakes-calibrated: hobby/solo scope may run defaults quietly or skip;
|
|
134
|
+
# higher stakes get the explicit menu.
|
|
135
|
+
#
|
|
136
|
+
# Entries follow the standard prefix convention (same as persistent_facts and
|
|
137
|
+
# doc_standards):
|
|
138
|
+
# "skill:NAME" invoke the named review skill as a subagent against prd.md
|
|
139
|
+
# "file:PATH" load the file as a review prompt; spawn an adversarial
|
|
140
|
+
# subagent applying that prompt to prd.md
|
|
141
|
+
# plain text use the text directly as the subagent's review prompt
|
|
142
|
+
#
|
|
143
|
+
# Override TOML may append additional reviewers. Arrays append per DRT rules.
|
|
144
|
+
#
|
|
145
|
+
# Resolved on-demand by the authoring skill (not pulled at activation): only
|
|
146
|
+
# when entering the Validate intent or assembling the gate at Finalize step 3.
|
|
147
|
+
finalize_reviewers = []
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Headless Mode
|
|
2
|
+
|
|
3
|
+
Load this file when drt-prd is invoked headless (no interactive user). Follow it for the whole run.
|
|
4
|
+
|
|
5
|
+
## Detection
|
|
6
|
+
|
|
7
|
+
Headless mode is in effect when any of the following is true:
|
|
8
|
+
|
|
9
|
+
- the invoking caller sets a `headless: true` flag (or equivalent argument the harness exposes),
|
|
10
|
+
- the invocation is from another skill or a non-interactive runner (no TTY, no user message stream),
|
|
11
|
+
- `{workflow.activation_steps_prepend}` includes an entry that explicitly declares headless,
|
|
12
|
+
- the first message comes from an automation context that pre-supplies all inputs and asks for an artifact path back.
|
|
13
|
+
|
|
14
|
+
When ambiguous, default to interactive.
|
|
15
|
+
|
|
16
|
+
## Inputs the caller is expected to provide
|
|
17
|
+
|
|
18
|
+
The caller passes inputs in their first message (free-form structured payload; no fixed schema, but every field below should be present when applicable):
|
|
19
|
+
|
|
20
|
+
- `intent` — `"create"`, `"update"`, or `"validate"`. If absent, infer from the artifact set.
|
|
21
|
+
- For **Create**: a brief or product spec the LLM works from (plain text, file path, or URL), plus any user/scope notes; `doc_workspace` if a specific run folder is required (otherwise the workflow binds the default).
|
|
22
|
+
- For **Update**: the existing `prd.md` path (or a workspace path that contains one), and a change signal (the request: what to change and why).
|
|
23
|
+
- For **Validate**: the existing `prd.md` path (or workspace path), and optionally a checklist override path. Workspace defaults to the PRD's containing directory.
|
|
24
|
+
|
|
25
|
+
Anything the caller does not provide is either inferred from inputs/workspace or recorded as `assumptions[]` / `open_questions[]` in the JSON status. Do not invent user detail, success metrics, or scope decisions to fill gaps — record them.
|
|
26
|
+
|
|
27
|
+
## General
|
|
28
|
+
|
|
29
|
+
Do not ask. Complete the intent using what is provided, what exists in `{doc_workspace}`, or what you can discover yourself. If intent remains ambiguous after inference, halt with `status: "blocked"` and a `reason` field — do not prompt. Do not greet.
|
|
30
|
+
|
|
31
|
+
Populate `assumptions[]` with every value you inferred without direct caller confirmation; populate `open_questions[]` with every gap that needs a human decision. Use `status: "partial"` when the artifact was produced but `open_questions[]` is non-empty or critical inputs were inferred (Create with no brief; Update with a vague signal acted on best-effort; Validate that could not load the checklist). `complete` = stands on its own; `partial` = caller should review before downstream use; `blocked` = no artifact produced.
|
|
32
|
+
|
|
33
|
+
End with the JSON response (full schemas with examples in `assets/headless-schemas.md`). The `intent` field must match the detected intent. Omit keys for artifacts not produced.
|
|
34
|
+
|
|
35
|
+
## Mode-specific overrides
|
|
36
|
+
|
|
37
|
+
**Update.** Apply the change, log it via `node {project-root}/_drt/scripts/memlog.js append --workspace {doc_workspace} --type change --text "<change + rationale>"`, and surface any conflict-with-prior-decision in `conflicts_with_prior_decisions[]` in the JSON status. Halt `blocked` if intent is ambiguous.
|
|
38
|
+
|
|
39
|
+
**Validate.** Always write both `validation-report.html` and `validation-report.md` to `{doc_workspace}` regardless of finding count. Always include `"offer_to_update": true` in the JSON status. Skip the browser-open step in `references/validate.md` — write the artifacts and return.
|