bmad-method 6.0.5-next.9 → 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 (261) 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/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md +0 -4
  46. package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +1 -1
  47. package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +1 -1
  48. package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +1 -1
  49. package/src/core/module-help.csv +2 -2
  50. package/src/core/workflows/bmad-brainstorming/SKILL.md +6 -0
  51. package/src/core/workflows/bmad-brainstorming/bmad-skill-manifest.yaml +1 -0
  52. package/src/core/workflows/{brainstorming → bmad-brainstorming}/workflow.md +2 -5
  53. package/src/core/workflows/bmad-party-mode/SKILL.md +6 -0
  54. package/src/core/workflows/bmad-party-mode/bmad-skill-manifest.yaml +1 -0
  55. package/src/core/workflows/{party-mode → bmad-party-mode}/steps/step-03-graceful-exit.md +0 -1
  56. package/src/core/workflows/{party-mode → bmad-party-mode}/workflow.md +0 -4
  57. package/tools/cli/external-official-modules.yaml +18 -18
  58. package/tools/cli/installers/lib/core/installer.js +25 -8
  59. package/tools/cli/installers/lib/ide/_base-ide.js +0 -1
  60. package/tools/cli/installers/lib/ide/_config-driven.js +9 -4
  61. package/tools/cli/installers/lib/ide/manager.js +3 -3
  62. package/tools/cli/lib/agent/compiler.js +1 -1
  63. package/.augment/code_review_guidelines.yaml +0 -231
  64. package/.coderabbit.yaml +0 -85
  65. package/.github/CODE_OF_CONDUCT.md +0 -128
  66. package/.github/FUNDING.yaml +0 -15
  67. package/.github/ISSUE_TEMPLATE/bug-report.yaml +0 -124
  68. package/.github/ISSUE_TEMPLATE/config.yaml +0 -8
  69. package/.github/ISSUE_TEMPLATE/documentation.yaml +0 -55
  70. package/.github/ISSUE_TEMPLATE/feature-request.md +0 -22
  71. package/.github/ISSUE_TEMPLATE/issue.md +0 -32
  72. package/.github/PULL_REQUEST_TEMPLATE.md +0 -13
  73. package/.github/scripts/discord-helpers.sh +0 -34
  74. package/.github/workflows/coderabbit-review.yaml +0 -22
  75. package/.github/workflows/discord.yaml +0 -90
  76. package/.github/workflows/docs.yaml +0 -64
  77. package/.github/workflows/publish.yaml +0 -133
  78. package/.github/workflows/quality.yaml +0 -116
  79. package/.husky/pre-commit +0 -20
  80. package/.markdownlint-cli2.yaml +0 -41
  81. package/.nvmrc +0 -1
  82. package/.prettierignore +0 -12
  83. package/.vscode/settings.json +0 -96
  84. package/CHANGELOG.md +0 -1785
  85. package/CNAME +0 -1
  86. package/CONTRIBUTING.md +0 -176
  87. package/CONTRIBUTORS.md +0 -32
  88. package/SECURITY.md +0 -85
  89. package/TRADEMARK.md +0 -55
  90. package/Wordmark.png +0 -0
  91. package/banner-bmad-method.png +0 -0
  92. package/docs/404.md +0 -9
  93. package/docs/_STYLE_GUIDE.md +0 -370
  94. package/docs/explanation/advanced-elicitation.md +0 -49
  95. package/docs/explanation/adversarial-review.md +0 -59
  96. package/docs/explanation/brainstorming.md +0 -33
  97. package/docs/explanation/established-projects-faq.md +0 -50
  98. package/docs/explanation/party-mode.md +0 -59
  99. package/docs/explanation/preventing-agent-conflicts.md +0 -112
  100. package/docs/explanation/project-context.md +0 -157
  101. package/docs/explanation/quick-dev-new-preview.md +0 -73
  102. package/docs/explanation/quick-flow.md +0 -77
  103. package/docs/explanation/why-solutioning-matters.md +0 -77
  104. package/docs/how-to/customize-bmad.md +0 -172
  105. package/docs/how-to/established-projects.md +0 -117
  106. package/docs/how-to/get-answers-about-bmad.md +0 -138
  107. package/docs/how-to/install-bmad.md +0 -116
  108. package/docs/how-to/non-interactive-installation.md +0 -171
  109. package/docs/how-to/project-context.md +0 -136
  110. package/docs/how-to/quick-fixes.md +0 -123
  111. package/docs/how-to/shard-large-documents.md +0 -78
  112. package/docs/how-to/upgrade-to-v6.md +0 -100
  113. package/docs/index.md +0 -60
  114. package/docs/reference/agents.md +0 -28
  115. package/docs/reference/commands.md +0 -145
  116. package/docs/reference/modules.md +0 -76
  117. package/docs/reference/testing.md +0 -106
  118. package/docs/reference/workflow-map.md +0 -89
  119. package/docs/roadmap.mdx +0 -136
  120. package/docs/tutorials/getting-started.md +0 -275
  121. package/docs/zh-cn/404.md +0 -9
  122. package/docs/zh-cn/_STYLE_GUIDE.md +0 -370
  123. package/docs/zh-cn/explanation/advanced-elicitation.md +0 -62
  124. package/docs/zh-cn/explanation/adversarial-review.md +0 -71
  125. package/docs/zh-cn/explanation/brainstorming.md +0 -43
  126. package/docs/zh-cn/explanation/established-projects-faq.md +0 -60
  127. package/docs/zh-cn/explanation/party-mode.md +0 -79
  128. package/docs/zh-cn/explanation/preventing-agent-conflicts.md +0 -137
  129. package/docs/zh-cn/explanation/project-context.md +0 -176
  130. package/docs/zh-cn/explanation/quick-flow.md +0 -93
  131. package/docs/zh-cn/explanation/why-solutioning-matters.md +0 -90
  132. package/docs/zh-cn/how-to/customize-bmad.md +0 -182
  133. package/docs/zh-cn/how-to/established-projects.md +0 -134
  134. package/docs/zh-cn/how-to/get-answers-about-bmad.md +0 -144
  135. package/docs/zh-cn/how-to/install-bmad.md +0 -105
  136. package/docs/zh-cn/how-to/non-interactive-installation.md +0 -181
  137. package/docs/zh-cn/how-to/project-context.md +0 -152
  138. package/docs/zh-cn/how-to/quick-fixes.md +0 -140
  139. package/docs/zh-cn/how-to/shard-large-documents.md +0 -86
  140. package/docs/zh-cn/how-to/upgrade-to-v6.md +0 -120
  141. package/docs/zh-cn/index.md +0 -69
  142. package/docs/zh-cn/reference/agents.md +0 -41
  143. package/docs/zh-cn/reference/commands.md +0 -166
  144. package/docs/zh-cn/reference/modules.md +0 -94
  145. package/docs/zh-cn/reference/testing.md +0 -122
  146. package/docs/zh-cn/reference/workflow-map.md +0 -104
  147. package/docs/zh-cn/roadmap.mdx +0 -152
  148. package/docs/zh-cn/tutorials/getting-started.md +0 -300
  149. package/eslint.config.mjs +0 -141
  150. package/prettier.config.mjs +0 -32
  151. package/src/core/workflows/brainstorming/bmad-skill-manifest.yaml +0 -3
  152. package/src/core/workflows/party-mode/bmad-skill-manifest.yaml +0 -3
  153. package/test/README.md +0 -295
  154. package/test/adversarial-review-tests/README.md +0 -56
  155. package/test/adversarial-review-tests/sample-content.md +0 -46
  156. package/test/adversarial-review-tests/test-cases.yaml +0 -103
  157. package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +0 -27
  158. package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +0 -30
  159. package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +0 -22
  160. package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +0 -20
  161. package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +0 -25
  162. package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +0 -24
  163. package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +0 -25
  164. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +0 -25
  165. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +0 -25
  166. package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +0 -31
  167. package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +0 -25
  168. package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +0 -25
  169. package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +0 -25
  170. package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +0 -25
  171. package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +0 -26
  172. package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +0 -24
  173. package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +0 -27
  174. package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +0 -23
  175. package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +0 -24
  176. package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +0 -27
  177. package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +0 -27
  178. package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +0 -24
  179. package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +0 -29
  180. package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +0 -31
  181. package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +0 -28
  182. package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +0 -28
  183. package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +0 -5
  184. package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +0 -28
  185. package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +0 -11
  186. package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +0 -19
  187. package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +0 -18
  188. package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +0 -24
  189. package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +0 -22
  190. package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +0 -27
  191. package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +0 -31
  192. package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +0 -22
  193. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +0 -38
  194. package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +0 -23
  195. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +0 -31
  196. package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +0 -34
  197. package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +0 -24
  198. package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +0 -24
  199. package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +0 -24
  200. package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +0 -24
  201. package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +0 -23
  202. package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +0 -24
  203. package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +0 -24
  204. package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +0 -24
  205. package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +0 -22
  206. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +0 -28
  207. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +0 -30
  208. package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +0 -24
  209. package/test/fixtures/file-refs-csv/invalid/all-empty-workflow.csv +0 -3
  210. package/test/fixtures/file-refs-csv/invalid/empty-data.csv +0 -1
  211. package/test/fixtures/file-refs-csv/invalid/no-workflow-column.csv +0 -3
  212. package/test/fixtures/file-refs-csv/invalid/unresolvable-vars.csv +0 -3
  213. package/test/fixtures/file-refs-csv/valid/bmm-style.csv +0 -3
  214. package/test/fixtures/file-refs-csv/valid/core-style.csv +0 -3
  215. package/test/fixtures/file-refs-csv/valid/minimal.csv +0 -2
  216. package/test/test-agent-schema.js +0 -387
  217. package/test/test-cli-integration.sh +0 -159
  218. package/test/test-file-refs-csv.js +0 -133
  219. package/test/test-install-to-bmad.js +0 -154
  220. package/test/test-installation-components.js +0 -1796
  221. package/test/test-rehype-plugins.mjs +0 -1050
  222. package/test/test-workflow-path-regex.js +0 -88
  223. package/test/unit-test-schema.js +0 -133
  224. package/tools/build-docs.mjs +0 -464
  225. package/tools/docs/_prompt-external-modules-page.md +0 -59
  226. package/tools/docs/fix-refs.md +0 -91
  227. package/tools/docs/native-skills-migration-checklist.md +0 -281
  228. package/tools/fix-doc-links.js +0 -285
  229. package/tools/validate-agent-schema.js +0 -110
  230. package/tools/validate-doc-links.js +0 -407
  231. package/tools/validate-file-refs.js +0 -556
  232. package/website/README.md +0 -75
  233. package/website/astro.config.mjs +0 -157
  234. package/website/public/diagrams/quick-dev-diagram.png +0 -0
  235. package/website/public/favicon.ico +0 -0
  236. package/website/public/img/bmad-dark.png +0 -0
  237. package/website/public/img/bmad-light.png +0 -0
  238. package/website/public/workflow-map-diagram.html +0 -361
  239. package/website/src/components/Banner.astro +0 -62
  240. package/website/src/components/Header.astro +0 -96
  241. package/website/src/components/MobileMenuFooter.astro +0 -33
  242. package/website/src/content/config.ts +0 -7
  243. package/website/src/content/i18n/zh-CN.json +0 -28
  244. package/website/src/lib/site-url.mjs +0 -25
  245. package/website/src/pages/404.astro +0 -11
  246. package/website/src/pages/robots.txt.ts +0 -48
  247. package/website/src/rehype-base-paths.js +0 -112
  248. package/website/src/rehype-markdown-links.js +0 -119
  249. package/website/src/styles/custom.css +0 -805
  250. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/brain-methods.csv +0 -0
  251. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-01-session-setup.md +0 -0
  252. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-01b-continue.md +0 -0
  253. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02a-user-selected.md +0 -0
  254. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02b-ai-recommended.md +0 -0
  255. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02c-random-selection.md +0 -0
  256. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-02d-progressive-flow.md +0 -0
  257. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-03-technique-execution.md +0 -0
  258. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/steps/step-04-idea-organization.md +0 -0
  259. /package/src/core/workflows/{brainstorming → bmad-brainstorming}/template.md +0 -0
  260. /package/src/core/workflows/{party-mode → bmad-party-mode}/steps/step-01-agent-loading.md +0 -0
  261. /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
- }