bmad-method 6.0.5-next.8 → 6.1.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 (262) hide show
  1. package/package.json +1 -1
  2. package/src/bmm/agents/analyst.agent.yaml +1 -1
  3. package/src/bmm/module-help.csv +1 -1
  4. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +1 -1
  5. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +1 -1
  6. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +1 -1
  7. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +1 -1
  8. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +1 -1
  9. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +1 -1
  10. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +1 -1
  11. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +1 -1
  12. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +1 -1
  13. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +1 -1
  14. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +1 -1
  15. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +1 -1
  16. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +1 -1
  17. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +1 -1
  18. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +1 -1
  19. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +1 -1
  20. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +1 -1
  21. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +1 -1
  22. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +1 -1
  23. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +2 -2
  24. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +2 -2
  25. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +2 -2
  26. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +2 -2
  27. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +2 -2
  28. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +2 -2
  29. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +2 -2
  30. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +2 -2
  31. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +2 -2
  32. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +2 -2
  33. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +2 -2
  34. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +2 -2
  35. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +2 -2
  36. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +2 -2
  37. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +2 -2
  38. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +2 -2
  39. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +2 -2
  40. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +31 -13
  41. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +1 -1
  42. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +6 -2
  43. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +1 -1
  44. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +4 -0
  45. package/src/bmm/workflows/4-implementation/code-review/workflow.md +4 -7
  46. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md +0 -4
  47. package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +1 -1
  48. package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +1 -1
  49. package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +1 -1
  50. package/src/core/module-help.csv +2 -2
  51. package/src/core/workflows/bmad-brainstorming/SKILL.md +6 -0
  52. package/src/core/workflows/bmad-brainstorming/bmad-skill-manifest.yaml +1 -0
  53. package/src/core/workflows/{brainstorming → bmad-brainstorming}/workflow.md +2 -5
  54. package/src/core/workflows/bmad-party-mode/SKILL.md +6 -0
  55. package/src/core/workflows/bmad-party-mode/bmad-skill-manifest.yaml +1 -0
  56. package/src/core/workflows/{party-mode → bmad-party-mode}/steps/step-03-graceful-exit.md +0 -1
  57. package/src/core/workflows/{party-mode → bmad-party-mode}/workflow.md +0 -4
  58. package/tools/cli/external-official-modules.yaml +18 -18
  59. package/tools/cli/installers/lib/core/installer.js +25 -8
  60. package/tools/cli/installers/lib/ide/_base-ide.js +0 -1
  61. package/tools/cli/installers/lib/ide/_config-driven.js +9 -4
  62. package/tools/cli/installers/lib/ide/manager.js +3 -3
  63. package/tools/cli/lib/agent/compiler.js +1 -1
  64. package/.augment/code_review_guidelines.yaml +0 -231
  65. package/.coderabbit.yaml +0 -85
  66. package/.github/CODE_OF_CONDUCT.md +0 -128
  67. package/.github/FUNDING.yaml +0 -15
  68. package/.github/ISSUE_TEMPLATE/bug-report.yaml +0 -124
  69. package/.github/ISSUE_TEMPLATE/config.yaml +0 -8
  70. package/.github/ISSUE_TEMPLATE/documentation.yaml +0 -55
  71. package/.github/ISSUE_TEMPLATE/feature-request.md +0 -22
  72. package/.github/ISSUE_TEMPLATE/issue.md +0 -32
  73. package/.github/PULL_REQUEST_TEMPLATE.md +0 -13
  74. package/.github/scripts/discord-helpers.sh +0 -34
  75. package/.github/workflows/coderabbit-review.yaml +0 -22
  76. package/.github/workflows/discord.yaml +0 -90
  77. package/.github/workflows/docs.yaml +0 -64
  78. package/.github/workflows/publish.yaml +0 -133
  79. package/.github/workflows/quality.yaml +0 -116
  80. package/.husky/pre-commit +0 -20
  81. package/.markdownlint-cli2.yaml +0 -41
  82. package/.nvmrc +0 -1
  83. package/.prettierignore +0 -12
  84. package/.vscode/settings.json +0 -96
  85. package/CHANGELOG.md +0 -1785
  86. package/CNAME +0 -1
  87. package/CONTRIBUTING.md +0 -176
  88. package/CONTRIBUTORS.md +0 -32
  89. package/SECURITY.md +0 -85
  90. package/TRADEMARK.md +0 -55
  91. package/Wordmark.png +0 -0
  92. package/banner-bmad-method.png +0 -0
  93. package/docs/404.md +0 -9
  94. package/docs/_STYLE_GUIDE.md +0 -370
  95. package/docs/explanation/advanced-elicitation.md +0 -49
  96. package/docs/explanation/adversarial-review.md +0 -59
  97. package/docs/explanation/brainstorming.md +0 -33
  98. package/docs/explanation/established-projects-faq.md +0 -50
  99. package/docs/explanation/party-mode.md +0 -59
  100. package/docs/explanation/preventing-agent-conflicts.md +0 -112
  101. package/docs/explanation/project-context.md +0 -157
  102. package/docs/explanation/quick-dev-new-preview.md +0 -73
  103. package/docs/explanation/quick-flow.md +0 -77
  104. package/docs/explanation/why-solutioning-matters.md +0 -77
  105. package/docs/how-to/customize-bmad.md +0 -172
  106. package/docs/how-to/established-projects.md +0 -117
  107. package/docs/how-to/get-answers-about-bmad.md +0 -138
  108. package/docs/how-to/install-bmad.md +0 -116
  109. package/docs/how-to/non-interactive-installation.md +0 -171
  110. package/docs/how-to/project-context.md +0 -136
  111. package/docs/how-to/quick-fixes.md +0 -123
  112. package/docs/how-to/shard-large-documents.md +0 -78
  113. package/docs/how-to/upgrade-to-v6.md +0 -100
  114. package/docs/index.md +0 -60
  115. package/docs/reference/agents.md +0 -28
  116. package/docs/reference/commands.md +0 -145
  117. package/docs/reference/modules.md +0 -76
  118. package/docs/reference/testing.md +0 -106
  119. package/docs/reference/workflow-map.md +0 -89
  120. package/docs/roadmap.mdx +0 -136
  121. package/docs/tutorials/getting-started.md +0 -275
  122. package/docs/zh-cn/404.md +0 -9
  123. package/docs/zh-cn/_STYLE_GUIDE.md +0 -370
  124. package/docs/zh-cn/explanation/advanced-elicitation.md +0 -62
  125. package/docs/zh-cn/explanation/adversarial-review.md +0 -71
  126. package/docs/zh-cn/explanation/brainstorming.md +0 -43
  127. package/docs/zh-cn/explanation/established-projects-faq.md +0 -60
  128. package/docs/zh-cn/explanation/party-mode.md +0 -79
  129. package/docs/zh-cn/explanation/preventing-agent-conflicts.md +0 -137
  130. package/docs/zh-cn/explanation/project-context.md +0 -176
  131. package/docs/zh-cn/explanation/quick-flow.md +0 -93
  132. package/docs/zh-cn/explanation/why-solutioning-matters.md +0 -90
  133. package/docs/zh-cn/how-to/customize-bmad.md +0 -182
  134. package/docs/zh-cn/how-to/established-projects.md +0 -134
  135. package/docs/zh-cn/how-to/get-answers-about-bmad.md +0 -144
  136. package/docs/zh-cn/how-to/install-bmad.md +0 -105
  137. package/docs/zh-cn/how-to/non-interactive-installation.md +0 -181
  138. package/docs/zh-cn/how-to/project-context.md +0 -152
  139. package/docs/zh-cn/how-to/quick-fixes.md +0 -140
  140. package/docs/zh-cn/how-to/shard-large-documents.md +0 -86
  141. package/docs/zh-cn/how-to/upgrade-to-v6.md +0 -120
  142. package/docs/zh-cn/index.md +0 -69
  143. package/docs/zh-cn/reference/agents.md +0 -41
  144. package/docs/zh-cn/reference/commands.md +0 -166
  145. package/docs/zh-cn/reference/modules.md +0 -94
  146. package/docs/zh-cn/reference/testing.md +0 -122
  147. package/docs/zh-cn/reference/workflow-map.md +0 -104
  148. package/docs/zh-cn/roadmap.mdx +0 -152
  149. package/docs/zh-cn/tutorials/getting-started.md +0 -300
  150. package/eslint.config.mjs +0 -141
  151. package/prettier.config.mjs +0 -32
  152. package/src/core/workflows/brainstorming/bmad-skill-manifest.yaml +0 -3
  153. package/src/core/workflows/party-mode/bmad-skill-manifest.yaml +0 -3
  154. package/test/README.md +0 -295
  155. package/test/adversarial-review-tests/README.md +0 -56
  156. package/test/adversarial-review-tests/sample-content.md +0 -46
  157. package/test/adversarial-review-tests/test-cases.yaml +0 -103
  158. package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +0 -27
  159. package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +0 -30
  160. package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +0 -22
  161. package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +0 -20
  162. package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +0 -25
  163. package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +0 -24
  164. package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +0 -25
  165. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +0 -25
  166. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +0 -25
  167. package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +0 -31
  168. package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +0 -25
  169. package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +0 -25
  170. package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +0 -25
  171. package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +0 -25
  172. package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +0 -26
  173. package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +0 -24
  174. package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +0 -27
  175. package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +0 -23
  176. package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +0 -24
  177. package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +0 -27
  178. package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +0 -27
  179. package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +0 -24
  180. package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +0 -29
  181. package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +0 -31
  182. package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +0 -28
  183. package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +0 -28
  184. package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +0 -5
  185. package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +0 -28
  186. package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +0 -11
  187. package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +0 -19
  188. package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +0 -18
  189. package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +0 -24
  190. package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +0 -22
  191. package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +0 -27
  192. package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +0 -31
  193. package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +0 -22
  194. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +0 -38
  195. package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +0 -23
  196. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +0 -31
  197. package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +0 -34
  198. package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +0 -24
  199. package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +0 -24
  200. package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +0 -24
  201. package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +0 -24
  202. package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +0 -23
  203. package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +0 -24
  204. package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +0 -24
  205. package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +0 -24
  206. package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +0 -22
  207. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +0 -28
  208. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +0 -30
  209. package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +0 -24
  210. package/test/fixtures/file-refs-csv/invalid/all-empty-workflow.csv +0 -3
  211. package/test/fixtures/file-refs-csv/invalid/empty-data.csv +0 -1
  212. package/test/fixtures/file-refs-csv/invalid/no-workflow-column.csv +0 -3
  213. package/test/fixtures/file-refs-csv/invalid/unresolvable-vars.csv +0 -3
  214. package/test/fixtures/file-refs-csv/valid/bmm-style.csv +0 -3
  215. package/test/fixtures/file-refs-csv/valid/core-style.csv +0 -3
  216. package/test/fixtures/file-refs-csv/valid/minimal.csv +0 -2
  217. package/test/test-agent-schema.js +0 -387
  218. package/test/test-cli-integration.sh +0 -159
  219. package/test/test-file-refs-csv.js +0 -133
  220. package/test/test-install-to-bmad.js +0 -154
  221. package/test/test-installation-components.js +0 -1796
  222. package/test/test-rehype-plugins.mjs +0 -1050
  223. package/test/test-workflow-path-regex.js +0 -88
  224. package/test/unit-test-schema.js +0 -133
  225. package/tools/build-docs.mjs +0 -464
  226. package/tools/docs/_prompt-external-modules-page.md +0 -59
  227. package/tools/docs/fix-refs.md +0 -91
  228. package/tools/docs/native-skills-migration-checklist.md +0 -281
  229. package/tools/fix-doc-links.js +0 -285
  230. package/tools/validate-agent-schema.js +0 -110
  231. package/tools/validate-doc-links.js +0 -407
  232. package/tools/validate-file-refs.js +0 -556
  233. package/website/README.md +0 -75
  234. package/website/astro.config.mjs +0 -157
  235. package/website/public/diagrams/quick-dev-diagram.png +0 -0
  236. package/website/public/favicon.ico +0 -0
  237. package/website/public/img/bmad-dark.png +0 -0
  238. package/website/public/img/bmad-light.png +0 -0
  239. package/website/public/workflow-map-diagram.html +0 -361
  240. package/website/src/components/Banner.astro +0 -62
  241. package/website/src/components/Header.astro +0 -96
  242. package/website/src/components/MobileMenuFooter.astro +0 -33
  243. package/website/src/content/config.ts +0 -7
  244. package/website/src/content/i18n/zh-CN.json +0 -28
  245. package/website/src/lib/site-url.mjs +0 -25
  246. package/website/src/pages/404.astro +0 -11
  247. package/website/src/pages/robots.txt.ts +0 -48
  248. package/website/src/rehype-base-paths.js +0 -112
  249. package/website/src/rehype-markdown-links.js +0 -119
  250. package/website/src/styles/custom.css +0 -805
  251. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/brain-methods.csv +0 -0
  252. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-01-session-setup.md +0 -0
  253. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-01b-continue.md +0 -0
  254. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02a-user-selected.md +0 -0
  255. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02b-ai-recommended.md +0 -0
  256. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02c-random-selection.md +0 -0
  257. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02d-progressive-flow.md +0 -0
  258. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-03-technique-execution.md +0 -0
  259. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-04-idea-organization.md +0 -0
  260. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/template.md +0 -0
  261. /package/src/core/workflows/{party-mode → bmad-party-mode}/steps/step-01-agent-loading.md +0 -0
  262. /package/src/core/workflows/{party-mode → bmad-party-mode}/steps/step-02-discussion-orchestration.md +0 -0
