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.
Files changed (299) hide show
  1. package/AGENTS.md +45 -0
  2. package/GETTING-STARTED.md +269 -0
  3. package/README.md +233 -0
  4. package/drt-method-1.0.0.tgz +0 -0
  5. package/drt-modules.yaml +1 -0
  6. package/package.json +51 -0
  7. package/scripts/install-from-github.ps1 +22 -0
  8. package/scripts/install-from-github.sh +17 -0
  9. package/src/core-skills/drt-advanced-elicitation/SKILL.md +142 -0
  10. package/src/core-skills/drt-advanced-elicitation/methods.csv +72 -0
  11. package/src/core-skills/drt-brainstorming/SKILL.md +80 -0
  12. package/src/core-skills/drt-brainstorming/assets/brain-icons.json +166 -0
  13. package/src/core-skills/drt-brainstorming/assets/brain-methods.csv +109 -0
  14. package/src/core-skills/drt-brainstorming/assets/brain-selector.html +326 -0
  15. package/src/core-skills/drt-brainstorming/customize.toml +84 -0
  16. package/src/core-skills/drt-brainstorming/references/converge.md +24 -0
  17. package/src/core-skills/drt-brainstorming/references/finalize.md +26 -0
  18. package/src/core-skills/drt-brainstorming/references/headless.md +54 -0
  19. package/src/core-skills/drt-brainstorming/references/in-chat-techniques.md +18 -0
  20. package/src/core-skills/drt-brainstorming/references/mode-autonomous.md +10 -0
  21. package/src/core-skills/drt-brainstorming/references/mode-facilitator.md +11 -0
  22. package/src/core-skills/drt-brainstorming/references/mode-partner.md +16 -0
  23. package/src/core-skills/drt-brainstorming/references/resume.md +5 -0
  24. package/src/core-skills/drt-brainstorming/scripts/brain.py +740 -0
  25. package/src/core-skills/drt-customize/SKILL.md +111 -0
  26. package/src/core-skills/drt-customize/scripts/list_customizable_skills.py +231 -0
  27. package/src/core-skills/drt-editorial-review-prose/SKILL.md +86 -0
  28. package/src/core-skills/drt-editorial-review-structure/SKILL.md +179 -0
  29. package/src/core-skills/drt-forge-idea/SKILL.md +107 -0
  30. package/src/core-skills/drt-forge-idea/customize.toml +42 -0
  31. package/src/core-skills/drt-forge-idea/scripts/resolve_personas.py +270 -0
  32. package/src/core-skills/drt-help/SKILL.md +75 -0
  33. package/src/core-skills/drt-index-docs/SKILL.md +66 -0
  34. package/src/core-skills/drt-party-mode/SKILL.md +60 -0
  35. package/src/core-skills/drt-party-mode/customize.toml +211 -0
  36. package/src/core-skills/drt-party-mode/references/create-party.md +70 -0
  37. package/src/core-skills/drt-party-mode/references/mode-agent-team.md +13 -0
  38. package/src/core-skills/drt-party-mode/references/mode-auto.md +13 -0
  39. package/src/core-skills/drt-party-mode/references/mode-subagent.md +31 -0
  40. package/src/core-skills/drt-party-mode/references/party-memory.md +51 -0
  41. package/src/core-skills/drt-party-mode/scripts/resolve_party.py +272 -0
  42. package/src/core-skills/drt-review-adversarial-general/SKILL.md +37 -0
  43. package/src/core-skills/drt-review-edge-case-hunter/SKILL.md +73 -0
  44. package/src/core-skills/drt-review-edge-case-hunter/references/deletion-check.md +14 -0
  45. package/src/core-skills/drt-review-verification-gap/SKILL.md +106 -0
  46. package/src/core-skills/drt-shard-doc/SKILL.md +105 -0
  47. package/src/core-skills/drt-spec/SKILL.md +160 -0
  48. package/src/core-skills/drt-spec/assets/headless-schemas.md +33 -0
  49. package/src/core-skills/drt-spec/assets/spec-template.md +49 -0
  50. package/src/core-skills/drt-spec/assets/stories-schema.md +44 -0
  51. package/src/core-skills/drt-spec/customize.toml +53 -0
  52. package/src/core-skills/module-help.csv +14 -0
  53. package/src/core-skills/module.yaml +33 -0
  54. package/src/drt-skills/1-analysis/drt-agent-analyst/SKILL.md +76 -0
  55. package/src/drt-skills/1-analysis/drt-agent-analyst/customize.toml +90 -0
  56. package/src/drt-skills/1-analysis/drt-agent-tech-writer/SKILL.md +76 -0
  57. package/src/drt-skills/1-analysis/drt-agent-tech-writer/customize.toml +81 -0
  58. package/src/drt-skills/1-analysis/drt-agent-tech-writer/explain-concept.md +20 -0
  59. package/src/drt-skills/1-analysis/drt-agent-tech-writer/mermaid-gen.md +20 -0
  60. package/src/drt-skills/1-analysis/drt-agent-tech-writer/validate-doc.md +19 -0
  61. package/src/drt-skills/1-analysis/drt-agent-tech-writer/write-document.md +20 -0
  62. package/src/drt-skills/1-analysis/drt-document-project/SKILL.md +62 -0
  63. package/src/drt-skills/1-analysis/drt-document-project/checklist.md +245 -0
  64. package/src/drt-skills/1-analysis/drt-document-project/customize.toml +41 -0
  65. package/src/drt-skills/1-analysis/drt-document-project/documentation-requirements.csv +12 -0
  66. package/src/drt-skills/1-analysis/drt-document-project/instructions.md +128 -0
  67. package/src/drt-skills/1-analysis/drt-document-project/templates/deep-dive-template.md +345 -0
  68. package/src/drt-skills/1-analysis/drt-document-project/templates/index-template.md +169 -0
  69. package/src/drt-skills/1-analysis/drt-document-project/templates/project-overview-template.md +103 -0
  70. package/src/drt-skills/1-analysis/drt-document-project/templates/project-scan-report-schema.json +160 -0
  71. package/src/drt-skills/1-analysis/drt-document-project/templates/source-tree-template.md +135 -0
  72. package/src/drt-skills/1-analysis/drt-document-project/workflows/deep-dive-instructions.md +300 -0
  73. package/src/drt-skills/1-analysis/drt-document-project/workflows/deep-dive-workflow.md +34 -0
  74. package/src/drt-skills/1-analysis/drt-document-project/workflows/full-scan-instructions.md +1111 -0
  75. package/src/drt-skills/1-analysis/drt-document-project/workflows/full-scan-workflow.md +34 -0
  76. package/src/drt-skills/1-analysis/drt-prfaq/SKILL.md +135 -0
  77. package/src/drt-skills/1-analysis/drt-prfaq/agents/artifact-analyzer.md +60 -0
  78. package/src/drt-skills/1-analysis/drt-prfaq/agents/web-researcher.md +49 -0
  79. package/src/drt-skills/1-analysis/drt-prfaq/assets/prfaq-template.md +62 -0
  80. package/src/drt-skills/1-analysis/drt-prfaq/bmad-manifest.json +16 -0
  81. package/src/drt-skills/1-analysis/drt-prfaq/customize.toml +41 -0
  82. package/src/drt-skills/1-analysis/drt-prfaq/references/customer-faq.md +55 -0
  83. package/src/drt-skills/1-analysis/drt-prfaq/references/internal-faq.md +51 -0
  84. package/src/drt-skills/1-analysis/drt-prfaq/references/press-release.md +60 -0
  85. package/src/drt-skills/1-analysis/drt-prfaq/references/verdict.md +83 -0
  86. package/src/drt-skills/1-analysis/drt-product-brief/SKILL.md +91 -0
  87. package/src/drt-skills/1-analysis/drt-product-brief/assets/brief-template.md +41 -0
  88. package/src/drt-skills/1-analysis/drt-product-brief/customize.toml +99 -0
  89. package/src/drt-skills/1-analysis/research/drt-domain-research/SKILL.md +96 -0
  90. package/src/drt-skills/1-analysis/research/drt-domain-research/customize.toml +41 -0
  91. package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-01-init.md +137 -0
  92. package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-02-domain-analysis.md +229 -0
  93. package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-03-competitive-landscape.md +238 -0
  94. package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-04-regulatory-focus.md +206 -0
  95. package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-05-technical-trends.md +234 -0
  96. package/src/drt-skills/1-analysis/research/drt-domain-research/domain-steps/step-06-research-synthesis.md +450 -0
  97. package/src/drt-skills/1-analysis/research/drt-domain-research/research.template.md +29 -0
  98. package/src/drt-skills/1-analysis/research/drt-market-research/SKILL.md +96 -0
  99. package/src/drt-skills/1-analysis/research/drt-market-research/customize.toml +41 -0
  100. package/src/drt-skills/1-analysis/research/drt-market-research/research.template.md +29 -0
  101. package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-01-init.md +184 -0
  102. package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-02-customer-behavior.md +239 -0
  103. package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-03-customer-pain-points.md +251 -0
  104. package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-04-customer-decisions.md +261 -0
  105. package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-05-competitive-analysis.md +173 -0
  106. package/src/drt-skills/1-analysis/research/drt-market-research/steps/step-06-research-completion.md +484 -0
  107. package/src/drt-skills/1-analysis/research/drt-technical-research/SKILL.md +96 -0
  108. package/src/drt-skills/1-analysis/research/drt-technical-research/customize.toml +41 -0
  109. package/src/drt-skills/1-analysis/research/drt-technical-research/research.template.md +29 -0
  110. package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-01-init.md +137 -0
  111. package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-02-technical-overview.md +239 -0
  112. package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-03-integration-patterns.md +248 -0
  113. package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-04-architectural-patterns.md +202 -0
  114. package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-05-implementation-research.md +233 -0
  115. package/src/drt-skills/1-analysis/research/drt-technical-research/technical-steps/step-06-research-synthesis.md +493 -0
  116. package/src/drt-skills/2-plan-workflows/drt-agent-pm/SKILL.md +76 -0
  117. package/src/drt-skills/2-plan-workflows/drt-agent-pm/customize.toml +75 -0
  118. package/src/drt-skills/2-plan-workflows/drt-agent-ux-designer/SKILL.md +76 -0
  119. package/src/drt-skills/2-plan-workflows/drt-agent-ux-designer/customize.toml +60 -0
  120. package/src/drt-skills/2-plan-workflows/drt-create-prd/SKILL.md +30 -0
  121. package/src/drt-skills/2-plan-workflows/drt-create-prd/customize.toml +41 -0
  122. package/src/drt-skills/2-plan-workflows/drt-edit-prd/SKILL.md +30 -0
  123. package/src/drt-skills/2-plan-workflows/drt-edit-prd/customize.toml +42 -0
  124. package/src/drt-skills/2-plan-workflows/drt-prd/SKILL.md +92 -0
  125. package/src/drt-skills/2-plan-workflows/drt-prd/assets/headless-schemas.md +76 -0
  126. package/src/drt-skills/2-plan-workflows/drt-prd/assets/prd-template.md +165 -0
  127. package/src/drt-skills/2-plan-workflows/drt-prd/assets/prd-validation-checklist.md +135 -0
  128. package/src/drt-skills/2-plan-workflows/drt-prd/assets/validation-report-template.html +325 -0
  129. package/src/drt-skills/2-plan-workflows/drt-prd/customize.toml +147 -0
  130. package/src/drt-skills/2-plan-workflows/drt-prd/references/headless.md +39 -0
  131. package/src/drt-skills/2-plan-workflows/drt-prd/references/validate.md +97 -0
  132. package/src/drt-skills/2-plan-workflows/drt-ux/SKILL.md +90 -0
  133. package/src/drt-skills/2-plan-workflows/drt-ux/assets/color-themes.md +9 -0
  134. package/src/drt-skills/2-plan-workflows/drt-ux/assets/design-directions.md +9 -0
  135. package/src/drt-skills/2-plan-workflows/drt-ux/assets/design-example-editorial.md +158 -0
  136. package/src/drt-skills/2-plan-workflows/drt-ux/assets/design-example-mobile.md +93 -0
  137. package/src/drt-skills/2-plan-workflows/drt-ux/assets/design-example-shadcn.md +109 -0
  138. package/src/drt-skills/2-plan-workflows/drt-ux/assets/excalidraw-wireframe.md +19 -0
  139. package/src/drt-skills/2-plan-workflows/drt-ux/assets/experience-example-mobile.md +112 -0
  140. package/src/drt-skills/2-plan-workflows/drt-ux/assets/experience-example-shadcn.md +133 -0
  141. package/src/drt-skills/2-plan-workflows/drt-ux/assets/headless-schemas.md +84 -0
  142. package/src/drt-skills/2-plan-workflows/drt-ux/assets/key-screens.md +29 -0
  143. package/src/drt-skills/2-plan-workflows/drt-ux/assets/validation-report-template.html +319 -0
  144. package/src/drt-skills/2-plan-workflows/drt-ux/customize.toml +100 -0
  145. package/src/drt-skills/2-plan-workflows/drt-ux/references/creative-tools.md +19 -0
  146. package/src/drt-skills/2-plan-workflows/drt-ux/references/design-md-spec.md +50 -0
  147. package/src/drt-skills/2-plan-workflows/drt-ux/references/headless.md +37 -0
  148. package/src/drt-skills/2-plan-workflows/drt-ux/references/validate.md +115 -0
  149. package/src/drt-skills/2-plan-workflows/drt-validate-prd/SKILL.md +30 -0
  150. package/src/drt-skills/2-plan-workflows/drt-validate-prd/customize.toml +42 -0
  151. package/src/drt-skills/3-solutioning/drt-agent-architect/SKILL.md +76 -0
  152. package/src/drt-skills/3-solutioning/drt-agent-architect/customize.toml +65 -0
  153. package/src/drt-skills/3-solutioning/drt-architecture/SKILL.md +85 -0
  154. package/src/drt-skills/3-solutioning/drt-architecture/assets/spine-template.md +79 -0
  155. package/src/drt-skills/3-solutioning/drt-architecture/customize.toml +100 -0
  156. package/src/drt-skills/3-solutioning/drt-architecture/references/headless.md +26 -0
  157. package/src/drt-skills/3-solutioning/drt-architecture/references/reviewer-gate.md +13 -0
  158. package/src/drt-skills/3-solutioning/drt-architecture/scripts/lint_spine.py +257 -0
  159. package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/SKILL.md +91 -0
  160. package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/customize.toml +41 -0
  161. package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-01-document-discovery.md +179 -0
  162. package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-02-prd-analysis.md +168 -0
  163. package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +169 -0
  164. package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-04-ux-alignment.md +129 -0
  165. package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-05-epic-quality-review.md +241 -0
  166. package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/steps/step-06-final-assessment.md +132 -0
  167. package/src/drt-skills/3-solutioning/drt-check-implementation-readiness/templates/readiness-report-template.md +4 -0
  168. package/src/drt-skills/3-solutioning/drt-create-architecture/SKILL.md +30 -0
  169. package/src/drt-skills/3-solutioning/drt-create-architecture/customize.toml +41 -0
  170. package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/SKILL.md +93 -0
  171. package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/customize.toml +41 -0
  172. package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/steps/step-01-validate-prerequisites.md +263 -0
  173. package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/steps/step-02-design-epics.md +242 -0
  174. package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
  175. package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/steps/step-04-final-validation.md +143 -0
  176. package/src/drt-skills/3-solutioning/drt-create-epics-and-stories/templates/epics-template.md +61 -0
  177. package/src/drt-skills/3-solutioning/drt-generate-project-context/SKILL.md +81 -0
  178. package/src/drt-skills/3-solutioning/drt-generate-project-context/customize.toml +41 -0
  179. package/src/drt-skills/3-solutioning/drt-generate-project-context/project-context-template.md +21 -0
  180. package/src/drt-skills/3-solutioning/drt-generate-project-context/steps/step-01-discover.md +186 -0
  181. package/src/drt-skills/3-solutioning/drt-generate-project-context/steps/step-02-generate.md +321 -0
  182. package/src/drt-skills/3-solutioning/drt-generate-project-context/steps/step-03-complete.md +284 -0
  183. package/src/drt-skills/4-implementation/drt-agent-dev/SKILL.md +76 -0
  184. package/src/drt-skills/4-implementation/drt-agent-dev/customize.toml +95 -0
  185. package/src/drt-skills/4-implementation/drt-checkpoint-preview/SKILL.md +68 -0
  186. package/src/drt-skills/4-implementation/drt-checkpoint-preview/customize.toml +41 -0
  187. package/src/drt-skills/4-implementation/drt-checkpoint-preview/generate-trail.md +38 -0
  188. package/src/drt-skills/4-implementation/drt-checkpoint-preview/step-01-orientation.md +105 -0
  189. package/src/drt-skills/4-implementation/drt-checkpoint-preview/step-02-walkthrough.md +89 -0
  190. package/src/drt-skills/4-implementation/drt-checkpoint-preview/step-03-detail-pass.md +106 -0
  191. package/src/drt-skills/4-implementation/drt-checkpoint-preview/step-04-testing.md +74 -0
  192. package/src/drt-skills/4-implementation/drt-checkpoint-preview/step-05-wrapup.md +30 -0
  193. package/src/drt-skills/4-implementation/drt-code-review/SKILL.md +90 -0
  194. package/src/drt-skills/4-implementation/drt-code-review/customize.toml +93 -0
  195. package/src/drt-skills/4-implementation/drt-code-review/steps/step-01-gather-context.md +84 -0
  196. package/src/drt-skills/4-implementation/drt-code-review/steps/step-02-review.md +32 -0
  197. package/src/drt-skills/4-implementation/drt-code-review/steps/step-03-triage.md +50 -0
  198. package/src/drt-skills/4-implementation/drt-code-review/steps/step-04-present.md +132 -0
  199. package/src/drt-skills/4-implementation/drt-correct-course/SKILL.md +301 -0
  200. package/src/drt-skills/4-implementation/drt-correct-course/checklist.md +288 -0
  201. package/src/drt-skills/4-implementation/drt-correct-course/customize.toml +41 -0
  202. package/src/drt-skills/4-implementation/drt-create-story/SKILL.md +432 -0
  203. package/src/drt-skills/4-implementation/drt-create-story/checklist.md +357 -0
  204. package/src/drt-skills/4-implementation/drt-create-story/customize.toml +41 -0
  205. package/src/drt-skills/4-implementation/drt-create-story/discover-inputs.md +88 -0
  206. package/src/drt-skills/4-implementation/drt-create-story/template.md +49 -0
  207. package/src/drt-skills/4-implementation/drt-dev-auto/SKILL.md +123 -0
  208. package/src/drt-skills/4-implementation/drt-dev-auto/compile-epic-context.md +62 -0
  209. package/src/drt-skills/4-implementation/drt-dev-auto/customize.toml +108 -0
  210. package/src/drt-skills/4-implementation/drt-dev-auto/spec-template.md +98 -0
  211. package/src/drt-skills/4-implementation/drt-dev-auto/step-01-clarify-and-route.md +84 -0
  212. package/src/drt-skills/4-implementation/drt-dev-auto/step-02-plan.md +31 -0
  213. package/src/drt-skills/4-implementation/drt-dev-auto/step-03-implement.md +42 -0
  214. package/src/drt-skills/4-implementation/drt-dev-auto/step-04-review.md +95 -0
  215. package/src/drt-skills/4-implementation/drt-dev-story/SKILL.md +500 -0
  216. package/src/drt-skills/4-implementation/drt-dev-story/checklist.md +80 -0
  217. package/src/drt-skills/4-implementation/drt-dev-story/customize.toml +41 -0
  218. package/src/drt-skills/4-implementation/drt-implement-task/SKILL.md +101 -0
  219. package/src/drt-skills/4-implementation/drt-implement-task/assets/task-spec-template.md +60 -0
  220. package/src/drt-skills/4-implementation/drt-implement-task/customize.toml +17 -0
  221. package/src/drt-skills/4-implementation/drt-implement-task/steps/step-01-gather-intent.md +42 -0
  222. package/src/drt-skills/4-implementation/drt-implement-task/steps/step-02-plan-and-approve.md +43 -0
  223. package/src/drt-skills/4-implementation/drt-implement-task/steps/step-03-confirm-dependencies.md +38 -0
  224. package/src/drt-skills/4-implementation/drt-implement-task/steps/step-04-implement.md +42 -0
  225. package/src/drt-skills/4-implementation/drt-implement-task/steps/step-05-qc-test.md +31 -0
  226. package/src/drt-skills/4-implementation/drt-implement-task/steps/step-06-quality-review.md +30 -0
  227. package/src/drt-skills/4-implementation/drt-implement-task/steps/step-07-fix-findings.md +33 -0
  228. package/src/drt-skills/4-implementation/drt-implement-task/steps/step-08-complete.md +35 -0
  229. package/src/drt-skills/4-implementation/drt-qa-generate-e2e-tests/SKILL.md +176 -0
  230. package/src/drt-skills/4-implementation/drt-qa-generate-e2e-tests/checklist.md +33 -0
  231. package/src/drt-skills/4-implementation/drt-qa-generate-e2e-tests/customize.toml +41 -0
  232. package/src/drt-skills/4-implementation/drt-quick-dev/SKILL.md +13 -0
  233. package/src/drt-skills/4-implementation/drt-quick-dev/compile-epic-context.md +62 -0
  234. package/src/drt-skills/4-implementation/drt-quick-dev/customize.toml +83 -0
  235. package/src/drt-skills/4-implementation/drt-quick-dev/render.js +206 -0
  236. package/src/drt-skills/4-implementation/drt-quick-dev/spec-template.md +89 -0
  237. package/src/drt-skills/4-implementation/drt-quick-dev/step-01-clarify-and-route.md +103 -0
  238. package/src/drt-skills/4-implementation/drt-quick-dev/step-02-plan.md +47 -0
  239. package/src/drt-skills/4-implementation/drt-quick-dev/step-03-implement.md +45 -0
  240. package/src/drt-skills/4-implementation/drt-quick-dev/step-04-review.md +55 -0
  241. package/src/drt-skills/4-implementation/drt-quick-dev/step-05-present.md +78 -0
  242. package/src/drt-skills/4-implementation/drt-quick-dev/step-oneshot.md +78 -0
  243. package/src/drt-skills/4-implementation/drt-quick-dev/sync-sprint-status.md +19 -0
  244. package/src/drt-skills/4-implementation/drt-quick-dev/workflow.md +85 -0
  245. package/src/drt-skills/4-implementation/drt-retrospective/SKILL.md +1527 -0
  246. package/src/drt-skills/4-implementation/drt-retrospective/customize.toml +41 -0
  247. package/src/drt-skills/4-implementation/drt-sprint-planning/SKILL.md +319 -0
  248. package/src/drt-skills/4-implementation/drt-sprint-planning/checklist.md +34 -0
  249. package/src/drt-skills/4-implementation/drt-sprint-planning/customize.toml +41 -0
  250. package/src/drt-skills/4-implementation/drt-sprint-planning/sprint-status-template.yaml +69 -0
  251. package/src/drt-skills/4-implementation/drt-sprint-status/SKILL.md +311 -0
  252. package/src/drt-skills/4-implementation/drt-sprint-status/customize.toml +41 -0
  253. package/src/drt-skills/module-help.csv +32 -0
  254. package/src/drt-skills/module.yaml +95 -0
  255. package/src/scripts/lib/load-toml.js +43 -0
  256. package/src/scripts/lib/merge-utils.js +89 -0
  257. package/src/scripts/memlog.js +184 -0
  258. package/src/scripts/package.json +7 -0
  259. package/src/scripts/resolve-config.js +56 -0
  260. package/src/scripts/resolve-customization.js +77 -0
  261. package/tools/installer/cli-utils.js +53 -0
  262. package/tools/installer/commands/install.js +149 -0
  263. package/tools/installer/commands/status.js +65 -0
  264. package/tools/installer/commands/uninstall.js +167 -0
  265. package/tools/installer/core/config.js +73 -0
  266. package/tools/installer/core/existing-install.js +121 -0
  267. package/tools/installer/core/install-paths.js +132 -0
  268. package/tools/installer/core/installer.js +1762 -0
  269. package/tools/installer/core/legacy-warnings.js +151 -0
  270. package/tools/installer/core/manifest-generator.js +859 -0
  271. package/tools/installer/core/manifest.js +433 -0
  272. package/tools/installer/core/uv-check.js +97 -0
  273. package/tools/installer/core/wsl-node-check.js +109 -0
  274. package/tools/installer/drt-cli.js +104 -0
  275. package/tools/installer/file-ops.js +204 -0
  276. package/tools/installer/fs-native.js +116 -0
  277. package/tools/installer/ide/_config-driven.js +972 -0
  278. package/tools/installer/ide/manager.js +324 -0
  279. package/tools/installer/ide/platform-codes.js +80 -0
  280. package/tools/installer/ide/platform-codes.yaml +343 -0
  281. package/tools/installer/ide/shared/installed-skills.js +50 -0
  282. package/tools/installer/ide/shared/path-utils.js +217 -0
  283. package/tools/installer/ide/shared/skill-manifest.js +57 -0
  284. package/tools/installer/install-messages.yaml +29 -0
  285. package/tools/installer/list-options.js +210 -0
  286. package/tools/installer/message-loader.js +83 -0
  287. package/tools/installer/modules/channel-plan.js +203 -0
  288. package/tools/installer/modules/channel-resolver.js +241 -0
  289. package/tools/installer/modules/custom-module-manager.js +918 -0
  290. package/tools/installer/modules/external-manager.js +667 -0
  291. package/tools/installer/modules/module-help-schema.js +13 -0
  292. package/tools/installer/modules/official-modules.js +2257 -0
  293. package/tools/installer/modules/plugin-resolver.js +398 -0
  294. package/tools/installer/modules/version-resolver.js +336 -0
  295. package/tools/installer/project-root.js +224 -0
  296. package/tools/installer/prompts.js +852 -0
  297. package/tools/installer/set-overrides.js +330 -0
  298. package/tools/installer/ui.js +2090 -0
  299. package/tools/installer/yaml-format.js +245 -0
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { program } = require('commander');
4
+ const path = require('node:path');
5
+ const fs = require('node:fs');
6
+ const { execSync } = require('node:child_process');
7
+ const semver = require('semver');
8
+ const prompts = require('./prompts');
9
+
10
+ // The installer flow uses many sequential @clack/prompts, each adding keypress
11
+ // listeners to stdin. Raise the limit to avoid spurious EventEmitter warnings.
12
+ if (process.stdin?.setMaxListeners) {
13
+ const currentLimit = process.stdin.getMaxListeners();
14
+ process.stdin.setMaxListeners(Math.max(currentLimit, 50));
15
+ }
16
+
17
+ // Check for updates - do this asynchronously so it doesn't block startup
18
+ const packageJson = require('../../package.json');
19
+ const packageName = 'drt-method';
20
+ checkForUpdate().catch(() => {
21
+ // Silently ignore errors - version check is best-effort
22
+ });
23
+
24
+ async function checkForUpdate() {
25
+ try {
26
+ // Prereleases (e.g. 6.5.1-next.0) live on the `next` dist-tag; stable
27
+ // releases live on `latest`. semver.prerelease() returns null for stable,
28
+ // so this correctly routes pre-1.0-next/rc/etc. without string matching.
29
+ const tag = semver.prerelease(packageJson.version) ? 'next' : 'latest';
30
+
31
+ const result = execSync(`npm view ${packageName}@${tag} version`, {
32
+ encoding: 'utf8',
33
+ stdio: 'pipe',
34
+ timeout: 5000,
35
+ }).trim();
36
+
37
+ if (result && semver.gt(result, packageJson.version)) {
38
+ const color = await prompts.getColor();
39
+ const updateMsg = [
40
+ `You are using version ${packageJson.version} but ${result} is available.`,
41
+ '',
42
+ 'To update, pull the latest from your drt-method Git repository and re-run install.',
43
+ ].join('\n');
44
+ await prompts.box(updateMsg, 'Update Available', {
45
+ rounded: true,
46
+ formatBorder: color.yellow,
47
+ });
48
+ }
49
+ } catch {
50
+ // Silently fail - network issues or npm not available
51
+ }
52
+ }
53
+
54
+ // Fix for stdin issues when running through npm on Windows
55
+ // Ensures keyboard interaction works properly with CLI prompts
56
+ if (process.stdin.isTTY) {
57
+ try {
58
+ process.stdin.resume();
59
+ process.stdin.setEncoding('utf8');
60
+
61
+ // On Windows, explicitly reference the stdin stream to ensure it's properly initialized
62
+ if (process.platform === 'win32') {
63
+ process.stdin.on('error', () => {
64
+ // Ignore stdin errors - they can occur when the terminal is closing
65
+ });
66
+ }
67
+ } catch {
68
+ // Silently ignore - some environments may not support these operations
69
+ }
70
+ }
71
+
72
+ // Load all command modules
73
+ const commandsPath = path.join(__dirname, 'commands');
74
+ const commandFiles = fs.readdirSync(commandsPath).filter((file) => file.endsWith('.js'));
75
+
76
+ const commands = {};
77
+ for (const file of commandFiles) {
78
+ const command = require(path.join(commandsPath, file));
79
+ commands[command.command] = command;
80
+ }
81
+
82
+ // Set up main program
83
+ program.version(packageJson.version).description('DRT Method CLI - install and manage DRT workflows');
84
+
85
+ // Register all commands
86
+ for (const [name, cmd] of Object.entries(commands)) {
87
+ const command = program.command(name).description(cmd.description);
88
+
89
+ // Add options
90
+ for (const option of cmd.options || []) {
91
+ command.option(...option);
92
+ }
93
+
94
+ // Set action
95
+ command.action(cmd.action);
96
+ }
97
+
98
+ // Parse arguments
99
+ program.parse(process.argv);
100
+
101
+ // Show help if no command provided
102
+ if (process.argv.slice(2).length === 0) {
103
+ program.outputHelp();
104
+ }
@@ -0,0 +1,204 @@
1
+ const fs = require('./fs-native');
2
+ const path = require('node:path');
3
+ const crypto = require('node:crypto');
4
+
5
+ /**
6
+ * File operations utility class
7
+ */
8
+ class FileOps {
9
+ /**
10
+ * Copy a directory recursively
11
+ * @param {string} source - Source directory
12
+ * @param {string} dest - Destination directory
13
+ * @param {Object} options - Copy options
14
+ */
15
+ async copyDirectory(source, dest, options = {}) {
16
+ const defaultOptions = {
17
+ overwrite: true,
18
+ errorOnExist: false,
19
+ filter: (src) => !this.shouldIgnore(src),
20
+ };
21
+
22
+ const copyOptions = { ...defaultOptions, ...options };
23
+ await fs.copy(source, dest, copyOptions);
24
+ }
25
+
26
+ /**
27
+ * Sync directory (selective copy preserving modifications)
28
+ * @param {string} source - Source directory
29
+ * @param {string} dest - Destination directory
30
+ */
31
+ async syncDirectory(source, dest) {
32
+ const sourceFiles = await this.getFileList(source);
33
+
34
+ for (const file of sourceFiles) {
35
+ const sourceFile = path.join(source, file);
36
+ const destFile = path.join(dest, file);
37
+
38
+ // Check if destination file exists
39
+ if (await fs.pathExists(destFile)) {
40
+ // Compare checksums to see if file has been modified
41
+ const sourceHash = await this.getFileHash(sourceFile);
42
+ const destHash = await this.getFileHash(destFile);
43
+
44
+ if (sourceHash === destHash) {
45
+ // Files are identical, safe to update
46
+ await fs.copy(sourceFile, destFile, { overwrite: true });
47
+ } else {
48
+ // File has been modified, check timestamps
49
+ const sourceStats = await fs.stat(sourceFile);
50
+ const destStats = await fs.stat(destFile);
51
+
52
+ if (sourceStats.mtime > destStats.mtime) {
53
+ // Source is newer, update
54
+ await fs.copy(sourceFile, destFile, { overwrite: true });
55
+ }
56
+ // Otherwise, preserve user modifications
57
+ }
58
+ } else {
59
+ // New file, copy it
60
+ await fs.ensureDir(path.dirname(destFile));
61
+ await fs.copy(sourceFile, destFile);
62
+ }
63
+ }
64
+
65
+ // Remove files that no longer exist in source
66
+ const destFiles = await this.getFileList(dest);
67
+ for (const file of destFiles) {
68
+ const sourceFile = path.join(source, file);
69
+ const destFile = path.join(dest, file);
70
+
71
+ if (!(await fs.pathExists(sourceFile))) {
72
+ await fs.remove(destFile);
73
+ }
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Get list of all files in a directory
79
+ * @param {string} dir - Directory path
80
+ * @returns {Array} List of relative file paths
81
+ */
82
+ async getFileList(dir) {
83
+ const files = [];
84
+
85
+ if (!(await fs.pathExists(dir))) {
86
+ return files;
87
+ }
88
+
89
+ const walk = async (currentDir, baseDir) => {
90
+ const entries = await fs.readdir(currentDir, { withFileTypes: true });
91
+
92
+ for (const entry of entries) {
93
+ const fullPath = path.join(currentDir, entry.name);
94
+
95
+ if (entry.isDirectory() && !this.shouldIgnore(fullPath)) {
96
+ await walk(fullPath, baseDir);
97
+ } else if (entry.isFile() && !this.shouldIgnore(fullPath)) {
98
+ files.push(path.relative(baseDir, fullPath));
99
+ }
100
+ }
101
+ };
102
+
103
+ await walk(dir, dir);
104
+ return files;
105
+ }
106
+
107
+ /**
108
+ * Get file hash for comparison
109
+ * @param {string} filePath - File path
110
+ * @returns {string} File hash
111
+ */
112
+ async getFileHash(filePath) {
113
+ const hash = crypto.createHash('sha256');
114
+ const stream = fs.createReadStream(filePath);
115
+
116
+ return new Promise((resolve, reject) => {
117
+ stream.on('data', (data) => hash.update(data));
118
+ stream.on('end', () => resolve(hash.digest('hex')));
119
+ stream.on('error', reject);
120
+ });
121
+ }
122
+
123
+ /**
124
+ * Check if a path should be ignored
125
+ * @param {string} filePath - Path to check
126
+ * @returns {boolean} True if should be ignored
127
+ */
128
+ shouldIgnore(filePath) {
129
+ const ignoredPatterns = ['.git', '.DS_Store', 'node_modules', '*.swp', '*.tmp', '.idea', '.vscode', '__pycache__', '*.pyc'];
130
+
131
+ const basename = path.basename(filePath);
132
+
133
+ for (const pattern of ignoredPatterns) {
134
+ if (pattern.includes('*')) {
135
+ // Simple glob pattern matching
136
+ const regex = new RegExp(pattern.replace('*', '.*'));
137
+ if (regex.test(basename)) {
138
+ return true;
139
+ }
140
+ } else if (basename === pattern) {
141
+ return true;
142
+ }
143
+ }
144
+
145
+ return false;
146
+ }
147
+
148
+ /**
149
+ * Ensure directory exists
150
+ * @param {string} dir - Directory path
151
+ */
152
+ async ensureDir(dir) {
153
+ await fs.ensureDir(dir);
154
+ }
155
+
156
+ /**
157
+ * Remove directory or file
158
+ * @param {string} targetPath - Path to remove
159
+ */
160
+ async remove(targetPath) {
161
+ if (await fs.pathExists(targetPath)) {
162
+ await fs.remove(targetPath);
163
+ }
164
+ }
165
+
166
+ /**
167
+ * Read file content
168
+ * @param {string} filePath - File path
169
+ * @returns {string} File content
170
+ */
171
+ async readFile(filePath) {
172
+ return await fs.readFile(filePath, 'utf8');
173
+ }
174
+
175
+ /**
176
+ * Write file content
177
+ * @param {string} filePath - File path
178
+ * @param {string} content - File content
179
+ */
180
+ async writeFile(filePath, content) {
181
+ await fs.ensureDir(path.dirname(filePath));
182
+ await fs.writeFile(filePath, content, 'utf8');
183
+ }
184
+
185
+ /**
186
+ * Check if path exists
187
+ * @param {string} targetPath - Path to check
188
+ * @returns {boolean} True if exists
189
+ */
190
+ async exists(targetPath) {
191
+ return await fs.pathExists(targetPath);
192
+ }
193
+
194
+ /**
195
+ * Get file or directory stats
196
+ * @param {string} targetPath - Path to check
197
+ * @returns {Object} File stats
198
+ */
199
+ async stat(targetPath) {
200
+ return await fs.stat(targetPath);
201
+ }
202
+ }
203
+
204
+ module.exports = { FileOps };
@@ -0,0 +1,116 @@
1
+ // Drop-in replacement for fs-extra using native node:fs APIs.
2
+ // Eliminates graceful-fs monkey-patching that causes non-deterministic
3
+ // file loss during multi-module installs on macOS (issue #1779).
4
+ const fsp = require('node:fs/promises');
5
+ const fs = require('node:fs');
6
+ const path = require('node:path');
7
+
8
+ async function pathExists(p) {
9
+ try {
10
+ await fsp.access(p);
11
+ return true;
12
+ } catch {
13
+ return false;
14
+ }
15
+ }
16
+
17
+ async function ensureDir(dir) {
18
+ await fsp.mkdir(dir, { recursive: true });
19
+ }
20
+
21
+ async function remove(p) {
22
+ await fsp.rm(p, { recursive: true, force: true });
23
+ }
24
+
25
+ async function copy(src, dest, options = {}) {
26
+ const filterFn = options.filter;
27
+ const overwrite = options.overwrite !== false;
28
+ const srcStat = await fsp.stat(src);
29
+
30
+ if (srcStat.isFile()) {
31
+ if (filterFn && !(await filterFn(src, dest))) return;
32
+ await fsp.mkdir(path.dirname(dest), { recursive: true });
33
+ if (!overwrite) {
34
+ try {
35
+ await fsp.access(dest);
36
+ if (options.errorOnExist) throw new Error(`${dest} already exists`);
37
+ return;
38
+ } catch (error) {
39
+ if (error.message.includes('already exists')) throw error;
40
+ }
41
+ }
42
+ await fsp.copyFile(src, dest);
43
+ return;
44
+ }
45
+
46
+ if (srcStat.isDirectory()) {
47
+ if (filterFn && !(await filterFn(src, dest))) return;
48
+ await fsp.mkdir(dest, { recursive: true });
49
+ const entries = await fsp.readdir(src, { withFileTypes: true });
50
+ for (const entry of entries) {
51
+ await copy(path.join(src, entry.name), path.join(dest, entry.name), options);
52
+ }
53
+ }
54
+ }
55
+
56
+ async function move(src, dest) {
57
+ try {
58
+ await fsp.rename(src, dest);
59
+ } catch (error) {
60
+ if (error.code === 'EXDEV') {
61
+ await copy(src, dest);
62
+ await fsp.rm(src, { recursive: true, force: true });
63
+ } else {
64
+ throw error;
65
+ }
66
+ }
67
+ }
68
+
69
+ function readJsonSync(p) {
70
+ return JSON.parse(fs.readFileSync(p, 'utf8'));
71
+ }
72
+
73
+ async function writeJson(p, data, options = {}) {
74
+ const spaces = options.spaces ?? 2;
75
+ await fsp.writeFile(p, JSON.stringify(data, null, spaces) + '\n', 'utf8');
76
+ }
77
+
78
+ module.exports = {
79
+ // Native async (node:fs/promises)
80
+ readFile: fsp.readFile,
81
+ writeFile: fsp.writeFile,
82
+ stat: fsp.stat,
83
+ readdir: fsp.readdir,
84
+ access: fsp.access,
85
+ realpath: fsp.realpath,
86
+ rename: fsp.rename,
87
+ rmdir: fsp.rmdir,
88
+ unlink: fsp.unlink,
89
+ chmod: fsp.chmod,
90
+ mkdir: fsp.mkdir,
91
+ mkdtemp: fsp.mkdtemp,
92
+ copyFile: fsp.copyFile,
93
+ rm: fsp.rm,
94
+
95
+ // fs-extra compatible helpers (native implementations)
96
+ pathExists,
97
+ ensureDir,
98
+ remove,
99
+ copy,
100
+ move,
101
+ readJsonSync,
102
+ writeJson,
103
+
104
+ // Sync methods from core node:fs
105
+ existsSync: fs.existsSync.bind(fs),
106
+ readFileSync: fs.readFileSync.bind(fs),
107
+ writeFileSync: fs.writeFileSync.bind(fs),
108
+ statSync: fs.statSync.bind(fs),
109
+ accessSync: fs.accessSync.bind(fs),
110
+ readdirSync: fs.readdirSync.bind(fs),
111
+ createReadStream: fs.createReadStream.bind(fs),
112
+ pathExistsSync: fs.existsSync.bind(fs),
113
+
114
+ // Constants
115
+ constants: fs.constants,
116
+ };