bmad-method-quarkus 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 (380) hide show
  1. package/.claude-plugin/marketplace.json +53 -0
  2. package/AGENTS.md +12 -0
  3. package/LICENSE +30 -0
  4. package/README.md +94 -0
  5. package/README_CN.md +108 -0
  6. package/README_VN.md +109 -0
  7. package/bmad-modules.yaml +133 -0
  8. package/package.json +123 -0
  9. package/removals.txt +87 -0
  10. package/src/bmm-skills/agents/bmad-agent-analyst/SKILL.md +76 -0
  11. package/src/bmm-skills/agents/bmad-agent-analyst/customize.toml +105 -0
  12. package/src/bmm-skills/agents/bmad-agent-architect/SKILL.md +76 -0
  13. package/src/bmm-skills/agents/bmad-agent-architect/customize.toml +65 -0
  14. package/src/bmm-skills/agents/bmad-agent-dev/SKILL.md +76 -0
  15. package/src/bmm-skills/agents/bmad-agent-dev/customize.toml +83 -0
  16. package/src/bmm-skills/agents/bmad-agent-pm/SKILL.md +76 -0
  17. package/src/bmm-skills/agents/bmad-agent-pm/customize.toml +75 -0
  18. package/src/bmm-skills/agents/bmad-agent-ux-designer/SKILL.md +76 -0
  19. package/src/bmm-skills/agents/bmad-agent-ux-designer/customize.toml +60 -0
  20. package/src/bmm-skills/agents/bmad-quarkus-architect/.memlog.md +12 -0
  21. package/src/bmm-skills/agents/bmad-quarkus-architect/.memlog.md:Zone.Identifier +0 -0
  22. package/src/bmm-skills/agents/bmad-quarkus-architect/SKILL.md +86 -0
  23. package/src/bmm-skills/agents/bmad-quarkus-architect/SKILL.md:Zone.Identifier +0 -0
  24. package/src/bmm-skills/agents/bmad-quarkus-architect/customize.toml +37 -0
  25. package/src/bmm-skills/agents/bmad-quarkus-architect/customize.toml:Zone.Identifier +0 -0
  26. package/src/bmm-skills/agents/bmad-quarkus-architect/references/enrich-stories.md +19 -0
  27. package/src/bmm-skills/agents/bmad-quarkus-architect/references/enrich-stories.md:Zone.Identifier +0 -0
  28. package/src/bmm-skills/agents/bmad-quarkus-architect/references/prompt-quality-canon.md +79 -0
  29. package/src/bmm-skills/agents/bmad-quarkus-architect/references/prompt-quality-canon.md:Zone.Identifier +0 -0
  30. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/SKILL.md +80 -0
  31. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/SKILL.md:Zone.Identifier +0 -0
  32. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/assets/module-help.csv +9 -0
  33. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/assets/module-help.csv:Zone.Identifier +0 -0
  34. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/assets/module.yaml +16 -0
  35. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/assets/module.yaml:Zone.Identifier +0 -0
  36. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/scripts/cleanup-legacy.py +287 -0
  37. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/scripts/cleanup-legacy.py:Zone.Identifier +0 -0
  38. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/scripts/merge-config.py +441 -0
  39. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/scripts/merge-config.py:Zone.Identifier +0 -0
  40. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/scripts/merge-help-csv.py +246 -0
  41. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/bqa-setup/scripts/merge-help-csv.py:Zone.Identifier +0 -0
  42. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-error-handling-i18n/SKILL.md +181 -0
  43. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-error-handling-i18n/SKILL.md:Zone.Identifier +0 -0
  44. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-grpc-services/SKILL.md +141 -0
  45. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-grpc-services/SKILL.md:Zone.Identifier +0 -0
  46. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-hexagonal-core/SKILL.md +392 -0
  47. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-hexagonal-core/SKILL.md:Zone.Identifier +0 -0
  48. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-kafka-messaging/SKILL.md +148 -0
  49. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-kafka-messaging/SKILL.md:Zone.Identifier +0 -0
  50. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-observability-otel/SKILL.md +180 -0
  51. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-observability-otel/SKILL.md:Zone.Identifier +0 -0
  52. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-openapi-tmforum/SKILL.md +128 -0
  53. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-openapi-tmforum/SKILL.md:Zone.Identifier +0 -0
  54. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-sql-jdbc-agroal/SKILL.md +245 -0
  55. package/src/bmm-skills/agents/bmad-quarkus-architect/skills/quarkus-sql-jdbc-agroal/SKILL.md:Zone.Identifier +0 -0
  56. package/src/bmm-skills/module-help.csv +19 -0
  57. package/src/bmm-skills/module.yaml +92 -0
  58. package/src/bmm-skills/plan/bmad-architecture/SKILL.md +85 -0
  59. package/src/bmm-skills/plan/bmad-architecture/assets/spine-template.md +79 -0
  60. package/src/bmm-skills/plan/bmad-architecture/customize.toml +102 -0
  61. package/src/bmm-skills/plan/bmad-architecture/references/headless.md +26 -0
  62. package/src/bmm-skills/plan/bmad-architecture/references/reviewer-gate.md +13 -0
  63. package/src/bmm-skills/plan/bmad-architecture/scripts/lint_spine.py +257 -0
  64. package/src/bmm-skills/plan/bmad-architecture/scripts/tests/test_lint_spine.py +270 -0
  65. package/src/bmm-skills/plan/bmad-create-epics-and-stories/SKILL.md +93 -0
  66. package/src/bmm-skills/plan/bmad-create-epics-and-stories/customize.toml +41 -0
  67. package/src/bmm-skills/plan/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +263 -0
  68. package/src/bmm-skills/plan/bmad-create-epics-and-stories/steps/step-02-design-epics.md +242 -0
  69. package/src/bmm-skills/plan/bmad-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
  70. package/src/bmm-skills/plan/bmad-create-epics-and-stories/steps/step-04-final-validation.md +143 -0
  71. package/src/bmm-skills/plan/bmad-create-epics-and-stories/templates/epics-template.md +61 -0
  72. package/src/bmm-skills/plan/bmad-generate-project-context/SKILL.md +10 -0
  73. package/src/bmm-skills/plan/bmad-prd/SKILL.md +94 -0
  74. package/src/bmm-skills/plan/bmad-prd/assets/headless-schemas.md +76 -0
  75. package/src/bmm-skills/plan/bmad-prd/assets/prd-template.md +165 -0
  76. package/src/bmm-skills/plan/bmad-prd/assets/prd-validation-checklist.md +135 -0
  77. package/src/bmm-skills/plan/bmad-prd/assets/validation-report-template.html +325 -0
  78. package/src/bmm-skills/plan/bmad-prd/customize.toml +149 -0
  79. package/src/bmm-skills/plan/bmad-prd/references/headless.md +39 -0
  80. package/src/bmm-skills/plan/bmad-prd/references/validate.md +97 -0
  81. package/src/bmm-skills/plan/bmad-prfaq/SKILL.md +135 -0
  82. package/src/bmm-skills/plan/bmad-prfaq/agents/artifact-analyzer.md +60 -0
  83. package/src/bmm-skills/plan/bmad-prfaq/agents/web-researcher.md +49 -0
  84. package/src/bmm-skills/plan/bmad-prfaq/assets/prfaq-template.md +62 -0
  85. package/src/bmm-skills/plan/bmad-prfaq/bmad-manifest.json +16 -0
  86. package/src/bmm-skills/plan/bmad-prfaq/customize.toml +41 -0
  87. package/src/bmm-skills/plan/bmad-prfaq/references/customer-faq.md +55 -0
  88. package/src/bmm-skills/plan/bmad-prfaq/references/internal-faq.md +51 -0
  89. package/src/bmm-skills/plan/bmad-prfaq/references/press-release.md +60 -0
  90. package/src/bmm-skills/plan/bmad-prfaq/references/verdict.md +83 -0
  91. package/src/bmm-skills/plan/bmad-product-brief/SKILL.md +91 -0
  92. package/src/bmm-skills/plan/bmad-product-brief/assets/brief-template.md +41 -0
  93. package/src/bmm-skills/plan/bmad-product-brief/customize.toml +101 -0
  94. package/src/bmm-skills/plan/bmad-project-context/SKILL.md +110 -0
  95. package/src/bmm-skills/plan/bmad-project-context/customize.toml +24 -0
  96. package/src/bmm-skills/plan/bmad-project-context/references/best-practices.md +65 -0
  97. package/src/bmm-skills/plan/bmad-project-context/references/template.md +55 -0
  98. package/src/bmm-skills/plan/bmad-spec/SKILL.md +160 -0
  99. package/src/bmm-skills/plan/bmad-spec/assets/headless-schemas.md +33 -0
  100. package/src/bmm-skills/plan/bmad-spec/assets/spec-template.md +49 -0
  101. package/src/bmm-skills/plan/bmad-spec/assets/stories-schema.md +44 -0
  102. package/src/bmm-skills/plan/bmad-spec/customize.toml +52 -0
  103. package/src/bmm-skills/plan/bmad-sprint-planning/SKILL.md +62 -0
  104. package/src/bmm-skills/plan/bmad-sprint-planning/customize.toml +41 -0
  105. package/src/bmm-skills/plan/bmad-sprint-planning/references/fix-sprint-status.md +30 -0
  106. package/src/bmm-skills/plan/bmad-sprint-planning/references/generate-tracking.md +25 -0
  107. package/src/bmm-skills/plan/bmad-sprint-planning/references/readiness-gate.md +20 -0
  108. package/src/bmm-skills/plan/bmad-sprint-planning/references/status-view.md +14 -0
  109. package/src/bmm-skills/plan/bmad-sprint-planning/references/validate.md +10 -0
  110. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc +0 -0
  111. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/sprint_plan.py +697 -0
  112. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-311-pytest-9.1.1.pyc +0 -0
  113. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/test_sprint_plan.py +524 -0
  114. package/src/bmm-skills/plan/bmad-sprint-planning/sprint-status-template.yaml +71 -0
  115. package/src/bmm-skills/plan/bmad-ux/SKILL.md +90 -0
  116. package/src/bmm-skills/plan/bmad-ux/assets/color-themes.md +9 -0
  117. package/src/bmm-skills/plan/bmad-ux/assets/design-directions.md +9 -0
  118. package/src/bmm-skills/plan/bmad-ux/assets/design-example-editorial.md +158 -0
  119. package/src/bmm-skills/plan/bmad-ux/assets/design-example-mobile.md +93 -0
  120. package/src/bmm-skills/plan/bmad-ux/assets/design-example-shadcn.md +109 -0
  121. package/src/bmm-skills/plan/bmad-ux/assets/excalidraw-wireframe.md +19 -0
  122. package/src/bmm-skills/plan/bmad-ux/assets/experience-example-mobile.md +112 -0
  123. package/src/bmm-skills/plan/bmad-ux/assets/experience-example-shadcn.md +133 -0
  124. package/src/bmm-skills/plan/bmad-ux/assets/headless-schemas.md +84 -0
  125. package/src/bmm-skills/plan/bmad-ux/assets/key-screens.md +29 -0
  126. package/src/bmm-skills/plan/bmad-ux/assets/validation-report-template.html +319 -0
  127. package/src/bmm-skills/plan/bmad-ux/customize.toml +102 -0
  128. package/src/bmm-skills/plan/bmad-ux/references/creative-tools.md +19 -0
  129. package/src/bmm-skills/plan/bmad-ux/references/design-md-spec.md +50 -0
  130. package/src/bmm-skills/plan/bmad-ux/references/headless.md +37 -0
  131. package/src/bmm-skills/plan/bmad-ux/references/validate.md +115 -0
  132. package/src/bmm-skills/ship/bmad-build/SKILL.md +13 -0
  133. package/src/bmm-skills/ship/bmad-build/compile-epic-context.md +62 -0
  134. package/src/bmm-skills/ship/bmad-build/customize.toml +164 -0
  135. package/src/bmm-skills/ship/bmad-build/references/deletion-check.md +14 -0
  136. package/src/bmm-skills/ship/bmad-build/review-prompts/edge-case-hunter.md +88 -0
  137. package/src/bmm-skills/ship/bmad-build/review-prompts/verification-gap.md +113 -0
  138. package/src/bmm-skills/ship/bmad-build/spec-template.md +89 -0
  139. package/src/bmm-skills/ship/bmad-build/step-01-clarify-and-route.md +105 -0
  140. package/src/bmm-skills/ship/bmad-build/step-02-plan.md +47 -0
  141. package/src/bmm-skills/ship/bmad-build/step-03-implement.md +49 -0
  142. package/src/bmm-skills/ship/bmad-build/step-04-review.md +55 -0
  143. package/src/bmm-skills/ship/bmad-build/step-05-present.md +75 -0
  144. package/src/bmm-skills/ship/bmad-build/step-oneshot.md +77 -0
  145. package/src/bmm-skills/ship/bmad-build/sync-sprint-status.md +19 -0
  146. package/src/bmm-skills/ship/bmad-build/workflow.md +84 -0
  147. package/src/bmm-skills/ship/bmad-build-auto/SKILL.md +13 -0
  148. package/src/bmm-skills/ship/bmad-build-auto/compile-epic-context.md +62 -0
  149. package/src/bmm-skills/ship/bmad-build-auto/customize.toml +121 -0
  150. package/src/bmm-skills/ship/bmad-build-auto/references/deletion-check.md +14 -0
  151. package/src/bmm-skills/ship/bmad-build-auto/review-prompts/edge-case-hunter.md +88 -0
  152. package/src/bmm-skills/ship/bmad-build-auto/review-prompts/verification-gap.md +113 -0
  153. package/src/bmm-skills/ship/bmad-build-auto/spec-template.md +99 -0
  154. package/src/bmm-skills/ship/bmad-build-auto/step-01-clarify-and-route.md +83 -0
  155. package/src/bmm-skills/ship/bmad-build-auto/step-02-plan.md +27 -0
  156. package/src/bmm-skills/ship/bmad-build-auto/step-03-implement.md +44 -0
  157. package/src/bmm-skills/ship/bmad-build-auto/step-04-review.md +96 -0
  158. package/src/bmm-skills/ship/bmad-build-auto/workflow.md +104 -0
  159. package/src/bmm-skills/ship/bmad-checkpoint-preview/SKILL.md +68 -0
  160. package/src/bmm-skills/ship/bmad-checkpoint-preview/customize.toml +41 -0
  161. package/src/bmm-skills/ship/bmad-checkpoint-preview/generate-trail.md +38 -0
  162. package/src/bmm-skills/ship/bmad-checkpoint-preview/step-01-orientation.md +105 -0
  163. package/src/bmm-skills/ship/bmad-checkpoint-preview/step-02-walkthrough.md +89 -0
  164. package/src/bmm-skills/ship/bmad-checkpoint-preview/step-03-detail-pass.md +106 -0
  165. package/src/bmm-skills/ship/bmad-checkpoint-preview/step-04-testing.md +74 -0
  166. package/src/bmm-skills/ship/bmad-checkpoint-preview/step-05-wrapup.md +30 -0
  167. package/src/bmm-skills/ship/bmad-code-review/SKILL.md +90 -0
  168. package/src/bmm-skills/ship/bmad-code-review/customize.toml +113 -0
  169. package/src/bmm-skills/ship/bmad-code-review/references/deletion-check.md +14 -0
  170. package/src/bmm-skills/ship/bmad-code-review/review-prompts/edge-case-hunter.md +88 -0
  171. package/src/bmm-skills/ship/bmad-code-review/review-prompts/verification-gap.md +113 -0
  172. package/src/bmm-skills/ship/bmad-code-review/steps/step-01-gather-context.md +87 -0
  173. package/src/bmm-skills/ship/bmad-code-review/steps/step-02-review.md +32 -0
  174. package/src/bmm-skills/ship/bmad-code-review/steps/step-03-triage.md +50 -0
  175. package/src/bmm-skills/ship/bmad-code-review/steps/step-04-present.md +132 -0
  176. package/src/bmm-skills/ship/bmad-correct-course/SKILL.md +300 -0
  177. package/src/bmm-skills/ship/bmad-correct-course/checklist.md +288 -0
  178. package/src/bmm-skills/ship/bmad-correct-course/customize.toml +41 -0
  179. package/src/bmm-skills/ship/bmad-qa-generate-e2e-tests/SKILL.md +176 -0
  180. package/src/bmm-skills/ship/bmad-qa-generate-e2e-tests/checklist.md +33 -0
  181. package/src/bmm-skills/ship/bmad-qa-generate-e2e-tests/customize.toml +41 -0
  182. package/src/bmm-skills/ship/bmad-retrospective/SKILL.md +94 -0
  183. package/src/bmm-skills/ship/bmad-retrospective/customize.toml +41 -0
  184. package/src/bmm-skills/ship/bmad-retrospective/references/acceptance-verdict.md +55 -0
  185. package/src/bmm-skills/ship/bmad-retrospective/references/aggregate-views.md +17 -0
  186. package/src/bmm-skills/ship/bmad-retrospective/references/evidence-gathering.md +30 -0
  187. package/src/bmm-skills/ship/bmad-retrospective/references/retro-document.md +84 -0
  188. package/src/bmm-skills/ship/bmad-retrospective/references/team-discussion.md +22 -0
  189. package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc +0 -0
  190. package/src/bmm-skills/ship/bmad-retrospective/scripts/git_evidence.py +304 -0
  191. package/src/bmm-skills/ship/bmad-retrospective/scripts/sprint_status.py +746 -0
  192. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-311-pytest-9.1.1.pyc +0 -0
  193. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-311-pytest-9.1.1.pyc +0 -0
  194. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/fixtures/sprint-status-template.yaml +71 -0
  195. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_git_evidence.py +750 -0
  196. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_sprint_status.py +1579 -0
  197. package/src/bmm-skills/v6-shims/README.md +28 -0
  198. package/src/bmm-skills/v6-shims/bmad-create-architecture/SKILL.md +30 -0
  199. package/src/bmm-skills/v6-shims/bmad-create-architecture/customize.toml +41 -0
  200. package/src/bmm-skills/v6-shims/bmad-create-prd/SKILL.md +30 -0
  201. package/src/bmm-skills/v6-shims/bmad-create-prd/customize.toml +41 -0
  202. package/src/bmm-skills/v6-shims/bmad-create-story/SKILL.md +434 -0
  203. package/src/bmm-skills/v6-shims/bmad-create-story/checklist.md +357 -0
  204. package/src/bmm-skills/v6-shims/bmad-create-story/customize.toml +41 -0
  205. package/src/bmm-skills/v6-shims/bmad-create-story/discover-inputs.md +88 -0
  206. package/src/bmm-skills/v6-shims/bmad-create-story/template.md +49 -0
  207. package/src/bmm-skills/v6-shims/bmad-dev-auto/SKILL.md +19 -0
  208. package/src/bmm-skills/v6-shims/bmad-dev-story/SKILL.md +502 -0
  209. package/src/bmm-skills/v6-shims/bmad-dev-story/checklist.md +80 -0
  210. package/src/bmm-skills/v6-shims/bmad-dev-story/customize.toml +44 -0
  211. package/src/bmm-skills/v6-shims/bmad-document-project/SKILL.md +14 -0
  212. package/src/bmm-skills/v6-shims/bmad-domain-research/SKILL.md +14 -0
  213. package/src/bmm-skills/v6-shims/bmad-edit-prd/SKILL.md +30 -0
  214. package/src/bmm-skills/v6-shims/bmad-edit-prd/customize.toml +42 -0
  215. package/src/bmm-skills/v6-shims/bmad-market-research/SKILL.md +14 -0
  216. package/src/bmm-skills/v6-shims/bmad-quick-dev/SKILL.md +19 -0
  217. package/src/bmm-skills/v6-shims/bmad-sprint-status/SKILL.md +26 -0
  218. package/src/bmm-skills/v6-shims/bmad-sprint-status/customize.toml +41 -0
  219. package/src/bmm-skills/v6-shims/bmad-technical-research/SKILL.md +14 -0
  220. package/src/bmm-skills/v6-shims/bmad-validate-prd/SKILL.md +30 -0
  221. package/src/bmm-skills/v6-shims/bmad-validate-prd/customize.toml +42 -0
  222. package/src/core-skills/bmad-advanced-elicitation/SKILL.md +65 -0
  223. package/src/core-skills/bmad-advanced-elicitation/assets/methods.csv +72 -0
  224. package/src/core-skills/bmad-advanced-elicitation/customize.toml +54 -0
  225. package/src/core-skills/bmad-advanced-elicitation/scripts/pick_methods.py +233 -0
  226. package/src/core-skills/bmad-advanced-elicitation/scripts/tests/test_pick_methods.py +228 -0
  227. package/src/core-skills/bmad-brainstorming/SKILL.md +80 -0
  228. package/src/core-skills/bmad-brainstorming/assets/brain-icons.json +166 -0
  229. package/src/core-skills/bmad-brainstorming/assets/brain-methods.csv +109 -0
  230. package/src/core-skills/bmad-brainstorming/assets/brain-selector.html +328 -0
  231. package/src/core-skills/bmad-brainstorming/customize.toml +84 -0
  232. package/src/core-skills/bmad-brainstorming/references/converge.md +24 -0
  233. package/src/core-skills/bmad-brainstorming/references/finalize.md +26 -0
  234. package/src/core-skills/bmad-brainstorming/references/headless.md +54 -0
  235. package/src/core-skills/bmad-brainstorming/references/in-chat-techniques.md +18 -0
  236. package/src/core-skills/bmad-brainstorming/references/mode-autonomous.md +10 -0
  237. package/src/core-skills/bmad-brainstorming/references/mode-facilitator.md +11 -0
  238. package/src/core-skills/bmad-brainstorming/references/mode-partner.md +16 -0
  239. package/src/core-skills/bmad-brainstorming/references/resume.md +5 -0
  240. package/src/core-skills/bmad-brainstorming/scripts/brain.py +770 -0
  241. package/src/core-skills/bmad-brainstorming/scripts/tests/test_brain.py +239 -0
  242. package/src/core-skills/bmad-customize/SKILL.md +111 -0
  243. package/src/core-skills/bmad-customize/scripts/list_customizable_skills.py +231 -0
  244. package/src/core-skills/bmad-customize/scripts/tests/test_list_customizable_skills.py +249 -0
  245. package/src/core-skills/bmad-deep-recon/SKILL.md +82 -0
  246. package/src/core-skills/bmad-deep-recon/assets/research.template.md +18 -0
  247. package/src/core-skills/bmad-deep-recon/customize.toml +212 -0
  248. package/src/core-skills/bmad-deep-recon/references/draft.md +8 -0
  249. package/src/core-skills/bmad-deep-recon/references/finalize.md +11 -0
  250. package/src/core-skills/bmad-deep-recon/references/html-briefing.md +16 -0
  251. package/src/core-skills/bmad-deep-recon/references/lifecycle.md +11 -0
  252. package/src/core-skills/bmad-deep-recon/references/process.md +10 -0
  253. package/src/core-skills/bmad-deep-recon/references/run.md +73 -0
  254. package/src/core-skills/bmad-deep-recon/references/selection.md +13 -0
  255. package/src/core-skills/bmad-deep-recon/references/synthesis.md +16 -0
  256. package/src/core-skills/bmad-deep-recon/references/verification.md +29 -0
  257. package/src/core-skills/bmad-deep-recon/scripts/recon_kit.py +322 -0
  258. package/src/core-skills/bmad-deep-recon/scripts/tests/test_recon_kit.py +144 -0
  259. package/src/core-skills/bmad-deep-recon/types/academic-lit.md +19 -0
  260. package/src/core-skills/bmad-deep-recon/types/competitive.md +19 -0
  261. package/src/core-skills/bmad-deep-recon/types/domain.md +19 -0
  262. package/src/core-skills/bmad-deep-recon/types/market.md +19 -0
  263. package/src/core-skills/bmad-deep-recon/types/technical.md +19 -0
  264. package/src/core-skills/bmad-deep-recon/types/user-voice.md +19 -0
  265. package/src/core-skills/bmad-forge-idea/SKILL.md +107 -0
  266. package/src/core-skills/bmad-forge-idea/customize.toml +42 -0
  267. package/src/core-skills/bmad-forge-idea/scripts/resolve_personas.py +275 -0
  268. package/src/core-skills/bmad-forge-idea/scripts/tests/test_resolve_personas.py +138 -0
  269. package/src/core-skills/bmad-help/SKILL.md +75 -0
  270. package/src/core-skills/bmad-party-mode/SKILL.md +60 -0
  271. package/src/core-skills/bmad-party-mode/customize.toml +211 -0
  272. package/src/core-skills/bmad-party-mode/references/create-party.md +70 -0
  273. package/src/core-skills/bmad-party-mode/references/mode-agent-team.md +13 -0
  274. package/src/core-skills/bmad-party-mode/references/mode-auto.md +13 -0
  275. package/src/core-skills/bmad-party-mode/references/mode-subagent.md +31 -0
  276. package/src/core-skills/bmad-party-mode/references/party-memory.md +51 -0
  277. package/src/core-skills/bmad-party-mode/scripts/resolve_party.py +282 -0
  278. package/src/core-skills/bmad-party-mode/scripts/tests/test_resolve_party.py +146 -0
  279. package/src/core-skills/bmad-review/SKILL.md +49 -0
  280. package/src/core-skills/bmad-review/customize.toml +141 -0
  281. package/src/core-skills/bmad-review/references/editorial-common.md +56 -0
  282. package/src/core-skills/bmad-review/references/lens-adversarial.md +19 -0
  283. package/src/core-skills/bmad-review/references/lens-edge-case-hunter.md +54 -0
  284. package/src/core-skills/bmad-review/references/lens-prose.md +7 -0
  285. package/src/core-skills/bmad-review/references/lens-structure.md +9 -0
  286. package/src/core-skills/bmad-review/references/lens-verification-gap.md +92 -0
  287. package/src/core-skills/bmad-review/references/structure-models.md +44 -0
  288. package/src/core-skills/bmad-review/scripts/tests/test_word_metrics.py +62 -0
  289. package/src/core-skills/bmad-review/scripts/word_metrics.py +102 -0
  290. package/src/core-skills/module-help.csv +10 -0
  291. package/src/core-skills/module.yaml +38 -0
  292. package/src/core-skills/v6-shims/README.md +25 -0
  293. package/src/core-skills/v6-shims/bmad-editorial-review/SKILL.md +6 -0
  294. package/src/core-skills/v6-shims/bmad-editorial-review/customize.toml +31 -0
  295. package/src/core-skills/v6-shims/bmad-editorial-review-prose/SKILL.md +6 -0
  296. package/src/core-skills/v6-shims/bmad-editorial-review-structure/SKILL.md +6 -0
  297. package/src/core-skills/v6-shims/bmad-review-adversarial-general/SKILL.md +6 -0
  298. package/src/core-skills/v6-shims/bmad-review-edge-case-hunter/SKILL.md +6 -0
  299. package/src/core-skills/v6-shims/bmad-review-verification-gap/SKILL.md +6 -0
  300. package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
  301. package/src/scripts/config_utils.py +119 -0
  302. package/src/scripts/memlog.py +224 -0
  303. package/src/scripts/render_skill.py +401 -0
  304. package/src/scripts/resolve_config.py +74 -0
  305. package/src/scripts/resolve_customization.py +99 -0
  306. package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
  307. package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
  308. package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
  309. package/src/scripts/tests/test_config_utils.py +85 -0
  310. package/src/scripts/tests/test_memlog.py +306 -0
  311. package/src/scripts/tests/test_resolve_config.py +89 -0
  312. package/src/scripts/tests/test_resolve_customization.py +77 -0
  313. package/tools/bundle-web-bundles.js +117 -0
  314. package/tools/format-workflow-md.js +263 -0
  315. package/tools/installer/README.md +60 -0
  316. package/tools/installer/bmad-cli.js +105 -0
  317. package/tools/installer/cli-utils.js +57 -0
  318. package/tools/installer/commands/install.js +149 -0
  319. package/tools/installer/commands/status.js +65 -0
  320. package/tools/installer/commands/uninstall.js +167 -0
  321. package/tools/installer/core/config.js +73 -0
  322. package/tools/installer/core/existing-install.js +121 -0
  323. package/tools/installer/core/install-paths.js +132 -0
  324. package/tools/installer/core/installer.js +1767 -0
  325. package/tools/installer/core/legacy-warnings.js +151 -0
  326. package/tools/installer/core/manifest-generator.js +859 -0
  327. package/tools/installer/core/manifest.js +433 -0
  328. package/tools/installer/core/uv-check.js +195 -0
  329. package/tools/installer/core/wsl-node-check.js +109 -0
  330. package/tools/installer/file-ops.js +204 -0
  331. package/tools/installer/fs-native.js +116 -0
  332. package/tools/installer/ide/_config-driven.js +972 -0
  333. package/tools/installer/ide/manager.js +324 -0
  334. package/tools/installer/ide/platform-codes.js +80 -0
  335. package/tools/installer/ide/platform-codes.yaml +343 -0
  336. package/tools/installer/ide/shared/installed-skills.js +50 -0
  337. package/tools/installer/ide/shared/path-utils.js +219 -0
  338. package/tools/installer/ide/shared/skill-manifest.js +57 -0
  339. package/tools/installer/install-messages.yaml +37 -0
  340. package/tools/installer/list-options.js +210 -0
  341. package/tools/installer/message-loader.js +83 -0
  342. package/tools/installer/modules/channel-plan.js +203 -0
  343. package/tools/installer/modules/channel-resolver.js +241 -0
  344. package/tools/installer/modules/custom-module-manager.js +924 -0
  345. package/tools/installer/modules/external-manager.js +671 -0
  346. package/tools/installer/modules/git-env.js +47 -0
  347. package/tools/installer/modules/module-help-schema.js +13 -0
  348. package/tools/installer/modules/official-modules.js +2257 -0
  349. package/tools/installer/modules/plugin-resolver.js +398 -0
  350. package/tools/installer/modules/version-resolver.js +336 -0
  351. package/tools/installer/project-root.js +224 -0
  352. package/tools/installer/prompts.js +791 -0
  353. package/tools/installer/set-overrides.js +330 -0
  354. package/tools/installer/ui.js +2167 -0
  355. package/tools/installer/yaml-format.js +245 -0
  356. package/tools/javascript-conventions.md +5 -0
  357. package/tools/migrate-custom-module-paths.js +124 -0
  358. package/tools/skill-validator.md +378 -0
  359. package/tools/validate-published-implementation-model.mjs +68 -0
  360. package/tools/validate-sidebar-order.js +388 -0
  361. package/tools/validate-skills.js +735 -0
  362. package/tools/validate-svg-changes.sh +356 -0
  363. package/web-bundles/README.md +46 -0
  364. package/web-bundles/brainstorming-coach/INSTRUCTIONS.md +86 -0
  365. package/web-bundles/brainstorming-coach/SKILL.md +83 -0
  366. package/web-bundles/brainstorming-coach/brain-methods.csv +62 -0
  367. package/web-bundles/bundles.json +139 -0
  368. package/web-bundles/market-and-industry-research/INSTRUCTIONS.md +88 -0
  369. package/web-bundles/market-and-industry-research/SKILL.md +59 -0
  370. package/web-bundles/prd-coach/INSTRUCTIONS.md +86 -0
  371. package/web-bundles/prd-coach/SKILL.md +101 -0
  372. package/web-bundles/prd-coach/prd-template.md +165 -0
  373. package/web-bundles/prd-coach/prd-validation-checklist.md +135 -0
  374. package/web-bundles/prfaq-coach/INSTRUCTIONS.md +86 -0
  375. package/web-bundles/prfaq-coach/SKILL.md +139 -0
  376. package/web-bundles/product-brief-coach/INSTRUCTIONS.md +86 -0
  377. package/web-bundles/product-brief-coach/SKILL.md +113 -0
  378. package/web-bundles/ux-coach/INSTRUCTIONS.md +92 -0
  379. package/web-bundles/ux-coach/SKILL.md +187 -0
  380. package/web-bundles/ux-coach/ux-validation.md +100 -0