@@ -1,32 +0,0 @@
1
- ---
2
- name: Issue
3
- about: Report a problem or something that's not working
4
- title: ''
5
- labels: ''
6
- assignees: ''
7
- ---
8
-
9
- **Describe the bug**
10
- A clear and concise description of what the bug is.
11
-
12
- **Steps to reproduce**
13
- 1. What were you doing when the bug occurred?
14
- 2. What steps can recreate the issue?
15
-
16
- **Expected behavior**
17
- A clear and concise description of what you expected to happen.
18
-
19
- **Environment (if relevant)**
20
- - Model(s) used:
21
- - Agentic IDE used:
22
- - BMad version:
23
- - Project language:
24
-
25
- **Screenshots or links**
26
- If applicable, add screenshots or links to help explain the problem.
27
-
28
- **PR**
29
- If you'd like to contribute a fix, please indicate you're working on it or link to your PR. See [CONTRIBUTING.md](../../CONTRIBUTING.md) — contributions are always welcome!
30
-
31
- **Additional context**
32
- Add any other context about the problem here. The more information you provide, the easier it is to help.
@@ -1,13 +0,0 @@
1
- ## What
2
- <!-- 1-2 sentences describing WHAT changed -->
3
-
4
- ## Why
5
- <!-- 1-2 sentences explaining WHY this change is needed -->
6
- <!-- Fixes `#issue_number` (if applicable) -->
7
-
8
- ## How
9
- <!-- 2-3 bullets listing HOW you implemented it -->
10
- -
11
-
12
- ## Testing
13
- <!-- 1-2 sentences on how you tested this -->
@@ -1,34 +0,0 @@
1
- #!/bin/bash
2
- # Discord notification helper functions
3
-
4
- # Escape markdown special chars and @mentions for safe Discord display
5
- # Skips content inside <URL> wrappers to preserve URLs intact
6
- esc() {
7
- awk '{
8
- result = ""; in_url = 0; n = length($0)
9
- for (i = 1; i <= n; i++) {
10
- c = substr($0, i, 1)
11
- if (c == "<" && substr($0, i, 8) ~ /^<https?:/) in_url = 1
12
- if (in_url) { result = result c; if (c == ">") in_url = 0 }
13
- else if (c == "@") result = result "@ "
14
- else if (index("[]\\*_()~`", c) > 0) result = result "\\" c
15
- else result = result c
16
- }
17
- print result
18
- }'
19
- }
20
-
21
- # Truncate to $1 chars (or 80 if wall-of-text with <3 spaces)
22
- trunc() {
23
- local max=$1
24
- local txt=$(tr '\n\r' ' ' | cut -c1-"$max")
25
- local spaces=$(printf '%s' "$txt" | tr -cd ' ' | wc -c)
26
- [ "$spaces" -lt 3 ] && [ ${#txt} -gt 80 ] && txt=$(printf '%s' "$txt" | cut -c1-80)
27
- printf '%s' "$txt"
28
- }
29
-
30
- # Remove incomplete URL at end of truncated text (incomplete URLs are useless)
31
- strip_trailing_url() { sed -E 's~<?https?://[^[:space:]]*$~~'; }
32
-
33
- # Wrap URLs in <> to suppress Discord embeds (keeps links clickable)
34
- wrap_urls() { sed -E 's~https?://[^[:space:]<>]+~<&>~g'; }
@@ -1,22 +0,0 @@
1
- name: Trigger CodeRabbit on Ready for Review
2
-
3
- on:
4
- pull_request_target:
5
- types: [ready_for_review]
6
-
7
- jobs:
8
- trigger-review:
9
- runs-on: ubuntu-latest
10
- permissions:
11
- pull-requests: write
12
- steps:
13
- - name: Request CodeRabbit review
14
- uses: actions/github-script@v7
15
- with:
16
- script: |
17
- await github.rest.issues.createComment({
18
- owner: context.repo.owner,
19
- repo: context.repo.repo,
20
- issue_number: context.payload.pull_request.number,
21
- body: '@coderabbitai review'
22
- });
@@ -1,90 +0,0 @@
1
- name: Discord Notification
2
-
3
- on:
4
- pull_request:
5
- types: [opened, closed]
6
- issues:
7
- types: [opened]
8
-
9
- env:
10
- MAX_TITLE: 100
11
- MAX_BODY: 250
12
-
13
- jobs:
14
- pull_request:
15
- if: github.event_name == 'pull_request'
16
- runs-on: ubuntu-latest
17
- steps:
18
- - uses: actions/checkout@v4
19
- with:
20
- ref: ${{ github.event.repository.default_branch }}
21
- sparse-checkout: .github/scripts
22
- sparse-checkout-cone-mode: false
23
- - name: Notify Discord
24
- env:
25
- WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
26
- ACTION: ${{ github.event.action }}
27
- MERGED: ${{ github.event.pull_request.merged }}
28
- PR_NUM: ${{ github.event.pull_request.number }}
29
- PR_URL: ${{ github.event.pull_request.html_url }}
30
- PR_TITLE: ${{ github.event.pull_request.title }}
31
- PR_USER: ${{ github.event.pull_request.user.login }}
32
- PR_BODY: ${{ github.event.pull_request.body }}
33
- run: |
34
- set -o pipefail
35
- source .github/scripts/discord-helpers.sh
36
- [ -z "$WEBHOOK" ] && exit 0
37
-
38
- if [ "$ACTION" = "opened" ]; then ICON="🔀"; LABEL="New PR"
39
- elif [ "$ACTION" = "closed" ] && [ "$MERGED" = "true" ]; then ICON="🎉"; LABEL="Merged"
40
- elif [ "$ACTION" = "closed" ]; then ICON="❌"; LABEL="Closed"; fi
41
-
42
- TITLE=$(printf '%s' "$PR_TITLE" | trunc $MAX_TITLE | esc)
43
- [ ${#PR_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..."
44
- BODY=$(printf '%s' "$PR_BODY" | trunc $MAX_BODY)
45
- if [ -n "$PR_BODY" ] && [ ${#PR_BODY} -gt $MAX_BODY ]; then
46
- BODY=$(printf '%s' "$BODY" | strip_trailing_url)
47
- fi
48
- BODY=$(printf '%s' "$BODY" | wrap_urls | esc)
49
- [ -n "$PR_BODY" ] && [ ${#PR_BODY} -gt $MAX_BODY ] && BODY="${BODY}..."
50
- [ -n "$BODY" ] && BODY=" · $BODY"
51
- USER=$(printf '%s' "$PR_USER" | esc)
52
-
53
- MSG="$ICON **[$LABEL #$PR_NUM: $TITLE](<$PR_URL>)**"$'\n'"by @$USER$BODY"
54
- jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
55
-
56
- issues:
57
- if: github.event_name == 'issues'
58
- runs-on: ubuntu-latest
59
- steps:
60
- - uses: actions/checkout@v4
61
- with:
62
- ref: ${{ github.event.repository.default_branch }}
63
- sparse-checkout: .github/scripts
64
- sparse-checkout-cone-mode: false
65
- - name: Notify Discord
66
- env:
67
- WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
68
- ISSUE_NUM: ${{ github.event.issue.number }}
69
- ISSUE_URL: ${{ github.event.issue.html_url }}
70
- ISSUE_TITLE: ${{ github.event.issue.title }}
71
- ISSUE_USER: ${{ github.event.issue.user.login }}
72
- ISSUE_BODY: ${{ github.event.issue.body }}
73
- run: |
74
- set -o pipefail
75
- source .github/scripts/discord-helpers.sh
76
- [ -z "$WEBHOOK" ] && exit 0
77
-
78
- TITLE=$(printf '%s' "$ISSUE_TITLE" | trunc $MAX_TITLE | esc)
79
- [ ${#ISSUE_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..."
80
- BODY=$(printf '%s' "$ISSUE_BODY" | trunc $MAX_BODY)
81
- if [ -n "$ISSUE_BODY" ] && [ ${#ISSUE_BODY} -gt $MAX_BODY ]; then
82
- BODY=$(printf '%s' "$BODY" | strip_trailing_url)
83
- fi
84
- BODY=$(printf '%s' "$BODY" | wrap_urls | esc)
85
- [ -n "$ISSUE_BODY" ] && [ ${#ISSUE_BODY} -gt $MAX_BODY ] && BODY="${BODY}..."
86
- [ -n "$BODY" ] && BODY=" · $BODY"
87
- USER=$(printf '%s' "$ISSUE_USER" | esc)
88
-
89
- MSG="🐛 **[Issue #$ISSUE_NUM: $TITLE](<$ISSUE_URL>)**"$'\n'"by @$USER$BODY"
90
- jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
@@ -1,64 +0,0 @@
1
- name: Deploy Documentation
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- paths:
8
- - "docs/**"
9
- - "website/**"
10
- - "tools/build-docs.mjs"
11
- - ".github/workflows/docs.yaml"
12
- workflow_dispatch:
13
-
14
- permissions:
15
- contents: read
16
- pages: write
17
- id-token: write
18
-
19
- concurrency:
20
- group: "pages"
21
- # No big win in setting this to true — risk of cancelling a deploy mid-flight.
22
- cancel-in-progress: false
23
-
24
- jobs:
25
- build:
26
- runs-on: ubuntu-latest
27
- steps:
28
- - name: Checkout repository
29
- uses: actions/checkout@v4
30
- with:
31
- # Full history needed for Starlight's lastUpdated timestamps (git log)
32
- fetch-depth: 0
33
-
34
- - name: Setup Node.js
35
- uses: actions/setup-node@v4
36
- with:
37
- node-version-file: ".nvmrc"
38
- cache: "npm"
39
-
40
- - name: Install dependencies
41
- run: npm ci
42
-
43
- - name: Build documentation
44
- env:
45
- # Override site URL from GitHub repo variable if set
46
- # Otherwise, astro.config.mjs will compute from GITHUB_REPOSITORY
47
- SITE_URL: ${{ vars.SITE_URL }}
48
- run: npm run docs:build
49
-
50
- - name: Upload artifact
51
- uses: actions/upload-pages-artifact@v3
52
- with:
53
- path: build/site
54
-
55
- deploy:
56
- environment:
57
- name: github-pages
58
- url: ${{ steps.deployment.outputs.page_url }}
59
- runs-on: ubuntu-latest
60
- needs: build
61
- steps:
62
- - name: Deploy to GitHub Pages
63
- id: deployment
64
- uses: actions/deploy-pages@v4
@@ -1,133 +0,0 @@
1
- name: Publish
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- paths:
7
- - "src/**"
8
- - "tools/cli/**"
9
- - "package.json"
10
- workflow_dispatch:
11
- inputs:
12
- channel:
13
- description: "Publish channel"
14
- required: true
15
- default: "latest"
16
- type: choice
17
- options:
18
- - latest
19
- - next
20
- bump:
21
- description: "Version bump type (latest channel only)"
22
- required: false
23
- default: "patch"
24
- type: choice
25
- options:
26
- - patch
27
- - minor
28
- - major
29
-
30
- concurrency:
31
- group: publish
32
- cancel-in-progress: ${{ github.event_name == 'push' }}
33
-
34
- permissions:
35
- id-token: write
36
- contents: write
37
-
38
- jobs:
39
- publish:
40
- if: github.event_name != 'workflow_dispatch' || github.ref == 'refs/heads/main'
41
- runs-on: ubuntu-latest
42
- steps:
43
- - name: Checkout
44
- uses: actions/checkout@v4
45
- with:
46
- fetch-depth: 0
47
- token: ${{ secrets.GITHUB_TOKEN }}
48
-
49
- - name: Setup Node
50
- uses: actions/setup-node@v4
51
- with:
52
- node-version-file: ".nvmrc"
53
- cache: "npm"
54
-
55
- - name: Ensure trusted publishing toolchain
56
- run: |
57
- # npm trusted publishing requires Node >= 22.14.0 and npm >= 11.5.1.
58
- npm install --global npm@11.6.2
59
-
60
- - name: Configure git user
61
- if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
62
- run: |
63
- git config user.name "github-actions[bot]"
64
- git config user.email "github-actions[bot]@users.noreply.github.com"
65
-
66
- - name: Install dependencies
67
- run: npm ci
68
-
69
- - name: Run tests
70
- run: npm test
71
-
72
- - name: Derive next prerelease version
73
- if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.channel == 'next')
74
- run: |
75
- NEXT_VER=$(npm view bmad-method@next version 2>/dev/null || echo "")
76
- LATEST_VER=$(npm view bmad-method@latest version 2>/dev/null || echo "")
77
-
78
- # Determine the best base version for the next prerelease.
79
- BASE=$(node -e "
80
- const semver = require('semver');
81
- const next = process.argv[1] || null;
82
- const latest = process.argv[2] || null;
83
- if (!next && !latest) process.exit(0);
84
- if (!next) { console.log(latest); process.exit(0); }
85
- if (!latest) { console.log(next); process.exit(0); }
86
- const nextBase = next.replace(/-next\.\d+$/, '');
87
- console.log(semver.gt(latest, nextBase) ? latest : next);
88
- " "$NEXT_VER" "$LATEST_VER")
89
-
90
- if [ -n "$BASE" ]; then
91
- npm version "$BASE" --no-git-tag-version --allow-same-version
92
- fi
93
- npm version prerelease --preid=next --no-git-tag-version
94
-
95
- - name: Bump stable version
96
- if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
97
- run: 'npm version ${{ inputs.bump }} -m "chore(release): v%s [skip ci]"'
98
-
99
- - name: Publish prerelease to npm
100
- if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.channel == 'next')
101
- run: npm publish --tag next --provenance
102
-
103
- - name: Publish stable release to npm
104
- if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
105
- run: npm publish --tag latest --provenance
106
-
107
- - name: Push version commit and tag
108
- if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
109
- run: git push origin main --follow-tags
110
-
111
- - name: Create GitHub Release
112
- if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
113
- run: |
114
- TAG="v$(node -p 'require("./package.json").version')"
115
- gh release create "$TAG" --generate-notes
116
- env:
117
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
118
-
119
- - name: Notify Discord
120
- if: github.event_name == 'workflow_dispatch' && inputs.channel == 'latest'
121
- continue-on-error: true
122
- run: |
123
- set -o pipefail
124
- source .github/scripts/discord-helpers.sh
125
- [ -z "$WEBHOOK" ] && exit 0
126
-
127
- VERSION=$(node -p 'require("./package.json").version')
128
- RELEASE_URL="${{ github.server_url }}/${{ github.repository }}/releases/tag/v${VERSION}"
129
- MSG=$(printf '📦 **[bmad-method v%s released](<%s>)**' "$VERSION" "$RELEASE_URL" | esc)
130
-
131
- jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
132
- env:
133
- WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
@@ -1,116 +0,0 @@
1
- name: Quality & Validation
2
-
3
- # Runs comprehensive quality checks on all PRs:
4
- # - Prettier (formatting)
5
- # - ESLint (linting)
6
- # - markdownlint (markdown quality)
7
- # - Schema validation (YAML structure)
8
- # - Agent schema tests (fixture-based validation)
9
- # - Installation component tests (compilation)
10
- # - Bundle validation (web bundle integrity)
11
-
12
- "on":
13
- pull_request:
14
- branches: ["**"]
15
- workflow_dispatch:
16
-
17
- jobs:
18
- prettier:
19
- runs-on: ubuntu-latest
20
- steps:
21
- - name: Checkout
22
- uses: actions/checkout@v4
23
-
24
- - name: Setup Node
25
- uses: actions/setup-node@v4
26
- with:
27
- node-version-file: ".nvmrc"
28
- cache: "npm"
29
-
30
- - name: Install dependencies
31
- run: npm ci
32
-
33
- - name: Prettier format check
34
- run: npm run format:check
35
-
36
- eslint:
37
- runs-on: ubuntu-latest
38
- steps:
39
- - name: Checkout
40
- uses: actions/checkout@v4
41
-
42
- - name: Setup Node
43
- uses: actions/setup-node@v4
44
- with:
45
- node-version-file: ".nvmrc"
46
- cache: "npm"
47
-
48
- - name: Install dependencies
49
- run: npm ci
50
-
51
- - name: ESLint
52
- run: npm run lint
53
-
54
- markdownlint:
55
- runs-on: ubuntu-latest
56
- steps:
57
- - name: Checkout
58
- uses: actions/checkout@v4
59
-
60
- - name: Setup Node
61
- uses: actions/setup-node@v4
62
- with:
63
- node-version-file: ".nvmrc"
64
- cache: "npm"
65
-
66
- - name: Install dependencies
67
- run: npm ci
68
-
69
- - name: markdownlint
70
- run: npm run lint:md
71
-
72
- docs:
73
- runs-on: ubuntu-latest
74
- steps:
75
- - name: Checkout
76
- uses: actions/checkout@v4
77
-
78
- - name: Setup Node
79
- uses: actions/setup-node@v4
80
- with:
81
- node-version-file: ".nvmrc"
82
- cache: "npm"
83
-
84
- - name: Install dependencies
85
- run: npm ci
86
-
87
- - name: Build documentation
88
- # Note: build-docs.mjs runs link validation internally before building
89
- run: npm run docs:build
90
-
91
- validate:
92
- runs-on: ubuntu-latest
93
- steps:
94
- - name: Checkout
95
- uses: actions/checkout@v4
96
-
97
- - name: Setup Node
98
- uses: actions/setup-node@v4
99
- with:
100
- node-version-file: ".nvmrc"
101
- cache: "npm"
102
-
103
- - name: Install dependencies
104
- run: npm ci
105
-
106
- - name: Validate YAML schemas
107
- run: npm run validate:schemas
108
-
109
- - name: Run agent schema validation tests
110
- run: npm run test:schemas
111
-
112
- - name: Test agent compilation components
113
- run: npm run test:install
114
-
115
- - name: Validate file references
116
- run: npm run validate:refs
package/.husky/pre-commit DELETED
@@ -1,20 +0,0 @@
1
- #!/usr/bin/env sh
2
-
3
- # Auto-fix changed files and stage them
4
- npx --no-install lint-staged
5
-
6
- # Validate everything
7
- npm test
8
-
9
- # Validate docs links only when docs change
10
- if command -v rg >/dev/null 2>&1; then
11
- if git diff --cached --name-only | rg -q '^docs/'; then
12
- npm run docs:validate-links
13
- npm run docs:build
14
- fi
15
- else
16
- if git diff --cached --name-only | grep -Eq '^docs/'; then
17
- npm run docs:validate-links
18
- npm run docs:build
19
- fi
20
- fi
@@ -1,41 +0,0 @@
1
- # markdownlint-cli2 configuration
2
- # https://github.com/DavidAnson/markdownlint-cli2
3
-
4
- ignores:
5
- - "**/node_modules/**"
6
- - test/fixtures/**
7
- - CODE_OF_CONDUCT.md
8
- - _bmad/**
9
- - _bmad*/**
10
- - .agent/**
11
- - .claude/**
12
- - .roo/**
13
- - .codex/**
14
- - .kiro/**
15
- - sample-project/**
16
- - test-project-install/**
17
- - z*/**
18
-
19
- # Rule configuration
20
- config:
21
- # Disable all rules by default
22
- default: false
23
-
24
- # Heading levels should increment by one (h1 -> h2 -> h3, not h1 -> h3)
25
- MD001: true
26
-
27
- # Duplicate sibling headings (same heading text at same level under same parent)
28
- MD024:
29
- siblings_only: true
30
-
31
- # Trailing commas in headings (likely typos)
32
- MD026:
33
- punctuation: ","
34
-
35
- # Bare URLs - may not render as links in all parsers
36
- # Should use <url> or [text](url) format
37
- MD034: true
38
-
39
- # Spaces inside emphasis markers - breaks rendering
40
- # e.g., "* text *" won't render as emphasis
41
- MD037: true
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- 22
package/.prettierignore DELETED
@@ -1,12 +0,0 @@
1
- # Test fixtures with intentionally broken/malformed files
2
- test/fixtures/**
3
-
4
- # Contributor Covenant (external standard)
5
- CODE_OF_CONDUCT.md
6
-
7
- # BMAD runtime folders (user-specific, not in repo)
8
- _bmad/
9
- _bmad*/
10
-
11
- # IDE integration folders (user-specific, not in repo)
12
- .junie/
@@ -1,96 +0,0 @@
1
- {
2
- "chat.agent.enabled": true,
3
- "chat.agent.maxRequests": 15,
4
- "github.copilot.chat.agent.runTasks": true,
5
- "chat.mcp.discovery.enabled": {
6
- "claude-desktop": true,
7
- "windsurf": true,
8
- "cursor-global": true,
9
- "cursor-workspace": true
10
- },
11
- "github.copilot.chat.agent.autoFix": true,
12
- "chat.tools.autoApprove": false,
13
- "cSpell.words": [
14
- "Agentic",
15
- "atlasing",
16
- "Biostatistician",
17
- "bmad",
18
- "Cordova",
19
- "customresourcedefinitions",
20
- "dashboarded",
21
- "Decisioning",
22
- "eksctl",
23
- "elicitations",
24
- "Excalidraw",
25
- "filecomplete",
26
- "fintech",
27
- "fluxcd",
28
- "frontmatter",
29
- "gamedev",
30
- "gitops",
31
- "implementability",
32
- "Improv",
33
- "inclusivity",
34
- "ingressgateway",
35
- "istioctl",
36
- "metroidvania",
37
- "NACLs",
38
- "nodegroup",
39
- "platformconfigs",
40
- "Playfocus",
41
- "playtesting",
42
- "pointerdown",
43
- "pointerup",
44
- "Polyrepo",
45
- "replayability",
46
- "roguelike",
47
- "roomodes",
48
- "Runbook",
49
- "runbooks",
50
- "Shardable",
51
- "Softlock",
52
- "solutioning",
53
- "speedrunner",
54
- "substep",
55
- "tekton",
56
- "tilemap",
57
- "tileset",
58
- "tmpl",
59
- "Trae",
60
- "Unsharded",
61
- "VNET"
62
- ],
63
- "json.schemas": [
64
- {
65
- "fileMatch": ["package.json"],
66
- "url": "https://json.schemastore.org/package.json"
67
- },
68
- {
69
- "fileMatch": [".vscode/settings.json"],
70
- "url": "vscode://schemas/settings/folder"
71
- }
72
- ],
73
- "editor.formatOnSave": true,
74
- "editor.defaultFormatter": "esbenp.prettier-vscode",
75
- "[javascript]": {
76
- "editor.defaultFormatter": "vscode.typescript-language-features"
77
- },
78
- "[json]": {
79
- "editor.defaultFormatter": "vscode.json-language-features"
80
- },
81
- "[yaml]": {
82
- "editor.defaultFormatter": "esbenp.prettier-vscode"
83
- },
84
- "[markdown]": {
85
- "editor.defaultFormatter": "yzhang.markdown-all-in-one"
86
- },
87
- "yaml.format.enable": false,
88
- "editor.codeActionsOnSave": {
89
- "source.fixAll.eslint": "explicit"
90
- },
91
- "editor.rulers": [140],
92
- "[xml]": {
93
- "editor.defaultFormatter": "redhat.vscode-xml"
94
- },
95
- "xml.format.maxLineWidth": 140
96
- }