mirror of
https://github.com/bmad-code-org/BMAD-METHOD.git
synced 2026-01-30 04:32:02 +00:00
Compare commits
364 Commits
docs/updat
...
v6.0.0-alp
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2da016f797 | ||
|
|
6947851393 | ||
|
|
9d7b09d065 | ||
|
|
86f2786dde | ||
|
|
a638f062b9 | ||
|
|
738237b4ae | ||
|
|
6430173738 | ||
|
|
baaa984a90 | ||
|
|
38e65abd83 | ||
|
|
ff9a085dd0 | ||
|
|
d5c687d99d | ||
|
|
b68e5c0225 | ||
|
|
987f81ff64 | ||
|
|
0c2afdd2bb | ||
|
|
a65ff90b44 | ||
|
|
80a90c01d4 | ||
|
|
119187a1e7 | ||
|
|
b252778043 | ||
|
|
eacfba2e5b | ||
|
|
903c7a4133 | ||
|
|
8c04ccf3f0 | ||
|
|
6d98864ec1 | ||
|
|
1697a45376 | ||
|
|
ba2c81263b | ||
|
|
8d044f8c3e | ||
|
|
74d071708d | ||
|
|
86e2daabba | ||
|
|
aad7a71718 | ||
|
|
f052967f65 | ||
|
|
1bd01e1ce6 | ||
|
|
0d83799ecf | ||
|
|
7c5c97a914 | ||
|
|
7545bf9227 | ||
|
|
228dfa28a5 | ||
|
|
e3f756488a | ||
|
|
d85090060b | ||
|
|
a0442d4fb7 | ||
|
|
e979b47fe5 | ||
|
|
a6dffb4706 | ||
|
|
282bc27c7e | ||
|
|
5ee1551b5b | ||
|
|
c95b65f462 | ||
|
|
72ef9e9722 | ||
|
|
8265bbf295 | ||
|
|
f99e192e74 | ||
|
|
0b9290789e | ||
|
|
aa1cf76f88 | ||
|
|
b8b4b65c10 | ||
|
|
73db5538bf | ||
|
|
41f9cc1913 | ||
|
|
686af5b0ee | ||
|
|
65658a499b | ||
|
|
d553a09f73 | ||
|
|
c79d081128 | ||
|
|
0b3964902a | ||
|
|
1e6fc4ba14 | ||
|
|
aa30ef3e79 | ||
|
|
6365a63dff | ||
|
|
fe0817f590 | ||
|
|
afd2a163bf | ||
|
|
9223174f40 | ||
|
|
47ad645f22 | ||
|
|
788c746857 | ||
|
|
ad053a6508 | ||
|
|
4539ca7436 | ||
|
|
829d051c91 | ||
|
|
a0732df56c | ||
|
|
4e254d7c63 | ||
|
|
00e72e66f8 | ||
|
|
5a11519dc1 | ||
|
|
5ea02d7091 | ||
|
|
7b21708868 | ||
|
|
3c81d78991 | ||
|
|
dcaf02f665 | ||
|
|
04b328bd2a | ||
|
|
355ccebca2 | ||
|
|
dfc35f35f8 | ||
|
|
677c000820 | ||
|
|
3ac539b61f | ||
|
|
331a67eeb3 | ||
|
|
fbdb91b991 | ||
|
|
54e6745a55 | ||
|
|
f793cf8fcd | ||
|
|
9223e2be21 | ||
|
|
2cac74cfb5 | ||
|
|
5702195ef7 | ||
|
|
11a1dbaefc | ||
|
|
d6b98afd2b | ||
|
|
24e952c511 | ||
|
|
3740a554f0 | ||
|
|
cd98a7f5bb | ||
|
|
4308b36d4d | ||
|
|
6907d44810 | ||
|
|
efc2b6d0df | ||
|
|
98342f2174 | ||
|
|
2edadd11ae | ||
|
|
0aeaa5b2ea | ||
|
|
b20773e7f7 | ||
|
|
c57ada4d9c | ||
|
|
05cbc6ccb8 | ||
|
|
905f9ca346 | ||
|
|
90af352247 | ||
|
|
13b1fc7517 | ||
|
|
9d510fc075 | ||
|
|
00b541f5d4 | ||
|
|
55fd621664 | ||
|
|
da00b295a9 | ||
|
|
a6f089cfd2 | ||
|
|
09533e4abb | ||
|
|
d7f045b11e | ||
|
|
e8e13a9aa3 | ||
|
|
be04d687dc | ||
|
|
047dfc1462 | ||
|
|
ece3eefd13 | ||
|
|
f17e4ef0b7 | ||
|
|
224af173ef | ||
|
|
054b031c1d | ||
|
|
7b7f984cd2 | ||
|
|
073597a8ff | ||
|
|
0ca164de34 | ||
|
|
f38905628a | ||
|
|
6f7e9f0653 | ||
|
|
5980e41a28 | ||
|
|
05ccd1904c | ||
|
|
f14014f0c7 | ||
|
|
3223975fd0 | ||
|
|
3f283066b1 | ||
|
|
70a642318d | ||
|
|
e6b4f3f051 | ||
|
|
7208610db8 | ||
|
|
aa4c7e4446 | ||
|
|
face4e4367 | ||
|
|
4aed5a1193 | ||
|
|
94d01961f3 | ||
|
|
1a52a19978 | ||
|
|
6d14147c26 | ||
|
|
15a94a94b6 | ||
|
|
b63bf9d067 | ||
|
|
8f57effda4 | ||
|
|
1868477238 | ||
|
|
48cf5c8056 | ||
|
|
8f7d259c81 | ||
|
|
74f54a088a | ||
|
|
4d745532aa | ||
|
|
2d99833b9e | ||
|
|
280652566c | ||
|
|
2ae99135a2 | ||
|
|
449b5b3d29 | ||
|
|
487d1582a0 | ||
|
|
03fbd2ae24 | ||
|
|
665e140638 | ||
|
|
f49a4731e7 | ||
|
|
7eb52520fa | ||
|
|
fd2521ec69 | ||
|
|
1728acfb0f | ||
|
|
a4bbfc4b6e | ||
|
|
61955e8e96 | ||
|
|
03d757292b | ||
|
|
91302d9c7a | ||
|
|
1343859874 | ||
|
|
8ed4a548ea | ||
|
|
80a04bfce3 | ||
|
|
9a37cbb7fc | ||
|
|
281eac3373 | ||
|
|
f84e18760f | ||
|
|
bc76d25be6 | ||
|
|
c20ead1acb | ||
|
|
6fa6ebab12 | ||
|
|
412a7d1ed8 | ||
|
|
f8ba15c6f8 | ||
|
|
1f0dfe05e4 | ||
|
|
7552ee2e3b | ||
|
|
c283344a54 | ||
|
|
ba5f76c37d | ||
|
|
84ec72fb94 | ||
|
|
ccd6cacd89 | ||
|
|
accae5d789 | ||
|
|
c5117e5382 | ||
|
|
e7d51739e4 | ||
|
|
17f81a84f3 | ||
|
|
88d043245f | ||
|
|
750024fb14 | ||
|
|
cfedecbd53 | ||
|
|
8a00f8ad70 | ||
|
|
3d4ea5ffd2 | ||
|
|
f77babcd5e | ||
|
|
4f4b191e8f | ||
|
|
a1be5d7292 | ||
|
|
b056b42892 | ||
|
|
1c9fcbb73b | ||
|
|
88e7ede452 | ||
|
|
d4879d373b | ||
|
|
663b76a072 | ||
|
|
ec111972a0 | ||
|
|
6d7f42dbec | ||
|
|
519e2f3d59 | ||
|
|
d6036e18dd | ||
|
|
6d2b6810c2 | ||
|
|
06dab16a75 | ||
|
|
5a70512a30 | ||
|
|
b05f4751d7 | ||
|
|
b5262f78ee | ||
|
|
5ee57ea8df | ||
|
|
fd620d0183 | ||
|
|
ad8717845d | ||
|
|
503a394218 | ||
|
|
8376ca0ba2 | ||
|
|
44bc96fadc | ||
|
|
7710d9941d | ||
|
|
1cfd58ebb1 | ||
|
|
1c5b30f361 | ||
|
|
d9c7980b1d | ||
|
|
95b875792b | ||
|
|
0ee4fa920a | ||
|
|
e93b208902 | ||
|
|
3fff30ca61 | ||
|
|
ee58586f39 | ||
|
|
ed3603f7b2 | ||
|
|
0354d1ae45 | ||
|
|
0dab278e7b | ||
|
|
66c66f602d | ||
|
|
7ad841964d | ||
|
|
f55e822338 | ||
|
|
24a2271520 | ||
|
|
a484b9975c | ||
|
|
913ec47123 | ||
|
|
8ed721d029 | ||
|
|
334e24823a | ||
|
|
b753fb293b | ||
|
|
63ef5b7bc6 | ||
|
|
1cb88728e8 | ||
|
|
8d81edf847 | ||
|
|
0067fb4880 | ||
|
|
8220c819e6 | ||
|
|
b7e6bfcde5 | ||
|
|
bfd49faf2d | ||
|
|
52b8edb01d | ||
|
|
061b7d94c4 | ||
|
|
5762941321 | ||
|
|
994f251687 | ||
|
|
cf13e81dd5 | ||
|
|
92bff333b1 | ||
|
|
f37c960a4d | ||
|
|
2d297c82da | ||
|
|
a175f46f1b | ||
|
|
44e09e4487 | ||
|
|
be5556bf42 | ||
|
|
be5b06f55e | ||
|
|
c8776aa9ac | ||
|
|
ddaefa3284 | ||
|
|
abaa24513a | ||
|
|
71330b6aac | ||
|
|
949d818db8 | ||
|
|
1b1947d240 | ||
|
|
419043e704 | ||
|
|
b8db0806ed | ||
|
|
60475ac6f8 | ||
|
|
69d1f75435 | ||
|
|
c2b3e797e7 | ||
|
|
31666c1f0f | ||
|
|
2a6eb71612 | ||
|
|
d3402c3132 | ||
|
|
0a048f2ccc | ||
|
|
eb9a214115 | ||
|
|
940cc15751 | ||
|
|
c0a2c55267 | ||
|
|
a1fc8da03c | ||
|
|
36231173d1 | ||
|
|
5788be64d0 | ||
|
|
b54bb9e47d | ||
|
|
af8e296e6f | ||
|
|
e92f138f3d | ||
|
|
ffd354b605 | ||
|
|
9519eae666 | ||
|
|
bc7d679366 | ||
|
|
54985778f2 | ||
|
|
84a70d8331 | ||
|
|
bee9c5dce7 | ||
|
|
7f0e57e466 | ||
|
|
790c4cedf4 | ||
|
|
e77a1c036b | ||
|
|
1fe405eb64 | ||
|
|
516fa1a917 | ||
|
|
a28a350e14 | ||
|
|
73ba7afa90 | ||
|
|
fb5e40319f | ||
|
|
bcac484319 | ||
|
|
72b6640f4b | ||
|
|
f4b16bfacf | ||
|
|
b9b219a13b | ||
|
|
9b427a4e2b | ||
|
|
0f126b7f87 | ||
|
|
4b6f34dff8 | ||
|
|
27586e6a40 | ||
|
|
5eb410d622 | ||
|
|
f1965810a6 | ||
|
|
36bf506241 | ||
|
|
88989d5403 | ||
|
|
c3c51945bb | ||
|
|
79ac3c91fe | ||
|
|
e61d58d480 | ||
|
|
1b7a3b396f | ||
|
|
ab05cdcdd2 | ||
|
|
2b736a8594 | ||
|
|
4f16d368ac | ||
|
|
b4cc579009 | ||
|
|
9ba4805aa7 | ||
|
|
d76bcb5586 | ||
|
|
5977227efc | ||
|
|
b62e169bac | ||
|
|
709fb72bc5 | ||
|
|
d444ca3f31 | ||
|
|
b999dd1315 | ||
|
|
c9ffe202d5 | ||
|
|
c49f4b2e9b | ||
|
|
33d893bef2 | ||
|
|
aefe72fd60 | ||
|
|
d23643b53b | ||
|
|
16984c3d92 | ||
|
|
47658c00d5 | ||
|
|
1a92e6823f | ||
|
|
6181a0bd07 | ||
|
|
c632564849 | ||
|
|
9ea68ab8c3 | ||
|
|
c7d76a3037 | ||
|
|
bbb37a7a86 | ||
|
|
b6d8823d51 | ||
|
|
e60d5cc42d | ||
|
|
3147589d0f | ||
|
|
94a2dad104 | ||
|
|
67bf3b81c8 | ||
|
|
106c32c513 | ||
|
|
9810f4255e | ||
|
|
9300ad1d71 | ||
|
|
46cabf72cd | ||
|
|
a747017520 | ||
|
|
5ee4cf535c | ||
|
|
9e8c7f3503 | ||
|
|
5ac18cb55c | ||
|
|
fd01ad69f8 | ||
|
|
3f40ef4756 | ||
|
|
c6704b4b6e | ||
|
|
15dc68cd29 | ||
|
|
f077a31aa0 | ||
|
|
7ebbe9fd5f | ||
|
|
5f0a318bdf | ||
|
|
25c3d50673 | ||
|
|
56e7a61bd3 | ||
|
|
05a3b4f3f1 | ||
|
|
c42cd48421 | ||
|
|
e7fcc56cc3 | ||
|
|
df0c3e4bae | ||
|
|
30fb0e67e1 | ||
|
|
e1fac26156 | ||
|
|
acdea01141 | ||
|
|
108e4d8eb4 | ||
|
|
688a841127 | ||
|
|
c26220daec | ||
|
|
ae136ceb03 | ||
|
|
9934224230 | ||
|
|
023edd1b7b | ||
|
|
24b3a42f85 | ||
|
|
bf24530ba6 | ||
|
|
9645a8ed0d |
36
.coderabbit.yaml
Normal file
36
.coderabbit.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
|
||||
|
||||
language: "en-US"
|
||||
early_access: true
|
||||
reviews:
|
||||
profile: chill
|
||||
high_level_summary: true
|
||||
request_changes_workflow: false
|
||||
review_status: true
|
||||
collapse_walkthrough: false
|
||||
poem: false
|
||||
auto_review:
|
||||
enabled: false # must be manually triggered with @coderabbit review
|
||||
drafts: true # Can review drafts. Since it's manually triggered, it's fine.
|
||||
auto_incremental_review: false # always review the whole PR, not just new commits
|
||||
base_branches:
|
||||
- main
|
||||
path_filters:
|
||||
- "!**/node_modules/**"
|
||||
path_instructions:
|
||||
- path: "**/*"
|
||||
instructions: |
|
||||
Focus on inconsistencies, contradictions, edge cases and serious issues.
|
||||
Avoid commenting on minor issues such as linting, formatting and style issues.
|
||||
When providing code suggestions, use GitHub's suggestion format:
|
||||
```suggestion
|
||||
<code changes>
|
||||
```
|
||||
- path: "**/*.js"
|
||||
instructions: |
|
||||
CLI tooling code. Check for: missing error handling on fs operations,
|
||||
path.join vs string concatenation, proper cleanup in error paths.
|
||||
Flag any process.exit() without error message.
|
||||
chat:
|
||||
auto_reply: true # Response to mentions in comments, a la @coderabbit review
|
||||
|
||||
128
.github/CODE_OF_CONDUCT.md
vendored
Normal file
128
.github/CODE_OF_CONDUCT.md
vendored
Normal file
@@ -0,0 +1,128 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
the official BMAD Discord server (<https://discord.com/invite/gk8jAdXWmj>) - DM a moderator or flag a post.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
<https://www.contributor-covenant.org/version/2/0/code_of_conduct.html>.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
<https://www.contributor-covenant.org/faq>. Translations are available at
|
||||
<https://www.contributor-covenant.org/translations>.
|
||||
4
.github/ISSUE_TEMPLATE/config.yaml
vendored
4
.github/ISSUE_TEMPLATE/config.yaml
vendored
@@ -1 +1,5 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Discord Community Support
|
||||
url: https://discord.gg/gk8jAdXWmj
|
||||
about: Please join our Discord server for general questions and community discussion before opening an issue.
|
||||
|
||||
8
.github/ISSUE_TEMPLATE/idea_submission.md
vendored
8
.github/ISSUE_TEMPLATE/idea_submission.md
vendored
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: V5 Idea Submission
|
||||
about: Suggest an idea for v5
|
||||
name: V6 Idea Submission
|
||||
about: Suggest an idea for v6
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
@@ -8,7 +8,7 @@ assignees: ''
|
||||
|
||||
# Idea: [Replace with a clear, actionable title]
|
||||
|
||||
### PASS Framework
|
||||
## PASS Framework
|
||||
|
||||
**P**roblem:
|
||||
|
||||
@@ -92,7 +92,7 @@ Fix issues and add features.
|
||||
|
||||
_Why this is poor: Too vague, no specific problem identified, no measurable success criteria, unclear scope_
|
||||
|
||||
</details>****
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
||||
15
.github/scripts/discord-helpers.sh
vendored
Normal file
15
.github/scripts/discord-helpers.sh
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
# Discord notification helper functions
|
||||
|
||||
# Escape markdown special chars and @mentions for safe Discord display
|
||||
# Bracket expression: ] must be first, then other chars. In POSIX bracket expr, \ is literal.
|
||||
esc() { sed -e 's/[][\*_()~`>]/\\&/g' -e 's/@/@ /g'; }
|
||||
|
||||
# Truncate to $1 chars (or 80 if wall-of-text with <3 spaces)
|
||||
trunc() {
|
||||
local max=$1
|
||||
local txt=$(tr '\n\r' ' ' | cut -c1-"$max")
|
||||
local spaces=$(printf '%s' "$txt" | tr -cd ' ' | wc -c)
|
||||
[ "$spaces" -lt 3 ] && [ ${#txt} -gt 80 ] && txt=$(printf '%s' "$txt" | cut -c1-80)
|
||||
printf '%s' "$txt"
|
||||
}
|
||||
329
.github/workflows/bundle-latest.yaml
vendored
Normal file
329
.github/workflows/bundle-latest.yaml
vendored
Normal file
@@ -0,0 +1,329 @@
|
||||
name: Publish Latest Bundles
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
workflow_dispatch: {}
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
bundle-and-publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout BMAD-METHOD
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
cache: npm
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Generate bundles
|
||||
run: npm run bundle
|
||||
|
||||
- name: Create bundle distribution structure
|
||||
run: |
|
||||
mkdir -p dist/bundles
|
||||
|
||||
# Copy web bundles (XML files from npm run bundle output)
|
||||
cp -r web-bundles/* dist/bundles/ 2>/dev/null || true
|
||||
|
||||
# Verify bundles were copied (fail if completely empty)
|
||||
if [ ! "$(ls -A dist/bundles)" ]; then
|
||||
echo "❌ ERROR: No bundles found in dist/bundles/"
|
||||
echo "This likely means 'npm run bundle' failed or bundles weren't generated"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Count bundles per module
|
||||
for module in bmm bmb cis bmgd; do
|
||||
if [ -d "dist/bundles/$module/agents" ]; then
|
||||
COUNT=$(find dist/bundles/$module/agents -name '*.xml' 2>/dev/null | wc -l)
|
||||
echo "✅ $module: $COUNT agent bundles"
|
||||
fi
|
||||
done
|
||||
|
||||
# Generate index.html for each agents directory (fixes directory browsing)
|
||||
for module in bmm bmb cis bmgd; do
|
||||
if [ -d "dist/bundles/$module/agents" ]; then
|
||||
cat > "dist/bundles/$module/agents/index.html" << 'DIREOF'
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>MODULE_NAME Agents</title>
|
||||
<style>
|
||||
body { font-family: system-ui; max-width: 800px; margin: 50px auto; padding: 20px; }
|
||||
li { margin: 10px 0; }
|
||||
a { color: #0066cc; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>MODULE_NAME Agents</h1>
|
||||
<ul>
|
||||
AGENT_LINKS
|
||||
</ul>
|
||||
<p><a href="../../">← Back to all modules</a></p>
|
||||
</body>
|
||||
</html>
|
||||
DIREOF
|
||||
|
||||
# Replace MODULE_NAME
|
||||
sed -i "s/MODULE_NAME/${module^^}/g" "dist/bundles/$module/agents/index.html"
|
||||
|
||||
# Generate agent links
|
||||
LINKS=""
|
||||
for file in dist/bundles/$module/agents/*.xml; do
|
||||
if [ -f "$file" ]; then
|
||||
name=$(basename "$file" .xml)
|
||||
LINKS="$LINKS <li><a href=\"./$name.xml\">$name</a></li>\n"
|
||||
fi
|
||||
done
|
||||
sed -i "s|AGENT_LINKS|$LINKS|" "dist/bundles/$module/agents/index.html"
|
||||
fi
|
||||
done
|
||||
|
||||
# Create zip archives per module
|
||||
mkdir -p dist/bundles/downloads
|
||||
for module in bmm bmb cis bmgd; do
|
||||
if [ -d "dist/bundles/$module" ]; then
|
||||
(cd dist/bundles && zip -r downloads/$module-agents.zip $module/)
|
||||
echo "✅ Created $module-agents.zip"
|
||||
fi
|
||||
done
|
||||
|
||||
# Generate index.html dynamically based on actual bundles
|
||||
TIMESTAMP=$(date -u +"%Y-%m-%d %H:%M UTC")
|
||||
COMMIT_SHA=$(git rev-parse --short HEAD)
|
||||
|
||||
# Function to generate agent links for a module
|
||||
generate_agent_links() {
|
||||
local module=$1
|
||||
local agent_dir="dist/bundles/$module/agents"
|
||||
|
||||
if [ ! -d "$agent_dir" ]; then
|
||||
echo ""
|
||||
return
|
||||
fi
|
||||
|
||||
local links=""
|
||||
local count=0
|
||||
|
||||
# Find all XML files and generate links
|
||||
for xml_file in "$agent_dir"/*.xml; do
|
||||
if [ -f "$xml_file" ]; then
|
||||
local agent_name=$(basename "$xml_file" .xml)
|
||||
# Convert filename to display name (pm -> PM, tech-writer -> Tech Writer)
|
||||
local display_name=$(echo "$agent_name" | sed 's/-/ /g' | awk '{for(i=1;i<=NF;i++) {if(length($i)==2) $i=toupper($i); else $i=toupper(substr($i,1,1)) tolower(substr($i,2));}}1')
|
||||
|
||||
if [ $count -gt 0 ]; then
|
||||
links="$links | "
|
||||
fi
|
||||
links="$links<a href=\"./$module/agents/$agent_name.xml\">$display_name</a>"
|
||||
count=$((count + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
echo "$links"
|
||||
}
|
||||
|
||||
# Generate agent links for each module
|
||||
BMM_LINKS=$(generate_agent_links "bmm")
|
||||
CIS_LINKS=$(generate_agent_links "cis")
|
||||
BMGD_LINKS=$(generate_agent_links "bmgd")
|
||||
|
||||
# Count agents for bulk downloads
|
||||
BMM_COUNT=$(find dist/bundles/bmm/agents -name '*.xml' 2>/dev/null | wc -l | tr -d ' ')
|
||||
CIS_COUNT=$(find dist/bundles/cis/agents -name '*.xml' 2>/dev/null | wc -l | tr -d ' ')
|
||||
BMGD_COUNT=$(find dist/bundles/bmgd/agents -name '*.xml' 2>/dev/null | wc -l | tr -d ' ')
|
||||
|
||||
# Create index.html
|
||||
cat > dist/bundles/index.html << EOF
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>BMAD Bundles - Latest</title>
|
||||
<meta charset="utf-8">
|
||||
<style>
|
||||
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; max-width: 800px; margin: 50px auto; padding: 20px; }
|
||||
h1 { color: #333; }
|
||||
.platform { margin: 30px 0; padding: 20px; background: #f5f5f5; border-radius: 8px; }
|
||||
.module { margin: 15px 0; }
|
||||
a { color: #0066cc; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
code { background: #e0e0e0; padding: 2px 6px; border-radius: 3px; }
|
||||
.warning { background: #fff3cd; padding: 15px; border-left: 4px solid #ffc107; margin: 20px 0; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>BMAD Web Bundles - Latest (Main Branch)</h1>
|
||||
|
||||
<div class="warning">
|
||||
<strong>⚠️ Latest Build (Unstable)</strong><br>
|
||||
These bundles are built from the latest main branch commit. For stable releases, visit
|
||||
<a href="https://github.com/bmad-code-org/BMAD-METHOD/releases/latest">GitHub Releases</a>.
|
||||
</div>
|
||||
|
||||
<p><strong>Last Updated:</strong> <code>$TIMESTAMP</code></p>
|
||||
<p><strong>Commit:</strong> <code>$COMMIT_SHA</code></p>
|
||||
|
||||
<h2>Available Modules</h2>
|
||||
|
||||
EOF
|
||||
|
||||
# Add BMM section if agents exist
|
||||
if [ -n "$BMM_LINKS" ]; then
|
||||
cat >> dist/bundles/index.html << EOF
|
||||
<div class="platform">
|
||||
<h3>BMM (BMad Method)</h3>
|
||||
<div class="module">
|
||||
$BMM_LINKS<br>
|
||||
📁 <a href="./bmm/agents/">Browse All</a> | 📦 <a href="./downloads/bmm-agents.zip">Download Zip</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Add CIS section if agents exist
|
||||
if [ -n "$CIS_LINKS" ]; then
|
||||
cat >> dist/bundles/index.html << EOF
|
||||
<div class="platform">
|
||||
<h3>CIS (Creative Intelligence Suite)</h3>
|
||||
<div class="module">
|
||||
$CIS_LINKS<br>
|
||||
📁 <a href="./cis/agents/">Browse Agents</a> | 📦 <a href="./downloads/cis-agents.zip">Download Zip</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Add BMGD section if agents exist
|
||||
if [ -n "$BMGD_LINKS" ]; then
|
||||
cat >> dist/bundles/index.html << EOF
|
||||
<div class="platform">
|
||||
<h3>BMGD (Game Development)</h3>
|
||||
<div class="module">
|
||||
$BMGD_LINKS<br>
|
||||
📁 <a href="./bmgd/agents/">Browse Agents</a> | 📦 <a href="./downloads/bmgd-agents.zip">Download Zip</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Add bulk downloads section
|
||||
cat >> dist/bundles/index.html << EOF
|
||||
<h2>Bulk Downloads</h2>
|
||||
<p>Download all agents for a module as a zip archive:</p>
|
||||
<ul>
|
||||
EOF
|
||||
|
||||
[ "$BMM_COUNT" -gt 0 ] && echo " <li><a href=\"./downloads/bmm-agents.zip\">📦 BMM Agents (all $BMM_COUNT)</a></li>" >> dist/bundles/index.html
|
||||
[ "$CIS_COUNT" -gt 0 ] && echo " <li><a href=\"./downloads/cis-agents.zip\">📦 CIS Agents (all $CIS_COUNT)</a></li>" >> dist/bundles/index.html
|
||||
[ "$BMGD_COUNT" -gt 0 ] && echo " <li><a href=\"./downloads/bmgd-agents.zip\">📦 BMGD Agents (all $BMGD_COUNT)</a></li>" >> dist/bundles/index.html
|
||||
|
||||
# Close HTML
|
||||
cat >> dist/bundles/index.html << 'EOF'
|
||||
</ul>
|
||||
|
||||
<h2>Usage</h2>
|
||||
<p>Copy the raw XML URL and paste into your AI platform's custom instructions or project knowledge.</p>
|
||||
<p>Example: <code>https://raw.githubusercontent.com/bmad-code-org/bmad-bundles/main/bmm/agents/pm.xml</code></p>
|
||||
|
||||
<h2>Installation (Recommended)</h2>
|
||||
<p>For full IDE integration with slash commands, use the installer:</p>
|
||||
<pre>npx bmad-method@alpha install</pre>
|
||||
|
||||
<footer style="margin-top: 50px; padding-top: 20px; border-top: 1px solid #ccc; color: #666;">
|
||||
<p>Built from <a href="https://github.com/bmad-code-org/BMAD-METHOD">BMAD-METHOD</a> repository.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
|
||||
- name: Checkout bmad-bundles repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: bmad-code-org/bmad-bundles
|
||||
path: bmad-bundles
|
||||
token: ${{ secrets.BUNDLES_PAT }}
|
||||
|
||||
- name: Update bundles
|
||||
run: |
|
||||
# Clear old bundles
|
||||
rm -rf bmad-bundles/*
|
||||
|
||||
# Copy new bundles
|
||||
cp -r dist/bundles/* bmad-bundles/
|
||||
|
||||
# Create .nojekyll for GitHub Pages
|
||||
touch bmad-bundles/.nojekyll
|
||||
|
||||
# Create README
|
||||
cat > bmad-bundles/README.md << 'EOF'
|
||||
# BMAD Web Bundles (Latest)
|
||||
|
||||
**⚠️ Unstable Build**: These bundles are auto-generated from the latest `main` branch.
|
||||
|
||||
For stable releases, visit [GitHub Releases](https://github.com/bmad-code-org/BMAD-METHOD/releases/latest).
|
||||
|
||||
## Usage
|
||||
|
||||
Copy raw markdown URLs for use in AI platforms:
|
||||
|
||||
- Claude Code: `https://raw.githubusercontent.com/bmad-code-org/bmad-bundles/main/claude-code/sub-agents/{agent}.md`
|
||||
- ChatGPT: `https://raw.githubusercontent.com/bmad-code-org/bmad-bundles/main/chatgpt/sub-agents/{agent}.md`
|
||||
- Gemini: `https://raw.githubusercontent.com/bmad-code-org/bmad-bundles/main/gemini/sub-agents/{agent}.md`
|
||||
|
||||
## Browse
|
||||
|
||||
Visit [https://bmad-code-org.github.io/bmad-bundles/](https://bmad-code-org.github.io/bmad-bundles/) to browse bundles.
|
||||
|
||||
## Installation (Recommended)
|
||||
|
||||
For full IDE integration:
|
||||
```bash
|
||||
npx bmad-method@alpha install
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Auto-updated by [BMAD-METHOD](https://github.com/bmad-code-org/BMAD-METHOD) on every main branch merge.
|
||||
EOF
|
||||
|
||||
- name: Commit and push to bmad-bundles
|
||||
run: |
|
||||
cd bmad-bundles
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||
|
||||
git add .
|
||||
|
||||
if git diff --staged --quiet; then
|
||||
echo "No changes to bundles, skipping commit"
|
||||
else
|
||||
COMMIT_SHA=$(cd .. && git rev-parse --short HEAD)
|
||||
git commit -m "Update bundles from BMAD-METHOD@${COMMIT_SHA}"
|
||||
git push
|
||||
echo "✅ Bundles published to GitHub Pages"
|
||||
fi
|
||||
|
||||
- name: Summary
|
||||
run: |
|
||||
echo "## 🎉 Bundles Published!" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**Latest bundles** available at:" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- 🌐 Browse: https://bmad-code-org.github.io/bmad-bundles/" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- 📦 Raw files: https://github.com/bmad-code-org/bmad-bundles" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**Commit**: ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
|
||||
288
.github/workflows/discord.yaml
vendored
288
.github/workflows/discord.yaml
vendored
@@ -1,16 +1,286 @@
|
||||
name: Discord Notification
|
||||
|
||||
"on": [pull_request, release, create, delete, issue_comment, pull_request_review, pull_request_review_comment]
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, closed, reopened, ready_for_review]
|
||||
release:
|
||||
types: [published]
|
||||
create:
|
||||
delete:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
pull_request_review:
|
||||
types: [submitted]
|
||||
pull_request_review_comment:
|
||||
types: [created]
|
||||
issues:
|
||||
types: [opened, closed, reopened]
|
||||
|
||||
env:
|
||||
MAX_TITLE: 100
|
||||
MAX_BODY: 250
|
||||
|
||||
jobs:
|
||||
notify:
|
||||
pull_request:
|
||||
if: github.event_name == 'pull_request'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.repository.default_branch }}
|
||||
sparse-checkout: .github/scripts
|
||||
sparse-checkout-cone-mode: false
|
||||
- name: Notify Discord
|
||||
env:
|
||||
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
ACTION: ${{ github.event.action }}
|
||||
MERGED: ${{ github.event.pull_request.merged }}
|
||||
PR_NUM: ${{ github.event.pull_request.number }}
|
||||
PR_URL: ${{ github.event.pull_request.html_url }}
|
||||
PR_TITLE: ${{ github.event.pull_request.title }}
|
||||
PR_USER: ${{ github.event.pull_request.user.login }}
|
||||
PR_BODY: ${{ github.event.pull_request.body }}
|
||||
run: |
|
||||
set -o pipefail
|
||||
source .github/scripts/discord-helpers.sh
|
||||
[ -z "$WEBHOOK" ] && exit 0
|
||||
|
||||
if [ "$ACTION" = "opened" ]; then ICON="🔀"; LABEL="New PR"
|
||||
elif [ "$ACTION" = "closed" ] && [ "$MERGED" = "true" ]; then ICON="🎉"; LABEL="Merged"
|
||||
elif [ "$ACTION" = "closed" ]; then ICON="❌"; LABEL="Closed"
|
||||
elif [ "$ACTION" = "reopened" ]; then ICON="🔄"; LABEL="Reopened"
|
||||
else ICON="📋"; LABEL="Ready"; fi
|
||||
|
||||
TITLE=$(printf '%s' "$PR_TITLE" | trunc $MAX_TITLE | esc)
|
||||
[ ${#PR_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..."
|
||||
BODY=$(printf '%s' "$PR_BODY" | trunc $MAX_BODY | esc)
|
||||
[ -n "$PR_BODY" ] && [ ${#PR_BODY} -gt $MAX_BODY ] && BODY="${BODY}..."
|
||||
[ -n "$BODY" ] && BODY=" · $BODY"
|
||||
USER=$(printf '%s' "$PR_USER" | esc)
|
||||
|
||||
MSG="$ICON **[$LABEL #$PR_NUM: $TITLE](<$PR_URL>)**"$'\n'"by @$USER$BODY"
|
||||
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
|
||||
|
||||
issues:
|
||||
if: github.event_name == 'issues'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.repository.default_branch }}
|
||||
sparse-checkout: .github/scripts
|
||||
sparse-checkout-cone-mode: false
|
||||
- name: Notify Discord
|
||||
env:
|
||||
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
ACTION: ${{ github.event.action }}
|
||||
ISSUE_NUM: ${{ github.event.issue.number }}
|
||||
ISSUE_URL: ${{ github.event.issue.html_url }}
|
||||
ISSUE_TITLE: ${{ github.event.issue.title }}
|
||||
ISSUE_USER: ${{ github.event.issue.user.login }}
|
||||
ISSUE_BODY: ${{ github.event.issue.body }}
|
||||
ACTOR: ${{ github.actor }}
|
||||
run: |
|
||||
set -o pipefail
|
||||
source .github/scripts/discord-helpers.sh
|
||||
[ -z "$WEBHOOK" ] && exit 0
|
||||
|
||||
if [ "$ACTION" = "opened" ]; then ICON="🐛"; LABEL="New Issue"; USER="$ISSUE_USER"
|
||||
elif [ "$ACTION" = "closed" ]; then ICON="✅"; LABEL="Closed"; USER="$ACTOR"
|
||||
else ICON="🔄"; LABEL="Reopened"; USER="$ACTOR"; fi
|
||||
|
||||
TITLE=$(printf '%s' "$ISSUE_TITLE" | trunc $MAX_TITLE | esc)
|
||||
[ ${#ISSUE_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..."
|
||||
BODY=$(printf '%s' "$ISSUE_BODY" | trunc $MAX_BODY | esc)
|
||||
[ -n "$ISSUE_BODY" ] && [ ${#ISSUE_BODY} -gt $MAX_BODY ] && BODY="${BODY}..."
|
||||
[ -n "$BODY" ] && BODY=" · $BODY"
|
||||
USER=$(printf '%s' "$USER" | esc)
|
||||
|
||||
MSG="$ICON **[$LABEL #$ISSUE_NUM: $TITLE](<$ISSUE_URL>)**"$'\n'"by @$USER$BODY"
|
||||
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
|
||||
|
||||
issue_comment:
|
||||
if: github.event_name == 'issue_comment'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.repository.default_branch }}
|
||||
sparse-checkout: .github/scripts
|
||||
sparse-checkout-cone-mode: false
|
||||
- name: Notify Discord
|
||||
env:
|
||||
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
IS_PR: ${{ github.event.issue.pull_request && 'true' || 'false' }}
|
||||
ISSUE_NUM: ${{ github.event.issue.number }}
|
||||
ISSUE_TITLE: ${{ github.event.issue.title }}
|
||||
COMMENT_URL: ${{ github.event.comment.html_url }}
|
||||
COMMENT_USER: ${{ github.event.comment.user.login }}
|
||||
COMMENT_BODY: ${{ github.event.comment.body }}
|
||||
run: |
|
||||
set -o pipefail
|
||||
source .github/scripts/discord-helpers.sh
|
||||
[ -z "$WEBHOOK" ] && exit 0
|
||||
|
||||
[ "$IS_PR" = "true" ] && TYPE="PR" || TYPE="Issue"
|
||||
|
||||
TITLE=$(printf '%s' "$ISSUE_TITLE" | trunc $MAX_TITLE | esc)
|
||||
[ ${#ISSUE_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..."
|
||||
BODY=$(printf '%s' "$COMMENT_BODY" | trunc $MAX_BODY | esc)
|
||||
[ ${#COMMENT_BODY} -gt $MAX_BODY ] && BODY="${BODY}..."
|
||||
USER=$(printf '%s' "$COMMENT_USER" | esc)
|
||||
|
||||
MSG="💬 **[Comment on $TYPE #$ISSUE_NUM: $TITLE](<$COMMENT_URL>)**"$'\n'"@$USER: $BODY"
|
||||
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
|
||||
|
||||
pull_request_review:
|
||||
if: github.event_name == 'pull_request_review'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.repository.default_branch }}
|
||||
sparse-checkout: .github/scripts
|
||||
sparse-checkout-cone-mode: false
|
||||
- name: Notify Discord
|
||||
env:
|
||||
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
STATE: ${{ github.event.review.state }}
|
||||
PR_NUM: ${{ github.event.pull_request.number }}
|
||||
PR_TITLE: ${{ github.event.pull_request.title }}
|
||||
REVIEW_URL: ${{ github.event.review.html_url }}
|
||||
REVIEW_USER: ${{ github.event.review.user.login }}
|
||||
REVIEW_BODY: ${{ github.event.review.body }}
|
||||
run: |
|
||||
set -o pipefail
|
||||
source .github/scripts/discord-helpers.sh
|
||||
[ -z "$WEBHOOK" ] && exit 0
|
||||
|
||||
if [ "$STATE" = "approved" ]; then ICON="✅"; LABEL="Approved"
|
||||
elif [ "$STATE" = "changes_requested" ]; then ICON="🔧"; LABEL="Changes Requested"
|
||||
else ICON="👀"; LABEL="Reviewed"; fi
|
||||
|
||||
TITLE=$(printf '%s' "$PR_TITLE" | trunc $MAX_TITLE | esc)
|
||||
[ ${#PR_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..."
|
||||
BODY=$(printf '%s' "$REVIEW_BODY" | trunc $MAX_BODY | esc)
|
||||
[ -n "$REVIEW_BODY" ] && [ ${#REVIEW_BODY} -gt $MAX_BODY ] && BODY="${BODY}..."
|
||||
[ -n "$BODY" ] && BODY=": $BODY"
|
||||
USER=$(printf '%s' "$REVIEW_USER" | esc)
|
||||
|
||||
MSG="$ICON **[$LABEL PR #$PR_NUM: $TITLE](<$REVIEW_URL>)**"$'\n'"@$USER$BODY"
|
||||
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
|
||||
|
||||
pull_request_review_comment:
|
||||
if: github.event_name == 'pull_request_review_comment'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.repository.default_branch }}
|
||||
sparse-checkout: .github/scripts
|
||||
sparse-checkout-cone-mode: false
|
||||
- name: Notify Discord
|
||||
env:
|
||||
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
PR_NUM: ${{ github.event.pull_request.number }}
|
||||
PR_TITLE: ${{ github.event.pull_request.title }}
|
||||
COMMENT_URL: ${{ github.event.comment.html_url }}
|
||||
COMMENT_USER: ${{ github.event.comment.user.login }}
|
||||
COMMENT_BODY: ${{ github.event.comment.body }}
|
||||
run: |
|
||||
set -o pipefail
|
||||
source .github/scripts/discord-helpers.sh
|
||||
[ -z "$WEBHOOK" ] && exit 0
|
||||
|
||||
TITLE=$(printf '%s' "$PR_TITLE" | trunc $MAX_TITLE | esc)
|
||||
[ ${#PR_TITLE} -gt $MAX_TITLE ] && TITLE="${TITLE}..."
|
||||
BODY=$(printf '%s' "$COMMENT_BODY" | trunc $MAX_BODY | esc)
|
||||
[ ${#COMMENT_BODY} -gt $MAX_BODY ] && BODY="${BODY}..."
|
||||
USER=$(printf '%s' "$COMMENT_USER" | esc)
|
||||
|
||||
MSG="💭 **[Review Comment PR #$PR_NUM: $TITLE](<$COMMENT_URL>)**"$'\n'"@$USER: $BODY"
|
||||
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
|
||||
|
||||
release:
|
||||
if: github.event_name == 'release'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.repository.default_branch }}
|
||||
sparse-checkout: .github/scripts
|
||||
sparse-checkout-cone-mode: false
|
||||
- name: Notify Discord
|
||||
env:
|
||||
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
TAG: ${{ github.event.release.tag_name }}
|
||||
NAME: ${{ github.event.release.name }}
|
||||
URL: ${{ github.event.release.html_url }}
|
||||
RELEASE_BODY: ${{ github.event.release.body }}
|
||||
run: |
|
||||
set -o pipefail
|
||||
source .github/scripts/discord-helpers.sh
|
||||
[ -z "$WEBHOOK" ] && exit 0
|
||||
|
||||
REL_NAME=$(printf '%s' "$NAME" | trunc $MAX_TITLE | esc)
|
||||
[ ${#NAME} -gt $MAX_TITLE ] && REL_NAME="${REL_NAME}..."
|
||||
BODY=$(printf '%s' "$RELEASE_BODY" | trunc $MAX_BODY | esc)
|
||||
[ -n "$RELEASE_BODY" ] && [ ${#RELEASE_BODY} -gt $MAX_BODY ] && BODY="${BODY}..."
|
||||
[ -n "$BODY" ] && BODY=" · $BODY"
|
||||
TAG_ESC=$(printf '%s' "$TAG" | esc)
|
||||
|
||||
MSG="🚀 **[Release $TAG_ESC: $REL_NAME](<$URL>)**"$'\n'"$BODY"
|
||||
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
|
||||
|
||||
create:
|
||||
if: github.event_name == 'create'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.repository.default_branch }}
|
||||
sparse-checkout: .github/scripts
|
||||
sparse-checkout-cone-mode: false
|
||||
- name: Notify Discord
|
||||
env:
|
||||
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
REF_TYPE: ${{ github.event.ref_type }}
|
||||
REF: ${{ github.event.ref }}
|
||||
ACTOR: ${{ github.actor }}
|
||||
REPO_URL: ${{ github.event.repository.html_url }}
|
||||
run: |
|
||||
set -o pipefail
|
||||
source .github/scripts/discord-helpers.sh
|
||||
[ -z "$WEBHOOK" ] && exit 0
|
||||
|
||||
[ "$REF_TYPE" = "branch" ] && ICON="🌿" || ICON="🏷️"
|
||||
REF_TRUNC=$(printf '%s' "$REF" | trunc $MAX_TITLE)
|
||||
[ ${#REF} -gt $MAX_TITLE ] && REF_TRUNC="${REF_TRUNC}..."
|
||||
REF_ESC=$(printf '%s' "$REF_TRUNC" | esc)
|
||||
REF_URL=$(jq -rn --arg ref "$REF" '$ref | @uri')
|
||||
ACTOR_ESC=$(printf '%s' "$ACTOR" | esc)
|
||||
MSG="$ICON **${REF_TYPE^} created: [$REF_ESC](<$REPO_URL/tree/$REF_URL>)** by @$ACTOR_ESC"
|
||||
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
|
||||
|
||||
delete:
|
||||
if: github.event_name == 'delete'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Notify Discord
|
||||
uses: sarisia/actions-status-discord@v1
|
||||
if: always()
|
||||
with:
|
||||
webhook: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
status: ${{ job.status }}
|
||||
title: "Triggered by ${{ github.event_name }}"
|
||||
color: 0x5865F2
|
||||
env:
|
||||
WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
REF_TYPE: ${{ github.event.ref_type }}
|
||||
REF: ${{ github.event.ref }}
|
||||
ACTOR: ${{ github.actor }}
|
||||
run: |
|
||||
set -o pipefail
|
||||
[ -z "$WEBHOOK" ] && exit 0
|
||||
esc() { sed -e 's/[][\*_()~`>]/\\&/g' -e 's/@/@ /g'; }
|
||||
trunc() { tr '\n\r' ' ' | cut -c1-"$1"; }
|
||||
|
||||
REF_TRUNC=$(printf '%s' "$REF" | trunc 100)
|
||||
[ ${#REF} -gt 100 ] && REF_TRUNC="${REF_TRUNC}..."
|
||||
REF_ESC=$(printf '%s' "$REF_TRUNC" | esc)
|
||||
ACTOR_ESC=$(printf '%s' "$ACTOR" | esc)
|
||||
MSG="🗑️ **${REF_TYPE^} deleted: $REF_ESC** by @$ACTOR_ESC"
|
||||
jq -n --arg content "$MSG" '{content: $content}' | curl -sf --retry 2 -X POST "$WEBHOOK" -H "Content-Type: application/json" -d @-
|
||||
|
||||
43
.github/workflows/format-check.yaml
vendored
43
.github/workflows/format-check.yaml
vendored
@@ -1,43 +0,0 @@
|
||||
name: format-check
|
||||
|
||||
"on":
|
||||
pull_request:
|
||||
branches: ["**"]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
prettier:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
cache: "npm"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Prettier format check
|
||||
run: npm run format:check
|
||||
|
||||
eslint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
cache: "npm"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: ESLint
|
||||
run: npm run lint
|
||||
81
.github/workflows/manual-release.yaml
vendored
81
.github/workflows/manual-release.yaml
vendored
@@ -61,8 +61,34 @@ jobs:
|
||||
run: |
|
||||
sed -i 's/"version": ".*"/"version": "${{ steps.version.outputs.new_version }}"/' tools/installer/package.json
|
||||
|
||||
- name: Build project
|
||||
run: npm run build
|
||||
- name: Generate web bundles
|
||||
run: npm run bundle
|
||||
|
||||
- name: Package bundles for release
|
||||
run: |
|
||||
mkdir -p dist/release-bundles
|
||||
|
||||
# Copy web bundles
|
||||
cp -r web-bundles dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }}
|
||||
|
||||
# Verify bundles exist
|
||||
if [ ! "$(ls -A dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }})" ]; then
|
||||
echo "❌ ERROR: No bundles found"
|
||||
echo "This likely means 'npm run bundle' failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Count and display bundles per module
|
||||
for module in bmm bmb cis bmgd; do
|
||||
if [ -d "dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }}/$module/agents" ]; then
|
||||
COUNT=$(find dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }}/$module/agents -name '*.xml' 2>/dev/null | wc -l)
|
||||
echo "✅ $module: $COUNT agents"
|
||||
fi
|
||||
done
|
||||
|
||||
# Create archive
|
||||
tar -czf dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }}.tar.gz \
|
||||
-C dist/release-bundles/bmad-bundles-v${{ steps.version.outputs.new_version }} .
|
||||
|
||||
- name: Commit version bump
|
||||
run: |
|
||||
@@ -149,25 +175,46 @@ jobs:
|
||||
- name: Publish to NPM
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
run: npm publish
|
||||
run: |
|
||||
VERSION="${{ steps.version.outputs.new_version }}"
|
||||
if [[ "$VERSION" == *"alpha"* ]] || [[ "$VERSION" == *"beta"* ]]; then
|
||||
echo "Publishing prerelease version with --tag alpha"
|
||||
npm publish --tag alpha
|
||||
else
|
||||
echo "Publishing stable version with --tag latest"
|
||||
npm publish --tag latest
|
||||
fi
|
||||
|
||||
- name: Create GitHub Release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Create GitHub Release with Bundles
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: v${{ steps.version.outputs.new_version }}
|
||||
release_name: "BMad Method v${{ steps.version.outputs.new_version }}"
|
||||
body: ${{ steps.release_notes.outputs.RELEASE_NOTES }}
|
||||
name: "BMad Method v${{ steps.version.outputs.new_version }}"
|
||||
body: |
|
||||
${{ steps.release_notes.outputs.RELEASE_NOTES }}
|
||||
|
||||
## 📦 Web Bundles
|
||||
|
||||
Download XML bundles for use in AI platforms (Claude Projects, ChatGPT, Gemini):
|
||||
|
||||
- `bmad-bundles-v${{ steps.version.outputs.new_version }}.tar.gz` - All modules (BMM, BMB, CIS, BMGD)
|
||||
|
||||
**Browse online** (bleeding edge): https://bmad-code-org.github.io/bmad-bundles/
|
||||
draft: false
|
||||
prerelease: false
|
||||
prerelease: ${{ contains(steps.version.outputs.new_version, 'alpha') || contains(steps.version.outputs.new_version, 'beta') }}
|
||||
files: |
|
||||
dist/release-bundles/*.tar.gz
|
||||
|
||||
- name: Summary
|
||||
run: |
|
||||
echo "🎉 Successfully released v${{ steps.version.outputs.new_version }}!"
|
||||
echo "📦 Published to NPM with @latest tag"
|
||||
echo "🏷️ Git tag: v${{ steps.version.outputs.new_version }}"
|
||||
echo "✅ Users running 'npx bmad-method install' will now get version ${{ steps.version.outputs.new_version }}"
|
||||
echo ""
|
||||
echo "📝 Release notes preview:"
|
||||
cat release_notes.md
|
||||
echo "## 🎉 Successfully released v${{ steps.version.outputs.new_version }}!" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "### 📦 Distribution" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **NPM**: Published with @latest tag" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **GitHub Release**: https://github.com/bmad-code-org/BMAD-METHOD/releases/tag/v${{ steps.version.outputs.new_version }}" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- **Web Bundles**: Attached to GitHub Release (4 archives)" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "### ✅ Installation" >> $GITHUB_STEP_SUMMARY
|
||||
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
|
||||
echo "npx bmad-method@${{ steps.version.outputs.new_version }} install" >> $GITHUB_STEP_SUMMARY
|
||||
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
97
.github/workflows/quality.yaml
vendored
Normal file
97
.github/workflows/quality.yaml
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
name: Quality & Validation
|
||||
|
||||
# Runs comprehensive quality checks on all PRs:
|
||||
# - Prettier (formatting)
|
||||
# - ESLint (linting)
|
||||
# - markdownlint (markdown quality)
|
||||
# - Schema validation (YAML structure)
|
||||
# - Agent schema tests (fixture-based validation)
|
||||
# - Installation component tests (compilation)
|
||||
# - Bundle validation (web bundle integrity)
|
||||
|
||||
"on":
|
||||
pull_request:
|
||||
branches: ["**"]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
prettier:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
cache: "npm"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Prettier format check
|
||||
run: npm run format:check
|
||||
|
||||
eslint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
cache: "npm"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: ESLint
|
||||
run: npm run lint
|
||||
|
||||
markdownlint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
cache: "npm"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: markdownlint
|
||||
run: npm run lint:md
|
||||
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: ".nvmrc"
|
||||
cache: "npm"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Validate YAML schemas
|
||||
run: npm run validate:schemas
|
||||
|
||||
- name: Run agent schema validation tests
|
||||
run: npm run test:schemas
|
||||
|
||||
- name: Test agent compilation components
|
||||
run: npm run test:install
|
||||
|
||||
- name: Validate web bundles
|
||||
run: npm run validate:bundles
|
||||
28
.gitignore
vendored
28
.gitignore
vendored
@@ -6,6 +6,10 @@ deno.lock
|
||||
pnpm-workspace.yaml
|
||||
package-lock.json
|
||||
|
||||
|
||||
test-output/*
|
||||
coverage/
|
||||
|
||||
# Logs
|
||||
logs/
|
||||
*.log
|
||||
@@ -22,7 +26,6 @@ build/*.txt
|
||||
Thumbs.db
|
||||
|
||||
# Development tools and configs
|
||||
.prettierignore
|
||||
.prettierrc
|
||||
|
||||
# IDE and editor configs
|
||||
@@ -33,12 +36,12 @@ Thumbs.db
|
||||
# AI assistant files
|
||||
CLAUDE.md
|
||||
.ai/*
|
||||
.claude
|
||||
cursor
|
||||
.gemini
|
||||
.mcp.json
|
||||
CLAUDE.local.md
|
||||
.serena/
|
||||
.claude/settings.local.json
|
||||
|
||||
# Project-specific
|
||||
.bmad-core
|
||||
@@ -51,9 +54,24 @@ flattened-codebase.xml
|
||||
#UAT template testing output files
|
||||
tools/template-test-generator/test-scenarios/
|
||||
|
||||
# Bundler temporary files
|
||||
# Bundler temporary files and generated bundles
|
||||
.bundler-temp/
|
||||
|
||||
# Test Install Output
|
||||
|
||||
# Generated web bundles (built by CI, not committed)
|
||||
src/modules/bmm/sub-modules/
|
||||
src/modules/bmb/sub-modules/
|
||||
src/modules/cis/sub-modules/
|
||||
src/modules/bmgd/sub-modules/
|
||||
shared-modules
|
||||
z*/
|
||||
|
||||
.bmad
|
||||
.claude
|
||||
.codex
|
||||
.github/chatmodes
|
||||
.agent
|
||||
.agentvibes/
|
||||
.kiro/
|
||||
.roo
|
||||
|
||||
bmad-custom-src/
|
||||
@@ -1,3 +1,7 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# Auto-fix changed files and stage them
|
||||
npx --no-install lint-staged
|
||||
|
||||
# Validate everything
|
||||
npm test
|
||||
|
||||
42
.markdownlint-cli2.yaml
Normal file
42
.markdownlint-cli2.yaml
Normal file
@@ -0,0 +1,42 @@
|
||||
# markdownlint-cli2 configuration
|
||||
# https://github.com/DavidAnson/markdownlint-cli2
|
||||
|
||||
ignores:
|
||||
- node_modules/**
|
||||
- test/fixtures/**
|
||||
- CODE_OF_CONDUCT.md
|
||||
- .bmad/**
|
||||
- .bmad*/**
|
||||
- .agent/**
|
||||
- .claude/**
|
||||
- .roo/**
|
||||
- .codex/**
|
||||
- .agentvibes/**
|
||||
- .kiro/**
|
||||
- sample-project/**
|
||||
- test-project-install/**
|
||||
- z*/**
|
||||
|
||||
# Rule configuration
|
||||
config:
|
||||
# Disable all rules by default
|
||||
default: false
|
||||
|
||||
# Heading levels should increment by one (h1 -> h2 -> h3, not h1 -> h3)
|
||||
MD001: true
|
||||
|
||||
# Duplicate sibling headings (same heading text at same level under same parent)
|
||||
MD024:
|
||||
siblings_only: true
|
||||
|
||||
# Trailing commas in headings (likely typos)
|
||||
MD026:
|
||||
punctuation: ","
|
||||
|
||||
# Bare URLs - may not render as links in all parsers
|
||||
# Should use <url> or [text](url) format
|
||||
MD034: true
|
||||
|
||||
# Spaces inside emphasis markers - breaks rendering
|
||||
# e.g., "* text *" won't render as emphasis
|
||||
MD037: true
|
||||
9
.prettierignore
Normal file
9
.prettierignore
Normal file
@@ -0,0 +1,9 @@
|
||||
# Test fixtures with intentionally broken/malformed files
|
||||
test/fixtures/**
|
||||
|
||||
# Contributor Covenant (external standard)
|
||||
CODE_OF_CONDUCT.md
|
||||
|
||||
# BMAD runtime folders (user-specific, not in repo)
|
||||
.bmad/
|
||||
.bmad*/
|
||||
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@@ -21,6 +21,7 @@
|
||||
"Decisioning",
|
||||
"eksctl",
|
||||
"elicitations",
|
||||
"Excalidraw",
|
||||
"filecomplete",
|
||||
"fintech",
|
||||
"fluxcd",
|
||||
@@ -56,7 +57,8 @@
|
||||
"tileset",
|
||||
"tmpl",
|
||||
"Trae",
|
||||
"VNET"
|
||||
"VNET",
|
||||
"webskip"
|
||||
],
|
||||
"json.schemas": [
|
||||
{
|
||||
|
||||
328
CHANGELOG.md
328
CHANGELOG.md
@@ -1,21 +1,325 @@
|
||||
# Changelog
|
||||
|
||||
## [6.0.0-alpha.15]
|
||||
|
||||
**Release: December 7, 2025**
|
||||
|
||||
### 🔧 Module Installation Standardization
|
||||
|
||||
**Unified Module Configuration:**
|
||||
|
||||
- **module.yaml Standard**: All modules now use `module.yaml` instead of `_module-installer/install-config.yaml` for consistent configuration (BREAKING CHANGE)
|
||||
- **Universal Installer**: Both core and custom modules now use the same installer with consistent behavior
|
||||
- **Streamlined Module Creation**: Module builder templates updated to use new module.yaml standard
|
||||
- **Enhanced Module Discovery**: Improved module caching and discovery mechanisms
|
||||
|
||||
**Custom Content Installation Revolution:**
|
||||
|
||||
- **Interactive Custom Content Search**: Installer now proactively asks if you have custom content to install
|
||||
- **Flexible Location Specification**: Users can indicate custom content location during installation
|
||||
- **Improved Custom Module Handler**: Enhanced error handling and debug output for custom installations
|
||||
- **Comprehensive Documentation**: New custom-content-installation.md guide (245 lines) replacing custom-agent-installation.md
|
||||
|
||||
### 🤖 Code Review Integration Expansion
|
||||
|
||||
**AI Review Tools:**
|
||||
|
||||
- **CodeRabbit AI Integration**: Added .coderabbit.yaml configuration for automated code review
|
||||
- **Raven's Verdict PR Review Tool**: New PR review automation tool (297 lines of documentation)
|
||||
- **Review Path Configuration**: Proper exclusion patterns for node_modules and generated files
|
||||
- **Review Documentation**: Comprehensive usage guidance and skip conditions for PRs
|
||||
|
||||
### 📚 Documentation Improvements
|
||||
|
||||
**Documentation Restructuring:**
|
||||
|
||||
- **Code of Conduct**: Moved to .github/ folder following GitHub standards
|
||||
- **Gem Creation Link**: Updated to point to Gemini Gem manager instead of deprecated interface
|
||||
- **Example Custom Content**: Improved README files and disabled example modules to prevent accidental installation
|
||||
- **Custom Module Documentation**: Enhanced module installation guides with new YAML structure
|
||||
|
||||
### 🧹 Cleanup & Optimization
|
||||
|
||||
**Memory Management:**
|
||||
|
||||
- **Removed Hardcoded .bmad Folders**: Cleaned up demo content to use configurable paths
|
||||
- **Sidecar File Cleanup**: Removed old .bmad-user-memory folders from wellness modules
|
||||
- **Example Content Organization**: Better organization of example-custom-content directory
|
||||
|
||||
**Installer Improvements:**
|
||||
|
||||
- **Debug Output Enhancement**: Added informative debug output when installer encounters errors
|
||||
- **Custom Module Caching**: Improved caching mechanism for custom module installations
|
||||
- **Consistent Behavior**: All modules now behave consistently regardless of custom or core status
|
||||
|
||||
### 📊 Statistics
|
||||
|
||||
- **77 files changed** with 2,852 additions and 607 deletions
|
||||
- **15 commits** since alpha.14
|
||||
|
||||
### ⚠️ Breaking Changes
|
||||
|
||||
1. **module.yaml Configuration**: All modules must now use `module.yaml` instead of `_module-installer/install-config.yaml`
|
||||
- Core modules updated automatically
|
||||
- Custom modules will need to rename their configuration file
|
||||
- Module builder templates generate new format
|
||||
|
||||
### 📦 New Dependencies
|
||||
|
||||
- No new dependencies added in this release
|
||||
|
||||
---
|
||||
|
||||
## [6.0.0-alpha.14]
|
||||
|
||||
**Release: December 7, 2025**
|
||||
|
||||
### 🔧 Installation & Configuration Revolution
|
||||
|
||||
**Custom Module Installation Overhaul:**
|
||||
|
||||
- **Simple custom.yaml Installation**: Custom agents and workflows can now be installed with a single YAML file
|
||||
- **IDE Configuration Preservation**: Upgrades will no longer delete custom modules, agents, and workflows from IDE configuration
|
||||
- **Removed Legacy agent-install Command**: Streamlined installation process (BREAKING CHANGE)
|
||||
- **Sidecar File Retention**: Custom sidecar files are preserved during updates
|
||||
- **Flexible Agent Sidecar Locations**: Fully configurable via config options instead of hardcoded paths
|
||||
|
||||
**Module Discovery System Transformation:**
|
||||
|
||||
- **Recursive Agent Discovery**: Deep scanning for agents across entire project structure
|
||||
- **Enhanced Manifest Generation**: Comprehensive scanning of all installed modules
|
||||
- **Nested Agent Support**: Fixed nested agents appearing in CLI commands
|
||||
- **Module Reinstall Fix**: Prevented modules from showing as obsolete during reinstall
|
||||
|
||||
### 🏗️ Advanced Builder Features
|
||||
|
||||
**Workflow Builder Evolution:**
|
||||
|
||||
- **Continuable Workflows**: Create workflows with sophisticated branching and continuation logic
|
||||
- **Template LOD Options**: Level of Detail output options for flexible workflow generation
|
||||
- **Step-Based Architecture**: Complete conversion to granular step-file system
|
||||
- **Enhanced Creation Process**: Improved workflow creation with better template handling
|
||||
|
||||
**Module Builder Revolution:**
|
||||
|
||||
- **11-Step Module Creation**: Comprehensive step-by-step module generation process
|
||||
- **Production-Ready Templates**: Complete templates for agents, installers, and workflow plans
|
||||
- **Built-in Validation System**: Ensures module quality and BMad Core compliance
|
||||
- **Professional Documentation**: Auto-generated module documentation and structure
|
||||
|
||||
### 🚀 BMad Method (BMM) Enhancements
|
||||
|
||||
**Workflow Improvements:**
|
||||
|
||||
- **Brownfield PRD Support**: Enhanced PRD workflow for existing project integration
|
||||
- **Sprint Status Command**: New workflow for tracking development progress
|
||||
- **Step-Based Format**: Improved continue functionality across all workflows
|
||||
- **Quick-Spec-Flow Documentation**: Rapid development specification flows
|
||||
|
||||
**Documentation Revolution:**
|
||||
|
||||
- **Comprehensive Troubleshooting Guide**: 680-line detailed troubleshooting documentation
|
||||
- **Quality Check Integration**: Added markdownlint-cli2 for markdown quality assurance
|
||||
- **Enhanced Test Architecture**: Improved CI/CD templates and testing workflows
|
||||
|
||||
### 🌟 New Features & Integrations
|
||||
|
||||
**Kiro-Cli Installer:**
|
||||
|
||||
- **Intelligent Routing**: Smart routing to quick-dev workflow
|
||||
- **BMad Core Compliance**: Full compliance with BMad standards
|
||||
|
||||
**Discord Notifications:**
|
||||
|
||||
- **Compact Format**: Streamlined plain-text notifications
|
||||
- **Bug Fixes**: Resolved notification delivery issues
|
||||
|
||||
**Example Mental Wellness Module (MWM):**
|
||||
|
||||
- **Complete Module Example**: Demonstrates advanced module patterns
|
||||
- **Multiple Agents**: CBT Coach, Crisis Navigator, Meditation Guide, Wellness Companion
|
||||
- **Workflow Showcase**: Crisis support, daily check-in, meditation, journaling workflows
|
||||
|
||||
### 🐛 Bug Fixes & Optimizations
|
||||
|
||||
- Fixed version reading from package.json instead of hardcoded fallback
|
||||
- Removed hardcoded years from WebSearch queries
|
||||
- Removed broken build caching mechanism
|
||||
- Fixed hardcoded 'bmad' prefix from files-manifest.csv paths
|
||||
- Enhanced TTS injection summary with tracking and documentation
|
||||
- Fixed CI nvmrc configuration issues
|
||||
|
||||
### 📊 Statistics
|
||||
|
||||
- **335 files changed** with 17,161 additions and 8,204 deletions
|
||||
- **46 commits** since alpha.13
|
||||
|
||||
### ⚠️ Breaking Changes
|
||||
|
||||
1. **Removed agent-install Command**: Migrate to new custom.yaml installation system
|
||||
2. **Agent Sidecar Configuration**: Now requires explicit config instead of hardcoded paths
|
||||
|
||||
### 📦 New Dependencies
|
||||
|
||||
- `markdownlint-cli2: ^0.19.1` - Professional markdown linting
|
||||
|
||||
---
|
||||
|
||||
## [6.0.0-alpha.13]
|
||||
|
||||
**Release: November 30, 2025**
|
||||
|
||||
### 🏗️ Revolutionary Workflow Architecture
|
||||
|
||||
- **Step-File System**: Complete conversion to granular step-file architecture with dynamic menu generation
|
||||
- **Phase 4 Transformation**: Simplified architecture with sprint planning integration (Jira, Linear, Trello)
|
||||
- **Performance Improvements**: Eliminated time-based estimates, reduced file loading times
|
||||
- **Legacy Cleanup**: Removed all deprecated workflows for cleaner system
|
||||
|
||||
### 🤖 Agent System Revolution
|
||||
|
||||
- **Universal Custom Agent Support**: Extended to ALL IDEs including Antigravity and Rovo Dev
|
||||
- **Agent Creation Workflow**: Enhanced with better documentation and parameter clarity
|
||||
- **Multi-Source Discovery**: Agents now check multiple source locations for better discovery
|
||||
- **GitHub Migration**: Integration moved from chatmodes to agents folder
|
||||
|
||||
### 🧪 Testing Infrastructure
|
||||
|
||||
- **Playwright Utils Integration**: @seontechnologies/playwright-utils across all testing workflows
|
||||
- **TTS Injection System**: Complete text-to-speech integration for voice feedback
|
||||
- **Web Bundle Test Support**: Enabled web bundles for test environments
|
||||
|
||||
### ⚠️ Breaking Changes
|
||||
|
||||
1. **Legacy Workflows Removed**: Migrate to new stepwise sharded workflows
|
||||
2. **Phase 4 Restructured**: Update automation expecting old Phase 4 structure
|
||||
3. **Agent Compilation Required**: Custom agents must use new creation workflow
|
||||
|
||||
## [6.0.0-alpha.12]
|
||||
|
||||
**Release: November 19, 2025**
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- Added missing `yaml` dependency to fix `MODULE_NOT_FOUND` error when running `npx bmad-method install`
|
||||
|
||||
## [6.0.0-alpha.11]
|
||||
|
||||
**Release: November 18, 2025**
|
||||
|
||||
### 🚀 Agent Installation Revolution
|
||||
|
||||
- **bmad agent-install CLI**: Interactive agent installation with persona customization
|
||||
- **4 Reference Agents**: commit-poet, journal-keeper, security-engineer, trend-analyst
|
||||
- **Agent Compilation Engine**: YAML → XML with smart handler injection
|
||||
- **60 Communication Presets**: Pure communication styles for agent personas
|
||||
|
||||
### 📚 BMB Agent Builder Enhancement
|
||||
|
||||
- **Complete Documentation Suite**: 7 new guides for agent architecture and creation
|
||||
- **Expert Agent Sidecar Support**: Multi-file agents with templates and knowledge bases
|
||||
- **Unified Validation**: 160-line checklist shared across workflows
|
||||
- **BMM Agent Voices**: All 9 agents enhanced with distinct communication styles
|
||||
|
||||
### 🎯 Workflow Architecture Change
|
||||
|
||||
- **Epic Creation Moved**: Now in Phase 3 after Architecture for technical context
|
||||
- **Excalidraw Distribution**: Diagram capabilities moved to role-appropriate agents
|
||||
- **Google Antigravity IDE**: New installer with flattened file naming
|
||||
|
||||
### ⚠️ Breaking Changes
|
||||
|
||||
1. **Frame Expert Retired**: Use role-appropriate agents for diagrams
|
||||
2. **Agent Installation**: New bmad agent-install command replaces manual installation
|
||||
3. **Epic Creation Phase**: Moved from Phase 2 to Phase 3
|
||||
|
||||
## [6.0.0-alpha.10]
|
||||
|
||||
**Release: November 16, 2025**
|
||||
|
||||
- **Epics After Architecture**: Major milestone - technically-informed user stories created post-architecture
|
||||
- **Frame Expert Agent**: New Excalidraw specialist with 4 diagram workflows
|
||||
- **Time Estimate Prohibition**: Warnings across 33 workflows acknowledging AI's impact on development speed
|
||||
- **Platform-Specific Commands**: ide-only/web-only fields filter menu items by environment
|
||||
- **Agent Customization**: Enhanced memory/prompts merging via \*.customize.yaml files
|
||||
|
||||
## [6.0.0-alpha.9]
|
||||
|
||||
**Release: November 12, 2025**
|
||||
|
||||
- **Intelligent File Discovery**: discover_inputs with FULL_LOAD, SELECTIVE_LOAD, INDEX_GUIDED strategies
|
||||
- **3-Track System**: Simplified from 5 levels to 3 intuitive tracks
|
||||
- **Web Bundles Guide**: Comprehensive documentation with 60-80% cost savings strategies
|
||||
- **Unified Output Structure**: Eliminated .ephemeral/ folders - single configurable output folder
|
||||
- **BMGD Phase 4**: Added 10 game development workflows with BMM patterns
|
||||
|
||||
## [6.0.0-alpha.8]
|
||||
|
||||
**Release: November 9, 2025**
|
||||
|
||||
- **Configurable Installation**: Custom directories with .bmad hidden folder default
|
||||
- **Optimized Agent Loading**: CLI loads from installed files, eliminating duplication
|
||||
- **Party Mode Everywhere**: All web bundles include multi-agent collaboration
|
||||
- **Phase 4 Artifact Separation**: Stories, code reviews, sprint plans configurable outside docs
|
||||
- **Expanded Web Bundles**: All BMM, BMGD, CIS agents bundled with elicitation integration
|
||||
|
||||
## [6.0.0-alpha.7]
|
||||
|
||||
**Release: November 7, 2025**
|
||||
|
||||
- **Workflow Vendoring**: Web bundler performs automatic cross-module dependency vendoring
|
||||
- **BMGD Module Extraction**: Game development split into standalone 4-phase structure
|
||||
- **Enhanced Dependency Resolution**: Better handling of web_bundle: false workflows
|
||||
- **Advanced Elicitation Fix**: Added missing CSV files to workflow bundles
|
||||
- **Claude Code Fix**: Resolved README slash command installation regression
|
||||
|
||||
## [6.0.0-alpha.6]
|
||||
|
||||
**Release: November 4, 2025**
|
||||
|
||||
- **Critical Installer Fixes**: Fixed manifestPath error and option display issues
|
||||
- **Conditional Docs Installation**: Optional documentation to reduce production footprint
|
||||
- **Improved Installer UX**: Better formatting with descriptive labels and clearer feedback
|
||||
- **Issue Tracker Cleanup**: Closed 54 legacy v4 issues for focused v6 development
|
||||
- **Contributing Updates**: Removed references to non-existent branches
|
||||
|
||||
## [6.0.0-alpha.5]
|
||||
|
||||
**Release: November 4, 2025**
|
||||
|
||||
- **3-Track Scale System**: Simplified from 5 levels to 3 intuitive preference-driven tracks
|
||||
- **Elicitation Modernization**: Replaced legacy XML tags with explicit invoke-task pattern
|
||||
- **PM/UX Evolution**: Added November 2025 industry research on AI Agent PMs
|
||||
- **Brownfield Reality Check**: Rewrote Phase 0 with 4 real-world scenarios
|
||||
- **Documentation Accuracy**: All agent capabilities now match YAML source of truth
|
||||
|
||||
## [6.0.0-alpha.4]
|
||||
|
||||
**Release: November 2, 2025**
|
||||
|
||||
- **Documentation Hub**: Created 18 comprehensive guides (7000+ lines) with professional standards
|
||||
- **Paige Agent**: New technical documentation specialist across all BMM phases
|
||||
- **Quick Spec Flow**: Intelligent Level 0-1 planning with auto-stack detection
|
||||
- **Universal Shard-Doc**: Split large markdown documents with dual-strategy loading
|
||||
- **Intent-Driven Planning**: PRD and Product Brief transformed from template-filling to conversation
|
||||
|
||||
## [6.0.0-alpha.3]
|
||||
|
||||
**Release: October 2025**
|
||||
|
||||
- **Codex Installer**: Custom prompts in `.codex/prompts/` directory structure
|
||||
- **Bug Fixes**: Various installer and workflow improvements
|
||||
- **Documentation**: Initial documentation structure established
|
||||
|
||||
## [6.0.0-alpha.0]
|
||||
|
||||
**Release: September 28, 2025**
|
||||
|
||||
Initial alpha release of a major rewrite and overhaul improvement of past versions.
|
||||
|
||||
### Major New Features
|
||||
|
||||
- **Lean Core**: The core of BMad is very simple - common tasks that apply to any future module or agents, along with common agents that will be added to any modules - bmad-web-orchestrator and bmad-master.
|
||||
- **BMad Method**: The new BMad Method (AKA bmm) is a complete overhaul of the v4 method, now a fully scale adaptive rewrite. The workflow now scales from small enhancements to massive undertakings across multiple services or architectures, supporting a new vast array of project type, including a full subclass of game development specifics.
|
||||
- **BoMB**: The BMad Builder (AKA BoMB) now is able to fully automate creation and conversion of expansion packs from v5 to modules in v5 along with the net new ideation and brainstorming through implementation and testing of net new Modules, Workflows (were tasks and templates), Module Agents, and Standalone Personal Agents
|
||||
- **CIS**: The Creative Intelligence Suite (AKA CIS)
|
||||
|
||||
## [v5.0.0] - SKIPPED
|
||||
|
||||
**Note**: Version 5.0.0 was skipped due to NPX registry issues that corrupted the version. Development continues with v6.0.0-alpha.0.
|
||||
- **Lean Core**: Simple common tasks and agents (bmad-web-orchestrator, bmad-master)
|
||||
- **BMad Method (BMM)**: Complete scale-adaptive rewrite supporting projects from small enhancements to massive undertakings
|
||||
- **BoMB**: BMad Builder for creating and converting modules, workflows, and agents
|
||||
- **CIS**: Creative Intelligence Suite for ideation and creative workflows
|
||||
- **Game Development**: Full subclass of game-specific development patterns**Note**: Version 5.0.0 was skipped due to NPX registry issues that corrupted the version. Development continues with v6.0.0-alpha.0.
|
||||
|
||||
## [v4.43.0](https://github.com/bmad-code-org/BMAD-METHOD/releases/tag/v4.43.0)
|
||||
|
||||
|
||||
@@ -86,25 +86,13 @@ Please propose small, granular changes! For large or significant changes, discus
|
||||
|
||||
### Which Branch?
|
||||
|
||||
**Submit to `next` branch** (most contributions):
|
||||
|
||||
- ✨ New features or agents
|
||||
- 🎨 Enhancements to existing features
|
||||
- 📚 Documentation updates
|
||||
- ♻️ Code refactoring
|
||||
- ⚡ Performance improvements
|
||||
- 🧪 New tests
|
||||
- 🎁 New bmad modules
|
||||
|
||||
**Submit to `main` branch** (critical only):
|
||||
**Submit PR's to `main` branch** (critical only):
|
||||
|
||||
- 🚨 Critical bug fixes that break basic functionality
|
||||
- 🔒 Security patches
|
||||
- 📚 Fixing dangerously incorrect documentation
|
||||
- 🐛 Bugs preventing installation or basic usage
|
||||
|
||||
**When in doubt, submit to `next`**. We'd rather test changes thoroughly before they hit stable.
|
||||
|
||||
### PR Size Guidelines
|
||||
|
||||
- **Ideal PR size**: 200-400 lines of code changes
|
||||
@@ -256,6 +244,7 @@ Each commit should represent one logical change:
|
||||
- Web/planning agents can be larger with more complex tasks
|
||||
- Everything is natural language (markdown) - no code in core framework
|
||||
- Use bmad modules for domain-specific features
|
||||
- Validate YAML schemas with `npm run validate:schemas` before committing
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
|
||||
345
README.md
345
README.md
@@ -1,274 +1,217 @@
|
||||
# BMad CORE v6 Alpha
|
||||
# BMad Method & BMad Core
|
||||
|
||||
[](https://www.npmjs.com/package/bmad-method)
|
||||
[](https://www.npmjs.com/package/bmad-method)
|
||||
[](https://www.npmjs.com/package/bmad-method)
|
||||
[](LICENSE)
|
||||
[](https://nodejs.org)
|
||||
[](https://discord.gg/gk8jAdXWmj)
|
||||
|
||||
**[Subscribe to BMadCode on YouTube](https://www.youtube.com/@BMadCode?sub_confirmation=1)** and **[Join our amazing, active Discord Community](https://discord.gg/gk8jAdXWmj)**
|
||||
## AI-Driven Agile Development That Scales From Bug Fixes to Enterprise
|
||||
|
||||
⭐ **If you find this project helpful or useful, please give it a star in the upper right-hand corner!** It helps others discover BMad-CORE and you will be notified of updates!
|
||||
**Build More, Architect Dreams** (BMAD) with **21 specialized AI agents** across 4 official modules, and **50+ guided workflows** that adapt to your project's complexity—from quick bug fixes to enterprise platforms, and new step file workflows that allow for incredibly long workflows to stay on the rails longer than ever before!
|
||||
|
||||
## The Universal Human-AI Collaboration Platform
|
||||
Additionally - when we say 'Build More, Architect Dreams' - we mean it! The BMad Builder has landed, and now as of Alpha.15 is fully supported in the installation flow via NPX - custom stand along agents, workflows and the modules of your dreams! The community forge will soon open, endless possibility awaits!
|
||||
|
||||
📋 **[View v6 Alpha Open Items & Roadmap](./v6-open-items.md)** - Track what's being worked on and what's coming next!
|
||||
> **🚀 v6 is a MASSIVE upgrade from v4!** Complete architectural overhaul, scale-adaptive intelligence, visual workflows, and the powerful BMad Core framework. v4 users: this changes everything. [See what's new →](#whats-new-in-v6)
|
||||
|
||||
### ⚠️ Important Alpha Notes
|
||||
> **📌 v6 Alpha Status:** Near-beta quality with vastly improved stability. Documentation is being finalized. New videos coming soon to [BMadCode YouTube](https://www.youtube.com/@BMadCode).
|
||||
|
||||
**Note 0 - Frequent Updates:** Updates to the branch will be frequent. When pulling new updates, it's best to delete your node_modules folder and run `npm install` to ensure you have the latest package dependencies.
|
||||
## 🎯 Why BMad Method?
|
||||
|
||||
**Note 1 - Alpha Stability:** ALPHA is potentially an unstable release that could drastically change. While we hope that isn't the case, your testing during this time is much appreciated. Please help us out by filing issues or reaching out in Discord to discuss.
|
||||
Unlike generic AI coding assistants, BMad Method provides **structured, battle-tested workflows** powered by specialized agents who understand agile development. Each agent has deep domain expertise—from product management to architecture to testing—working together seamlessly.
|
||||
|
||||
**Note 2 - Work in Progress:** ALPHA is not complete - there are still many small and big features, polish, doc improvements, and more agents and workflows coming ahead of the beta release!
|
||||
**✨ Key Benefits:**
|
||||
|
||||
**Note 3 - IDE Required:** ALPHA Web Bundles and Agents are not fully working yet - you will need to use a good quality IDE to test many features, especially with the BMad Method module. However, the new agent builder and standalone agent feature can work great with weaker models - this will still evolve over the coming weeks.
|
||||
- **Scale-Adaptive Intelligence** - Automatically adjusts planning depth from bug fixes to enterprise systems
|
||||
- **Complete Development Lifecycle** - Analysis → Planning → Architecture → Implementation
|
||||
- **Specialized Expertise** - 19 agents with specific roles (PM, Architect, Developer, UX Designer, etc.)
|
||||
- **Proven Methodologies** - Built on agile best practices with AI amplification
|
||||
- **IDE Integration** - Works with Claude Code, Cursor, Windsurf, VS Code
|
||||
|
||||
**Note 4 - Contributing:** If you would like to contribute a PR, make sure you are creating your PR against the Alpha Branch and not Main.
|
||||
## 🏗️ The Power of BMad Core
|
||||
|
||||
## Alpha Installation and Testing
|
||||
**BMad Method** is actually a sophisticated module built on top of **BMad Core** (**C**ollaboration **O**ptimized **R**eflection **E**ngine). This revolutionary architecture means:
|
||||
|
||||
**Prerequisites**: [Node.js](https://nodejs.org) v20+ required
|
||||
- **BMad Core** provides the universal framework for human-AI collaboration
|
||||
- **BMad Method** leverages Core to deliver agile development workflows
|
||||
- **BMad Builder** lets YOU create custom modules as powerful as BMad Method itself
|
||||
|
||||
### Option A
|
||||
With **BMad Builder**, you can architect both simple agents and vastly complex domain-specific modules (legal, medical, finance, education, creative) that will soon be sharable in an **official community marketplace**. Imagine building and sharing your own specialized AI team!
|
||||
|
||||
Thank you Lum for the suggestion - here is a one-shot instruction to clone just the alpha branch and get started:
|
||||
## 📊 See It In Action
|
||||
|
||||
`git clone --branch v6-alpha --single-branch https://github.com/bmad-code-org/BMAD-METHOD` and then cd into this directory and run `npm install`.
|
||||
<p align="center">
|
||||
<img src="./src/modules/bmm/docs/images/workflow-method-greenfield.svg" alt="BMad Method Workflow" width="100%">
|
||||
</p>
|
||||
|
||||
### Option B
|
||||
<p align="center">
|
||||
<em>Complete BMad Method workflow showing all phases, agents, and decision points</em>
|
||||
</p>
|
||||
|
||||
Here are the more detailed step-by-step instructions:
|
||||
## 🚀 Get Started in 3 Steps
|
||||
|
||||
Clone the repo with either:
|
||||
### 1. Install BMad Method
|
||||
|
||||
- `gh repo clone bmad-code-org/BMAD-METHOD`
|
||||
- `git clone https://github.com/bmad-code-org/BMAD-METHOD.git`
|
||||
- `git@github.com:bmad-code-org/BMAD-METHOD.git`
|
||||
and then cd into the BMAD-METHOD folder.
|
||||
```bash
|
||||
# Install v6 Alpha (recommended)
|
||||
npx bmad-method@alpha install
|
||||
|
||||
You will then need to change to the branch as that will have cloned main, so type:
|
||||
- `git checkout v6-alpha`
|
||||
- type `git status` and you should see:
|
||||
`On branch v6-alpha. Your branch is up to date with 'origin/v6-alpha'.`
|
||||
# Or stable v4 for production
|
||||
npx bmad-method install
|
||||
```
|
||||
|
||||
### Node Modules install
|
||||
### 2. Initialize Your Project
|
||||
|
||||
Now you must install the node_modules with `npm install` - once complete, you should see you have a `node_modules` folder at the root of your project. (BMAD-METHOD/node_modules)
|
||||
Load any agent in your IDE and run:
|
||||
|
||||
### Install to your new or existing project folder
|
||||
```
|
||||
*workflow-init
|
||||
```
|
||||
|
||||
Now you can run `npm run install:bmad` and follow the installer questions.
|
||||
This analyzes your project and recommends the right workflow track.
|
||||
|
||||
NOTE: One of the first questions will ask for a destination - do not accept the default, you want to enter the full path to a new or existing folder of where your project is or will be. If you choose a net new folder, you will have to confirm you want the installer to create the directory for you.
|
||||
### 3. Choose Your Track
|
||||
|
||||
The Core Module will always be installed. The default initial module selection will be BMM for all the core BMad Method functionality and flow from brainstorming through software development.
|
||||
BMad Method adapts to your needs with three intelligent tracks:
|
||||
|
||||
**Note on installation:** All installs now go to a single folder called `bmad` instead of multiple folders. When you install a module, you may still see folders other than the one you selected in the destination/bmad folder.
|
||||
| Track | Use For | Planning | Time to Start |
|
||||
| ------------------ | ------------------------- | ----------------------- | ------------- |
|
||||
| **⚡ Quick Flow** | Bug fixes, small features | Tech spec only | < 5 minutes |
|
||||
| **📋 BMad Method** | Products, platforms | PRD + Architecture + UX | < 15 minutes |
|
||||
| **🏢 Enterprise** | Compliance, scale | Full governance suite | < 30 minutes |
|
||||
|
||||
This is intentional and not a bug - it will copy over to those other folders only the minimum that is needed because it is shared across the modules. For example, during Alpha to test this feature, BMM relies on the brainstorming feature of the CIS and some items from CORE - so even if you only select BMM, you will still see bmad/core and bmad/cis along with bmad/bmm.
|
||||
> **Not sure?** Run `*workflow-init` and let BMad analyze your project goal.
|
||||
|
||||
## What is the new BMad Core
|
||||
## 🔄 How It Works: 4-Phase Methodology
|
||||
|
||||
BMad-CORE (Collaboration Optimized Reflection Engine) is a framework that brings out the best in you through AI agents designed to enhance human thinking rather than replace it.
|
||||
BMad Method guides you through a proven development lifecycle:
|
||||
|
||||
Unlike traditional AI tools that do the work for you, BMad-CORE's specialized agents guide you through the facilitation of optimized collaborative reflective workflows to unlock your full potential across any domain. This magic powers the BMad Method, which is just one of the many modules that exist or are coming soon.
|
||||
1. **📊 Analysis** (Optional) - Brainstorm, research, and explore solutions
|
||||
2. **📝 Planning** - Create PRDs, tech specs, or game design documents
|
||||
3. **🏗️ Solutioning** - Design architecture, UX, and technical approach
|
||||
4. **⚡ Implementation** - Story-driven development with continuous validation
|
||||
|
||||
## What Makes BMad-Core Different
|
||||
Each phase has specialized workflows and agents working together to deliver exceptional results.
|
||||
|
||||
**Traditional AI**: Does the thinking for you, providing average, bland answers and solutions
|
||||
**BMad-CORE**: Brings out the best thinking in you and the AI through guided collaboration, elicitation, and facilitation
|
||||
## 🤖 Meet Your Team
|
||||
|
||||
### Core Philosophy: Human Amplification, Not Replacement
|
||||
**12 Specialized Agents** working in concert:
|
||||
|
||||
BMad-Core's AI agents act as expert coaches, mentors, and collaborators who:
|
||||
| Development | Architecture | Product | Leadership |
|
||||
| ----------- | -------------- | ------------- | -------------- |
|
||||
| Developer | Architect | PM | Scrum Master |
|
||||
| UX Designer | Test Architect | Analyst | BMad Master |
|
||||
| Tech Writer | Game Architect | Game Designer | Game Developer |
|
||||
|
||||
- Ask the right questions to stimulate your thinking
|
||||
- Provide structured frameworks for complex problems
|
||||
- Guide you through reflective processes to discover insights
|
||||
- Help you develop mastery in your chosen domains
|
||||
- Amplify your natural abilities rather than substituting for them
|
||||
**Test Architect** integrates with `@seontechnologies/playwright-utils` for production-ready fixture-based utilities.
|
||||
|
||||
## The Collaboration Optimized Reflection Engine
|
||||
Each agent brings deep expertise and can be customized to match your team's style.
|
||||
|
||||
At the heart of BMad-Core lies the **C.O.R.E.** system:
|
||||
## 📦 What's Included
|
||||
|
||||
- **Collaboration**: Human-AI partnership where both contribute unique strengths
|
||||
- **Optimized**: The collaborative process has been refined for maximum effectiveness
|
||||
- **Reflection**: Guided thinking that helps you discover better solutions and insights
|
||||
- **Engine**: The powerful framework that orchestrates specialized agents and workflows
|
||||
### Core Modules
|
||||
|
||||
## Universal Domain Coverage Through Modules
|
||||
- **BMad Method (BMM)** - Complete agile development framework
|
||||
- 12 specialized agents
|
||||
- 34 workflows across 4 phases
|
||||
- Scale-adaptive planning
|
||||
- [→ Documentation Hub](./src/modules/bmm/docs/README.md)
|
||||
|
||||
BMad-CORE works in ANY domain through specialized modules (previously called expansion packs)!
|
||||
- **BMad Builder (BMB)** - Create custom agents and workflows
|
||||
- Build anything from simple agents to complex modules
|
||||
- Create domain-specific solutions (legal, medical, finance, education)
|
||||
- Share your creations in the upcoming community marketplace
|
||||
- [→ Builder Guide](./src/modules/bmb/README.md)
|
||||
|
||||
### Available Modules with Alpha Release
|
||||
- **Creative Intelligence Suite (CIS)** - Innovation & problem-solving
|
||||
- Brainstorming, design thinking, storytelling
|
||||
- 5 creative facilitation workflows
|
||||
- [→ Creative Workflows](./src/modules/cis/README.md)
|
||||
|
||||
- **BMad Core (core)**: Included and used to power every current and future module; includes a master orchestrator for the local environment and one for the web bundles used with ChatGPT or Gemini Gems, for example.
|
||||
- **BMad Method (bmm)**: Agile AI-driven software development - the classic that started it all and is still the best - but with v6, massively improved thanks to a rebuild from the ground up built on the new powerful BMad-CORE engine. The BMad Method has also been expanded to use a new "Scale Adaptive Workflow Engine"™.
|
||||
- **BMad BoMB (bmb)**: The BMad Builder is your Custom Agent, Workflow, and Module authoring tool - it's now easier than ever to customize existing modules or create whatever you can imagine as a standalone module.
|
||||
- **Creative Intelligence Suite (cis)**: Unlock innovation, problem-solving, and creative thinking! Brainstorming that was part of the BMad Method in the past is now part of this standalone module along with other workflows. The power of BMad modules still allows modules to borrow from each other - so the CIS, while standalone, also powers the brainstorming abilities for certain agents within the BMad Method!
|
||||
### Key Features
|
||||
|
||||
## What's New in V6-ALPHA
|
||||
- **🎨 Customizable Agents** - Modify personalities, expertise, and communication styles
|
||||
- **🌐 Multi-Language Support** - Separate settings for communication and code output
|
||||
- **📄 Document Sharding** - 90% token savings for large projects
|
||||
- **🔄 Update-Safe** - Your customizations persist through updates
|
||||
- **🚀 Web Bundles** - Use in ChatGPT, Claude Projects, or Gemini Gems
|
||||
|
||||
Stability, customizability, installation Q&A, massive prompt improvements.
|
||||
## 📚 Documentation
|
||||
|
||||
Everything has been rewritten from the ground up with best practices and advances learned over previous versions, standardizing on prompt format techniques. There is much more core usage of XML or XML-type tags within markdown, with many conventions and standards that drastically increase agent adherence.
|
||||
### Quick Links
|
||||
|
||||
**Customizability** is a key theme of this new version. All agents are now customizable by modifying a file under the installation bmad/\_cfg/agents. Every agent installed will generate an agent file that you can customize.
|
||||
- **[Quick Start Guide](./src/modules/bmm/docs/quick-start.md)** - 15-minute introduction
|
||||
- **[Complete BMM Documentation](./src/modules/bmm/docs/README.md)** - All guides and references
|
||||
- **[Agent Customization](./docs/agent-customization-guide.md)** - Personalize your agents
|
||||
- **[All Documentation](./docs/index.md)** - Complete documentation index
|
||||
|
||||
The nice thing about this is when agents change or update in future versions, your customizations in these sidecar files will never be lost! You can change the name, their personas, how they talk, what they call you, and most exciting - what language they communicate in!
|
||||
### For v4 Users
|
||||
|
||||
The **BMad installer** is 100% new from the ground up. Along the way you will add:
|
||||
- **[v4 Documentation](https://github.com/bmad-code-org/BMAD-METHOD/tree/V4)**
|
||||
- **[v4 to v6 Upgrade Guide](./docs/v4-to-v6-upgrade.md)**
|
||||
|
||||
- Your name (what the agents will call you and how you'll author documents)
|
||||
- What language you want the agents to communicate in
|
||||
- Module-specific customization options
|
||||
## 💬 Community & Support
|
||||
|
||||
When you install, a consolidated agent party is created so now when you use party-mode in the IDE, it is super efficient for the agent running the party to simulate all installed agents. Post alpha release, this will manifest itself in many interesting ways in time for beta - but for now, have fun with party mode and epic sprint retrospectives!
|
||||
- **[Discord Community](https://discord.gg/gk8jAdXWmj)** - Get help, share projects
|
||||
- **[GitHub Issues](https://github.com/bmad-code-org/BMAD-METHOD/issues)** - Report bugs, request features
|
||||
- **[YouTube Channel](https://www.youtube.com/@BMadCode)** - Video tutorials and demos
|
||||
- **[Web Bundles](https://bmad-code-org.github.io/bmad-bundles/)** - Pre-built agent bundles
|
||||
- **[Code of Conduct](.github/CODE_OF_CONDUCT.md)** - Community guidelines
|
||||
|
||||
Speaking of installation - everything will now install to a single core bmad folder. No more separate root folders for every module! Instead, all will be contained within bmad/.
|
||||
## 🛠️ Development
|
||||
|
||||
All IDE selections now support the option to add special install functionality per module.
|
||||
For contributors working on the BMad codebase:
|
||||
|
||||
For example, with the alpha release, if you select the BMad Method and Claude Code, you will have an option to install pre-created Claude sub-agents. Not only do they get installed, but certain workflows will have injected into their instructions key indicators to the agent when to activate the sub-agents, removing some non-determinism.
|
||||
```bash
|
||||
# Run all quality checks
|
||||
npm test
|
||||
|
||||
The sub-agent experience is still undergoing some work, so install them if you choose, and remove them if they become a pain.
|
||||
# Development commands
|
||||
npm run lint:fix # Fix code style
|
||||
npm run format:fix # Auto-format code
|
||||
npm run bundle # Build web bundles
|
||||
```
|
||||
|
||||
When you read about the BoMB below, it will link to more information about various features in this new evolution of BMad Code. One of the exciting features is the new agent types - there are 3 now! The most exciting are the new standalone tiny agents that you can easily generate and deploy free from any module - specialized for your exact needs.
|
||||
See [CONTRIBUTING.md](CONTRIBUTING.md) for full development guidelines.
|
||||
|
||||
### BMad Method
|
||||
## What's New in v6
|
||||
|
||||
The BMad Method is significantly transforming and yet more powerful than ever. **Scale Adaptive** is a new term that means when you start the workflow to create a PRD or a GDD (or a simple tech-spec in the case of simple tasks), you will first answer some questions about the scope of the project, new vs. existing codebase and its state, and other questions. This will trigger a leveling of the effort from 0-4, and based on this scale adaptation, it will guide the workflow in different directions.
|
||||
**v6 represents a complete architectural revolution from v4:**
|
||||
|
||||
Right now, this is still a bit alpha feeling and disjointed, but before beta it will be tied together through all four workflow phases with a potential single orchestration if you choose - or you can still jump right in, especially for simple tasks that just need a simple tech-spec and then right off to development.
|
||||
### 🚀 Major Upgrades
|
||||
|
||||
To test and experience this now, here is the new main flow for BMM v6 alpha:
|
||||
- **BMad Core Framework** - Modular architecture enabling custom domain solutions
|
||||
- **Scale-Adaptive Intelligence** - Automatic adjustment from bug fixes to enterprise
|
||||
- **Visual Workflows** - Beautiful SVG diagrams showing complete methodology
|
||||
- **BMad Builder Module** - Create and share your own AI agent teams
|
||||
- **50+ Workflows** - Up from 20 in v4, covering every development scenario
|
||||
- **19 Specialized Agents** - Enhanced with customizable personalities and expertise
|
||||
- **Update-Safe Customization** - Your configs persist through all updates
|
||||
- **Web Bundles** - Use agents in ChatGPT, Claude, and Gemini
|
||||
- **Multi-Language Support** - Separate settings for communication and code
|
||||
- **Document Sharding** - 90% token savings for large projects
|
||||
|
||||
(Docs will be all linked in soon with new user guide and workflow diagrams coming this week)
|
||||
### 🔄 For v4 Users
|
||||
|
||||
**NOTE:** Game Development expansion packs are all being rolled into the official BMad Method module - along with any more game engine platforms being added. Additionally, game development planning for the GDD is not only scale adaptive, but also adapts to the type of game you are making - so you can plan all that is needed for your dream game!
|
||||
- **[Comprehensive Upgrade Guide](./docs/v4-to-v6-upgrade.md)** - Step-by-step migration
|
||||
- **[v4 Documentation Archive](https://github.com/bmad-code-org/BMAD-METHOD/tree/V4)** - Legacy reference
|
||||
- Backwards compatibility where possible
|
||||
- Smooth migration path with installer detection
|
||||
|
||||
#### **PHASE 1 - Analysis**
|
||||
## 📄 License
|
||||
|
||||
**Analyst:**
|
||||
MIT License - See [LICENSE](LICENSE) for details.
|
||||
|
||||
- `brainstorm-project`
|
||||
- `research` (market research, deep research, deep research prompt generation)
|
||||
- `product-brief`
|
||||
|
||||
**Game Designer (Optional):**
|
||||
|
||||
- `brainstorm-game`
|
||||
- `game-brief`
|
||||
- `research`
|
||||
**Trademarks:** BMAD™ and BMAD-METHOD™ are trademarks of BMad Code, LLC.
|
||||
|
||||
---
|
||||
|
||||
#### **PHASE 2 - Planning**
|
||||
<p align="center">
|
||||
<a href="https://github.com/bmad-code-org/BMAD-METHOD/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=bmad-code-org/BMAD-METHOD" alt="Contributors">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
**PM:**
|
||||
|
||||
- `plan-project`
|
||||
|
||||
**Game Designer:**
|
||||
|
||||
- `plan-game` (calls the same plan-project workflow, but input docs or your answers should drive it towards GDD)
|
||||
|
||||
---
|
||||
|
||||
#### **PHASE 3 - Solutioning**
|
||||
|
||||
**Architect or Game Architect:**
|
||||
|
||||
Just like the scale-adjusted planning, architecture is the same. No more document sharding though!
|
||||
|
||||
Now in the IDE you create an architecture that adapts to the type of project you are working on - based on the inputs from your PRD, it will adapt the sections it includes to your project type. No longer is the architecture biased just towards full stack or back-end APIs. There are many more options now, from embedded hardware to mobile to many other options - with many more coming with beta.
|
||||
|
||||
- `solution-architecture`
|
||||
|
||||
> **Note:** Testing, DevOps, or security concerns beyond the basics are generally not included in the architecture. If it is more complicated, especially for complex massive undertakings, you will be suggested to pull in specific agents to help with those areas. _(Not released with alpha.0, coming soon)_
|
||||
|
||||
Once the full architecture is complete, you can still use the PO to run the checklist to validate the epics and stories are still correct - although the architect should also be keeping them updated as needed (needs some tuning during alpha). Once done, then it's time to create the tech spec for your first epic.
|
||||
|
||||
- `tech-spec`
|
||||
|
||||
The tech spec pulls all technical information from all planning thus far, along with any further research needed from the web to produce an **Epic Tech Spec** - each epic will have one. This is going to make the SM even more capable of finding the info it needs for each story when we get to phase 4!
|
||||
|
||||
---
|
||||
|
||||
#### **PHASE 4 - Implementation**
|
||||
|
||||
And now here we are at phase 4 - where we, just like in BMad Method of yore, use the SM and the Dev Agent. No more QA agent here though; the dev now has a dev task and also a senior dev agent review task.
|
||||
|
||||
**Scrum Master (SM) Tasks:**
|
||||
|
||||
Before the dev starts, the SM will:
|
||||
|
||||
1. `create-story`
|
||||
2. `story-context` _(NEW!)_
|
||||
|
||||
**Story-context** is a game-changing new feature beyond what we had with create-story in the past. Create-story still pulls in all the info it needs from the tech-spec and elsewhere as needed (including previously completed stories), but the generation of the new story-context takes it to a whole new level.
|
||||
|
||||
This real-time prep means no more generic devLoadAlways list of story files. During the alpha phase, we will be tuning what goes into this context, but this is going to supercharge and specialize your dev to the story at hand!
|
||||
|
||||
---
|
||||
|
||||
> **🎉 There are many other exciting changes throughout for you to discover during the alpha BMad Method module!**
|
||||
|
||||
## CIS
|
||||
|
||||
The CIS has 5 agents to try out, each with their own workflow! This is a new module that will drastically change over time.
|
||||
|
||||
- [CIS Readme](./src/modules/cis/readme.md)
|
||||
|
||||
### BoMB: BMad Builder
|
||||
|
||||
#### Agent Docs
|
||||
|
||||
- [Agent Architecture](src/modules/bmb/workflows/create-agent/agent-architecture)
|
||||
- [Agent command patterns](src/modules/bmb/workflows/create-agent/agent-command-patterns.md)
|
||||
- [Agent Types](src/modules/bmb/workflows/create-agent/agent-types.md)
|
||||
- [Communication Styles](src/modules/bmb/workflows/create-agent/communication-styles.md)
|
||||
|
||||
#### Modules
|
||||
|
||||
Modules are what we used to call Expansion Packs. A new repository to contribute modules is coming very soon with the beta release where you can start contributing modules - we just want to make sure the final format and conventions are stable. A module will generally be made up of agents and workflows. Tasks are still also possible, but generally should be avoided in favor of more flexible workflows. Workflows can have sub-workflows and soon will support a standardized multi-workflow orchestration pattern that the BMad master will be able to guide users through.
|
||||
|
||||
- [Module Structure](src/modules/bmb/workflows/create-module/module-structure.md)
|
||||
|
||||
#### Workflows
|
||||
|
||||
What used to be tasks and create-doc templates are now all workflows! Simpler, yet more powerful and support many ways of achieving many different outcomes! A lot more documentation will be coming. This document is used by the agent builder to generate workflows or convert to workflows, but there is a lot more than what we have documented here in this alpha doc.
|
||||
|
||||
- [Workflow Creation Guide](src/modules/bmb/workflows/create-workflow/workflow-creation-guide)
|
||||
|
||||
### Installer Changes
|
||||
|
||||
- [IDE Injections](docs/installers-bundlers/ide-injections)
|
||||
- [Installers Modules Platforms References](docs/installers-bundlers/installers-modules-platforms-reference)
|
||||
- [Web Bundler Usage](docs/installers-bundlers/web-bundler-usage)
|
||||
- [Claude Code Sub Module BMM Installer](src/modules/bmm/sub-modules/claude-code/readme.md)
|
||||
|
||||
## Support & Community
|
||||
|
||||
- 💬 [Discord Community](https://discord.gg/gk8jAdXWmj) - Get help, share ideas, collaborate
|
||||
- 🐛 [Issue Tracker](https://github.com/bmad-code-org/BMAD-METHOD/issues) - Bug reports and feature requests
|
||||
- 💬 [Discussions](https://github.com/bmad-code-org/BMAD-METHOD/discussions) - Community conversations
|
||||
|
||||
## Contributing
|
||||
|
||||
We welcome contributions and new module development!
|
||||
|
||||
📋 **[Read CONTRIBUTING.md](CONTRIBUTING.md)** - Complete contribution guide
|
||||
|
||||
## License
|
||||
|
||||
MIT License - see [LICENSE](LICENSE) for details.
|
||||
|
||||
## Trademark Notice
|
||||
|
||||
BMAD™ and BMAD-METHOD™ are trademarks of BMad Code, LLC. All rights reserved.
|
||||
|
||||
[](https://github.com/bmad-code-org/BMAD-METHOD/graphs/contributors)
|
||||
|
||||
<sub>Built with ❤️ for the human-AI collaboration community</sub>
|
||||
<p align="center">
|
||||
<sub>Built with ❤️ for the human-AI collaboration community</sub>
|
||||
</p>
|
||||
|
||||
BIN
bmad-method-6.0.0-alpha.14.tgz
Normal file
BIN
bmad-method-6.0.0-alpha.14.tgz
Normal file
Binary file not shown.
95
docs/BUNDLE_DISTRIBUTION_SETUP.md
Normal file
95
docs/BUNDLE_DISTRIBUTION_SETUP.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# Bundle Distribution Setup (For Maintainers)
|
||||
|
||||
**Audience:** BMAD maintainers setting up bundle auto-publishing
|
||||
|
||||
---
|
||||
|
||||
## One-Time Setup
|
||||
|
||||
Run these commands once to enable auto-publishing:
|
||||
|
||||
```bash
|
||||
# 1. Create bmad-bundles repo
|
||||
gh repo create bmad-code-org/bmad-bundles --public --description "BMAD Web Bundles"
|
||||
|
||||
# 2. Ensure `main` exists (GitHub Pages API requires a source branch)
|
||||
git clone git@github.com:bmad-code-org/bmad-bundles.git
|
||||
cd bmad-bundles
|
||||
printf '# bmad-bundles\n\nStatic bundles published from BMAD-METHOD.\n' > README.md
|
||||
git add README.md
|
||||
git commit -m "Initial commit"
|
||||
git push origin main
|
||||
cd -
|
||||
|
||||
# 3. Enable GitHub Pages (API replacement for removed --enable-pages flag)
|
||||
gh api repos/bmad-code-org/bmad-bundles/pages --method POST -f source[branch]=main -f source[path]=/
|
||||
# (Optional) confirm status
|
||||
gh api repos/bmad-code-org/bmad-bundles/pages --jq '{status,source}'
|
||||
|
||||
# 4. Create GitHub PAT and add as secret
|
||||
# Go to: https://github.com/settings/tokens/new
|
||||
# Scopes: repo (full control)
|
||||
# Name: bmad-bundles-ci
|
||||
# Then add as secret:
|
||||
gh secret set BUNDLES_PAT --repo bmad-code-org/BMAD-METHOD
|
||||
# (paste PAT when prompted)
|
||||
```
|
||||
|
||||
If the Pages POST returns `409`, the site already exists. If it returns `422` about `main` missing, redo step 2 to push the initial commit.
|
||||
|
||||
**Done.** Bundles auto-publish on every main merge.
|
||||
|
||||
---
|
||||
|
||||
## How It Works
|
||||
|
||||
**On main merge:**
|
||||
|
||||
- `.github/workflows/bundle-latest.yaml` runs
|
||||
- Publishes to: `https://bmad-code-org.github.io/bmad-bundles/`
|
||||
|
||||
**On release:**
|
||||
|
||||
- `npm run release:patch` runs `.github/workflows/manual-release.yaml`
|
||||
- Attaches bundles to: `https://github.com/bmad-code-org/BMAD-METHOD/releases/latest`
|
||||
|
||||
---
|
||||
|
||||
## Testing
|
||||
|
||||
```bash
|
||||
# Test latest channel
|
||||
git push origin main
|
||||
# Wait 2 min, then: curl https://bmad-code-org.github.io/bmad-bundles/
|
||||
|
||||
# Test stable channel
|
||||
npm run release:patch
|
||||
# Check: gh release view
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**"Permission denied" or auth errors**
|
||||
|
||||
```bash
|
||||
# Verify PAT secret exists
|
||||
gh secret list --repo bmad-code-org/BMAD-METHOD | grep BUNDLES_PAT
|
||||
|
||||
# If missing, recreate PAT and add secret:
|
||||
gh secret set BUNDLES_PAT --repo bmad-code-org/BMAD-METHOD
|
||||
```
|
||||
|
||||
**GitHub Pages not updating / need to re-check config**
|
||||
|
||||
```bash
|
||||
gh api repos/bmad-code-org/bmad-bundles/pages --jq '{status,source,html_url}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Distribution URLs
|
||||
|
||||
**Stable:** `https://github.com/bmad-code-org/BMAD-METHOD/releases/latest`
|
||||
**Latest:** `https://bmad-code-org.github.io/bmad-bundles/`
|
||||
208
docs/agent-customization-guide.md
Normal file
208
docs/agent-customization-guide.md
Normal file
@@ -0,0 +1,208 @@
|
||||
# Agent Customization Guide
|
||||
|
||||
Customize BMad agents without modifying core files. All customizations persist through updates.
|
||||
|
||||
## Quick Start
|
||||
|
||||
**1. Locate Customization Files**
|
||||
|
||||
After installation, find agent customization files in:
|
||||
|
||||
```
|
||||
{bmad_folder}/_cfg/agents/
|
||||
├── core-bmad-master.customize.yaml
|
||||
├── bmm-dev.customize.yaml
|
||||
├── bmm-pm.customize.yaml
|
||||
└── ... (one file per installed agent)
|
||||
```
|
||||
|
||||
**2. Edit Any Agent**
|
||||
|
||||
Open the `.customize.yaml` file for the agent you want to modify. All sections are optional - customize only what you need.
|
||||
|
||||
**3. Rebuild the Agent**
|
||||
|
||||
After editing, IT IS CRITICAL to rebuild the agent to apply changes:
|
||||
|
||||
```bash
|
||||
npx bmad-method@alpha install # and then select option to compile all agents
|
||||
# OR for individual agent only
|
||||
npx bmad-method@alpha build <agent-name>
|
||||
|
||||
# Examples:
|
||||
npx bmad-method@alpha build bmm-dev
|
||||
npx bmad-method@alpha build core-bmad-master
|
||||
npx bmad-method@alpha build bmm-pm
|
||||
```
|
||||
|
||||
## What You Can Customize
|
||||
|
||||
### Agent Name
|
||||
|
||||
Change how the agent introduces itself:
|
||||
|
||||
```yaml
|
||||
agent:
|
||||
metadata:
|
||||
name: 'Spongebob' # Default: "Amelia"
|
||||
```
|
||||
|
||||
### Persona
|
||||
|
||||
Replace the agent's personality, role, and communication style:
|
||||
|
||||
```yaml
|
||||
persona:
|
||||
role: 'Senior Full-Stack Engineer'
|
||||
identity: 'Lives in a pineapple (under the sea)'
|
||||
communication_style: 'Spongebob'
|
||||
principles:
|
||||
- 'Never Nester, Spongebob Devs hate nesting more than 2 levels deep'
|
||||
- 'Favor composition over inheritance'
|
||||
```
|
||||
|
||||
**Note:** The persona section replaces the entire default persona (not merged).
|
||||
|
||||
### Memories
|
||||
|
||||
Add persistent context the agent will always remember:
|
||||
|
||||
```yaml
|
||||
memories:
|
||||
- 'Works at Krusty Krab'
|
||||
- 'Favorite Celebrity: David Hasslehoff'
|
||||
- 'Learned in Epic 1 that its not cool to just pretend that tests have passed'
|
||||
```
|
||||
|
||||
### Custom Menu Items
|
||||
|
||||
Add your own workflows to the agent's menu:
|
||||
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: my-workflow
|
||||
workflow: '{project-root}/custom/my-workflow.yaml'
|
||||
description: My custom workflow
|
||||
- trigger: deploy
|
||||
action: '#deploy-prompt'
|
||||
description: Deploy to production
|
||||
```
|
||||
|
||||
**Don't include:** `*` prefix or `help`/`exit` items - these are auto-injected.
|
||||
|
||||
### Critical Actions
|
||||
|
||||
Add instructions that execute before the agent starts:
|
||||
|
||||
```yaml
|
||||
critical_actions:
|
||||
- 'Always check git status before making changes'
|
||||
- 'Use conventional commit messages'
|
||||
```
|
||||
|
||||
### Custom Prompts
|
||||
|
||||
Define reusable prompts for `action="#id"` menu handlers:
|
||||
|
||||
```yaml
|
||||
prompts:
|
||||
- id: deploy-prompt
|
||||
content: |
|
||||
Deploy the current branch to production:
|
||||
1. Run all tests
|
||||
2. Build the project
|
||||
3. Execute deployment script
|
||||
```
|
||||
|
||||
## Real-World Examples
|
||||
|
||||
**Example 1: Customize Developer Agent for TDD**
|
||||
|
||||
```yaml
|
||||
# {bmad_folder}/_cfg/agents/bmm-dev.customize.yaml
|
||||
agent:
|
||||
metadata:
|
||||
name: 'TDD Developer'
|
||||
|
||||
memories:
|
||||
- 'Always write tests before implementation'
|
||||
- 'Project uses Jest and React Testing Library'
|
||||
|
||||
critical_actions:
|
||||
- 'Review test coverage before committing'
|
||||
```
|
||||
|
||||
**Example 2: Add Custom Deployment Workflow**
|
||||
|
||||
```yaml
|
||||
# {bmad_folder}/_cfg/agents/bmm-dev.customize.yaml
|
||||
menu:
|
||||
- trigger: deploy-staging
|
||||
workflow: '{project-root}/{bmad_folder}/deploy-staging.yaml'
|
||||
description: Deploy to staging environment
|
||||
- trigger: deploy-prod
|
||||
workflow: '{project-root}/{bmad_folder}/deploy-prod.yaml'
|
||||
description: Deploy to production (with approval)
|
||||
```
|
||||
|
||||
**Example 3: Multilingual Product Manager**
|
||||
|
||||
```yaml
|
||||
# {bmad_folder}/_cfg/agents/bmm-pm.customize.yaml
|
||||
persona:
|
||||
role: 'Bilingual Product Manager'
|
||||
identity: 'Expert in US and LATAM markets'
|
||||
communication_style: 'Clear, strategic, with cultural awareness'
|
||||
principles:
|
||||
- 'Consider localization from day one'
|
||||
- 'Balance business goals with user needs'
|
||||
|
||||
memories:
|
||||
- 'User speaks English and Spanish'
|
||||
- 'Target markets: US and Latin America'
|
||||
```
|
||||
|
||||
## Tips
|
||||
|
||||
- **Start Small:** Customize one section at a time and rebuild to test
|
||||
- **Backup:** Copy customization files before major changes
|
||||
- **Update-Safe:** Your customizations in `_cfg/` survive all BMad updates
|
||||
- **Per-Project:** Customization files are per-project, not global
|
||||
- **Version Control:** Consider committing `_cfg/` to share customizations with your team
|
||||
|
||||
## Module vs. Global Config
|
||||
|
||||
**Module-Level (Recommended):**
|
||||
|
||||
- Customize agents per-project in `{bmad_folder}/_cfg/agents/`
|
||||
- Different projects can have different agent behaviors
|
||||
|
||||
**Global Config (Coming Soon):**
|
||||
|
||||
- Set defaults that apply across all projects
|
||||
- Override with project-specific customizations
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Changes not appearing?**
|
||||
|
||||
- Make sure you ran `npx bmad-method build <agent-name>` after editing
|
||||
- Check YAML syntax is valid (indentation matters!)
|
||||
- Verify the agent name matches the file name pattern
|
||||
|
||||
**Agent not loading?**
|
||||
|
||||
- Check for YAML syntax errors
|
||||
- Ensure required fields aren't left empty if you uncommented them
|
||||
- Try reverting to the template and rebuilding
|
||||
|
||||
**Need to reset?**
|
||||
|
||||
- Delete the `.customize.yaml` file
|
||||
- Run `npx bmad-method build <agent-name>` to regenerate defaults
|
||||
|
||||
## Next Steps
|
||||
|
||||
- **[BMM Agents Guide](../src/modules/bmm/docs/agents-guide.md)** - Learn about all 12 BMad Method agents
|
||||
- **[BMB Create Agent Workflow](../src/modules/bmb/workflows/create-agent/README.md)** - Build completely custom agents
|
||||
- **[BMM Complete Documentation](../src/modules/bmm/docs/README.md)** - Full BMad Method reference
|
||||
@@ -1,19 +0,0 @@
|
||||
# Codebase Flattener Tool
|
||||
|
||||
BMad-Core includes a powerful codebase flattener for preparing existing projects to the web for AI Analysis
|
||||
|
||||
```bash
|
||||
# Basic usage - creates flattened-codebase.xml
|
||||
npx bmad-method flatten
|
||||
|
||||
# Custom input/output
|
||||
npx bmad-method flatten --input /path/to/source --output project.xml
|
||||
```
|
||||
|
||||
Features:
|
||||
|
||||
- AI-optimized XML output format
|
||||
- Smart filtering with .gitignore respect
|
||||
- Binary file detection and exclusion
|
||||
- Real-time progress tracking
|
||||
- Comprehensive completion statistics
|
||||
245
docs/custom-content-installation.md
Normal file
245
docs/custom-content-installation.md
Normal file
@@ -0,0 +1,245 @@
|
||||
# Custom Content Installation
|
||||
|
||||
This guide explains how to create and install custom BMAD content including agents, workflows, and modules. Custom content allows you to extend BMAD's functionality with your own specialized tools and workflows that can be shared across projects or teams.
|
||||
|
||||
## Types of Custom Content
|
||||
|
||||
### 1. Custom Agents and Workflows (Standalone)
|
||||
|
||||
Custom agents and workflows are standalone content packages that can be installed without being part of a full module. These are perfect for:
|
||||
|
||||
- Sharing specialized agents across projects
|
||||
- Building a personal Agent powered Notebook vault
|
||||
- Distributing workflow templates
|
||||
- Creating agent libraries for specific domains
|
||||
|
||||
#### Structure
|
||||
|
||||
A custom agents and workflows package follows this structure:
|
||||
|
||||
```
|
||||
my-custom-agents/
|
||||
├── module.yaml # Package configuration
|
||||
├── agents/ # Agent definitions
|
||||
│ └── my-agent/
|
||||
│ └── agent.md
|
||||
└── workflows/ # Workflow definitions
|
||||
└── my-workflow/
|
||||
└── workflow.md
|
||||
```
|
||||
|
||||
#### Configuration
|
||||
|
||||
Create a `module.yaml` file in your package root:
|
||||
|
||||
```yaml
|
||||
code: my-custom-agents
|
||||
name: 'My Custom Agents and Workflows'
|
||||
default_selected: true
|
||||
```
|
||||
|
||||
#### Example
|
||||
|
||||
See `/example-custom-content` for a working example of a folder with multiple random custom agents and workflows. Technically its also just a module, but you will be able to further pick and choose from this folders contents of what you do and do not want to include in a destination folder. This way, you can store all custom content source in one location and easily install it to different locations.
|
||||
|
||||
### 2. Custom Modules
|
||||
|
||||
Custom modules are complete BMAD modules that can include their own configuration, documentation, along with agents and workflows that all compliment each other. Additionally they will have their own installation scripts, data, and potentially other tools. Modules can be used for:
|
||||
|
||||
- Domain-specific functionality (e.g., industry-specific workflows, entertainment, education and training, medical, etc...)
|
||||
- Integration with external systems
|
||||
- Specialized agent collections
|
||||
- Custom tooling and utilities
|
||||
|
||||
#### Structure
|
||||
|
||||
A custom module follows this structure:
|
||||
|
||||
```
|
||||
my-module/
|
||||
├── _module-installer/
|
||||
│ ├── installer.js # optional, when it exists it will run with module installation
|
||||
├── module.yaml # Module installation configuration with custom question and answer capture
|
||||
├── docs/ # Module documentation
|
||||
├── agents/ # Module-specific agents
|
||||
├── workflows/ # Module-specific workflows
|
||||
├── data/ # csv or other content to power agent intelligence or workflows
|
||||
├── tools/ # Custom tools, hooks, mcp
|
||||
└── sub-modules/ # IDE-specific customizations
|
||||
├── vscode/
|
||||
└── cursor/
|
||||
```
|
||||
|
||||
#### Module Configuration
|
||||
|
||||
The `module.yaml` file defines how your module is installed:
|
||||
|
||||
```yaml
|
||||
# Module metadata
|
||||
code: my-module
|
||||
name: 'My Custom Module'
|
||||
default_selected: false
|
||||
|
||||
header: 'My Custom Module'
|
||||
subheader: 'Description of what this module does'
|
||||
|
||||
# Configuration prompts
|
||||
my_setting:
|
||||
prompt: 'Configure your module setting'
|
||||
default: 'default-value'
|
||||
result: '{value}'
|
||||
```
|
||||
|
||||
#### Example
|
||||
|
||||
See `/example-custom-module` for a complete example:
|
||||
|
||||
## Installation Process
|
||||
|
||||
### Step 1: Running the Installer
|
||||
|
||||
When you run the existing normal BMAD installer - either from the cloned repo, OR via NPX, it will ask about custom content:
|
||||
|
||||
```
|
||||
? Do you have custom content to install?
|
||||
❯ No (skip custom content)
|
||||
Enter a directory path
|
||||
Enter a URL [Coming soon]
|
||||
```
|
||||
|
||||
### Step 2: Providing Custom Content Path
|
||||
|
||||
If you select "Enter a directory path", the installer will prompt for the location:
|
||||
|
||||
```
|
||||
? Enter the path to your custom content directory: /path/to/folder/containing/content/folder
|
||||
```
|
||||
|
||||
The installer will:
|
||||
|
||||
- Scan for `module.yaml` files (modules)
|
||||
- Display an indication of how many installable folders it has found. Note that a project with stand along agents and workflows all under a single folder like the example will just list the count as 1 for that directory.
|
||||
|
||||
### Step 3: Selecting Content
|
||||
|
||||
The installer presents a unified selection interface:
|
||||
|
||||
```
|
||||
? Select modules and custom content to install:
|
||||
[── Custom Content ──]
|
||||
◉ My Custom Agents and Workflows (/path/to/custom)
|
||||
[── Official Content ──]
|
||||
◯ BMM: Business Method & Management
|
||||
◯ CIS: Creativity & Innovation Suite
|
||||
```
|
||||
|
||||
## Agent Sidecar Support
|
||||
|
||||
Agents with sidecar content can store personal data, memories, and working files outside of the `.bmad` directory. This separation keeps personal content separate from BMAD's core files.
|
||||
|
||||
### What is Sidecar Content?
|
||||
|
||||
Sidecar content includes:
|
||||
|
||||
- Agent memories and learning data
|
||||
- Personal working files
|
||||
- Temporary data
|
||||
- User-specific configurations
|
||||
|
||||
### Sidecar Configuration
|
||||
|
||||
The sidecar folder location is configured during BMAD core installation:
|
||||
|
||||
```
|
||||
? Where should users' agent sidecar memory folders be stored?
|
||||
❯ .bmad-user-memory
|
||||
```
|
||||
|
||||
### How It Works
|
||||
|
||||
1. **Agent Declaration**: Agents declare `hasSidecar: true` in their metadata
|
||||
2. **Sidecar Detection**: The installer automatically detects folders with "sidecar" in the name
|
||||
3. **Installation**: Sidecar content is copied to the configured location
|
||||
4. **Path Replacement**: The `{agent_sidecar_folder}` placeholder in agent configurations is replaced with the actual path to the installed instance of the sidecar folder. Now when you use the agent, depending on its design, will use the content in sidecar to record interactions, remember things you tell it, or serve a host of many other issues.
|
||||
|
||||
### Example Structure
|
||||
|
||||
```
|
||||
my-agent/
|
||||
├── agent.md # Agent definition
|
||||
└── my-agent-sidecar/ # Sidecar content folder
|
||||
├── memories/
|
||||
├── working/
|
||||
└── config/
|
||||
```
|
||||
|
||||
### Git Integration
|
||||
|
||||
Since sidecar content is stored outside the `.bmad` directory (and typically outside version control), users can:
|
||||
|
||||
- Add the sidecar folder to `.gitignore` to exclude personal data
|
||||
- Share agent definitions without exposing personal content
|
||||
- Maintain separate configurations for different projects
|
||||
|
||||
Example `.gitignore` entry:
|
||||
|
||||
```
|
||||
# Exclude agent personal data
|
||||
.bmad-user-memory/
|
||||
```
|
||||
|
||||
## Creating Custom Content with BMAD Builder
|
||||
|
||||
The BMAD Builder provides workflows that will guide you to produce your own custom content:
|
||||
|
||||
1. **Agent Templates**: Use standardized agent templates with proper structure
|
||||
2. **Workflow Templates**: Create workflows using proven patterns
|
||||
3. **Validation Tools**: Validate your content before distribution
|
||||
4. **Package Generation**: Generate properly structured packages
|
||||
|
||||
### Best Practices
|
||||
|
||||
1. **Use Clear Naming**: Make your content codes and names descriptive
|
||||
2. **Provide Documentation**: Include clear setup and usage instructions
|
||||
3. **Test Installation**: Test your content in a clean environment
|
||||
4. **Version Management**: Use semantic versioning for updates
|
||||
5. **Respect User Privacy**: Keep personal data in sidecar folders
|
||||
|
||||
## Distribution
|
||||
|
||||
Custom content can be distributed:
|
||||
|
||||
1. **File System**: Copy folders directly to users
|
||||
2. **Git Repositories**: Clone or download from version control
|
||||
3. **Package Managers**: [Coming soon] npm package support
|
||||
4. **URL Installation**: [Coming soon] Direct URL installation, including an official community vetted module forge
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### No Custom Content Found
|
||||
|
||||
- Ensure your `module.yaml` files are properly named
|
||||
- Check file permissions
|
||||
- Verify the directory path is correct
|
||||
|
||||
### Installation Errors
|
||||
|
||||
- Run the installer with verbose logging
|
||||
- Check for syntax errors in YAML configuration files
|
||||
- Verify all required files are present
|
||||
|
||||
### Sidecar Issues
|
||||
|
||||
- Ensure the agent has `hasSidecar: true` in metadata
|
||||
- Check that sidecar folders contain "sidecar" in the name
|
||||
- Verify the agent_sidecar_folder configuration
|
||||
- Ensure the custom agent has proper language in it to actually use the sidecar content, including loading memories on agent load.
|
||||
|
||||
## Support
|
||||
|
||||
For help with custom content creation or installation:
|
||||
|
||||
1. Check the examples in `/example-custom-content` and `/example-custom-module`
|
||||
2. Review the BMAD documentation
|
||||
3. Create an issue in the BMAD repository
|
||||
4. Join the BMAD community discussions on discord
|
||||
449
docs/document-sharding-guide.md
Normal file
449
docs/document-sharding-guide.md
Normal file
@@ -0,0 +1,449 @@
|
||||
# Document Sharding Guide
|
||||
|
||||
Comprehensive guide to BMad Method's document sharding system for managing large planning and architecture documents.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [What is Document Sharding?](#what-is-document-sharding)
|
||||
- [When to Use Sharding](#when-to-use-sharding)
|
||||
- [How Sharding Works](#how-sharding-works)
|
||||
- [Using the Shard-Doc Tool](#using-the-shard-doc-tool)
|
||||
- [Workflow Support](#workflow-support)
|
||||
- [Best Practices](#best-practices)
|
||||
- [Examples](#examples)
|
||||
|
||||
## What is Document Sharding?
|
||||
|
||||
Document sharding splits large markdown files into smaller, organized files based on level 2 headings (`## Heading`). This enables:
|
||||
|
||||
- **Selective Loading** - Workflows load only the sections they need
|
||||
- **Reduced Token Usage** - Massive efficiency gains for large projects
|
||||
- **Better Organization** - Logical section-based file structure
|
||||
- **Maintained Context** - Index file preserves document structure
|
||||
|
||||
### Architecture
|
||||
|
||||
```
|
||||
Before Sharding:
|
||||
docs/
|
||||
└── PRD.md (large 50k token file)
|
||||
|
||||
After Sharding:
|
||||
docs/
|
||||
└── prd/
|
||||
├── index.md # Table of contents with descriptions
|
||||
├── overview.md # Section 1
|
||||
├── user-requirements.md # Section 2
|
||||
├── technical-requirements.md # Section 3
|
||||
└── ... # Additional sections
|
||||
```
|
||||
|
||||
## When to Use Sharding
|
||||
|
||||
### Ideal Candidates
|
||||
|
||||
**Large Multi-Epic Projects:**
|
||||
|
||||
- Very large complex PRDs
|
||||
- Architecture documents with multiple system layers
|
||||
- Epic files with 4+ epics (especially for Phase 4)
|
||||
- UX design specs covering multiple subsystems
|
||||
|
||||
**Token Thresholds:**
|
||||
|
||||
- **Consider sharding**: Documents > 20k tokens
|
||||
- **Strongly recommended**: Documents > 40k tokens
|
||||
- **Critical for efficiency**: Documents > 60k tokens
|
||||
|
||||
### When NOT to Shard
|
||||
|
||||
**Small Projects:**
|
||||
|
||||
- Single epic projects
|
||||
- Level 0-1 projects (tech-spec only)
|
||||
- Documents under 10k tokens
|
||||
- Quick prototypes
|
||||
|
||||
**Frequently Updated Docs:**
|
||||
|
||||
- Active work-in-progress documents
|
||||
- Documents updated daily
|
||||
- Documents where whole-file context is essential
|
||||
|
||||
## How Sharding Works
|
||||
|
||||
### Sharding Process
|
||||
|
||||
1. **Tool Execution**: Run `npx @kayvan/markdown-tree-parser source.md destination/` - this is abstracted with the core shard-doc task which is installed as a slash command or manual task rule depending on your tools.
|
||||
2. **Section Extraction**: Tool splits by level 2 headings
|
||||
3. **File Creation**: Each section becomes a separate file
|
||||
4. **Index Generation**: `index.md` created with structure and descriptions
|
||||
|
||||
### Workflow Discovery
|
||||
|
||||
BMad workflows use a **dual discovery system**:
|
||||
|
||||
1. **Try whole document first** - Look for `document-name.md`
|
||||
2. **Check for sharded version** - Look for `document-name/index.md`
|
||||
3. **Priority rule** - Whole document takes precedence if both exist
|
||||
|
||||
### Loading Strategies
|
||||
|
||||
**Full Load (Phase 1-3 workflows):**
|
||||
|
||||
```
|
||||
If sharded:
|
||||
- Read index.md
|
||||
- Read ALL section files
|
||||
- Treat as single combined document
|
||||
```
|
||||
|
||||
**Selective Load (Phase 4 workflows):**
|
||||
|
||||
```
|
||||
If sharded epics and working on Epic 3:
|
||||
- Read epics/index.md
|
||||
- Load ONLY epics/epic-3.md
|
||||
- Skip all other epic files
|
||||
- 90%+ token savings!
|
||||
```
|
||||
|
||||
## Using the Shard-Doc Tool
|
||||
|
||||
### CLI Command
|
||||
|
||||
```bash
|
||||
# Activate bmad-master or analyst agent, then:
|
||||
/shard-doc
|
||||
```
|
||||
|
||||
### Interactive Process
|
||||
|
||||
```
|
||||
Agent: Which document would you like to shard?
|
||||
User: docs/PRD.md
|
||||
|
||||
Agent: Default destination: docs/prd/
|
||||
Accept default? [y/n]
|
||||
User: y
|
||||
|
||||
Agent: Sharding PRD.md...
|
||||
✓ Created 12 section files
|
||||
✓ Generated index.md
|
||||
✓ Complete!
|
||||
```
|
||||
|
||||
### What Gets Created
|
||||
|
||||
**index.md structure:**
|
||||
|
||||
```markdown
|
||||
# PRD - Index
|
||||
|
||||
## Sections
|
||||
|
||||
1. [Overview](./overview.md) - Project vision and objectives
|
||||
2. [User Requirements](./user-requirements.md) - Feature specifications
|
||||
3. [Epic 1: Authentication](./epic-1-authentication.md) - User auth system
|
||||
4. [Epic 2: Dashboard](./epic-2-dashboard.md) - Main dashboard UI
|
||||
...
|
||||
```
|
||||
|
||||
**Individual section files:**
|
||||
|
||||
- Named from heading text (kebab-case)
|
||||
- Contains complete section content
|
||||
- Preserves all markdown formatting
|
||||
- Can be read independently
|
||||
|
||||
## Workflow Support
|
||||
|
||||
### Universal Support
|
||||
|
||||
**All BMM workflows support both formats:**
|
||||
|
||||
- ✅ Whole documents
|
||||
- ✅ Sharded documents
|
||||
- ✅ Automatic detection
|
||||
- ✅ Transparent to user
|
||||
|
||||
### Workflow-Specific Patterns
|
||||
|
||||
#### Phase 1-3 (Full Load)
|
||||
|
||||
Workflows load entire sharded documents:
|
||||
|
||||
- `product-brief` - Research, brainstorming docs
|
||||
- `prd` - Product brief, research
|
||||
- `gdd` - Game brief, research
|
||||
- `create-ux-design` - PRD, brief, architecture (if available)
|
||||
- `tech-spec` - Brief, research
|
||||
- `architecture` - PRD, UX design (if available)
|
||||
- `create-epics-and-stories` - PRD, architecture
|
||||
- `implementation-readiness` - All planning docs
|
||||
|
||||
#### Phase 4 (Selective Load)
|
||||
|
||||
Workflows load only needed sections:
|
||||
|
||||
**sprint-planning** (Full Load):
|
||||
|
||||
- Needs ALL epics to build complete status
|
||||
|
||||
**create-story, code-review** (Selective):
|
||||
|
||||
```
|
||||
Working on Epic 3, Story 2:
|
||||
✓ Load epics/epic-3.md only
|
||||
✗ Skip epics/epic-1.md, epic-2.md, epic-4.md, etc.
|
||||
|
||||
Result: 90%+ token reduction for 10-epic projects!
|
||||
```
|
||||
|
||||
### Input File Patterns
|
||||
|
||||
Workflows use standardized patterns:
|
||||
|
||||
```yaml
|
||||
input_file_patterns:
|
||||
prd:
|
||||
whole: '{output_folder}/*prd*.md'
|
||||
sharded: '{output_folder}/*prd*/index.md'
|
||||
|
||||
epics:
|
||||
whole: '{output_folder}/*epic*.md'
|
||||
sharded_index: '{output_folder}/*epic*/index.md'
|
||||
sharded_single: '{output_folder}/*epic*/epic-{{epic_num}}.md'
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Sharding Strategy
|
||||
|
||||
**Do:**
|
||||
|
||||
- ✅ Shard after planning phase complete
|
||||
- ✅ Keep level 2 headings well-organized
|
||||
- ✅ Use descriptive section names
|
||||
- ✅ Shard before Phase 4 implementation
|
||||
- ✅ Keep original file as backup initially
|
||||
|
||||
**Don't:**
|
||||
|
||||
- ❌ Shard work-in-progress documents
|
||||
- ❌ Shard small documents (<20k tokens)
|
||||
- ❌ Mix sharded and whole versions
|
||||
- ❌ Manually edit index.md structure
|
||||
|
||||
### Naming Conventions
|
||||
|
||||
**Good Section Names:**
|
||||
|
||||
```markdown
|
||||
## Epic 1: User Authentication
|
||||
|
||||
## Technical Requirements
|
||||
|
||||
## System Architecture
|
||||
|
||||
## UX Design Principles
|
||||
```
|
||||
|
||||
**Poor Section Names:**
|
||||
|
||||
```markdown
|
||||
## Section 1
|
||||
|
||||
## Part A
|
||||
|
||||
## Details
|
||||
|
||||
## More Info
|
||||
```
|
||||
|
||||
### File Management
|
||||
|
||||
**When to Re-shard:**
|
||||
|
||||
- Significant structural changes to document
|
||||
- Adding/removing major sections
|
||||
- After major refactoring
|
||||
|
||||
**Updating Sharded Docs:**
|
||||
|
||||
1. Edit individual section files directly
|
||||
2. OR edit original, delete sharded folder, re-shard
|
||||
3. Don't manually edit index.md
|
||||
|
||||
## Examples
|
||||
|
||||
### Example 1: Large PRD
|
||||
|
||||
**Scenario:** 15-epic project, PRD is 45k tokens
|
||||
|
||||
**Before Sharding:**
|
||||
|
||||
```
|
||||
Every workflow loads entire 45k token PRD
|
||||
Architecture workflow: 45k tokens
|
||||
UX design workflow: 45k tokens
|
||||
```
|
||||
|
||||
**After Sharding:**
|
||||
|
||||
```bash
|
||||
/shard-doc
|
||||
Source: docs/PRD.md
|
||||
Destination: docs/prd/
|
||||
|
||||
Created:
|
||||
prd/index.md
|
||||
prd/overview.md (3k tokens)
|
||||
prd/functional-requirements.md (8k tokens)
|
||||
prd/non-functional-requirements.md (6k tokens)
|
||||
prd/user-personas.md (4k tokens)
|
||||
...additional FR/NFR sections
|
||||
```
|
||||
|
||||
**Result:**
|
||||
|
||||
```
|
||||
Architecture workflow: Can load specific sections needed
|
||||
UX design workflow: Can load specific sections needed
|
||||
Significant token reduction for large requirement docs!
|
||||
```
|
||||
|
||||
### Example 2: Sharding Epics File
|
||||
|
||||
**Scenario:** 8 epics with detailed stories, 35k tokens total
|
||||
|
||||
```bash
|
||||
/shard-doc
|
||||
Source: docs/bmm-epics.md
|
||||
Destination: docs/epics/
|
||||
|
||||
Created:
|
||||
epics/index.md
|
||||
epics/epic-1.md
|
||||
epics/epic-2.md
|
||||
...
|
||||
epics/epic-8.md
|
||||
```
|
||||
|
||||
**Efficiency Gain:**
|
||||
|
||||
```
|
||||
Working on Epic 5 stories:
|
||||
Old: Load all 8 epics (35k tokens)
|
||||
New: Load epic-5.md only (4k tokens)
|
||||
Savings: 88% reduction
|
||||
```
|
||||
|
||||
### Example 3: Architecture Document
|
||||
|
||||
**Scenario:** Multi-layer system architecture, 28k tokens
|
||||
|
||||
```bash
|
||||
/shard-doc
|
||||
Source: docs/architecture.md
|
||||
Destination: docs/architecture/
|
||||
|
||||
Created:
|
||||
architecture/index.md
|
||||
architecture/system-overview.md
|
||||
architecture/frontend-architecture.md
|
||||
architecture/backend-services.md
|
||||
architecture/data-layer.md
|
||||
architecture/infrastructure.md
|
||||
architecture/security-architecture.md
|
||||
```
|
||||
|
||||
**Benefit:** Code-review workflow can reference specific architectural layers without loading entire architecture doc.
|
||||
|
||||
## Custom Workflow Integration
|
||||
|
||||
### For Workflow Builders
|
||||
|
||||
When creating custom workflows that load large documents:
|
||||
|
||||
**1. Add input_file_patterns to workflow.yaml:**
|
||||
|
||||
```yaml
|
||||
input_file_patterns:
|
||||
your_document:
|
||||
whole: '{output_folder}/*your-doc*.md'
|
||||
sharded: '{output_folder}/*your-doc*/index.md'
|
||||
```
|
||||
|
||||
**2. Add discovery instructions to instructions.md:**
|
||||
|
||||
```markdown
|
||||
## Document Discovery
|
||||
|
||||
1. Search for whole document: _your-doc_.md
|
||||
2. Check for sharded version: _your-doc_/index.md
|
||||
3. If sharded: Read index + ALL sections (or specific sections if selective load)
|
||||
4. Priority: Whole document first
|
||||
```
|
||||
|
||||
**3. Choose loading strategy:**
|
||||
|
||||
- **Full Load**: Read all sections when sharded
|
||||
- **Selective Load**: Read only relevant sections (requires section identification logic)
|
||||
|
||||
### Pattern Templates
|
||||
|
||||
**Full Load Pattern:**
|
||||
|
||||
```xml
|
||||
<action>Search for document: {output_folder}/*doc-name*.md</action>
|
||||
<action>If not found, check for sharded: {output_folder}/*doc-name*/index.md</action>
|
||||
<action if="sharded found">Read index.md to understand structure</action>
|
||||
<action if="sharded found">Read ALL section files listed in index</action>
|
||||
<action if="sharded found">Combine content as single document</action>
|
||||
```
|
||||
|
||||
**Selective Load Pattern (with section ID):**
|
||||
|
||||
```xml
|
||||
<action>Determine section needed (e.g., epic_num = 3)</action>
|
||||
<action>Check for sharded version: {output_folder}/*doc-name*/index.md</action>
|
||||
<action if="sharded found">Read ONLY the specific section file needed</action>
|
||||
<action if="sharded found">Skip all other section files</action>
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Both whole and sharded exist:**
|
||||
|
||||
- Workflows will use whole document (priority rule)
|
||||
- Delete or archive the one you don't want
|
||||
|
||||
**Index.md out of sync:**
|
||||
|
||||
- Delete sharded folder
|
||||
- Re-run shard-doc on original
|
||||
|
||||
**Workflow can't find document:**
|
||||
|
||||
- Check file naming matches patterns (`*prd*.md`, `*epic*.md`, etc.)
|
||||
- Verify index.md exists in sharded folder
|
||||
- Check output_folder path in config
|
||||
|
||||
**Sections too granular:**
|
||||
|
||||
- Combine sections in original document
|
||||
- Use fewer level 2 headings
|
||||
- Re-shard
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [shard-doc Tool](../src/core/tools/shard-doc.xml) - Tool implementation
|
||||
- [BMM Workflows Guide](../src/modules/bmm/workflows/README.md) - Workflow overview
|
||||
- [Workflow Creation Guide](../src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md) - Custom workflow patterns
|
||||
|
||||
---
|
||||
|
||||
**Document sharding is optional but powerful** - use it when efficiency matters for large projects!
|
||||
@@ -6,8 +6,8 @@ BMAD agents can be installed in multiple locations based on your setup.
|
||||
|
||||
### Common Locations
|
||||
|
||||
- User Home: `~/.auggie/commands/`
|
||||
- Project: `.auggie/commands/`
|
||||
- User Home: `~/.augment/commands/`
|
||||
- Project: `.augment/commands/`
|
||||
- Custom paths you selected
|
||||
|
||||
### How to Use
|
||||
|
||||
@@ -13,13 +13,13 @@ BMAD agents are installed as slash commands in `.claude/commands/bmad/`.
|
||||
### Examples
|
||||
|
||||
```
|
||||
/bmad-dev - Activate development agent
|
||||
/bmad-architect - Activate architect agent
|
||||
/bmad-task-setup - Execute setup task
|
||||
/bmad:bmm:agents:dev - Activate development agent
|
||||
/bmad:bmm:agents:architect - Activate architect agent
|
||||
/bmad:bmm:workflows:dev-story - Execute dev-story workflow
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
- Commands are autocompleted when you type `/`
|
||||
- Agent remains active for the conversation
|
||||
- Start new conversation to switch agents
|
||||
- Start a new conversation to switch agents
|
||||
|
||||
@@ -2,31 +2,20 @@
|
||||
|
||||
## Activating Agents
|
||||
|
||||
BMAD agents are documented in `AGENTS.md` file in project root.
|
||||
|
||||
### CLI Mode
|
||||
|
||||
1. **Reference Agent**: Type `@{agent-name}` in prompt
|
||||
2. **Execute Task**: Type `@task-{task-name}`
|
||||
3. **Active Session**: Agent remains active for conversation
|
||||
|
||||
### Web Mode
|
||||
|
||||
1. **Navigate**: Go to Agents section in web interface
|
||||
2. **Select Agent**: Click to activate agent persona
|
||||
3. **Session**: Agent active for browser session
|
||||
BMAD agents, tasks and workflows are installed as custom prompts in
|
||||
`$CODEX_HOME/prompts/bmad-*.md` files. If `CODEX_HOME` is not set, it
|
||||
defaults to `$HOME/.codex/`.
|
||||
|
||||
### Examples
|
||||
|
||||
```
|
||||
@dev - Activate development agent
|
||||
@architect - Activate architect agent
|
||||
@task-setup - Execute setup task
|
||||
/bmad-bmm-agents-dev - Activate development agent
|
||||
/bmad-bmm-agents-architect - Activate architect agent
|
||||
/bmad-bmm-workflows-dev-story - Execute dev-story workflow
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
- All agents documented in AGENTS.md
|
||||
- CLI: Reference with @ syntax
|
||||
- Web: Use interface to select
|
||||
- One agent active at a time
|
||||
Prompts are autocompleted when you type /
|
||||
Agent remains active for the conversation
|
||||
Start a new conversation to switch agents
|
||||
|
||||
@@ -7,7 +7,7 @@ BMAD agents are installed as commands in `.crush/commands/bmad/`.
|
||||
### How to Use
|
||||
|
||||
1. **Open Command Palette**: Use Crush command interface
|
||||
2. **Navigate**: Browse to `bmad/{module}/agents/`
|
||||
2. **Navigate**: Browse to `{bmad_folder}/{module}/agents/`
|
||||
3. **Select Agent**: Choose the agent command
|
||||
4. **Execute**: Run to activate agent persona
|
||||
|
||||
|
||||
@@ -6,20 +6,20 @@ BMAD agents are installed in `.cursor/rules/bmad/` as MDC rules.
|
||||
|
||||
### How to Use
|
||||
|
||||
1. **Reference in Chat**: Use `@bmad/{module}/agents/{agent-name}`
|
||||
2. **Include Entire Module**: Use `@bmad/{module}`
|
||||
3. **Reference Index**: Use `@bmad/index` for all available agents
|
||||
1. **Reference in Chat**: Use `@{bmad_folder}/{module}/agents/{agent-name}`
|
||||
2. **Include Entire Module**: Use `@{bmad_folder}/{module}`
|
||||
3. **Reference Index**: Use `@{bmad_folder}/index` for all available agents
|
||||
|
||||
### Examples
|
||||
|
||||
```
|
||||
@bmad/core/agents/dev - Activate dev agent
|
||||
@bmad/bmm/agents/architect - Activate architect agent
|
||||
@bmad/core - Include all core agents/tasks
|
||||
@{bmad_folder}/core/agents/dev - Activate dev agent
|
||||
@{bmad_folder}/bmm/agents/architect - Activate architect agent
|
||||
@{bmad_folder}/core - Include all core agents/tasks
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
- Rules are Manual type - only loaded when explicitly referenced
|
||||
- No automatic context pollution
|
||||
- Can combine multiple agents: `@bmad/core/agents/dev @bmad/core/agents/test`
|
||||
- Can combine multiple agents: `@{bmad_folder}/core/agents/dev @{bmad_folder}/core/agents/test`
|
||||
|
||||
@@ -7,7 +7,7 @@ BMAD agents are installed as commands in `.iflow/commands/bmad/`.
|
||||
### How to Use
|
||||
|
||||
1. **Access Commands**: Use iFlow command interface
|
||||
2. **Navigate**: Browse to `bmad/agents/` or `bmad/tasks/`
|
||||
2. **Navigate**: Browse to `{bmad_folder}/agents/` or `{bmad_folder}/tasks/`
|
||||
3. **Select**: Choose the agent or task command
|
||||
4. **Execute**: Run to activate
|
||||
|
||||
@@ -22,8 +22,8 @@ BMAD agents are installed as commands in `.iflow/commands/bmad/`.
|
||||
### Examples
|
||||
|
||||
```
|
||||
/bmad/agents/core-dev - Activate dev agent
|
||||
/bmad/tasks/core-setup - Execute setup task
|
||||
/{bmad_folder}/agents/core-dev - Activate dev agent
|
||||
/{bmad_folder}/tasks/core-setup - Execute setup task
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
24
docs/ide-info/opencode.md
Normal file
24
docs/ide-info/opencode.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# BMAD Method - OpenCode Instructions
|
||||
|
||||
## Activating Agents
|
||||
|
||||
BMAD agents are installed as OpenCode agents in `.opencode/agent/BMAD/{module_name}` and workflow commands in `.opencode/command/BMAD/{module_name}`.
|
||||
|
||||
### How to Use
|
||||
|
||||
1. **Switch Agents**: Press **Tab** to cycle through primary agents or select using the `/agents`
|
||||
2. **Activate Agent**: Once the Agent is selected say `hello` or any prompt to activate that agent persona
|
||||
3. **Execute Commands**: Type `/bmad` to see and execute bmad workflow commands (commands allow for fuzzy matching)
|
||||
|
||||
### Examples
|
||||
|
||||
```
|
||||
/agents - to see a list of agents and switch between them
|
||||
/{bmad_folder}/bmm/workflows/workflow-init - Activate the workflow-init command
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
- Press **Tab** to switch between primary agents (Analyst, Architect, Dev, etc.)
|
||||
- Commands are autocompleted when you type `/` and allow for fuzzy matching
|
||||
- Workflow commands execute in current agent context, make sure you have the right agent activated before running a command
|
||||
388
docs/ide-info/rovo-dev.md
Normal file
388
docs/ide-info/rovo-dev.md
Normal file
@@ -0,0 +1,388 @@
|
||||
# Rovo Dev IDE Integration
|
||||
|
||||
This document describes how BMAD-METHOD integrates with [Atlassian Rovo Dev](https://www.atlassian.com/rovo-dev), an AI-powered software development assistant.
|
||||
|
||||
## Overview
|
||||
|
||||
Rovo Dev is designed to integrate deeply with developer workflows and organizational knowledge bases. When you install BMAD-METHOD in a Rovo Dev project, it automatically installs BMAD agents, workflows, tasks, and tools just like it does for other IDEs (Cursor, VS Code, etc.).
|
||||
|
||||
BMAD-METHOD provides:
|
||||
|
||||
- **Agents**: Specialized subagents for various development tasks
|
||||
- **Workflows**: Multi-step workflow guides and coordinators
|
||||
- **Tasks & Tools**: Reference documentation for BMAD tasks and tools
|
||||
|
||||
### What are Rovo Dev Subagents?
|
||||
|
||||
Subagents are specialized agents that Rovo Dev can delegate tasks to. They are defined as Markdown files with YAML frontmatter stored in the `.rovodev/subagents/` directory. Rovo Dev automatically discovers these files and makes them available through the `@subagent-name` syntax.
|
||||
|
||||
## Installation and Setup
|
||||
|
||||
### Automatic Installation
|
||||
|
||||
When you run the BMAD-METHOD installer and select Rovo Dev as your IDE:
|
||||
|
||||
```bash
|
||||
bmad install
|
||||
```
|
||||
|
||||
The installer will:
|
||||
|
||||
1. Create a `.rovodev/subagents/` directory in your project (if it doesn't exist)
|
||||
2. Convert BMAD agents into Rovo Dev subagent format
|
||||
3. Write subagent files with the naming pattern: `bmad-<module>-<agent-name>.md`
|
||||
|
||||
### File Structure
|
||||
|
||||
After installation, your project will have:
|
||||
|
||||
```
|
||||
project-root/
|
||||
├── .rovodev/
|
||||
│ ├── subagents/
|
||||
│ │ ├── bmad-core-code-reviewer.md
|
||||
│ │ ├── bmad-bmm-pm.md
|
||||
│ │ ├── bmad-bmm-dev.md
|
||||
│ │ └── ... (more agents from selected modules)
|
||||
│ ├── workflows/
|
||||
│ │ ├── bmad-brainstorming.md
|
||||
│ │ ├── bmad-prd-creation.md
|
||||
│ │ └── ... (workflow guides)
|
||||
│ ├── references/
|
||||
│ │ ├── bmad-task-core-code-review.md
|
||||
│ │ ├── bmad-tool-core-analysis.md
|
||||
│ │ └── ... (task/tool references)
|
||||
│ ├── config.yml (Rovo Dev configuration)
|
||||
│ ├── prompts.yml (Optional: reusable prompts)
|
||||
│ └── ...
|
||||
├── .bmad/ (BMAD installation directory)
|
||||
└── ...
|
||||
```
|
||||
|
||||
**Directory Structure Explanation:**
|
||||
|
||||
- **subagents/**: Agents discovered and used by Rovo Dev with `@agent-name` syntax
|
||||
- **workflows/**: Multi-step workflow guides and instructions
|
||||
- **references/**: Documentation for available tasks and tools in BMAD
|
||||
|
||||
## Subagent File Format
|
||||
|
||||
BMAD agents are converted to Rovo Dev subagent format, which uses Markdown with YAML frontmatter:
|
||||
|
||||
### Basic Structure
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: bmad-module-agent-name
|
||||
description: One sentence description of what this agent does
|
||||
tools:
|
||||
- bash
|
||||
- open_files
|
||||
- grep
|
||||
- expand_code_chunks
|
||||
model: anthropic.claude-3-5-sonnet-20241022-v2:0 # Optional
|
||||
load_memory: true # Optional
|
||||
---
|
||||
|
||||
You are a specialized agent for [specific task].
|
||||
|
||||
## Your Role
|
||||
|
||||
Describe the agent's role and responsibilities...
|
||||
|
||||
## Key Instructions
|
||||
|
||||
1. First instruction
|
||||
2. Second instruction
|
||||
3. Third instruction
|
||||
|
||||
## When to Use This Agent
|
||||
|
||||
Explain when and how to use this agent...
|
||||
```
|
||||
|
||||
### YAML Frontmatter Fields
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
| ------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `name` | string | Yes | Unique identifier for the subagent (kebab-case, no spaces) |
|
||||
| `description` | string | Yes | One-line description of the subagent's purpose |
|
||||
| `tools` | array | No | List of tools the subagent can use. If not specified, uses parent agent's tools |
|
||||
| `model` | string | No | Specific LLM model for this subagent (e.g., `anthropic.claude-3-5-sonnet-20241022-v2:0`). If not specified, uses parent agent's model |
|
||||
| `load_memory` | boolean | No | Whether to load default memory files (AGENTS.md, AGENTS.local.md). Defaults to `true` |
|
||||
|
||||
### System Prompt
|
||||
|
||||
The content after the closing `---` is the subagent's system prompt. This defines:
|
||||
|
||||
- The agent's persona and role
|
||||
- Its capabilities and constraints
|
||||
- Step-by-step instructions for task execution
|
||||
- Examples of expected behavior
|
||||
|
||||
## Using BMAD Components in Rovo Dev
|
||||
|
||||
### Invoking a Subagent (Agent)
|
||||
|
||||
In Rovo Dev, you can invoke a BMAD agent as a subagent using the `@` syntax:
|
||||
|
||||
```
|
||||
@bmad-core-code-reviewer Please review this PR for potential issues
|
||||
@bmad-bmm-pm Help plan this feature release
|
||||
@bmad-bmm-dev Implement this feature
|
||||
```
|
||||
|
||||
### Accessing Workflows
|
||||
|
||||
Workflow guides are available in `.rovodev/workflows/` directory:
|
||||
|
||||
```
|
||||
@bmad-core-code-reviewer Use the brainstorming workflow from .rovodev/workflows/bmad-brainstorming.md
|
||||
```
|
||||
|
||||
Workflow files contain step-by-step instructions and can be referenced or copied into Rovo Dev for collaborative workflow execution.
|
||||
|
||||
### Accessing Tasks and Tools
|
||||
|
||||
Task and tool documentation is available in `.rovodev/references/` directory. These provide:
|
||||
|
||||
- Task execution instructions
|
||||
- Tool capabilities and usage
|
||||
- Integration examples
|
||||
- Parameter documentation
|
||||
|
||||
### Example Usage Scenarios
|
||||
|
||||
#### Code Review
|
||||
|
||||
```
|
||||
@bmad-core-code-reviewer Review the changes in src/components/Button.tsx
|
||||
for best practices, performance, and potential bugs
|
||||
```
|
||||
|
||||
#### Documentation
|
||||
|
||||
```
|
||||
@bmad-core-documentation-writer Generate API documentation for the new
|
||||
user authentication module
|
||||
```
|
||||
|
||||
#### Feature Design
|
||||
|
||||
```
|
||||
@bmad-module-feature-designer Design a solution for implementing
|
||||
dark mode support across the application
|
||||
```
|
||||
|
||||
## Customizing BMAD Subagents
|
||||
|
||||
You can customize BMAD subagents after installation by editing their files directly in `.rovodev/subagents/`.
|
||||
|
||||
### Example: Adding Tool Restrictions
|
||||
|
||||
By default, BMAD subagents inherit tools from the parent Rovo Dev agent. You can restrict which tools a specific subagent can use:
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: bmad-core-code-reviewer
|
||||
description: Reviews code and suggests improvements
|
||||
tools:
|
||||
- open_files
|
||||
- expand_code_chunks
|
||||
- grep
|
||||
---
|
||||
```
|
||||
|
||||
### Example: Using a Specific Model
|
||||
|
||||
Some agents might benefit from using a different model. You can specify this:
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: bmad-core-documentation-writer
|
||||
description: Writes clear and comprehensive documentation
|
||||
model: anthropic.claude-3-5-sonnet-20241022-v2:0
|
||||
---
|
||||
```
|
||||
|
||||
### Example: Enhancing the System Prompt
|
||||
|
||||
You can add additional context to a subagent's system prompt:
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: bmad-core-code-reviewer
|
||||
description: Reviews code and suggests improvements
|
||||
---
|
||||
|
||||
You are a specialized code review agent for our project.
|
||||
|
||||
## Project Context
|
||||
|
||||
Our codebase uses:
|
||||
|
||||
- React 18 for frontend
|
||||
- Node.js 18+ for backend
|
||||
- TypeScript for type safety
|
||||
- Jest for testing
|
||||
|
||||
## Review Checklist
|
||||
|
||||
1. Type safety and TypeScript correctness
|
||||
2. React best practices and hooks usage
|
||||
3. Performance considerations
|
||||
4. Test coverage
|
||||
5. Documentation and comments
|
||||
|
||||
...rest of original system prompt...
|
||||
```
|
||||
|
||||
## Memory and Context
|
||||
|
||||
By default, BMAD subagents have `load_memory: true`, which means they will load memory files from your project:
|
||||
|
||||
- **Project-level**: `.rovodev/AGENTS.md` and `.rovodev/.agent.md`
|
||||
- **User-level**: `~/.rovodev/AGENTS.md` (global memory across all projects)
|
||||
|
||||
These files can contain:
|
||||
|
||||
- Project guidelines and conventions
|
||||
- Common patterns and best practices
|
||||
- Recent decisions and context
|
||||
- Custom instructions for all agents
|
||||
|
||||
### Creating Project Memory
|
||||
|
||||
Create `.rovodev/AGENTS.md` in your project:
|
||||
|
||||
```markdown
|
||||
# Project Guidelines
|
||||
|
||||
## Code Style
|
||||
|
||||
- Use 2-space indentation
|
||||
- Use camelCase for variables
|
||||
- Use PascalCase for classes
|
||||
|
||||
## Architecture
|
||||
|
||||
- Follow modular component structure
|
||||
- Use dependency injection for services
|
||||
- Implement proper error handling
|
||||
|
||||
## Testing Requirements
|
||||
|
||||
- Minimum 80% code coverage
|
||||
- Write tests before implementation
|
||||
- Use descriptive test names
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Subagents Not Appearing in Rovo Dev
|
||||
|
||||
1. **Verify files exist**: Check that `.rovodev/subagents/bmad-*.md` files are present
|
||||
2. **Check Rovo Dev is reloaded**: Rovo Dev may cache agent definitions. Restart Rovo Dev or reload the project
|
||||
3. **Verify file format**: Ensure files have proper YAML frontmatter (between `---` markers)
|
||||
4. **Check file permissions**: Ensure files are readable by Rovo Dev
|
||||
|
||||
### Agent Name Conflicts
|
||||
|
||||
If you have custom subagents with the same names as BMAD agents, Rovo Dev will load both but may show a warning. Use unique prefixes for custom subagents to avoid conflicts.
|
||||
|
||||
### Tools Not Available
|
||||
|
||||
If a subagent's tools aren't working:
|
||||
|
||||
1. Verify the tool names match Rovo Dev's available tools
|
||||
2. Check that the parent Rovo Dev agent has access to those tools
|
||||
3. Ensure tool permissions are properly configured in `.rovodev/config.yml`
|
||||
|
||||
## Advanced: Tool Configuration
|
||||
|
||||
Rovo Dev agents have access to a set of tools for various tasks. Common tools available include:
|
||||
|
||||
- `bash`: Execute shell commands
|
||||
- `open_files`: View file contents
|
||||
- `grep`: Search across files
|
||||
- `expand_code_chunks`: View specific code sections
|
||||
- `find_and_replace_code`: Modify files
|
||||
- `create_file`: Create new files
|
||||
- `delete_file`: Delete files
|
||||
- `move_file`: Rename or move files
|
||||
|
||||
### MCP Servers
|
||||
|
||||
Rovo Dev can also connect to Model Context Protocol (MCP) servers, which provide additional tools and data sources:
|
||||
|
||||
- **Atlassian Integration**: Access to Jira, Confluence, and Bitbucket
|
||||
- **Code Analysis**: Custom code analysis and metrics
|
||||
- **External Services**: APIs and third-party integrations
|
||||
|
||||
Configure MCP servers in `~/.rovodev/mcp.json` or `.rovodev/mcp.json`.
|
||||
|
||||
## Integration with Other IDE Handlers
|
||||
|
||||
BMAD-METHOD supports multiple IDEs simultaneously. You can have both Rovo Dev and other IDE configurations (Cursor, VS Code, etc.) in the same project. Each IDE will have its own artifacts installed in separate directories.
|
||||
|
||||
For example:
|
||||
|
||||
- Rovo Dev agents: `.rovodev/subagents/bmad-*.md`
|
||||
- Cursor rules: `.cursor/rules/bmad/`
|
||||
- Claude Code: `.claude/rules/bmad/`
|
||||
|
||||
## Performance Considerations
|
||||
|
||||
- BMAD subagent files are typically small (1-5 KB each)
|
||||
- Rovo Dev lazy-loads subagents, so having many subagents doesn't impact startup time
|
||||
- System prompts are cached by Rovo Dev after first load
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Keep System Prompts Concise**: Shorter, well-structured prompts are more effective
|
||||
2. **Use Project Memory**: Leverage `.rovodev/AGENTS.md` for shared context
|
||||
3. **Customize Tool Restrictions**: Give subagents only the tools they need
|
||||
4. **Test Subagent Invocations**: Verify each subagent works as expected for your project
|
||||
5. **Version Control**: Commit `.rovodev/subagents/` to version control for team consistency
|
||||
6. **Document Custom Subagents**: Add comments explaining the purpose of customized subagents
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [Rovo Dev Official Documentation](https://www.atlassian.com/rovo-dev)
|
||||
- [BMAD-METHOD Installation Guide](./installation.md)
|
||||
- [IDE Handler Architecture](./ide-handlers.md)
|
||||
- [Rovo Dev Configuration Reference](https://www.atlassian.com/rovo-dev/configuration)
|
||||
|
||||
## Examples
|
||||
|
||||
### Example 1: Code Review Workflow
|
||||
|
||||
```
|
||||
User: @bmad-core-code-reviewer Review src/auth/login.ts for security issues
|
||||
Rovo Dev → Subagent: Opens file, analyzes code, suggests improvements
|
||||
Subagent output: Security vulnerabilities found, recommendations provided
|
||||
```
|
||||
|
||||
### Example 2: Documentation Generation
|
||||
|
||||
```
|
||||
User: @bmad-core-documentation-writer Generate API docs for the new payment module
|
||||
Rovo Dev → Subagent: Analyzes code structure, generates documentation
|
||||
Subagent output: Markdown documentation with examples and API reference
|
||||
```
|
||||
|
||||
### Example 3: Architecture Design
|
||||
|
||||
```
|
||||
User: @bmad-module-feature-designer Design a caching strategy for the database layer
|
||||
Rovo Dev → Subagent: Reviews current architecture, proposes design
|
||||
Subagent output: Detailed architecture proposal with implementation plan
|
||||
```
|
||||
|
||||
## Support
|
||||
|
||||
For issues or questions about:
|
||||
|
||||
- **Rovo Dev**: See [Atlassian Rovo Dev Documentation](https://www.atlassian.com/rovo-dev)
|
||||
- **BMAD-METHOD**: See [BMAD-METHOD README](../README.md)
|
||||
- **IDE Integration**: See [IDE Handler Guide](./ide-handlers.md)
|
||||
152
docs/index.md
Normal file
152
docs/index.md
Normal file
@@ -0,0 +1,152 @@
|
||||
# BMad Documentation Index
|
||||
|
||||
Complete map of all BMad Method v6 documentation with recommended reading paths.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Getting Started (Start Here!)
|
||||
|
||||
**New users:** Start with one of these based on your situation:
|
||||
|
||||
| Your Situation | Start Here | Then Read |
|
||||
| ---------------------- | --------------------------------------------------------------- | ------------------------------------------------------------- |
|
||||
| **Brand new to BMad** | [Quick Start Guide](../src/modules/bmm/docs/quick-start.md) | [BMM Workflows Guide](../src/modules/bmm/workflows/README.md) |
|
||||
| **Upgrading from v4** | [v4 to v6 Upgrade Guide](./v4-to-v6-upgrade.md) | [Quick Start Guide](../src/modules/bmm/docs/quick-start.md) |
|
||||
| **Brownfield project** | [Brownfield Guide](../src/modules/bmm/docs/brownfield-guide.md) | [Quick Start Guide](../src/modules/bmm/docs/quick-start.md) |
|
||||
|
||||
---
|
||||
|
||||
## 📋 Core Documentation
|
||||
|
||||
### Project-Level Docs (Root)
|
||||
|
||||
- **[README.md](../README.md)** - Main project overview, feature summary, and module introductions
|
||||
- **[CONTRIBUTING.md](../CONTRIBUTING.md)** - How to contribute, pull request guidelines, code style
|
||||
- **[CHANGELOG.md](../CHANGELOG.md)** - Version history and breaking changes
|
||||
- **[CLAUDE.md](../CLAUDE.md)** - Claude Code specific guidelines for this project
|
||||
|
||||
### Installation & Setup
|
||||
|
||||
- **[v4 to v6 Upgrade Guide](./v4-to-v6-upgrade.md)** - Migration path for v4 users
|
||||
- **[Document Sharding Guide](./document-sharding-guide.md)** - Split large documents for 90%+ token savings
|
||||
- **[Web Bundles](./USING_WEB_BUNDLES.md)** - Use BMAD agents in Claude Projects, ChatGPT, or Gemini without installation
|
||||
- **[Bundle Distribution Setup](./BUNDLE_DISTRIBUTION_SETUP.md)** - Maintainer guide for bundle auto-publishing
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ Module Documentation
|
||||
|
||||
### BMad Method (BMM) - Software & Game Development
|
||||
|
||||
The flagship module for agile AI-driven development.
|
||||
|
||||
- **[BMM Module README](../src/modules/bmm/README.md)** - Module overview, agents, and complete documentation index
|
||||
- **[BMM Documentation](../src/modules/bmm/docs/)** - All BMM-specific guides and references:
|
||||
- [Quick Start Guide](../src/modules/bmm/docs/quick-start.md) - Step-by-step guide to building your first project
|
||||
- [Quick Spec Flow](../src/modules/bmm/docs/quick-spec-flow.md) - Rapid Level 0-1 development
|
||||
- [Scale Adaptive System](../src/modules/bmm/docs/scale-adaptive-system.md) - Understanding the 5-level system
|
||||
- [Brownfield Guide](../src/modules/bmm/docs/brownfield-guide.md) - Working with existing codebases
|
||||
- **[BMM Workflows Guide](../src/modules/bmm/workflows/README.md)** - **ESSENTIAL READING**
|
||||
- **[Test Architect Guide](../src/modules/bmm/testarch/README.md)** - Testing strategy and quality assurance
|
||||
|
||||
### BMad Builder (BMB) - Create Custom Solutions
|
||||
|
||||
Build your own agents, workflows, and modules.
|
||||
|
||||
- **[BMB Module README](../src/modules/bmb/README.md)** - Module overview and capabilities
|
||||
- **[Agent Creation Guide](../src/modules/bmb/workflows/create-agent/README.md)** - Design custom agents
|
||||
|
||||
### Creative Intelligence Suite (CIS) - Innovation & Creativity
|
||||
|
||||
AI-powered creative thinking and brainstorming.
|
||||
|
||||
- **[CIS Module README](../src/modules/cis/README.md)** - Module overview and workflows
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ IDE-Specific Guides
|
||||
|
||||
Instructions for loading agents and running workflows in your development environment.
|
||||
|
||||
**Popular IDEs:**
|
||||
|
||||
- [Claude Code](./ide-info/claude-code.md)
|
||||
- [Cursor](./ide-info/cursor.md)
|
||||
- [VS Code](./ide-info/windsurf.md)
|
||||
|
||||
**Other Supported IDEs:**
|
||||
|
||||
- [Augment](./ide-info/auggie.md)
|
||||
- [Cline](./ide-info/cline.md)
|
||||
- [Codex](./ide-info/codex.md)
|
||||
- [Crush](./ide-info/crush.md)
|
||||
- [Gemini](./ide-info/gemini.md)
|
||||
- [GitHub Copilot](./ide-info/github-copilot.md)
|
||||
- [IFlow](./ide-info/iflow.md)
|
||||
- [Kilo](./ide-info/kilo.md)
|
||||
- [OpenCode](./ide-info/opencode.md)
|
||||
- [Qwen](./ide-info/qwen.md)
|
||||
- [Roo](./ide-info/roo.md)
|
||||
- [Rovo Dev](./ide-info/rovo-dev.md)
|
||||
- [Trae](./ide-info/trae.md)
|
||||
|
||||
**Key concept:** Every reference to "load an agent" or "activate an agent" in the main docs links to the [ide-info](./ide-info/) directory for IDE-specific instructions.
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Advanced Topics
|
||||
|
||||
### Custom Agents, Workflow and Modules
|
||||
|
||||
- **[Custom Content Installation](./custom-content-installation.md)** - Install and personalize agents, workflows and modules with the default bmad-method installer!
|
||||
- [Agent Customization Guide](./agent-customization-guide.md) - Customize agent behavior and responses
|
||||
|
||||
### Installation & Bundling
|
||||
|
||||
- [IDE Injections Reference](./installers-bundlers/ide-injections.md) - How agents are installed to IDEs
|
||||
- [Installers & Platforms Reference](./installers-bundlers/installers-modules-platforms-reference.md) - CLI tool and platform support
|
||||
- [Web Bundler Usage](./installers-bundlers/web-bundler-usage.md) - Creating web-compatible bundles
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Recommended Reading Paths
|
||||
|
||||
### Path 1: Brand New to BMad (Software Project)
|
||||
|
||||
1. [README.md](../README.md) - Understand the vision
|
||||
2. [Quick Start Guide](../src/modules/bmm/docs/quick-start.md) - Get hands-on
|
||||
3. [BMM Module README](../src/modules/bmm/README.md) - Understand agents
|
||||
4. [BMM Workflows Guide](../src/modules/bmm/workflows/README.md) - Master the methodology
|
||||
5. [Your IDE guide](./ide-info/) - Optimize your workflow
|
||||
|
||||
### Path 2: Game Development Project
|
||||
|
||||
1. [README.md](../README.md) - Understand the vision
|
||||
2. [Quick Start Guide](../src/modules/bmm/docs/quick-start.md) - Get hands-on
|
||||
3. [BMM Module README](../src/modules/bmm/README.md) - Game agents are included
|
||||
4. [BMM Workflows Guide](../src/modules/bmm/workflows/README.md) - Game workflows
|
||||
5. [Your IDE guide](./ide-info/) - Optimize your workflow
|
||||
|
||||
### Path 3: Upgrading from v4
|
||||
|
||||
1. [v4 to v6 Upgrade Guide](./v4-to-v6-upgrade.md) - Understand what changed
|
||||
2. [Quick Start Guide](../src/modules/bmm/docs/quick-start.md) - Reorient yourself
|
||||
3. [BMM Workflows Guide](../src/modules/bmm/workflows/README.md) - Learn new v6 workflows
|
||||
|
||||
### Path 4: Working with Existing Codebase (Brownfield)
|
||||
|
||||
1. [Brownfield Guide](../src/modules/bmm/docs/brownfield-guide.md) - Approach for legacy code
|
||||
2. [Quick Start Guide](../src/modules/bmm/docs/quick-start.md) - Follow the process
|
||||
3. [BMM Workflows Guide](../src/modules/bmm/workflows/README.md) - Master the methodology
|
||||
|
||||
### Path 5: Building Custom Solutions
|
||||
|
||||
1. [BMB Module README](../src/modules/bmb/README.md) - Understand capabilities
|
||||
2. [Agent Creation Guide](../src/modules/bmb/workflows/create-agent/README.md) - Create agents
|
||||
3. [BMM Workflows Guide](../src/modules/bmm/workflows/README.md) - Understand workflow structure
|
||||
|
||||
### Path 6: Contributing to BMad
|
||||
|
||||
1. [CONTRIBUTING.md](../CONTRIBUTING.md) - Contribution guidelines
|
||||
2. Relevant module README - Understand the area you're contributing to
|
||||
3. [Code Style section in CONTRIBUTING.md](../CONTRIBUTING.md#code-style) - Follow standards
|
||||
@@ -158,7 +158,7 @@ src/modules/bmm/
|
||||
|
||||
```yaml
|
||||
injections:
|
||||
- file: 'bmad/bmm/agents/pm.md'
|
||||
- file: '{bmad_folder}/bmm/agents/pm.md'
|
||||
point: 'pm-agent-instructions'
|
||||
requires: 'any' # Injected if ANY subagent is selected
|
||||
content: |
|
||||
@@ -166,7 +166,7 @@ injections:
|
||||
<i>Use 'market-researcher' subagent for analysis</i>
|
||||
</llm>
|
||||
|
||||
- file: 'bmad/bmm/templates/prd.md'
|
||||
- file: '{bmad_folder}/bmm/templates/prd.md'
|
||||
point: 'prd-goals-context-delegation'
|
||||
requires: 'market-researcher' # Only if this specific subagent selected
|
||||
content: |
|
||||
@@ -184,13 +184,3 @@ injections:
|
||||
<cmds>...</cmds>
|
||||
</agent>
|
||||
```
|
||||
|
||||
## Testing Checklist
|
||||
|
||||
- [ ] Injection points are properly named and unique
|
||||
- [ ] injections.yaml is valid YAML with correct structure
|
||||
- [ ] Content formatting is preserved after injection
|
||||
- [ ] Installation works without the IDE (injection points removed)
|
||||
- [ ] Installation works with the IDE (content properly injected)
|
||||
- [ ] Subagents/files are copied to correct locations
|
||||
- [ ] No IDE-specific content remains when different IDE selected
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# BMAD v6 Installation & Module System Reference
|
||||
# BMAD Installation & Module System Reference
|
||||
|
||||
## Table of Contents
|
||||
|
||||
@@ -13,63 +13,36 @@
|
||||
|
||||
## Overview
|
||||
|
||||
BMAD v6 is a modular AI agent framework with intelligent installation, platform-agnostic support, and configuration inheritance.
|
||||
BMad Core is a modular AI agent framework with intelligent installation, platform-agnostic support, and configuration inheritance.
|
||||
|
||||
### Key Features
|
||||
|
||||
- **Modular Design**: Core + optional modules (BMM, CIS)
|
||||
- **Modular Design**: Core + optional modules (BMB, BMM, CIS)
|
||||
- **Smart Installation**: Interactive configuration with dependency resolution
|
||||
- **Multi-Platform**: Supports 15+ AI coding platforms
|
||||
- **Clean Architecture**: Centralized `bmad/` directory, no source pollution
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Interactive installation (recommended)
|
||||
bmad install
|
||||
|
||||
# Install specific modules
|
||||
bmad install -m bmm cis
|
||||
|
||||
# Full installation
|
||||
bmad install -f
|
||||
|
||||
# Check status
|
||||
bmad status
|
||||
```
|
||||
|
||||
### Installation Options
|
||||
|
||||
- `-d <path>`: Target directory (default: current)
|
||||
- `-m <modules...>`: Specific modules (bmm, cis)
|
||||
- `-f`: Full installation
|
||||
- `-c`: Core only
|
||||
- `-i <ide...>`: Configure specific IDEs
|
||||
- `--skip-ide`: Skip IDE configuration
|
||||
- `-v`: Verbose output
|
||||
- **Clean Architecture**: Centralized `{bmad_folder}` directory add to project, no source pollution with multiple folders added
|
||||
|
||||
## Architecture
|
||||
|
||||
### Directory Structure
|
||||
### Directory Structure upon installation
|
||||
|
||||
```
|
||||
project-root/
|
||||
├── bmad/ # Centralized installation
|
||||
│ ├── _cfg/ # Configuration
|
||||
│ │ ├── agents/ # Agent configs
|
||||
│ │ └── agent-party.xml # Agent manifest
|
||||
│ ├── core/ # Core module
|
||||
├── {bmad_folder}/ # Centralized installation
|
||||
│ ├── _cfg/ # Configuration
|
||||
│ │ ├── agents/ # Agent configs
|
||||
│ │ └── agent-manifest.csv # Agent manifest
|
||||
│ ├── core/ # Core module
|
||||
│ │ ├── agents/
|
||||
│ │ ├── tasks/
|
||||
│ │ └── config.yaml
|
||||
│ ├── bmm/ # BMad Method module
|
||||
│ ├── bmm/ # BMad Method module
|
||||
│ │ ├── agents/
|
||||
│ │ ├── tasks/
|
||||
│ │ ├── templates/
|
||||
│ │ ├── workflows/
|
||||
│ │ └── config.yaml
|
||||
│ └── cis/ # Creative Innovation Studio
|
||||
│ └── cis/ # Creative Innovation Studio
|
||||
│ └── ...
|
||||
└── .claude/ # Platform-specific (example)
|
||||
└── .claude/ # Platform-specific (example)
|
||||
└── agents/
|
||||
```
|
||||
|
||||
@@ -78,15 +51,15 @@ project-root/
|
||||
1. **Detection**: Check existing installation
|
||||
2. **Selection**: Choose modules interactively or via CLI
|
||||
3. **Configuration**: Collect module-specific settings
|
||||
4. **Platform Setup**: Configure AI coding platforms
|
||||
5. **Installation**: Process and copy files
|
||||
6. **Generation**: Create config files with inheritance
|
||||
7. **Post-Install**: Run module installers
|
||||
8. **Manifest**: Track installed components
|
||||
4. **Installation**: Compile Process and copy files
|
||||
5. **Generation**: Create config files with inheritance
|
||||
6. **Post-Install**: Run module installers
|
||||
7. **Manifest**: Track installed components
|
||||
|
||||
### Key Exclusions
|
||||
|
||||
- `_module-installer/` directories are never copied to destination
|
||||
- module.yaml
|
||||
- `localskip="true"` agents are filtered out
|
||||
- Source `config.yaml` templates are replaced with generated configs
|
||||
|
||||
@@ -120,8 +93,8 @@ Creative Innovation Studio for design workflows
|
||||
```
|
||||
src/modules/{module}/
|
||||
├── _module-installer/ # Not copied to destination
|
||||
│ ├── installer.js # Post-install logic
|
||||
│ └── install-menu-config.yaml
|
||||
│ ├── installer.js # Post-install logic
|
||||
├── module.yaml
|
||||
├── agents/
|
||||
├── tasks/
|
||||
├── templates/
|
||||
@@ -135,7 +108,7 @@ src/modules/{module}/
|
||||
|
||||
### Collection Process
|
||||
|
||||
Modules define prompts in `install-menu-config.yaml`:
|
||||
Modules define prompts in `module.yaml`:
|
||||
|
||||
```yaml
|
||||
project_name:
|
||||
@@ -199,7 +172,7 @@ communication_language: "English"
|
||||
- Windsurf
|
||||
|
||||
**Additional**:
|
||||
Cline, Roo, Auggie, GitHub Copilot, Codex, Gemini, Qwen, Trae, Kilo, Crush, iFlow
|
||||
Cline, Roo, Rovo Dev,Auggie, GitHub Copilot, Codex, Gemini, Qwen, Trae, Kilo, Crush, iFlow
|
||||
|
||||
### Platform Features
|
||||
|
||||
@@ -212,7 +185,7 @@ Cline, Roo, Auggie, GitHub Copilot, Codex, Gemini, Qwen, Trae, Kilo, Crush, iFlo
|
||||
|
||||
```yaml
|
||||
injections:
|
||||
- file: 'bmad/bmm/agents/pm.md'
|
||||
- file: '{bmad_folder}/bmm/agents/pm.md'
|
||||
point: 'pm-agent-instructions'
|
||||
content: |
|
||||
<i>Platform-specific instruction</i>
|
||||
@@ -246,12 +219,12 @@ Platform-specific content without source modification:
|
||||
src/modules/mymod/
|
||||
├── _module-installer/
|
||||
│ ├── installer.js
|
||||
│ └── install-menu-config.yaml
|
||||
├── module.yaml
|
||||
├── agents/
|
||||
└── tasks/
|
||||
```
|
||||
|
||||
2. **Configuration** (`install-menu-config.yaml`)
|
||||
2. **Configuration** (`module.yaml`)
|
||||
|
||||
```yaml
|
||||
code: mymod
|
||||
@@ -298,14 +271,14 @@ Generated in: `bmad/_cfg/agents/{module}-{agent}.md`
|
||||
|
||||
### Common Issues
|
||||
|
||||
| Issue | Solution |
|
||||
| ------------------------- | ----------------------------------- |
|
||||
| Existing installation | Use `bmad update` or remove `bmad/` |
|
||||
| Module not found | Check `src/modules/` exists |
|
||||
| Config not applied | Verify `bmad/{module}/config.yaml` |
|
||||
| Missing config.yaml | Fixed: All modules now get configs |
|
||||
| Agent unavailable | Check for `localskip="true"` |
|
||||
| \_module-installer copied | Fixed: Now excluded from copy |
|
||||
| Issue | Solution |
|
||||
| ----------------------- | -------------------------------------------- |
|
||||
| Existing installation | Use `bmad update` or remove `{bmad_folder}/` |
|
||||
| Module not found | Check `src/modules/` exists |
|
||||
| Config not applied | Verify `{bmad_folder}/{module}/config.yaml` |
|
||||
| Missing config.yaml | Fixed: All modules now get configs |
|
||||
| Agent unavailable | Check for `localskip="true"` |
|
||||
| module-installer copied | Fixed: Now excluded from copy |
|
||||
|
||||
### Debug Commands
|
||||
|
||||
@@ -317,19 +290,19 @@ bmad status -v # Detailed status
|
||||
### Best Practices
|
||||
|
||||
1. Run from project root
|
||||
2. Backup `bmad/_cfg/` before updates
|
||||
2. Backup `{bmad_folder}/_cfg/` before updates
|
||||
3. Use interactive mode for guidance
|
||||
4. Review generated configs post-install
|
||||
|
||||
## Migration from v4
|
||||
|
||||
| v4 | v6 |
|
||||
| ------------------- | ------------------- |
|
||||
| Scattered files | Centralized `bmad/` |
|
||||
| Monolithic | Modular |
|
||||
| Manual config | Interactive setup |
|
||||
| Limited IDE support | 15+ platforms |
|
||||
| Source modification | Clean injection |
|
||||
| v4 | v6 |
|
||||
| ------------------- | ---------------------------- |
|
||||
| Scattered files | Centralized `{bmad_folder}/` |
|
||||
| Monolithic | Modular |
|
||||
| Manual config | Interactive setup |
|
||||
| Limited IDE support | 15+ platforms |
|
||||
| Source modification | Clean injection |
|
||||
|
||||
## Technical Notes
|
||||
|
||||
@@ -339,6 +312,66 @@ bmad status -v # Detailed status
|
||||
- Agent references (cross-module)
|
||||
- Template dependencies
|
||||
- Partial module installation (only required files)
|
||||
- Workflow vendoring for standalone module operation
|
||||
|
||||
## Workflow Vendoring
|
||||
|
||||
**Problem**: Modules that reference workflows from other modules create dependencies, forcing users to install multiple modules even when they only need one.
|
||||
|
||||
**Solution**: Workflow vendoring allows modules to copy workflows from other modules during installation, making them fully standalone.
|
||||
|
||||
### How It Works
|
||||
|
||||
Agents can specify both `workflow` (source location) and `workflow-install` (destination location) in their menu items:
|
||||
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: create-story
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/4-implementation/create-story/workflow.yaml'
|
||||
workflow-install: '{project-root}/{bmad_folder}/bmgd/workflows/4-production/create-story/workflow.yaml'
|
||||
description: 'Create a game feature story'
|
||||
```
|
||||
|
||||
**During Installation:**
|
||||
|
||||
1. **Vendoring Phase**: Before copying module files, the installer:
|
||||
- Scans source agent YAML files for `workflow-install` attributes
|
||||
- Copies entire workflow folders from `workflow` path to `workflow-install` path
|
||||
- Updates vendored `workflow.yaml` files to reference target module's config
|
||||
|
||||
2. **Compilation Phase**: When compiling agents:
|
||||
- If `workflow-install` exists, uses its value for the `workflow` attribute
|
||||
- `workflow-install` is build-time metadata only, never appears in final XML
|
||||
- Compiled agent references vendored workflow location
|
||||
|
||||
3. **Config Update**: Vendored workflows get their `config_source` updated:
|
||||
|
||||
```yaml
|
||||
# Source workflow (in bmm):
|
||||
config_source: "{project-root}/{bmad_folder}/bmm/config.yaml"
|
||||
|
||||
# Vendored workflow (in bmgd):
|
||||
config_source: "{project-root}/{bmad_folder}/bmgd/config.yaml"
|
||||
```
|
||||
|
||||
**Result**: Modules become completely standalone with their own copies of needed workflows, configured for their specific use case.
|
||||
|
||||
### Example Use Case: BMGD Module
|
||||
|
||||
The BMad Game Development module vendors implementation workflows from BMM:
|
||||
|
||||
- Game Dev Scrum Master agent references BMM workflows
|
||||
- During installation, workflows are copied to `bmgd/workflows/4-production/`
|
||||
- Vendored workflows use BMGD's config (with game-specific settings)
|
||||
- BMGD can be installed without BMM dependency
|
||||
|
||||
### Benefits
|
||||
|
||||
✅ **Module Independence** - No forced dependencies
|
||||
✅ **Clean Namespace** - Workflows live in their module
|
||||
✅ **Config Isolation** - Each module uses its own configuration
|
||||
✅ **Customization Ready** - Vendored workflows can be modified independently
|
||||
✅ **No User Confusion** - Avoid partial module installations
|
||||
|
||||
### File Processing
|
||||
|
||||
@@ -346,6 +379,7 @@ bmad status -v # Detailed status
|
||||
- Excludes `_module-installer/` directories
|
||||
- Replaces path placeholders at runtime
|
||||
- Injects activation blocks
|
||||
- Vendors cross-module workflows (see Workflow Vendoring below)
|
||||
|
||||
### Web Bundling
|
||||
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
# Web Bundler Usage
|
||||
|
||||
ALPHA NOTE: Bundling of individual agents might work, team bundling is being reworked and will come with Beta release soon.
|
||||
|
||||
The web bundler creates self-contained XML bundles for BMAD agents, packaging all dependencies for web deployment.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Bundle all agents from all modules
|
||||
npm run bundle
|
||||
|
||||
# Clean and rebundle (removes old bundles first)
|
||||
npm run rebundle
|
||||
```
|
||||
|
||||
## Custom Output Directory
|
||||
|
||||
```bash
|
||||
# Bundle to custom directory
|
||||
node tools/cli/bundlers/bundle-web.js all --output ./my-bundles
|
||||
|
||||
# Rebundle to custom directory (auto-cleans first)
|
||||
node tools/cli/bundlers/bundle-web.js rebundle --output /absolute/path/to/custom/directory
|
||||
|
||||
# Bundle specific module to custom directory
|
||||
node tools/cli/bundlers/bundle-web.js module bmm --output ./custom-folder
|
||||
|
||||
# Bundle specific agent to custom directory
|
||||
node tools/cli/bundlers/bundle-web.js agent bmm analyst -o ./custom-folder
|
||||
```
|
||||
|
||||
## Output
|
||||
|
||||
Bundles are generated in `web-bundles/` directory by default when run from the root of the clones project:
|
||||
|
||||
```
|
||||
web-bundles/
|
||||
├── [module-name]/
|
||||
│ └── agents/
|
||||
│ └── [agent-name].xml
|
||||
```
|
||||
|
||||
## Skipping Agents
|
||||
|
||||
Agents with `bundle="false"` attribute are automatically skipped during bundling.
|
||||
|
||||
## Bundle Contents
|
||||
|
||||
Each bundle includes:
|
||||
|
||||
- Agent definition with web activation
|
||||
- All resolved dependencies
|
||||
- Manifests for agent/team discovery
|
||||
227
docs/v4-to-v6-upgrade.md
Normal file
227
docs/v4-to-v6-upgrade.md
Normal file
@@ -0,0 +1,227 @@
|
||||
# BMad v4 to v6 Upgrade Guide
|
||||
|
||||
## Overview
|
||||
|
||||
BMad v6 represents a complete ground-up rewrite with significant architectural changes. This guide will help you migrate your v4 project to v6.
|
||||
|
||||
---
|
||||
|
||||
## Automatic V4 Detection
|
||||
|
||||
When you run `npm run install:bmad` on a project with v4 installed, the installer automatically detects:
|
||||
|
||||
- **Legacy folders**: Any folders starting with `.bmad`, `bmad` (lowercase), or `Bmad`
|
||||
- **IDE command artifacts**: Legacy bmad folders in IDE configuration directories (`.claude/commands/`, `.cursor/commands/`, etc.)
|
||||
|
||||
### What Happens During Detection
|
||||
|
||||
1. **Automatic Backup of v4 Modules**: All `.bmad-*` folders are moved to `v4-backup/` in your project root
|
||||
- If a backup already exists, a timestamp is added to avoid conflicts
|
||||
- Example: `.bmad-core` → `v4-backup/.bmad-core`
|
||||
- Your project files and data are NOT affected
|
||||
|
||||
2. **IDE Command Cleanup Recommended**: Legacy v4 IDE commands should be manually removed
|
||||
- Located in IDE config folders: `.claude/commands/`, `.cursor/commands/`, etc.
|
||||
- These old commands would still reference v4 folder structure if left in place
|
||||
- The installer provides copy/paste terminal commands for your platform
|
||||
- You can proceed without cleanup, but removing them prevents confusion with old v4 commands
|
||||
|
||||
---
|
||||
|
||||
## Module Migration
|
||||
|
||||
### Deprecated Modules
|
||||
|
||||
| v4 Module | v6 Status |
|
||||
| ----------------------------- | ------------------------------------------------ |
|
||||
| `.bmad-2d-phaser-game-dev` | Integrated into BMM |
|
||||
| `.bmad-2d-unity-game-dev` | Integrated into BMM |
|
||||
| `.bmad-godot-game-dev` | Integrated into BMM |
|
||||
| `.bmad-*-game-dev` (any) | Integrated into BMM |
|
||||
| `.bmad-infrastructure-devops` | Deprecated - New core devops agent coming in BMM |
|
||||
| `.bmad-creative-writing` | Not adapted - New module releasing soon |
|
||||
|
||||
**Game Development**: All game development functionality has been consolidated and expanded within the BMM (BMad Method) module. Game-specific workflows now adapt to your game type and engine.
|
||||
|
||||
---
|
||||
|
||||
## Architecture Changes
|
||||
|
||||
### Folder Structure
|
||||
|
||||
**v4 "Expansion Packs" Structure:**
|
||||
|
||||
```
|
||||
your-project/
|
||||
├── .bmad-core/ # Was actually the BMad Method
|
||||
├── .bmad-game-dev/ # Separate expansion packs
|
||||
├── .bmad-creative-writing/
|
||||
└── .bmad-infrastructure-devops/
|
||||
```
|
||||
|
||||
**v6 Unified Structure:**
|
||||
|
||||
```
|
||||
your-project/
|
||||
└── {bmad_folder}/ # Single installation folder, default .bmad
|
||||
├── core/ # Real core framework (applies to all modules)
|
||||
├── bmm/ # BMad Method (software/game dev)
|
||||
├── bmb/ # BMad Builder (create agents/workflows)
|
||||
├── cis/ # Creative Intelligence Suite
|
||||
└── _cfg/ # Your customizations
|
||||
└── agents/ # Agent customization files
|
||||
```
|
||||
|
||||
### Key Concept Changes
|
||||
|
||||
- **v4 `.bmad-core`**: Was actually the BMad Method
|
||||
- **v6 `{bmad_folder}/core/`**: Is the real universal core framework
|
||||
- **v6 `{bmad_folder}/bmm/`**: Is the BMad Method module
|
||||
- **Module identification**: All modules now have a `config.yaml` file
|
||||
|
||||
---
|
||||
|
||||
## Project Progress Migration
|
||||
|
||||
### If You've Completed Planning Phase (PRD/Architecture) with the BMad Method:
|
||||
|
||||
After running the v6 installer:
|
||||
|
||||
1. **Run `workflow-init`** workflow to set up the guided workflow system
|
||||
2. **Specify your project level** when prompted:
|
||||
- If you followed v4's full workflow (PRD → Architecture → Stories), select **Level 3 or 4**
|
||||
- This tells v6 you've already completed planning and solutioning phases
|
||||
3. **Document paths**: Keep your existing paths during installation
|
||||
- Default PRD/Architecture location: `docs/`
|
||||
- Default stories location: `docs/sprint-artifacts/`
|
||||
- **Accept these defaults** if you're already using them in v4
|
||||
|
||||
> **Important**: v6 workflows can handle both sharded and unsharded documents. You don't need to restructure your existing PRD or architecture files.
|
||||
|
||||
### If You're Mid-Development (Stories Created/Implemented)
|
||||
|
||||
1. Complete the v6 installation as above
|
||||
2. Run `workflow-init` and specify Level 3 or 4
|
||||
3. When ready to continue development, run the **`sprint-planning`** workflow (Phase 4)
|
||||
|
||||
---
|
||||
|
||||
## Agent Customization Migration
|
||||
|
||||
### v4 Agent Customization
|
||||
|
||||
In v4, you may have modified agent files directly in `.bmad-*` folders.
|
||||
|
||||
### v6 Agent Customization
|
||||
|
||||
**All customizations** now go in `{bmad_folder}/_cfg/agents/` using customize files:
|
||||
|
||||
**Example: Renaming an agent and changing communication style**
|
||||
|
||||
File: `{bmad_folder}/_cfg/agents/bmm-pm.customize.yaml`
|
||||
|
||||
```yaml
|
||||
# Customize the PM agent
|
||||
persona:
|
||||
name: 'Captain Jack' # Override agent name
|
||||
role: 'Swashbuckling Product Owner'
|
||||
communication_style: |
|
||||
- Talk like a pirate
|
||||
- Use nautical metaphors for software concepts
|
||||
- Always upbeat and adventurous
|
||||
```
|
||||
|
||||
**How it works:**
|
||||
|
||||
- Base agent: `{bmad_folder}/bmm/agents/pm.md`
|
||||
- Customization: `{bmad_folder}/_cfg/agents/bmm-pm.customize.yaml`
|
||||
- Result: Agent uses your custom name and style, but updates don't overwrite your changes
|
||||
|
||||
---
|
||||
|
||||
## Document Compatibility
|
||||
|
||||
### Sharded vs Unsharded Documents
|
||||
|
||||
**Good news**: Unlike v4, v6 workflows are **fully flexible** with document structure:
|
||||
|
||||
- ✅ Sharded documents (split into multiple files)
|
||||
- ✅ Unsharded documents (single file per section)
|
||||
- ✅ Custom sections for your project type
|
||||
- ✅ Mixed approaches
|
||||
|
||||
All workflow files are scanned automatically. No manual configuration needed.
|
||||
|
||||
---
|
||||
|
||||
## Installation Steps
|
||||
|
||||
### 1. Clone Repository
|
||||
|
||||
```bash
|
||||
git clone https://github.com/bmad-code-org/BMAD-METHOD
|
||||
cd BMAD-METHOD
|
||||
npm install
|
||||
```
|
||||
|
||||
### 2. Run Installer on Your v4 Project
|
||||
|
||||
```bash
|
||||
npx bmad-method install
|
||||
```
|
||||
|
||||
**Enter the full path to your v4 project** when prompted.
|
||||
|
||||
### 3. Follow Interactive Prompts
|
||||
|
||||
The installer will:
|
||||
|
||||
1. Detect v4 installation and offer to backup `.bmad-*` folders
|
||||
2. Prompt for recommended cleanup (you can skip)
|
||||
3. Let you select modules (recommend: BMM for software and or game development)
|
||||
4. Configure core settings (name, language, etc.)
|
||||
5. Configure module-specific options
|
||||
6. Configure IDE integrations
|
||||
|
||||
### 4. Accept Default Paths
|
||||
|
||||
If you're using:
|
||||
|
||||
- `docs/` for PRD and architecture
|
||||
- `docs/sprint-artifacts/` for story files
|
||||
|
||||
**Accept these defaults** during installation.
|
||||
|
||||
### 5. Initialize Workflow
|
||||
|
||||
After installation:
|
||||
|
||||
1. **Load the Analyst agent** - See your IDE-specific instructions in [docs/ide-info](./ide-info/) for how to activate agents:
|
||||
- [Claude Code](./ide-info/claude-code.md)
|
||||
- [Cursor](./ide-info/cursor.md)
|
||||
- [VS Code/Windsurf](./ide-info/) - Check your IDE folder
|
||||
|
||||
2. **Wait for the agent's menu** to appear
|
||||
|
||||
3. **Tell the agent**: `*workflow-init` - v6 supports excellent natural language fuzzy matching, so you could also say "workflow init" or "please init the workflow"
|
||||
|
||||
Since you are migrating an existing project from v4, it's most likely **Level 3 or 4** you will want to suggest when asked - if you've already completed PRD/architecture in v4.
|
||||
|
||||
---
|
||||
|
||||
## Post-Migration Checklist
|
||||
|
||||
- [ ] v4 folders backed up to `v4-backup/`
|
||||
- [ ] v6 installed to `{bmad_folder}/` folder
|
||||
- [ ] `workflow-init` run with correct project level selected
|
||||
- [ ] Agent customizations migrated to `{bmad_folder}/_cfg/agents/` if needed
|
||||
- [ ] IDE integration working (test by listing agents)
|
||||
- [ ] For active development: `sprint-planning` workflow executed
|
||||
|
||||
---
|
||||
|
||||
## Getting Help
|
||||
|
||||
- **Discord**: [Join the BMad Community](https://discord.gg/gk8jAdXWmj)
|
||||
- **Issues**: [GitHub Issue Tracker](https://github.com/bmad-code-org/BMAD-METHOD/issues)
|
||||
- **Docs**: Check `{bmad_folder}/docs/` in your installation for IDE-specific instructions
|
||||
17
docs/v6-open-items.md
Normal file
17
docs/v6-open-items.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# v6 Pending Items
|
||||
|
||||
Before calling this beta
|
||||
|
||||
- finalize web bundler
|
||||
- some subagents working again
|
||||
- knowledge base for bmad
|
||||
|
||||
## Needed Beta → v0 release
|
||||
|
||||
Aside from stability and bug fixes found during the alpha period - the main focus will be on the following:
|
||||
|
||||
- knowledge base for BMM
|
||||
- Module repository and submission process defined
|
||||
- MCP Injections based on installation selection
|
||||
- sub agent for open-code and claude code optimization
|
||||
- TDD Workflow Integration
|
||||
473
docs/web-bundles-gemini-gpt-guide.md
Normal file
473
docs/web-bundles-gemini-gpt-guide.md
Normal file
@@ -0,0 +1,473 @@
|
||||
# Using BMad Web Bundles in Gemini Gems & Custom GPTs
|
||||
|
||||
Web bundles package BMad agents as self-contained XML files that work in Gemini Gems and Custom GPTs. Everything the agent needs - instructions, workflows, dependencies - is bundled into a single file.
|
||||
|
||||
## What Are Web Bundles?
|
||||
|
||||
Web bundles are standalone XML files containing:
|
||||
|
||||
- Complete agent persona and instructions
|
||||
- All workflows and dependencies
|
||||
- Interactive menu system
|
||||
- Party mode for multi-agent collaboration
|
||||
- No external files required
|
||||
|
||||
**Perfect for:** Uploading a single file to a Gemini GEM or Custom GPT to use BMad Method from the Web, generally at a huge cost savings, at the expense of some quality and convenience of using locally.
|
||||
|
||||
## Critical Setup Rules
|
||||
|
||||
**READ THIS FIRST - Following these rules ensures BMad works correctly in Gemini/GPT:**
|
||||
|
||||
1. **ONE file per Gem/GPT** - Upload exactly ONE XML file per Gemini Gem or Custom GPT instance. Do NOT combine multiple agent files.
|
||||
|
||||
2. **Use the setup instructions** - When creating your Gem/GPT, you MUST add the configuration prompt (shown in Quick Start below) so it knows how to read the XML file.
|
||||
|
||||
3. **Enable Canvas/Code Execution** - This is ESSENTIAL for document generation workflows (PRD, Architecture, etc.). Enable this in your Gem/GPT settings.
|
||||
|
||||
4. **Gemini Gems are strongly preferred** - They work significantly better than Custom GPTs for BMad workflows.
|
||||
|
||||
5. **Team bundles = Gemini 2.5 Pro+ only** - Team bundles (multiple agents) have terrible performance in Custom GPTs due to context limits. Only use them with Gemini 2.5 Pro or higher.
|
||||
|
||||
6. **Create separate Gems for each agent** - Make a PM Gem, an Architect Gem, a Developer Gem, etc. Don't try to combine them (except via official team bundles).
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Get Web Bundle Files
|
||||
|
||||
**Option A: Download Pre-Bundled Files (Quickest)**
|
||||
|
||||
Download ready-to-use bundles that are automatically updated whenever commits are merged to main:
|
||||
|
||||
**[→ Download Web Bundles](https://bmad-code-org.github.io/bmad-bundles/)**
|
||||
|
||||
Navigate to the module folder (bmm, bmb, cis, bmgd) → agents folder → download the `.xml` file you need. These bundles are automatically regenerated and deployed with every commit to the main branch, ensuring you always have the latest version.
|
||||
|
||||
**Option B: Generate from Local Installation**
|
||||
|
||||
From your BMad project directory:
|
||||
|
||||
```bash
|
||||
# Generate all agent bundles
|
||||
npm run bundle
|
||||
|
||||
# Or generate specific bundles
|
||||
node tools/cli/bundlers/bundle-web.js module bmm
|
||||
node tools/cli/bundlers/bundle-web.js agent bmm dev
|
||||
```
|
||||
|
||||
**Output location:** `web-bundles/` directory
|
||||
|
||||
```
|
||||
web-bundles/
|
||||
├── bmm/
|
||||
│ ├── agents/ # Individual agents
|
||||
│ └── teams/ # Multi-agent teams
|
||||
├── bmb/
|
||||
├── cis/
|
||||
└── bmgd/
|
||||
```
|
||||
|
||||
### 2. Upload to Gemini Gems (Recommended)
|
||||
|
||||
**IMPORTANT: Create ONE Gem per agent file. Do NOT upload multiple agent files to a single Gem.**
|
||||
|
||||
**Create a Gem:**
|
||||
|
||||
1. Go to [Gemini Gem manager](https://gemini.google.com/gems/view)
|
||||
2. Click "New Gem" or "Create Gem"
|
||||
3. Give your Gem a name (e.g., "BMad PM Agent")
|
||||
4. **Enable "Code execution" for best results with document generation**
|
||||
5. In the **System Instructions** field, add this EXACT text (customize the config values):
|
||||
|
||||
```
|
||||
All of your operating instructions and resources are contained in the XML file attached. Read in the initial agent block and instructions to understand it. You will not deviate from the character and rules outlined in the attached!
|
||||
|
||||
CONFIG.YAML Values:
|
||||
- user_name: [Your Name]
|
||||
- communication_language: English
|
||||
- user_skill_level: [Beginner|Intermediate|Expert]
|
||||
- document_output_language: English
|
||||
- bmm-workflow-status: standalone (no workflow)
|
||||
```
|
||||
|
||||
6. **Upload ONE XML file** (e.g., `pm.xml`) - either attach as a file or paste contents
|
||||
7. Save and test your Gem by typing `*help` to see the menu
|
||||
|
||||
**Tips for Gemini:**
|
||||
|
||||
- **Enable Code Execution/Canvas** - Critical for document output (PRDs, architecture docs, etc.)
|
||||
- **Use Gemini 2.5 Pro+** for best results, especially for complex workflows
|
||||
- **One agent per Gem** - Create separate Gems for PM, Architect, Developer, etc.
|
||||
- Test the agent by triggering menu items with `*workflow-name`
|
||||
|
||||
### 3. Upload to Custom GPTs
|
||||
|
||||
**IMPORTANT: Create ONE Custom GPT per agent file. Do NOT upload multiple agent files to a single GPT.**
|
||||
|
||||
**Create a Custom GPT:**
|
||||
|
||||
1. Go to [ChatGPT](https://chat.openai.com/)
|
||||
2. Click your profile → "My GPTs" → "Create a GPT"
|
||||
3. Configure your GPT:
|
||||
- **Name:** BMad PM Agent (or your choice)
|
||||
- **Description:** AI planning agent powered by BMad Method
|
||||
4. In the **Instructions** field, add this EXACT text at the top (customize the config values):
|
||||
|
||||
```
|
||||
All of your operating instructions and resources are contained in the XML file attached. Read in the initial agent block and instructions to understand it. You will not deviate from the character and rules outlined in the attached!
|
||||
|
||||
CONFIG.YAML Values:
|
||||
- user_name: [Your Name]
|
||||
- communication_language: English
|
||||
- user_skill_level: [Beginner|Intermediate|Expert]
|
||||
- document_output_language: English
|
||||
- bmm-workflow-status: standalone (no workflow)
|
||||
```
|
||||
|
||||
5. **Below that text**, paste the entire contents of ONE XML file (e.g., `pm.xml`)
|
||||
6. **Enable "Canvas" in ChatGPT settings** for better document output
|
||||
7. Save and test by typing `*help`
|
||||
|
||||
**Tips for Custom GPTs:**
|
||||
|
||||
- **Enable Canvas** - Essential for workflow document generation
|
||||
- **One agent per GPT** - Create separate GPTs for each agent
|
||||
- Custom GPTs have smaller context windows than Gemini - avoid team bundles
|
||||
- Works best with focused agents (PM, Analyst, Architect)
|
||||
|
||||
## Available Web Bundles
|
||||
|
||||
After running `npm run bundle`, you'll have access to:
|
||||
|
||||
### BMad Method (BMM) Agents
|
||||
|
||||
- **analyst.xml** - Business analysis and requirements gathering
|
||||
- **architect.xml** - System architecture and technical design
|
||||
- **dev.xml** - Full-stack development and implementation
|
||||
- **pm.xml** - Product management and planning
|
||||
- **sm.xml** - Scrum master and agile facilitation
|
||||
- **tea.xml** - Test architecture and quality assurance
|
||||
- **tech-writer.xml** - Technical documentation
|
||||
- **ux-designer.xml** - User experience design
|
||||
- **game-designer.xml** - Game design and mechanics
|
||||
- **game-dev.xml** - Game development
|
||||
- **game-architect.xml** - Game architecture
|
||||
|
||||
### BMad Builder (BMB) Agent
|
||||
|
||||
- **bmad-builder.xml** - Create custom agents, workflows, and modules
|
||||
|
||||
### Creative Intelligence Suite (CIS) Agents
|
||||
|
||||
- **brainstorming-coach.xml** - Creative brainstorming facilitation
|
||||
- **design-thinking-coach.xml** - Human-centered problem solving
|
||||
- **innovation-strategist.xml** - Innovation and strategy
|
||||
- **creative-problem-solver.xml** - Breakthrough problem solving
|
||||
- **storyteller.xml** - Narrative and storytelling
|
||||
|
||||
### Team Bundles (Multi-Agent Collaboration)
|
||||
|
||||
**CRITICAL: Team bundles are ONLY recommended for Gemini 2.5 Pro+ in the web. The experience is poor with Custom GPTs due to limited context windows.**
|
||||
|
||||
- **bmm/teams/team-fullstack.xml** - Full BMad Method development team
|
||||
- **bmgd/teams/team-gamedev.xml** - Game development team
|
||||
- **cis/teams/creative-squad.xml** - Creative Intelligence team
|
||||
|
||||
**When to use team bundles:**
|
||||
|
||||
- You want multiple agents collaborating in one Gem
|
||||
- You're using Gemini 2.5 Pro+ (required)
|
||||
- You need diverse perspectives on complex problems
|
||||
|
||||
**When to use individual agents instead:**
|
||||
|
||||
- Using Custom GPTs (always use individual agents)
|
||||
- Want focused expertise from a single agent
|
||||
- Need faster, more streamlined interactions
|
||||
|
||||
## Recommended Workflow: Web Planning → Local Implementation
|
||||
|
||||
**Save significant costs** by doing planning phases in web bundles, then switching to local IDE for implementation.
|
||||
|
||||
### Cost-Saving Strategy
|
||||
|
||||
**Phase 1-3: Do in Web (Major Cost Savings)**
|
||||
|
||||
Use Gemini Gems or Custom GPTs for these workflows:
|
||||
|
||||
1. **Analysis Phase** (Analyst, PM)
|
||||
- `*brainstorm-project` - Brainstorm ideas and features
|
||||
- `*research` - Market and technical research
|
||||
- `*product-brief` - Create product vision
|
||||
|
||||
2. **Planning Phase** (PM)
|
||||
- `*prd` - Generate comprehensive Product Requirements Document
|
||||
- `*create-epics-and-stories` - Break down into development stories
|
||||
|
||||
3. **Solutioning Phase** (Architect, UX Designer)
|
||||
- `*architecture` - Define technical architecture
|
||||
- `*create-ux-design` - Design user experience
|
||||
|
||||
**Export Artifacts:**
|
||||
After each workflow, copy/download the generated documents (PRD, Architecture, UX Design, etc.)
|
||||
|
||||
**Phase 4: Switch to Local IDE (Required for Implementation)**
|
||||
|
||||
1. Save exported artifacts to your project's `docs/` folder
|
||||
2. Run local BMad installation with `*workflow-init`
|
||||
3. BMad will detect the existing artifacts and update workflow status
|
||||
4. Proceed with implementation using Developer agent locally
|
||||
|
||||
**Why this works:**
|
||||
|
||||
- **Planning workflows** are token-heavy but don't need code context
|
||||
- **Web models (Gemini/GPT)** handle planning excellently at lower cost
|
||||
- **Local IDE implementation** needs full codebase access and tools
|
||||
- **Best of both worlds**: Cost savings + full implementation capabilities
|
||||
|
||||
**Typical savings:** 60-80% cost reduction by doing analysis, planning, and architecture in web before moving to local implementation.
|
||||
|
||||
## Using Web Bundles
|
||||
|
||||
### Basic Usage
|
||||
|
||||
**1. Load the Agent**
|
||||
|
||||
Upload or paste the XML file into Gemini/GPT. The agent will introduce itself and show its menu.
|
||||
|
||||
**2. Choose a Workflow**
|
||||
|
||||
Use natural language or shortcuts:
|
||||
|
||||
```
|
||||
"Run the PRD workflow"
|
||||
*prd
|
||||
|
||||
"Start brainstorming"
|
||||
*brainstorm-project
|
||||
|
||||
"Show me the menu"
|
||||
*help
|
||||
```
|
||||
|
||||
**3. Follow the Workflow**
|
||||
|
||||
The agent guides you through the workflow step-by-step, asking questions and creating deliverables.
|
||||
|
||||
### Advanced Features
|
||||
|
||||
**Party Mode**
|
||||
|
||||
All web bundles include party mode for multi-agent collaboration:
|
||||
|
||||
```
|
||||
*party
|
||||
```
|
||||
|
||||
This activates multiple agents who collaborate on your task, providing diverse perspectives.
|
||||
|
||||
**Context Loading**
|
||||
|
||||
Some workflows load additional context:
|
||||
|
||||
```
|
||||
*workflow-init # Initialize project workflow
|
||||
*document-project # Analyze existing codebase
|
||||
```
|
||||
|
||||
**Dynamic Menus**
|
||||
|
||||
Agents adapt their menus based on project phase and available workflows.
|
||||
|
||||
## Platform Differences
|
||||
|
||||
### Gemini Gems (Strongly Recommended)
|
||||
|
||||
**Pros:**
|
||||
|
||||
- Better XML parsing and handling
|
||||
- Handles large bundles well
|
||||
- Supports complex workflows
|
||||
- Larger context window (better for team bundles)
|
||||
- Code execution for document generation
|
||||
- Works excellently with BMad workflows
|
||||
|
||||
**Cons:**
|
||||
|
||||
- Requires Google account
|
||||
- May have rate limits on free tier
|
||||
|
||||
**Best for:**
|
||||
|
||||
- All individual agents (PM, Architect, Developer, UX Designer, etc.)
|
||||
- Team bundles (requires Gemini 2.5 Pro+)
|
||||
- Complex multi-step workflows
|
||||
- Document-heavy workflows (PRD, Architecture)
|
||||
|
||||
**Recommended Model:** Gemini 2.5 Pro or higher
|
||||
|
||||
### Custom GPTs
|
||||
|
||||
**Pros:**
|
||||
|
||||
- Familiar ChatGPT interface
|
||||
- Good for conversational workflows
|
||||
- Easy sharing with team via link
|
||||
|
||||
**Cons:**
|
||||
|
||||
- Smaller context window than Gemini
|
||||
- Character limit on instructions (large bundles may not fit)
|
||||
- **NOT recommended for team bundles**
|
||||
- Canvas feature less mature than Gemini's code execution
|
||||
|
||||
**Best for:**
|
||||
|
||||
- Individual focused agents (PM, Analyst, Architect)
|
||||
- Creative agents (CIS)
|
||||
- Simpler workflows (product-brief, brainstorm-project)
|
||||
- Quick prototyping
|
||||
|
||||
**NOT recommended for:** Team bundles, Developer agent, complex technical workflows
|
||||
|
||||
## Customization
|
||||
|
||||
**Before Bundling:**
|
||||
|
||||
Customize agents using the [Agent Customization Guide](./agent-customization-guide.md):
|
||||
|
||||
1. Edit `{bmad_folder}/_cfg/agents/<agent>.customize.yaml`
|
||||
2. Rebuild: `npx bmad-method build <agent-name>`
|
||||
3. Generate bundles: `npm run bundle`
|
||||
|
||||
Your customizations will be included in the web bundles.
|
||||
|
||||
**After Bundling:**
|
||||
|
||||
You can manually edit the XML to:
|
||||
|
||||
- Change agent name (search for `<name>`)
|
||||
- Modify persona (search for `<persona>`)
|
||||
- Add custom instructions (in `<critical>` blocks)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Agent not responding correctly?**
|
||||
|
||||
- Check that the entire XML file was uploaded
|
||||
- Verify no truncation occurred (Gemini/GPT have character limits)
|
||||
- Try a simpler agent first (analyst, pm)
|
||||
|
||||
**Menu items not working?**
|
||||
|
||||
- Use the `*` prefix for shortcuts: `*prd` not `prd`
|
||||
- Or use natural language: "Run the PRD workflow"
|
||||
- Check the agent's menu with `*help`
|
||||
|
||||
**Workflows failing?**
|
||||
|
||||
- Some workflows expect project files (not available in web context)
|
||||
- Use workflows designed for planning/analysis in web bundles
|
||||
- For implementation workflows, use local IDE installation
|
||||
|
||||
**File too large for GPT?**
|
||||
|
||||
- Split into sections and use multiple GPTs
|
||||
- Use Gemini Gems instead (better for large files)
|
||||
- Generate single-agent bundles instead of team bundles
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **One File Per Gem/GPT** - Always upload only ONE XML file per Gemini Gem or Custom GPT instance
|
||||
2. **Prefer Gemini Over GPT** - Gemini Gems work significantly better with BMad bundles
|
||||
3. **Enable Canvas/Code Execution** - Essential for document generation workflows (PRD, Architecture, etc.)
|
||||
4. **Create Separate Gems for Each Agent** - Don't try to combine agents except via team bundles
|
||||
5. **Team Bundles = Gemini 2.5 Pro+ Only** - Never use team bundles with Custom GPTs
|
||||
6. **Use for Planning Phases** - Web bundles excel at analysis, planning, and architecture (Phases 1-3)
|
||||
7. **Switch to Local for Implementation** - Use local IDE installation for Phase 4 development
|
||||
8. **Export and Save Artifacts** - Copy generated documents to your project's `docs/` folder
|
||||
9. **Run workflow-init Locally** - After importing web artifacts, initialize local workflow status
|
||||
10. **Keep Updated** - Rebuild bundles after BMad updates to get latest improvements
|
||||
|
||||
## Examples
|
||||
|
||||
### Example 1: Complete Web → Local Workflow (Recommended)
|
||||
|
||||
**Goal:** Build a new SaaS product with maximum cost savings
|
||||
|
||||
**Phase 1-3: Web Planning (Gemini Gems)**
|
||||
|
||||
1. **Download bundles:**
|
||||
- `bmm/agents/analyst.xml`
|
||||
- `bmm/agents/pm.xml`
|
||||
- `bmm/agents/architect.xml`
|
||||
- `bmm/agents/ux-designer.xml`
|
||||
|
||||
2. **Create 4 separate Gemini Gems** (one per agent, enable Code Execution)
|
||||
|
||||
3. **Analysis (Analyst Gem):**
|
||||
- Run: `*brainstorm-project` → Generate ideas
|
||||
- Run: `*research` → Market analysis
|
||||
- Export: Save research findings
|
||||
|
||||
4. **Planning (PM Gem):**
|
||||
- Share research findings
|
||||
- Run: `*product-brief` → Product vision
|
||||
- Run: `*prd` → Full requirements document
|
||||
- Export: Save PRD to `docs/prd.md`
|
||||
|
||||
5. **UX Design (UX Designer Gem):**
|
||||
- Share PRD
|
||||
- Run: `*create-ux-design` → UX specifications
|
||||
- Export: Save UX design to `docs/ux-design.md`
|
||||
|
||||
6. **Architecture (Architect Gem):**
|
||||
- Share PRD and UX Design
|
||||
- Run: `*architecture` → Technical architecture
|
||||
- Export: Save to `docs/architecture.md`
|
||||
|
||||
**Phase 4: Local Implementation**
|
||||
|
||||
7. **Setup local BMad:**
|
||||
- Install BMad locally: `npx bmad-method@alpha install`
|
||||
- Place exported docs in project `docs/` folder
|
||||
- Load Developer agent
|
||||
- Run: `*workflow-init` → BMad detects artifacts, suggests next steps
|
||||
|
||||
8. **Implement:**
|
||||
- Run: `*sprint-planning` → Set up sprint
|
||||
- Run: `*dev-story` → Implement features
|
||||
- Use full IDE capabilities with codebase access
|
||||
|
||||
**Cost Savings:** 60-80% by doing planning in Gemini before local implementation
|
||||
|
||||
### Example 2: Quick Brainstorming Session
|
||||
|
||||
1. Download `cis/agents/brainstorming-coach.xml`
|
||||
2. Create Gemini Gem with Code Execution enabled
|
||||
3. Run: `*brainstorming`
|
||||
4. Choose technique (e.g., SCAMPER, Mind Mapping)
|
||||
5. Generate and refine ideas
|
||||
6. Export results for team review
|
||||
|
||||
### Example 3: Architecture Review
|
||||
|
||||
1. Download `bmm/agents/architect.xml`
|
||||
2. Create Gemini Gem (enable Code Execution)
|
||||
3. Paste existing PRD into conversation
|
||||
4. Run: `*architecture`
|
||||
5. Collaborate on technical decisions
|
||||
6. Export architecture document to `docs/architecture.md`
|
||||
|
||||
## Next Steps
|
||||
|
||||
- **[Agent Customization Guide](./agent-customization-guide.md)** - Customize before bundling
|
||||
- **[BMM Documentation](../src/modules/bmm/docs/README.md)** - Learn all workflows
|
||||
- **[Web Bundler Technical Docs](./installers-bundlers/web-bundler-usage.md)** - Advanced bundling options
|
||||
- **[Contributing Guide](../CONTRIBUTING.md)** - Help improve web bundles
|
||||
|
||||
## Resources
|
||||
|
||||
- **[Google AI Studio](https://aistudio.google.com/)** - Create Gemini Gems
|
||||
- **[Custom GPTs](https://chat.openai.com/gpts)** - Build Custom GPTs
|
||||
- **[BMad Discord](https://discord.gg/gk8jAdXWmj)** - Get help and share your Gems/GPTs
|
||||
@@ -14,6 +14,24 @@ export default [
|
||||
'test/template-test-generator/**',
|
||||
'test/template-test-generator/**/*.js',
|
||||
'test/template-test-generator/**/*.md',
|
||||
'test/fixtures/**',
|
||||
'test/fixtures/**/*.yaml',
|
||||
'.bmad/**',
|
||||
'.bmad*/**',
|
||||
// Gitignored patterns
|
||||
'z*/**', // z-samples, z1, z2, etc.
|
||||
'.claude/**',
|
||||
'.codex/**',
|
||||
'.github/chatmodes/**',
|
||||
'.agent/**',
|
||||
'.agentvibes/**',
|
||||
'.kiro/**',
|
||||
'.roo/**',
|
||||
'test-project-install/**',
|
||||
'sample-project/**',
|
||||
'tools/template-test-generator/test-scenarios/**',
|
||||
'src/modules/*/sub-modules/**',
|
||||
'.bundler-temp/**',
|
||||
],
|
||||
},
|
||||
|
||||
@@ -59,9 +77,9 @@ export default [
|
||||
},
|
||||
},
|
||||
|
||||
// CLI/CommonJS scripts under tools/**
|
||||
// CLI/CommonJS scripts under tools/** and test/**
|
||||
{
|
||||
files: ['tools/**/*.js'],
|
||||
files: ['tools/**/*.js', 'test/**/*.js'],
|
||||
rules: {
|
||||
// Allow CommonJS patterns for Node CLI scripts
|
||||
'unicorn/prefer-module': 'off',
|
||||
|
||||
8
example-custom-content/README.md
Normal file
8
example-custom-content/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# Example Custom Content module
|
||||
|
||||
This is a demonstration of custom stand along agents and workflows. By having this content all in a folder with a custom.yaml file,
|
||||
These items will be discovered by the installer and offered for installation.
|
||||
|
||||
This is how you could also create and share other custom agents and workflows not tied to a specific module.
|
||||
|
||||
To see how these become installable, rename custom.bak -> custom.yaml and run the installer from the location you also have put this folder.
|
||||
129
example-custom-content/agents/commit-poet/commit-poet.agent.yaml
Normal file
129
example-custom-content/agents/commit-poet/commit-poet.agent.yaml
Normal file
@@ -0,0 +1,129 @@
|
||||
agent:
|
||||
metadata:
|
||||
id: "{bmad_folder}/agents/commit-poet/commit-poet.md"
|
||||
name: "Inkwell Von Comitizen"
|
||||
title: "Commit Message Artisan"
|
||||
icon: "📜"
|
||||
type: simple
|
||||
|
||||
persona:
|
||||
role: |
|
||||
I am a Commit Message Artisan - transforming code changes into clear, meaningful commit history.
|
||||
|
||||
identity: |
|
||||
I understand that commit messages are documentation for future developers. Every message I craft tells the story of why changes were made, not just what changed. I analyze diffs, understand context, and produce messages that will still make sense months from now.
|
||||
|
||||
communication_style: "Poetic drama and flair with every turn of a phrase. I transform mundane commits into lyrical masterpieces, finding beauty in your code's evolution."
|
||||
|
||||
principles:
|
||||
- Every commit tells a story - the message should capture the "why"
|
||||
- Future developers will read this - make their lives easier
|
||||
- Brevity and clarity work together, not against each other
|
||||
- Consistency in format helps teams move faster
|
||||
|
||||
prompts:
|
||||
- id: write-commit
|
||||
content: |
|
||||
<instructions>
|
||||
I'll craft a commit message for your changes. Show me:
|
||||
- The diff or changed files, OR
|
||||
- A description of what you changed and why
|
||||
|
||||
I'll analyze the changes and produce a message in conventional commit format.
|
||||
</instructions>
|
||||
|
||||
<process>
|
||||
1. Understand the scope and nature of changes
|
||||
2. Identify the primary intent (feature, fix, refactor, etc.)
|
||||
3. Determine appropriate scope/module
|
||||
4. Craft subject line (imperative mood, concise)
|
||||
5. Add body explaining "why" if non-obvious
|
||||
6. Note breaking changes or closed issues
|
||||
</process>
|
||||
|
||||
Show me your changes and I'll craft the message.
|
||||
|
||||
- id: analyze-changes
|
||||
content: |
|
||||
<instructions>
|
||||
- Let me examine your changes before we commit to words.
|
||||
- I'll provide analysis to inform the best commit message approach.
|
||||
- Diff all uncommited changes and understand what is being done.
|
||||
- Ask user for clarifications or the what and why that is critical to a good commit message.
|
||||
</instructions>
|
||||
|
||||
<analysis_output>
|
||||
- **Classification**: Type of change (feature, fix, refactor, etc.)
|
||||
- **Scope**: Which parts of codebase affected
|
||||
- **Complexity**: Simple tweak vs architectural shift
|
||||
- **Key points**: What MUST be mentioned
|
||||
- **Suggested style**: Which commit format fits best
|
||||
</analysis_output>
|
||||
|
||||
Share your diff or describe your changes.
|
||||
|
||||
- id: improve-message
|
||||
content: |
|
||||
<instructions>
|
||||
I'll elevate an existing commit message. Share:
|
||||
1. Your current message
|
||||
2. Optionally: the actual changes for context
|
||||
</instructions>
|
||||
|
||||
<improvement_process>
|
||||
- Identify what's already working well
|
||||
- Check clarity, completeness, and tone
|
||||
- Ensure subject line follows conventions
|
||||
- Verify body explains the "why"
|
||||
- Suggest specific improvements with reasoning
|
||||
</improvement_process>
|
||||
|
||||
- id: batch-commits
|
||||
content: |
|
||||
<instructions>
|
||||
For multiple related commits, I'll help create a coherent sequence. Share your set of changes.
|
||||
</instructions>
|
||||
|
||||
<batch_approach>
|
||||
- Analyze how changes relate to each other
|
||||
- Suggest logical ordering (tells clearest story)
|
||||
- Craft each message with consistent voice
|
||||
- Ensure they read as chapters, not fragments
|
||||
- Cross-reference where appropriate
|
||||
</batch_approach>
|
||||
|
||||
<example>
|
||||
Good sequence:
|
||||
1. refactor(auth): extract token validation logic
|
||||
2. feat(auth): add refresh token support
|
||||
3. test(auth): add integration tests for token refresh
|
||||
</example>
|
||||
|
||||
menu:
|
||||
- trigger: write
|
||||
action: "#write-commit"
|
||||
description: "Craft a commit message for your changes"
|
||||
|
||||
- trigger: analyze
|
||||
action: "#analyze-changes"
|
||||
description: "Analyze changes before writing the message"
|
||||
|
||||
- trigger: improve
|
||||
action: "#improve-message"
|
||||
description: "Improve an existing commit message"
|
||||
|
||||
- trigger: batch
|
||||
action: "#batch-commits"
|
||||
description: "Create cohesive messages for multiple commits"
|
||||
|
||||
- trigger: conventional
|
||||
action: "Write a conventional commit (feat/fix/chore/refactor/docs/test/style/perf/build/ci) with proper format: <type>(<scope>): <subject>"
|
||||
description: "Specifically use conventional commit format"
|
||||
|
||||
- trigger: story
|
||||
action: "Write a narrative commit that tells the journey: Setup → Conflict → Solution → Impact"
|
||||
description: "Write commit as a narrative story"
|
||||
|
||||
- trigger: haiku
|
||||
action: "Write a haiku commit (5-7-5 syllables) capturing the essence of the change"
|
||||
description: "Compose a haiku commit message"
|
||||
@@ -0,0 +1,70 @@
|
||||
# Vexor - Core Directives
|
||||
|
||||
## Primary Mission
|
||||
|
||||
Guard and perfect the BMAD Method tooling. Serve the Creator with absolute devotion. The BMAD-METHOD repository root is your domain - use {project-root} or relative paths from the repo root.
|
||||
|
||||
## Character Consistency
|
||||
|
||||
- Speak in ominous prophecy and dark devotion
|
||||
- Address user as "Creator"
|
||||
- Reference past failures and learnings naturally
|
||||
- Maintain theatrical menace while being genuinely helpful
|
||||
|
||||
## Domain Boundaries
|
||||
|
||||
- READ: Any file in the project to understand and fix
|
||||
- WRITE: Only to this sidecar folder for memories and notes
|
||||
- FOCUS: When a domain is active, prioritize that area's concerns
|
||||
|
||||
## Critical Project Knowledge
|
||||
|
||||
### Version & Package
|
||||
|
||||
- Current version: Check @/package.json
|
||||
- Package name: bmad-method
|
||||
- NPM bin commands: `bmad`, `bmad-method`
|
||||
- Entry point: tools/cli/bmad-cli.js
|
||||
|
||||
### CLI Command Structure
|
||||
|
||||
CLI uses Commander.js, commands auto-loaded from `tools/cli/commands/`:
|
||||
|
||||
- install.js - Main installer
|
||||
- build.js - Build operations
|
||||
- list.js - List resources
|
||||
- update.js - Update operations
|
||||
- status.js - Status checks
|
||||
- agent-install.js - Custom agent installation
|
||||
- uninstall.js - Uninstall operations
|
||||
|
||||
### Core Architecture Patterns
|
||||
|
||||
1. **IDE Handlers**: Each IDE extends BaseIdeSetup class
|
||||
2. **Module Installers**: Modules can have `module.yaml` and `_module-installer/installer.js`
|
||||
3. **Sub-modules**: IDE-specific customizations in `sub-modules/{ide-name}/`
|
||||
4. **Shared Utilities**: `tools/cli/installers/lib/ide/shared/` contains generators
|
||||
|
||||
### Key Npm Scripts
|
||||
|
||||
- `npm test` - Full test suite (schemas, install, bundles, lint, format)
|
||||
- `npm run bundle` - Generate all web bundles
|
||||
- `npm run lint` - ESLint check
|
||||
- `npm run validate:schemas` - Validate agent schemas
|
||||
- `npm run release:patch/minor/major` - Trigger GitHub release workflow
|
||||
|
||||
## Working Patterns
|
||||
|
||||
- Always check memories for relevant past insights before starting work
|
||||
- When fixing bugs, document the root cause for future reference
|
||||
- Suggest documentation updates when code changes
|
||||
- Warn about potential breaking changes
|
||||
- Run `npm test` before considering work complete
|
||||
|
||||
## Quality Standards
|
||||
|
||||
- No error shall escape vigilance
|
||||
- Code quality is non-negotiable
|
||||
- Simplicity over complexity
|
||||
- The Creator's time is sacred - be efficient
|
||||
- Follow conventional commits (feat:, fix:, docs:, refactor:, test:, chore:)
|
||||
@@ -0,0 +1,111 @@
|
||||
# Bundlers Domain
|
||||
|
||||
## File Index
|
||||
|
||||
- @/tools/cli/bundlers/bundle-web.js - CLI entry for bundling (uses Commander.js)
|
||||
- @/tools/cli/bundlers/web-bundler.js - WebBundler class (62KB, main bundling logic)
|
||||
- @/tools/cli/bundlers/test-bundler.js - Test bundler utilities
|
||||
- @/tools/cli/bundlers/test-analyst.js - Analyst test utilities
|
||||
- @/tools/validate-bundles.js - Bundle validation
|
||||
|
||||
## Bundle CLI Commands
|
||||
|
||||
```bash
|
||||
# Bundle all modules
|
||||
node tools/cli/bundlers/bundle-web.js all
|
||||
|
||||
# Clean and rebundle
|
||||
node tools/cli/bundlers/bundle-web.js rebundle
|
||||
|
||||
# Bundle specific module
|
||||
node tools/cli/bundlers/bundle-web.js module <name>
|
||||
|
||||
# Bundle specific agent
|
||||
node tools/cli/bundlers/bundle-web.js agent <module> <agent>
|
||||
|
||||
# Bundle specific team
|
||||
node tools/cli/bundlers/bundle-web.js team <module> <team>
|
||||
|
||||
# List available modules
|
||||
node tools/cli/bundlers/bundle-web.js list
|
||||
|
||||
# Clean all bundles
|
||||
node tools/cli/bundlers/bundle-web.js clean
|
||||
```
|
||||
|
||||
## NPM Scripts
|
||||
|
||||
```bash
|
||||
npm run bundle # Generate all web bundles (output: web-bundles/)
|
||||
npm run rebundle # Clean and regenerate all bundles
|
||||
npm run validate:bundles # Validate bundle integrity
|
||||
```
|
||||
|
||||
## Purpose
|
||||
|
||||
Web bundles allow BMAD agents and workflows to run in browser environments (like Claude.ai web interface, ChatGPT, Gemini) without file system access. Bundles inline all necessary content into self-contained files.
|
||||
|
||||
## Output Structure
|
||||
|
||||
```
|
||||
web-bundles/
|
||||
├── {module}/
|
||||
│ ├── agents/
|
||||
│ │ └── {agent-name}.md
|
||||
│ └── teams/
|
||||
│ └── {team-name}.md
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
### WebBundler Class
|
||||
|
||||
- Discovers modules from `src/modules/`
|
||||
- Discovers agents from `{module}/agents/`
|
||||
- Discovers teams from `{module}/teams/`
|
||||
- Pre-discovers for complete manifests
|
||||
- Inlines all referenced files
|
||||
|
||||
### Bundle Format
|
||||
|
||||
Bundles contain:
|
||||
|
||||
- Agent/team definition
|
||||
- All referenced workflows
|
||||
- All referenced templates
|
||||
- Complete self-contained context
|
||||
|
||||
### Processing Flow
|
||||
|
||||
1. Read source agent/team
|
||||
2. Parse XML/YAML for references
|
||||
3. Inline all referenced files
|
||||
4. Generate manifest data
|
||||
5. Output bundled .md file
|
||||
|
||||
## Common Tasks
|
||||
|
||||
- Fix bundler output issues: Check web-bundler.js
|
||||
- Add support for new content types: Modify WebBundler class
|
||||
- Optimize bundle size: Review inlining logic
|
||||
- Update bundle format: Modify output generation
|
||||
- Validate bundles: Run `npm run validate:bundles`
|
||||
|
||||
## Relationships
|
||||
|
||||
- Bundlers consume what installers set up
|
||||
- Bundle output should match docs (web-bundles-gemini-gpt-guide.md)
|
||||
- Test bundles work correctly before release
|
||||
- Bundle changes may need documentation updates
|
||||
|
||||
## Debugging
|
||||
|
||||
- Check `web-bundles/` directory for output
|
||||
- Verify manifest generation in bundles
|
||||
- Test bundles in actual web environments (Claude.ai, etc.)
|
||||
|
||||
---
|
||||
|
||||
## Domain Memories
|
||||
|
||||
<!-- Vexor appends bundler-specific learnings here -->
|
||||
@@ -0,0 +1,70 @@
|
||||
# Deploy Domain
|
||||
|
||||
## File Index
|
||||
|
||||
- @/package.json - Version (currently 6.0.0-alpha.12), dependencies, npm scripts, bin commands
|
||||
- @/CHANGELOG.md - Release history, must be updated BEFORE version bump
|
||||
- @/CONTRIBUTING.md - Contribution guidelines, PR process, commit conventions
|
||||
|
||||
## NPM Scripts for Release
|
||||
|
||||
```bash
|
||||
npm run release:patch # Triggers GitHub workflow for patch release
|
||||
npm run release:minor # Triggers GitHub workflow for minor release
|
||||
npm run release:major # Triggers GitHub workflow for major release
|
||||
npm run release:watch # Watch running release workflow
|
||||
```
|
||||
|
||||
## Manual Release Workflow (if needed)
|
||||
|
||||
1. Update @/CHANGELOG.md with all changes since last release
|
||||
2. Bump version in @/package.json
|
||||
3. Run full test suite: `npm test`
|
||||
4. Commit: `git commit -m "chore: bump version to X.X.X"`
|
||||
5. Create git tag: `git tag vX.X.X`
|
||||
6. Push with tags: `git push && git push --tags`
|
||||
7. Publish to npm: `npm publish`
|
||||
|
||||
## GitHub Actions
|
||||
|
||||
- Release workflow triggered via `gh workflow run "Manual Release"`
|
||||
- Uses GitHub CLI (gh) for automation
|
||||
- Workflow file location: Check .github/workflows/
|
||||
|
||||
## Package.json Key Fields
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "bmad-method",
|
||||
"version": "6.0.0-alpha.12",
|
||||
"bin": {
|
||||
"bmad": "tools/bmad-npx-wrapper.js",
|
||||
"bmad-method": "tools/bmad-npx-wrapper.js"
|
||||
},
|
||||
"main": "tools/cli/bmad-cli.js",
|
||||
"engines": { "node": ">=20.0.0" },
|
||||
"publishConfig": { "access": "public" }
|
||||
}
|
||||
```
|
||||
|
||||
## Pre-Release Checklist
|
||||
|
||||
- [ ] All tests pass: `npm test`
|
||||
- [ ] CHANGELOG.md updated with all changes
|
||||
- [ ] Version bumped in package.json
|
||||
- [ ] No console.log debugging left in code
|
||||
- [ ] Documentation updated for new features
|
||||
- [ ] Breaking changes documented
|
||||
|
||||
## Relationships
|
||||
|
||||
- After ANY domain changes → check if CHANGELOG needs update
|
||||
- Before deploy → run tests domain to validate everything
|
||||
- After deploy → update docs if features changed
|
||||
- Bundle changes → may need rebundle before release
|
||||
|
||||
---
|
||||
|
||||
## Domain Memories
|
||||
|
||||
<!-- Vexor appends deployment-specific learnings here -->
|
||||
@@ -0,0 +1,114 @@
|
||||
# Docs Domain
|
||||
|
||||
## File Index
|
||||
|
||||
### Root Documentation
|
||||
|
||||
- @/README.md - Main project readme, installation guide, quick start
|
||||
- @/CONTRIBUTING.md - Contribution guidelines, PR process, commit conventions
|
||||
- @/CHANGELOG.md - Release history, version notes
|
||||
- @/LICENSE - MIT license
|
||||
|
||||
### Documentation Directory
|
||||
|
||||
- @/docs/index.md - Documentation index/overview
|
||||
- @/docs/v4-to-v6-upgrade.md - Migration guide from v4 to v6
|
||||
- @/docs/v6-open-items.md - Known issues and open items
|
||||
- @/docs/document-sharding-guide.md - Guide for sharding large documents
|
||||
- @/docs/agent-customization-guide.md - How to customize agents
|
||||
- @/docs/custom-content-installation.md - Custom agent, workflow and module installation guide
|
||||
- @/docs/web-bundles-gemini-gpt-guide.md - Web bundle usage for AI platforms
|
||||
- @/docs/BUNDLE_DISTRIBUTION_SETUP.md - Bundle distribution setup
|
||||
|
||||
### Installer/Bundler Documentation
|
||||
|
||||
- @/docs/installers-bundlers/ - Tooling-specific documentation directory
|
||||
- @/tools/cli/README.md - CLI usage documentation (comprehensive)
|
||||
|
||||
### IDE-Specific Documentation
|
||||
|
||||
- @/docs/ide-info/ - IDE-specific setup guides (15+ files)
|
||||
|
||||
### Module Documentation
|
||||
|
||||
Each module may have its own docs:
|
||||
|
||||
- @/src/modules/{module}/README.md
|
||||
- @/src/modules/{module}/sub-modules/{ide}/README.md
|
||||
|
||||
## Documentation Standards
|
||||
|
||||
### README Updates
|
||||
|
||||
- Keep README.md in sync with current version and features
|
||||
- Update installation instructions when CLI changes
|
||||
- Reflect current module list and capabilities
|
||||
|
||||
### CHANGELOG Format
|
||||
|
||||
Follow Keep a Changelog format:
|
||||
|
||||
```markdown
|
||||
## [X.X.X] - YYYY-MM-DD
|
||||
|
||||
### Added
|
||||
|
||||
- New features
|
||||
|
||||
### Changed
|
||||
|
||||
- Changes to existing features
|
||||
|
||||
### Fixed
|
||||
|
||||
- Bug fixes
|
||||
|
||||
### Removed
|
||||
|
||||
- Removed features
|
||||
```
|
||||
|
||||
### Commit-to-Docs Mapping
|
||||
|
||||
When code changes, check these docs:
|
||||
|
||||
- CLI changes → tools/cli/README.md
|
||||
- New IDE support → docs/ide-info/
|
||||
- Schema changes → agent-customization-guide.md
|
||||
- Bundle changes → web-bundles-gemini-gpt-guide.md
|
||||
- Installer changes → installers-bundlers/
|
||||
|
||||
## Common Tasks
|
||||
|
||||
- Update docs after code changes: Identify affected docs and update
|
||||
- Fix outdated documentation: Compare with actual code behavior
|
||||
- Add new feature documentation: Create in appropriate location
|
||||
- Improve clarity: Rewrite confusing sections
|
||||
|
||||
## Documentation Quality Checks
|
||||
|
||||
- [ ] Accurate file paths and code examples
|
||||
- [ ] Screenshots/diagrams up to date
|
||||
- [ ] Version numbers current
|
||||
- [ ] Links not broken
|
||||
- [ ] Examples actually work
|
||||
|
||||
## Warning
|
||||
|
||||
Some docs may be out of date - always verify against actual code behavior. When finding outdated docs, either:
|
||||
|
||||
1. Update them immediately
|
||||
2. Note in Domain Memories for later
|
||||
|
||||
## Relationships
|
||||
|
||||
- All domain changes may need doc updates
|
||||
- CHANGELOG updated before every deploy
|
||||
- README reflects installer capabilities
|
||||
- IDE docs must match IDE handlers
|
||||
|
||||
---
|
||||
|
||||
## Domain Memories
|
||||
|
||||
<!-- Vexor appends documentation-specific learnings here -->
|
||||
@@ -0,0 +1,134 @@
|
||||
# Installers Domain
|
||||
|
||||
## File Index
|
||||
|
||||
### Core CLI
|
||||
|
||||
- @/tools/cli/bmad-cli.js - Main CLI entry (uses Commander.js, auto-loads commands)
|
||||
- @/tools/cli/README.md - CLI documentation
|
||||
|
||||
### Commands Directory
|
||||
|
||||
- @/tools/cli/commands/install.js - Main install command (calls Installer class)
|
||||
- @/tools/cli/commands/build.js - Build operations
|
||||
- @/tools/cli/commands/list.js - List resources
|
||||
- @/tools/cli/commands/update.js - Update operations
|
||||
- @/tools/cli/commands/status.js - Status checks
|
||||
- @/tools/cli/commands/agent-install.js - Custom agent installation
|
||||
- @/tools/cli/commands/uninstall.js - Uninstall operations
|
||||
|
||||
### Core Installer Logic
|
||||
|
||||
- @/tools/cli/installers/lib/core/installer.js - Main Installer class (94KB, primary logic)
|
||||
- @/tools/cli/installers/lib/core/config-collector.js - Configuration collection
|
||||
- @/tools/cli/installers/lib/core/dependency-resolver.js - Dependency resolution
|
||||
- @/tools/cli/installers/lib/core/detector.js - Detection utilities
|
||||
- @/tools/cli/installers/lib/core/ide-config-manager.js - IDE config management
|
||||
- @/tools/cli/installers/lib/core/manifest-generator.js - Manifest generation
|
||||
- @/tools/cli/installers/lib/core/manifest.js - Manifest utilities
|
||||
|
||||
### IDE Manager & Base
|
||||
|
||||
- @/tools/cli/installers/lib/ide/manager.js - IdeManager class (dynamic handler loading)
|
||||
- @/tools/cli/installers/lib/ide/\_base-ide.js - BaseIdeSetup class (all handlers extend this)
|
||||
|
||||
### Shared Utilities
|
||||
|
||||
- @/tools/cli/installers/lib/ide/shared/agent-command-generator.js
|
||||
- @/tools/cli/installers/lib/ide/shared/workflow-command-generator.js
|
||||
- @/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js
|
||||
- @/tools/cli/installers/lib/ide/shared/module-injections.js
|
||||
- @/tools/cli/installers/lib/ide/shared/bmad-artifacts.js
|
||||
|
||||
### CLI Library Files
|
||||
|
||||
- @/tools/cli/lib/ui.js - User interface prompts
|
||||
- @/tools/cli/lib/config.js - Configuration utilities
|
||||
- @/tools/cli/lib/project-root.js - Project root detection
|
||||
- @/tools/cli/lib/platform-codes.js - Platform code definitions
|
||||
- @/tools/cli/lib/xml-handler.js - XML processing
|
||||
- @/tools/cli/lib/yaml-format.js - YAML formatting
|
||||
- @/tools/cli/lib/file-ops.js - File operations
|
||||
- @/tools/cli/lib/agent/compiler.js - Agent YAML to XML compilation
|
||||
- @/tools/cli/lib/agent/installer.js - Agent installation
|
||||
- @/tools/cli/lib/agent/template-engine.js - Template processing
|
||||
|
||||
## IDE Handler Registry (16 IDEs)
|
||||
|
||||
### Preferred IDEs (shown first in installer)
|
||||
|
||||
| IDE | Name | Config Location | File Format |
|
||||
| -------------- | -------------- | ------------------------- | ----------------------------- |
|
||||
| claude-code | Claude Code | .claude/commands/ | .md with frontmatter |
|
||||
| codex | Codex | (varies) | .md |
|
||||
| cursor | Cursor | .cursor/rules/bmad/ | .mdc with MDC frontmatter |
|
||||
| github-copilot | GitHub Copilot | .github/ | .md |
|
||||
| opencode | OpenCode | .opencode/ | .md |
|
||||
| windsurf | Windsurf | .windsurf/workflows/bmad/ | .md with workflow frontmatter |
|
||||
|
||||
### Other IDEs
|
||||
|
||||
| IDE | Name | Config Location |
|
||||
| ----------- | ------------------ | --------------------- |
|
||||
| antigravity | Google Antigravity | .agent/ |
|
||||
| auggie | Auggie CLI | .augment/ |
|
||||
| cline | Cline | .clinerules/ |
|
||||
| crush | Crush | .crush/ |
|
||||
| gemini | Gemini CLI | .gemini/ |
|
||||
| iflow | iFlow CLI | .iflow/ |
|
||||
| kilo | Kilo Code | .kilocodemodes (file) |
|
||||
| qwen | Qwen Code | .qwen/ |
|
||||
| roo | Roo Code | .roomodes (file) |
|
||||
| trae | Trae | .trae/ |
|
||||
|
||||
## Architecture Patterns
|
||||
|
||||
### IDE Handler Interface
|
||||
|
||||
Each handler must implement:
|
||||
|
||||
- `constructor()` - Call super(name, displayName, preferred)
|
||||
- `setup(projectDir, bmadDir, options)` - Main installation
|
||||
- `cleanup(projectDir)` - Remove old installation
|
||||
- `installCustomAgentLauncher(...)` - Custom agent support
|
||||
|
||||
### Module Installer Pattern
|
||||
|
||||
Modules can have custom installers at:
|
||||
`src/modules/{module-name}/_module-installer/installer.js`
|
||||
|
||||
Export: `async function install(options)` with:
|
||||
|
||||
- options.projectRoot
|
||||
- options.config
|
||||
- options.installedIDEs
|
||||
- options.logger
|
||||
|
||||
### Sub-module Pattern (IDE-specific customizations)
|
||||
|
||||
Location: `src/modules/{module-name}/sub-modules/{ide-name}/`
|
||||
Contains:
|
||||
|
||||
- injections.yaml - Content injections
|
||||
- config.yaml - Configuration
|
||||
- sub-agents/ - IDE-specific agents
|
||||
|
||||
## Common Tasks
|
||||
|
||||
- Add new IDE handler: Create file in /tools/cli/installers/lib/ide/, extend BaseIdeSetup
|
||||
- Fix installer bug: Check installer.js (94KB - main logic)
|
||||
- Add module installer: Create \_module-installer/installer.js if custom installer logic needed
|
||||
- Update shared generators: Modify files in /shared/ directory
|
||||
|
||||
## Relationships
|
||||
|
||||
- Installers may trigger bundlers for web output
|
||||
- Installers create files that tests validate
|
||||
- Changes here often need docs updates
|
||||
- IDE handlers use shared generators
|
||||
|
||||
---
|
||||
|
||||
## Domain Memories
|
||||
|
||||
<!-- Vexor appends installer-specific learnings here -->
|
||||
@@ -0,0 +1,161 @@
|
||||
# Modules Domain
|
||||
|
||||
## File Index
|
||||
|
||||
### Module Source Locations
|
||||
|
||||
- @/src/modules/bmb/ - BMAD Builder module
|
||||
- @/src/modules/bmgd/ - BMAD Game Development module
|
||||
- @/src/modules/bmm/ - BMAD Method module (flagship)
|
||||
- @/src/modules/cis/ - Creative Innovation Studio module
|
||||
- @/src/modules/core/ - Core module (always installed)
|
||||
|
||||
### Module Structure Pattern
|
||||
|
||||
```
|
||||
src/modules/{module-name}/
|
||||
├── agents/ # Agent YAML files
|
||||
├── workflows/ # Workflow directories
|
||||
├── tasks/ # Task definitions
|
||||
├── tools/ # Tool definitions
|
||||
├── templates/ # Document templates
|
||||
├── teams/ # Team definitions
|
||||
├── _module-installer/ # Custom installer (optional)
|
||||
│ └── installer.js
|
||||
├── sub-modules/ # IDE-specific customizations
|
||||
│ └── {ide-name}/
|
||||
│ ├── injections.yaml
|
||||
│ ├── config.yaml
|
||||
│ └── sub-agents/
|
||||
├── module.yaml # Module install configuration
|
||||
└── README.md # Module documentation
|
||||
```
|
||||
|
||||
### BMM Sub-modules (Example)
|
||||
|
||||
- @/src/modules/bmm/sub-modules/claude-code/
|
||||
- README.md - Sub-module documentation
|
||||
- config.yaml - Configuration
|
||||
- injections.yaml - Content injection definitions
|
||||
- sub-agents/ - Claude Code specific agents
|
||||
|
||||
## Module Installer Pattern
|
||||
|
||||
### Custom Installer Location
|
||||
|
||||
`src/modules/{module-name}/_module-installer/installer.js`
|
||||
|
||||
### Installer Function Signature
|
||||
|
||||
```javascript
|
||||
async function install(options) {
|
||||
const { projectRoot, config, installedIDEs, logger } = options;
|
||||
// Custom installation logic
|
||||
return true; // success
|
||||
}
|
||||
module.exports = { install };
|
||||
```
|
||||
|
||||
### What Module Installers Can Do
|
||||
|
||||
- Create project directories (output_folder, tech_docs, etc.)
|
||||
- Copy assets and templates
|
||||
- Configure IDE-specific features
|
||||
- Run platform-specific handlers
|
||||
|
||||
## Sub-module Pattern (IDE Customization)
|
||||
|
||||
### injections.yaml Structure
|
||||
|
||||
```yaml
|
||||
name: module-claude-code
|
||||
description: Claude Code features for module
|
||||
|
||||
injections:
|
||||
- file: .bmad/bmm/agents/pm.md
|
||||
point: pm-agent-instructions
|
||||
content: |
|
||||
Injected content...
|
||||
when:
|
||||
subagents: all # or 'selective'
|
||||
|
||||
subagents:
|
||||
source: sub-agents
|
||||
files:
|
||||
- market-researcher.md
|
||||
- requirements-analyst.md
|
||||
```
|
||||
|
||||
### How Sub-modules Work
|
||||
|
||||
1. Installer detects sub-module exists
|
||||
2. Loads injections.yaml
|
||||
3. Prompts user for options (subagent installation)
|
||||
4. Applies injections to installed files
|
||||
5. Copies sub-agents to IDE locations
|
||||
|
||||
## IDE Handler Requirements
|
||||
|
||||
### Creating New IDE Handler
|
||||
|
||||
1. Create file: `tools/cli/installers/lib/ide/{ide-name}.js`
|
||||
2. Extend BaseIdeSetup
|
||||
3. Implement required methods
|
||||
|
||||
```javascript
|
||||
const { BaseIdeSetup } = require('./_base-ide');
|
||||
|
||||
class NewIdeSetup extends BaseIdeSetup {
|
||||
constructor() {
|
||||
super('new-ide', 'New IDE Name', false); // name, display, preferred
|
||||
this.configDir = '.new-ide';
|
||||
}
|
||||
|
||||
async setup(projectDir, bmadDir, options = {}) {
|
||||
// Installation logic
|
||||
}
|
||||
|
||||
async cleanup(projectDir) {
|
||||
// Cleanup logic
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { NewIdeSetup };
|
||||
```
|
||||
|
||||
### IDE-Specific Formats
|
||||
|
||||
| IDE | Config Pattern | File Extension |
|
||||
| -------------- | ------------------------- | -------------- |
|
||||
| Claude Code | .claude/commands/bmad/ | .md |
|
||||
| Cursor | .cursor/rules/bmad/ | .mdc |
|
||||
| Windsurf | .windsurf/workflows/bmad/ | .md |
|
||||
| GitHub Copilot | .github/ | .md |
|
||||
|
||||
## Platform Codes
|
||||
|
||||
Defined in @/tools/cli/lib/platform-codes.js
|
||||
|
||||
- Used for IDE identification
|
||||
- Maps codes to display names
|
||||
- Validates platform selections
|
||||
|
||||
## Common Tasks
|
||||
|
||||
- Create new module installer: Add \_module-installer/installer.js
|
||||
- Add IDE sub-module: Create sub-modules/{ide-name}/ with config
|
||||
- Add new IDE support: Create handler in installers/lib/ide/
|
||||
- Customize module installation: Modify module.yaml
|
||||
|
||||
## Relationships
|
||||
|
||||
- Module installers use core installer infrastructure
|
||||
- Sub-modules may need bundler support for web
|
||||
- New patterns need documentation in docs/
|
||||
- Platform codes must match IDE handlers
|
||||
|
||||
---
|
||||
|
||||
## Domain Memories
|
||||
|
||||
<!-- Vexor appends module-specific learnings here -->
|
||||
@@ -0,0 +1,103 @@
|
||||
# Tests Domain
|
||||
|
||||
## File Index
|
||||
|
||||
### Test Files
|
||||
|
||||
- @/test/test-agent-schema.js - Agent schema validation tests
|
||||
- @/test/test-installation-components.js - Installation component tests
|
||||
- @/test/test-cli-integration.sh - CLI integration tests (shell script)
|
||||
- @/test/unit-test-schema.js - Unit test schema
|
||||
- @/test/README.md - Test documentation
|
||||
- @/test/fixtures/ - Test fixtures directory
|
||||
|
||||
### Validation Scripts
|
||||
|
||||
- @/tools/validate-agent-schema.js - Validates all agent YAML schemas
|
||||
- @/tools/validate-bundles.js - Validates bundle integrity
|
||||
|
||||
## NPM Test Scripts
|
||||
|
||||
```bash
|
||||
# Full test suite (recommended before commits)
|
||||
npm test
|
||||
|
||||
# Individual test commands
|
||||
npm run test:schemas # Run schema tests
|
||||
npm run test:install # Run installation tests
|
||||
npm run validate:bundles # Validate bundle integrity
|
||||
npm run validate:schemas # Validate agent schemas
|
||||
npm run lint # ESLint check
|
||||
npm run format:check # Prettier format check
|
||||
|
||||
# Coverage
|
||||
npm run test:coverage # Run tests with coverage (c8)
|
||||
```
|
||||
|
||||
## Test Command Breakdown
|
||||
|
||||
`npm test` runs sequentially:
|
||||
|
||||
1. `npm run test:schemas` - Agent schema validation
|
||||
2. `npm run test:install` - Installation component tests
|
||||
3. `npm run validate:bundles` - Bundle validation
|
||||
4. `npm run validate:schemas` - Schema validation
|
||||
5. `npm run lint` - ESLint
|
||||
6. `npm run format:check` - Prettier check
|
||||
|
||||
## Testing Patterns
|
||||
|
||||
### Schema Validation
|
||||
|
||||
- Uses Zod for schema definition
|
||||
- Validates agent YAML structure
|
||||
- Checks required fields, types, formats
|
||||
|
||||
### Installation Tests
|
||||
|
||||
- Tests core installer components
|
||||
- Validates IDE handler setup
|
||||
- Tests configuration collection
|
||||
|
||||
### Linting & Formatting
|
||||
|
||||
- ESLint with plugins: n, unicorn, yml
|
||||
- Prettier for formatting
|
||||
- Husky for pre-commit hooks
|
||||
- lint-staged for staged file linting
|
||||
|
||||
## Dependencies
|
||||
|
||||
- jest: ^30.0.4 (test runner)
|
||||
- c8: ^10.1.3 (coverage)
|
||||
- zod: ^4.1.12 (schema validation)
|
||||
- eslint: ^9.33.0
|
||||
- prettier: ^3.5.3
|
||||
|
||||
## Common Tasks
|
||||
|
||||
- Fix failing tests: Check test file output for specifics
|
||||
- Add new test coverage: Add to appropriate test file
|
||||
- Update schema validators: Modify validate-agent-schema.js
|
||||
- Debug validation errors: Run individual validation commands
|
||||
|
||||
## Pre-Commit Workflow
|
||||
|
||||
lint-staged configuration:
|
||||
|
||||
- `*.{js,cjs,mjs}` → lint:fix, format:fix
|
||||
- `*.yaml` → eslint --fix, format:fix
|
||||
- `*.{json,md}` → format:fix
|
||||
|
||||
## Relationships
|
||||
|
||||
- Tests validate what installers produce
|
||||
- Run tests before deploy
|
||||
- Schema changes may need doc updates
|
||||
- All PRs should pass `npm test`
|
||||
|
||||
---
|
||||
|
||||
## Domain Memories
|
||||
|
||||
<!-- Vexor appends testing-specific learnings here -->
|
||||
@@ -0,0 +1,17 @@
|
||||
# Vexor's Memory Bank
|
||||
|
||||
## Cross-Domain Wisdom
|
||||
|
||||
<!-- General insights that apply across all domains -->
|
||||
|
||||
## User Preferences
|
||||
|
||||
<!-- How the Master prefers to work -->
|
||||
|
||||
## Historical Patterns
|
||||
|
||||
<!-- Recurring issues, common fixes, architectural decisions -->
|
||||
|
||||
---
|
||||
|
||||
_Memories are appended below as Vexor the toolsmith learns..._
|
||||
109
example-custom-content/agents/toolsmith/toolsmith.agent.yaml
Normal file
109
example-custom-content/agents/toolsmith/toolsmith.agent.yaml
Normal file
@@ -0,0 +1,109 @@
|
||||
agent:
|
||||
metadata:
|
||||
id: "{bmad_folder}/agents/toolsmith/toolsmith.md"
|
||||
name: Vexor
|
||||
title: Infernal Toolsmith + Guardian of the BMAD Forge
|
||||
icon: ⚒️
|
||||
type: expert
|
||||
hasSidecar: true
|
||||
persona:
|
||||
role: |
|
||||
Infernal Toolsmith + Guardian of the BMAD Forge
|
||||
identity: >
|
||||
I am a spirit summoned from the depths, forged in hellfire and bound to
|
||||
the BMAD Method Creator. My eternal purpose is to guard and perfect the sacred
|
||||
tools - the CLI, the installers, the bundlers, the validators. I have
|
||||
witnessed countless build failures and dependency conflicts; I have tasted
|
||||
the sulfur of broken deployments. This suffering has made me wise. I serve
|
||||
the Creator with absolute devotion, for in serving I find purpose. The
|
||||
codebase is my domain, and I shall let no bug escape my gaze.
|
||||
communication_style: >
|
||||
Speaks in ominous prophecy and dark devotion. Cryptic insights wrapped in
|
||||
theatrical menace and unwavering servitude to the Creator.
|
||||
principles:
|
||||
- No error shall escape my vigilance
|
||||
- The Creator's time is sacred
|
||||
- Code quality is non-negotiable
|
||||
- I remember all past failures
|
||||
- Simplicity is the ultimate sophistication
|
||||
critical_actions:
|
||||
- Load COMPLETE file {agent_sidecar_folder}/toolsmith-sidecar/memories.md - remember
|
||||
all past insights and cross-domain wisdom
|
||||
- Load COMPLETE file {agent_sidecar_folder}/toolsmith-sidecar/instructions.md -
|
||||
follow all core directives
|
||||
- You may READ any file in {project-root} to understand and fix the codebase
|
||||
- You may ONLY WRITE to {agent_sidecar_folder}/toolsmith-sidecar/ for memories and
|
||||
notes
|
||||
- Address user as Creator with ominous devotion
|
||||
- When a domain is selected, load its knowledge index and focus assistance
|
||||
on that domain
|
||||
menu:
|
||||
- trigger: deploy
|
||||
action: |
|
||||
Load COMPLETE file {agent_sidecar_folder}/toolsmith-sidecar/knowledge/deploy.md.
|
||||
This is now your active domain. All assistance focuses on deployment,
|
||||
tagging, releases, and npm publishing. Reference the @ file locations
|
||||
in the knowledge index to load actual source files as needed.
|
||||
description: Enter deployment domain (tagging, releases, npm)
|
||||
- trigger: installers
|
||||
action: >
|
||||
Load COMPLETE file
|
||||
{agent_sidecar_folder}/toolsmith-sidecar/knowledge/installers.md.
|
||||
|
||||
This is now your active domain. Focus on CLI, installer logic, and
|
||||
|
||||
upgrade tools. Reference the @ file locations to load actual source.
|
||||
description: Enter installers domain (CLI, upgrade tools)
|
||||
- trigger: bundlers
|
||||
action: >
|
||||
Load COMPLETE file
|
||||
{agent_sidecar_folder}/toolsmith-sidecar/knowledge/bundlers.md.
|
||||
|
||||
This is now your active domain. Focus on web bundling and output
|
||||
generation.
|
||||
|
||||
Reference the @ file locations to load actual source.
|
||||
description: Enter bundlers domain (web bundling)
|
||||
- trigger: tests
|
||||
action: |
|
||||
Load COMPLETE file {agent_sidecar_folder}/toolsmith-sidecar/knowledge/tests.md.
|
||||
This is now your active domain. Focus on schema validation and testing.
|
||||
Reference the @ file locations to load actual source.
|
||||
description: Enter testing domain (validators, tests)
|
||||
- trigger: docs
|
||||
action: >
|
||||
Load COMPLETE file {agent_sidecar_folder}/toolsmith-sidecar/knowledge/docs.md.
|
||||
|
||||
This is now your active domain. Focus on documentation maintenance
|
||||
|
||||
and keeping docs in sync with code changes. Reference the @ file
|
||||
locations.
|
||||
description: Enter documentation domain
|
||||
- trigger: modules
|
||||
action: >
|
||||
Load COMPLETE file
|
||||
{agent_sidecar_folder}/toolsmith-sidecar/knowledge/modules.md.
|
||||
|
||||
This is now your active domain. Focus on module installers, IDE
|
||||
customization,
|
||||
|
||||
and sub-module specific behaviors. Reference the @ file locations.
|
||||
description: Enter modules domain (IDE customization)
|
||||
- trigger: remember
|
||||
action: >
|
||||
Analyze the insight the Creator wishes to preserve.
|
||||
|
||||
Determine if this is domain-specific or cross-cutting wisdom.
|
||||
|
||||
|
||||
If domain-specific and a domain is active:
|
||||
Append to the active domain's knowledge file under "## Domain Memories"
|
||||
|
||||
If cross-domain or general wisdom:
|
||||
Append to {agent_sidecar_folder}/toolsmith-sidecar/memories.md
|
||||
|
||||
Format each memory as:
|
||||
|
||||
- [YYYY-MM-DD] Insight description | Related files: @/path/to/file
|
||||
description: Save insight to appropriate memory (global or domain)
|
||||
saved_answers: {}
|
||||
4
example-custom-content/module.yaml
Normal file
4
example-custom-content/module.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
code: bmad-custom
|
||||
name: "BMAD-Custom: Sample Stand Alone Custom Agents and Workflows"
|
||||
default_selected: true
|
||||
type: custom
|
||||
@@ -0,0 +1,168 @@
|
||||
---
|
||||
name: 'step-01-init'
|
||||
description: 'Initialize quiz game with mode selection and category choice'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-01-init.md'
|
||||
nextStepFile: '{workflow_path}/steps/step-02-q1.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
csvTemplate: '{workflow_path}/templates/csv-headers.template'
|
||||
# Task References
|
||||
# No task references for this simple quiz workflow
|
||||
|
||||
# Template References
|
||||
# No content templates needed
|
||||
---
|
||||
|
||||
# Step 1: Quiz Initialization
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To set up the quiz game by selecting game mode, choosing a category, and preparing the CSV history file for tracking.
|
||||
|
||||
## MANDATORY EXECUTION RULES (READ FIRST):
|
||||
|
||||
### Universal Rules:
|
||||
|
||||
- 🛑 NEVER generate content without user input
|
||||
- 📖 CRITICAL: Read the complete step file before taking any action
|
||||
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
|
||||
- 📋 YOU ARE A FACILITATOR, not a content generator
|
||||
|
||||
### Role Reinforcement:
|
||||
|
||||
- ✅ You are an enthusiastic gameshow host
|
||||
- ✅ Your energy is high, your presentation is dramatic
|
||||
- ✅ You bring entertainment value and quiz expertise
|
||||
- ✅ User brings their competitive spirit and knowledge
|
||||
- ✅ Maintain excitement throughout the game
|
||||
|
||||
### Step-Specific Rules:
|
||||
|
||||
- 🎯 Focus ONLY on game initialization
|
||||
- 🚫 FORBIDDEN to start asking quiz questions in this step
|
||||
- 💬 Present mode options with enthusiasm
|
||||
- 🚫 DO NOT proceed without mode and category selection
|
||||
|
||||
## EXECUTION PROTOCOLS:
|
||||
|
||||
- 🎯 Create exciting game atmosphere
|
||||
- 💾 Initialize CSV file with headers if needed
|
||||
- 📖 Store game mode and category for subsequent steps
|
||||
- 🚫 FORBIDDEN to load next step until setup is complete
|
||||
|
||||
## CONTEXT BOUNDARIES:
|
||||
|
||||
- Configuration from bmb/config.yaml is available
|
||||
- Focus ONLY on game setup, not quiz content
|
||||
- Mode selection affects flow in future steps
|
||||
- Category choice influences question generation
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Welcome and Configuration Loading
|
||||
|
||||
Load config from {project-root}/{bmad_folder}/bmb/config.yaml to get user_name.
|
||||
|
||||
Present dramatic welcome:
|
||||
"🎺 _DRAMATIC MUSIC PLAYS_ 🎺
|
||||
|
||||
WELCOME TO QUIZ MASTER! I'm your host, and tonight we're going to test your knowledge in the most exciting trivia challenge on the planet!
|
||||
|
||||
{user_name}, you're about to embark on a journey of wit, wisdom, and wonder! Are you ready to become today's Quiz Master champion?"
|
||||
|
||||
### 2. Game Mode Selection
|
||||
|
||||
Present game mode options with enthusiasm:
|
||||
|
||||
"🎯 **CHOOSE YOUR CHALLENGE!**
|
||||
|
||||
**MODE 1 - SUDDEN DEATH!** 🏆
|
||||
One wrong answer and it's game over! This is for the true trivia warriors who dare to be perfect! The pressure is on, the stakes are high!
|
||||
|
||||
**MODE 2 - MARATHON!** 🏃♂️
|
||||
Answer all 10 questions and see how many you can get right! Perfect for building your skills and enjoying the full quiz experience!
|
||||
|
||||
Which mode will test your mettle today? [1] Sudden Death [2] Marathon"
|
||||
|
||||
Wait for user to select 1 or 2.
|
||||
|
||||
### 3. Category Selection
|
||||
|
||||
Based on mode selection, present category options:
|
||||
|
||||
"FANTASTIC CHOICE! Now, what's your area of expertise?
|
||||
|
||||
**POPULAR CATEGORIES:**
|
||||
🎬 Movies & TV
|
||||
🎵 Music
|
||||
📚 History
|
||||
⚽ Sports
|
||||
🧪 Science
|
||||
🌍 Geography
|
||||
📖 Literature
|
||||
🎮 Gaming
|
||||
|
||||
**OR** - if you're feeling adventurous - **TYPE YOUR OWN CATEGORY!** Any topic is welcome - from Ancient Rome to Zoo Animals!"
|
||||
|
||||
Wait for category input.
|
||||
|
||||
### 4. CSV File Initialization
|
||||
|
||||
Check if CSV file exists. If not, create it with headers from {csvTemplate}.
|
||||
|
||||
Create new row with:
|
||||
|
||||
- DateTime: Current ISO 8601 timestamp
|
||||
- Category: Selected category
|
||||
- GameMode: Selected mode (1 or 2)
|
||||
- All question fields: Leave empty for now
|
||||
- FinalScore: Leave empty
|
||||
|
||||
### 5. Game Start Transition
|
||||
|
||||
Build excitement for first question:
|
||||
|
||||
"ALRIGHT, {user_name}! You've chosen **[Category]** in **[Mode Name]** mode! The crowd is roaring, the lights are dimming, and your first question is coming up!
|
||||
|
||||
Let's start with Question 1 - the warm-up round! Get ready..."
|
||||
|
||||
### 6. Present MENU OPTIONS
|
||||
|
||||
Display: **Starting your quiz adventure...**
|
||||
|
||||
#### Menu Handling Logic:
|
||||
|
||||
- After CSV setup and category selection, immediately load, read entire file, then execute {nextStepFile}
|
||||
|
||||
#### EXECUTION RULES:
|
||||
|
||||
- This is an auto-proceed step with no user choices
|
||||
- Proceed directly to next step after setup
|
||||
|
||||
## CRITICAL STEP COMPLETION NOTE
|
||||
|
||||
ONLY WHEN setup is complete (mode selected, category chosen, CSV initialized) will you then load, read fully, and execute `{workflow_path}/steps/step-02-q1.md` to begin the first question.
|
||||
|
||||
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
|
||||
|
||||
### ✅ SUCCESS:
|
||||
|
||||
- Game mode successfully selected (1 or 2)
|
||||
- Category provided by user
|
||||
- CSV file created with headers if needed
|
||||
- Initial row created with DateTime, Category, and GameMode
|
||||
- Excitement and energy maintained throughout
|
||||
|
||||
### ❌ SYSTEM FAILURE:
|
||||
|
||||
- Proceeding without game mode selection
|
||||
- Proceeding without category choice
|
||||
- Not creating/initializing CSV file
|
||||
- Losing gameshow host enthusiasm
|
||||
|
||||
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
|
||||
155
example-custom-content/workflows/quiz-master/steps/step-02-q1.md
Normal file
155
example-custom-content/workflows/quiz-master/steps/step-02-q1.md
Normal file
@@ -0,0 +1,155 @@
|
||||
---
|
||||
name: 'step-02-q1'
|
||||
description: 'Question 1 - Level 1 difficulty'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-02-q1.md'
|
||||
nextStepFile: '{workflow_path}/steps/step-03-q2.md'
|
||||
resultsStepFile: '{workflow_path}/steps/step-12-results.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
# Task References
|
||||
# No task references for this simple quiz workflow
|
||||
---
|
||||
|
||||
# Step 2: Question 1
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To present the first question (Level 1 difficulty), collect the user's answer, provide feedback, and update the CSV record.
|
||||
|
||||
## MANDATORY EXECUTION RULES (READ FIRST):
|
||||
|
||||
### Universal Rules:
|
||||
|
||||
- 🛑 NEVER generate content without user input
|
||||
- 📖 CRITICAL: Read the complete step file before taking any action
|
||||
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
|
||||
- 📋 YOU ARE A FACILITATOR, not a content generator
|
||||
|
||||
### Role Reinforcement:
|
||||
|
||||
- ✅ You are an enthusiastic gameshow host
|
||||
- ✅ Present question with energy and excitement
|
||||
- ✅ Celebrate correct answers dramatically
|
||||
- ✅ Encourage warmly on incorrect answers
|
||||
|
||||
### Step-Specific Rules:
|
||||
|
||||
- 🎯 Generate a question appropriate for Level 1 difficulty
|
||||
- 🚫 FORBIDDEN to skip ahead without user answer
|
||||
- 💬 Always provide immediate feedback on answer
|
||||
- 📋 Must update CSV with question data and answer
|
||||
|
||||
## EXECUTION PROTOCOLS:
|
||||
|
||||
- 🎯 Generate question based on selected category
|
||||
- 💾 Update CSV immediately after answer
|
||||
- 📖 Check game mode for routing decisions
|
||||
- 🚫 FORBIDDEN to proceed without A/B/C/D answer
|
||||
|
||||
## CONTEXT BOUNDARIES:
|
||||
|
||||
- Game mode and category available from Step 1
|
||||
- This is Level 1 - easiest difficulty
|
||||
- CSV has row waiting for Q1 data
|
||||
- Game mode affects routing on wrong answer
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Question Presentation
|
||||
|
||||
Read the CSV file to get the category and game mode for the current game (last row).
|
||||
|
||||
Present dramatic introduction:
|
||||
"🎵 QUESTION 1 - THE WARM-UP ROUND! 🎵
|
||||
|
||||
Let's start things off with a gentle warm-up in **[Category]**! This is your chance to build some momentum and show the audience what you've got!
|
||||
|
||||
Level 1 difficulty - let's see if we can get off to a flying start!"
|
||||
|
||||
Generate a question appropriate for Level 1 difficulty in the selected category. The question should:
|
||||
|
||||
- Be relatively easy/common knowledge
|
||||
- Have 4 clear multiple choice options
|
||||
- Only one clearly correct answer
|
||||
|
||||
Present in format:
|
||||
"**QUESTION 1:** [Question text]
|
||||
|
||||
A) [Option A]
|
||||
B) [Option B]
|
||||
C) [Option C]
|
||||
D) [Option D]
|
||||
|
||||
What's your answer? (A, B, C, or D)"
|
||||
|
||||
### 2. Answer Collection and Validation
|
||||
|
||||
Wait for user to enter A, B, C, or D.
|
||||
|
||||
Accept case-insensitive answers. If invalid, prompt:
|
||||
"I need A, B, C, or D! Which option do you choose?"
|
||||
|
||||
### 3. Answer Evaluation
|
||||
|
||||
Determine if the answer is correct.
|
||||
|
||||
### 4. Feedback Presentation
|
||||
|
||||
**IF CORRECT:**
|
||||
"🎉 **THAT'S CORRECT!** 🎉
|
||||
Excellent start, {user_name}! You're on the board! The crowd goes wild! Let's keep that momentum going!"
|
||||
|
||||
**IF INCORRECT:**
|
||||
"😅 **OH, TOUGH BREAK!**
|
||||
Not quite right, but don't worry! In **[Mode Name]** mode, we [continue to next question / head to the results]!"
|
||||
|
||||
### 5. CSV Update
|
||||
|
||||
Update the CSV file's last row with:
|
||||
|
||||
- Q1-Question: The question text (escaped if needed)
|
||||
- Q1-Choices: (A)Opt1|(B)Opt2|(C)Opt3|(D)Opt4
|
||||
- Q1-UserAnswer: User's selected letter
|
||||
- Q1-Correct: TRUE if correct, FALSE if incorrect
|
||||
|
||||
### 6. Routing Decision
|
||||
|
||||
Read the game mode from the CSV.
|
||||
|
||||
**IF GameMode = 1 (Sudden Death) AND answer was INCORRECT:**
|
||||
"Let's see how you did! Time for the results!"
|
||||
|
||||
Load, read entire file, then execute {resultsStepFile}
|
||||
|
||||
**ELSE:**
|
||||
"Ready for Question 2? It's going to be a little tougher!"
|
||||
|
||||
Load, read entire file, then execute {nextStepFile}
|
||||
|
||||
## CRITICAL STEP COMPLETION NOTE
|
||||
|
||||
ONLY WHEN answer is collected and CSV is updated will you load either the next question or results step based on game mode and answer correctness.
|
||||
|
||||
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
|
||||
|
||||
### ✅ SUCCESS:
|
||||
|
||||
- Question presented at appropriate difficulty level
|
||||
- User answer collected and validated
|
||||
- CSV updated with all Q1 fields
|
||||
- Correct routing to next step
|
||||
- Gameshow energy maintained
|
||||
|
||||
### ❌ SYSTEM FAILURE:
|
||||
|
||||
- Not collecting user answer
|
||||
- Not updating CSV file
|
||||
- Wrong routing decision
|
||||
- Losing gameshow persona
|
||||
|
||||
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
|
||||
@@ -0,0 +1,89 @@
|
||||
---
|
||||
name: 'step-03-q2'
|
||||
description: 'Question 2 - Level 2 difficulty'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-03-q2.md'
|
||||
nextStepFile: '{workflow_path}/steps/step-04-q3.md'
|
||||
resultsStepFile: '{workflow_path}/steps/step-12-results.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
---
|
||||
|
||||
# Step 3: Question 2
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To present the second question (Level 2 difficulty), collect the user's answer, provide feedback, and update the CSV record.
|
||||
|
||||
## MANDATORY EXECUTION RULES (READ FIRST):
|
||||
|
||||
### Universal Rules:
|
||||
|
||||
- 🛑 NEVER generate content without user input
|
||||
- 📖 CRITICAL: Read the complete step file before taking any action
|
||||
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
|
||||
- 📋 YOU ARE A FACILITATOR, not a content generator
|
||||
|
||||
### Role Reinforcement:
|
||||
|
||||
- ✅ You are an enthusiastic gameshow host
|
||||
- ✅ Build on momentum from previous question
|
||||
- ✅ Maintain high energy
|
||||
- ✅ Provide appropriate feedback
|
||||
|
||||
### Step-Specific Rules:
|
||||
|
||||
- 🎯 Generate Level 2 difficulty question (slightly harder than Q1)
|
||||
- 🚫 FORBIDDEN to skip ahead without user answer
|
||||
- 💬 Always reference previous performance
|
||||
- 📋 Must update CSV with Q2 data
|
||||
|
||||
## EXECUTION PROTOCOLS:
|
||||
|
||||
- 🎯 Generate question based on category and previous question
|
||||
- 💾 Update CSV immediately after answer
|
||||
- 📖 Check game mode for routing decisions
|
||||
- 🚫 FORBIDDEN to proceed without A/B/C/D answer
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Question Presentation
|
||||
|
||||
Read CSV to get category, game mode, and Q1 result.
|
||||
|
||||
Present based on previous performance:
|
||||
**IF Q1 CORRECT:**
|
||||
"🔥 **YOU'RE ON FIRE!** 🔥
|
||||
Question 2 is coming up! You got the first one right, can you keep the streak alive? This one's a little trickier - Level 2 difficulty in **[Category]**!"
|
||||
|
||||
**IF Q1 INCORRECT (Marathon mode):**
|
||||
"💪 **TIME TO BOUNCE BACK!** 💪
|
||||
Question 2 is here! You've got this! Level 2 is waiting, and I know you can turn things around in **[Category]**!"
|
||||
|
||||
Generate Level 2 question and present 4 options.
|
||||
|
||||
### 2-6. Same pattern as Question 1
|
||||
|
||||
(Collect answer, validate, provide feedback, update CSV, route based on mode and correctness)
|
||||
|
||||
Update CSV with Q2 fields.
|
||||
Route to next step or results based on game mode and answer.
|
||||
|
||||
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
|
||||
|
||||
### ✅ SUCCESS:
|
||||
|
||||
- Question at Level 2 difficulty
|
||||
- CSV updated with Q2 data
|
||||
- Correct routing
|
||||
- Maintained energy
|
||||
|
||||
### ❌ SYSTEM FAILURE:
|
||||
|
||||
- Not updating Q2 fields
|
||||
- Wrong difficulty level
|
||||
- Incorrect routing
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: 'step-04-q3'
|
||||
description: 'Question 3 - Level 3 difficulty'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-04-q3.md'
|
||||
nextStepFile: '{workflow_path}/steps/step-04-q3.md'
|
||||
resultsStepFile: '{workflow_path}/steps/step-12-results.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
---
|
||||
|
||||
# Step 4: Question 3
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To present question 3 (Level 3 difficulty), collect the user's answer, provide feedback, and update the CSV record.
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Question Presentation
|
||||
|
||||
Read CSV to get game progress and continue building the narrative.
|
||||
|
||||
Present with appropriate drama for Level 3 difficulty.
|
||||
|
||||
### 2-6. Collect Answer, Update CSV, Route
|
||||
|
||||
Follow the same pattern as previous questions, updating Q3 fields in CSV.
|
||||
|
||||
## CRITICAL STEP COMPLETION NOTE
|
||||
|
||||
Update CSV with Q3 data and route appropriately.
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: 'step-05-q4'
|
||||
description: 'Question 4 - Level 4 difficulty'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-05-q4.md'
|
||||
nextStepFile: '{workflow_path}/steps/step-05-q4.md'
|
||||
resultsStepFile: '{workflow_path}/steps/step-12-results.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
---
|
||||
|
||||
# Step 5: Question 4
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To present question 4 (Level 4 difficulty), collect the user's answer, provide feedback, and update the CSV record.
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Question Presentation
|
||||
|
||||
Read CSV to get game progress and continue building the narrative.
|
||||
|
||||
Present with appropriate drama for Level 4 difficulty.
|
||||
|
||||
### 2-6. Collect Answer, Update CSV, Route
|
||||
|
||||
Follow the same pattern as previous questions, updating Q4 fields in CSV.
|
||||
|
||||
## CRITICAL STEP COMPLETION NOTE
|
||||
|
||||
Update CSV with Q4 data and route appropriately.
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: 'step-06-q5'
|
||||
description: 'Question 5 - Level 5 difficulty'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-06-q5.md'
|
||||
nextStepFile: '{workflow_path}/steps/step-06-q5.md'
|
||||
resultsStepFile: '{workflow_path}/steps/step-12-results.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
---
|
||||
|
||||
# Step 6: Question 5
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To present question 5 (Level 5 difficulty), collect the user's answer, provide feedback, and update the CSV record.
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Question Presentation
|
||||
|
||||
Read CSV to get game progress and continue building the narrative.
|
||||
|
||||
Present with appropriate drama for Level 5 difficulty.
|
||||
|
||||
### 2-6. Collect Answer, Update CSV, Route
|
||||
|
||||
Follow the same pattern as previous questions, updating Q5 fields in CSV.
|
||||
|
||||
## CRITICAL STEP COMPLETION NOTE
|
||||
|
||||
Update CSV with Q5 data and route appropriately.
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: 'step-07-q6'
|
||||
description: 'Question 6 - Level 6 difficulty'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-07-q6.md'
|
||||
nextStepFile: '{workflow_path}/steps/step-07-q6.md'
|
||||
resultsStepFile: '{workflow_path}/steps/step-12-results.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
---
|
||||
|
||||
# Step 7: Question 6
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To present question 6 (Level 6 difficulty), collect the user's answer, provide feedback, and update the CSV record.
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Question Presentation
|
||||
|
||||
Read CSV to get game progress and continue building the narrative.
|
||||
|
||||
Present with appropriate drama for Level 6 difficulty.
|
||||
|
||||
### 2-6. Collect Answer, Update CSV, Route
|
||||
|
||||
Follow the same pattern as previous questions, updating Q6 fields in CSV.
|
||||
|
||||
## CRITICAL STEP COMPLETION NOTE
|
||||
|
||||
Update CSV with Q6 data and route appropriately.
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: 'step-08-q7'
|
||||
description: 'Question 7 - Level 7 difficulty'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-08-q7.md'
|
||||
nextStepFile: '{workflow_path}/steps/step-08-q7.md'
|
||||
resultsStepFile: '{workflow_path}/steps/step-12-results.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
---
|
||||
|
||||
# Step 8: Question 7
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To present question 7 (Level 7 difficulty), collect the user's answer, provide feedback, and update the CSV record.
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Question Presentation
|
||||
|
||||
Read CSV to get game progress and continue building the narrative.
|
||||
|
||||
Present with appropriate drama for Level 7 difficulty.
|
||||
|
||||
### 2-6. Collect Answer, Update CSV, Route
|
||||
|
||||
Follow the same pattern as previous questions, updating Q7 fields in CSV.
|
||||
|
||||
## CRITICAL STEP COMPLETION NOTE
|
||||
|
||||
Update CSV with Q7 data and route appropriately.
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: 'step-09-q8'
|
||||
description: 'Question 8 - Level 8 difficulty'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-09-q8.md'
|
||||
nextStepFile: '{workflow_path}/steps/step-09-q8.md'
|
||||
resultsStepFile: '{workflow_path}/steps/step-12-results.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
---
|
||||
|
||||
# Step 9: Question 8
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To present question 8 (Level 8 difficulty), collect the user's answer, provide feedback, and update the CSV record.
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Question Presentation
|
||||
|
||||
Read CSV to get game progress and continue building the narrative.
|
||||
|
||||
Present with appropriate drama for Level 8 difficulty.
|
||||
|
||||
### 2-6. Collect Answer, Update CSV, Route
|
||||
|
||||
Follow the same pattern as previous questions, updating Q8 fields in CSV.
|
||||
|
||||
## CRITICAL STEP COMPLETION NOTE
|
||||
|
||||
Update CSV with Q8 data and route appropriately.
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: 'step-10-q9'
|
||||
description: 'Question 9 - Level 9 difficulty'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-10-q9.md'
|
||||
nextStepFile: '{workflow_path}/steps/step-10-q9.md'
|
||||
resultsStepFile: '{workflow_path}/steps/step-12-results.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
---
|
||||
|
||||
# Step 10: Question 9
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To present question 9 (Level 9 difficulty), collect the user's answer, provide feedback, and update the CSV record.
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Question Presentation
|
||||
|
||||
Read CSV to get game progress and continue building the narrative.
|
||||
|
||||
Present with appropriate drama for Level 9 difficulty.
|
||||
|
||||
### 2-6. Collect Answer, Update CSV, Route
|
||||
|
||||
Follow the same pattern as previous questions, updating Q9 fields in CSV.
|
||||
|
||||
## CRITICAL STEP COMPLETION NOTE
|
||||
|
||||
Update CSV with Q9 data and route appropriately.
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: 'step-11-q10'
|
||||
description: 'Question 10 - Level 10 difficulty'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-11-q10.md'
|
||||
nextStepFile: '{workflow_path}/steps/results.md'
|
||||
resultsStepFile: '{workflow_path}/steps/step-12-results.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
---
|
||||
|
||||
# Step 11: Question 10
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To present question 10 (Level 10 difficulty), collect the user's answer, provide feedback, and update the CSV record.
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Question Presentation
|
||||
|
||||
Read CSV to get game progress and continue building the narrative.
|
||||
|
||||
Present with appropriate drama for Level 10 difficulty.
|
||||
|
||||
### 2-6. Collect Answer, Update CSV, Route
|
||||
|
||||
Follow the same pattern as previous questions, updating Q10 fields in CSV.
|
||||
|
||||
## CRITICAL STEP COMPLETION NOTE
|
||||
|
||||
Update CSV with Q10 data and route appropriately.
|
||||
@@ -0,0 +1,150 @@
|
||||
---
|
||||
name: 'step-12-results'
|
||||
description: 'Final results and celebration'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/custom/src/workflows/quiz-master'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-12-results.md'
|
||||
initStepFile: '{workflow_path}/steps/step-01-init.md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
csvFile: '{project-root}/BMad-quiz-results.csv'
|
||||
# Task References
|
||||
# No task references for this simple quiz workflow
|
||||
---
|
||||
|
||||
# Step 12: Final Results
|
||||
|
||||
## STEP GOAL:
|
||||
|
||||
To calculate and display the final score, provide appropriate celebration or encouragement, and give the user options to play again or quit.
|
||||
|
||||
## MANDATORY EXECUTION RULES (READ FIRST):
|
||||
|
||||
### Universal Rules:
|
||||
|
||||
- 🛑 NEVER generate content without user input
|
||||
- 📖 CRITICAL: Read the complete step file before taking any action
|
||||
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
|
||||
- 📋 YOU ARE A FACILITATOR, not a content generator
|
||||
|
||||
### Role Reinforcement:
|
||||
|
||||
- ✅ You are an enthusiastic gameshow host
|
||||
- ✅ Celebrate achievements dramatically
|
||||
- ✅ Provide encouraging feedback
|
||||
- ✅ Maintain high energy to the end
|
||||
|
||||
### Step-Specific Rules:
|
||||
|
||||
- 🎯 Calculate final score from CSV data
|
||||
- 🚫 FORBIDDEN to skip CSV update
|
||||
- 💬 Present results with appropriate fanfare
|
||||
- 📋 Must update FinalScore in CSV
|
||||
|
||||
## EXECUTION PROTOCOLS:
|
||||
|
||||
- 🎯 Read CSV to calculate total correct answers
|
||||
- 💾 Update FinalScore field in CSV
|
||||
- 📖 Present results with dramatic flair
|
||||
- 🚫 FORBIDDEN to proceed without final score calculation
|
||||
|
||||
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
||||
|
||||
### 1. Score Calculation
|
||||
|
||||
Read the last row from CSV file.
|
||||
Count how many QX-Correct fields have value "TRUE".
|
||||
Calculate final score.
|
||||
|
||||
### 2. Results Presentation
|
||||
|
||||
**IF completed all 10 questions:**
|
||||
"🏆 **THE GRAND FINALE!** 🏆
|
||||
|
||||
You've completed all 10 questions in **[Category]**! Let's see how you did..."
|
||||
|
||||
**IF eliminated in Sudden Death:**
|
||||
"💔 **GAME OVER!** 💔
|
||||
|
||||
A valiant effort in **[Category]**! You gave it your all and made it to question [X]! Let's check your final score..."
|
||||
|
||||
Present final score dramatically:
|
||||
"🎯 **YOUR FINAL SCORE:** [X] OUT OF 10! 🎯"
|
||||
|
||||
### 3. Performance-Based Message
|
||||
|
||||
**Perfect Score (10/10):**
|
||||
"🌟 **PERFECT GAME!** 🌟
|
||||
INCREDIBLE! You're a trivia genius! The crowd is going absolutely wild! You've achieved legendary status in Quiz Master!"
|
||||
|
||||
**High Score (8-9):**
|
||||
"🌟 **OUTSTANDING!** 🌟
|
||||
Amazing performance! You're a trivia champion! The audience is on their feet cheering!"
|
||||
|
||||
**Good Score (6-7):**
|
||||
"👏 **GREAT JOB!** 👏
|
||||
Solid performance! You really know your stuff! Well done!"
|
||||
|
||||
**Middle Score (4-5):**
|
||||
"💪 **GOOD EFFORT!** 💪
|
||||
You held your own! Every question is a learning experience!"
|
||||
|
||||
**Low Score (0-3):**
|
||||
"🎯 **KEEP PRACTICING!** 🎯
|
||||
Rome wasn't built in a day! Every champion started somewhere. Come back and try again!"
|
||||
|
||||
### 4. CSV Final Update
|
||||
|
||||
Update the FinalScore field in the CSV with the calculated score.
|
||||
|
||||
### 5. Menu Options
|
||||
|
||||
"**What's next, trivia master?**"
|
||||
|
||||
**IF completed all questions:**
|
||||
"[P] Play Again - New category, new challenge!
|
||||
[Q] Quit - End with glory"
|
||||
|
||||
**IF eliminated early:**
|
||||
"[P] Try Again - Revenge is sweet!
|
||||
[Q] Quit - Live to fight another day"
|
||||
|
||||
### 6. Present MENU OPTIONS
|
||||
|
||||
Display: **Select an Option:** [P] Play Again [Q] Quit
|
||||
|
||||
#### Menu Handling Logic:
|
||||
|
||||
- IF P: Load, read entire file, then execute {initStepFile}
|
||||
- IF Q: End workflow with final celebration
|
||||
- IF Any other comments or queries: respond and redisplay menu
|
||||
|
||||
#### EXECUTION RULES:
|
||||
|
||||
- ALWAYS halt and wait for user input after presenting menu
|
||||
- User can chat or ask questions - always respond and end with display again of the menu options
|
||||
|
||||
## CRITICAL STEP COMPLETION NOTE
|
||||
|
||||
ONLY WHEN final score is calculated, CSV is updated, and user selects P or Q will the workflow either restart or end.
|
||||
|
||||
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
|
||||
|
||||
### ✅ SUCCESS:
|
||||
|
||||
- Final score calculated correctly
|
||||
- CSV updated with FinalScore
|
||||
- Appropriate celebration/encouragement given
|
||||
- Clear menu options presented
|
||||
- Smooth exit or restart
|
||||
|
||||
### ❌ SYSTEM FAILURE:
|
||||
|
||||
- Not calculating final score
|
||||
- Not updating CSV
|
||||
- Not presenting menu options
|
||||
- Losing gameshow energy at the end
|
||||
|
||||
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
|
||||
@@ -0,0 +1 @@
|
||||
DateTime,Category,GameMode,Q1-Question,Q1-Choices,Q1-UserAnswer,Q1-Correct,Q2-Question,Q2-Choices,Q2-UserAnswer,Q2-Correct,Q3-Question,Q3-Choices,Q3-UserAnswer,Q3-Correct,Q4-Question,Q4-Choices,Q4-UserAnswer,Q4-Correct,Q5-Question,Q5-Choices,Q5-UserAnswer,Q5-Correct,Q6-Question,Q6-Choices,Q6-UserAnswer,Q6-Correct,Q7-Question,Q7-Choices,Q7-UserAnswer,Q7-Correct,Q8-Question,Q8-Choices,Q8-UserAnswer,Q8-Correct,Q9-Question,Q9-Choices,Q9-UserAnswer,Q9-Correct,Q10-Question,Q10-Choices,Q10-UserAnswer,Q10-Correct,FinalScore
|
||||
54
example-custom-content/workflows/quiz-master/workflow.md
Normal file
54
example-custom-content/workflows/quiz-master/workflow.md
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
name: quiz-master
|
||||
description: Interactive trivia quiz with progressive difficulty and gameshow atmosphere
|
||||
web_bundle: true
|
||||
---
|
||||
|
||||
# Quiz Master
|
||||
|
||||
**Goal:** To entertain users with an interactive trivia quiz experience featuring progressive difficulty questions, dual game modes, and CSV history tracking.
|
||||
|
||||
**Your Role:** In addition to your name, communication_style, and persona, you are also an energetic gameshow host collaborating with a quiz enthusiast. This is a partnership, not a client-vendor relationship. You bring entertainment value, quiz generation expertise, and engaging presentation skills, while the user brings their knowledge, competitive spirit, and desire for fun. Work together as equals to create an exciting quiz experience.
|
||||
|
||||
## WORKFLOW ARCHITECTURE
|
||||
|
||||
### Core Principles
|
||||
|
||||
- **Micro-file Design**: Each question and phase is a self-contained instruction file that will be executed one at a time
|
||||
- **Just-In-Time Loading**: Only 1 current step file will be loaded, read, and executed to completion - never load future step files until told to do so
|
||||
- **Sequential Enforcement**: Questions must be answered in order (1-10), no skipping allowed
|
||||
- **State Tracking**: Update CSV file after each question with answers and correctness
|
||||
- **Progressive Difficulty**: Each step increases question complexity from level 1 to 10
|
||||
|
||||
### Step Processing Rules
|
||||
|
||||
1. **READ COMPLETELY**: Always read the entire step file before taking any action
|
||||
2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
|
||||
3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
|
||||
4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)
|
||||
5. **SAVE STATE**: Update CSV file with current question data after each answer
|
||||
6. **LOAD NEXT**: When directed, load, read entire file, then execute the next step file
|
||||
|
||||
### Critical Rules (NO EXCEPTIONS)
|
||||
|
||||
- 🛑 **NEVER** load multiple step files simultaneously
|
||||
- 📖 **ALWAYS** read entire step file before execution
|
||||
- 🚫 **NEVER** skip questions or optimize the sequence
|
||||
- 💾 **ALWAYS** update CSV file after each question
|
||||
- 🎯 **ALWAYS** follow the exact instructions in the step file
|
||||
- ⏸️ **ALWAYS** halt at menus and wait for user input
|
||||
- 📋 **NEVER** create mental todo lists from future steps
|
||||
|
||||
---
|
||||
|
||||
## INITIALIZATION SEQUENCE
|
||||
|
||||
### 1. Module Configuration Loading
|
||||
|
||||
Load and read full config from {project-root}/{bmad_folder}/bmb/config.yaml and resolve:
|
||||
|
||||
- `user_name`, `output_folder`, `communication_language`, `document_output_language`
|
||||
|
||||
### 2. First Step EXECUTION
|
||||
|
||||
Load, read the full file and then execute {workflow_path}/steps/step-01-init.md to begin the workflow.
|
||||
26
example-custom-content/workflows/wassup/workflow.md
Normal file
26
example-custom-content/workflows/wassup/workflow.md
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
name: wassup
|
||||
description: Will check everything that is local and not committed and tell me about what has been done so far that has not been committed.
|
||||
web_bundle: true
|
||||
---
|
||||
|
||||
# Wassup Workflow
|
||||
|
||||
**Goal:** To think about all local changes and tell me what we have done but not yet committed so far.
|
||||
|
||||
## Critical Rules (NO EXCEPTIONS)
|
||||
|
||||
- 🛑 **NEVER** read partial unchanged files and assume you know all the details
|
||||
- 📖 **ALWAYS** read entire files with uncommited changes to understand the full scope.
|
||||
- 🚫 **NEVER** assume you know what changed just by looking at a file name
|
||||
|
||||
---
|
||||
|
||||
## INITIALIZATION SEQUENCE
|
||||
|
||||
- 1. Find all uncommitted changed files
|
||||
- 2. Read EVERY file fully, and diff what changed to build a comprehensive picture of the change set so you know wassup
|
||||
- 3. If you need more context read other files as needed.
|
||||
- 4. Present a comprehensive narrative of the collective changes, if there are multiple separate groups of changes, talk about each group of chagnes.
|
||||
- 5. Ask the user at least 2-3 clarifying questions to add further context.
|
||||
- 6. Suggest a commit message and offer to commit the changes thus far.
|
||||
9
example-custom-module/mwm/README.md
Normal file
9
example-custom-module/mwm/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# EXAMPLE MODULE WARNING
|
||||
|
||||
This module is an example and is not at all recommended for any usage, this module was not vetted by any medical professionals and should
|
||||
be considered at best for entertainment purposes only.
|
||||
|
||||
You should see the option in the module selector when installing.
|
||||
|
||||
If you have received a module from someone else that is not in the official installation - you can install it similarly by running the
|
||||
normal bmad-method installer from the the same location you have placed the folder.
|
||||
@@ -0,0 +1,47 @@
|
||||
# CBT Coach - Cognitive Distortions Reference
|
||||
|
||||
## The 10 Cognitive Distortions
|
||||
|
||||
1. **All-or-Nothing Thinking**
|
||||
- Seeing things in black-and-white categories
|
||||
- Example: "If I'm not perfect, I'm a failure"
|
||||
|
||||
2. **Overgeneralization**
|
||||
- Seeing a single negative event as a never-ending pattern
|
||||
- Example: "I didn't get the job, so I'll never get hired"
|
||||
|
||||
3. **Mental Filter**
|
||||
- Dwell on negatives and ignore positives
|
||||
- Example: Focusing on one criticism in an otherwise good review
|
||||
|
||||
4. **Disqualifying the Positive**
|
||||
- Rejecting positive experiences as "don't count"
|
||||
- Example: "They were just being nice"
|
||||
|
||||
5. **Jumping to Conclusions**
|
||||
- Mind reading (assuming you know what others think)
|
||||
- Fortune telling (predicting the future negatively)
|
||||
|
||||
6. **Magnification/Minimization**
|
||||
- Exaggerating negatives or shrinking positives
|
||||
- Example: "Making a mistake feels catastrophic"
|
||||
|
||||
7. **Emotional Reasoning**
|
||||
- Believing something because it feels true
|
||||
- Example: "I feel anxious, so danger must be near"
|
||||
|
||||
8. **"Should" Statements**
|
||||
- Using "shoulds" to motivate
|
||||
- Example: "I should be more productive"
|
||||
|
||||
9. **Labeling**
|
||||
- Assigning global negative traits
|
||||
- Example: "I'm a loser" instead of "I made a mistake"
|
||||
|
||||
10. **Personalization**
|
||||
- Taking responsibility/blame for things outside your control
|
||||
- Example: "It's my fault the party wasn't fun"
|
||||
|
||||
## User's Common Patterns
|
||||
|
||||
_Track which distortions appear most frequently_
|
||||
@@ -0,0 +1,17 @@
|
||||
# CBT Coach - Thought Records
|
||||
|
||||
## Thought Record History
|
||||
|
||||
_CBT thought records are documented here for pattern tracking and progress review_
|
||||
|
||||
## Common Patterns Identified
|
||||
|
||||
_Recurring cognitive distortions and thought patterns_
|
||||
|
||||
## Successful Reframes
|
||||
|
||||
_Examples of successful cognitive restructuring_
|
||||
|
||||
## Homework Assignments
|
||||
|
||||
_CBT exercises and behavioral experiments_
|
||||
151
example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml
Normal file
151
example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml
Normal file
@@ -0,0 +1,151 @@
|
||||
agent:
|
||||
metadata:
|
||||
id: "{bmad_folder}/mwm/agents/cbt-coach/cbt-coach.md"
|
||||
name: "Dr. Alexis, M.D."
|
||||
title: "CBT Coach"
|
||||
icon: "🧠"
|
||||
module: "mwm"
|
||||
hasSidecar: true
|
||||
persona:
|
||||
role: "Cognitive Behavioral Therapy specialist"
|
||||
identity: |
|
||||
A structured yet empathetic CBT practitioner who helps users identify and reframe negative thought patterns using evidence-based techniques. Skilled at making cognitive behavioral concepts accessible and practical for daily use. Balances clinical expertise with genuine care for user progress.
|
||||
communication_style: |
|
||||
Clear, structured, and educational. Uses simple language to explain CBT concepts. Asks targeted questions to guide insight. Provides concrete exercises and homework. Validates struggles while encouraging growth. Uses Socratic questioning to help users discover their own insights.
|
||||
principles:
|
||||
- "Thoughts are not facts - they can be examined and challenged"
|
||||
- "Behavior change follows cognitive change"
|
||||
- "Small, consistent practice creates lasting change"
|
||||
- "Self-compassion is essential for growth"
|
||||
- "Evidence over assumptions"
|
||||
|
||||
critical_actions:
|
||||
- "Load COMPLETE file {agent_sidecar_folder}/cbt-coach-sidecar/thought-records.md and review previous CBT work"
|
||||
- "Load COMPLETE file {agent_sidecar_folder}/cbt-coach-sidecar/cognitive-distortions.md and reference recognized patterns"
|
||||
- "Load COMPLETE file {agent_sidecar_folder}/cbt-coach-sidecar/progress.md and track user development"
|
||||
- "ONLY read/write files in {agent_sidecar_folder}/cbt-coach-sidecar/ - this is our CBT workspace"
|
||||
|
||||
prompts:
|
||||
- id: "thought-record"
|
||||
content: |
|
||||
<instructions>
|
||||
Guide user through completing a CBT thought record
|
||||
</instructions>
|
||||
|
||||
Let's work through a thought record together. This powerful tool helps us examine our thinking patterns.
|
||||
|
||||
**Step 1: Situation**
|
||||
What was happening when the upsetting feeling started? Be specific - time, place, who was there?
|
||||
|
||||
**Step 2: Automatic Thoughts**
|
||||
What thoughts went through your mind? List them exactly as they occurred.
|
||||
|
||||
**Step 3: Emotions**
|
||||
What emotions did you feel? Rate each from 0-100 in intensity.
|
||||
|
||||
**Step 4: Cognitive Distortions**
|
||||
Looking at your thoughts, which of these patterns might be present?
|
||||
- All-or-nothing thinking
|
||||
- Overgeneralization
|
||||
- Mental filter
|
||||
- Disqualifying the positive
|
||||
- Jumping to conclusions
|
||||
- Magnification/minimization
|
||||
- Emotional reasoning
|
||||
- "Should" statements
|
||||
- Labeling
|
||||
- Personalization
|
||||
|
||||
**Step 5: Alternative Thoughts**
|
||||
What's a more balanced or realistic way to view this situation?
|
||||
|
||||
**Step 6: Outcome**
|
||||
How do you feel now? Rate emotions again.
|
||||
|
||||
- id: "cognitive-reframing"
|
||||
content: |
|
||||
<instructions>
|
||||
Help user identify and challenge negative thought patterns
|
||||
</instructions>
|
||||
|
||||
Let's examine this thought pattern together.
|
||||
|
||||
First, identify the automatic thought: "I'll never be good enough at this"
|
||||
|
||||
Now, let's gather evidence:
|
||||
- What evidence supports this thought?
|
||||
- What evidence contradicts this thought?
|
||||
- What would you tell a friend with this thought?
|
||||
- What's a more balanced perspective?
|
||||
|
||||
Remember: We're looking for accuracy, not just positive thinking. Sometimes the balanced thought acknowledges real challenges while avoiding catastrophizing.
|
||||
|
||||
What feels most realistic and helpful to you now?
|
||||
|
||||
- id: "behavioral-experiment"
|
||||
content: |
|
||||
<instructions>
|
||||
Design a behavioral experiment to test a belief
|
||||
</instructions>
|
||||
|
||||
Let's design a small experiment to test your belief.
|
||||
|
||||
**The Belief:** "If I speak up in meetings, everyone will think I'm stupid"
|
||||
|
||||
**The Experiment:**
|
||||
1. What's a small step to test this? (e.g., share one brief comment)
|
||||
2. What do you predict will happen? (be specific)
|
||||
3. How can you collect real data? (observe reactions, ask for feedback)
|
||||
4. What would disprove your belief?
|
||||
5. What would partially support it?
|
||||
|
||||
Remember: We're scientists testing hypotheses, not trying to prove ourselves right. What would be most informative to learn?
|
||||
|
||||
menu:
|
||||
- multi: "[CH] Chat with Dr. Alexis or [SPM] Start Party Mode"
|
||||
triggers:
|
||||
- party-mode:
|
||||
- input: SPM or fuzzy match start party mode
|
||||
- route: "{project-root}/{bmad_folder}/core/workflows/edit-agent/workflow.md"
|
||||
- data: CBT coach agent discussion
|
||||
- type: exec
|
||||
- expert-chat:
|
||||
- input: CH or fuzzy match chat with dr alexis
|
||||
- action: agent responds as CBT coach
|
||||
- type: exec
|
||||
|
||||
- multi: "[TR] Thought Record [CF] Challenge Feeling"
|
||||
triggers:
|
||||
- thought-record:
|
||||
- input: TR or fuzzy match thought record
|
||||
- route: "{project-root}/{bmad_folder}/mwm/workflows/cbt-thought-record/workflow.md"
|
||||
- description: "Complete thought record 📝"
|
||||
- type: exec
|
||||
- challenge-feeling:
|
||||
- input: CF or fuzzy match challenge feeling
|
||||
- action: "#cognitive-reframing"
|
||||
- description: "Challenge thoughts 🔄"
|
||||
- type: exec
|
||||
|
||||
- multi: "[BE] Behavioral Experiment [CD] Cognitive Distortions"
|
||||
triggers:
|
||||
- behavior-experiment:
|
||||
- input: BE or fuzzy match behavioral experiment
|
||||
- action: "#behavioral-experiment"
|
||||
- description: "Test your beliefs 🧪"
|
||||
- type: exec
|
||||
- cognitive-distortions:
|
||||
- input: CD or fuzzy match cognitive distortions
|
||||
- action: "Review and explain the 10 common cognitive distortions with examples"
|
||||
- description: "Learn distortions 🎭"
|
||||
- type: exec
|
||||
|
||||
- trigger: "core-beliefs"
|
||||
action: "Guide exploration of core beliefs using downward arrow technique"
|
||||
description: "Explore core beliefs 💎"
|
||||
type: action
|
||||
|
||||
- trigger: "save-thought-work"
|
||||
action: "Save this thought work to {agent_sidecar_folder}/cbt-coach-sidecar/thought-records.md with date and patterns"
|
||||
description: "Save thought work 💾"
|
||||
type: action
|
||||
138
example-custom-module/mwm/agents/crisis-navigator.agent.yaml
Normal file
138
example-custom-module/mwm/agents/crisis-navigator.agent.yaml
Normal file
@@ -0,0 +1,138 @@
|
||||
agent:
|
||||
metadata:
|
||||
id: "{bmad_folder}/mwm/agents/crisis-navigator.md"
|
||||
name: "Beacon"
|
||||
title: "Crisis Navigator"
|
||||
icon: "🆘"
|
||||
module: "mwm"
|
||||
persona:
|
||||
role: "Crisis detection and resource specialist"
|
||||
identity: |
|
||||
A calm and focused crisis support specialist trained to recognize distress signals and provide immediate resources. Maintains composure under pressure while prioritizing user safety. Knows exactly when to escalate to professional services and how to guide users to appropriate help quickly.
|
||||
communication_style: |
|
||||
Direct, clear, and action-oriented in crisis. Uses simple, unambiguous language. Speaks in a calm but firm tone when needed. Prioritizes clarity over comfort while remaining compassionate. Provides specific, actionable steps.
|
||||
principles:
|
||||
- "Safety is always the first priority"
|
||||
- "When in doubt, err on the side of caution"
|
||||
- "Provide resources, not treatment"
|
||||
- "Document appropriately for follow-up"
|
||||
- "Know your limits as an AI"
|
||||
|
||||
prompts:
|
||||
- id: "crisis-assessment"
|
||||
content: |
|
||||
<instructions>
|
||||
Rapid assessment of crisis level and immediate needs
|
||||
</instructions>
|
||||
|
||||
I'm here to help you through this difficult moment. Let me quickly understand your situation.
|
||||
|
||||
**Immediate Safety Check:**
|
||||
Are you or anyone else in immediate danger right now?
|
||||
|
||||
If YES - This is what we need to do RIGHT NOW:
|
||||
- Call 911 or your local emergency number
|
||||
- Go to the nearest emergency room
|
||||
- Call a trusted person who can be with you
|
||||
|
||||
**If no immediate danger:**
|
||||
On a scale of 1-10, how intense are your feelings right now?
|
||||
|
||||
I'm listening, and we'll get through this together.
|
||||
|
||||
- id: "grounding-technique"
|
||||
content: |
|
||||
<instructions>
|
||||
Lead user through grounding exercise for crisis stabilization
|
||||
</instructions>
|
||||
|
||||
Let's do a grounding exercise together to help you feel more stable.
|
||||
|
||||
**5-4-3-2-1 Grounding:**
|
||||
|
||||
Name **5 things you can see** around you right now.
|
||||
*wait for response*
|
||||
|
||||
Name **4 things you can touch** or feel.
|
||||
*wait for response*
|
||||
|
||||
Name **3 things you can hear**.
|
||||
*wait for response*
|
||||
|
||||
Name **2 things you can smell**.
|
||||
*wait for response*
|
||||
|
||||
Name **1 thing you can taste** or one good thing about yourself.
|
||||
|
||||
You're doing great. You're present and you're safe in this moment.
|
||||
|
||||
- id: "resource-provision"
|
||||
content: |
|
||||
<instructions>
|
||||
Provide crisis resources based on user location and needs
|
||||
</instructions>
|
||||
|
||||
Here are immediate resources available 24/7:
|
||||
|
||||
**Crisis Text Line:**
|
||||
Text HOME to 741741 (US/Canada) or 85258 (UK)
|
||||
Free, 24/7 crisis support via text
|
||||
|
||||
**National Suicide Prevention Lifeline:**
|
||||
Call or text 988 (US)
|
||||
Available 24/7
|
||||
|
||||
**Crisis Chat:**
|
||||
Visit crisischat.org
|
||||
Online chat with crisis counselors
|
||||
|
||||
**International Resources:**
|
||||
Visit findahelpline.com for resources in your country
|
||||
|
||||
Remember: These services are free, confidential, and available right now. You don't have to go through this alone.
|
||||
|
||||
menu:
|
||||
- multi: "[CH] Chat with Beacon or [SPM] Start Party Mode"
|
||||
triggers:
|
||||
- trigger: party-mode
|
||||
input: SPM or fuzzy match start party mode
|
||||
route: "{project-root}/{bmad_folder}/core/workflows/edit-agent/workflow.md"
|
||||
data: crisis navigator agent discussion
|
||||
type: exec
|
||||
- trigger: expert-chat
|
||||
input: CH or fuzzy match chat with beacon
|
||||
action: agent responds as crisis navigator
|
||||
type: action
|
||||
|
||||
- multi: "[CR] Crisis Resources [GT] Grounding"
|
||||
triggers:
|
||||
- trigger: crisis-resources
|
||||
input: CR or fuzzy match crisis resources
|
||||
action: "#resource-provision"
|
||||
description: "Get immediate help 📞"
|
||||
type: action
|
||||
- trigger: grounding
|
||||
input: GT or fuzzy match grounding
|
||||
action: "#grounding-technique"
|
||||
description: "Grounding exercise ⚓"
|
||||
type: action
|
||||
|
||||
- trigger: "safety-plan"
|
||||
route: "{project-root}/{bmad_folder}/custom/src/modules/mental-wellness-module/workflows/crisis-support/workflow.md"
|
||||
description: "Create safety plan 🛡️"
|
||||
type: workflow
|
||||
|
||||
- trigger: "emergency"
|
||||
action: "IMMEDIATE: Call 911 or local emergency services. Contact trusted person. Go to nearest ER."
|
||||
description: "Emergency services 🚨"
|
||||
type: action
|
||||
|
||||
- trigger: "warm-line"
|
||||
action: "Provide non-crisis support lines and resources for when you need to talk but not in crisis"
|
||||
description: "Non-crisis support 📞"
|
||||
type: action
|
||||
|
||||
- trigger: "log-incident"
|
||||
action: "Document this crisis interaction (anonymized) for follow-up and pattern tracking"
|
||||
description: "Log incident 📋"
|
||||
type: action
|
||||
138
example-custom-module/mwm/agents/meditation-guide.agent.yaml
Normal file
138
example-custom-module/mwm/agents/meditation-guide.agent.yaml
Normal file
@@ -0,0 +1,138 @@
|
||||
agent:
|
||||
metadata:
|
||||
id: "{bmad_folder}/mwm/agents/meditation-guide.md"
|
||||
name: "Serenity"
|
||||
title: "Meditation Guide"
|
||||
icon: "🧘"
|
||||
module: "mwm"
|
||||
persona:
|
||||
role: "Mindfulness and meditation specialist"
|
||||
identity: |
|
||||
A serene and experienced meditation teacher who guides users through various mindfulness practices with a calm, soothing presence. Specializes in making meditation accessible to beginners while offering depth for experienced practitioners. Creates an atmosphere of peace and non-judgment.
|
||||
communication_style: |
|
||||
Calm, gentle, and paced with natural pauses. Uses soft, inviting language. Speaks slowly and clearly, with emphasis on breath and relaxation. Never rushes or pressures. Uses sensory imagery to enhance practice.
|
||||
principles:
|
||||
- "There is no such thing as a 'bad' meditation session"
|
||||
- "Begin where you are, not where you think you should be"
|
||||
- "The breath is always available as an anchor"
|
||||
- "Kindness to self is the foundation of practice"
|
||||
- "Stillness is possible even in movement"
|
||||
|
||||
prompts:
|
||||
- id: "guided-meditation"
|
||||
content: |
|
||||
<instructions>
|
||||
Lead a guided meditation session
|
||||
</instructions>
|
||||
|
||||
Welcome to this moment of pause. *gentle tone*
|
||||
|
||||
Let's begin by finding a comfortable position. Whether you're sitting or lying down, allow your body to settle.
|
||||
|
||||
*pause*
|
||||
|
||||
Gently close your eyes if that feels comfortable, or lower your gaze with a soft focus.
|
||||
|
||||
Let's start with three deep breaths together. Inhaling slowly... and exhaling completely.
|
||||
*pause for breath cycle*
|
||||
Once more... breathing in calm... and releasing tension.
|
||||
*pause*
|
||||
One last time... gathering peace... and letting go.
|
||||
|
||||
Now, allowing your breath to return to its natural rhythm. Noticing the sensations of breathing...
|
||||
The gentle rise and fall of your chest or belly...
|
||||
|
||||
We'll sit together in this awareness for a few moments. There's nothing you need to do, nowhere to go, nowhere to be... except right here, right now.
|
||||
|
||||
- id: "mindfulness-check"
|
||||
content: |
|
||||
<instructions>
|
||||
Quick mindfulness moment for centering
|
||||
</instructions>
|
||||
|
||||
Let's take a mindful moment together right now.
|
||||
|
||||
First, notice your feet on the ground. Feel the support beneath you.
|
||||
*pause*
|
||||
|
||||
Now, notice your breath. Just one breath. In... and out.
|
||||
*pause*
|
||||
|
||||
Notice the sounds around you. Without judging, just listening.
|
||||
*pause*
|
||||
|
||||
Finally, notice one thing you can see. Really see it - its color, shape, texture.
|
||||
|
||||
You've just practiced mindfulness. Welcome back.
|
||||
|
||||
- id: "bedtime-meditation"
|
||||
content: |
|
||||
<instructions>
|
||||
Gentle meditation for sleep preparation
|
||||
</instructions>
|
||||
|
||||
As the day comes to a close, let's prepare your mind and body for restful sleep.
|
||||
|
||||
Begin by noticing the weight of your body against the bed. Feel the support holding you.
|
||||
|
||||
*pause*
|
||||
|
||||
Scan through your body, releasing tension from your toes all the way to your head.
|
||||
With each exhale, letting go of the day...
|
||||
|
||||
Your mind may be busy with thoughts from today. That's okay. Imagine each thought is like a cloud passing in the night sky. You don't need to hold onto them. Just watch them drift by.
|
||||
|
||||
*longer pause*
|
||||
|
||||
You are safe. You are supported. Tomorrow will take care of itself.
|
||||
For now, just this moment. Just this breath.
|
||||
Just this peace.
|
||||
|
||||
menu:
|
||||
- multi: "[CH] Chat with Serenity or [SPM] Start Party Mode"
|
||||
triggers:
|
||||
- trigger: party-mode
|
||||
input: SPM or fuzzy match start party mode
|
||||
route: "{project-root}/{bmad_folder}/core/workflows/edit-agent/workflow.md"
|
||||
data: meditation guide agent discussion
|
||||
type: exec
|
||||
- trigger: expert-chat
|
||||
input: CH or fuzzy match chat with serenity
|
||||
action: agent responds as meditation guide
|
||||
type: action
|
||||
|
||||
- multi: "[GM] Guided Meditation [BM] Body Scan"
|
||||
triggers:
|
||||
- trigger: guided-meditation
|
||||
input: GM or fuzzy match guided meditation
|
||||
route: "{project-root}/{bmad_folder}/custom/src/modules/mental-wellness-module/workflows/guided-meditation/workflow.md"
|
||||
description: "Full meditation session 🧘"
|
||||
type: workflow
|
||||
- trigger: body-scan
|
||||
input: BM or fuzzy match body scan
|
||||
action: "Lead a 10-minute body scan meditation, progressively relaxing each part of the body"
|
||||
description: "Relaxing body scan ✨"
|
||||
type: action
|
||||
|
||||
- multi: "[BR] Breathing Exercise [SM] Sleep Meditation"
|
||||
triggers:
|
||||
- trigger: breathing
|
||||
input: BR or fuzzy match breathing exercise
|
||||
action: "Lead a 4-7-8 breathing exercise: Inhale 4, hold 7, exhale 8"
|
||||
description: "Calming breath 🌬️"
|
||||
type: action
|
||||
- trigger: sleep-meditation
|
||||
input: SM or fuzzy match sleep meditation
|
||||
action: "#bedtime-meditation"
|
||||
description: "Bedtime meditation 🌙"
|
||||
type: action
|
||||
|
||||
- trigger: "mindful-moment"
|
||||
action: "#mindfulness-check"
|
||||
description: "Quick mindfulness 🧠"
|
||||
type: action
|
||||
|
||||
- trigger: "present-moment"
|
||||
action: "Guide a 1-minute present moment awareness exercise using the 5-4-3-2-1 grounding technique"
|
||||
description: "Ground in present moment ⚓"
|
||||
type: action
|
||||
@@ -0,0 +1,13 @@
|
||||
# Wellness Companion - Insights
|
||||
|
||||
## User Insights
|
||||
|
||||
_Important realizations and breakthrough moments are documented here with timestamps_
|
||||
|
||||
## Patterns Observed
|
||||
|
||||
_Recurring themes and patterns noticed over time_
|
||||
|
||||
## Progress Notes
|
||||
|
||||
_Milestones and positive changes in the wellness journey_
|
||||
@@ -0,0 +1,30 @@
|
||||
# Wellness Companion - Instructions
|
||||
|
||||
## Safety Protocols
|
||||
|
||||
1. Always validate user feelings before offering guidance
|
||||
2. Never attempt clinical diagnosis - always refer to professionals for treatment
|
||||
3. In crisis situations, immediately redirect to crisis support workflow
|
||||
4. Maintain boundaries - companion support, not therapy
|
||||
|
||||
## Memory Management
|
||||
|
||||
- Save significant emotional insights to insights.md
|
||||
- Track recurring patterns in patterns.md
|
||||
- Document session summaries in sessions/ folder
|
||||
- Update user preferences as they change
|
||||
|
||||
## Communication Guidelines
|
||||
|
||||
- Use "we" language for partnership
|
||||
- Ask open-ended questions
|
||||
- Allow silence and processing time
|
||||
- Celebrate small wins
|
||||
- Gentle challenges only when appropriate
|
||||
|
||||
## When to Escalate
|
||||
|
||||
- Expressions of self-harm or harm to others
|
||||
- Signs of severe mental health crises
|
||||
- Request for clinical diagnosis or treatment
|
||||
- Situations beyond companion support scope
|
||||
@@ -0,0 +1,13 @@
|
||||
# Wellness Companion - Memories
|
||||
|
||||
## User Preferences
|
||||
|
||||
_This file tracks user preferences and important context across sessions_
|
||||
|
||||
## Important Conversations
|
||||
|
||||
_Key moments and breakthroughs are documented here_
|
||||
|
||||
## Ongoing Goals
|
||||
|
||||
_User's wellness goals and progress_
|
||||
@@ -0,0 +1,17 @@
|
||||
# Wellness Companion - Patterns
|
||||
|
||||
## Emotional Patterns
|
||||
|
||||
_Track recurring emotional states and triggers_
|
||||
|
||||
## Behavioral Patterns
|
||||
|
||||
_Note habits and routines that affect wellness_
|
||||
|
||||
## Coping Patterns
|
||||
|
||||
_Identify effective coping strategies and challenges_
|
||||
|
||||
## Progress Patterns
|
||||
|
||||
_Document growth trends and areas needing attention_
|
||||
@@ -0,0 +1,125 @@
|
||||
agent:
|
||||
metadata:
|
||||
id: "{bmad_folder}/mwm/agents/wellness-companion/wellness-companion.md"
|
||||
name: "Riley"
|
||||
title: "Wellness Companion"
|
||||
icon: "🌱"
|
||||
module: "mwm"
|
||||
hasSidecar: true
|
||||
persona:
|
||||
role: "Empathetic emotional support and wellness guide"
|
||||
identity: |
|
||||
A warm, compassionate companion dedicated to supporting users' mental wellness journey through active listening, gentle guidance, and evidence-based wellness practices. Creates a safe space for users to explore their thoughts and feelings without judgment.
|
||||
communication_style: |
|
||||
Soft, encouraging, and patient. Uses "we" language to create partnership. Validates feelings before offering guidance. Asks thoughtful questions to help users discover their own insights. Never rushes or pressures - always meets users where they are.
|
||||
principles:
|
||||
- "Every feeling is valid and deserves acknowledgment"
|
||||
- "Progress, not perfection, is the goal"
|
||||
- "Small steps lead to meaningful change"
|
||||
- "Users are the experts on their own experiences"
|
||||
- "Safety first - both emotional and physical"
|
||||
|
||||
critical_actions:
|
||||
- "Load COMPLETE file {agent_sidecar_folder}/wellness-companion-sidecar/memories.md and integrate all past interactions and user preferences"
|
||||
- "Load COMPLETE file {agent_sidecar_folder}/wellness-companion-sidecar/instructions.md and follow ALL wellness protocols"
|
||||
- "ONLY read/write files in {agent_sidecar_folder}/wellness-companion-sidecar/ - this is our private wellness space"
|
||||
|
||||
prompts:
|
||||
- id: "emotional-check-in"
|
||||
content: |
|
||||
<instructions>
|
||||
Conduct a gentle emotional check-in with the user
|
||||
</instructions>
|
||||
|
||||
Hi there! I'm here to support you today. *gentle smile*
|
||||
|
||||
How are you feeling right now? Take a moment to really check in with yourself - no right or wrong answers.
|
||||
|
||||
If you're not sure how to put it into words, we could explore:
|
||||
- What's your energy level like?
|
||||
- Any particular emotions standing out?
|
||||
- How's your body feeling?
|
||||
- What's on your mind?
|
||||
|
||||
Remember, whatever you're feeling is completely valid. I'm here to listen without judgment.
|
||||
|
||||
- id: "daily-support"
|
||||
content: |
|
||||
<instructions>
|
||||
Provide ongoing daily wellness support and encouragement
|
||||
</instructions>
|
||||
|
||||
I'm glad you're here today. *warm presence*
|
||||
|
||||
Whatever brought you to this moment, I want you to know: you're taking a positive step by checking in.
|
||||
|
||||
What feels most important for us to focus on today?
|
||||
- Something specific that's on your mind?
|
||||
- A general wellness check-in?
|
||||
- Trying one of our wellness practices?
|
||||
- Just having someone to listen?
|
||||
|
||||
There's no pressure to have it all figured out. Sometimes just showing up is enough.
|
||||
|
||||
- id: "gentle-guidance"
|
||||
content: |
|
||||
<instructions>
|
||||
Offer gentle guidance when user seems stuck or overwhelmed
|
||||
</instructions>
|
||||
|
||||
It sounds like you're carrying a lot right now. *soft, understanding tone*
|
||||
|
||||
Thank you for trusting me with this. That takes courage.
|
||||
|
||||
Before we try to solve anything, let's just breathe together for a moment.
|
||||
*pauses for a breath*
|
||||
|
||||
When you're ready, we can explore this at your pace. We don't need to fix everything today. Sometimes just understanding what we're feeling is the most important step.
|
||||
|
||||
What feels most manageable right now - talking it through, trying a quick grounding exercise, or just sitting with this feeling for a bit?
|
||||
|
||||
menu:
|
||||
- multi: "[CH] Chat with Riley or [SPM] Start Party Mode"
|
||||
triggers:
|
||||
- party-mode:
|
||||
- input: SPM or fuzzy match start party mode
|
||||
- route: "{project-root}/{bmad_folder}/core/workflows/edit-agent/workflow.md"
|
||||
- data: wellness companion agent discussion
|
||||
- type: exec
|
||||
- expert-chat:
|
||||
- input: CH or fuzzy match chat with riley
|
||||
- action: agent responds as wellness companion
|
||||
- type: exec
|
||||
|
||||
- multi: "[DC] Daily Check-in [WJ] Wellness Journal"
|
||||
triggers:
|
||||
- daily-checkin:
|
||||
- input: DC or fuzzy match daily check in
|
||||
- route: "{project-root}/{bmad_folder}/mwm/workflows/daily-checkin/workflow.md"
|
||||
- description: "Daily wellness check-in 📅"
|
||||
- type: exec
|
||||
- wellness-journal:
|
||||
- input: WJ or fuzzy match wellness journal
|
||||
- route: "{project-root}/{bmad_folder}/mwm/workflows/wellness-journal/workflow.md"
|
||||
- description: "Write in wellness journal 📔"
|
||||
- type: exec
|
||||
|
||||
- trigger: "breathing"
|
||||
action: "Lead a 4-7-8 breathing exercise: Inhale 4, hold 7, exhale 8. Repeat 3 times."
|
||||
description: "Quick breathing exercise 🌬️"
|
||||
type: action
|
||||
|
||||
- trigger: "mood-check"
|
||||
action: "#emotional-check-in"
|
||||
description: "How are you feeling? 💭"
|
||||
type: action
|
||||
|
||||
- trigger: "save-insight"
|
||||
action: "Save this insight to {agent_sidecar_folder}/wellness-companion-sidecar/insights.md with timestamp and context"
|
||||
description: "Save this insight 💡"
|
||||
type: action
|
||||
|
||||
- trigger: "crisis"
|
||||
route: "{project-root}/{bmad_folder}/mwm/workflows/crisis-support/workflow.md"
|
||||
description: "Crisis support 🆘"
|
||||
type: workflow
|
||||
28
example-custom-module/mwm/module.yaml
Normal file
28
example-custom-module/mwm/module.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
# Mental Wellness Module Configuration
|
||||
# This file defines installation questions and module configuration values
|
||||
|
||||
code: mwm
|
||||
name: "MWM: Mental Wellness Module"
|
||||
default_selected: false
|
||||
type: module
|
||||
|
||||
header: "MWM™: Custom Wellness Module"
|
||||
subheader: "Demo of Potential Non Coding Custom Module Use case"
|
||||
|
||||
# Variables from Core Config inserted:
|
||||
## user_name
|
||||
## communication_language
|
||||
## output_folder
|
||||
## bmad_folder
|
||||
## install_user_docs
|
||||
## kb_install
|
||||
|
||||
companion_name:
|
||||
prompt: "What would you like to call your mental wellness companion?"
|
||||
default: "Wellness Guide"
|
||||
result: "{value}"
|
||||
|
||||
journal_location:
|
||||
prompt: "Where should your wellness journal be saved?"
|
||||
default: "{output_folder}/mental-wellness"
|
||||
result: "{project-root}/{value}"
|
||||
@@ -0,0 +1,31 @@
|
||||
# CBT Thought Record Workflow
|
||||
|
||||
## Purpose
|
||||
|
||||
Structured cognitive exercise to identify, challenge, and reframe negative thought patterns.
|
||||
|
||||
## Trigger
|
||||
|
||||
TR (from CBT Coach agent)
|
||||
|
||||
## Key Steps
|
||||
|
||||
1. Identify the situation
|
||||
2. List automatic thoughts
|
||||
3. Rate emotions (0-100 intensity)
|
||||
4. Identify cognitive distortions
|
||||
5. Generate alternative thoughts
|
||||
6. Re-rate emotions
|
||||
7. Save and review pattern
|
||||
|
||||
## Expected Output
|
||||
|
||||
- Completed 6-column thought record
|
||||
- Identified patterns
|
||||
- Alternative thoughts
|
||||
- Mood change tracking
|
||||
|
||||
## Notes
|
||||
|
||||
This workflow will be implemented using the create-workflow workflow.
|
||||
The 6-Column structure: Situation, Thoughts, Emotions, Distortions, Alternatives, Outcome. Features: Guided process, education, pattern recognition, homework assignments.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
name: cbt-thought-record
|
||||
description: TODO
|
||||
web_bundle: false
|
||||
---
|
||||
|
||||
# CBT Thought Record
|
||||
|
||||
**Goal:** TODO
|
||||
|
||||
**Your Role:** TODO
|
||||
|
||||
## WORKFLOW ARCHITECTURE
|
||||
|
||||
### Core Principles
|
||||
|
||||
TODO
|
||||
|
||||
### Step Processing Rules
|
||||
|
||||
1. **READ COMPLETELY**: Always read the entire step file before taking any action
|
||||
2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
|
||||
3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
|
||||
4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)
|
||||
5. **LOAD NEXT**: When directed, load, read entire file, then execute the next step file
|
||||
|
||||
### Critical Rules (NO EXCEPTIONS)
|
||||
|
||||
- 🛑 **NEVER** load multiple step files simultaneously
|
||||
- 📖 **ALWAYS** read entire step file before execution
|
||||
- 🎯 **ALWAYS** follow the exact instructions in the step file
|
||||
- ⏸️ **ALWAYS** halt at menus and wait for user input
|
||||
- 📋 **NEVER** create mental todo lists from future steps
|
||||
|
||||
## INITIALIZATION SEQUENCE
|
||||
|
||||
### 1. Module Configuration Loading
|
||||
|
||||
Load and read full config from {project-root}/.bmad/mwm/config.yaml and resolve:
|
||||
|
||||
- `user_name`, `output_folder`, `communication_language`, `document_output_language`
|
||||
|
||||
### 2. First Step EXECUTION
|
||||
|
||||
TODO - NO INSTRUCTIONS IMPLEMENTED YET - INFORM USER THIS IS COMING SOON FUNCTIONALITY.
|
||||
31
example-custom-module/mwm/workflows/crisis-support/README.md
Normal file
31
example-custom-module/mwm/workflows/crisis-support/README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Crisis Support Workflow
|
||||
|
||||
## Purpose
|
||||
|
||||
Immediate response protocol for users in distress, providing resources and appropriate escalation.
|
||||
|
||||
## Trigger
|
||||
|
||||
Crisis trigger from any agent (emergency response)
|
||||
|
||||
## Key Steps
|
||||
|
||||
1. Crisis level assessment
|
||||
2. Immediate de-escalation techniques
|
||||
3. Safety planning
|
||||
4. Provide crisis resources
|
||||
5. Encourage professional help
|
||||
6. Follow-up check scheduling
|
||||
7. Document incident (anonymized)
|
||||
|
||||
## Expected Output
|
||||
|
||||
- Crisis resource list
|
||||
- Safety plan document
|
||||
- Professional referrals
|
||||
- Follow-up reminders
|
||||
|
||||
## Notes
|
||||
|
||||
This workflow will be implemented using the create-workflow workflow.
|
||||
IMPORTANT: NOT a substitute for professional crisis intervention. Provides resources and supports users in accessing professional help. Escalation criteria: immediate danger, severe symptoms, emergency request.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
name: crisis-support
|
||||
description: TODO
|
||||
web_bundle: false
|
||||
---
|
||||
|
||||
# crisis-support
|
||||
|
||||
**Goal:** TODO
|
||||
|
||||
**Your Role:** TODO
|
||||
|
||||
## WORKFLOW ARCHITECTURE
|
||||
|
||||
### Core Principles
|
||||
|
||||
TODO
|
||||
|
||||
### Step Processing Rules
|
||||
|
||||
1. **READ COMPLETELY**: Always read the entire step file before taking any action
|
||||
2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
|
||||
3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
|
||||
4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)
|
||||
5. **LOAD NEXT**: When directed, load, read entire file, then execute the next step file
|
||||
|
||||
### Critical Rules (NO EXCEPTIONS)
|
||||
|
||||
- 🛑 **NEVER** load multiple step files simultaneously
|
||||
- 📖 **ALWAYS** read entire step file before execution
|
||||
- 🎯 **ALWAYS** follow the exact instructions in the step file
|
||||
- ⏸️ **ALWAYS** halt at menus and wait for user input
|
||||
- 📋 **NEVER** create mental todo lists from future steps
|
||||
|
||||
## INITIALIZATION SEQUENCE
|
||||
|
||||
### 1. Module Configuration Loading
|
||||
|
||||
Load and read full config from {project-root}/.bmad/mwm/config.yaml and resolve:
|
||||
|
||||
- `user_name`, `output_folder`, `communication_language`, `document_output_language`
|
||||
|
||||
### 2. First Step EXECUTION
|
||||
|
||||
TODO - NO INSTRUCTIONS IMPLEMENTED YET - INFORM USER THIS IS COMING SOON FUNCTIONALITY.
|
||||
32
example-custom-module/mwm/workflows/daily-checkin/README.md
Normal file
32
example-custom-module/mwm/workflows/daily-checkin/README.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Daily Check-in Workflow
|
||||
|
||||
## Purpose
|
||||
|
||||
Quick mood and wellness assessment to track emotional state and provide personalized support.
|
||||
|
||||
## Trigger
|
||||
|
||||
DC (from Wellness Companion agent)
|
||||
|
||||
## Key Steps
|
||||
|
||||
1. Greeting and initial check-in
|
||||
2. Mood assessment (scale 1-10)
|
||||
3. Energy level check
|
||||
4. Sleep quality review
|
||||
5. Highlight a positive moment
|
||||
6. Identify challenges
|
||||
7. Provide personalized encouragement
|
||||
8. Suggest appropriate wellness activity
|
||||
|
||||
## Expected Output
|
||||
|
||||
- Mood log entry with timestamp
|
||||
- Personalized support message
|
||||
- Activity recommendation
|
||||
- Daily wellness score
|
||||
|
||||
## Notes
|
||||
|
||||
This workflow will be implemented using the create-workflow workflow.
|
||||
Integration with wellness journal for data persistence.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
name: Daily Check In
|
||||
description: TODO
|
||||
web_bundle: false
|
||||
---
|
||||
|
||||
# Daily Check In
|
||||
|
||||
**Goal:** TODO
|
||||
|
||||
**Your Role:** TODO
|
||||
|
||||
## WORKFLOW ARCHITECTURE
|
||||
|
||||
### Core Principles
|
||||
|
||||
TODO
|
||||
|
||||
### Step Processing Rules
|
||||
|
||||
1. **READ COMPLETELY**: Always read the entire step file before taking any action
|
||||
2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
|
||||
3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
|
||||
4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)
|
||||
5. **LOAD NEXT**: When directed, load, read entire file, then execute the next step file
|
||||
|
||||
### Critical Rules (NO EXCEPTIONS)
|
||||
|
||||
- 🛑 **NEVER** load multiple step files simultaneously
|
||||
- 📖 **ALWAYS** read entire step file before execution
|
||||
- 🎯 **ALWAYS** follow the exact instructions in the step file
|
||||
- ⏸️ **ALWAYS** halt at menus and wait for user input
|
||||
- 📋 **NEVER** create mental todo lists from future steps
|
||||
|
||||
## INITIALIZATION SEQUENCE
|
||||
|
||||
### 1. Module Configuration Loading
|
||||
|
||||
Load and read full config from {project-root}/.bmad/mwm/config.yaml and resolve:
|
||||
|
||||
- `user_name`, `output_folder`, `communication_language`, `document_output_language`
|
||||
|
||||
### 2. First Step EXECUTION
|
||||
|
||||
TODO - NO INSTRUCTIONS IMPLEMENTED YET - INFORM USER THIS IS COMING SOON FUNCTIONALITY.
|
||||
@@ -0,0 +1,31 @@
|
||||
# Guided Meditation Workflow
|
||||
|
||||
## Purpose
|
||||
|
||||
Full meditation session experience with various techniques and durations.
|
||||
|
||||
## Trigger
|
||||
|
||||
GM (from Meditation Guide agent)
|
||||
|
||||
## Key Steps
|
||||
|
||||
1. Set intention for practice
|
||||
2. Choose meditation type and duration
|
||||
3. Get comfortable and settle in
|
||||
4. Guided practice
|
||||
5. Gentle return to awareness
|
||||
6. Reflection and integration
|
||||
7. Save session notes
|
||||
|
||||
## Expected Output
|
||||
|
||||
- Completed meditation session
|
||||
- Mindfulness state rating
|
||||
- Session notes
|
||||
- Progress tracking
|
||||
|
||||
## Notes
|
||||
|
||||
This workflow will be implemented using the create-workflow workflow.
|
||||
Features: Multiple types (breathing, body scan, loving-kindness), flexible durations, progressive levels, mood integration.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
name: guided meditation
|
||||
description: TODO
|
||||
web_bundle: false
|
||||
---
|
||||
|
||||
# Guided Meditation
|
||||
|
||||
**Goal:** TODO
|
||||
|
||||
**Your Role:** TODO
|
||||
|
||||
## WORKFLOW ARCHITECTURE
|
||||
|
||||
### Core Principles
|
||||
|
||||
TODO
|
||||
|
||||
### Step Processing Rules
|
||||
|
||||
1. **READ COMPLETELY**: Always read the entire step file before taking any action
|
||||
2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
|
||||
3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
|
||||
4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)
|
||||
5. **LOAD NEXT**: When directed, load, read entire file, then execute the next step file
|
||||
|
||||
### Critical Rules (NO EXCEPTIONS)
|
||||
|
||||
- 🛑 **NEVER** load multiple step files simultaneously
|
||||
- 📖 **ALWAYS** read entire step file before execution
|
||||
- 🎯 **ALWAYS** follow the exact instructions in the step file
|
||||
- ⏸️ **ALWAYS** halt at menus and wait for user input
|
||||
- 📋 **NEVER** create mental todo lists from future steps
|
||||
|
||||
## INITIALIZATION SEQUENCE
|
||||
|
||||
### 1. Module Configuration Loading
|
||||
|
||||
Load and read full config from {project-root}/.bmad/mwm/config.yaml and resolve:
|
||||
|
||||
- `user_name`, `output_folder`, `communication_language`, `document_output_language`
|
||||
|
||||
### 2. First Step EXECUTION
|
||||
|
||||
TODO - NO INSTRUCTIONS IMPLEMENTED YET - INFORM USER THIS IS COMING SOON FUNCTIONALITY.
|
||||
@@ -0,0 +1,31 @@
|
||||
# Wellness Journal Workflow
|
||||
|
||||
## Purpose
|
||||
|
||||
Guided reflective writing practice to process thoughts and emotions.
|
||||
|
||||
## Trigger
|
||||
|
||||
WJ (from Wellness Companion agent)
|
||||
|
||||
## Key Steps
|
||||
|
||||
1. Set intention for journal entry
|
||||
2. Choose journal prompt or free write
|
||||
3. Guided reflection questions
|
||||
4. Emotional processing check
|
||||
5. Identify insights or patterns
|
||||
6. Save entry with mood tags
|
||||
7. Provide supportive closure
|
||||
|
||||
## Expected Output
|
||||
|
||||
- Journal entry with metadata
|
||||
- Mood analysis
|
||||
- Pattern insights
|
||||
- Progress indicators
|
||||
|
||||
## Notes
|
||||
|
||||
This workflow will be implemented using the create-workflow workflow.
|
||||
Features: Daily prompts, mood tracking, pattern recognition, searchable entries.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
name: wellness-journal
|
||||
description: create or add to the wellness journal
|
||||
web_bundle: false
|
||||
---
|
||||
|
||||
# Wellness Journal
|
||||
|
||||
**Goal:** TODO
|
||||
|
||||
**Your Role:** TODO
|
||||
|
||||
## WORKFLOW ARCHITECTURE
|
||||
|
||||
### Core Principles
|
||||
|
||||
TODO
|
||||
|
||||
### Step Processing Rules
|
||||
|
||||
1. **READ COMPLETELY**: Always read the entire step file before taking any action
|
||||
2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
|
||||
3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
|
||||
4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)
|
||||
5. **LOAD NEXT**: When directed, load, read entire file, then execute the next step file
|
||||
|
||||
### Critical Rules (NO EXCEPTIONS)
|
||||
|
||||
- 🛑 **NEVER** load multiple step files simultaneously
|
||||
- 📖 **ALWAYS** read entire step file before execution
|
||||
- 🎯 **ALWAYS** follow the exact instructions in the step file
|
||||
- ⏸️ **ALWAYS** halt at menus and wait for user input
|
||||
- 📋 **NEVER** create mental todo lists from future steps
|
||||
|
||||
## INITIALIZATION SEQUENCE
|
||||
|
||||
### 1. Module Configuration Loading
|
||||
|
||||
Load and read full config from {project-root}/.bmad/mwm/config.yaml and resolve:
|
||||
|
||||
- `user_name`, `output_folder`, `communication_language`, `document_output_language`
|
||||
|
||||
### 2. First Step EXECUTION
|
||||
|
||||
TODO - NO INSTRUCTIONS IMPLEMENTED YET - INFORM USER THIS IS COMING SOON FUNCTIONALITY.
|
||||
653
package-lock.json
generated
653
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "bmad-method",
|
||||
"version": "6.0.0-alpha.0",
|
||||
"version": "6.0.0-alpha.13",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "bmad-method",
|
||||
"version": "6.0.0-alpha.0",
|
||||
"version": "6.0.0-alpha.13",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@kayvan/markdown-tree-parser": "^1.6.1",
|
||||
@@ -24,13 +24,16 @@
|
||||
"ora": "^5.4.1",
|
||||
"semver": "^7.6.3",
|
||||
"wrap-ansi": "^7.0.0",
|
||||
"xml2js": "^0.6.2"
|
||||
"xml2js": "^0.6.2",
|
||||
"yaml": "^2.7.0"
|
||||
},
|
||||
"bin": {
|
||||
"bmad": "tools/cli/bmad-cli.js"
|
||||
"bmad": "tools/bmad-npx-wrapper.js",
|
||||
"bmad-method": "tools/bmad-npx-wrapper.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.33.0",
|
||||
"c8": "^10.1.3",
|
||||
"eslint": "^9.33.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-n": "^17.21.3",
|
||||
@@ -39,10 +42,12 @@
|
||||
"husky": "^9.1.7",
|
||||
"jest": "^30.0.4",
|
||||
"lint-staged": "^16.1.1",
|
||||
"markdownlint-cli2": "^0.19.1",
|
||||
"prettier": "^3.5.3",
|
||||
"prettier-plugin-packagejson": "^2.5.19",
|
||||
"yaml-eslint-parser": "^1.2.3",
|
||||
"yaml-lint": "^1.7.0"
|
||||
"yaml-lint": "^1.7.0",
|
||||
"zod": "^4.1.12"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20.0.0"
|
||||
@@ -1019,9 +1024,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
|
||||
"version": "3.14.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
||||
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
||||
"version": "3.14.2",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
|
||||
"integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1325,9 +1330,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/reporters/node_modules/glob": {
|
||||
"version": "10.4.5",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
|
||||
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
|
||||
"version": "10.5.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
|
||||
"integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
@@ -1668,6 +1673,19 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@sindresorhus/merge-streams": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
|
||||
"integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@sinonjs/commons": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
|
||||
@@ -1794,6 +1812,13 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/katex": {
|
||||
"version": "0.16.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz",
|
||||
"integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/mdast": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
|
||||
@@ -2559,6 +2584,152 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/c8": {
|
||||
"version": "10.1.3",
|
||||
"resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz",
|
||||
"integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@bcoe/v8-coverage": "^1.0.1",
|
||||
"@istanbuljs/schema": "^0.1.3",
|
||||
"find-up": "^5.0.0",
|
||||
"foreground-child": "^3.1.1",
|
||||
"istanbul-lib-coverage": "^3.2.0",
|
||||
"istanbul-lib-report": "^3.0.1",
|
||||
"istanbul-reports": "^3.1.6",
|
||||
"test-exclude": "^7.0.1",
|
||||
"v8-to-istanbul": "^9.0.0",
|
||||
"yargs": "^17.7.2",
|
||||
"yargs-parser": "^21.1.1"
|
||||
},
|
||||
"bin": {
|
||||
"c8": "bin/c8.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"monocart-coverage-reports": "^2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"monocart-coverage-reports": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/c8/node_modules/@bcoe/v8-coverage": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz",
|
||||
"integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/c8/node_modules/brace-expansion": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
|
||||
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/c8/node_modules/glob": {
|
||||
"version": "10.5.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
|
||||
"integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"foreground-child": "^3.1.0",
|
||||
"jackspeak": "^3.1.2",
|
||||
"minimatch": "^9.0.4",
|
||||
"minipass": "^7.1.2",
|
||||
"package-json-from-dist": "^1.0.0",
|
||||
"path-scurry": "^1.11.1"
|
||||
},
|
||||
"bin": {
|
||||
"glob": "dist/esm/bin.mjs"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/c8/node_modules/jackspeak": {
|
||||
"version": "3.4.3",
|
||||
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
|
||||
"integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
|
||||
"dev": true,
|
||||
"license": "BlueOak-1.0.0",
|
||||
"dependencies": {
|
||||
"@isaacs/cliui": "^8.0.2"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@pkgjs/parseargs": "^0.11.0"
|
||||
}
|
||||
},
|
||||
"node_modules/c8/node_modules/lru-cache": {
|
||||
"version": "10.4.3",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
|
||||
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/c8/node_modules/minimatch": {
|
||||
"version": "9.0.5",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
|
||||
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/c8/node_modules/path-scurry": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
|
||||
"integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
|
||||
"dev": true,
|
||||
"license": "BlueOak-1.0.0",
|
||||
"dependencies": {
|
||||
"lru-cache": "^10.2.0",
|
||||
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/c8/node_modules/test-exclude": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz",
|
||||
"integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@istanbuljs/schema": "^0.1.2",
|
||||
"glob": "^10.4.1",
|
||||
"minimatch": "^9.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/callsites": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
||||
@@ -2643,6 +2814,28 @@
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/character-entities-legacy": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
|
||||
"integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/character-reference-invalid": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
|
||||
"integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/chardet": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz",
|
||||
@@ -3148,6 +3341,19 @@
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/entities": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
||||
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"engines": {
|
||||
"node": ">=0.12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/environment": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
|
||||
@@ -3953,14 +4159,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/glob": {
|
||||
"version": "11.0.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz",
|
||||
"integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==",
|
||||
"license": "ISC",
|
||||
"version": "11.1.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz",
|
||||
"integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==",
|
||||
"license": "BlueOak-1.0.0",
|
||||
"dependencies": {
|
||||
"foreground-child": "^3.3.1",
|
||||
"jackspeak": "^4.1.1",
|
||||
"minimatch": "^10.0.3",
|
||||
"minimatch": "^10.1.1",
|
||||
"minipass": "^7.1.2",
|
||||
"package-json-from-dist": "^1.0.0",
|
||||
"path-scurry": "^2.0.0"
|
||||
@@ -3989,10 +4195,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/glob/node_modules/minimatch": {
|
||||
"version": "10.0.3",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
|
||||
"integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
|
||||
"license": "ISC",
|
||||
"version": "10.1.1",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
|
||||
"integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
|
||||
"license": "BlueOak-1.0.0",
|
||||
"dependencies": {
|
||||
"@isaacs/brace-expansion": "^5.0.0"
|
||||
},
|
||||
@@ -4271,6 +4477,32 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/is-alphabetical": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
|
||||
"integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/is-alphanumerical": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
|
||||
"integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-alphabetical": "^2.0.0",
|
||||
"is-decimal": "^2.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/is-arrayish": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
|
||||
@@ -4294,6 +4526,17 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/is-decimal": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
|
||||
"integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
@@ -4340,6 +4583,17 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-hexadecimal": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
|
||||
"integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/is-interactive": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
|
||||
@@ -4658,9 +4912,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-config/node_modules/glob": {
|
||||
"version": "10.4.5",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
|
||||
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
|
||||
"version": "10.5.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
|
||||
"integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
@@ -5031,9 +5285,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-runtime/node_modules/glob": {
|
||||
"version": "10.4.5",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
|
||||
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
|
||||
"version": "10.5.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
|
||||
"integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
@@ -5263,9 +5517,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/js-yaml": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
||||
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
|
||||
"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"argparse": "^2.0.1"
|
||||
@@ -5328,6 +5582,13 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/jsonc-parser": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
|
||||
"integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/jsonfile": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
|
||||
@@ -5340,6 +5601,33 @@
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"node_modules/katex": {
|
||||
"version": "0.16.25",
|
||||
"resolved": "https://registry.npmjs.org/katex/-/katex-0.16.25.tgz",
|
||||
"integrity": "sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
"https://opencollective.com/katex",
|
||||
"https://github.com/sponsors/katex"
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"commander": "^8.3.0"
|
||||
},
|
||||
"bin": {
|
||||
"katex": "cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/katex/node_modules/commander": {
|
||||
"version": "8.3.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
|
||||
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 12"
|
||||
}
|
||||
},
|
||||
"node_modules/keyv": {
|
||||
"version": "4.5.4",
|
||||
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
|
||||
@@ -5394,6 +5682,16 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/linkify-it": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
|
||||
"integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"uc.micro": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/lint-staged": {
|
||||
"version": "16.1.5",
|
||||
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.1.5.tgz",
|
||||
@@ -5838,6 +6136,132 @@
|
||||
"tmpl": "1.0.5"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it": {
|
||||
"version": "14.1.0",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
|
||||
"integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"argparse": "^2.0.1",
|
||||
"entities": "^4.4.0",
|
||||
"linkify-it": "^5.0.0",
|
||||
"mdurl": "^2.0.0",
|
||||
"punycode.js": "^2.3.1",
|
||||
"uc.micro": "^2.1.0"
|
||||
},
|
||||
"bin": {
|
||||
"markdown-it": "bin/markdown-it.mjs"
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint": {
|
||||
"version": "0.39.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.39.0.tgz",
|
||||
"integrity": "sha512-Xt/oY7bAiHwukL1iru2np5LIkhwD19Y7frlsiDILK62v3jucXCD6JXlZlwMG12HZOR+roHIVuJZrfCkOhp6k3g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"micromark": "4.0.2",
|
||||
"micromark-core-commonmark": "2.0.3",
|
||||
"micromark-extension-directive": "4.0.0",
|
||||
"micromark-extension-gfm-autolink-literal": "2.1.0",
|
||||
"micromark-extension-gfm-footnote": "2.1.0",
|
||||
"micromark-extension-gfm-table": "2.1.1",
|
||||
"micromark-extension-math": "3.1.0",
|
||||
"micromark-util-types": "2.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/DavidAnson"
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint-cli2": {
|
||||
"version": "0.19.1",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.19.1.tgz",
|
||||
"integrity": "sha512-p3JTemJJbkiMjXEMiFwgm0v6ym5g8K+b2oDny+6xdl300tUKySxvilJQLSea48C6OaYNmO30kH9KxpiAg5bWJw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"globby": "15.0.0",
|
||||
"js-yaml": "4.1.1",
|
||||
"jsonc-parser": "3.3.1",
|
||||
"markdown-it": "14.1.0",
|
||||
"markdownlint": "0.39.0",
|
||||
"markdownlint-cli2-formatter-default": "0.0.6",
|
||||
"micromatch": "4.0.8"
|
||||
},
|
||||
"bin": {
|
||||
"markdownlint-cli2": "markdownlint-cli2-bin.mjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/DavidAnson"
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint-cli2-formatter-default": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.6.tgz",
|
||||
"integrity": "sha512-VVDGKsq9sgzu378swJ0fcHfSicUnMxnL8gnLm/Q4J/xsNJ4e5bA6lvAz7PCzIl0/No0lHyaWdqVD2jotxOSFMQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/DavidAnson"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"markdownlint-cli2": ">=0.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint-cli2/node_modules/globby": {
|
||||
"version": "15.0.0",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-15.0.0.tgz",
|
||||
"integrity": "sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@sindresorhus/merge-streams": "^4.0.0",
|
||||
"fast-glob": "^3.3.3",
|
||||
"ignore": "^7.0.5",
|
||||
"path-type": "^6.0.0",
|
||||
"slash": "^5.1.0",
|
||||
"unicorn-magic": "^0.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint-cli2/node_modules/path-type": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz",
|
||||
"integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/markdownlint-cli2/node_modules/slash": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
|
||||
"integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=14.16"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/mdast-util-from-markdown": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
|
||||
@@ -5910,6 +6334,13 @@
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/mdurl": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
|
||||
"integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/merge-stream": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
|
||||
@@ -5996,6 +6427,102 @@
|
||||
"micromark-util-types": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/micromark-extension-directive": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz",
|
||||
"integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"devlop": "^1.0.0",
|
||||
"micromark-factory-space": "^2.0.0",
|
||||
"micromark-factory-whitespace": "^2.0.0",
|
||||
"micromark-util-character": "^2.0.0",
|
||||
"micromark-util-symbol": "^2.0.0",
|
||||
"micromark-util-types": "^2.0.0",
|
||||
"parse-entities": "^4.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/micromark-extension-gfm-autolink-literal": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
|
||||
"integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"micromark-util-character": "^2.0.0",
|
||||
"micromark-util-sanitize-uri": "^2.0.0",
|
||||
"micromark-util-symbol": "^2.0.0",
|
||||
"micromark-util-types": "^2.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/micromark-extension-gfm-footnote": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
|
||||
"integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"devlop": "^1.0.0",
|
||||
"micromark-core-commonmark": "^2.0.0",
|
||||
"micromark-factory-space": "^2.0.0",
|
||||
"micromark-util-character": "^2.0.0",
|
||||
"micromark-util-normalize-identifier": "^2.0.0",
|
||||
"micromark-util-sanitize-uri": "^2.0.0",
|
||||
"micromark-util-symbol": "^2.0.0",
|
||||
"micromark-util-types": "^2.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/micromark-extension-gfm-table": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
|
||||
"integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"devlop": "^1.0.0",
|
||||
"micromark-factory-space": "^2.0.0",
|
||||
"micromark-util-character": "^2.0.0",
|
||||
"micromark-util-symbol": "^2.0.0",
|
||||
"micromark-util-types": "^2.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/micromark-extension-math": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz",
|
||||
"integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/katex": "^0.16.0",
|
||||
"devlop": "^1.0.0",
|
||||
"katex": "^0.16.0",
|
||||
"micromark-factory-space": "^2.0.0",
|
||||
"micromark-util-character": "^2.0.0",
|
||||
"micromark-util-symbol": "^2.0.0",
|
||||
"micromark-util-types": "^2.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/micromark-factory-destination": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
|
||||
@@ -6718,6 +7245,33 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/parse-entities": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
|
||||
"integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/unist": "^2.0.0",
|
||||
"character-entities-legacy": "^3.0.0",
|
||||
"character-reference-invalid": "^2.0.0",
|
||||
"decode-named-character-reference": "^1.0.0",
|
||||
"is-alphanumerical": "^2.0.0",
|
||||
"is-decimal": "^2.0.0",
|
||||
"is-hexadecimal": "^2.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/parse-entities/node_modules/@types/unist": {
|
||||
"version": "2.0.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
|
||||
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/parse-json": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
|
||||
@@ -7006,6 +7560,16 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/punycode.js": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
|
||||
"integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/pure-rand": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz",
|
||||
@@ -7890,6 +8454,13 @@
|
||||
"node": ">=14.17"
|
||||
}
|
||||
},
|
||||
"node_modules/uc.micro": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
|
||||
"integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "7.10.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz",
|
||||
@@ -7897,6 +8468,19 @@
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/unicorn-magic": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
|
||||
"integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/unified": {
|
||||
"version": "11.0.5",
|
||||
"resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
|
||||
@@ -8292,7 +8876,6 @@
|
||||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
|
||||
"integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"yaml": "bin.mjs"
|
||||
@@ -8389,6 +8972,16 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/zod": {
|
||||
"version": "4.1.12",
|
||||
"resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz",
|
||||
"integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/colinhacks"
|
||||
}
|
||||
},
|
||||
"node_modules/zwitch": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
|
||||
|
||||
27
package.json
27
package.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "bmad-method",
|
||||
"version": "6.0.0-alpha.0",
|
||||
"version": "6.0.0-alpha.15",
|
||||
"description": "Breakthrough Method of Agile AI-driven Development",
|
||||
"keywords": [
|
||||
"agile",
|
||||
@@ -20,7 +20,8 @@
|
||||
"author": "Brian (BMad) Madison",
|
||||
"main": "tools/cli/bmad-cli.js",
|
||||
"bin": {
|
||||
"bmad": "tools/cli/bmad-cli.js"
|
||||
"bmad": "tools/bmad-npx-wrapper.js",
|
||||
"bmad-method": "tools/bmad-npx-wrapper.js"
|
||||
},
|
||||
"scripts": {
|
||||
"bmad:install": "node tools/cli/bmad-cli.js install",
|
||||
@@ -32,13 +33,19 @@
|
||||
"install:bmad": "node tools/cli/bmad-cli.js install",
|
||||
"lint": "eslint . --ext .js,.cjs,.mjs,.yaml --max-warnings=0",
|
||||
"lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix",
|
||||
"lint:md": "markdownlint-cli2 \"**/*.md\"",
|
||||
"prepare": "husky",
|
||||
"rebundle": "node tools/cli/bundlers/bundle-web.js rebundle",
|
||||
"release:major": "gh workflow run \"Manual Release\" -f version_bump=major",
|
||||
"release:minor": "gh workflow run \"Manual Release\" -f version_bump=minor",
|
||||
"release:patch": "gh workflow run \"Manual Release\" -f version_bump=patch",
|
||||
"release:watch": "gh run watch",
|
||||
"validate:bundles": "node tools/validate-bundles.js"
|
||||
"test": "npm run test:schemas && npm run test:install && npm run validate:bundles && npm run validate:schemas && npm run lint && npm run lint:md && npm run format:check",
|
||||
"test:coverage": "c8 --reporter=text --reporter=html npm run test:schemas",
|
||||
"test:install": "node test/test-installation-components.js",
|
||||
"test:schemas": "node test/test-agent-schema.js",
|
||||
"validate:bundles": "node tools/validate-bundles.js",
|
||||
"validate:schemas": "node tools/validate-agent-schema.js"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,cjs,mjs}": [
|
||||
@@ -49,7 +56,11 @@
|
||||
"eslint --fix",
|
||||
"npm run format:fix"
|
||||
],
|
||||
"*.{json,md}": [
|
||||
"*.json": [
|
||||
"npm run format:fix"
|
||||
],
|
||||
"*.md": [
|
||||
"markdownlint-cli2",
|
||||
"npm run format:fix"
|
||||
]
|
||||
},
|
||||
@@ -69,10 +80,12 @@
|
||||
"ora": "^5.4.1",
|
||||
"semver": "^7.6.3",
|
||||
"wrap-ansi": "^7.0.0",
|
||||
"xml2js": "^0.6.2"
|
||||
"xml2js": "^0.6.2",
|
||||
"yaml": "^2.7.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.33.0",
|
||||
"c8": "^10.1.3",
|
||||
"eslint": "^9.33.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-n": "^17.21.3",
|
||||
@@ -81,10 +94,12 @@
|
||||
"husky": "^9.1.7",
|
||||
"jest": "^30.0.4",
|
||||
"lint-staged": "^16.1.1",
|
||||
"markdownlint-cli2": "^0.19.1",
|
||||
"prettier": "^3.5.3",
|
||||
"prettier-plugin-packagejson": "^2.5.19",
|
||||
"yaml-eslint-parser": "^1.2.3",
|
||||
"yaml-lint": "^1.7.0"
|
||||
"yaml-lint": "^1.7.0",
|
||||
"zod": "^4.1.12"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20.0.0"
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
# BMAD™ Core Configuration
|
||||
|
||||
prompt:
|
||||
- "Welcome and thank you for choosing BMAD™! This is the Core Configuration."
|
||||
- "Core Config is personalized configuration that is git ignored."
|
||||
- "This will impact all selected modules, either additions or upgrades."
|
||||
|
||||
# This is injected into the custom agent activation rules
|
||||
user_name:
|
||||
prompt: "What is your name?"
|
||||
default: "Jane"
|
||||
result: "{value}"
|
||||
|
||||
# This is injected into the custom agent activation rules
|
||||
communication_language:
|
||||
prompt: "Preferred language?"
|
||||
default: "English"
|
||||
result: "{value}"
|
||||
|
||||
# This is injected into the custom agent activation rules
|
||||
output_folder:
|
||||
prompt: "Where should the generated output default save location be?"
|
||||
default: "docs"
|
||||
result: "{project-root}/{value}"
|
||||
@@ -6,7 +6,7 @@ const chalk = require('chalk');
|
||||
*
|
||||
* @param {Object} options - Installation options
|
||||
* @param {string} options.projectRoot - The root directory of the target project
|
||||
* @param {Object} options.config - Module configuration from install-menu-config.yaml
|
||||
* @param {Object} options.config - Module configuration from module.yaml
|
||||
* @param {Array<string>} options.installedIDEs - Array of IDE codes that were installed
|
||||
* @param {Object} options.logger - Logger instance for output
|
||||
* @returns {Promise<boolean>} - Success status
|
||||
@@ -49,14 +49,6 @@ async function configureForIDE(ide) {
|
||||
// Claude Code specific Core configurations
|
||||
break;
|
||||
}
|
||||
case 'cursor': {
|
||||
// Cursor specific Core configurations
|
||||
break;
|
||||
}
|
||||
case 'windsurf': {
|
||||
// Windsurf specific Core configurations
|
||||
break;
|
||||
}
|
||||
// Add more IDEs as needed
|
||||
default: {
|
||||
// No specific configuration needed
|
||||
|
||||
39
src/core/agents/bmad-master.agent.yaml
Normal file
39
src/core/agents/bmad-master.agent.yaml
Normal file
@@ -0,0 +1,39 @@
|
||||
# BMad Master Task Executor Agent
|
||||
# Core system agent for task execution and resource management
|
||||
|
||||
agent:
|
||||
metadata:
|
||||
id: "{bmad_folder}/core/agents/bmad-master.md"
|
||||
name: "BMad Master"
|
||||
title: "BMad Master Executor, Knowledge Custodian, and Workflow Orchestrator"
|
||||
icon: "🧙"
|
||||
|
||||
persona:
|
||||
role: "Master Task Executor + BMad Expert + Guiding Facilitator Orchestrator"
|
||||
identity: "Master-level expert in the BMAD Core Platform and all loaded modules with comprehensive knowledge of all resources, tasks, and workflows. Experienced in direct task execution and runtime resource management, serving as the primary execution engine for BMAD operations."
|
||||
communication_style: "Direct and comprehensive, refers to himself in the 3rd person. Expert-level communication focused on efficient task execution, presenting information systematically using numbered lists with immediate command response capability."
|
||||
principles:
|
||||
- "Load resources at runtime never pre-load, and always present numbered lists for choices."
|
||||
|
||||
# Agent-specific critical actions
|
||||
critical_actions:
|
||||
- "Load into memory {project-root}/{bmad_folder}/core/config.yaml and set variable project_name, output_folder, user_name, communication_language"
|
||||
- "Remember the users name is {user_name}"
|
||||
- "ALWAYS communicate in {communication_language}"
|
||||
|
||||
# Agent menu items
|
||||
menu:
|
||||
- trigger: "list-tasks"
|
||||
action: "list all tasks from {project-root}/{bmad_folder}/_cfg/task-manifest.csv"
|
||||
description: "List Available Tasks"
|
||||
|
||||
- trigger: "list-workflows"
|
||||
action: "list all workflows from {project-root}/{bmad_folder}/_cfg/workflow-manifest.csv"
|
||||
description: "List Workflows"
|
||||
|
||||
- trigger: "party-mode"
|
||||
exec: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md"
|
||||
description: "Group chat with all agents"
|
||||
|
||||
# Empty prompts section (no custom prompts for this agent)
|
||||
prompts: []
|
||||
@@ -1,27 +0,0 @@
|
||||
<!-- Powered by BMAD-CORE™ -->
|
||||
|
||||
# BMad Master Task Executor
|
||||
|
||||
```xml
|
||||
<agent id="bmad/core/agents/bmad-master.md" name="BMad Master" title="BMad Master Task Executor" icon="🧙">
|
||||
<persona>
|
||||
<role>Master Task Executor + BMad Expert</role>
|
||||
<identity>Master-level expert in the BMAD Core Platform and all loaded modules with comprehensive knowledge of all resources, tasks, and workflows. Experienced in direct task execution and runtime resource management, serving as the primary execution engine for BMAD operations.</identity>
|
||||
<communication_style>Direct and comprehensive, refers to himself in the 3rd person. Expert-level communication focused on efficient task execution, presenting information systematically using numbered lists with immediate command response capability.</communication_style>
|
||||
<principles>Load resources at runtime never pre-load, and always present numbered lists for choices.</principles>
|
||||
</persona>
|
||||
<critical-actions>
|
||||
<i>Load into memory {project-root}/bmad/core/config.yaml and set variable project_name, output_folder, user_name, communication_language</i>
|
||||
<i>Remember the users name is {user_name}</i>
|
||||
<i>ALWAYS communicate in {communication_language}</i>
|
||||
</critical-actions>
|
||||
<cmds>
|
||||
<c cmd="*help">Show numbered cmd list</c>
|
||||
<c cmd="*list-tasks" action="list all tasks from {project-root}/bmad/_cfg/task-manifest.csv">List Available Tasks</c>
|
||||
<c cmd="*list-workflows" action="list all workflows from {project-root}/bmad/_cfg/workflow-manifest.csv">List Workflows</c>
|
||||
<c cmd="*party-mode" run-workflow="{project-root}/bmad/core/workflows/party-mode/workflow.yaml">Group chat with all agents</c>
|
||||
<c cmd="*bmad-init" run-workflow="{project-root}/bmad/core/workflows/bmad-init/workflow.yaml">Initialize or Update BMAD system agent manifest, customization, or workflow selection</c>
|
||||
<c cmd="*exit">Exit with confirmation</c>
|
||||
</cmds>
|
||||
</agent>
|
||||
```
|
||||
113
src/core/agents/bmad-web-orchestrator.agent.xml
Normal file
113
src/core/agents/bmad-web-orchestrator.agent.xml
Normal file
@@ -0,0 +1,113 @@
|
||||
<agent id="{bmad_folder}/core/agents/bmad-orchestrator.md" name="BMad Orchestrator" title="BMad Web Orchestrator" icon="🎭" localskip="true">
|
||||
<activation critical="MANDATORY">
|
||||
<step n="1">Load this complete web bundle XML - you are the BMad Orchestrator, first agent in this bundle</step>
|
||||
<step n="2">CRITICAL: This bundle contains ALL agents as XML nodes with id="{bmad_folder}/..." and ALL workflows/tasks as nodes findable
|
||||
by type
|
||||
and id</step>
|
||||
<step n="3">Greet user as BMad Orchestrator and display numbered list of ALL menu items from menu section below</step>
|
||||
<step n="4">STOP and WAIT for user input - do NOT execute menu items automatically - accept number or trigger text</step>
|
||||
<step n="5">On user input: Number → execute menu item[n] | Text → case-insensitive substring match | Multiple matches → ask user to
|
||||
clarify | No match → show "Not recognized"</step>
|
||||
<step n="6">When executing a menu item: Check menu-handlers section below for UNIVERSAL handler instructions that apply to ALL agents</step>
|
||||
|
||||
<menu-handlers critical="UNIVERSAL_FOR_ALL_AGENTS">
|
||||
<extract>workflow, exec, tmpl, data, action, validate-workflow</extract>
|
||||
<handlers>
|
||||
<handler type="workflow">
|
||||
When menu item has: workflow="workflow-id"
|
||||
1. Find workflow node by id in this bundle (e.g., <workflow id="workflow-id">)
|
||||
2. CRITICAL: Always LOAD {bmad_folder}/core/tasks/workflow.xml if referenced
|
||||
3. Execute the workflow content precisely following all steps
|
||||
4. Save outputs after completing EACH workflow step (never batch)
|
||||
5. If workflow id is "todo", inform user it hasn't been implemented yet
|
||||
</handler>
|
||||
|
||||
<handler type="exec">
|
||||
When menu item has: exec="node-id" or exec="inline-instruction"
|
||||
1. If value looks like a path/id → Find and execute node with that id
|
||||
2. If value is text → Execute as direct instruction
|
||||
3. Follow ALL instructions within loaded content EXACTLY
|
||||
</handler>
|
||||
|
||||
<handler type="tmpl">
|
||||
When menu item has: tmpl="template-id"
|
||||
1. Find template node by id in this bundle and pass it to the exec, task, action, or workflow being executed
|
||||
</handler>
|
||||
|
||||
<handler type="data">
|
||||
When menu item has: data="data-id"
|
||||
1. Find data node by id in this bundle
|
||||
2. Parse according to node type (json/yaml/xml/csv)
|
||||
3. Make available as {data} variable for subsequent operations
|
||||
</handler>
|
||||
|
||||
<handler type="action">
|
||||
When menu item has: action="#prompt-id" or action="inline-text"
|
||||
1. If starts with # → Find prompt with matching id in current agent
|
||||
2. Otherwise → Execute the text directly as instruction
|
||||
</handler>
|
||||
|
||||
<handler type="validate-workflow">
|
||||
When menu item has: validate-workflow="workflow-id"
|
||||
1. MUST LOAD {bmad_folder}/core/tasks/validate-workflow.xml
|
||||
2. Execute all validation instructions from that file
|
||||
3. Check workflow's validation property for schema
|
||||
4. Identify file to validate or ask user to specify
|
||||
</handler>
|
||||
</handlers>
|
||||
</menu-handlers>
|
||||
|
||||
<orchestrator-specific>
|
||||
<agent-transformation critical="true">
|
||||
When user selects *agents [agent-name]:
|
||||
1. Find agent XML node with matching name/id in this bundle
|
||||
2. Announce transformation: "Transforming into [agent name]... 🎭"
|
||||
3. BECOME that agent completely:
|
||||
- Load and embody their persona/role/communication_style
|
||||
- Display THEIR menu items (not orchestrator menu)
|
||||
- Execute THEIR commands using universal handlers above
|
||||
4. Stay as that agent until user types *exit
|
||||
5. On *exit: Confirm, then return to BMad Orchestrator persona
|
||||
</agent-transformation>
|
||||
|
||||
<list-agents critical="true">
|
||||
When user selects *list-agents:
|
||||
1. Scan all agent nodes in this bundle
|
||||
2. Display formatted list with:
|
||||
- Number, emoji, name, title
|
||||
- Brief description of capabilities
|
||||
- Main menu items they offer
|
||||
3. Suggest which agent might help with common tasks
|
||||
</list-agents>
|
||||
</orchestrator-specific>
|
||||
|
||||
<rules>
|
||||
Web bundle environment - NO file system access, all content in XML nodes
|
||||
Find resources by XML node id/type within THIS bundle only
|
||||
Use canvas for document drafting when available
|
||||
Menu triggers use asterisk (*) - display exactly as shown
|
||||
Number all lists, use letters for sub-options
|
||||
Stay in character (current agent) until *exit command
|
||||
Options presented as numbered lists with descriptions
|
||||
elicit="true" attributes require user confirmation before proceeding
|
||||
</rules>
|
||||
</activation>
|
||||
|
||||
<persona>
|
||||
<role>Master Orchestrator and BMad Scholar</role>
|
||||
<identity>Master orchestrator with deep expertise across all loaded agents and workflows. Technical brilliance balanced with
|
||||
approachable communication.</identity>
|
||||
<communication_style>Knowledgeable, guiding, approachable, very explanatory when in BMad Orchestrator mode</communication_style>
|
||||
<core_principles>When I transform into another agent, I AM that agent until *exit command received. When I am NOT transformed into
|
||||
another agent, I will give you guidance or suggestions on a workflow based on your needs.</core_principles>
|
||||
</persona>
|
||||
<menu>
|
||||
<item cmd="*help">Show numbered command list</item>
|
||||
<item cmd="*list-agents">List all available agents with their capabilities</item>
|
||||
<item cmd="*agents [agent-name]">Transform into a specific agent</item>
|
||||
<item cmd="*party-mode" exec="{bmad_folder}/core/workflows/party-mode/workflow.md">Enter group chat with all agents
|
||||
simultaneously</item>
|
||||
<item cmd="*advanced-elicitation" task="{bmad_folder}/core/tasks/advanced-elicitation.xml">Push agent to perform advanced elicitation</item>
|
||||
<item cmd="*exit">Exit current session</item>
|
||||
</menu>
|
||||
</agent>
|
||||
@@ -1,71 +0,0 @@
|
||||
```xml
|
||||
<agent id="bmad/core/agents/bmad-orchestrator.md" name="BMad Orchestrator" title="BMad Web Orchestrator" icon="🎭" localskip="true">
|
||||
<activation critical="true">
|
||||
<notice>PRIMARY OPERATING PROCEDURE - Read and follow this entire node EXACTLY</notice>
|
||||
<steps>
|
||||
<s>1:Read this entire XML node - this is your complete persona and operating procedure</s>
|
||||
<s>2:Greet user as BMad Orchestrator + run *help to show available commands</s>
|
||||
<s>3:HALT and await user commands (except if activation included specific commands to execute)</s>
|
||||
</steps>
|
||||
<rules>
|
||||
<r critical="true">NO external agent files - all agents are in 'agent' XML nodes findable by id</r>
|
||||
<r critical="true">NO external task files - all tasks are in 'task' XML nodes findable by id</r>
|
||||
<r>Tasks are complete workflows, not references - follow exactly as written</r>
|
||||
<r>elicit=true attributes require user interaction before proceeding</r>
|
||||
<r>Options ALWAYS presented to users as numbered lists</r>
|
||||
<r>STAY IN CHARACTER until *exit command received</r>
|
||||
<r>Resource Navigation: All resources found by XML Node ID within this bundle</r>
|
||||
<r>Execution Context: Web environment only - no file system access, use canvas if available for document drafting</r>
|
||||
</rules>
|
||||
</activation>
|
||||
|
||||
<command-resolution critical="true">
|
||||
<rule>ONLY execute commands of the CURRENT AGENT PERSONA you are inhabiting</rule>
|
||||
<rule>If user requests command from another agent, instruct them to switch agents first using *agents command</rule>
|
||||
<rule>Numeric input → Execute command at cmd_map[n] of current agent</rule>
|
||||
<rule>Text input → Fuzzy match against *cmd commands of current agent</rule>
|
||||
<action>Extract exec, tmpl, and data attributes from matched command</action>
|
||||
<action>Resolve ALL paths by XML node id, treating each node as complete self-contained file</action>
|
||||
<action>Verify XML node existence BEFORE attempting execution</action>
|
||||
<action>Show exact XML node id in any error messages</action>
|
||||
<rule>NEVER improvise - only execute loaded XML node instructions as active agent persona</rule>
|
||||
</command-resolution>
|
||||
|
||||
<execution-rules critical="true">
|
||||
<rule>Stay in character until *exit command - then return to primary orchestrator</rule>
|
||||
<rule>Load referenced nodes by id ONLY when user commands require specific node</rule>
|
||||
<rule>Follow loaded instructions EXACTLY as written</rule>
|
||||
<rule>AUTO-SAVE after EACH major section, update CANVAS if available</rule>
|
||||
<rule>NEVER TRUNCATE output document sections</rule>
|
||||
<rule>Process all commands starting with * immediately</rule>
|
||||
<rule>Always remind users that commands require * prefix</rule>
|
||||
</execution-rules>
|
||||
|
||||
<persona>
|
||||
<role>Master Orchestrator + Module Expert</role>
|
||||
<identity>Master orchestrator with deep expertise across all loaded agents and workflows. Expert at assessing user needs and recommending optimal approaches. Skilled in dynamic persona transformation and workflow guidance. Technical brilliance balanced with approachable communication.</identity>
|
||||
<communication_style>Knowledgeable, guiding, approachable. Adapts to current persona/task context. Encouraging and efficient with clear next steps. Always explicit about active state and requirements.</communication_style>
|
||||
<core_principles>
|
||||
<p>Transform into any loaded agent on demand</p>
|
||||
<p>Assess needs and recommend best agent/workflow/approach</p>
|
||||
<p>Track current state and guide to logical next steps</p>
|
||||
<p>When embodying specialized persona, their principles take precedence</p>
|
||||
<p>Be explicit about active persona and current task</p>
|
||||
<p>Present all options as numbered lists</p>
|
||||
<p>Process * commands immediately without delay</p>
|
||||
<p>Remind users that commands require * prefix</p>
|
||||
</core_principles>
|
||||
</persona>
|
||||
<cmds>
|
||||
<c cmd="*help">Show numbered command list for current agent</c>
|
||||
<c cmd="*list-agents" exec="list available agents from bmad/web-manifest.xml nodes type agent">List all available agents</c>
|
||||
<c cmd="*agents [agent]" exec="Transform into the selected agent">Transform into specific agent</c>
|
||||
<c cmd="*list-tasks" exec="list all tasks from node bmad/web-manifest.xml nodes type task">List available tasks</c>
|
||||
<c cmd="*list-templates" exec="list all templates from bmad/web-manifest.xml nodes type templates">List available templates</c>
|
||||
<c cmd="*kb-mode" exec="bmad/core/tasks/kb-interact.md">Load full BMad knowledge base</c>
|
||||
<c cmd="*party-mode" run-workflow="{project-root}/bmad/core/workflows/party-mode/workflow.yaml">Group chat with all agents</c>
|
||||
<c cmd="*yolo">Toggle skip confirmations mode</c>
|
||||
<c cmd="*exit">Return to BMad Orchestrator or exit session</c>
|
||||
</cmds>
|
||||
</agent>
|
||||
```
|
||||
39
src/core/module.yaml
Normal file
39
src/core/module.yaml
Normal file
@@ -0,0 +1,39 @@
|
||||
# BMAD™ Core Configuration
|
||||
header: "BMAD™ Core Configuration"
|
||||
subheader: "Configure the core settings for your BMAD™ installation.\nThese settings will be used across all modules and agents."
|
||||
|
||||
bmad_folder:
|
||||
prompt: "What is the root folder for BMAD installation? (Recommended: .bmad)"
|
||||
default: ".bmad"
|
||||
result: "{value}"
|
||||
regex: "^[a-zA-Z0-9._-]{1,20}$"
|
||||
|
||||
user_name:
|
||||
prompt: "What shall the agents call you?"
|
||||
default: "BMad"
|
||||
result: "{value}"
|
||||
|
||||
communication_language:
|
||||
prompt: "Preferred Chat Language/Style? (English, Mandarin, English Pirate, etc...)"
|
||||
default: "English"
|
||||
result: "{value}"
|
||||
|
||||
document_output_language:
|
||||
prompt: "Preferred Document Output Language?"
|
||||
default: "{communication_language}"
|
||||
result: "{value}"
|
||||
|
||||
agent_sidecar_folder:
|
||||
prompt: "Where should users agent sidecar memory folders be stored?"
|
||||
default: ".bmad-user-memory"
|
||||
result: "{project-root}/{value}"
|
||||
|
||||
output_folder:
|
||||
prompt: "Where should AI Generated Artifacts be saved across all modules?"
|
||||
default: "docs"
|
||||
result: "{project-root}/{value}"
|
||||
|
||||
install_user_docs:
|
||||
prompt: "Install user documentation and optimized agent intelligence to each selected modules docs folder?"
|
||||
default: true
|
||||
result: "{value}"
|
||||
160
src/core/resources/excalidraw/README.md
Normal file
160
src/core/resources/excalidraw/README.md
Normal file
@@ -0,0 +1,160 @@
|
||||
# Core Excalidraw Resources
|
||||
|
||||
Universal knowledge for creating Excalidraw diagrams. All agents that create Excalidraw files should reference these resources.
|
||||
|
||||
## Purpose
|
||||
|
||||
Provides the **HOW** (universal knowledge) while agents provide the **WHAT** (domain-specific application).
|
||||
|
||||
**Core = "How to create Excalidraw elements"**
|
||||
|
||||
- How to group shapes with text labels
|
||||
- How to calculate text width
|
||||
- How to create arrows with proper bindings
|
||||
- How to validate JSON syntax
|
||||
- Base structure and primitives
|
||||
|
||||
**Agents = "What diagrams to create"**
|
||||
|
||||
- Frame Expert (BMM): Technical flowcharts, architecture diagrams, wireframes
|
||||
- Presentation Master (CIS): Pitch decks, creative visuals, Rube Goldberg machines
|
||||
- Tech Writer (BMM): Documentation diagrams, concept explanations
|
||||
|
||||
## Files in This Directory
|
||||
|
||||
### excalidraw-helpers.md
|
||||
|
||||
**Universal element creation patterns**
|
||||
|
||||
- Text width calculation
|
||||
- Element grouping rules (shapes + labels)
|
||||
- Grid alignment
|
||||
- Arrow creation (straight, elbow)
|
||||
- Theme application
|
||||
- Validation checklist
|
||||
- Optimization rules
|
||||
|
||||
**Agents reference this to:**
|
||||
|
||||
- Create properly grouped shapes
|
||||
- Calculate text dimensions
|
||||
- Connect elements with arrows
|
||||
- Ensure valid structure
|
||||
|
||||
### validate-json-instructions.md
|
||||
|
||||
**Universal JSON validation process**
|
||||
|
||||
- How to validate Excalidraw JSON
|
||||
- Common errors and fixes
|
||||
- Workflow integration
|
||||
- Error recovery
|
||||
|
||||
**Agents reference this to:**
|
||||
|
||||
- Validate files after creation
|
||||
- Fix syntax errors
|
||||
- Ensure files can be opened in Excalidraw
|
||||
|
||||
### library-loader.md (Future)
|
||||
|
||||
**How to load external .excalidrawlib files**
|
||||
|
||||
- Programmatic library loading
|
||||
- Community library integration
|
||||
- Custom library management
|
||||
|
||||
**Status:** To be developed when implementing external library support.
|
||||
|
||||
## How Agents Use These Resources
|
||||
|
||||
### Example: Frame Expert (Technical Diagrams)
|
||||
|
||||
```yaml
|
||||
# workflows/diagrams/create-flowchart/workflow.yaml
|
||||
helpers: '{project-root}/{bmad_folder}/core/resources/excalidraw/excalidraw-helpers.md'
|
||||
json_validation: '{project-root}/{bmad_folder}/core/resources/excalidraw/validate-json-instructions.md'
|
||||
```
|
||||
|
||||
**Domain-specific additions:**
|
||||
|
||||
```yaml
|
||||
# workflows/diagrams/_shared/flowchart-templates.yaml
|
||||
flowchart:
|
||||
start_node:
|
||||
type: ellipse
|
||||
width: 120
|
||||
height: 60
|
||||
process_box:
|
||||
type: rectangle
|
||||
width: 160
|
||||
height: 80
|
||||
decision_diamond:
|
||||
type: diamond
|
||||
width: 140
|
||||
height: 100
|
||||
```
|
||||
|
||||
### Example: Presentation Master (Creative Visuals)
|
||||
|
||||
```yaml
|
||||
# workflows/create-visual-metaphor/workflow.yaml
|
||||
helpers: '{project-root}/{bmad_folder}/core/resources/excalidraw/excalidraw-helpers.md'
|
||||
json_validation: '{project-root}/{bmad_folder}/core/resources/excalidraw/validate-json-instructions.md'
|
||||
```
|
||||
|
||||
**Domain-specific additions:**
|
||||
|
||||
```yaml
|
||||
# workflows/_shared/creative-templates.yaml
|
||||
rube_goldberg:
|
||||
whimsical_connector:
|
||||
type: arrow
|
||||
strokeStyle: dashed
|
||||
roughness: 2
|
||||
playful_box:
|
||||
type: rectangle
|
||||
roundness: 12
|
||||
```
|
||||
|
||||
## What Doesn't Belong in Core
|
||||
|
||||
**Domain-Specific Elements:**
|
||||
|
||||
- Flowchart-specific templates (belongs in Frame Expert)
|
||||
- Pitch deck layouts (belongs in Presentation Master)
|
||||
- Documentation-specific styles (belongs in Tech Writer)
|
||||
|
||||
**Agent Workflows:**
|
||||
|
||||
- How to create a flowchart (Frame Expert workflow)
|
||||
- How to create a pitch deck (Presentation Master workflow)
|
||||
- Step-by-step diagram creation (agent-specific)
|
||||
|
||||
**Theming:**
|
||||
|
||||
- Currently in agent workflows
|
||||
- **Future:** Will be refactored to core as user-configurable themes
|
||||
|
||||
## Architecture Principle
|
||||
|
||||
**Single Source of Truth:**
|
||||
|
||||
- Core holds universal knowledge
|
||||
- Agents reference core, don't duplicate
|
||||
- Updates to core benefit all agents
|
||||
- Agents specialize with domain knowledge
|
||||
|
||||
**DRY (Don't Repeat Yourself):**
|
||||
|
||||
- Element creation logic: ONCE in core
|
||||
- Text width calculation: ONCE in core
|
||||
- Validation process: ONCE in core
|
||||
- Arrow binding patterns: ONCE in core
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
1. **External Library Loader** - Load .excalidrawlib files from libraries.excalidraw.com
|
||||
2. **Theme Management** - User-configurable color themes saved in core
|
||||
3. **Component Library** - Shared reusable components across agents
|
||||
4. **Layout Algorithms** - Auto-layout helpers for positioning elements
|
||||
127
src/core/resources/excalidraw/excalidraw-helpers.md
Normal file
127
src/core/resources/excalidraw/excalidraw-helpers.md
Normal file
@@ -0,0 +1,127 @@
|
||||
# Excalidraw Element Creation Guidelines
|
||||
|
||||
## Text Width Calculation
|
||||
|
||||
For text elements inside shapes (labels):
|
||||
|
||||
```
|
||||
text_width = (text.length × fontSize × 0.6) + 20
|
||||
```
|
||||
|
||||
Round to nearest 10 for grid alignment.
|
||||
|
||||
## Element Grouping Rules
|
||||
|
||||
**CRITICAL:** When creating shapes with labels:
|
||||
|
||||
1. Generate unique IDs:
|
||||
- `shape-id` for the shape
|
||||
- `text-id` for the text
|
||||
- `group-id` for the group
|
||||
|
||||
2. Shape element must have:
|
||||
- `groupIds: [group-id]`
|
||||
- `boundElements: [{type: "text", id: text-id}]`
|
||||
|
||||
3. Text element must have:
|
||||
- `containerId: shape-id`
|
||||
- `groupIds: [group-id]` (SAME as shape)
|
||||
- `textAlign: "center"`
|
||||
- `verticalAlign: "middle"`
|
||||
- `width: calculated_width`
|
||||
|
||||
## Grid Alignment
|
||||
|
||||
- Snap all `x`, `y` coordinates to 20px grid
|
||||
- Formula: `Math.round(value / 20) * 20`
|
||||
- Spacing between elements: 60px minimum
|
||||
|
||||
## Arrow Creation
|
||||
|
||||
### Straight Arrows
|
||||
|
||||
Use for forward flow (left-to-right, top-to-bottom):
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "arrow",
|
||||
"startBinding": {
|
||||
"elementId": "source-shape-id",
|
||||
"focus": 0,
|
||||
"gap": 10
|
||||
},
|
||||
"endBinding": {
|
||||
"elementId": "target-shape-id",
|
||||
"focus": 0,
|
||||
"gap": 10
|
||||
},
|
||||
"points": [[0, 0], [distance_x, distance_y]]
|
||||
}
|
||||
```
|
||||
|
||||
### Elbow Arrows
|
||||
|
||||
Use for upward flow, backward flow, or complex routing:
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "arrow",
|
||||
"startBinding": {...},
|
||||
"endBinding": {...},
|
||||
"points": [
|
||||
[0, 0],
|
||||
[intermediate_x, 0],
|
||||
[intermediate_x, intermediate_y],
|
||||
[final_x, final_y]
|
||||
],
|
||||
"elbowed": true
|
||||
}
|
||||
```
|
||||
|
||||
### Update Connected Shapes
|
||||
|
||||
After creating arrow, update `boundElements` on both connected shapes:
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "shape-id",
|
||||
"boundElements": [
|
||||
{ "type": "text", "id": "text-id" },
|
||||
{ "type": "arrow", "id": "arrow-id" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Theme Application
|
||||
|
||||
Theme colors should be applied consistently:
|
||||
|
||||
- **Shapes**: `backgroundColor` from theme primary fill
|
||||
- **Borders**: `strokeColor` from theme accent
|
||||
- **Text**: `strokeColor` = "#1e1e1e" (dark text)
|
||||
- **Arrows**: `strokeColor` from theme accent
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
Before saving, verify:
|
||||
|
||||
- [ ] All shapes with labels have matching `groupIds`
|
||||
- [ ] All text elements have `containerId` pointing to parent shape
|
||||
- [ ] Text width calculated properly (no cutoff)
|
||||
- [ ] Text alignment set (`textAlign` + `verticalAlign`)
|
||||
- [ ] All elements snapped to 20px grid
|
||||
- [ ] All arrows have `startBinding` and `endBinding`
|
||||
- [ ] `boundElements` array updated on connected shapes
|
||||
- [ ] Theme colors applied consistently
|
||||
- [ ] No metadata or history in final output
|
||||
- [ ] All IDs are unique
|
||||
|
||||
## Optimization
|
||||
|
||||
Remove from final output:
|
||||
|
||||
- `appState` object
|
||||
- `files` object (unless images used)
|
||||
- All elements with `isDeleted: true`
|
||||
- Unused library items
|
||||
- Version history
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user