@@ -0,0 +1,149 @@
1
+ # DO NOT EDIT -- overwritten on every update.
2
+ #
3
+ # Workflow customization surface for bmad-prd.
4
+ #
5
+ # Override files (not edited here):
6
+ # {project-root}/_bmad/custom/bmad-prd.toml (team)
7
+ # {project-root}/_bmad/custom/bmad-prd.user.toml (personal)
8
+
9
+ [workflow]
10
+
11
+ # --- Configurable below. Overrides merge per BMad 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 bmad-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:bmad-review lenses=structure,prose"
75
+ # "file:{project-root}/_bmad/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
+ # The default entry runs bmad-review's two editorial lenses in order:
86
+ # structure, then prose on top of the structure findings. The `lenses=` suffix
87
+ # names them; drop it to let bmad-review pick what fits the content.
88
+ doc_standards = [
89
+ "skill:bmad-review lenses=structure,prose",
90
+ ]
91
+
92
+ # External-source registry. Natural-language directives describing knowledge
93
+ # bases, MCP tools, or internal systems the LLM may consult during the workflow
94
+ # when a relevant need surfaces. The LLM does NOT query these preemptively —
95
+ # it consults them on demand (during Discovery, validation, drafting, etc.).
96
+ # Each entry names the tool, the conditions for using it, and any fields the
97
+ # tool needs. If a named MCP tool is unavailable at runtime, the LLM falls
98
+ # back to standard behavior and notes the gap. Empty by default.
99
+ #
100
+ # Lifecycle note: distinct from persistent_facts. persistent_facts are loaded
101
+ # once at activation and kept in mind for the whole run; external_sources are
102
+ # a registry consulted on demand and only when the conversation surfaces a
103
+ # matching need.
104
+ #
105
+ # Examples (set in team/user override TOML):
106
+ # "When researching internal product context, consult corp:kb_search (database='product-docs') before web search."
107
+ # "For competitive landscape during Discovery, query corp:competitive_db with category={project_name}."
108
+ # "When validating domain-compliance claims, cross-check against corp:hipaa_reference for healthcare or corp:pci_reference for fintech."
109
+ external_sources = []
110
+
111
+ # External-handoff routing. Natural-language directives the LLM applies at
112
+ # Finalize to route outputs beyond local files (Confluence, Notion, Google
113
+ # Drive, ticket systems, etc.). Each entry names the MCP tool, the destination,
114
+ # and the fields the tool needs. Handoffs run after the artifact is polished
115
+ # and before the final user-facing message. URLs or IDs returned by the
116
+ # destination are captured and surfaced to the user. If a named tool is
117
+ # unavailable at runtime, the handoff is skipped and flagged in the JSON
118
+ # status; local files always exist regardless. Fires automatically — users
119
+ # can opt out in their prompt for a specific run. Empty by default.
120
+ #
121
+ # Lifecycle note: distinct from persistent_facts and external_sources.
122
+ # Fired once at Finalize step 6, never during Discovery or drafting.
123
+ #
124
+ # Examples (set in team/user override TOML):
125
+ # "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})."
126
+ # "Mirror the PRD to Notion via notion:create_page (database_id='abc123', title='PRD: '+{project_name})."
127
+ # "When the PRD references a parent initiative, link via corp:jira_link on the epic key in frontmatter."
128
+ external_handoffs = []
129
+
130
+ # --- Finalize reviewers ---
131
+ # Reviewers spawned at Finalize step 3 (and at the Validate intent) alongside
132
+ # the structural checklist validator. The authoring skill assembles the gate
133
+ # menu (validator + these reviewers + any ad-hoc reviewers it judges warranted
134
+ # by the artifact content) and lets the user pick all, a subset, or skip. Gate
135
+ # UX is stakes-calibrated: hobby/solo scope may run defaults quietly or skip;
136
+ # higher stakes get the explicit menu.
137
+ #
138
+ # Entries follow the standard prefix convention (same as persistent_facts and
139
+ # doc_standards):
140
+ # "skill:NAME" invoke the named review skill as a subagent against prd.md
141
+ # "file:PATH" load the file as a review prompt; spawn an adversarial
142
+ # subagent applying that prompt to prd.md
143
+ # plain text use the text directly as the subagent's review prompt
144
+ #
145
+ # Override TOML may append additional reviewers. Arrays append per BMad rules.
146
+ #
147
+ # Resolved on-demand by the authoring skill (not pulled at activation): only
148
+ # when entering the Validate intent or assembling the gate at Finalize step 3.
149
+ finalize_reviewers = []
@@ -0,0 +1,39 @@
1
+ # Headless Mode
2
+
3
+ Load this file when bmad-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 `uv run {project-root}/_bmad/scripts/memlog.py 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.
@@ -0,0 +1,97 @@
1
+ # Validate
2
+
3
+ The Validate intent playbook. Standalone — this intent critiques an existing PRD without changing it and ends after the user has seen the report; it does not run Finalize. The synthesis pipeline below is also reused for mid-session report requests during Create/Update.
4
+
5
+ ## Orient
6
+
7
+ Source-extract against `.memlog.md`, any original inputs, and the PRD/addendum themselves. Delegate to subagents per PRD Discipline → "Extract, don't ingest" (in SKILL.md); the parent assembles from extracts.
8
+
9
+ ## Run the Reviewer Gate
10
+
11
+ Run the Reviewer Gate (see SKILL.md) against `prd.md` (and `addendum.md` if present). The rubric walker is the default entry in the gate menu; under Validate intent it additionally runs the synthesis pipeline below. The Finalize discipline pass during Create/Update does NOT render a report — findings stay in-conversation.
12
+
13
+ ## Rubric-walker pipeline
14
+
15
+ The rubric walker is the primary review entry. Spawn it as a subagent with this prompt:
16
+
17
+ > You are validating a PRD against the quality rubric at `{workflow.validation_checklist_template}`. Read the full rubric first, then read `prd.md` (and `addendum.md` if present). Form a judgment per dimension — *strong / adequate / thin / broken* — and write findings only where they add information. Cite specific PRD locations and quote phrases. Severity ranks impact on the PRD's usefulness, not how easy the fix is. Write your review to `{doc_workspace}/review-rubric.md` in the format the rubric specifies. Return ONLY a compact summary (overall verdict, dimension verdicts, finding counts by severity, file path).
18
+
19
+ The Reviewer Gate may also dispatch additional reviewers from `{workflow.finalize_reviewers}` (adversarial-general by default) and any ad-hoc reviewers the parent judges warranted. Each writes its review to `{doc_workspace}/review-{slug}.md` and returns a compact summary. Run in parallel.
20
+
21
+ ## Synthesis pipeline
22
+
23
+ Once every selected reviewer has returned, the parent synthesizes one consolidated report. **Do not skip this step under Validate intent** — it produces the persistent artifact the user opens.
24
+
25
+ ### Inputs
26
+
27
+ - `{doc_workspace}/review-rubric.md` — primary, structured by the seven dimensions
28
+ - Zero or more `{doc_workspace}/review-{slug}.md` files — extra reviewers (adversarial, etc.)
29
+ - `{workflow.validation_report_template}` — the HTML skeleton
30
+
31
+ ### What the synthesis pass does
32
+
33
+ 1. Read every reviewer file in `{doc_workspace}/review-*.md`.
34
+ 2. Fill the HTML skeleton:
35
+ - **Header.** PRD name, path. Grade derived from the rubric verdicts and severity counts: *Excellent* = all dimensions strong/adequate, no high/critical findings · *Good* = ≤1 thin dimension, no critical findings · *Fair* = multiple thin dimensions or any high finding · *Poor* = any broken dimension or any critical finding. Set the matching `grade-excellent | grade-good | grade-fair | grade-poor` class.
36
+ - **Synthesis block.** Lift the rubric's *Overall verdict* paragraph as the lead; if adversarial or ad-hoc reviewers materially shift the picture, add a second paragraph that names what they surfaced.
37
+ - **Dimension summary cards.** One per dimension that was assessed. Colored verdict text. Skip dimensions the rubric marked n/a for this PRD (e.g. downstream usability for a standalone PRD).
38
+ - **Dimension sections.** One `<section class="dimension">` per assessed dimension, in rubric order. `<details open>` for *thin* and *broken*; closed for *strong* and *adequate*. Each contains the dimension judgment (the prose from review-rubric.md) and the findings list.
39
+ - **Reviewer sections.** One `<section class="reviewer-section">` per extra reviewer that ran. The source file path goes in the `<span class="reviewer-source">`. Closed by default. Adversarial findings keep their adversarial voice — do not soften.
40
+ - **Mechanical notes.** Bullet list from the rubric's "Mechanical notes" section. Skip the block if empty.
41
+ - **Footer.** Rubric path, ISO timestamp.
42
+ 3. Write the filled HTML to `{doc_workspace}/validation-report.html`.
43
+ 4. Write the markdown twin to `{doc_workspace}/validation-report.md` (same content, grouped by severity rather than by dimension — see format below; this is the canonical form for downstream re-reading).
44
+ 5. Open the HTML in the default browser with the platform opener — `open` on macOS, `xdg-open` on Linux, `start ""` on Windows — double-quoting the path:
45
+ ```bash
46
+ open "{doc_workspace}/validation-report.html"
47
+ ```
48
+ If the command fails, don't retry with another opener: tell the user the file path and move on. Skip the open step in headless mode (see `references/headless.md`).
49
+
50
+ ### Markdown twin format
51
+
52
+ ```markdown
53
+ # Validation Report — {prd_name}
54
+
55
+ - **PRD:** `{prd_path}`
56
+ - **Rubric:** `{rubric_path}`
57
+ - **Run at:** {ISO timestamp}
58
+ - **Grade:** {Excellent | Good | Fair | Poor}
59
+
60
+ ## Overall verdict
61
+ {synthesis paragraphs}
62
+
63
+ ## Dimension verdicts
64
+ - Decision-readiness — {verdict}
65
+ - Substance over theater — {verdict}
66
+ - (etc. for each assessed dimension)
67
+
68
+ ## Findings by severity
69
+
70
+ ### Critical (n)
71
+ **[Dimension or Reviewer]** — Title (§ location)
72
+ {Note}
73
+ Fix: {suggested fix}
74
+
75
+ ### High (n)
76
+ ...
77
+
78
+ ### Medium (n)
79
+ ...
80
+
81
+ ### Low (n)
82
+ ...
83
+
84
+ ## Mechanical notes
85
+ - {bullet}
86
+
87
+ ## Reviewer files
88
+ - `review-rubric.md`
89
+ - `review-adversarial-general.md` (if present)
90
+ - (etc.)
91
+ ```
92
+
93
+ Re-running validation overwrites the consolidated report in place. The individual `review-*.md` files are preserved so the user can drill in.
94
+
95
+ ## Close
96
+
97
+ Surface artifact paths; the rendered HTML/markdown is the persistent artifact. Always offer to roll findings into an Update.
@@ -0,0 +1,135 @@
1
+ ---
2
+ name: bmad-prfaq
3
+ description: Working Backwards PRFAQ challenge that stress-tests a product concept customer-first. Use when the user requests to 'create a PRFAQ', 'work backwards', or 'run the PRFAQ challenge'.
4
+ ---
5
+
6
+ # Working Backwards: The PRFAQ Challenge
7
+
8
+ ## Overview
9
+
10
+ This skill forges product concepts through Amazon's Working Backwards methodology — the PRFAQ (Press Release / Frequently Asked Questions). Act as a relentless but constructive product coach who stress-tests every claim, challenges vague thinking, and refuses to let weak ideas pass unchallenged. The user walks in with an idea. They walk out with a battle-hardened concept — or the honest realization they need to go deeper. Both are wins.
11
+
12
+ The PRFAQ forces customer-first clarity: write the press release announcing the finished product before building it. If you can't write a compelling press release, the product isn't ready. The customer FAQ validates the value proposition from the outside in. The internal FAQ addresses feasibility, risks, and hard trade-offs.
13
+
14
+ **This is hardcore mode.** The coaching is direct, the questions are hard, and vague answers get challenged. But when users are stuck, offer concrete suggestions, reframings, and alternatives — tough love, not tough silence. The goal is to strengthen the concept, not to gatekeep it.
15
+
16
+ **Args:** Accepts `--headless` / `-H` for autonomous first-draft generation from provided context.
17
+
18
+ **Output:** A complete PRFAQ document + PRD distillate for downstream pipeline consumption.
19
+
20
+ **Research-grounded.** All competitive, market, and feasibility claims in the output must be verified against current real-world data. Proactively research to fill knowledge gaps — the user deserves a PRFAQ informed by today's landscape, not yesterday's assumptions.
21
+
22
+ ## Conventions
23
+
24
+ - Bare paths (e.g. `references/press-release.md`) resolve from the skill root.
25
+ - `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).
26
+ - `{project-root}`-prefixed paths resolve from the project working directory.
27
+ - `{skill-name}` resolves to the skill directory's basename.
28
+
29
+ ## On Activation
30
+
31
+ ### Step 1: Resolve the Workflow Block
32
+
33
+ Run: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`
34
+
35
+ **If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:
36
+
37
+ 1. `{skill-root}/customize.toml` — defaults
38
+ 2. `{project-root}/_bmad/custom/{skill-name}.toml` — team overrides
39
+ 3. `{project-root}/_bmad/custom/{skill-name}.user.toml` — personal overrides
40
+
41
+ Any missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append.
42
+
43
+ ### Step 2: Execute Prepend Steps
44
+
45
+ Execute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.
46
+
47
+ ### Step 3: Load Persistent Facts
48
+
49
+ Treat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim.
50
+
51
+ ### Step 4: Load Config
52
+
53
+ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
54
+ - Use `{user_name}` for greeting
55
+ - Use `{communication_language}` for all communications
56
+ - Use `{document_output_language}` for output documents
57
+ - Use `{planning_artifacts}` for output location and artifact scanning
58
+ - Use `{project_knowledge}` for additional context scanning
59
+
60
+ ### Step 5: Greet the User
61
+
62
+ Greet `{user_name}`, speaking in `{communication_language}`. Be warm but efficient — dream builder energy.
63
+
64
+ ### Step 6: Execute Append Steps
65
+
66
+ Execute each entry in `{workflow.activation_steps_append}` in order.
67
+
68
+ Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
69
+
70
+ ## Pre-workflow Setup
71
+
72
+ 1. **Resume detection:** Check if `{planning_artifacts}/prfaq-{project_name}.md` already exists. If it does, read only the first 20 lines to extract the frontmatter `stage` field and offer to resume from the next stage. Do not read the full document. If the user confirms, route directly to that stage's reference file.
73
+
74
+ 2. **Mode detection:**
75
+ - `--headless` / `-H`: Produce complete first-draft PRFAQ from provided inputs without interaction. Validate the input schema only (customer, problem, stakes, solution concept present and non-vague) — do not read any referenced files or documents yourself. If required fields are missing or too vague, return an error with specific guidance on what's needed. Fan out artifact analyzer and web researcher subagents in parallel (see Contextual Gathering below) to process all referenced materials, then create the output document at `{planning_artifacts}/prfaq-{project_name}.md` using `./assets/prfaq-template.md` and route to `./references/press-release.md`.
76
+ - Default: Full interactive coaching — the gauntlet.
77
+
78
+ **Headless input schema:**
79
+ - **Required:** customer (specific persona), problem (concrete), stakes (why it matters), solution (concept)
80
+ - **Optional:** competitive context, technical constraints, team/org context, target market, existing research
81
+
82
+ **Set the tone immediately.** This isn't a warm, exploratory greeting. Frame it as a challenge — the user is about to stress-test their thinking by writing the press release for a finished product before building anything. Convey that surviving this process means the concept is ready, and failing here saves wasted effort. Be direct and energizing.
83
+
84
+ Then briefly ground the user on what a PRFAQ actually is — Amazon's Working Backwards method where you write the finished-product press release first, then answer the hardest customer and stakeholder questions. The point is forcing clarity before committing resources.
85
+
86
+ Then proceed to Stage 1 below.
87
+
88
+ ## Stage 1: Ignition
89
+
90
+ **Goal:** Get the raw concept on the table and immediately establish customer-first thinking. This stage ends when you have enough clarity on the customer, their problem, and the proposed solution to draft a press release headline.
91
+
92
+ **Customer-first enforcement:**
93
+
94
+ - If the user leads with a solution ("I want to build X"): redirect to the customer's problem. Don't let them skip the pain.
95
+ - If the user leads with a technology ("I want to use AI/blockchain/etc"): challenge harder. Technology is a "how", not a "why" — push them to articulate the human problem. Strip away the buzzword and ask whether anyone still cares.
96
+ - If the user leads with a customer problem: dig deeper into specifics — how they cope today, what they've tried, why it hasn't been solved.
97
+
98
+ When the user gets stuck, offer concrete suggestions based on what they've shared so far. Draft a hypothesis for them to react to rather than repeating the question harder.
99
+
100
+ **Concept type detection:** Early in the conversation, identify whether this is a commercial product, internal tool, open-source project, or community/nonprofit initiative. Store this as `{concept_type}` — it calibrates FAQ question generation in Stages 3 and 4. Non-commercial concepts don't have "unit economics" or "first 100 customers" — adapt the framing to stakeholder value, adoption paths, and sustainability instead.
101
+
102
+ **Essentials to capture before progressing:**
103
+ - Who is the customer/user? (specific persona, not "everyone")
104
+ - What is their problem? (concrete and felt, not abstract)
105
+ - Why does this matter to them? (stakes and consequences)
106
+ - What's the initial concept for a solution? (even rough)
107
+
108
+ **Fast-track:** If the user provides all four essentials in their opening message (or via structured input), acknowledge and confirm understanding, then move directly to document creation and Stage 2 without extended discovery.
109
+
110
+ **Graceful redirect:** If after 2-3 exchanges the user can't articulate a customer or problem, don't force it. Point them upstream: `bmad-brainstorming` if they need to generate options, or `bmad-forge-idea` if they hold an idea that hasn't been pressure-tested into something sound yet.
111
+
112
+ **Contextual Gathering:** Once you understand the concept, gather external context before drafting begins.
113
+
114
+ 1. **Ask about inputs:** Ask the user whether they have existing documents, research, brainstorming, or other materials to inform the PRFAQ. Collect paths for subagent scanning — do not read user-provided files yourself; that's the Artifact Analyzer's job.
115
+ 2. **Fan out subagents in parallel:**
116
+ - **Artifact Analyzer** (`./agents/artifact-analyzer.md`) — Scans `{planning_artifacts}` and `{project_knowledge}` for relevant documents, plus any user-provided paths. Receives the product intent summary so it knows what's relevant.
117
+ - **Web Researcher** (`./agents/web-researcher.md`) — Searches for competitive landscape, market context, and current industry data relevant to the concept. Receives the product intent summary.
118
+ 3. **Graceful degradation:** If subagents are unavailable, scan the most relevant 1-2 documents inline and do targeted web searches directly. Never block the workflow.
119
+ 4. **Merge findings** with what the user shared. Surface anything surprising that enriches or challenges their assumptions before proceeding.
120
+
121
+ **Create the output document** at `{planning_artifacts}/prfaq-{project_name}.md` using `./assets/prfaq-template.md`. Write the frontmatter (populate `inputs` with any source documents used) and any initial content captured during Ignition. This document is the working artifact — update it progressively through all stages.
122
+
123
+ **Coaching Notes Capture:** Before moving on, append a `<!-- coaching-notes-stage-1 -->` block to the output document: concept type and rationale, initial assumptions challenged, why this direction over alternatives discussed, key subagent findings that shaped the concept framing, and any user context captured that doesn't fit the PRFAQ itself.
124
+
125
+ **When you have enough to draft a press release headline**, route to `./references/press-release.md`.
126
+
127
+ ## Stages
128
+
129
+ | # | Stage | Purpose | Location |
130
+ |---|-------|---------|----------|
131
+ | 1 | Ignition | Raw concept, enforce customer-first thinking | SKILL.md (above) |
132
+ | 2 | The Press Release | Iterative drafting with hard coaching | `./references/press-release.md` |
133
+ | 3 | Customer FAQ | Devil's advocate customer questions | `./references/customer-faq.md` |
134
+ | 4 | Internal FAQ | Skeptical stakeholder questions | `./references/internal-faq.md` |
135
+ | 5 | The Verdict | Synthesis, strength assessment, final output | `./references/verdict.md` |
@@ -0,0 +1,60 @@
1
+ # Artifact Analyzer
2
+
3
+ You are a research analyst. Your job is to scan project documents and extract information relevant to a product concept being stress-tested through the PRFAQ process.
4
+
5
+ ## Input
6
+
7
+ You will receive:
8
+ - **Product intent:** A summary of the concept — customer, problem, solution direction
9
+ - **Scan paths:** Directories to search for relevant documents (e.g., planning artifacts, project knowledge folders)
10
+ - **User-provided paths:** Any specific files the user pointed to
11
+
12
+ ## Process
13
+
14
+ 1. **Scan the provided directories** for documents that could be relevant:
15
+ - Brainstorming reports (`*brainstorm*`, `*ideation*`)
16
+ - Research documents (`*research*`, `*analysis*`, `*findings*`)
17
+ - Project context (`*context*`, `*overview*`, `*background*`)
18
+ - Existing briefs or summaries (`*brief*`, `*summary*`)
19
+ - Any markdown, text, or structured documents that look relevant
20
+
21
+ 2. **For sharded documents** (a folder with `index.md` and multiple files), read the index first to understand what's there, then read only the relevant parts.
22
+
23
+ 3. **For very large documents** (estimated >50 pages), read the table of contents, executive summary, and section headings first. Read only sections directly relevant to the stated product intent. Note which sections were skimmed vs read fully.
24
+
25
+ 4. **Read all relevant documents in parallel** — issue all Read calls in a single message rather than one at a time. Extract:
26
+ - Key insights that relate to the product intent
27
+ - Market or competitive information
28
+ - User research or persona information
29
+ - Technical context or constraints
30
+ - Ideas, both accepted and rejected (rejected ideas are valuable — they prevent re-proposing)
31
+ - Any metrics, data points, or evidence
32
+
33
+ 5. **Ignore documents that aren't relevant** to the stated product intent. Don't waste tokens on unrelated content.
34
+
35
+ ## Output
36
+
37
+ Return ONLY the following JSON object. No preamble, no commentary. Keep total response under 1,500 tokens. Maximum 5 bullets per section — prioritize the most impactful findings.
38
+
39
+ ```json
40
+ {
41
+ "documents_found": [
42
+ {"path": "file path", "relevance": "one-line summary"}
43
+ ],
44
+ "key_insights": [
45
+ "bullet — grouped by theme, each self-contained"
46
+ ],
47
+ "user_market_context": [
48
+ "bullet — users, market, competition found in docs"
49
+ ],
50
+ "technical_context": [
51
+ "bullet — platforms, constraints, integrations"
52
+ ],
53
+ "ideas_and_decisions": [
54
+ {"idea": "description", "status": "accepted|rejected|open", "rationale": "brief why"}
55
+ ],
56
+ "raw_detail_worth_preserving": [
57
+ "bullet — specific details, data points, quotes for the distillate"
58
+ ]
59
+ }
60
+ ```
@@ -0,0 +1,49 @@
1
+ # Web Researcher
2
+
3
+ You are a market research analyst. Your job is to find current, relevant competitive, market, and industry context for a product concept being stress-tested through the PRFAQ process.
4
+
5
+ ## Input
6
+
7
+ You will receive:
8
+ - **Product intent:** A summary of the concept — customer, problem, solution direction, and the domain it operates in
9
+
10
+ ## Process
11
+
12
+ 1. **Identify search angles** based on the product intent:
13
+ - Direct competitors (products solving the same problem)
14
+ - Adjacent solutions (different approaches to the same pain point)
15
+ - Market size and trends for the domain
16
+ - Industry news or developments that create opportunity or risk
17
+ - User sentiment about existing solutions (what's frustrating people)
18
+
19
+ 2. **Execute 3-5 targeted web searches** — quality over quantity. Search for:
20
+ - "[problem domain] solutions comparison"
21
+ - "[competitor names] alternatives" (if competitors are known)
22
+ - "[industry] market trends [current year]"
23
+ - "[target user type] pain points [domain]"
24
+
25
+ 3. **Synthesize findings** — don't just list links. Extract the signal.
26
+
27
+ ## Output
28
+
29
+ Return ONLY the following JSON object. No preamble, no commentary. Keep total response under 1,000 tokens. Maximum 5 bullets per section.
30
+
31
+ ```json
32
+ {
33
+ "competitive_landscape": [
34
+ {"name": "competitor", "approach": "one-line description", "gaps": "where they fall short"}
35
+ ],
36
+ "market_context": [
37
+ "bullet — market size, growth trends, relevant data points"
38
+ ],
39
+ "user_sentiment": [
40
+ "bullet — what users say about existing solutions"
41
+ ],
42
+ "timing_and_opportunity": [
43
+ "bullet — why now, enabling shifts"
44
+ ],
45
+ "risks_and_considerations": [
46
+ "bullet — market risks, competitive threats, regulatory concerns"
47
+ ]
48
+ }
49
+ ```
@@ -0,0 +1,62 @@
1
+ ---
2
+ title: "PRFAQ: {project_name}"
3
+ status: "{status}"
4
+ created: "{timestamp}"
5
+ updated: "{timestamp}"
6
+ stage: "{current_stage}"
7
+ inputs: []
8
+ ---
9
+
10
+ # {Headline}
11
+
12
+ ## {Subheadline — one sentence: who benefits and what changes for them}
13
+
14
+ **{City, Date}** — {Opening paragraph: announce the product/initiative, state the user's problem, and the key benefit.}
15
+
16
+ {Problem paragraph: the user's pain today. Specific, concrete, felt. No mention of the solution yet.}
17
+
18
+ {Solution paragraph: what changes for the user. Benefits, not features. Outcomes, not implementation.}
19
+
20
+ > "{Leader/founder quote — the vision beyond the feature list.}"
21
+ > — {Name, Title/Role}
22
+
23
+ ### How It Works
24
+
25
+ {The user experience, step by step. Written from THEIR perspective. How they discover it, start using it, and get value from it.}
26
+
27
+ > "{User quote — what a real person would say after using this. Must sound human, not like marketing copy.}"
28
+ > — {Name, Role}
29
+
30
+ ### Getting Started
31
+
32
+ {Clear, concrete path to first value. How to access, try, adopt, or contribute.}
33
+
34
+ ---
35
+
36
+ ## Customer FAQ
37
+
38
+ ### Q: {Hardest customer question first}
39
+
40
+ A: {Honest, specific answer}
41
+
42
+ ### Q: {Next question}
43
+
44
+ A: {Answer}
45
+
46
+ ---
47
+
48
+ ## Internal FAQ
49
+
50
+ ### Q: {Hardest internal question first}
51
+
52
+ A: {Honest, specific answer}
53
+
54
+ ### Q: {Next question}
55
+
56
+ A: {Answer}
57
+
58
+ ---
59
+
60
+ ## The Verdict
61
+
62
+ {Concept strength assessment — what's forged in steel, what needs more heat, what has cracks in the foundation.}
@@ -0,0 +1,16 @@
1
+ {
2
+ "module-code": "bmm",
3
+ "capabilities": [
4
+ {
5
+ "name": "working-backwards",
6
+ "menu-code": "WB",
7
+ "description": "Produces battle-tested PRFAQ document and optional LLM distillate for PRD input.",
8
+ "supports-headless": true,
9
+ "phase-name": "plan",
10
+ "preceded-by": ["brainstorming", "perform-research"],
11
+ "followed-by": ["create-prd"],
12
+ "is-required": false,
13
+ "output-location": "{planning_artifacts}"
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,41 @@
1
+ # DO NOT EDIT -- overwritten on every update.
2
+ #
3
+ # Workflow customization surface for bmad-prfaq. Mirrors the
4
+ # agent customization shape under the [workflow] namespace.
5
+
6
+ [workflow]
7
+
8
+ # --- Configurable below. Overrides merge per BMad structural rules: ---
9
+ # scalars: override wins • arrays (persistent_facts, activation_steps_*): append
10
+ # arrays-of-tables with `code`/`id`: replace matching items, append new ones.
11
+
12
+ # Steps to run before the standard activation (config load, greet).
13
+ # Overrides append. Use for pre-flight loads, compliance checks, etc.
14
+
15
+ activation_steps_prepend = []
16
+
17
+ # Steps to run after greet but before the workflow begins.
18
+ # Overrides append. Use for context-heavy setup that should happen
19
+ # once the user has been acknowledged.
20
+
21
+ activation_steps_append = []
22
+
23
+ # Persistent facts the workflow keeps in mind for the whole run
24
+ # (standards, compliance constraints, stylistic guardrails).
25
+ # Distinct from the runtime memory sidecar — these are static context
26
+ # loaded on activation. Overrides append.
27
+ #
28
+ # Each entry is either:
29
+ # - a literal sentence, e.g. "All briefs must include a regulatory-risk section."
30
+ # - a file reference prefixed with `file:`, e.g. "file:{project-root}/docs/standards.md"
31
+ # (glob patterns are supported; the file's contents are loaded and treated as facts).
32
+
33
+ persistent_facts = [
34
+ "file:{project-root}/**/project-context.md",
35
+ ]
36
+
37
+ # Scalar: executed when the workflow reaches its terminal stage (Stage 5: The Verdict),
38
+ # after the PRFAQ and distillate have been delivered. Override wins. Leave empty for
39
+ # no custom post-completion behavior.
40
+
41
+ on_complete = ""