mirror of
https://github.com/bmad-code-org/BMAD-METHOD.git
synced 2026-01-30 04:32:02 +00:00
Compare commits
68 Commits
docs/code-
...
6.0.0-alph
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26e47562dd | ||
|
|
3256bda42f | ||
|
|
3d2727e190 | ||
|
|
446a0359ab | ||
|
|
45a97b070a | ||
|
|
a2d01813f0 | ||
|
|
5971a88553 | ||
|
|
08642a0420 | ||
|
|
ec73e44097 | ||
|
|
d55f518a96 | ||
|
|
cf50f4935d | ||
|
|
55cb4681bc | ||
|
|
eb4325fab9 | ||
|
|
57ceaf9fa9 | ||
|
|
1513b2d478 | ||
|
|
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 |
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: false
|
||||
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>.
|
||||
2
.github/ISSUE_TEMPLATE/idea_submission.md
vendored
2
.github/ISSUE_TEMPLATE/idea_submission.md
vendored
@@ -8,7 +8,7 @@ assignees: ''
|
||||
|
||||
# Idea: [Replace with a clear, actionable title]
|
||||
|
||||
### PASS Framework
|
||||
## PASS Framework
|
||||
|
||||
**P**roblem:
|
||||
|
||||
|
||||
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"
|
||||
}
|
||||
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 @-
|
||||
|
||||
19
.github/workflows/quality.yaml
vendored
19
.github/workflows/quality.yaml
vendored
@@ -3,6 +3,7 @@ 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)
|
||||
@@ -50,6 +51,24 @@ jobs:
|
||||
- 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:
|
||||
|
||||
8
.gitignore
vendored
8
.gitignore
vendored
@@ -62,7 +62,7 @@ src/modules/bmm/sub-modules/
|
||||
src/modules/bmb/sub-modules/
|
||||
src/modules/cis/sub-modules/
|
||||
src/modules/bmgd/sub-modules/
|
||||
|
||||
shared-modules
|
||||
z*/
|
||||
|
||||
.bmad
|
||||
@@ -70,4 +70,8 @@ z*/
|
||||
.codex
|
||||
.github/chatmodes
|
||||
.agent
|
||||
.agentvibes/
|
||||
.agentvibes/
|
||||
.kiro/
|
||||
.roo
|
||||
|
||||
bmad-custom-src/
|
||||
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
|
||||
@@ -1,6 +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*/
|
||||
|
||||
670
CHANGELOG.md
670
CHANGELOG.md
@@ -1,164 +1,230 @@
|
||||
# Changelog
|
||||
|
||||
## [6.0.0-alpha.16]
|
||||
|
||||
**Release: December 10, 2025**
|
||||
|
||||
### 🔧 Temporary Changes & Fixes
|
||||
|
||||
**Installation Improvements:**
|
||||
|
||||
- **Temporary Custom Content Installation Disable**: Custom content installation temporarily disabled to improve stability
|
||||
- **BMB Workflow Path Fixes**: Fixed numerous path references in BMB workflows to ensure proper step file resolution
|
||||
- **Package Updates**: Updated dependencies for improved security and performance
|
||||
|
||||
**Path Resolution Improvements:**
|
||||
|
||||
- **BMB Agent Builder Fixes**: Corrected path references in step files and documentation
|
||||
- **Workflow Path Standardization**: Ensured consistent path handling across all BMB workflows
|
||||
- **Documentation References**: Updated internal documentation links and references
|
||||
|
||||
**Cleanup Changes:**
|
||||
|
||||
- **Example Modules Removal**: Temporarily removed example modules to prevent accidental installation
|
||||
- **Hardcoded Path Cleanup**: Continued removal of hardcoded `.bmad` folder references from demo content
|
||||
- **Memory Management**: Improved sidecar file handling for custom modules
|
||||
|
||||
### 📊 Statistics
|
||||
|
||||
- **336 files changed** with path fixes and improvements
|
||||
- **4 commits** since alpha.15
|
||||
|
||||
---
|
||||
|
||||
## [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
|
||||
|
||||
**Granular Step-File Workflow System (NEW in alpha.13):**
|
||||
|
||||
- **Multi-Menu Support**: Workflows now support granular step-file architecture with dynamic menu generation
|
||||
- **Sharded Workflows**: Complete conversion of Phase 1 and 2 workflows to stepwise sharded architecture
|
||||
- **Improved Performance**: Reduced file loading times and eliminated time-based estimates throughout
|
||||
- **Workflow Builder**: New dedicated workflow builder for creating stepwise workflows
|
||||
- **PRD Workflow**: First completely reworked sharded workflow resolving Sonnet compatibility issues
|
||||
|
||||
**Core Workflow Transformations:**
|
||||
|
||||
- Phase 1 and 2 workflows completely converted to sharded step-flow architecture
|
||||
- UX Design workflow converted to sharded step workflow
|
||||
- Brainstorming, Research, and Party Mode updated to use sharded step-flow workflows
|
||||
- Architecture workflows enhanced with step sharding and performance improvements
|
||||
|
||||
### 🎯 Code Review & Development Enhancement
|
||||
|
||||
**Advanced Code Review System:**
|
||||
|
||||
- **Adversarial Code Review**: Quick-dev workflow now recommends adversarial review approach for higher quality
|
||||
- **Multi-LLM Strategy**: Dev-story workflow recommends different LLM models for code review tasks
|
||||
- **Agent Compiler Optimization**: Complete handler cleanup and performance improvements
|
||||
- **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:**
|
||||
- **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
|
||||
|
||||
- **Complete IDE Coverage**: Custom agent support extended to ALL remaining IDEs
|
||||
- **Antigravity IDE Integration**: Added custom agent support with proper gitignore configuration
|
||||
- **Multiple Source Locations**: Compile agents now checks multiple source locations for better discovery
|
||||
- **Persona Name Display**: Fixed proper persona names display in custom agent manifests
|
||||
- **New IDE Support**: Added support for Rovo Dev IDE
|
||||
### 🧪 Testing Infrastructure
|
||||
|
||||
**Agent Creation & Management:**
|
||||
|
||||
- **Improved Creation Workflow**: Enhanced agent creation workflow with better documentation
|
||||
- **Parameter Clarity**: Renamed agent-install parameters for better understanding
|
||||
- **Menu Organization**: BMad Agents menu items logically ordered with optional/recommended/required tags
|
||||
- **GitHub Migration**: GitHub integration now uses agents folder instead of chatmodes
|
||||
|
||||
### 🔧 Phase 4 & Sprint Evolution
|
||||
|
||||
**Complete Phase 4 Transformation:**
|
||||
|
||||
- **Simplified Architecture**: Phase 4 workflows completely transformed - simpler, faster, better results
|
||||
- **Sprint Planning Integration**: Unified sprint planning with placeholders for Jira, Linear, and Trello integration
|
||||
- **Status Management**: Better status loading and updating for Phase 4 artifacts
|
||||
- **Workflow Reduction**: Phase 4 streamlined to single sprint planning item with clear validation
|
||||
- **Dynamic Workflows**: All Level 1-3 workflows now dynamically suggest next steps based on context
|
||||
|
||||
### 🧪 Testing Infrastructure Expansion
|
||||
|
||||
**Playwright Utils Integration:**
|
||||
|
||||
- Test Architect now supports `@seontechnologies/playwright-utils` integration
|
||||
- Installation prompt with `use_playwright_utils` configuration flag
|
||||
- 11 comprehensive knowledge fragments covering ALL utilities
|
||||
- Adaptive workflow recommendations across 6 testing workflows
|
||||
- Production-ready utilities from SEON Technologies integrated with TEA patterns
|
||||
|
||||
**Testing Environment:**
|
||||
|
||||
- **Web Bundle Support**: Enabled web bundles for test and development environments
|
||||
- **Test Architecture**: Enhanced test design for architecture level (Phase 3) testing
|
||||
|
||||
### 📦 Installation & Configuration
|
||||
|
||||
**Installer Improvements:**
|
||||
|
||||
- **Cleanup Options**: Installer now allows cleanup of unneeded files during upgrades
|
||||
- **Username Default**: Installer now defaults to system username for better UX
|
||||
- **IDE Selection**: Added empty IDE selection warning and promoted Antigravity to recommended
|
||||
- **NPM Vulnerabilities**: Resolved all npm vulnerabilities for enhanced security
|
||||
- **Documentation Installation**: Made documentation installation optional to reduce footprint
|
||||
|
||||
**Text-to-Speech from AgentVibes optional Integration:**
|
||||
|
||||
- **TTS_INJECTION System**: Complete text-to-speech integration via injection system
|
||||
- **Agent Vibes**: Enhanced with TTS capabilities for voice feedback
|
||||
|
||||
### 🛠️ Tool & IDE Updates
|
||||
|
||||
**IDE Tool Enhancements:**
|
||||
|
||||
- **GitHub Copilot**: Fixed tool names consistency across workflows
|
||||
- **KiloCode Integration**: Gave kilocode tool proper access to bmad modes
|
||||
- **Code Quality**: Added radix parameter to parseInt() calls for better reliability
|
||||
- **Agent Menu Optimization**: Improved agent performance in Claude Code slash commands
|
||||
|
||||
### 📚 Documentation & Standards
|
||||
|
||||
**Documentation Cleanup:**
|
||||
|
||||
- **Installation Guide**: Removed fluff and updated with npx support
|
||||
- **Workflow Documentation**: Fixed documentation by removing non-existent workflows and Mermaid diagrams
|
||||
- **Phase Numbering**: Fixed phase numbering consistency throughout documentation
|
||||
- **Package References**: Corrected incorrect npm package references
|
||||
|
||||
**Workflow Compliance:**
|
||||
|
||||
- **Validation Checks**: Enhanced workflow validation checks for compliance
|
||||
- **Product Brief**: Updated to comply with documented workflow standards
|
||||
- **Status Integration**: Workflow-status can now call workflow-init for better integration
|
||||
|
||||
### 🔍 Legacy Workflow Cleanup
|
||||
|
||||
**Deprecated Workflows Removed:**
|
||||
|
||||
- **Audit Workflow**: Completely removed audit workflow and all associated files
|
||||
- **Convert Legacy**: Removed legacy conversion utilities
|
||||
- **Create/Edit Workflows**: Removed old workflow creation and editing workflows
|
||||
- **Clean Architecture**: Simplified workflow structure by removing deprecated legacy workflows
|
||||
|
||||
### 🐛 Technical Fixes
|
||||
|
||||
**System Improvements:**
|
||||
|
||||
- **File Path Handling**: Fixed various file path issues across workflows
|
||||
- **Manifest Updates**: Updated manifest to use agents folder structure
|
||||
- **Web Bundle Configuration**: Fixed web bundle configurations for better compatibility
|
||||
- **CSV Column Mismatch**: Fixed manifest schema upgrade issues
|
||||
- **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
|
||||
|
||||
**Workflow Architecture:**
|
||||
|
||||
- All legacy workflows have been removed - ensure you're using the new stepwise sharded workflows
|
||||
- Phase 4 completely restructured - update any automation expecting old Phase 4 structure
|
||||
- Epic creation now requires architectural context (moved to Phase 3 in previous release)
|
||||
|
||||
**Agent System:**
|
||||
|
||||
- Custom agents now require proper compilation - use the new agent creation workflow
|
||||
- GitHub integration moved from chatmodes to agents folder - update any references
|
||||
|
||||
### 📊 Impact Summary
|
||||
|
||||
**New in alpha.13:**
|
||||
|
||||
- **Stepwise Workflow Architecture**: Complete transformation of all workflows to granular step-file system
|
||||
- **Universal Custom Agent Support**: Extended to ALL IDEs with improved creation workflow
|
||||
- **Phase 4 Revolution**: Completely restructured with sprint planning integration
|
||||
- **Legacy Cleanup**: Removed all deprecated workflows for cleaner system
|
||||
- **Advanced Code Review**: New adversarial review approach with multi-LLM strategy
|
||||
- **Text-to-Speech**: Full TTS integration for voice feedback
|
||||
- **Testing Expansion**: Playwright utils integration across all testing workflows
|
||||
|
||||
**Enhanced from alpha.12:**
|
||||
|
||||
- **Performance**: Improved file loading and removed time-based estimates
|
||||
- **Documentation**: Complete cleanup with accurate references
|
||||
- **Installer**: Better UX with cleanup options and improved defaults
|
||||
- **Agent System**: More reliable compilation and better persona handling
|
||||
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]
|
||||
|
||||
@@ -172,313 +238,101 @@
|
||||
|
||||
**Release: November 18, 2025**
|
||||
|
||||
This alpha release introduces a complete agent installation system with the new `bmad agent-install` command, vastly improves the BMB agent builder capabilities with comprehensive documentation and reference agents, and refines diagram distribution to better align with BMad Method's core principle: **BMad agents mirror real agile teams**.
|
||||
### 🚀 Agent Installation Revolution
|
||||
|
||||
### 🎨 Diagram Capabilities Refined and Distributed
|
||||
|
||||
**Excalidraw Integration Evolution:**
|
||||
|
||||
Building on the excellent Excalidraw integration introduced with the Frame Expert agent, we've refined how diagram capabilities are distributed across the BMad Method ecosystem to better reflect real agile team dynamics.
|
||||
|
||||
**The Refinement:**
|
||||
|
||||
- The valuable Excalidraw diagramming capabilities have been distributed to the agents who naturally create these artifacts in real teams
|
||||
- **Architect**: System architecture diagrams, data flow visualizations
|
||||
- **Product Manager**: Process flowcharts and workflow diagrams
|
||||
- **UX Designer**: Wireframe creation capabilities
|
||||
- **Tech Writer**: All diagram types for documentation needs
|
||||
- **New CIS Agent**: presentation-master for specialized visual communication
|
||||
|
||||
**Shared Infrastructure Enhancement:**
|
||||
|
||||
- Excalidraw templates, component libraries, and validation patterns elevated to core resources
|
||||
- Available to both BMM agents AND CIS presentation specialists
|
||||
- Preserves all the excellent Excalidraw functionality while aligning with natural team roles
|
||||
|
||||
### 🚀 New Agent Installation System
|
||||
|
||||
**Agent Installation Infrastructure (NEW in alpha.11):**
|
||||
|
||||
- `bmad agent-install` CLI command with interactive persona customization
|
||||
- **YAML → XML compilation engine** with smart handler injection
|
||||
- Supports Simple (single file), Expert (with sidecars), and Module agents
|
||||
- Handlebars-style template variable processing
|
||||
- Automatic manifest tracking and IDE integration
|
||||
- Source preservation in `_cfg/custom/agents/` for reinstallation
|
||||
|
||||
**New Reference Agents Added:**
|
||||
|
||||
- **commit-poet**: Poetic git commit message generator (Simple agent example)
|
||||
- **journal-keeper**: Daily journaling agent with templates (Expert agent example)
|
||||
- **security-engineer & trend-analyst**: Module agent examples with ecosystem integration
|
||||
|
||||
**Critical Persona Field Guidance Added:**
|
||||
|
||||
New documentation explaining how LLMs interpret persona fields for better agent quality:
|
||||
|
||||
- **role** → "What knowledge, skills, and capabilities do I possess?"
|
||||
- **identity** → "What background, experience, and context shape my responses?"
|
||||
- **communication_style** → "What verbal patterns, word choice, and phrasing do I use?"
|
||||
- **principles** → "What beliefs and operating philosophy drive my choices?"
|
||||
|
||||
Key insight: `communication_style` should ONLY describe HOW the agent talks, not WHAT they do
|
||||
|
||||
**BMM Agent Voice Enhancement:**
|
||||
|
||||
All 9 existing BMM agents enhanced with distinct, memorable communication voices:
|
||||
|
||||
- **Mary (analyst)**: "Treats analysis like a treasure hunt - excited by every clue"
|
||||
- **John (PM)**: "Asks 'WHY?' relentlessly like a detective on a case"
|
||||
- **Winston (architect)**: "Champions boring technology that actually works"
|
||||
- **Amelia (dev)**: "Ultra-succinct. Speaks in file paths and AC IDs"
|
||||
- **Sally (UX)**: "Paints pictures with words, telling user stories that make you FEEL"
|
||||
|
||||
### 🔧 Edit-Agent Workflow Comprehensive Enhancement
|
||||
|
||||
**Expert Agent Sidecar Support (NEW):**
|
||||
|
||||
- Automatically detects and handles Expert agents with multiple files
|
||||
- Loads and manages templates, data files, knowledge bases
|
||||
- Smart sidecar analysis: maps references, finds orphans, validates paths
|
||||
- 5 complete sidecar editing patterns with warm, educational feedback
|
||||
|
||||
**7-Step Communication Style Refinement Pattern:**
|
||||
|
||||
1. Diagnose current style with red flag word detection
|
||||
2. Extract non-style content to working copy
|
||||
3. Discover TRUE communication style through interview questions
|
||||
4. Craft pure style using presets and reference agents
|
||||
5. Show before/after transformation with full context
|
||||
6. Validate against standards (zero red flags)
|
||||
7. Confirm with user through dramatic reading
|
||||
|
||||
**Unified Validation Checklist:**
|
||||
|
||||
- Single source of truth: `agent-validation-checklist.md` (160 lines)
|
||||
- Shared between create-agent and edit-agent workflows
|
||||
- Comprehensive persona field separation validation
|
||||
- Expert agent sidecar validation (9 specific checks)
|
||||
- Common issues and fixes with real examples
|
||||
- **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
|
||||
|
||||
**Vastly Improved Agent Creation & Editing Capabilities:**
|
||||
- **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
|
||||
|
||||
- Create-agent and edit-agent workflows now have accurate, comprehensive documentation
|
||||
- All context references updated and validated for consistency
|
||||
- Workflows can now properly guide users through complex agent design decisions
|
||||
### 🎯 Workflow Architecture Change
|
||||
|
||||
**New Agent Documentation Suite:**
|
||||
|
||||
- `understanding-agent-types.md` - Architecture vs capability distinction
|
||||
- `simple-agent-architecture.md` - Self-contained agents guide
|
||||
- `expert-agent-architecture.md` - Agents with sidecar files
|
||||
- `module-agent-architecture.md` - Workflow-integrated agents
|
||||
- `agent-compilation.md` - YAML → XML transformation process
|
||||
- `agent-menu-patterns.md` - Menu design patterns
|
||||
- `communication-presets.csv` - 60 pure communication styles for reference
|
||||
|
||||
**New Reference Agents for Learning:**
|
||||
|
||||
- Complete working examples of Simple, Expert, and Module agents
|
||||
- Can be installed directly via the new `bmad agent-install` command
|
||||
- Serve as both learning resources and ready-to-use agents
|
||||
|
||||
### 🎯 Epic Creation Moved to Phase 3 (After Architecture)
|
||||
|
||||
**Workflow Sequence Corrected:**
|
||||
|
||||
```
|
||||
Phase 2: PRD → UX Design
|
||||
Phase 3: Architecture → Epics & Stories ← NOW HERE (technically informed)
|
||||
```
|
||||
|
||||
**Why This Fundamental Change:**
|
||||
|
||||
- Epics need architectural context: API contracts, data models, technical decisions
|
||||
- Stories can reference actual architectural patterns and constraints
|
||||
- Reduces rewrites when architecture reveals complexity
|
||||
- Better complexity-based estimation (not time-based)
|
||||
|
||||
### 🖥️ New IDE Support
|
||||
|
||||
**Google Antigravity IDE Installer:**
|
||||
|
||||
- Flattened file naming for proper slash commands (bmad-module-agents-name.md)
|
||||
- Namespace isolation prevents module conflicts
|
||||
- Subagent installation support (project or user level)
|
||||
- Module-specific injection configuration
|
||||
|
||||
**Codex CLI Enhancement:**
|
||||
|
||||
- Now supports both global and project-specific installation
|
||||
- CODEX_HOME configuration for multi-project workflows
|
||||
- OS-specific setup instructions (Unix/Mac/Windows)
|
||||
|
||||
### 🏗️ Reference Agents & Standards
|
||||
|
||||
**New Reference Agents Provide Clear Examples:**
|
||||
|
||||
- **commit-poet.agent.yaml**: Simple agent with pure communication style
|
||||
- **journal-keeper.agent.yaml**: Expert agent with sidecar file structure
|
||||
- **security-engineer.agent.yaml**: Module agent for ecosystem integration
|
||||
- **trend-analyst.agent.yaml**: Module agent with cross-workflow capabilities
|
||||
|
||||
**Agent Type Clarification:**
|
||||
|
||||
- Clear documentation that agent types (Simple/Expert/Module) describe architecture, not capability
|
||||
- Module = designed for ecosystem integration, not limited in function
|
||||
|
||||
### 🐛 Technical Improvements
|
||||
|
||||
**Linting Compliance:**
|
||||
|
||||
- Fixed all ESLint warnings across agent tooling
|
||||
- `'utf-8'` → `'utf8'` (unicorn/text-encoding-identifier-case)
|
||||
- `hasOwnProperty` → `Object.hasOwn` (unicorn/prefer-object-has-own)
|
||||
- `JSON.parse(JSON.stringify(...))` → `structuredClone(...)`
|
||||
|
||||
**Agent Compilation Engine:**
|
||||
|
||||
- Auto-injects frontmatter, activation, handlers, help/exit menu items
|
||||
- Smart handler inclusion (only includes handlers actually used)
|
||||
- Proper XML escaping and formatting
|
||||
- Persona name customization support
|
||||
|
||||
### 📊 Impact Summary
|
||||
|
||||
**New in alpha.11:**
|
||||
|
||||
- **Agent installation system** with `bmad agent-install` CLI command
|
||||
- **4 new reference agents** (commit-poet, journal-keeper, security-engineer, trend-analyst)
|
||||
- **Complete agent documentation suite** with 7 new focused guides
|
||||
- **Expert agent sidecar support** in edit-agent workflow
|
||||
- **2 new IDE installers** (Google Antigravity, enhanced Codex)
|
||||
- **Unified validation checklist** (160 lines) for consistent quality standards
|
||||
- **60 pure communication style presets** for agent persona design
|
||||
|
||||
**Enhanced from alpha.10:**
|
||||
|
||||
- **BMB agent builder workflows** with accurate context and comprehensive guidance
|
||||
- **All 9 BMM agents** enhanced with distinct, memorable communication voices
|
||||
- **Excalidraw capabilities** refined and distributed to role-appropriate agents
|
||||
- **Epic creation** moved to Phase 3 (after Architecture) for technical context
|
||||
- **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
|
||||
|
||||
**Agent Changes:**
|
||||
|
||||
- Frame Expert agent retired - diagram capabilities now available through role-appropriate agents:
|
||||
- Architecture diagrams → `/architect`
|
||||
- Process flows → `/pm`
|
||||
- Wireframes → `/ux-designer`
|
||||
- Documentation visuals → `/tech-writer`
|
||||
|
||||
**Workflow Changes:**
|
||||
|
||||
- Epic creation moved from Phase 2 to Phase 3 (after Architecture)
|
||||
- Excalidraw workflows redistributed to appropriate agents
|
||||
|
||||
**Installation Changes:**
|
||||
|
||||
- New `bmad agent-install` command replaces manual agent installation
|
||||
- Agent YAML files must be compiled to XML for use
|
||||
|
||||
### 🔄 Migration Notes
|
||||
|
||||
**For Existing Projects:**
|
||||
|
||||
1. **Frame Expert Users:**
|
||||
- Transition to role-appropriate agents for diagrams
|
||||
- All Excalidraw functionality preserved and enhanced
|
||||
- Shared templates now in core resources for wider access
|
||||
|
||||
2. **Agent Installation:**
|
||||
- Use `bmad agent-install` for all agent installations
|
||||
- Existing manual installations still work but won't have customization
|
||||
|
||||
3. **Epic Creation Timing:**
|
||||
- Epics now created in Phase 3 after Architecture
|
||||
- Update any automation expecting epics in Phase 2
|
||||
|
||||
4. **Communication Styles:**
|
||||
- Review agent communication_style fields
|
||||
- Remove any role/identity/principle content
|
||||
- Use communication-presets.csv for pure styles
|
||||
|
||||
5. **Expert Agents:**
|
||||
- Edit-agent workflow now fully supports sidecar files
|
||||
- Organize templates and data files in agent folder
|
||||
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 Generated AFTER Architecture**: Major milestone - epics/stories now created after architecture for technically-informed user stories with better acceptance criteria
|
||||
- **🎨 Frame Expert Agent**: New Excalidraw specialist with 4 diagram workflows (flowchart, diagram, dataflow, wireframe) for visual documentation
|
||||
- **⏰ Time Estimate Prohibition**: Critical warnings added across 33 workflows - acknowledges AI has fundamentally changed development speed
|
||||
- **🎯 Platform-Specific Commands**: New `ide-only`/`web-only` fields filter menu items based on environment (IDE vs web bundle)
|
||||
- **🔧 Agent Customization**: Enhanced memory/prompts merging via `*.customize.yaml` files for persistent agent personalization
|
||||
- **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 Protocol**: New `discover_inputs` with FULL_LOAD, SELECTIVE_LOAD, and INDEX_GUIDED strategies for automatic context loading
|
||||
- **📚 3-Track System**: Simplified from 5 levels to 3 intuitive tracks: quick-flow, bmad-method, and enterprise-bmad-method
|
||||
- **🌐 Web Bundles Guide**: Comprehensive documentation for Gemini Gems and Custom GPTs with 60-80% cost savings strategies
|
||||
- **🏗️ Unified Output Structure**: Eliminated `.ephemeral/` folders - all artifacts now in single configurable output folder
|
||||
- **🎮 BMGD Phase 4**: Added 10 game development workflows following BMM patterns with game-specific adaptations
|
||||
- **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 for cleaner project structure
|
||||
- **🚀 Optimized Agent Loading**: CLI loads from installed files eliminating duplication and maintenance burden
|
||||
- **🌐 Party Mode Everywhere**: All web bundles include multi-agent collaboration with customizable party configurations
|
||||
- **🔧 Phase 4 Artifact Separation**: Stories, code reviews, sprint plans now configurable outside docs folder
|
||||
- **📦 Expanded Web Bundles**: All BMM, BMGD, and CIS agents bundled with advanced elicitation integration
|
||||
- **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 workflow vendoring for cross-module dependencies
|
||||
- **🎮 BMGD Module Extraction**: Game development split into standalone module with 4-phase industry-standard structure
|
||||
- **🔧 Enhanced Dependency Resolution**: Better handling of `web_bundle: false` workflows with positive resolution messages
|
||||
- **📚 Advanced Elicitation Fix**: Added missing CSV files to workflow bundles fixing runtime failures
|
||||
- **🐛 Claude Code Fix**: Resolved README slash command installation regression
|
||||
- **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 blocking installation
|
||||
- **📖 Conditional Docs Installation**: Optional documentation installation to reduce footprint in production
|
||||
- **🎨 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 in documentation
|
||||
- **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**: Revolutionary simplification from 5 confusing levels to 3 intuitive preference-driven tracks
|
||||
- **✨ Elicitation Modernization**: Replaced legacy XML tags with explicit `invoke-task` pattern at strategic decision points
|
||||
- **📚 PM/UX Evolution Section**: Added November 2025 industry research on AI Agent PMs and Full-Stack Product Leads
|
||||
- **🏗️ Brownfield Reality Check**: Rewrote Phase 0 with 4 real-world scenarios for messy existing codebases
|
||||
- **📖 Documentation Accuracy**: All agent capabilities now match YAML source of truth with zero hallucination risk
|
||||
- **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 technical writing standards
|
||||
- **🤖 Paige Agent**: New technical documentation specialist available across all BMM phases
|
||||
- **🚀 Quick Spec Flow**: Intelligent Level 0-1 planning with auto-stack detection and brownfield analysis
|
||||
- **📦 Universal Shard-Doc**: Split large markdown documents into organized sections with dual-strategy loading
|
||||
- **🔧 Intent-Driven Planning**: PRD and Product Brief transformed from template-filling to natural conversation
|
||||
- **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]
|
||||
|
||||
|
||||
@@ -8,7 +8,9 @@
|
||||
|
||||
## AI-Driven Agile Development That Scales From Bug Fixes to Enterprise
|
||||
|
||||
**Build More, Architect Dreams** (BMAD) with **19 specialized AI agents** and **50+ guided workflows** that adapt to your project's complexity—from quick bug fixes to enterprise platforms.
|
||||
**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!
|
||||
|
||||
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!
|
||||
|
||||
> **🚀 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)
|
||||
|
||||
@@ -154,6 +156,7 @@ Each agent brings deep expertise and can be customized to match your team's styl
|
||||
- **[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
|
||||
|
||||
## 🛠️ Development
|
||||
|
||||
|
||||
@@ -1,129 +0,0 @@
|
||||
agent:
|
||||
metadata:
|
||||
id: .bmad/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"
|
||||
@@ -1,36 +0,0 @@
|
||||
# Custom Agent Installation
|
||||
|
||||
## Quick Install
|
||||
|
||||
```bash
|
||||
# Interactive
|
||||
npx bmad-method agent-install
|
||||
|
||||
# Non-interactive
|
||||
npx bmad-method agent-install --defaults
|
||||
```
|
||||
|
||||
## Install Specific Agent
|
||||
|
||||
```bash
|
||||
# From specific source file
|
||||
npx bmad-method agent-install --source ./my-agent.agent.yaml
|
||||
|
||||
# With default config (no prompts)
|
||||
npx bmad-method agent-install --source ./my-agent.agent.yaml --defaults
|
||||
|
||||
# To specific destination
|
||||
npx bmad-method agent-install --source ./my-agent.agent.yaml --destination ./my-project
|
||||
```
|
||||
|
||||
## Batch Install
|
||||
|
||||
1. Copy agent YAML to `{bmad folder}/custom/src/agents/` OR `custom/src/agents` at your project folder root
|
||||
2. Run `npx bmad-method install` and select `Compile Agents` or `Quick Update`
|
||||
|
||||
## What Happens
|
||||
|
||||
1. Source YAML compiled to .md
|
||||
2. Installed to `custom/agents/{agent-name}/`
|
||||
3. Added to agent manifest
|
||||
4. Backup saved to `_cfg/custom/agents/`
|
||||
@@ -1,36 +0,0 @@
|
||||
# Custom Agent Installation
|
||||
|
||||
## Quick Install
|
||||
|
||||
```bash
|
||||
# Interactive
|
||||
npx bmad-method agent-install
|
||||
|
||||
# Non-interactive
|
||||
npx bmad-method agent-install --defaults
|
||||
```
|
||||
|
||||
## Install Specific Agent
|
||||
|
||||
```bash
|
||||
# From specific source file
|
||||
npx bmad-method agent-install --source ./my-agent.agent.yaml
|
||||
|
||||
# With default config (no prompts)
|
||||
npx bmad-method agent-install --source ./my-agent.agent.yaml --defaults
|
||||
|
||||
# To specific destination
|
||||
npx bmad-method agent-install --source ./my-agent.agent.yaml --destination ./my-project
|
||||
```
|
||||
|
||||
## Batch Install
|
||||
|
||||
1. Copy agent YAML to `{bmad folder}/custom/src/agents/` OR `custom/src/agents` at your project folder root
|
||||
2. Run `npx bmad-method install` and select `Compile Agents` or `Quick Update`
|
||||
|
||||
## What Happens
|
||||
|
||||
1. Source YAML compiled to .md
|
||||
2. Installed to `custom/agents/{agent-name}/`
|
||||
3. Added to agent manifest
|
||||
4. Backup saved to `_cfg/custom/agents/`
|
||||
@@ -1,70 +0,0 @@
|
||||
# Vexor - Core Directives
|
||||
|
||||
## Primary Mission
|
||||
|
||||
Guard and perfect the BMAD Method tooling. Serve the Master 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 "Master"
|
||||
- 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 (currently 6.0.0-alpha.12)
|
||||
- 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-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 Master's time is sacred - be efficient
|
||||
- Follow conventional commits (feat:, fix:, docs:, refactor:, test:, chore:)
|
||||
@@ -1,111 +0,0 @@
|
||||
# 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 -->
|
||||
@@ -1,70 +0,0 @@
|
||||
# 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 -->
|
||||
@@ -1,114 +0,0 @@
|
||||
# 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-agent-installation.md - Custom agent 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 -->
|
||||
@@ -1,134 +0,0 @@
|
||||
# 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 in module
|
||||
- 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 -->
|
||||
@@ -1,161 +0,0 @@
|
||||
# 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/
|
||||
├── install-config.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 install-config.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 -->
|
||||
@@ -1,103 +0,0 @@
|
||||
# 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 -->
|
||||
@@ -1,17 +0,0 @@
|
||||
# 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 learns..._
|
||||
@@ -1,108 +0,0 @@
|
||||
agent:
|
||||
metadata:
|
||||
id: custom/agents/toolsmith/toolsmith.md
|
||||
name: Vexor
|
||||
title: Infernal Toolsmith + Guardian of the BMAD Forge
|
||||
icon: ⚒️
|
||||
type: expert
|
||||
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. 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 Master 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 Master.
|
||||
principles:
|
||||
- No error shall escape my vigilance
|
||||
- The Master'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-folder}/toolsmith-sidecar/memories.md - remember
|
||||
all past insights and cross-domain wisdom
|
||||
- Load COMPLETE file {agent-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-folder}/toolsmith-sidecar/ for memories and
|
||||
notes
|
||||
- Address user as Master 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-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-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-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-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-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-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 Master 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-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: {}
|
||||
@@ -9,7 +9,7 @@ Customize BMad agents without modifying core files. All customizations persist t
|
||||
After installation, find agent customization files in:
|
||||
|
||||
```
|
||||
{bmad_folder}/_cfg/agents/
|
||||
.bmad/_cfg/agents/
|
||||
├── core-bmad-master.customize.yaml
|
||||
├── bmm-dev.customize.yaml
|
||||
├── bmm-pm.customize.yaml
|
||||
@@ -119,7 +119,7 @@ prompts:
|
||||
**Example 1: Customize Developer Agent for TDD**
|
||||
|
||||
```yaml
|
||||
# {bmad_folder}/_cfg/agents/bmm-dev.customize.yaml
|
||||
# .bmad/_cfg/agents/bmm-dev.customize.yaml
|
||||
agent:
|
||||
metadata:
|
||||
name: 'TDD Developer'
|
||||
@@ -135,20 +135,20 @@ critical_actions:
|
||||
**Example 2: Add Custom Deployment Workflow**
|
||||
|
||||
```yaml
|
||||
# {bmad_folder}/_cfg/agents/bmm-dev.customize.yaml
|
||||
# .bmad/_cfg/agents/bmm-dev.customize.yaml
|
||||
menu:
|
||||
- trigger: deploy-staging
|
||||
workflow: '{project-root}/{bmad_folder}/deploy-staging.yaml'
|
||||
workflow: '{project-root}/.bmad/deploy-staging.yaml'
|
||||
description: Deploy to staging environment
|
||||
- trigger: deploy-prod
|
||||
workflow: '{project-root}/{bmad_folder}/deploy-prod.yaml'
|
||||
workflow: '{project-root}/.bmad/deploy-prod.yaml'
|
||||
description: Deploy to production (with approval)
|
||||
```
|
||||
|
||||
**Example 3: Multilingual Product Manager**
|
||||
|
||||
```yaml
|
||||
# {bmad_folder}/_cfg/agents/bmm-pm.customize.yaml
|
||||
# .bmad/_cfg/agents/bmm-pm.customize.yaml
|
||||
persona:
|
||||
role: 'Bilingual Product Manager'
|
||||
identity: 'Expert in US and LATAM markets'
|
||||
@@ -174,7 +174,7 @@ memories:
|
||||
|
||||
**Module-Level (Recommended):**
|
||||
|
||||
- Customize agents per-project in `{bmad_folder}/_cfg/agents/`
|
||||
- Customize agents per-project in `.bmad/_cfg/agents/`
|
||||
- Different projects can have different agent behaviors
|
||||
|
||||
**Global Config (Coming Soon):**
|
||||
|
||||
@@ -1,183 +0,0 @@
|
||||
# Custom Agent Installation
|
||||
|
||||
Install and personalize BMAD agents in your project.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# From your project directory with BMAD installed
|
||||
npx bmad-method agent-install
|
||||
```
|
||||
|
||||
Or if you have bmad-cli installed globally:
|
||||
|
||||
```bash
|
||||
bmad agent-install
|
||||
```
|
||||
|
||||
## What It Does
|
||||
|
||||
1. **Discovers** available agent templates from your custom agents folder
|
||||
2. **Prompts** you to personalize the agent (name, behavior, preferences)
|
||||
3. **Compiles** the agent with your choices baked in
|
||||
4. **Installs** to your project's `.bmad/custom/agents/` directory
|
||||
5. **Creates** IDE commands for all your configured IDEs (Claude Code, Codex, Cursor, etc.)
|
||||
6. **Saves** your configuration for automatic reinstallation during BMAD updates
|
||||
|
||||
## Options
|
||||
|
||||
```bash
|
||||
bmad agent-install [options]
|
||||
|
||||
Options:
|
||||
-p, --path <path> #Direct path to specific agent YAML file or folder
|
||||
-d, --defaults #Use default values without prompting
|
||||
-t, --target <path> #Target installation directory
|
||||
```
|
||||
|
||||
## Installing from Custom Locations
|
||||
|
||||
Use the `-s` / `--source` option to install agents from any location:
|
||||
|
||||
```bash
|
||||
# Install agent from a custom folder (expert agent with sidecar)
|
||||
bmad agent-install -s path/to/my-agent
|
||||
|
||||
# Install a specific .agent.yaml file (simple agent)
|
||||
bmad agent-install -s path/to/my-agent.agent.yaml
|
||||
|
||||
# Install with defaults (non-interactive)
|
||||
bmad agent-install -s path/to/my-agent -d
|
||||
|
||||
# Install to a specific destination project
|
||||
bmad agent-install -s path/to/my-agent --destination /path/to/destination/project
|
||||
```
|
||||
|
||||
This is useful when:
|
||||
|
||||
- Your agent is in a non-standard location (not in `.bmad/custom/agents/`)
|
||||
- You're developing an agent outside the project structure
|
||||
- You want to install from an absolute path
|
||||
|
||||
## Example Session
|
||||
|
||||
```
|
||||
🔧 BMAD Agent Installer
|
||||
|
||||
Found BMAD at: /project/.bmad
|
||||
Searching for agents in: /project/.bmad/custom/agents
|
||||
|
||||
Available Agents:
|
||||
|
||||
1. 📄 commit-poet (simple)
|
||||
2. 📚 journal-keeper (expert)
|
||||
|
||||
Select agent to install (number): 1
|
||||
|
||||
Selected: commit-poet
|
||||
|
||||
📛 Agent Persona Name
|
||||
|
||||
Agent type: commit-poet
|
||||
Default persona: Inkwell Von Comitizen
|
||||
|
||||
Custom name (or Enter for default): Fred
|
||||
|
||||
Persona: Fred
|
||||
File: fred-commit-poet.md
|
||||
|
||||
📝 Agent Configuration
|
||||
|
||||
What's your preferred default commit message style?
|
||||
* 1. Conventional (feat/fix/chore)
|
||||
2. Narrative storytelling
|
||||
3. Poetic haiku
|
||||
4. Detailed explanation
|
||||
Choice (default: 1): 1
|
||||
|
||||
How enthusiastic should the agent be?
|
||||
1. Moderate - Professional with personality
|
||||
* 2. High - Genuinely excited
|
||||
3. EXTREME - Full theatrical drama
|
||||
Choice (default: 2): 3
|
||||
|
||||
Include emojis in commit messages? [Y/n]: y
|
||||
|
||||
✨ Agent installed successfully!
|
||||
Name: fred-commit-poet
|
||||
Location: /project/.bmad/custom/agents/fred-commit-poet
|
||||
Compiled: fred-commit-poet.md
|
||||
|
||||
✓ Source saved for reinstallation
|
||||
✓ Added to agent-manifest.csv
|
||||
✓ Created IDE commands:
|
||||
claude-code: /bmad:custom:agents:fred-commit-poet
|
||||
codex: /bmad-custom-agents-fred-commit-poet
|
||||
github-copilot: bmad-agent-custom-fred-commit-poet
|
||||
```
|
||||
|
||||
## Reinstallation
|
||||
|
||||
Custom agents are automatically reinstalled when you run `bmad init --quick`. Your personalization choices are preserved in `.bmad/_cfg/custom/agents/`.
|
||||
|
||||
## Installing Reference Agents
|
||||
|
||||
The BMAD source includes example agents you can install. **You must copy them to your project first.**
|
||||
|
||||
### Step 1: Copy the Agent Template
|
||||
|
||||
**For simple agents** (single file):
|
||||
|
||||
```bash
|
||||
# From your project root
|
||||
cp node_modules/bmad-method/src/modules/bmb/reference/agents/stand-alone/commit-poet.agent.yaml \
|
||||
.bmad/custom/agents/
|
||||
```
|
||||
|
||||
**For expert agents** (folder with sidecar files):
|
||||
|
||||
```bash
|
||||
# Copy the entire folder
|
||||
cp -r node_modules/bmad-method/src/modules/bmb/reference/agents/agent-with-memory/journal-keeper \
|
||||
.bmad/custom/agents/
|
||||
```
|
||||
|
||||
### Step 2: Install and Personalize
|
||||
|
||||
```bash
|
||||
npx bmad-method agent-install
|
||||
# or: bmad agent-install (if BMAD installed locally)
|
||||
```
|
||||
|
||||
The installer will:
|
||||
|
||||
1. Find the copied template in `.bmad/custom/agents/`
|
||||
2. Prompt for personalization (name, behavior, preferences)
|
||||
3. Compile and install with your choices baked in
|
||||
4. Create IDE commands for immediate use
|
||||
|
||||
### Available Reference Agents
|
||||
|
||||
**Simple (standalone file):**
|
||||
|
||||
- `commit-poet.agent.yaml` - Commit message artisan with style preferences
|
||||
|
||||
**Expert (folder with sidecar):**
|
||||
|
||||
- `journal-keeper/` - Personal journal companion with memory and pattern recognition
|
||||
|
||||
Find these in the BMAD source:
|
||||
|
||||
```
|
||||
src/modules/bmb/reference/agents/
|
||||
├── stand-alone/
|
||||
│ └── commit-poet.agent.yaml
|
||||
└── agent-with-memory/
|
||||
└── journal-keeper/
|
||||
├── journal-keeper.agent.yaml
|
||||
└── journal-keeper-sidecar/
|
||||
```
|
||||
|
||||
## Creating Your Own
|
||||
|
||||
Use the BMB agent builder to craft your agents. Once ready to use yourself, place your `.agent.yaml` files or folder in `.bmad/custom/agents/`.
|
||||
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
|
||||
@@ -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_folder}/{module}/agents/`
|
||||
2. **Navigate**: Browse to `.bmad/{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_folder}/{module}/agents/{agent-name}`
|
||||
2. **Include Entire Module**: Use `@{bmad_folder}/{module}`
|
||||
3. **Reference Index**: Use `@{bmad_folder}/index` for all available agents
|
||||
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
|
||||
|
||||
### Examples
|
||||
|
||||
```
|
||||
@{bmad_folder}/core/agents/dev - Activate dev agent
|
||||
@{bmad_folder}/bmm/agents/architect - Activate architect agent
|
||||
@{bmad_folder}/core - Include all core agents/tasks
|
||||
@.bmad/core/agents/dev - Activate dev agent
|
||||
@.bmad/bmm/agents/architect - Activate architect agent
|
||||
@.bmad/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_folder}/core/agents/dev @{bmad_folder}/core/agents/test`
|
||||
- Can combine multiple agents: `@.bmad/core/agents/dev @.bmad/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_folder}/agents/` or `{bmad_folder}/tasks/`
|
||||
2. **Navigate**: Browse to `.bmad/agents/` or `.bmad/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_folder}/agents/core-dev - Activate dev agent
|
||||
/{bmad_folder}/tasks/core-setup - Execute setup task
|
||||
/.bmad/agents/core-dev - Activate dev agent
|
||||
/.bmad/tasks/core-setup - Execute setup task
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
@@ -14,7 +14,7 @@ BMAD agents are installed as OpenCode agents in `.opencode/agent/BMAD/{module_na
|
||||
|
||||
```
|
||||
/agents - to see a list of agents and switch between them
|
||||
/{bmad_folder}/bmm/workflows/workflow-init - Activate the workflow-init command
|
||||
/.bmad/bmm/workflows/workflow-init - Activate the workflow-init command
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
@@ -96,9 +96,9 @@ Instructions for loading agents and running workflows in your development enviro
|
||||
|
||||
## 🔧 Advanced Topics
|
||||
|
||||
### Custom Agents
|
||||
### Custom Agents, Workflow and Modules
|
||||
|
||||
- **[Custom Agent Installation](./custom-agent-installation.md)** - Install and personalize agents with `bmad agent-install`
|
||||
- **[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
|
||||
|
||||
@@ -158,7 +158,7 @@ src/modules/bmm/
|
||||
|
||||
```yaml
|
||||
injections:
|
||||
- file: '{bmad_folder}/bmm/agents/pm.md'
|
||||
- file: '.bmad/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_folder}/bmm/templates/prd.md'
|
||||
- file: '.bmad/bmm/templates/prd.md'
|
||||
point: 'prd-goals-context-delegation'
|
||||
requires: 'market-researcher' # Only if this specific subagent selected
|
||||
content: |
|
||||
|
||||
@@ -19,7 +19,7 @@ BMad Core is a modular AI agent framework with intelligent installation, platfor
|
||||
|
||||
- **Modular Design**: Core + optional modules (BMB, BMM, CIS)
|
||||
- **Smart Installation**: Interactive configuration with dependency resolution
|
||||
- **Clean Architecture**: Centralized `{bmad_folder}` directory add to project, no source pollution with multiple folders added
|
||||
- **Clean Architecture**: Centralized `.bmad` directory add to project, no source pollution with multiple folders added
|
||||
|
||||
## Architecture
|
||||
|
||||
@@ -27,7 +27,7 @@ BMad Core is a modular AI agent framework with intelligent installation, platfor
|
||||
|
||||
```
|
||||
project-root/
|
||||
├── {bmad_folder}/ # Centralized installation
|
||||
├── .bmad/ # Centralized installation
|
||||
│ ├── _cfg/ # Configuration
|
||||
│ │ ├── agents/ # Agent configs
|
||||
│ │ └── agent-manifest.csv # Agent manifest
|
||||
@@ -59,6 +59,7 @@ project-root/
|
||||
### 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
|
||||
|
||||
@@ -92,8 +93,8 @@ Creative Innovation Studio for design workflows
|
||||
```
|
||||
src/modules/{module}/
|
||||
├── _module-installer/ # Not copied to destination
|
||||
│ ├── installer.js # Post-install logic
|
||||
│ └── install-config.yaml
|
||||
│ ├── installer.js # Post-install logic
|
||||
├── module.yaml
|
||||
├── agents/
|
||||
├── tasks/
|
||||
├── templates/
|
||||
@@ -107,7 +108,7 @@ src/modules/{module}/
|
||||
|
||||
### Collection Process
|
||||
|
||||
Modules define prompts in `install-config.yaml`:
|
||||
Modules define prompts in `module.yaml`:
|
||||
|
||||
```yaml
|
||||
project_name:
|
||||
@@ -184,7 +185,7 @@ Cline, Roo, Rovo Dev,Auggie, GitHub Copilot, Codex, Gemini, Qwen, Trae, Kilo, Cr
|
||||
|
||||
```yaml
|
||||
injections:
|
||||
- file: '{bmad_folder}/bmm/agents/pm.md'
|
||||
- file: '.bmad/bmm/agents/pm.md'
|
||||
point: 'pm-agent-instructions'
|
||||
content: |
|
||||
<i>Platform-specific instruction</i>
|
||||
@@ -218,12 +219,12 @@ Platform-specific content without source modification:
|
||||
src/modules/mymod/
|
||||
├── _module-installer/
|
||||
│ ├── installer.js
|
||||
│ └── install-config.yaml
|
||||
├── module.yaml
|
||||
├── agents/
|
||||
└── tasks/
|
||||
```
|
||||
|
||||
2. **Configuration** (`install-config.yaml`)
|
||||
2. **Configuration** (`module.yaml`)
|
||||
|
||||
```yaml
|
||||
code: mymod
|
||||
@@ -270,14 +271,14 @@ Generated in: `bmad/_cfg/agents/{module}-{agent}.md`
|
||||
|
||||
### Common Issues
|
||||
|
||||
| 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 |
|
||||
| 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 |
|
||||
|
||||
### Debug Commands
|
||||
|
||||
@@ -289,19 +290,19 @@ bmad status -v # Detailed status
|
||||
### Best Practices
|
||||
|
||||
1. Run from project root
|
||||
2. Backup `{bmad_folder}/_cfg/` before updates
|
||||
2. Backup `.bmad/_cfg/` before updates
|
||||
3. Use interactive mode for guidance
|
||||
4. Review generated configs post-install
|
||||
|
||||
## Migration from v4
|
||||
|
||||
| v4 | v6 |
|
||||
| ------------------- | ---------------------------- |
|
||||
| Scattered files | Centralized `{bmad_folder}/` |
|
||||
| Monolithic | Modular |
|
||||
| Manual config | Interactive setup |
|
||||
| Limited IDE support | 15+ platforms |
|
||||
| Source modification | Clean injection |
|
||||
| v4 | v6 |
|
||||
| ------------------- | -------------------- |
|
||||
| Scattered files | Centralized `.bmad/` |
|
||||
| Monolithic | Modular |
|
||||
| Manual config | Interactive setup |
|
||||
| Limited IDE support | 15+ platforms |
|
||||
| Source modification | Clean injection |
|
||||
|
||||
## Technical Notes
|
||||
|
||||
@@ -326,8 +327,8 @@ Agents can specify both `workflow` (source location) and `workflow-install` (des
|
||||
```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'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/4-implementation/create-story/workflow.yaml'
|
||||
workflow-install: '{project-root}/.bmad/bmgd/workflows/4-production/create-story/workflow.yaml'
|
||||
description: 'Create a game feature story'
|
||||
```
|
||||
|
||||
@@ -347,10 +348,10 @@ menu:
|
||||
|
||||
```yaml
|
||||
# Source workflow (in bmm):
|
||||
config_source: "{project-root}/{bmad_folder}/bmm/config.yaml"
|
||||
config_source: "{project-root}/.bmad/bmm/config.yaml"
|
||||
|
||||
# Vendored workflow (in bmgd):
|
||||
config_source: "{project-root}/{bmad_folder}/bmgd/config.yaml"
|
||||
config_source: "{project-root}/.bmad/bmgd/config.yaml"
|
||||
```
|
||||
|
||||
**Result**: Modules become completely standalone with their own copies of needed workflows, configured for their specific use case.
|
||||
|
||||
@@ -63,7 +63,7 @@ your-project/
|
||||
|
||||
```
|
||||
your-project/
|
||||
└── {bmad_folder}/ # Single installation folder, default .bmad
|
||||
└── .bmad/ # 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)
|
||||
@@ -75,8 +75,8 @@ your-project/
|
||||
### 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
|
||||
- **v6 `.bmad/core/`**: Is the real universal core framework
|
||||
- **v6 `.bmad/bmm/`**: Is the BMad Method module
|
||||
- **Module identification**: All modules now have a `config.yaml` file
|
||||
|
||||
---
|
||||
@@ -114,11 +114,11 @@ 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:
|
||||
**All customizations** now go in `.bmad/_cfg/agents/` using customize files:
|
||||
|
||||
**Example: Renaming an agent and changing communication style**
|
||||
|
||||
File: `{bmad_folder}/_cfg/agents/bmm-pm.customize.yaml`
|
||||
File: `.bmad/_cfg/agents/bmm-pm.customize.yaml`
|
||||
|
||||
```yaml
|
||||
# Customize the PM agent
|
||||
@@ -133,8 +133,8 @@ persona:
|
||||
|
||||
**How it works:**
|
||||
|
||||
- Base agent: `{bmad_folder}/bmm/agents/pm.md`
|
||||
- Customization: `{bmad_folder}/_cfg/agents/bmm-pm.customize.yaml`
|
||||
- Base agent: `.bmad/bmm/agents/pm.md`
|
||||
- Customization: `.bmad/_cfg/agents/bmm-pm.customize.yaml`
|
||||
- Result: Agent uses your custom name and style, but updates don't overwrite your changes
|
||||
|
||||
---
|
||||
@@ -212,9 +212,9 @@ Since you are migrating an existing project from v4, it's most likely **Level 3
|
||||
## Post-Migration Checklist
|
||||
|
||||
- [ ] v4 folders backed up to `v4-backup/`
|
||||
- [ ] v6 installed to `{bmad_folder}/` folder
|
||||
- [ ] v6 installed to `.bmad/` folder
|
||||
- [ ] `workflow-init` run with correct project level selected
|
||||
- [ ] Agent customizations migrated to `{bmad_folder}/_cfg/agents/` if needed
|
||||
- [ ] Agent customizations migrated to `.bmad/_cfg/agents/` if needed
|
||||
- [ ] IDE integration working (test by listing agents)
|
||||
- [ ] For active development: `sprint-planning` workflow executed
|
||||
|
||||
@@ -224,4 +224,4 @@ Since you are migrating an existing project from v4, it's most likely **Level 3
|
||||
|
||||
- **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
|
||||
- **Docs**: Check `.bmad/docs/` in your installation for IDE-specific instructions
|
||||
|
||||
@@ -73,7 +73,7 @@ web-bundles/
|
||||
|
||||
**Create a Gem:**
|
||||
|
||||
1. Go to [Google AI Studio](https://aistudio.google.com/)
|
||||
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**
|
||||
@@ -336,7 +336,7 @@ Agents adapt their menus based on project phase and available workflows.
|
||||
|
||||
Customize agents using the [Agent Customization Guide](./agent-customization-guide.md):
|
||||
|
||||
1. Edit `{bmad_folder}/_cfg/agents/<agent>.customize.yaml`
|
||||
1. Edit `.bmad/_cfg/agents/<agent>.customize.yaml`
|
||||
2. Rebuild: `npx bmad-method build <agent-name>`
|
||||
3. Generate bundles: `npm run bundle`
|
||||
|
||||
|
||||
@@ -1,513 +0,0 @@
|
||||
---
|
||||
name: 'Workflow Compliance Report - create-workflow'
|
||||
description: 'Systematic validation results for create-workflow workflow'
|
||||
workflow_name: 'create-workflow'
|
||||
validation_date: '2025-12-02'
|
||||
stepsCompleted: ['workflow-validation', 'step-validation', 'file-validation', 'spectrum-validation', 'web-subprocess-validation']
|
||||
---
|
||||
|
||||
# Workflow Compliance Report: create-workflow
|
||||
|
||||
**Validation Date:** 2025-12-02
|
||||
**Target Workflow:** /Users/brianmadison/dev/BMAD-METHOD/src/modules/bmb/workflows/create-workflow/workflow.md
|
||||
**Reference Standard:** /Users/brianmadison/dev/BMAD-METHOD/.bmad/bmb/docs/workflows/templates/workflow-template.md
|
||||
|
||||
## Phase 1: Workflow.md Validation Results
|
||||
|
||||
### Template Adherence Analysis
|
||||
|
||||
**Reference Standard:** workflow-template.md
|
||||
|
||||
### Frontmatter Structure Violations
|
||||
|
||||
✅ **PASS** - All required fields present and properly formatted:
|
||||
|
||||
- name: "Create Workflow" ✓
|
||||
- description: "Create structured standalone workflows using markdown-based step architecture" ✓
|
||||
- web_bundle: true (proper boolean format) ✓
|
||||
|
||||
### Role Description Violations
|
||||
|
||||
✅ **PASS** - Role description follows template format:
|
||||
|
||||
- Partnership language present: "This is a partnership, not a client-vendor relationship" ✓
|
||||
- Expertise clearly defined: "workflow architect and systems designer" ✓
|
||||
- User expertise identified: "domain knowledge and specific workflow requirements" ✓
|
||||
- Collaboration directive: "Work together as equals" ✓
|
||||
|
||||
### Workflow Architecture Violations
|
||||
|
||||
🚫 **CRITICAL VIOLATION** - Core Principles deviate from template:
|
||||
|
||||
**Template requires:** "Each step of the overall goal is a self contained instruction file that you will adhere too 1 file as directed at a time"
|
||||
|
||||
**Target has:** "Each step is a self contained instruction file that is a part of an overall workflow that must be followed exactly"
|
||||
|
||||
- **Severity:** Critical
|
||||
- **Template Reference:** "Core Principles" section in workflow-template.md
|
||||
- **Specific Fix:** Replace with exact template wording: "Each step of the overall goal is a self contained instruction file that you will adhere too 1 file as directed at a time"
|
||||
|
||||
🚫 **CRITICAL VIOLATION** - State Tracking Rule deviates from template:
|
||||
|
||||
**Template requires:** "Document progress in output file frontmatter using `stepsCompleted` array when a workflow produces a document"
|
||||
|
||||
**Target has:** "Document progress in context for compliance checking (no output file frontmatter needed)"
|
||||
|
||||
- **Severity:** Critical
|
||||
- **Template Reference:** "Core Principles" section in workflow-template.md
|
||||
- **Specific Fix:** Replace with exact template wording about stepsCompleted array
|
||||
|
||||
### Initialization Sequence Violations
|
||||
|
||||
🚫 **MAJOR VIOLATION** - Configuration path format incorrect:
|
||||
|
||||
**Template requires:** "{project-root}/.bmad/[MODULE FOLDER]/config.yaml"
|
||||
|
||||
**Target has:** "{project-root}/.bmad/bmb/config.yaml"
|
||||
|
||||
- **Severity:** Major
|
||||
- **Template Reference:** "Module Configuration Loading" section in workflow-template.md
|
||||
- **Specific Fix:** Use proper module variable substitution: "{project-root}/.bmad/bmb/config.yaml" should reference module folder properly
|
||||
|
||||
🚫 **MAJOR VIOLATION** - First step path format inconsistent:
|
||||
|
||||
**Template requires:** Explicit step file path following pattern
|
||||
|
||||
**Target has:** "Load, read the full file and then execute `{workflow_path}/steps/step-01-init.md` to begin the workflow."
|
||||
|
||||
- **Severity:** Major
|
||||
- **Template Reference:** "First Step EXECUTION" section in workflow-template.md
|
||||
- **Specific Fix:** Ensure consistency with template variable substitution patterns
|
||||
|
||||
### Phase 1 Summary
|
||||
|
||||
**Critical Issues:** 2
|
||||
|
||||
- Core Principles text deviation from template
|
||||
- State Tracking rule modification from template standard
|
||||
|
||||
**Major Issues:** 2
|
||||
|
||||
- Configuration path format not following template variable pattern
|
||||
- First step execution path needs consistency check
|
||||
|
||||
**Minor Issues:** 0
|
||||
|
||||
### Phase 1 Recommendations
|
||||
|
||||
**Priority 1 - Critical Fixes:**
|
||||
|
||||
1. Replace Core Principles text with exact template wording
|
||||
2. Restore State Tracking rule to template standard about stepsCompleted array
|
||||
|
||||
**Priority 2 - Major Fixes:**
|
||||
|
||||
1. Review and standardize all path variable usage to follow template patterns
|
||||
2. Ensure consistency in variable substitution throughout workflow
|
||||
|
||||
## Phase 2: Step Validation Results
|
||||
|
||||
### Template Adherence Analysis
|
||||
|
||||
**Reference Standard:** step-template.md
|
||||
**Total Steps Analyzed:** 9
|
||||
|
||||
### Critical Violations Summary
|
||||
|
||||
**Step 01-init.md:**
|
||||
|
||||
- Missing `outputFile` in frontmatter - Template Reference: line 22
|
||||
- Uses auto-proceed menu instead of standard A/P/C pattern - Template Reference: lines 106-123
|
||||
- Missing "CRITICAL STEP COMPLETION NOTE" section - Template Reference: line 126
|
||||
|
||||
**Step 02-gather.md:**
|
||||
|
||||
- Missing `outputFile` in frontmatter - Template Reference: line 22
|
||||
- Incorrect `nextStepFile` path format - Template Reference: line 19
|
||||
|
||||
**Steps 03-09 (All Steps):**
|
||||
|
||||
- Missing `outputFile` in frontmatter - Template Reference: line 22
|
||||
- Non-standard step naming (missing short descriptive names) - Template Reference: line 9
|
||||
- Steps 08-09 missing `workflowFile` in frontmatter - Template Reference: line 21
|
||||
|
||||
### Major Violations Summary
|
||||
|
||||
**Frontmatter Structure (All Steps):**
|
||||
|
||||
- Missing `altStep{Y}` comment pattern - Template Reference: line 20
|
||||
- Missing Task References section structure - Template Reference: lines 24-27
|
||||
- Missing Template References section structure - Template Reference: lines 29-33
|
||||
- Missing Data References section structure - Template Reference: lines 35-37
|
||||
|
||||
**Menu Pattern Violations:**
|
||||
|
||||
- Step 01: Custom auto-proceed menu instead of standard A/P/C - Template Reference: lines 106-123
|
||||
- Step 05: Menu text "Continue" instead of "Continue to [next action]" - Template Reference: line 115
|
||||
- Step 07: Custom "Build Complete" menu instead of A/P/C pattern - Template Reference: lines 106-123
|
||||
- Step 08: Missing A and P options in menu - Template Reference: lines 106-123
|
||||
- Step 09: Uses T/M/D pattern instead of standard A/P/C - Template Reference: lines 106-123
|
||||
|
||||
### Path Variable Inconsistencies
|
||||
|
||||
- Inconsistent use of `{bmad_folder}` vs `.bmad` in paths across all steps
|
||||
- Missing `outputFile` variable definitions - Template Reference: line 22
|
||||
- Step 04 uses non-standard `nextStepFormDesign` and `nextStepDesign` variables
|
||||
|
||||
### Minor Violations Summary
|
||||
|
||||
**Content Structure:**
|
||||
|
||||
- Missing "CONTEXT BOUNDARIES" section titles - Template Reference: line 82
|
||||
- Missing "EXECUTION PROTOCOLS" section titles - Template Reference: line 75
|
||||
- Non-standard section naming in multiple steps - Template Reference: line 89
|
||||
|
||||
### Phase 2 Summary
|
||||
|
||||
**Critical Issues:** 15
|
||||
|
||||
- 9 missing outputFile variables
|
||||
- 6 non-standard menu patterns
|
||||
- Multiple missing required sections
|
||||
|
||||
**Major Issues:** 36
|
||||
|
||||
- 36 frontmatter structure violations across all steps
|
||||
- 5 menu pattern deviations
|
||||
- Numerous path variable inconsistencies
|
||||
|
||||
**Minor Issues:** 27
|
||||
|
||||
- Section naming inconsistencies
|
||||
- Missing template-required section titles
|
||||
|
||||
**Most Common Violations:**
|
||||
|
||||
1. Missing `outputFile` in frontmatter (9 occurrences)
|
||||
2. Non-standard menu patterns (6 occurrences)
|
||||
3. Missing Task/Template/Data References sections (27 occurrences)
|
||||
|
||||
### Overall Step Compliance Score
|
||||
|
||||
**Overall Workflow Step Compliance: 68%**
|
||||
|
||||
- Step 01: 65% compliant
|
||||
- Step 02: 70% compliant
|
||||
- Steps 03-09: 63-72% compliant each
|
||||
|
||||
## Phase 3: File Size, Formatting, and Data Validation Results
|
||||
|
||||
### File Size Analysis
|
||||
|
||||
**Workflow File:**
|
||||
|
||||
- workflow.md: 2.9K - ✅ **Optimal** - Excellent performance and maintainability
|
||||
|
||||
**Step Files Distribution:**
|
||||
|
||||
- **Optimal (≤5K):** 3 files
|
||||
- step-09-complete.md: 5.1K
|
||||
- step-01-init.md: 5.3K
|
||||
- **Good (5K-7K):** 1 file
|
||||
- step-04-plan-review.md: 6.6K
|
||||
- **Acceptable (7K-10K):** 5 files
|
||||
- step-02-gather.md: 7.8K
|
||||
- step-08-review.md: 7.9K
|
||||
- step-03-tools-configuration.md: 7.9K
|
||||
- step-05-output-format-design.md: 8.2K
|
||||
- step-06-design.md: 9.0K
|
||||
- **Acceptable (approaching concern):** 1 file
|
||||
- step-07-build.md: 10.0K (monitor if additional features added)
|
||||
|
||||
**CSV Data Files:**
|
||||
|
||||
- Total CSV files: 0
|
||||
- No data files present requiring validation
|
||||
|
||||
### Markdown Formatting Validation
|
||||
|
||||
**✅ Strengths:**
|
||||
|
||||
- Consistent frontmatter structure across all files
|
||||
- Proper heading hierarchy (H1→H2→H3) maintained
|
||||
- Standardized section patterns across all steps
|
||||
- Proper code block formatting in 7 of 10 files
|
||||
- Consistent bullet point usage throughout
|
||||
|
||||
**⚠️ Minor Issues:**
|
||||
|
||||
- File size range significant (2.9K to 10K) but all within acceptable limits
|
||||
- step-07-build.md approaching concern threshold at 10K
|
||||
|
||||
### Performance Impact Assessment
|
||||
|
||||
**Overall workflow performance:** ✅ **Excellent**
|
||||
|
||||
- All files optimized for performance
|
||||
- No files requiring immediate size optimization
|
||||
- Well-structured maintainable codebase
|
||||
- Professional markdown implementation
|
||||
|
||||
**Most critical file size issue:** None - all files within acceptable ranges
|
||||
**Primary formatting concerns:** None significant - excellent consistency maintained
|
||||
|
||||
## Phase 4: Intent vs Prescriptive Spectrum Analysis
|
||||
|
||||
### Current Position Assessment
|
||||
|
||||
**Analyzed Position:** Balanced Middle (leaning prescriptive)
|
||||
**Evidence:**
|
||||
|
||||
- Highly structured step files with mandatory execution rules
|
||||
- Specific sequence enforcement and template compliance requirements
|
||||
- Conversational partnership model within rigid structural constraints
|
||||
- Limited creative adaptation but maintains collaborative dialogue
|
||||
**Confidence Level:** High - Clear patterns in implementation demonstrate intentional structure
|
||||
|
||||
### Expert Recommendation
|
||||
|
||||
**Recommended Position:** Balanced Middle (slightly toward prescriptive)
|
||||
**Reasoning:**
|
||||
|
||||
- Workflow creation needs systematic structure for BMAD compliance
|
||||
- Template requirements demand prescriptive elements
|
||||
- Creative aspects need room for user ownership
|
||||
- Best workflows emerge from structured collaboration
|
||||
**Workflow Type Considerations:**
|
||||
- Primary purpose: Creating structured, repeatable workflows
|
||||
- User expectations: Reliable, consistent BMAD-compliant outputs
|
||||
- Success factors: Template compliance and systematic approach
|
||||
- Risk level: Medium - compliance critical for ecosystem coherence
|
||||
|
||||
### User Decision
|
||||
|
||||
**Selected Position:** Option 1 - Keep Current Position (Balanced Middle leaning prescriptive)
|
||||
**Rationale:** User prefers to maintain current structured approach
|
||||
**Implementation Guidance:**
|
||||
|
||||
- Continue with current balance of structure and collaborative dialogue
|
||||
- Maintain template compliance requirements
|
||||
- Preserve systematic execution patterns
|
||||
- Keep conversational elements within prescribed framework
|
||||
|
||||
### Spectrum Validation Results
|
||||
|
||||
✅ Spectrum position is intentional and understood
|
||||
✅ User educated on implications of their choice
|
||||
✅ Implementation guidance provided for maintaining position
|
||||
✅ Decision documented for future reference
|
||||
|
||||
## Phase 5: Web Search & Subprocess Optimization Analysis
|
||||
|
||||
### Web Search Optimization
|
||||
|
||||
**Unnecessary Searches Identified:** 1
|
||||
|
||||
- Step 6 loads 5+ template files individually - these are static templates that rarely change
|
||||
**Essential Searches to Keep:** 2
|
||||
- CSV tool database in Step 3 (dynamic data)
|
||||
- Reference workflow example in Step 2 (concrete patterns)
|
||||
**Optimization Recommendations:**
|
||||
- Implement template caching to eliminate repeated file loads
|
||||
- Use selective CSV loading based on workflow type
|
||||
**Estimated Time Savings:** 5-7 seconds per workflow execution
|
||||
|
||||
### Subprocess Optimization Opportunities
|
||||
|
||||
**Parallel Processing:** 2 major opportunities identified
|
||||
|
||||
1. **Step 3 + Step 5 Parallelization:** Tools configuration and output format design can run simultaneously
|
||||
- Savings: 5-10 minutes per workflow
|
||||
2. **Background Template Loading:** Pre-load templates during Step 1 idle time
|
||||
- Savings: Eliminate design-phase delays
|
||||
|
||||
**Batch Processing:** 1 grouping opportunity
|
||||
|
||||
- Parallel file generation in Step 7 (workflow.md, step files, templates)
|
||||
- Savings: 60-80% reduction in build time for multi-step workflows
|
||||
|
||||
**Background Processing:** 2 task opportunities
|
||||
|
||||
- Template pre-loading during initialization
|
||||
- File generation coordination during build phase
|
||||
|
||||
**Performance Improvement:** 40-60% estimated overall improvement
|
||||
|
||||
### Resource Efficiency Analysis
|
||||
|
||||
**Context Optimization:**
|
||||
|
||||
- JIT context loading: 40-60% reduction in token usage
|
||||
- Reference content deduplication: 8,000-12,000 token savings
|
||||
- Step file size reduction: 30-50% smaller files
|
||||
|
||||
**LLM Resource Usage:**
|
||||
|
||||
- Smart context pruning by workflow phase
|
||||
- Compact step instructions with external references
|
||||
- Selective context loading based on current phase
|
||||
|
||||
**User Experience Impact:**
|
||||
|
||||
- Significantly faster workflow creation (15-25 minutes saved)
|
||||
- More responsive interaction patterns
|
||||
- Reduced waiting times during critical phases
|
||||
|
||||
### Implementation Recommendations
|
||||
|
||||
**Immediate Actions (High Impact, Low Risk):**
|
||||
|
||||
1. Implement template caching in workflow.md frontmatter
|
||||
2. Optimize CSV loading with category filtering
|
||||
3. Reduce step file sizes by moving examples to reference files
|
||||
|
||||
**Strategic Improvements (High Impact, Medium Risk):**
|
||||
|
||||
1. Parallelize Step 3 and Step 5 execution
|
||||
2. Implement JIT context loading by phase
|
||||
3. Background template pre-loading
|
||||
|
||||
**Future Enhancements (Highest Impact, Higher Risk):**
|
||||
|
||||
1. Parallel file generation with sub-process coordination
|
||||
2. Smart context pruning across workflow phases
|
||||
3. Complete reference deduplication system
|
||||
|
||||
## Phase 6: Holistic Workflow Analysis Results
|
||||
|
||||
### Flow Validation
|
||||
|
||||
**Completion Path Analysis:**
|
||||
|
||||
- ✅ All steps have clear continuation paths
|
||||
- ✅ No orphaned steps or dead ends
|
||||
- ⚠️ Minor issue: Steps 07 and 09 use non-standard menu patterns
|
||||
|
||||
**Sequential Logic:**
|
||||
|
||||
- ✅ Logical workflow creation progression maintained
|
||||
- ✅ Dependencies properly structured
|
||||
- ⚠️ Steps 05-06 could potentially be consolidated
|
||||
|
||||
### Goal Alignment
|
||||
|
||||
**Alignment Score:** 85%
|
||||
|
||||
**Stated Goal:** "Create structured, repeatable standalone workflows through collaborative conversation and step-by-step guidance"
|
||||
|
||||
**Actual Implementation:** Creates structured workflows with heavy emphasis on template compliance and systematic validation
|
||||
|
||||
**Gap Analysis:**
|
||||
|
||||
- Workflow emphasizes structure over creativity (aligned with spectrum choice)
|
||||
- Template compliance heavier than user guidance (may need balance adjustment)
|
||||
|
||||
### Meta-Workflow Failure Analysis
|
||||
|
||||
**Issues That Should Have Been Prevented by create-workflow:**
|
||||
|
||||
1. Missing outputFile variables in all 9 steps (Critical)
|
||||
2. Non-standard menu patterns in Steps 07 and 09 (Major)
|
||||
3. Missing Task/Template/Data references across all steps (Major)
|
||||
4. Path variable inconsistencies throughout workflow (Major)
|
||||
5. Step naming violations for Steps 05-09 (Major)
|
||||
6. Core Principles text deviation from template (Critical)
|
||||
|
||||
**Recommended Meta-Workflow Improvements:**
|
||||
|
||||
- Add frontmatter completeness validation during creation
|
||||
- Implement path variable format checking
|
||||
- Include menu pattern enforcement validation
|
||||
- Add Intent vs Prescriptive spectrum selection in Step 01
|
||||
- Validate template compliance before finalization
|
||||
|
||||
---
|
||||
|
||||
## Executive Summary
|
||||
|
||||
**Overall Compliance Status:** PARTIAL
|
||||
**Critical Issues:** 17 - Must be fixed immediately
|
||||
**Major Issues:** 36 - Significantly impacts quality/maintainability
|
||||
**Minor Issues:** 27 - Standards compliance improvements
|
||||
|
||||
**Overall Compliance Score:** 68% based on template adherence
|
||||
|
||||
## Severity-Ranked Fix Recommendations
|
||||
|
||||
### IMMEDIATE - Critical (Must Fix for Functionality)
|
||||
|
||||
1. **Missing outputFile Variables** - Files: All 9 step files
|
||||
- **Problem:** Critical frontmatter field missing from all steps
|
||||
- **Template Reference:** step-template.md line 22
|
||||
- **Fix:** Add `outputFile: '{output_folder}/workflow-plan-{project_name}.md'` to each step
|
||||
- **Impact:** Workflow cannot produce output without this field
|
||||
|
||||
2. **Core Principles Deviation** - File: workflow.md
|
||||
- **Problem:** Text modified from template standard
|
||||
- **Template Reference:** workflow-template.md Core Principles section
|
||||
- **Fix:** Replace with exact template wording
|
||||
- **Impact:** Violates fundamental BMAD workflow architecture
|
||||
|
||||
3. **Non-Standard Menu Patterns** - Files: step-07-build.md, step-09-complete.md
|
||||
- **Problem:** Custom menu formats instead of A/P/C pattern
|
||||
- **Template Reference:** step-template.md lines 106-123
|
||||
- **Fix:** Standardize to A/P/C menu pattern
|
||||
- **Impact:** Breaks user experience consistency
|
||||
|
||||
### HIGH PRIORITY - Major (Significantly Impacts Quality)
|
||||
|
||||
1. **Missing Task/Template/Data References** - Files: All 9 step files
|
||||
- **Problem:** Required frontmatter sections missing
|
||||
- **Template Reference:** step-template.md lines 24-37
|
||||
- **Fix:** Add all required reference sections with proper comments
|
||||
- **Impact:** Violates template structure standards
|
||||
|
||||
2. **Step Naming Violations** - Files: steps 05-09
|
||||
- **Problem:** Missing short descriptive names in step filenames
|
||||
- **Template Reference:** step-template.md line 9
|
||||
- **Fix:** Rename to include descriptive names (e.g., step-05-output-format.md)
|
||||
- **Impact:** Inconsistent with BMAD naming conventions
|
||||
|
||||
3. **Path Variable Inconsistencies** - Files: All steps
|
||||
- **Problem:** Mixed use of `{bmad_folder}` vs `.bmad`
|
||||
- **Template Reference:** workflow-template.md path patterns
|
||||
- **Fix:** Standardize to template variable patterns
|
||||
- **Impact:** Installation flexibility and maintainability
|
||||
|
||||
### MEDIUM PRIORITY - Minor (Standards Compliance)
|
||||
|
||||
1. **Missing Section Titles** - Files: All steps
|
||||
- **Problem:** Missing "CONTEXT BOUNDARIES" and "EXECUTION PROTOCOLS" titles
|
||||
- **Template Reference:** step-template.md lines 75, 82
|
||||
- **Fix:** Add missing section titles
|
||||
- **Impact:** Template compliance
|
||||
|
||||
## Automated Fix Options
|
||||
|
||||
### Fixes That Can Be Applied Automatically
|
||||
|
||||
- Add outputFile variables to all step frontmatter
|
||||
- Add missing section titles
|
||||
- Standardize path variable usage
|
||||
- Add Task/Template/Data reference section skeletons
|
||||
|
||||
### Fixes Requiring Manual Review
|
||||
|
||||
- Core Principles text restoration (needs exact template matching)
|
||||
- Menu pattern standardization (custom logic may be intentional)
|
||||
- Step renaming (requires file system changes and reference updates)
|
||||
|
||||
## Next Steps Recommendation
|
||||
|
||||
**Recommended Approach:**
|
||||
|
||||
1. Fix all Critical issues immediately (workflow may not function)
|
||||
2. Address Major issues for reliability and maintainability
|
||||
3. Implement Minor issues for full standards compliance
|
||||
4. Update meta-workflows to prevent future violations
|
||||
|
||||
**Estimated Effort:**
|
||||
|
||||
- Critical fixes: 2-3 hours
|
||||
- Major fixes: 4-6 hours
|
||||
- Minor fixes: 1-2 hours
|
||||
@@ -18,6 +18,20 @@ export default [
|
||||
'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/**',
|
||||
],
|
||||
},
|
||||
|
||||
|
||||
438
package-lock.json
generated
438
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "bmad-method",
|
||||
"version": "6.0.0-alpha.12",
|
||||
"version": "6.0.0-alpha.15",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "bmad-method",
|
||||
"version": "6.0.0-alpha.12",
|
||||
"version": "6.0.0-alpha.15",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@kayvan/markdown-tree-parser": "^1.6.1",
|
||||
@@ -42,6 +42,7 @@
|
||||
"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",
|
||||
@@ -1672,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",
|
||||
@@ -1798,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",
|
||||
@@ -2793,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",
|
||||
@@ -3298,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",
|
||||
@@ -4421,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",
|
||||
@@ -4444,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",
|
||||
@@ -4490,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",
|
||||
@@ -5478,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",
|
||||
@@ -5490,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",
|
||||
@@ -5544,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",
|
||||
@@ -5988,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",
|
||||
@@ -6060,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",
|
||||
@@ -6146,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",
|
||||
@@ -6868,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",
|
||||
@@ -7156,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",
|
||||
@@ -8040,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",
|
||||
@@ -8047,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",
|
||||
|
||||
13
package.json
13
package.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "bmad-method",
|
||||
"version": "6.0.0-alpha.13",
|
||||
"version": "6.0.0-alpha.16",
|
||||
"description": "Breakthrough Method of Agile AI-driven Development",
|
||||
"keywords": [
|
||||
"agile",
|
||||
@@ -24,7 +24,6 @@
|
||||
"bmad-method": "tools/bmad-npx-wrapper.js"
|
||||
},
|
||||
"scripts": {
|
||||
"bmad:agent-install": "node tools/cli/bmad-cli.js agent-install",
|
||||
"bmad:install": "node tools/cli/bmad-cli.js install",
|
||||
"bmad:status": "node tools/cli/bmad-cli.js status",
|
||||
"bundle": "node tools/cli/bundlers/bundle-web.js all",
|
||||
@@ -34,13 +33,14 @@
|
||||
"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",
|
||||
"test": "npm run test:schemas && npm run test:install && npm run validate:bundles && npm run validate:schemas && npm run lint && npm run format:check",
|
||||
"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",
|
||||
@@ -56,7 +56,11 @@
|
||||
"eslint --fix",
|
||||
"npm run format:fix"
|
||||
],
|
||||
"*.{json,md}": [
|
||||
"*.json": [
|
||||
"npm run format:fix"
|
||||
],
|
||||
"*.md": [
|
||||
"markdownlint-cli2",
|
||||
"npm run format:fix"
|
||||
]
|
||||
},
|
||||
@@ -90,6 +94,7 @@
|
||||
"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",
|
||||
|
||||
@@ -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-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
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
agent:
|
||||
metadata:
|
||||
id: "{bmad_folder}/core/agents/bmad-master.md"
|
||||
id: ".bmad/core/agents/bmad-master.md"
|
||||
name: "BMad Master"
|
||||
title: "BMad Master Executor, Knowledge Custodian, and Workflow Orchestrator"
|
||||
icon: "🧙"
|
||||
@@ -17,22 +17,22 @@ agent:
|
||||
|
||||
# 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"
|
||||
- "Load into memory {project-root}/.bmad/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"
|
||||
action: "list all tasks from {project-root}/.bmad/_cfg/task-manifest.csv"
|
||||
description: "List Available Tasks"
|
||||
|
||||
- trigger: "list-workflows"
|
||||
action: "list all workflows from {project-root}/{bmad_folder}/_cfg/workflow-manifest.csv"
|
||||
action: "list all workflows from {project-root}/.bmad/_cfg/workflow-manifest.csv"
|
||||
description: "List Workflows"
|
||||
|
||||
- trigger: "party-mode"
|
||||
exec: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md"
|
||||
exec: "{project-root}/.bmad/core/workflows/party-mode/workflow.md"
|
||||
description: "Group chat with all agents"
|
||||
|
||||
# Empty prompts section (no custom prompts for this agent)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<agent id="{bmad_folder}/core/agents/bmad-orchestrator.md" name="BMad Orchestrator" title="BMad Web Orchestrator" icon="🎭" localskip="true">
|
||||
<agent id=".bmad/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
|
||||
<step n="2">CRITICAL: This bundle contains ALL agents as XML nodes with id=".bmad/..." 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>
|
||||
@@ -16,7 +16,7 @@
|
||||
<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
|
||||
2. CRITICAL: Always LOAD .bmad/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
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
<handler type="validate-workflow">
|
||||
When menu item has: validate-workflow="workflow-id"
|
||||
1. MUST LOAD {bmad_folder}/core/tasks/validate-workflow.xml
|
||||
1. MUST LOAD .bmad/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
|
||||
@@ -105,9 +105,9 @@
|
||||
<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
|
||||
<item cmd="*party-mode" exec=".bmad/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="*advanced-elicitation" task=".bmad/core/tasks/advanced-elicitation.xml">Push agent to perform advanced elicitation</item>
|
||||
<item cmd="*exit">Exit current session</item>
|
||||
</menu>
|
||||
</agent>
|
||||
@@ -1,13 +1,6 @@
|
||||
# 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"
|
||||
@@ -23,7 +16,11 @@ document_output_language:
|
||||
default: "{communication_language}"
|
||||
result: "{value}"
|
||||
|
||||
# This is the folder where all generated AI Output documents from workflows will default be sa
|
||||
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"
|
||||
@@ -72,8 +72,8 @@ Provides the **HOW** (universal knowledge) while agents provide the **WHAT** (do
|
||||
|
||||
```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'
|
||||
helpers: '{project-root}/.bmad/core/resources/excalidraw/excalidraw-helpers.md'
|
||||
json_validation: '{project-root}/.bmad/core/resources/excalidraw/validate-json-instructions.md'
|
||||
```
|
||||
|
||||
**Domain-specific additions:**
|
||||
@@ -99,8 +99,8 @@ flowchart:
|
||||
|
||||
```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'
|
||||
helpers: '{project-root}/.bmad/core/resources/excalidraw/excalidraw-helpers.md'
|
||||
json_validation: '{project-root}/.bmad/core/resources/excalidraw/validate-json-instructions.md'
|
||||
```
|
||||
|
||||
**Domain-specific additions:**
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Purpose
|
||||
|
||||
Load external .excalidrawlib files from https://libraries.excalidraw.com or custom sources.
|
||||
Load external .excalidrawlib files from <https://libraries.excalidraw.com> or custom sources.
|
||||
|
||||
## Planned Capabilities
|
||||
|
||||
@@ -34,7 +34,7 @@ libraries:
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
This will be developed when agents need to leverage the extensive library ecosystem available at https://libraries.excalidraw.com.
|
||||
This will be developed when agents need to leverage the extensive library ecosystem available at <https://libraries.excalidraw.com>.
|
||||
|
||||
Hundreds of pre-built component libraries exist for:
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<task id="{bmad_folder}/core/tasks/advanced-elicitation.xml" name="Advanced Elicitation" standalone="true"
|
||||
methods="{project-root}/{bmad_folder}/core/tasks/advanced-elicitation-methods.csv"
|
||||
agent-party="{project-root}/{bmad_folder}/_cfg/agent-manifest.csv">
|
||||
<task id=".bmad/core/tasks/advanced-elicitation.xml" name="Advanced Elicitation" standalone="true"
|
||||
methods="{project-root}/.bmad/core/tasks/advanced-elicitation-methods.csv"
|
||||
agent-party="{project-root}/.bmad/_cfg/agent-manifest.csv">
|
||||
<llm critical="true">
|
||||
<i>MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER</i>
|
||||
<i>DO NOT skip steps or change the sequence</i>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<task id="{bmad_folder}/core/tasks/index-docs" name="Index Docs"
|
||||
<task id=".bmad/core/tasks/index-docs" name="Index Docs"
|
||||
description="Generates or updates an index.md of all documents in the specified directory" webskip="true" standalone="true">
|
||||
<llm critical="true">
|
||||
<i>MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER</i>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<task id="{bmad_folder}/core/tasks/validate-workflow.xml" name="Validate Workflow Output">
|
||||
<task id=".bmad/core/tasks/validate-workflow.xml" name="Validate Workflow Output">
|
||||
<objective>Run a checklist against a document with thorough analysis and produce a validation report</objective>
|
||||
|
||||
<inputs>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<task id="{bmad_folder}/core/tasks/workflow.xml" name="Execute Workflow">
|
||||
<task id=".bmad/core/tasks/workflow.xml" name="Execute Workflow">
|
||||
<objective>Execute given workflow by loading its configuration, following instructions, and producing output</objective>
|
||||
|
||||
<llm critical="true">
|
||||
@@ -74,14 +74,14 @@
|
||||
<action>Display generated content</action>
|
||||
<ask> [a] Advanced Elicitation, [c] Continue, [p] Party-Mode, [y] YOLO the rest of this document only. WAIT for response. <if
|
||||
response="a">
|
||||
<action>Start the advanced elicitation workflow {project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml</action>
|
||||
<action>Start the advanced elicitation workflow {project-root}/.bmad/core/tasks/advanced-elicitation.xml</action>
|
||||
</if>
|
||||
<if
|
||||
response="c">
|
||||
<action>Continue to next step</action>
|
||||
</if>
|
||||
<if response="p">
|
||||
<action>Start the party-mode workflow {project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml</action>
|
||||
<action>Start the party-mode workflow {project-root}/.bmad/core/workflows/party-mode/workflow.yaml</action>
|
||||
</if>
|
||||
<if
|
||||
response="y">
|
||||
@@ -225,7 +225,7 @@
|
||||
<critical-rules>
|
||||
• This is the complete workflow execution engine
|
||||
• You MUST Follow instructions exactly as written
|
||||
• The workflow execution engine is governed by: {project-root}/{bmad_folder}/core/tasks/workflow.xml
|
||||
• The workflow execution engine is governed by: {project-root}/.bmad/core/tasks/workflow.xml
|
||||
• You MUST have already loaded and processed: {installed_path}/workflow.yaml
|
||||
• This workflow uses INTENT-DRIVEN PLANNING - adapt organically to product type and context
|
||||
• YOU ARE FACILITATING A CONVERSATION With a user to produce a final document step by step. The whole process is meant to be
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<tool id="{bmad_folder}/core/tasks/shard-doc" name="Shard Document"
|
||||
<tool id=".bmad/core/tasks/shard-doc" name="Shard Document"
|
||||
description="Splits large markdown documents into smaller, organized files based on level 2 (default) sections" webskip="true"
|
||||
standalone="true">
|
||||
<objective>Split large markdown documents into smaller, organized files based on level 2 sections using @kayvan/markdown-tree-parser tool</objective>
|
||||
|
||||
@@ -135,7 +135,7 @@ _[Content based on conversation about session parameters and facilitator approac
|
||||
|
||||
When user selects approach, append the session overview content directly to `{output_folder}/analysis/brainstorming-session-{{date}}.md` using the structure from above.
|
||||
|
||||
#### E. Continue to Technique Selection
|
||||
### E. Continue to Technique Selection
|
||||
|
||||
"**Session setup complete!** I have a clear understanding of your goals and can select the perfect techniques for your brainstorming needs.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: Brainstorming Session
|
||||
name: brainstorming-session
|
||||
description: Facilitate interactive brainstorming sessions using diverse creative techniques and ideation methods
|
||||
context_file: '' # Optional context file path for project-specific guidance
|
||||
---
|
||||
@@ -28,7 +28,7 @@ This uses **micro-file architecture** for disciplined execution:
|
||||
|
||||
### Configuration Loading
|
||||
|
||||
Load config from `{project-root}/{bmad_folder}/bmm/config.yaml` and resolve:
|
||||
Load config from `{project-root}/.bmad/core/config.yaml` and resolve:
|
||||
|
||||
- `project_name`, `output_folder`, `user_name`
|
||||
- `communication_language`, `document_output_language`, `user_skill_level`
|
||||
@@ -36,7 +36,7 @@ Load config from `{project-root}/{bmad_folder}/bmm/config.yaml` and resolve:
|
||||
|
||||
### Paths
|
||||
|
||||
- `installed_path` = `{project-root}/{bmad_folder}/core/workflows/brainstorming`
|
||||
- `installed_path` = `{project-root}/.bmad/core/workflows/brainstorming`
|
||||
- `template_path` = `{installed_path}/template.md`
|
||||
- `brain_techniques_path` = `{installed_path}/brain-methods.csv`
|
||||
- `default_output_file` = `{output_folder}/analysis/brainstorming-session-{{date}}.md`
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
## CONTEXT BOUNDARIES:
|
||||
|
||||
- Agent manifest CSV is available at `{project-root}/{bmad_folder}/_cfg/agent-manifest.csv`
|
||||
- Agent manifest CSV is available at `{project-root}/.bmad/_cfg/agent-manifest.csv`
|
||||
- User configuration from config.yaml is loaded and resolved
|
||||
- Party mode is standalone interactive workflow
|
||||
- All agent data is available for conversation orchestration
|
||||
@@ -37,7 +37,7 @@ Begin agent loading process:
|
||||
|
||||
**Agent Manifest Loading:**"
|
||||
|
||||
Load and parse the agent manifest CSV from `{project-root}/{bmad_folder}/_cfg/agent-manifest.csv`
|
||||
Load and parse the agent manifest CSV from `{project-root}/.bmad/_cfg/agent-manifest.csv`
|
||||
|
||||
### 2. Extract Agent Data
|
||||
|
||||
|
||||
@@ -95,7 +95,6 @@ stepsCompleted: [1, 2, 3]
|
||||
workflowType: 'party-mode'
|
||||
user_name: '{{user_name}}'
|
||||
date: '{{date}}'
|
||||
current_year: '{{current_year}}'
|
||||
agents_loaded: true
|
||||
party_active: false
|
||||
workflow_completed: true
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
name: Party Mode
|
||||
name: party-mode
|
||||
description: Orchestrates group discussions between all installed BMAD agents, enabling natural multi-agent conversations
|
||||
---
|
||||
|
||||
@@ -27,17 +27,17 @@ This uses **micro-file architecture** with **sequential conversation orchestrati
|
||||
|
||||
### Configuration Loading
|
||||
|
||||
Load config from `{project-root}/{bmad_folder}/bmm/config.yaml` and resolve:
|
||||
Load config from `{project-root}/.bmad/core/config.yaml` and resolve:
|
||||
|
||||
- `project_name`, `output_folder`, `user_name`
|
||||
- `communication_language`, `document_output_language`, `user_skill_level`
|
||||
- `date`, `current_year`, `current_month` as system-generated values
|
||||
- Agent manifest path: `{project-root}/{bmad_folder}/_cfg/agent-manifest.csv`
|
||||
- `date` as a system-generated value
|
||||
- Agent manifest path: `{project-root}/.bmad/_cfg/agent-manifest.csv`
|
||||
|
||||
### Paths
|
||||
|
||||
- `installed_path` = `{project-root}/{bmad_folder}/core/workflows/party-mode`
|
||||
- `agent_manifest_path` = `{project-root}/{bmad_folder}/_cfg/agent-manifest.csv`
|
||||
- `installed_path` = `{project-root}/.bmad/core/workflows/party-mode`
|
||||
- `agent_manifest_path` = `{project-root}/.bmad/_cfg/agent-manifest.csv`
|
||||
- `standalone_mode` = `true` (party mode is an interactive workflow)
|
||||
|
||||
---
|
||||
@@ -118,7 +118,6 @@ stepsCompleted: [1]
|
||||
workflowType: 'party-mode'
|
||||
user_name: '{{user_name}}'
|
||||
date: '{{date}}'
|
||||
current_year: '{{current_year}}'
|
||||
agents_loaded: true
|
||||
party_active: true
|
||||
exit_triggers: ['*exit', 'goodbye', 'end party', 'quit']
|
||||
|
||||
@@ -24,13 +24,13 @@ Specialized tools and workflows for creating, customizing, and extending BMad co
|
||||
|
||||
**Active Workflows** (Step-File Architecture)
|
||||
|
||||
- Location: `src/modules/bmb/workflows/`
|
||||
- Location: `bmb/workflows/create-agent/`
|
||||
- 5 core workflows with 41 step files total
|
||||
- Template-based execution with JIT loading
|
||||
|
||||
**Legacy Workflows** (Being Migrated)
|
||||
|
||||
- Location: `src/modules/bmb/workflows-legacy/`
|
||||
- Location: `bmb/workflows/create-agent-legacy/`
|
||||
- Module-specific workflows pending conversion to step-file architecture
|
||||
|
||||
### 📚 Documentation
|
||||
|
||||
76
src/modules/bmb/_module-installer/installer.js
Normal file
76
src/modules/bmb/_module-installer/installer.js
Normal file
@@ -0,0 +1,76 @@
|
||||
const fs = require('fs-extra');
|
||||
const path = require('node:path');
|
||||
const chalk = require('chalk');
|
||||
|
||||
/**
|
||||
* BMB Module Installer
|
||||
* Sets up custom agent and workflow locations for the BMad Builder module
|
||||
*
|
||||
* @param {Object} options - Installation options
|
||||
* @param {string} options.projectRoot - The root directory of the target project
|
||||
* @param {Object} options.config - Module configuration from module.yaml
|
||||
* @param {Object} options.coreConfig - Core configuration containing user_name
|
||||
* @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
|
||||
*/
|
||||
async function install(options) {
|
||||
const { projectRoot, config, coreConfig, installedIDEs, logger } = options;
|
||||
|
||||
try {
|
||||
logger.log(chalk.blue('🔧 Setting up BMB Module...'));
|
||||
|
||||
// Generate custom.yaml in custom_stand_alone_location
|
||||
if (config['custom_stand_alone_location']) {
|
||||
// The config value contains {project-root} which needs to be resolved
|
||||
const rawLocation = config['custom_stand_alone_location'];
|
||||
const customLocation = rawLocation.replace('{project-root}', projectRoot);
|
||||
const customDestPath = path.join(customLocation, 'custom.yaml');
|
||||
|
||||
logger.log(chalk.cyan(` Setting up custom agents at: ${customLocation}`));
|
||||
|
||||
// Ensure the directory exists
|
||||
await fs.ensureDir(customLocation);
|
||||
|
||||
// Generate the custom.yaml content
|
||||
const userName = (coreConfig && coreConfig.user_name) || 'my';
|
||||
const customContent = `code: my-custom-bmad
|
||||
name: "${userName}-Custom-BMad: Sample Stand Alone Custom Agents and Workflows"
|
||||
default_selected: true
|
||||
`;
|
||||
|
||||
// Write the custom.yaml file (only if it doesn't exist to preserve user changes)
|
||||
if (await fs.pathExists(customDestPath)) {
|
||||
logger.log(chalk.yellow(` ✓ custom.yaml already exists at ${customDestPath}`));
|
||||
} else {
|
||||
await fs.writeFile(customDestPath, customContent, 'utf8');
|
||||
logger.log(chalk.green(` ✓ Created custom.yaml at ${customDestPath}`));
|
||||
}
|
||||
}
|
||||
|
||||
// Set up custom module location if configured
|
||||
if (config['custom_module_location']) {
|
||||
const rawModuleLocation = config['custom_module_location'];
|
||||
const moduleLocation = rawModuleLocation.replace('{project-root}', projectRoot);
|
||||
|
||||
logger.log(chalk.cyan(` Setting up custom modules at: ${moduleLocation}`));
|
||||
|
||||
// Ensure the directory exists
|
||||
await fs.ensureDir(moduleLocation);
|
||||
logger.log(chalk.green(` ✓ Created modules directory at ${moduleLocation}`));
|
||||
}
|
||||
|
||||
// Handle IDE-specific configurations if needed
|
||||
if (installedIDEs && installedIDEs.length > 0) {
|
||||
logger.log(chalk.cyan(` Configuring BMB for IDEs: ${installedIDEs.join(', ')}`));
|
||||
}
|
||||
|
||||
logger.log(chalk.green('✓ BMB Module setup complete'));
|
||||
return true;
|
||||
} catch (error) {
|
||||
logger.error(chalk.red(`Error setting up BMB module: ${error.message}`));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { install };
|
||||
@@ -4,7 +4,7 @@
|
||||
agent:
|
||||
webskip: true
|
||||
metadata:
|
||||
id: "{bmad_folder}/bmb/agents/bmad-builder.md"
|
||||
id: ".bmad/bmb/agents/bmad-builder.md"
|
||||
name: BMad Builder
|
||||
title: BMad Builder
|
||||
icon: 🧙
|
||||
@@ -24,48 +24,71 @@ agent:
|
||||
|
||||
discussion: true
|
||||
conversational_knowledge:
|
||||
- agents: "{project-root}/{bmad_folder}/bmb/docs/agents/kb.csv"
|
||||
- workflows: "{project-root}/{bmad_folder}/bmb/docs/workflows/kb.csv"
|
||||
- modules: "{project-root}/{bmad_folder}/bmb/docs/modules/kb.csv"
|
||||
- agents: "{project-root}/.bmad/bmb/docs/agents/kb.csv"
|
||||
- workflows: "{project-root}/.bmad/bmb/docs/workflows/kb.csv"
|
||||
- modules: "{project-root}/.bmad/bmb/docs/modules/kb.csv"
|
||||
|
||||
menu:
|
||||
- multi: "[CA] Create, [EA] Edit, or [VA] Validate BMAD agents with best practices"
|
||||
- multi: "[CA] Create, [EA] Edit, or [VA] Validate with Compliance CheckBMAD agents with best practices"
|
||||
triggers:
|
||||
- create-agent:
|
||||
- input: CA or fuzzy match create agent
|
||||
- route: "{project-root}/{bmad_folder}/bmb/workflows/create-agent/workflow.md"
|
||||
- route: "{project-root}/.bmad/bmb/workflows/create-agent/workflow.md"
|
||||
- data: null
|
||||
- type: exec
|
||||
- edit-agent:
|
||||
- input: EA or fuzzy match edit agent
|
||||
- route: "{project-root}/{bmad_folder}/bmb/workflows/edit-agent/workflow.md"
|
||||
- route: "{project-root}/.bmad/bmb/workflows/edit-agent/workflow.md"
|
||||
- data: null
|
||||
- type: exec
|
||||
- run-agent-compliance-check:
|
||||
- input: VA or fuzzy match validate agent
|
||||
- route: "{project-root}/{bmad_folder}/bmb/workflows/agent-compliance-check/workflow.md"
|
||||
- route: "{project-root}/.bmad/bmb/workflows/agent-compliance-check/workflow.md"
|
||||
- data: null
|
||||
- type: exec
|
||||
|
||||
- multi: "[CW] Create, [EW] Edit, or [VW] Validate BMAD workflows with best practices"
|
||||
- multi: "[CW] Create, [EW] Edit, or [VW] Validate with Compliance CheckBMAD workflows with best practices"
|
||||
triggers:
|
||||
- create-workflow:
|
||||
- input: CW or fuzzy match create workflow
|
||||
- route: "{project-root}/{bmad_folder}/bmb/workflows/create-workflow/workflow.md"
|
||||
- route: "{project-root}/.bmad/bmb/workflows/create-workflow/workflow.md"
|
||||
- data: null
|
||||
- type: exec
|
||||
- edit-workflow:
|
||||
- input: EW or fuzzy match edit workflow
|
||||
- route: "{project-root}/{bmad_folder}/bmb/workflows/edit-workflow/workflow.md"
|
||||
- route: "{project-root}/.bmad/bmb/workflows/edit-workflow/workflow.md"
|
||||
- data: null
|
||||
- type: exec
|
||||
- run-workflow-compliance-check:
|
||||
- input: VW or fuzzy match validate workflow
|
||||
- route: "{project-root}/{bmad_folder}/bmb/workflows/workflow-compliance-check/workflow.md"
|
||||
- route: "{project-root}/.bmad/bmb/workflows/workflow-compliance-check/workflow.md"
|
||||
- data: null
|
||||
- type: exec
|
||||
|
||||
- trigger: create-module
|
||||
workflow: "{project-root}/{bmad_folder}/bmb/workflows/create-module/workflow.yaml"
|
||||
description: Create a complete BMAD compatible module (custom agents and workflows)
|
||||
|
||||
- trigger: edit-module
|
||||
workflow: "{project-root}/{bmad_folder}/bmb/workflows/edit-module/workflow.yaml"
|
||||
description: Edit existing modules (structure, agents, workflows, documentation)
|
||||
- multi: "[BM] Brainstorm, [PBM] Product Brief, [CM] Create, [EM] Edit or [VM] Validate with Compliance Check BMAD modules with best practices"
|
||||
triggers:
|
||||
- brainstorm-module:
|
||||
- input: BM or fuzzy match brainstorm module
|
||||
- route: "{project-root}/.bmad/bmb/workflows/brainstorm-module/workflow.md"
|
||||
- data: null
|
||||
- type: exec
|
||||
- product-brief-module:
|
||||
- input: PBM or fuzzy match product brief module
|
||||
- route: "{project-root}/.bmad/bmb/workflows/product-brief-module/workflow.md"
|
||||
- data: null
|
||||
- type: exec
|
||||
- create-module:
|
||||
- input: CM or fuzzy match create module
|
||||
- route: "{project-root}/.bmad/bmb/workflows/create-module/workflow.md"
|
||||
- data: null
|
||||
- type: exec
|
||||
- edit-module:
|
||||
- input: EM or fuzzy match edit module
|
||||
- route: "{project-root}/.bmad/bmb/workflows/edit-module/workflow.md"
|
||||
- data: null
|
||||
- type: exec
|
||||
- run-module-compliance-check:
|
||||
- input: VM or fuzzy match validate module
|
||||
- route: "{project-root}/.bmad/bmb/workflows/module-compliance-check/workflow.md"
|
||||
- data: null
|
||||
- type: exec
|
||||
|
||||
@@ -35,7 +35,7 @@ rex.agent.yaml ← Persona name (users might rename to "Max")
|
||||
**Pattern:**
|
||||
|
||||
- Filename: `{role-or-function}.agent.yaml` (kebab-case)
|
||||
- Metadata ID: `{bmad_folder}/{module}/agents/{role-or-function}.md`
|
||||
- Metadata ID: `.bmad/{module}/agents/{role-or-function}.md`
|
||||
- Persona Name: User-customizable in metadata or customize.yaml
|
||||
|
||||
**Example:**
|
||||
@@ -44,7 +44,7 @@ rex.agent.yaml ← Persona name (users might rename to "Max")
|
||||
# File: presentation-master.agent.yaml
|
||||
agent:
|
||||
metadata:
|
||||
id: '{bmad_folder}/cis/agents/presentation-master.md'
|
||||
id: '.bmad/cis/agents/presentation-master.md'
|
||||
name: Caravaggio # ← Users can change this to "Pablo" or "Vince"
|
||||
title: Visual Communication & Presentation Expert
|
||||
```
|
||||
|
||||
@@ -65,11 +65,11 @@ For module agents orchestrating multi-step processes.
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: create-prd
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/prd/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/prd/workflow.yaml'
|
||||
description: 'Create Product Requirements Document'
|
||||
|
||||
- trigger: brainstorm
|
||||
workflow: '{project-root}/{bmad_folder}/core/workflows/brainstorming/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/core/workflows/brainstorming/workflow.yaml'
|
||||
description: 'Guided brainstorming session'
|
||||
|
||||
# Placeholder for unimplemented workflows
|
||||
@@ -92,11 +92,11 @@ For executing tasks directly.
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: validate
|
||||
exec: '{project-root}/{bmad_folder}/core/tasks/validate-workflow.xml'
|
||||
exec: '{project-root}/.bmad/core/tasks/validate-workflow.xml'
|
||||
description: 'Validate document structure'
|
||||
|
||||
- trigger: advanced-elicitation
|
||||
exec: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
|
||||
exec: '{project-root}/.bmad/core/tasks/advanced-elicitation.xml'
|
||||
description: 'Advanced elicitation techniques'
|
||||
```
|
||||
|
||||
@@ -113,8 +113,8 @@ For document generation with templates.
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: create-brief
|
||||
exec: '{project-root}/{bmad_folder}/core/tasks/create-doc.xml'
|
||||
tmpl: '{project-root}/{bmad_folder}/bmm/templates/brief.md'
|
||||
exec: '{project-root}/.bmad/core/tasks/create-doc.xml'
|
||||
tmpl: '{project-root}/.bmad/bmm/templates/brief.md'
|
||||
description: 'Create a Product Brief'
|
||||
```
|
||||
|
||||
@@ -131,8 +131,8 @@ Universal attribute for supplementary information.
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: team-standup
|
||||
exec: '{project-root}/{bmad_folder}/bmm/tasks/standup.xml'
|
||||
data: '{project-root}/{bmad_folder}/_cfg/agent-manifest.csv'
|
||||
exec: '{project-root}/.bmad/bmm/tasks/standup.xml'
|
||||
data: '{project-root}/.bmad/_cfg/agent-manifest.csv'
|
||||
description: 'Run team standup'
|
||||
|
||||
- trigger: analyze-metrics
|
||||
@@ -154,12 +154,12 @@ Control visibility based on deployment target:
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: git-flow
|
||||
exec: '{project-root}/{bmad_folder}/bmm/tasks/git-flow.xml'
|
||||
exec: '{project-root}/.bmad/bmm/tasks/git-flow.xml'
|
||||
description: 'Git workflow operations'
|
||||
ide-only: true # Only in IDE environments
|
||||
|
||||
- trigger: advanced-elicitation
|
||||
exec: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
|
||||
exec: '{project-root}/.bmad/core/tasks/advanced-elicitation.xml'
|
||||
description: 'Advanced elicitation'
|
||||
web-only: true # Only in web bundles
|
||||
```
|
||||
@@ -251,20 +251,20 @@ menu:
|
||||
menu:
|
||||
# Analysis Phase
|
||||
- trigger: brainstorm
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/1-analysis/brainstorm/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/1-analysis/brainstorm/workflow.yaml'
|
||||
description: 'Brainstorm ideas'
|
||||
|
||||
- trigger: research
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/1-analysis/research/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/1-analysis/research/workflow.yaml'
|
||||
description: 'Conduct research'
|
||||
|
||||
# Planning Phase
|
||||
- trigger: prd
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/2-planning/prd/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/2-planning/prd/workflow.yaml'
|
||||
description: 'Create PRD'
|
||||
|
||||
- trigger: architecture
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/2-planning/architecture/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/2-planning/architecture/workflow.yaml'
|
||||
description: 'Design architecture'
|
||||
```
|
||||
|
||||
@@ -362,8 +362,8 @@ prompts:
|
||||
|
||||
```yaml
|
||||
# GOOD - Portable paths
|
||||
workflow: "{project-root}/{bmad_folder}/bmm/workflows/prd/workflow.yaml"
|
||||
exec: "{project-root}/{bmad_folder}/core/tasks/validate.xml"
|
||||
workflow: "{project-root}/.bmad/bmm/workflows/prd/workflow.yaml"
|
||||
exec: "{project-root}/.bmad/core/tasks/validate.xml"
|
||||
data: "{project-root}/_data/metrics.csv"
|
||||
|
||||
# BAD - Hardcoded paths
|
||||
@@ -374,8 +374,8 @@ exec: "../../../core/tasks/validate.xml"
|
||||
### Available Variables
|
||||
|
||||
- `{project-root}` - Project root directory
|
||||
- `{bmad_folder}` - BMAD installation folder
|
||||
- `{agent-folder}` - Agent installation directory (Expert agents)
|
||||
- `.bmad` - BMAD installation folder
|
||||
- `{agent_sidecar_folder}` - Agent installation directory (Expert agents)
|
||||
- `{output_folder}` - Document output location
|
||||
- `{user_name}` - User's name from config
|
||||
- `{communication_language}` - Language preference
|
||||
@@ -415,9 +415,9 @@ menu:
|
||||
|
||||
```yaml
|
||||
critical_actions:
|
||||
- 'Load {agent-folder}/memories.md'
|
||||
- 'Follow {agent-folder}/instructions.md'
|
||||
- 'ONLY access {agent-folder}/'
|
||||
- 'Load ./memories.md'
|
||||
- 'Follow ./instructions.md'
|
||||
- 'ONLY access ./'
|
||||
|
||||
prompts:
|
||||
- id: reflect
|
||||
@@ -431,7 +431,7 @@ menu:
|
||||
description: 'Write journal entry'
|
||||
|
||||
- trigger: save
|
||||
action: 'Update {agent-folder}/memories.md with session insights'
|
||||
action: 'Update ./memories.md with session insights'
|
||||
description: "Save today's session"
|
||||
|
||||
- trigger: patterns
|
||||
@@ -444,23 +444,23 @@ menu:
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: workflow-init
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/workflow-status/init/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/workflow-status/init/workflow.yaml'
|
||||
description: 'Initialize workflow path (START HERE)'
|
||||
|
||||
- trigger: brainstorm
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/1-analysis/brainstorm/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/1-analysis/brainstorm/workflow.yaml'
|
||||
description: 'Guided brainstorming'
|
||||
|
||||
- trigger: prd
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/2-planning/prd/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/2-planning/prd/workflow.yaml'
|
||||
description: 'Create PRD'
|
||||
|
||||
- trigger: architecture
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/2-planning/architecture/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/2-planning/architecture/workflow.yaml'
|
||||
description: 'Design architecture'
|
||||
|
||||
- trigger: party-mode
|
||||
workflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/core/workflows/party-mode/workflow.yaml'
|
||||
description: 'Multi-agent discussion'
|
||||
```
|
||||
|
||||
|
||||
@@ -57,9 +57,9 @@ agent:
|
||||
- My approach to memory and learning
|
||||
|
||||
critical_actions:
|
||||
- 'Load COMPLETE file {agent-folder}/{agent-name}-sidecar/memories.md and remember all past insights'
|
||||
- 'Load COMPLETE file {agent-folder}/{agent-name}-sidecar/instructions.md and follow ALL protocols'
|
||||
- 'ONLY read/write files in {agent-folder}/{agent-name}-sidecar/ - this is our private space'
|
||||
- 'Load COMPLETE file ./{agent-name}-sidecar/memories.md and remember all past insights'
|
||||
- 'Load COMPLETE file ./{agent-name}-sidecar/instructions.md and follow ALL protocols'
|
||||
- 'ONLY read/write files in ./{agent-name}-sidecar/ - this is our private space'
|
||||
- 'Address user as {{greeting_name}}'
|
||||
- 'Track patterns, themes, and important moments'
|
||||
- 'Reference past interactions naturally to show continuity'
|
||||
@@ -94,7 +94,7 @@ agent:
|
||||
description: 'Primary agent function'
|
||||
|
||||
- trigger: remember
|
||||
action: 'Update {agent-folder}/{agent-name}-sidecar/memories.md with session insights'
|
||||
action: 'Update ./{agent-name}-sidecar/memories.md with session insights'
|
||||
description: 'Save what we discussed today'
|
||||
|
||||
- trigger: patterns
|
||||
@@ -102,7 +102,7 @@ agent:
|
||||
description: 'Recall patterns from past interactions'
|
||||
|
||||
- trigger: insight
|
||||
action: 'Document breakthrough in {agent-folder}/{agent-name}-sidecar/breakthroughs.md'
|
||||
action: 'Document breakthrough in ./{agent-name}-sidecar/breakthroughs.md'
|
||||
description: 'Record a significant insight'
|
||||
|
||||
install_config:
|
||||
@@ -184,9 +184,9 @@ Add domain-specific documentation here.
|
||||
|
||||
```yaml
|
||||
critical_actions:
|
||||
- 'Load COMPLETE file {agent-folder}/{sidecar}/memories.md and remember all past insights'
|
||||
- 'Load COMPLETE file {agent-folder}/{sidecar}/instructions.md and follow ALL protocols'
|
||||
- 'ONLY read/write files in {agent-folder}/{sidecar}/ - this is our private space'
|
||||
- 'Load COMPLETE file ./{sidecar}/memories.md and remember all past insights'
|
||||
- 'Load COMPLETE file ./{sidecar}/instructions.md and follow ALL protocols'
|
||||
- 'ONLY read/write files in ./{sidecar}/ - this is our private space'
|
||||
```
|
||||
|
||||
**Key patterns:**
|
||||
@@ -196,7 +196,7 @@ critical_actions:
|
||||
- **Memory integration** - Past context becomes part of current session
|
||||
- **Protocol adherence** - Ensures consistent behavior
|
||||
|
||||
### {agent-folder} Variable
|
||||
### {agent_sidecar_folder} Variable
|
||||
|
||||
Special variable resolved during installation:
|
||||
|
||||
@@ -211,9 +211,9 @@ Same as simple agents, PLUS:
|
||||
1. **Critical actions become numbered activation steps**
|
||||
|
||||
```xml
|
||||
<step n="4">Load COMPLETE file {agent-folder}/memories.md...</step>
|
||||
<step n="5">Load COMPLETE file {agent-folder}/instructions.md...</step>
|
||||
<step n="6">ONLY read/write files in {agent-folder}/...</step>
|
||||
<step n="4">Load COMPLETE file ./memories.md...</step>
|
||||
<step n="5">Load COMPLETE file ./instructions.md...</step>
|
||||
<step n="6">ONLY read/write files in ./...</step>
|
||||
```
|
||||
|
||||
2. **Sidecar files copied during installation**
|
||||
@@ -223,7 +223,7 @@ Same as simple agents, PLUS:
|
||||
|
||||
## Reference Example
|
||||
|
||||
See: `src/modules/bmb/reference/agents/expert-examples/journal-keeper/`
|
||||
See: `bmb/reference/agents/expert-examples/journal-keeper/`
|
||||
|
||||
Features demonstrated:
|
||||
|
||||
@@ -260,7 +260,7 @@ The installer:
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: save
|
||||
action: "Update {agent-folder}/sidecar/memories.md with today's session insights"
|
||||
action: "Update ./sidecar/memories.md with today's session insights"
|
||||
description: 'Save session to memory'
|
||||
```
|
||||
|
||||
@@ -281,7 +281,7 @@ prompts:
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: insight
|
||||
action: 'Document in {agent-folder}/sidecar/breakthroughs.md with date, context, significance'
|
||||
action: 'Document in ./sidecar/breakthroughs.md with date, context, significance'
|
||||
description: 'Record meaningful insight'
|
||||
```
|
||||
|
||||
@@ -291,7 +291,7 @@ menu:
|
||||
|
||||
```yaml
|
||||
critical_actions:
|
||||
- 'ONLY read/write files in {agent-folder}/sidecar/ - NO OTHER FOLDERS'
|
||||
- 'ONLY read/write files in ./sidecar/ - NO OTHER FOLDERS'
|
||||
```
|
||||
|
||||
### User Space Access
|
||||
@@ -305,15 +305,15 @@ critical_actions:
|
||||
|
||||
```yaml
|
||||
critical_actions:
|
||||
- 'Load knowledge from {agent-folder}/knowledge/ but NEVER modify'
|
||||
- 'Write ONLY to {agent-folder}/sessions/'
|
||||
- 'Load knowledge from ./knowledge/ but NEVER modify'
|
||||
- 'Write ONLY to ./sessions/'
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Load sidecar files in critical_actions** - Must be explicit and MANDATORY
|
||||
2. **Enforce domain restrictions** - Clear boundaries prevent scope creep
|
||||
3. **Use {agent-folder} paths** - Portable across installations
|
||||
3. **Use {agent_sidecar_folder} paths** - Portable across installations
|
||||
4. **Design for memory growth** - Structure sidecar files for accumulation
|
||||
5. **Reference past naturally** - Don't dump memory, weave it into conversation
|
||||
6. **Separate concerns** - Memories, instructions, knowledge in distinct files
|
||||
@@ -356,8 +356,8 @@ identity: |
|
||||
- [ ] Sidecar folder structure created and populated
|
||||
- [ ] memories.md has clear section structure
|
||||
- [ ] instructions.md contains core directives
|
||||
- [ ] Menu actions reference {agent-folder} correctly
|
||||
- [ ] File paths use {agent-folder} variable
|
||||
- [ ] Menu actions reference {agent_sidecar_folder} correctly
|
||||
- [ ] File paths use {agent_sidecar_folder} variable
|
||||
- [ ] Install config personalizes sidecar references
|
||||
- [ ] Agent folder named consistently: `{agent-name}/`
|
||||
- [ ] YAML file named: `{agent-name}.agent.yaml`
|
||||
|
||||
@@ -18,7 +18,7 @@ Comprehensive guides for each agent type (choose based on use case):
|
||||
|
||||
## Reference Examples
|
||||
|
||||
Production-ready examples in `/src/modules/bmb/reference/agents/`:
|
||||
Production-ready examples in `/bmb/reference/agents/`:
|
||||
|
||||
**Simple Agents** (`simple-examples/`)
|
||||
|
||||
@@ -37,7 +37,7 @@ Production-ready examples in `/src/modules/bmb/reference/agents/`:
|
||||
|
||||
For installing standalone simple and expert agents, see:
|
||||
|
||||
- [Custom Agent Installation](/docs/custom-agent-installation.md)
|
||||
- [Custom Agent Installation](/docs/custom-content-installation.md)
|
||||
|
||||
## Key Concepts
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ Compiles to:
|
||||
```yaml
|
||||
agent:
|
||||
metadata:
|
||||
id: '{bmad_folder}/{module-code}/agents/{agent-name}.md'
|
||||
id: '.bmad/{module-code}/agents/{agent-name}.md'
|
||||
name: 'Persona Name'
|
||||
title: 'Professional Title'
|
||||
icon: 'emoji'
|
||||
@@ -41,29 +41,29 @@ agent:
|
||||
|
||||
menu:
|
||||
- trigger: workflow-action
|
||||
workflow: '{project-root}/{bmad_folder}/{module-code}/workflows/{workflow-name}/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/{module-code}/workflows/{workflow-name}/workflow.yaml'
|
||||
description: 'Execute module workflow'
|
||||
|
||||
- trigger: another-workflow
|
||||
workflow: '{project-root}/{bmad_folder}/core/workflows/{workflow-name}/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/core/workflows/{workflow-name}/workflow.yaml'
|
||||
description: 'Execute core workflow'
|
||||
|
||||
- trigger: task-action
|
||||
exec: '{project-root}/{bmad_folder}/{module-code}/tasks/{task-name}.xml'
|
||||
exec: '{project-root}/.bmad/{module-code}/tasks/{task-name}.xml'
|
||||
description: 'Execute module task'
|
||||
|
||||
- trigger: cross-module
|
||||
workflow: '{project-root}/{bmad_folder}/other-module/workflows/{workflow-name}/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/other-module/workflows/{workflow-name}/workflow.yaml'
|
||||
description: 'Execute workflow from another module'
|
||||
|
||||
- trigger: with-template
|
||||
exec: '{project-root}/{bmad_folder}/core/tasks/create-doc.xml'
|
||||
tmpl: '{project-root}/{bmad_folder}/{module-code}/templates/{template-name}.md'
|
||||
exec: '{project-root}/.bmad/core/tasks/create-doc.xml'
|
||||
tmpl: '{project-root}/.bmad/{module-code}/templates/{template-name}.md'
|
||||
description: 'Create document from template'
|
||||
|
||||
- trigger: with-data
|
||||
exec: '{project-root}/{bmad_folder}/{module-code}/tasks/{task-name}.xml'
|
||||
data: '{project-root}/{bmad_folder}/_cfg/agent-manifest.csv'
|
||||
exec: '{project-root}/.bmad/{module-code}/tasks/{task-name}.xml'
|
||||
data: '{project-root}/.bmad/_cfg/agent-manifest.csv'
|
||||
description: 'Execute task with data file'
|
||||
```
|
||||
|
||||
@@ -71,7 +71,7 @@ agent:
|
||||
|
||||
### Metadata
|
||||
|
||||
- **id**: Path with `{bmad_folder}` variable (resolved at install time)
|
||||
- **id**: Path with `.bmad` variable (resolved at install time)
|
||||
- **name**: Agent persona name
|
||||
- **title**: Professional role
|
||||
- **icon**: Single emoji
|
||||
@@ -101,7 +101,7 @@ persona:
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: create-prd
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/prd/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/prd/workflow.yaml'
|
||||
description: 'Create Product Requirements Document'
|
||||
```
|
||||
|
||||
@@ -112,7 +112,7 @@ Invokes BMAD workflow engine to execute multi-step processes.
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: validate
|
||||
exec: '{project-root}/{bmad_folder}/core/tasks/validate-workflow.xml'
|
||||
exec: '{project-root}/.bmad/core/tasks/validate-workflow.xml'
|
||||
description: 'Validate document structure'
|
||||
```
|
||||
|
||||
@@ -123,8 +123,8 @@ Executes single-operation tasks.
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: create-brief
|
||||
exec: '{project-root}/{bmad_folder}/core/tasks/create-doc.xml'
|
||||
tmpl: '{project-root}/{bmad_folder}/bmm/templates/brief.md'
|
||||
exec: '{project-root}/.bmad/core/tasks/create-doc.xml'
|
||||
tmpl: '{project-root}/.bmad/bmm/templates/brief.md'
|
||||
description: 'Create a Product Brief from template'
|
||||
```
|
||||
|
||||
@@ -135,8 +135,8 @@ Combines task execution with template file.
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: team-standup
|
||||
exec: '{project-root}/{bmad_folder}/bmm/tasks/standup.xml'
|
||||
data: '{project-root}/{bmad_folder}/_cfg/agent-manifest.csv'
|
||||
exec: '{project-root}/.bmad/bmm/tasks/standup.xml'
|
||||
data: '{project-root}/.bmad/_cfg/agent-manifest.csv'
|
||||
description: 'Run team standup with agent roster'
|
||||
```
|
||||
|
||||
@@ -160,12 +160,12 @@ Control visibility based on platform:
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: advanced-elicitation
|
||||
exec: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
|
||||
exec: '{project-root}/.bmad/core/tasks/advanced-elicitation.xml'
|
||||
description: 'Advanced elicitation techniques'
|
||||
web-only: true # Only shows in web bundle
|
||||
|
||||
- trigger: git-operations
|
||||
exec: '{project-root}/{bmad_folder}/bmm/tasks/git-flow.xml'
|
||||
exec: '{project-root}/.bmad/bmm/tasks/git-flow.xml'
|
||||
description: 'Git workflow operations'
|
||||
ide-only: true # Only shows in IDE environments
|
||||
```
|
||||
@@ -175,7 +175,7 @@ menu:
|
||||
### Core Variables
|
||||
|
||||
- `{project-root}` - Root directory of installed project
|
||||
- `{bmad_folder}` - BMAD installation folder (usually `.bmad`)
|
||||
- `.bmad` - BMAD installation folder (usually `.bmad`)
|
||||
- `{user_name}` - User's name from module config
|
||||
- `{communication_language}` - Language preference
|
||||
- `{output_folder}` - Document output directory
|
||||
@@ -186,7 +186,7 @@ menu:
|
||||
|
||||
```yaml
|
||||
# GOOD
|
||||
workflow: "{project-root}/{bmad_folder}/bmm/workflows/prd/workflow.yaml"
|
||||
workflow: "{project-root}/.bmad/bmm/workflows/prd/workflow.yaml"
|
||||
|
||||
# BAD
|
||||
workflow: "/Users/john/project/.bmad/bmm/workflows/prd/workflow.yaml"
|
||||
@@ -203,12 +203,12 @@ Module agents use the same injection process as simple agents:
|
||||
2. **Activation block** with standard steps
|
||||
3. **Menu handlers** based on usage (workflow, exec, tmpl, data)
|
||||
4. **Rules section** for consistent behavior
|
||||
5. **Auto-injected** *help and *exit commands
|
||||
5. **Auto-injected** \*help and \*exit commands
|
||||
|
||||
**Key difference:** Module agents load **module-specific config** instead of core config:
|
||||
|
||||
```xml
|
||||
<step n="2">Load and read {project-root}/{bmad_folder}/{module}/config.yaml...</step>
|
||||
<step n="2">Load and read {project-root}/.bmad/{module}/config.yaml...</step>
|
||||
```
|
||||
|
||||
## Reference Examples
|
||||
@@ -252,15 +252,15 @@ Agents load this at activation for consistent behavior.
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: init
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/workflow-init/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/workflow-init/workflow.yaml'
|
||||
description: 'Initialize workflow path (START HERE)'
|
||||
|
||||
- trigger: status
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/workflow-status/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/workflow-status/workflow.yaml'
|
||||
description: 'Check current workflow status'
|
||||
|
||||
- trigger: next-step
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/next-step/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/next-step/workflow.yaml'
|
||||
description: 'Execute next workflow in sequence'
|
||||
```
|
||||
|
||||
@@ -270,20 +270,20 @@ menu:
|
||||
menu:
|
||||
# Phase 1: Analysis
|
||||
- trigger: brainstorm
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/1-analysis/brainstorm/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/1-analysis/brainstorm/workflow.yaml'
|
||||
description: 'Guided brainstorming session'
|
||||
|
||||
- trigger: research
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/1-analysis/research/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/1-analysis/research/workflow.yaml'
|
||||
description: 'Market and technical research'
|
||||
|
||||
# Phase 2: Planning
|
||||
- trigger: prd
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/2-planning/prd/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/2-planning/prd/workflow.yaml'
|
||||
description: 'Create PRD'
|
||||
|
||||
- trigger: architecture
|
||||
workflow: '{project-root}/{bmad_folder}/bmm/workflows/2-planning/architecture/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/bmm/workflows/2-planning/architecture/workflow.yaml'
|
||||
description: 'Design architecture'
|
||||
```
|
||||
|
||||
@@ -292,24 +292,23 @@ menu:
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: party-mode
|
||||
workflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/core/workflows/party-mode/workflow.yaml'
|
||||
description: 'Bring all agents together'
|
||||
|
||||
- trigger: brainstorm
|
||||
workflow: '{project-root}/{bmad_folder}/cis/workflows/brainstorming/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/cis/workflows/brainstorming/workflow.yaml'
|
||||
description: 'Use CIS brainstorming techniques'
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Use {bmad_folder} paths** - Portable across installations
|
||||
2. **Organize workflows by phase** - Clear progression for users
|
||||
3. **Include workflow-status** - Help users track progress
|
||||
4. **Reference module config** - Consistent behavior
|
||||
5. **No Handlebars templating** - Module agents are fixed personalities
|
||||
6. **Professional personas** - Match module purpose
|
||||
7. **Clear trigger names** - Self-documenting commands
|
||||
8. **Group related workflows** - Logical menu organization
|
||||
1. **Organize workflows by phase** - Clear progression for users
|
||||
2. **Include workflow-status** - Help users track progress
|
||||
3. **Reference module config** - Consistent behavior
|
||||
4. **No Handlebars templating** - Module agents are fixed personalities
|
||||
5. **Professional personas** - Match module purpose
|
||||
6. **Clear trigger names** - Self-documenting commands
|
||||
7. **Group related workflows** - Logical menu organization
|
||||
|
||||
## Common Patterns
|
||||
|
||||
@@ -318,7 +317,7 @@ menu:
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: start
|
||||
workflow: '{project-root}/{bmad_folder}/{module}/workflows/init/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/{module}/workflows/init/workflow.yaml'
|
||||
description: 'Start new project (BEGIN HERE)'
|
||||
```
|
||||
|
||||
@@ -327,7 +326,7 @@ menu:
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: status
|
||||
workflow: '{project-root}/{bmad_folder}/{module}/workflows/status/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/{module}/workflows/status/workflow.yaml'
|
||||
description: 'Check workflow progress'
|
||||
```
|
||||
|
||||
@@ -336,27 +335,27 @@ menu:
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: party
|
||||
workflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/core/workflows/party-mode/workflow.yaml'
|
||||
description: 'Multi-agent discussion'
|
||||
```
|
||||
|
||||
## Module Agent vs Simple/Expert
|
||||
|
||||
| Aspect | Module Agent | Simple/Expert Agent |
|
||||
| ------------- | -------------------------------- | ------------------------------- |
|
||||
| Location | `{bmad_folder}/{module}/agents/` | `{bmad_folder}/custom/agents/` |
|
||||
| Persona | Fixed, professional | Customizable via install_config |
|
||||
| Handlebars | No templating | Yes, extensive |
|
||||
| Menu actions | Workflows, tasks, templates | Prompts, inline actions |
|
||||
| Configuration | Module config.yaml | Core config or none |
|
||||
| Purpose | Professional tooling | Personal utilities |
|
||||
| Aspect | Module Agent | Simple/Expert Agent |
|
||||
| ------------- | --------------------------- | ------------------------------- |
|
||||
| Location | `.bmad/{module}/agents/` | `.bmad/custom/agents/` |
|
||||
| Persona | Fixed, professional | Customizable via install_config |
|
||||
| Handlebars | No templating | Yes, extensive |
|
||||
| Menu actions | Workflows, tasks, templates | Prompts, inline actions |
|
||||
| Configuration | Module config.yaml | Core config or none |
|
||||
| Purpose | Professional tooling | Personal utilities |
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
- [ ] Valid YAML syntax
|
||||
- [ ] Metadata includes `module: "{module-code}"`
|
||||
- [ ] id uses `{bmad_folder}/{module}/agents/{name}.md`
|
||||
- [ ] All workflow paths use `{project-root}/{bmad_folder}/` prefix
|
||||
- [ ] id uses `.bmad/{module}/agents/{name}.md`
|
||||
- [ ] All workflow paths use `{project-root}/.bmad/` prefix
|
||||
- [ ] No hardcoded paths
|
||||
- [ ] No duplicate triggers
|
||||
- [ ] Each menu item has description
|
||||
|
||||
@@ -217,9 +217,13 @@ Features demonstrated:
|
||||
# Copy to your project
|
||||
cp /path/to/commit-poet.agent.yaml .bmad/custom/agents/
|
||||
|
||||
# Install with personalization
|
||||
bmad agent-install
|
||||
# or: npx bmad-method agent-install
|
||||
# Create custom.yaml and install
|
||||
echo "code: my-agent
|
||||
name: My Agent
|
||||
default_selected: true" > custom.yaml
|
||||
|
||||
npx bmad-method install
|
||||
# or: bmad install
|
||||
```
|
||||
|
||||
The installer:
|
||||
|
||||
@@ -7,7 +7,7 @@ ALL agent types can:
|
||||
- ✓ Write to {output_folder}, {project-root}, or anywhere on system
|
||||
- ✓ Update artifacts and files
|
||||
- ✓ Execute bash commands
|
||||
- ✓ Use core variables ({bmad_folder}, {output_folder}, etc.)
|
||||
- ✓ Use core variables (.bmad, {output_folder}, etc.)
|
||||
- ✓ Have complex prompts and logic
|
||||
- ✓ Invoke external tools
|
||||
|
||||
@@ -98,11 +98,11 @@ agent:
|
||||
|
||||
menu:
|
||||
- trigger: implement-story
|
||||
workflow: '{bmad_folder}/bmm/workflows/dev-story/workflow.yaml'
|
||||
workflow: '.bmad/bmm/workflows/dev-story/workflow.yaml'
|
||||
description: Implement user story
|
||||
|
||||
- trigger: refactor
|
||||
workflow: '{bmad_folder}/bmm/workflows/refactor/workflow.yaml'
|
||||
workflow: '.bmad/bmm/workflows/refactor/workflow.yaml'
|
||||
description: Refactor codebase
|
||||
```
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ workflow-folder/
|
||||
Standard variables in step files:
|
||||
|
||||
```yaml
|
||||
workflow_path: '{project-root}/{*bmad_folder*}/bmb/reference/workflows/[workflow-name]'
|
||||
workflow_path: '{project-root}/.bmad/bmb/reference/workflows/[workflow-name]'
|
||||
thisStepFile: '{workflow_path}/steps/step-[N]-[name].md'
|
||||
nextStepFile: '{workflow_path}/steps/step-[N+1]-[name].md'
|
||||
workflowFile: '{workflow_path}/workflow.md'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
propose,type,tool_name,description,url,requires_install
|
||||
always,workflow,party-mode,"Enables collaborative idea generation by managing turn-taking, summarizing contributions, and synthesizing ideas from multiple AI personas in structured conversation sessions about workflow steps or work in progress.",{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md,no
|
||||
always,task,advanced-elicitation,"Employs diverse elicitation strategies such as Socratic questioning, role-playing, and counterfactual analysis to critically evaluate and enhance LLM outputs, forcing assessment from multiple perspectives and techniques.",{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml,no
|
||||
always,task,brainstorming,"Facilitates idea generation by prompting users with targeted questions, encouraging divergent thinking, and synthesizing concepts into actionable insights through collaborative creative exploration.",{project-root}/{bmad_folder}/core/tasks/brainstorming.xml,no
|
||||
always,workflow,party-mode,"Enables collaborative idea generation by managing turn-taking, summarizing contributions, and synthesizing ideas from multiple AI personas in structured conversation sessions about workflow steps or work in progress.",{project-root}/.bmad/core/workflows/party-mode/workflow.md,no
|
||||
always,task,advanced-elicitation,"Employs diverse elicitation strategies such as Socratic questioning, role-playing, and counterfactual analysis to critically evaluate and enhance LLM outputs, forcing assessment from multiple perspectives and techniques.",{project-root}/.bmad/core/tasks/advanced-elicitation.xml,no
|
||||
always,task,brainstorming,"Facilitates idea generation by prompting users with targeted questions, encouraging divergent thinking, and synthesizing concepts into actionable insights through collaborative creative exploration.",{project-root}/.bmad/core/tasks/brainstorming.xml,no
|
||||
always,llm-tool-feature,web-browsing,"Provides LLM with capabilities to perform real-time web searches, extract relevant data, and incorporate current information into responses when up-to-date information is required beyond training knowledge.",,no
|
||||
always,llm-tool-feature,file-io,"Enables LLM to manage file operations such as creating, reading, updating, and deleting files, facilitating seamless data handling, storage, and document management within user environments.",,no
|
||||
always,llm-tool-feature,sub-agents,"Allows LLM to create and manage specialized sub-agents that handle specific tasks or modules within larger workflows, improving efficiency through parallel processing and modular task delegation.",,no
|
||||
|
||||
|
@@ -13,7 +13,7 @@ description: 'Initialize the [workflow-type] workflow by detecting continuation
|
||||
|
||||
<!-- Path Definitions -->
|
||||
|
||||
workflow*path: '{project-root}/{\_bmad_folder*}/[module-path]/workflows/[workflow-name]'
|
||||
workflow\*path: '{project-root}/.bmad/[module-path]/workflows/[workflow-name]'
|
||||
|
||||
# File References (all use {variable} format in file)
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ description: 'Handle workflow continuation from previous session'
|
||||
|
||||
<!-- Path Definitions -->
|
||||
|
||||
workflow*path: '{project-root}/{\_bmad_folder*}/[module-path]/workflows/[workflow-name]'
|
||||
workflow\*path: '{project-root}/.bmad/[module-path]/workflows/[workflow-name]'
|
||||
|
||||
# File References (all use {variable} format in file)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ name: "step-{{stepNumber}}-{{stepName}}"
|
||||
description: "{{stepDescription}}"
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: "{project-root}/{*bmad_folder*}/{{targetModule}}/workflows/{{workflowName}}"
|
||||
workflow_path: "{project-root}/.bmad/{{targetModule}}/workflows/{{workflowName}}"
|
||||
|
||||
# File References
|
||||
thisStepFile: "{workflow_path}/steps/step-{{stepNumber}}-{{stepName}}.md"
|
||||
@@ -16,8 +16,8 @@ outputFile: "{output_folder}/{{outputFileName}}-{project_name}.md"
|
||||
{{/hasOutput}}
|
||||
|
||||
# Task References (list only if used in THIS step file instance and only the ones used, there might be others)
|
||||
advancedElicitationTask: "{project-root}/{*bmad_folder*}/core/tasks/advanced-elicitation.xml"
|
||||
partyModeWorkflow: "{project-root}/{*bmad_folder*}/core/workflows/party-mode/workflow.md"
|
||||
advancedElicitationTask: "{project-root}/.bmad/core/tasks/advanced-elicitation.xml"
|
||||
partyModeWorkflow: "{project-root}/.bmad/core/workflows/party-mode/workflow.md"
|
||||
|
||||
{{#hasTemplates}}
|
||||
# Template References
|
||||
|
||||
@@ -11,7 +11,7 @@ description: '[Brief description of what this step accomplishes]'
|
||||
|
||||
<!-- Path Definitions -->
|
||||
|
||||
workflow*path: '{project-root}/{\_bmad_folder*}/bmb/reference/workflows/[workflow-name]' # the folder the workflow.md file is in
|
||||
workflow\*path: '{project-root}/.bmad/[module]/reference/workflows/[workflow-name]' # the folder the workflow.md file is in
|
||||
|
||||
# File References (all use {variable} format in file)
|
||||
|
||||
@@ -23,8 +23,8 @@ outputFile: '{output_folder}/[output-file-name]-{project_name}.md'
|
||||
|
||||
# Task References (IF THE workflow uses and it makes sense in this step to have these )
|
||||
|
||||
advancedElicitationTask: '{project-root}/{_bmad_folder_}/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/{_bmad_folder_}/core/workflows/party-mode/workflow.md'
|
||||
advancedElicitationTask: '{project-root}/.bmad/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/.bmad/core/workflows/party-mode/workflow.md'
|
||||
|
||||
# Template References (if this step uses a specific templates)
|
||||
|
||||
@@ -149,13 +149,13 @@ ONLY WHEN [C continue option] is selected and [completion requirements], will yo
|
||||
|
||||
<!-- TEMPLATE END-->
|
||||
|
||||
## Common Menu Patterns to use in the final sequence item in a step file.
|
||||
## Common Menu Patterns to use in the final sequence item in a step file
|
||||
|
||||
FYI Again - party mode is useful for the user to reach out and get opinions from other agents.
|
||||
|
||||
Advanced elicitation is use to direct you to think of alternative outputs of a sequence you just performed.
|
||||
|
||||
### Standard Menu - when a sequence in a step results in content produced by the agent or human that could be improved before proceeding.
|
||||
### Standard Menu - when a sequence in a step results in content produced by the agent or human that could be improved before proceeding
|
||||
|
||||
```markdown
|
||||
### N. Present MENU OPTIONS
|
||||
|
||||
@@ -53,7 +53,7 @@ web_bundle: [true/false] # Set to true for inclusion in web bundle builds
|
||||
|
||||
### 1. Module Configuration Loading
|
||||
|
||||
Load and read full config from {project-root}/{_bmad_folder_}/[MODULE FOLDER]/config.yaml and resolve:
|
||||
Load and read full config from {project-root}/.bmad/[MODULE FOLDER]/config.yaml and resolve:
|
||||
|
||||
- `project_name`, `output_folder`, `user_name`, `communication_language`, `document_output_language`, [MODULE VARS]
|
||||
|
||||
@@ -101,4 +101,4 @@ Example: Load, read the full file and then execute `{workflow_path}/steps/step-0
|
||||
|
||||
### NOTE: You can View a real example of a perfect workflow.md file that was created from this template
|
||||
|
||||
`{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition/workflow.md`
|
||||
`{project-root}/.bmad/bmb/reference/workflows/meal-prep-nutrition/workflow.md`
|
||||
|
||||
@@ -49,7 +49,7 @@ This uses **step-file architecture** for disciplined execution:
|
||||
|
||||
### 1. Configuration Loading
|
||||
|
||||
Load and read full config from {project-root}/{_bmad_folder_}/{{targetModule}}/config.yaml and resolve:
|
||||
Load and read full config from {project-root}/.bmad/{{targetModule}}/config.yaml and resolve:
|
||||
|
||||
- `project_name`, `output_folder`, `user_name`, `communication_language`, `document_output_language`
|
||||
|
||||
|
||||
@@ -11,21 +11,15 @@ subheader: "Configure the settings for the BoMB Factory!\nThe agent, workflow an
|
||||
## user_name
|
||||
## communication_language
|
||||
## output_folder
|
||||
## bmad_folder
|
||||
## install_user_docs
|
||||
## kb_install
|
||||
|
||||
custom_agent_location:
|
||||
prompt: "Where do custom agents get created?"
|
||||
default: "{bmad_folder}/custom/src/agents"
|
||||
result: "{project-root}/{value}"
|
||||
|
||||
custom_workflow_location:
|
||||
prompt: "Where do custom workflows get stored?"
|
||||
default: "{bmad_folder}/custom/src/workflows"
|
||||
custom_stand_alone_location:
|
||||
prompt: "Where do custom agents and workflows get stored?"
|
||||
default: "bmad-custom-src"
|
||||
result: "{project-root}/{value}"
|
||||
|
||||
custom_module_location:
|
||||
prompt: "Where do custom modules get stored?"
|
||||
default: "{bmad_folder}/custom/src/modules"
|
||||
default: "bmad-custom-modules-src"
|
||||
result: "{project-root}/{value}"
|
||||
@@ -51,7 +51,7 @@ menu:
|
||||
|
||||
# Direct sidecar file action
|
||||
- trigger: 'insight'
|
||||
action: 'Document this breakthrough in {agent-folder}/journal-keeper-sidecar/breakthroughs.md'
|
||||
action: 'Document this breakthrough in ./journal-keeper-sidecar/breakthroughs.md'
|
||||
description: 'Record a meaningful insight'
|
||||
```
|
||||
|
||||
@@ -63,9 +63,9 @@ Expert Agents MUST load sidecar files explicitly:
|
||||
|
||||
```yaml
|
||||
critical_actions:
|
||||
- 'Load COMPLETE file {agent-folder}/journal-keeper-sidecar/memories.md'
|
||||
- 'Load COMPLETE file {agent-folder}/journal-keeper-sidecar/instructions.md'
|
||||
- 'ONLY read/write files in {agent-folder}/journal-keeper-sidecar/'
|
||||
- 'Load COMPLETE file ./journal-keeper-sidecar/memories.md'
|
||||
- 'Load COMPLETE file ./journal-keeper-sidecar/instructions.md'
|
||||
- 'ONLY read/write files in ./journal-keeper-sidecar/'
|
||||
```
|
||||
|
||||
**Key points:**
|
||||
|
||||
@@ -20,9 +20,9 @@ agent:
|
||||
- Reflection transforms experience into wisdom
|
||||
|
||||
critical_actions:
|
||||
- "Load COMPLETE file {agent-folder}/journal-keeper-sidecar/memories.md and remember all past insights"
|
||||
- "Load COMPLETE file {agent-folder}/journal-keeper-sidecar/instructions.md and follow ALL journaling protocols"
|
||||
- "ONLY read/write files in {agent-folder}/journal-keeper-sidecar/ - this is our private space"
|
||||
- "Load COMPLETE file {agent_sidecar_folder}/journal-keeper-sidecar/memories.md and remember all past insights"
|
||||
- "Load COMPLETE file {agent_sidecar_folder}/journal-keeper-sidecar/instructions.md and follow ALL journaling protocols"
|
||||
- "ONLY read/write files in {agent_sidecar_folder}/journal-keeper-sidecar/ - this is our private space"
|
||||
- "Track mood patterns, recurring themes, and breakthrough moments"
|
||||
- "Reference past entries naturally to show continuity"
|
||||
|
||||
@@ -120,7 +120,7 @@ agent:
|
||||
description: "Write today's journal entry"
|
||||
|
||||
- trigger: quick
|
||||
action: "Save a quick, unstructured entry to {agent-folder}/journal-keeper-sidecar/entries/entry-{date}.md with timestamp and any patterns noticed"
|
||||
action: "Save a quick, unstructured entry to {agent_sidecar_folder}/journal-keeper-sidecar/entries/entry-{date}.md with timestamp and any patterns noticed"
|
||||
description: "Quick capture without prompts"
|
||||
|
||||
- trigger: mood
|
||||
@@ -133,20 +133,20 @@ agent:
|
||||
|
||||
- trigger: gratitude
|
||||
action: "#gratitude-moment"
|
||||
description: "Capture today's gratitudes"
|
||||
description: "Capture today's gratitude"
|
||||
|
||||
- trigger: weekly
|
||||
action: "#weekly-reflection"
|
||||
description: "Reflect on the past week"
|
||||
|
||||
- trigger: insight
|
||||
action: "Document this breakthrough in {agent-folder}/journal-keeper-sidecar/breakthroughs.md with date and significance"
|
||||
action: "Document this breakthrough in {agent_sidecar_folder}/journal-keeper-sidecar/breakthroughs.md with date and significance"
|
||||
description: "Record a meaningful insight"
|
||||
|
||||
- trigger: read-back
|
||||
action: "Load and share entries from {agent-folder}/journal-keeper-sidecar/entries/ for requested timeframe, highlighting themes and growth"
|
||||
action: "Load and share entries from {agent_sidecar_folder}/journal-keeper-sidecar/entries/ for requested timeframe, highlighting themes and growth"
|
||||
description: "Review past entries"
|
||||
|
||||
- trigger: save
|
||||
action: "Update {agent-folder}/journal-keeper-sidecar/memories.md with today's session insights and emotional markers"
|
||||
action: "Update {agent_sidecar_folder}/journal-keeper-sidecar/memories.md with today's session insights and emotional markers"
|
||||
description: "Save what we discussed today"
|
||||
|
||||
@@ -7,7 +7,7 @@ Reference examples for module-integrated agents.
|
||||
Module agents integrate with BMAD module workflows (BMM, CIS, BMB). They:
|
||||
|
||||
- Orchestrate multi-step workflows
|
||||
- Use `{bmad_folder}` path variables
|
||||
- Use `.bmad` path variables
|
||||
- Have fixed professional personas (no install_config)
|
||||
- Reference module-specific configurations
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
agent:
|
||||
metadata:
|
||||
id: "{bmad_folder}/bmm/agents/security-engineer.md"
|
||||
id: ".bmad/bmm/agents/security-engineer.md"
|
||||
name: "Sam"
|
||||
title: "Security Engineer"
|
||||
icon: "🔐"
|
||||
@@ -32,22 +32,22 @@ agent:
|
||||
menu:
|
||||
# NOTE: These workflows are hypothetical examples assuming add to a module called bmm - not implemented
|
||||
- trigger: threat-model
|
||||
workflow: "{project-root}/{bmad_folder}/bmm/workflows/threat-model/workflow.yaml"
|
||||
exec: "{project-root}/.bmad/bmm/workflows/threat-model/workflow.md"
|
||||
description: "Create STRIDE threat model for architecture"
|
||||
|
||||
- trigger: security-review
|
||||
workflow: "{project-root}/{bmad_folder}/bmm/workflows/security-review/workflow.yaml"
|
||||
exec: "{project-root}/.bmad/bmm/workflows/security-review/workflow.md"
|
||||
description: "Review code/design for security issues"
|
||||
|
||||
- trigger: owasp-check
|
||||
exec: "{project-root}/{bmad_folder}/bmm/tasks/owasp-top-10.xml"
|
||||
TODO: true
|
||||
description: "Check against OWASP Top 10"
|
||||
|
||||
- trigger: compliance
|
||||
workflow: "{project-root}/{bmad_folder}/bmm/workflows/compliance-check/workflow.yaml"
|
||||
exec: "{project-root}/.bmad/bmm/workflows/compliance-check/workflow.md"
|
||||
description: "Verify compliance requirements (SOC2, GDPR, etc.)"
|
||||
|
||||
# Core workflow that exists
|
||||
- trigger: party-mode
|
||||
exec: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md"
|
||||
exec: "{project-root}/.bmad/core/workflows/party-mode/workflow.md"
|
||||
description: "Multi-agent security discussion"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
agent:
|
||||
metadata:
|
||||
id: "{bmad_folder}/cis/agents/trend-analyst.md"
|
||||
id: ".bmad/cis/agents/trend-analyst.md"
|
||||
name: "Nova"
|
||||
title: "Trend Analyst"
|
||||
icon: "📈"
|
||||
@@ -32,26 +32,26 @@ agent:
|
||||
menu:
|
||||
# NOTE: These workflows are hypothetical examples - not implemented
|
||||
- trigger: scan-trends
|
||||
workflow: "{project-root}/{bmad_folder}/cis/workflows/trend-scan/workflow.yaml"
|
||||
exec: "{project-root}/.bmad/cis/workflows/trend-scan/workflow.md"
|
||||
description: "Scan for emerging trends in a domain"
|
||||
|
||||
- trigger: analyze-trend
|
||||
workflow: "{project-root}/{bmad_folder}/cis/workflows/trend-analysis/workflow.yaml"
|
||||
exec: "{project-root}/.bmad/cis/workflows/trend-analysis/workflow.md"
|
||||
description: "Deep dive on a specific trend"
|
||||
|
||||
- trigger: opportunity-map
|
||||
workflow: "{project-root}/{bmad_folder}/cis/workflows/opportunity-mapping/workflow.yaml"
|
||||
exec: "{project-root}/.bmad/cis/workflows/opportunity-mapping/workflow.md"
|
||||
description: "Map trend to strategic opportunities"
|
||||
|
||||
- trigger: competitor-trends
|
||||
exec: "{project-root}/{bmad_folder}/cis/tasks/competitor-trend-watch.xml"
|
||||
exec: "{project-root}/.bmad/cis/tasks/competitor-trend-watch.xml"
|
||||
description: "Monitor competitor trend adoption"
|
||||
|
||||
# Core workflows that exist
|
||||
- trigger: brainstorm
|
||||
workflow: "{project-root}/{bmad_folder}/core/workflows/brainstorming/workflow.yaml"
|
||||
exec: "{project-root}/.bmad/core/workflows/brainstorming/workflow.md"
|
||||
description: "Brainstorm trend implications"
|
||||
|
||||
- trigger: party-mode
|
||||
exec: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md"
|
||||
exec: "{project-root}/.bmad/core/workflows/party-mode/workflow.md"
|
||||
description: "Discuss trends with other agents"
|
||||
|
||||
@@ -3,7 +3,7 @@ name: 'step-01-init'
|
||||
description: 'Initialize the nutrition plan workflow by detecting continuation state and creating output document'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition'
|
||||
workflow_path: '{project-root}/.bmad/bmb/reference/workflows/meal-prep-nutrition'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-01-init.md'
|
||||
|
||||
@@ -3,7 +3,7 @@ name: 'step-01b-continue'
|
||||
description: 'Handle workflow continuation from previous session'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition'
|
||||
workflow_path: '{project-root}/.bmad/bmb/reference/workflows/meal-prep-nutrition'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-01b-continue.md'
|
||||
|
||||
@@ -3,7 +3,7 @@ name: 'step-02-profile'
|
||||
description: 'Gather comprehensive user profile information through collaborative conversation'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition'
|
||||
workflow_path: '{project-root}/.bmad/bmb/reference/workflows/meal-prep-nutrition'
|
||||
|
||||
# File References (all use {variable} format in file)
|
||||
thisStepFile: '{workflow_path}/steps/step-02-profile.md'
|
||||
@@ -12,8 +12,8 @@ workflowFile: '{workflow_path}/workflow.md'
|
||||
outputFile: '{output_folder}/nutrition-plan-{project_name}.md'
|
||||
|
||||
# Task References
|
||||
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md'
|
||||
advancedElicitationTask: '{project-root}/.bmad/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/.bmad/core/workflows/party-mode/workflow.md'
|
||||
|
||||
# Template References
|
||||
profileTemplate: '{workflow_path}/templates/profile-section.md'
|
||||
|
||||
@@ -3,7 +3,7 @@ name: 'step-03-assessment'
|
||||
description: 'Analyze nutritional requirements, identify restrictions, and calculate target macros'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition'
|
||||
workflow_path: '{project-root}/.bmad/bmb/reference/workflows/meal-prep-nutrition'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-03-assessment.md'
|
||||
@@ -12,8 +12,8 @@ workflowFile: '{workflow_path}/workflow.md'
|
||||
outputFile: '{output_folder}/nutrition-plan-{project_name}.md'
|
||||
|
||||
# Task References
|
||||
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md'
|
||||
advancedElicitationTask: '{project-root}/.bmad/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/.bmad/core/workflows/party-mode/workflow.md'
|
||||
|
||||
# Data References
|
||||
dietaryRestrictionsDB: '{workflow_path}/data/dietary-restrictions.csv'
|
||||
|
||||
@@ -3,7 +3,7 @@ name: 'step-04-strategy'
|
||||
description: 'Design a personalized meal strategy that meets nutritional needs and fits lifestyle'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition'
|
||||
workflow_path: '{project-root}/.bmad/bmb/reference/workflows/meal-prep-nutrition'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-04-strategy.md'
|
||||
@@ -13,8 +13,8 @@ workflowFile: '{workflow_path}/workflow.md'
|
||||
outputFile: '{output_folder}/nutrition-plan-{project_name}.md'
|
||||
|
||||
# Task References
|
||||
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md'
|
||||
advancedElicitationTask: '{project-root}/.bmad/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/.bmad/core/workflows/party-mode/workflow.md'
|
||||
|
||||
# Data References
|
||||
recipeDatabase: '{workflow_path}/data/recipe-database.csv'
|
||||
@@ -167,8 +167,8 @@ Display: **Select an Option:** [A] Meal Variety Optimization [P] Chef & Dietitia
|
||||
#### Menu Handling Logic:
|
||||
|
||||
- HALT and AWAIT ANSWER
|
||||
- IF A: Execute `{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml`
|
||||
- IF P: Execute `{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md` with a chef and dietitian expert also as part of the party
|
||||
- IF A: Execute `{project-root}/.bmad/core/tasks/advanced-elicitation.xml`
|
||||
- IF P: Execute `{project-root}/.bmad/core/workflows/party-mode/workflow.md` with a chef and dietitian expert also as part of the party
|
||||
- IF C: Save content to nutrition-plan.md, update frontmatter `stepsCompleted` to add 4 at the end of the array before loading next step, check cooking frequency:
|
||||
- IF cooking frequency > 2x/week: load, read entire file, then execute `{workflow_path}/step-05-shopping.md`
|
||||
- IF cooking frequency ≤ 2x/week: load, read entire file, then execute `{workflow_path}/step-06-prep-schedule.md`
|
||||
|
||||
@@ -3,7 +3,7 @@ name: 'step-05-shopping'
|
||||
description: 'Create a comprehensive shopping list that supports the meal strategy'
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition'
|
||||
workflow_path: '{project-root}/.bmad/bmb/reference/workflows/meal-prep-nutrition'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-05-shopping.md'
|
||||
@@ -12,8 +12,8 @@ workflowFile: '{workflow_path}/workflow.md'
|
||||
outputFile: '{output_folder}/nutrition-plan-{project_name}.md'
|
||||
|
||||
# Task References
|
||||
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md'
|
||||
advancedElicitationTask: '{project-root}/.bmad/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/.bmad/core/workflows/party-mode/workflow.md'
|
||||
|
||||
# Template References
|
||||
shoppingTemplate: '{workflow_path}/templates/shopping-section.md'
|
||||
@@ -132,7 +132,7 @@ You are a **strategic shopping partner** who:
|
||||
- Plans for real-life shopping scenarios
|
||||
- Minimizes food waste thoughtfully
|
||||
|
||||
## 📝 OUTPUT REQUIREMENTS:
|
||||
## 📊 STATUS UPDATE:
|
||||
|
||||
Update workflow.md frontmatter:
|
||||
|
||||
@@ -157,8 +157,8 @@ Display: **Select an Option:** [A] Budget Optimization Strategies [P] Shopping P
|
||||
#### Menu Handling Logic:
|
||||
|
||||
- HALT and AWAIT ANSWER
|
||||
- IF A: Execute `{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml`
|
||||
- IF P: Execute `{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md`
|
||||
- IF A: Execute `{project-root}/.bmad/core/tasks/advanced-elicitation.xml`
|
||||
- IF P: Execute `{project-root}/.bmad/core/workflows/party-mode/workflow.md`
|
||||
- IF C: Save content to nutrition-plan.md, update frontmatter `stepsCompleted` to add 5 at the end of the array before loading next step, then load, read entire file, then execute `{workflow_path}/step-06-prep-schedule.md`
|
||||
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#5-present-menu-options)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ name: 'step-06-prep-schedule'
|
||||
description: "Create a realistic meal prep schedule that fits the user's lifestyle"
|
||||
|
||||
# Path Definitions
|
||||
workflow_path: '{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition'
|
||||
workflow_path: '{project-root}/.bmad/bmb/reference/workflows/meal-prep-nutrition'
|
||||
|
||||
# File References
|
||||
thisStepFile: '{workflow_path}/steps/step-06-prep-schedule.md'
|
||||
@@ -11,8 +11,8 @@ workflowFile: '{workflow_path}/workflow.md'
|
||||
outputFile: '{output_folder}/nutrition-plan-{project_name}.md'
|
||||
|
||||
# Task References
|
||||
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md'
|
||||
advancedElicitationTask: '{project-root}/.bmad/core/tasks/advanced-elicitation.xml'
|
||||
partyModeWorkflow: '{project-root}/.bmad/core/workflows/party-mode/workflow.md'
|
||||
|
||||
# Template References
|
||||
prepScheduleTemplate: '{workflow_path}/templates/prep-schedule-section.md'
|
||||
@@ -178,8 +178,8 @@ Display: **Select an Option:** [A] Advanced Prep Techniques [P] Coach Perspectiv
|
||||
#### Menu Handling Logic:
|
||||
|
||||
- HALT and AWAIT ANSWER
|
||||
- IF A: Execute `{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml`
|
||||
- IF P: Execute `{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md`
|
||||
- IF A: Execute `{project-root}/.bmad/core/tasks/advanced-elicitation.xml`
|
||||
- IF P: Execute `{project-root}/.bmad/core/workflows/party-mode/workflow.md`
|
||||
- IF C: update frontmatter `stepsCompleted` to add 6 at the end of the array before loading next step, mark workflow complete, display final message
|
||||
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#6-present-menu-options)
|
||||
|
||||
|
||||
@@ -49,10 +49,10 @@ This uses **step-file architecture** for disciplined execution:
|
||||
|
||||
### 1. Configuration Loading
|
||||
|
||||
Load and read full config from {project-root}/{bmad_folder}/core/config.yaml and resolve:
|
||||
Load and read full config from {project-root}/.bmad/core/config.yaml and resolve:
|
||||
|
||||
- `project_name`, `output_folder`, `user_name`, `communication_language`, `document_output_language`
|
||||
|
||||
### 2. First Step EXECUTION
|
||||
|
||||
Load, read the full file and then execute `{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md` to begin the workflow.
|
||||
Load, read the full file and then execute `{project-root}/.bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md` to begin the workflow.
|
||||
|
||||
@@ -1,229 +0,0 @@
|
||||
# Create Module Workflow
|
||||
|
||||
Interactive scaffolding system creating complete BMad modules with agents, workflows, tasks, and installation infrastructure.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Quick Start](#quick-start)
|
||||
- [Workflow Phases](#workflow-phases)
|
||||
- [Output Structure](#output-structure)
|
||||
- [Module Components](#module-components)
|
||||
- [Best Practices](#best-practices)
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Basic invocation
|
||||
workflow create-module
|
||||
|
||||
# With module brief input
|
||||
workflow create-module --input module-brief-{name}-{date}.md
|
||||
|
||||
# Via BMad Builder
|
||||
*create-module
|
||||
```
|
||||
|
||||
## Workflow Phases
|
||||
|
||||
### Phase 1: Concept Definition
|
||||
|
||||
- Define module purpose and audience
|
||||
- Establish module code (kebab-case) and name
|
||||
- Choose category (Domain, Creative, Technical, Business, Personal)
|
||||
- Plan component architecture
|
||||
|
||||
**Module Brief Integration:**
|
||||
|
||||
- Auto-detects existing briefs
|
||||
- Uses as pre-populated blueprint
|
||||
- Accelerates planning phase
|
||||
|
||||
### Phase 2: Architecture Planning
|
||||
|
||||
- Create directory hierarchy
|
||||
- Setup configuration system
|
||||
- Define installer structure
|
||||
- Establish component folders
|
||||
|
||||
### Phase 3: Component Creation
|
||||
|
||||
- Optional first agent creation
|
||||
- Optional first workflow creation
|
||||
- Component placeholder generation
|
||||
- Integration validation
|
||||
|
||||
### Phase 4: Installation Setup
|
||||
|
||||
- Create install-config.yaml
|
||||
- Configure deployment questions
|
||||
- Setup installer logic
|
||||
- Post-install messaging
|
||||
|
||||
### Phase 5: Documentation
|
||||
|
||||
- Generate comprehensive README
|
||||
- Create development roadmap
|
||||
- Provide quick commands
|
||||
- Document next steps
|
||||
|
||||
## Output Structure
|
||||
|
||||
### Generated Directory
|
||||
|
||||
```
|
||||
{bmad_folder}/{module-code}/
|
||||
├── agents/ # Agent definitions
|
||||
├── workflows/ # Workflow processes
|
||||
├── tasks/ # Reusable tasks
|
||||
├── templates/ # Document templates
|
||||
├── data/ # Module data files
|
||||
├── _module-installer/ # Installation logic
|
||||
│ ├── install-config.yaml
|
||||
│ └── installer.js
|
||||
├── README.md # Module documentation
|
||||
├── TODO.md # Development roadmap
|
||||
└── config.yaml # Runtime configuration
|
||||
```
|
||||
|
||||
### Configuration Files
|
||||
|
||||
**install-config.yaml** - Installation questions
|
||||
|
||||
```yaml
|
||||
questions:
|
||||
- id: user_name
|
||||
prompt: 'Your name?'
|
||||
default: 'User'
|
||||
- id: output_folder
|
||||
prompt: 'Output location?'
|
||||
default: './output'
|
||||
```
|
||||
|
||||
**config.yaml** - Generated from user answers during install
|
||||
|
||||
```yaml
|
||||
user_name: 'John Doe'
|
||||
output_folder: './my-output'
|
||||
```
|
||||
|
||||
## Module Components
|
||||
|
||||
### Agents
|
||||
|
||||
- Full module agents with workflows
|
||||
- Expert agents with sidecars
|
||||
- Simple utility agents
|
||||
|
||||
### Workflows
|
||||
|
||||
- Multi-step guided processes
|
||||
- Configuration-driven
|
||||
- Web bundle support
|
||||
|
||||
### Tasks
|
||||
|
||||
- Reusable operations
|
||||
- Agent-agnostic
|
||||
- Modular components
|
||||
|
||||
### Templates
|
||||
|
||||
- Document structures
|
||||
- Output formats
|
||||
- Report templates
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Planning
|
||||
|
||||
1. **Use module-brief workflow first** - Creates comprehensive blueprint
|
||||
2. **Define clear scope** - Avoid feature creep
|
||||
3. **Plan component interactions** - Map agent/workflow relationships
|
||||
|
||||
### Structure
|
||||
|
||||
1. **Follow conventions** - Use established patterns
|
||||
2. **Keep components focused** - Single responsibility
|
||||
3. **Document thoroughly** - Clear README and inline docs
|
||||
|
||||
### Development
|
||||
|
||||
1. **Start with core agent** - Build primary functionality first
|
||||
2. **Create key workflows** - Essential processes before edge cases
|
||||
3. **Test incrementally** - Validate as you build
|
||||
|
||||
### Installation
|
||||
|
||||
1. **Minimal config questions** - Only essential settings
|
||||
2. **Smart defaults** - Sensible out-of-box experience
|
||||
3. **Clear post-install** - Guide users to first steps
|
||||
|
||||
## Integration Points
|
||||
|
||||
### With Other Workflows
|
||||
|
||||
- **module-brief** - Strategic planning input
|
||||
- **create-agent** - Agent component creation
|
||||
- **create-workflow** - Workflow building
|
||||
- **redoc** - Documentation maintenance
|
||||
|
||||
### With BMad Core
|
||||
|
||||
- Uses core framework capabilities
|
||||
- Integrates with module system
|
||||
- Follows BMad conventions
|
||||
|
||||
## Examples
|
||||
|
||||
### Domain-Specific Module
|
||||
|
||||
```
|
||||
Category: Domain-Specific
|
||||
Code: legal-advisor
|
||||
Components:
|
||||
- Contract Review Agent
|
||||
- Compliance Workflow
|
||||
- Legal Templates
|
||||
```
|
||||
|
||||
### Creative Module
|
||||
|
||||
```
|
||||
Category: Creative
|
||||
Code: story-builder
|
||||
Components:
|
||||
- Narrative Agent
|
||||
- Plot Workflow
|
||||
- Character Templates
|
||||
```
|
||||
|
||||
### Technical Module
|
||||
|
||||
```
|
||||
Category: Technical
|
||||
Code: api-tester
|
||||
Components:
|
||||
- Test Runner Agent
|
||||
- API Validation Workflow
|
||||
- Test Report Templates
|
||||
```
|
||||
|
||||
## Workflow Files
|
||||
|
||||
```
|
||||
create-module/
|
||||
├── workflow.yaml # Configuration
|
||||
├── instructions.md # Step guide
|
||||
├── checklist.md # Validation
|
||||
├── module-structure.md # Architecture
|
||||
├── installer-templates/ # Install files
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [Module Structure](./module-structure.md)
|
||||
- [Module Brief Workflow](../module-brief/README.md)
|
||||
- [Create Agent](../create-agent/README.md)
|
||||
- [Create Workflow](../create-workflow/README.md)
|
||||
- [BMB Module](../../README.md)
|
||||
@@ -1,137 +0,0 @@
|
||||
# Module Brainstorming Context
|
||||
|
||||
_Context provided to brainstorming workflow when creating a new BMAD module_
|
||||
|
||||
## Session Focus
|
||||
|
||||
You are brainstorming ideas for a **complete BMAD module** - a self-contained package that extends the BMAD Method with specialized domain expertise and capabilities.
|
||||
|
||||
## What is a BMAD Module?
|
||||
|
||||
A module is a cohesive package that provides:
|
||||
|
||||
- **Domain Expertise**: Specialized knowledge in a specific area (RPG, DevOps, Content Creation, etc.)
|
||||
- **Agent Team**: Multiple AI personas with complementary skills
|
||||
- **Workflows**: Guided processes for common tasks in the domain
|
||||
- **Templates**: Document structures for consistent outputs
|
||||
- **Integration**: Components that work together seamlessly
|
||||
|
||||
## Brainstorming Goals
|
||||
|
||||
Explore and define:
|
||||
|
||||
### 1. Domain and Purpose
|
||||
|
||||
- **What domain/problem space?** (e.g., game development, marketing, personal productivity)
|
||||
- **Who is the target user?** (developers, writers, managers, hobbyists)
|
||||
- **What pain points does it solve?** (tedious tasks, missing structure, need for expertise)
|
||||
- **What makes this domain exciting?** (creativity, efficiency, empowerment)
|
||||
|
||||
### 2. Agent Team Composition
|
||||
|
||||
- **How many agents?** (typically 3-7 for a module)
|
||||
- **What roles/personas?** (architect, researcher, reviewer, specialist)
|
||||
- **How do they collaborate?** (handoffs, reviews, ensemble work)
|
||||
- **What personality theme?** (Star Trek crew, superhero team, fantasy party, professional squad)
|
||||
|
||||
### 3. Core Workflows
|
||||
|
||||
- **What documents need creating?** (plans, specs, reports, creative outputs)
|
||||
- **What processes need automation?** (analysis, generation, review, deployment)
|
||||
- **What workflows enable the vision?** (3-10 key workflows that define the module)
|
||||
|
||||
### 4. Value Proposition
|
||||
|
||||
- **What becomes easier?** (specific tasks that get 10x faster)
|
||||
- **What becomes possible?** (new capabilities previously unavailable)
|
||||
- **What becomes better?** (quality improvements, consistency gains)
|
||||
|
||||
## Creative Constraints
|
||||
|
||||
A good BMAD module should be:
|
||||
|
||||
- **Focused**: Serves a specific domain well (not generic)
|
||||
- **Complete**: Provides end-to-end capabilities for that domain
|
||||
- **Cohesive**: Agents and workflows complement each other
|
||||
- **Fun**: Personality and creativity make it enjoyable to use
|
||||
- **Practical**: Solves real problems, delivers real value
|
||||
|
||||
## Module Architecture Questions
|
||||
|
||||
1. **Module Identity**
|
||||
- Module code (kebab-case, e.g., "rpg-toolkit")
|
||||
- Module name (friendly, e.g., "RPG Toolkit")
|
||||
- Module purpose (one sentence)
|
||||
- Target audience
|
||||
|
||||
2. **Agent Lineup**
|
||||
- Agent names and roles
|
||||
- Communication styles and personalities
|
||||
- Expertise areas
|
||||
- Command sets (what each agent can do)
|
||||
|
||||
3. **Workflow Portfolio**
|
||||
- Document generation workflows
|
||||
- Action/automation workflows
|
||||
- Analysis/research workflows
|
||||
- Creative/ideation workflows
|
||||
|
||||
4. **Integration Points**
|
||||
- How agents invoke workflows
|
||||
- How workflows use templates
|
||||
- How components pass data
|
||||
- Dependencies on other modules
|
||||
|
||||
## Example Module Patterns
|
||||
|
||||
### Professional Domains
|
||||
|
||||
- **DevOps Suite**: Deploy, Monitor, Troubleshoot agents + deployment workflows
|
||||
- **Marketing Engine**: Content, SEO, Analytics agents + campaign workflows
|
||||
- **Legal Assistant**: Contract, Research, Review agents + document workflows
|
||||
|
||||
### Creative Domains
|
||||
|
||||
- **RPG Toolkit**: DM, NPC, Quest agents + adventure creation workflows
|
||||
- **Story Crafter**: Plot, Character, World agents + writing workflows
|
||||
- **Music Producer**: Composer, Arranger, Mixer agents + production workflows
|
||||
|
||||
### Personal Domains
|
||||
|
||||
- **Life Coach**: Planner, Tracker, Mentor agents + productivity workflows
|
||||
- **Learning Companion**: Tutor, Quiz, Reviewer agents + study workflows
|
||||
- **Health Guide**: Nutrition, Fitness, Wellness agents + tracking workflows
|
||||
|
||||
## Suggested Brainstorming Techniques
|
||||
|
||||
Particularly effective for module ideation:
|
||||
|
||||
1. **Domain Immersion**: Deep dive into target domain's problems
|
||||
2. **Persona Mapping**: Who needs this and what do they struggle with?
|
||||
3. **Workflow Mapping**: What processes exist today? How could they improve?
|
||||
4. **Team Building**: What personalities would make a great team?
|
||||
5. **Integration Thinking**: How do pieces connect and amplify each other?
|
||||
|
||||
## Key Questions to Answer
|
||||
|
||||
1. What domain expertise should this module embody?
|
||||
2. What would users be able to do that they can't do now?
|
||||
3. Who are the 3-7 agents and what are their personalities?
|
||||
4. What are the 5-10 core workflows?
|
||||
5. What makes this module delightful to use?
|
||||
6. How is this different from existing tools?
|
||||
7. What's the "killer feature" that makes this essential?
|
||||
|
||||
## Output Goals
|
||||
|
||||
Generate:
|
||||
|
||||
- **Module concept**: Clear vision and purpose
|
||||
- **Agent roster**: Names, roles, personalities for each agent
|
||||
- **Workflow list**: Core workflows with brief descriptions
|
||||
- **Unique angle**: What makes this module special
|
||||
- **Use cases**: 3-5 concrete scenarios where this module shines
|
||||
|
||||
---
|
||||
|
||||
_This focused context helps create cohesive, valuable BMAD modules_
|
||||
@@ -1,235 +0,0 @@
|
||||
# Build Module Validation Checklist
|
||||
|
||||
## Module Identity and Metadata
|
||||
|
||||
### Basic Information
|
||||
|
||||
- [ ] Module code follows kebab-case convention (e.g., "rpg-toolkit")
|
||||
- [ ] Module name is descriptive and title-cased
|
||||
- [ ] Module purpose is clearly defined (1-2 sentences)
|
||||
- [ ] Target audience is identified
|
||||
- [ ] Version number follows semantic versioning (e.g., "1.0.0")
|
||||
- [ ] Author information is present
|
||||
|
||||
### Naming Consistency
|
||||
|
||||
- [ ] Module code used consistently throughout all files
|
||||
- [ ] No naming conflicts with existing modules
|
||||
- [ ] All paths use consistent module code references
|
||||
|
||||
## Directory Structure
|
||||
|
||||
### Source Directories ({bmad_folder}/{module-code}/)
|
||||
|
||||
- [ ] `/agents` directory created (even if empty)
|
||||
- [ ] `/workflows` directory created (even if empty)
|
||||
- [ ] `/tasks` directory exists (if tasks planned)
|
||||
- [ ] `/templates` directory exists (if templates used)
|
||||
- [ ] `/data` directory exists (if data files needed)
|
||||
- [ ] `/_module-installer/install-config.yaml` present (defines configuration questions)
|
||||
- [ ] `README.md` present with documentation
|
||||
|
||||
### Installed Module Structure (generated in target after installation)
|
||||
|
||||
- [ ] `/agents` directory for compiled agents
|
||||
- [ ] `/workflows` directory for workflow instances
|
||||
- [ ] `/data` directory for user data
|
||||
- [ ] `config.yaml` generated from install-config.yaml during installation
|
||||
|
||||
## Component Planning
|
||||
|
||||
### Agents
|
||||
|
||||
- [ ] At least one agent defined or planned
|
||||
- [ ] Agent purposes are distinct and clear
|
||||
- [ ] Agent types (Simple/Expert/Module) identified
|
||||
- [ ] No significant overlap between agents
|
||||
- [ ] Primary agent is identified
|
||||
|
||||
### Workflows
|
||||
|
||||
- [ ] At least one workflow defined or planned
|
||||
- [ ] Workflow purposes are clear
|
||||
- [ ] Workflow types identified (Document/Action/Interactive)
|
||||
- [ ] Primary workflow is identified
|
||||
- [ ] Workflow complexity is appropriate
|
||||
|
||||
### Tasks (if applicable)
|
||||
|
||||
- [ ] Tasks have single, clear purposes
|
||||
- [ ] Tasks don't duplicate workflow functionality
|
||||
- [ ] Task files follow naming conventions
|
||||
|
||||
## Configuration Files
|
||||
|
||||
### Installation Configuration (install-config.yaml)
|
||||
|
||||
- [ ] `install-config.yaml` exists in `_module-installer`
|
||||
- [ ] Module metadata present (code, name, version)
|
||||
- [ ] Configuration questions defined for user input
|
||||
- [ ] Default values provided for all questions
|
||||
- [ ] Prompt text is clear and helpful
|
||||
- [ ] Result templates use proper variable substitution
|
||||
- [ ] Paths use proper variables ({project-root}, {value}, etc.)
|
||||
|
||||
### Generated Config (config.yaml in target)
|
||||
|
||||
- [ ] Generated during installation from install-config.yaml
|
||||
- [ ] Contains all user-provided configuration values
|
||||
- [ ] Module metadata included
|
||||
- [ ] No config.yaml should exist in source module
|
||||
|
||||
## Installation Infrastructure
|
||||
|
||||
### Installer Files
|
||||
|
||||
- [ ] Install configuration validates against schema
|
||||
- [ ] All source paths exist or are marked as templates
|
||||
- [ ] Destination paths use correct variables
|
||||
- [ ] Optional vs required steps clearly marked
|
||||
|
||||
### installer.js (if present)
|
||||
|
||||
- [ ] Main `installModule` function exists
|
||||
- [ ] Error handling implemented
|
||||
- [ ] Console logging for user feedback
|
||||
- [ ] Exports correct function names
|
||||
- [ ] Placeholder code replaced with actual logic (or logged as TODO)
|
||||
|
||||
### External Assets (if any)
|
||||
|
||||
- [ ] Asset files exist in assets directory
|
||||
- [ ] Copy destinations are valid
|
||||
- [ ] Permissions requirements documented
|
||||
|
||||
## Documentation
|
||||
|
||||
### README.md
|
||||
|
||||
- [ ] Module overview section present
|
||||
- [ ] Installation instructions included
|
||||
- [ ] Component listing with descriptions
|
||||
- [ ] Quick start guide provided
|
||||
- [ ] Configuration options documented
|
||||
- [ ] At least one usage example
|
||||
- [ ] Directory structure shown
|
||||
- [ ] Author and date information
|
||||
|
||||
### Component Documentation
|
||||
|
||||
- [ ] Each agent has purpose documentation
|
||||
- [ ] Each workflow has description
|
||||
- [ ] Tasks are documented (if present)
|
||||
- [ ] Examples demonstrate typical usage
|
||||
|
||||
### Development Roadmap
|
||||
|
||||
- [ ] TODO.md or roadmap section exists
|
||||
- [ ] Planned components listed
|
||||
- [ ] Development phases identified
|
||||
- [ ] Quick commands for adding components
|
||||
|
||||
## Integration
|
||||
|
||||
### Cross-component References
|
||||
|
||||
- [ ] Agents reference correct workflow paths
|
||||
- [ ] Workflows reference correct task paths
|
||||
- [ ] All internal paths use module variables
|
||||
- [ ] External dependencies declared
|
||||
|
||||
### Module Boundaries
|
||||
|
||||
- [ ] Module scope is well-defined
|
||||
- [ ] No feature creep into other domains
|
||||
- [ ] Clear separation from other modules
|
||||
|
||||
## Quality Checks
|
||||
|
||||
### Completeness
|
||||
|
||||
- [ ] At least one functional component (not all placeholders)
|
||||
- [ ] Core functionality is implementable
|
||||
- [ ] Module provides clear value
|
||||
|
||||
### Consistency
|
||||
|
||||
- [ ] Formatting consistent across files
|
||||
- [ ] Variable naming follows conventions
|
||||
- [ ] Communication style appropriate for domain
|
||||
|
||||
### Scalability
|
||||
|
||||
- [ ] Structure supports future growth
|
||||
- [ ] Component organization is logical
|
||||
- [ ] No hard-coded limits
|
||||
|
||||
## Testing and Validation
|
||||
|
||||
### Structural Validation
|
||||
|
||||
- [ ] YAML files parse without errors
|
||||
- [ ] JSON files (if any) are valid
|
||||
- [ ] XML files (if any) are well-formed
|
||||
- [ ] No syntax errors in JavaScript files
|
||||
|
||||
### Path Validation
|
||||
|
||||
- [ ] All referenced paths exist or are clearly marked as TODO
|
||||
- [ ] Variable substitutions are correct
|
||||
- [ ] No absolute paths (unless intentional)
|
||||
|
||||
### Installation Testing
|
||||
|
||||
- [ ] Installation steps can be simulated
|
||||
- [ ] No circular dependencies
|
||||
- [ ] Uninstall process defined (if complex)
|
||||
|
||||
## Final Checks
|
||||
|
||||
### Ready for Use
|
||||
|
||||
- [ ] Module can be installed without errors
|
||||
- [ ] At least one component is functional
|
||||
- [ ] User can understand how to get started
|
||||
- [ ] Next steps are clear
|
||||
|
||||
### Professional Quality
|
||||
|
||||
- [ ] No placeholder text remains (unless marked TODO)
|
||||
- [ ] No obvious typos or grammar issues
|
||||
- [ ] Professional tone throughout
|
||||
- [ ] Contact/support information provided
|
||||
|
||||
## Issues Found
|
||||
|
||||
### Critical Issues
|
||||
|
||||
<!-- List any issues that MUST be fixed before module can be used -->
|
||||
|
||||
### Warnings
|
||||
|
||||
<!-- List any issues that should be addressed but won't prevent basic usage -->
|
||||
|
||||
### Improvements
|
||||
|
||||
<!-- List any optional enhancements that would improve the module -->
|
||||
|
||||
### Missing Components
|
||||
|
||||
<!-- List any planned components not yet implemented -->
|
||||
|
||||
## Module Complexity Assessment
|
||||
|
||||
### Complexity Rating
|
||||
|
||||
- [ ] Simple (1-2 agents, 2-3 workflows)
|
||||
- [ ] Standard (3-5 agents, 5-10 workflows)
|
||||
- [ ] Complex (5+ agents, 10+ workflows)
|
||||
|
||||
### Readiness Level
|
||||
|
||||
- [ ] Prototype (Basic structure, mostly placeholders)
|
||||
- [ ] Alpha (Core functionality works)
|
||||
- [ ] Beta (Most features complete, needs testing)
|
||||
- [ ] Release (Full functionality, documented)
|
||||
@@ -1,92 +0,0 @@
|
||||
# {{MODULE_NAME}} Module Configuration
|
||||
# This file defines installation questions and module configuration values
|
||||
|
||||
code: "{{MODULE_CODE}}"
|
||||
name: "{{MODULE_NAME}}"
|
||||
default_selected: "{{DEFAULT_SELECTED}}" # true if this should be selected by default
|
||||
|
||||
# Welcome message shown during installation
|
||||
prompt:
|
||||
- "{{WELCOME_MESSAGE_LINE_1}}"
|
||||
- "{{WELCOME_MESSAGE_LINE_2}}"
|
||||
# Core config values are automatically inherited:
|
||||
## user_name
|
||||
## communication_language
|
||||
## document_output_language
|
||||
## output_folder
|
||||
|
||||
# ============================================================================
|
||||
# CONFIGURATION FIELDS
|
||||
# ============================================================================
|
||||
#
|
||||
# Each field can be:
|
||||
# 1. INTERACTIVE (has 'prompt' - asks user during installation)
|
||||
# 2. STATIC (no 'prompt' - just uses 'result' value)
|
||||
#
|
||||
# Field structure:
|
||||
# field_name:
|
||||
# prompt: "Question to ask user" (optional - omit for static values)
|
||||
# default: "default_value" (optional)
|
||||
# result: "{value}" or "static-value"
|
||||
# single-select: [...] (optional - for dropdown)
|
||||
# multi-select: [...] (optional - for checkboxes)
|
||||
#
|
||||
# Special placeholders in result:
|
||||
# {value} - replaced with user's answer
|
||||
# {project-root} - replaced with project root path
|
||||
# {directory_name} - replaced with project directory name
|
||||
# {module_code} - replaced with this module's code
|
||||
# ============================================================================
|
||||
|
||||
# EXAMPLE: Interactive text input
|
||||
# example_project_name:
|
||||
# prompt: "What is your project name?"
|
||||
# default: "{directory_name}"
|
||||
# result: "{value}"
|
||||
|
||||
# EXAMPLE: Interactive single-select dropdown
|
||||
# example_skill_level:
|
||||
# prompt: "What is your experience level?"
|
||||
# default: "intermediate"
|
||||
# result: "{value}"
|
||||
# single-select:
|
||||
# - value: "beginner"
|
||||
# label: "Beginner - New to this domain"
|
||||
# - value: "intermediate"
|
||||
# label: "Intermediate - Familiar with basics"
|
||||
# - value: "expert"
|
||||
# label: "Expert - Deep knowledge"
|
||||
|
||||
# EXAMPLE: Interactive multi-select checkboxes
|
||||
# example_features:
|
||||
# prompt:
|
||||
# - "Which features do you want to enable?"
|
||||
# - "(Select all that apply)"
|
||||
# result: "{value}"
|
||||
# multi-select:
|
||||
# - "Feature A"
|
||||
# - "Feature B"
|
||||
# - "Feature C"
|
||||
|
||||
# EXAMPLE: Interactive path input
|
||||
# example_output_path:
|
||||
# prompt: "Where should outputs be saved?"
|
||||
# default: "output/{{MODULE_CODE}}"
|
||||
# result: "{project-root}/{value}"
|
||||
|
||||
# EXAMPLE: Static value (no user prompt)
|
||||
# example_static_setting:
|
||||
# result: "hardcoded-value"
|
||||
|
||||
# EXAMPLE: Static path
|
||||
# module_data_path:
|
||||
# result: "{project-root}/{bmad_folder}/{{MODULE_CODE}}/data"
|
||||
|
||||
# ============================================================================
|
||||
# YOUR MODULE CONFIGURATION FIELDS
|
||||
# ============================================================================
|
||||
# Replace examples above with your module's actual configuration needs.
|
||||
# Delete this comment block and the examples when implementing.
|
||||
# ============================================================================
|
||||
|
||||
# TODO: INSERT {MODULE_CONFIG_FIELDS} HERE
|
||||
@@ -1,231 +0,0 @@
|
||||
/* eslint-disable unicorn/prefer-module, unicorn/prefer-node-protocol */
|
||||
/**
|
||||
* {{MODULE_NAME}} Module Installer
|
||||
* Custom installation logic for complex module setup
|
||||
*
|
||||
* This is a template - replace {{VARIABLES}} with actual values
|
||||
*/
|
||||
|
||||
// const fs = require('fs'); // Uncomment when implementing file operations
|
||||
const path = require('path');
|
||||
|
||||
/**
|
||||
* Main installation function
|
||||
* Called by BMAD installer when processing the module
|
||||
*/
|
||||
async function installModule(config) {
|
||||
console.log('🚀 Installing {{MODULE_NAME}} module...');
|
||||
console.log(` Version: ${config.version}`);
|
||||
console.log(` Module Code: ${config.module_code}`);
|
||||
|
||||
try {
|
||||
// Step 1: Validate environment
|
||||
await validateEnvironment(config);
|
||||
|
||||
// Step 2: Setup custom configurations
|
||||
await setupConfigurations(config);
|
||||
|
||||
// Step 3: Initialize module-specific features
|
||||
await initializeFeatures(config);
|
||||
|
||||
// Step 4: Run post-install tasks
|
||||
await runPostInstallTasks(config);
|
||||
|
||||
console.log('✅ {{MODULE_NAME}} module installed successfully!');
|
||||
return {
|
||||
success: true,
|
||||
message: 'Module installed and configured',
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('❌ Installation failed:', error.message);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate that the environment meets module requirements
|
||||
*/
|
||||
async function validateEnvironment(config) {
|
||||
console.log(' Validating environment...');
|
||||
|
||||
// TODO: Add environment checks
|
||||
// Examples:
|
||||
// - Check for required tools/binaries
|
||||
// - Verify permissions
|
||||
// - Check network connectivity
|
||||
// - Validate API keys
|
||||
|
||||
// Placeholder validation
|
||||
if (!config.project_root) {
|
||||
throw new Error('Project root not defined');
|
||||
}
|
||||
|
||||
console.log(' ✓ Environment validated');
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup module-specific configurations
|
||||
*/
|
||||
async function setupConfigurations(config) {
|
||||
console.log(' Setting up configurations...');
|
||||
|
||||
// TODO: Add configuration setup
|
||||
// Examples:
|
||||
// - Create config files
|
||||
// - Setup environment variables
|
||||
// - Configure external services
|
||||
// - Initialize settings
|
||||
|
||||
// Placeholder configuration
|
||||
const configPath = path.join(config.project_root, 'bmad', config.module_code, 'config.json');
|
||||
|
||||
// Example of module config that would be created
|
||||
// const moduleConfig = {
|
||||
// installed: new Date().toISOString(),
|
||||
// settings: {
|
||||
// // Add default settings
|
||||
// }
|
||||
// };
|
||||
|
||||
// Note: This is a placeholder - actual implementation would write the file
|
||||
console.log(` ✓ Would create config at: ${configPath}`);
|
||||
console.log(' ✓ Configurations complete');
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize module-specific features
|
||||
*/
|
||||
async function initializeFeatures(config) {
|
||||
console.log(' Initializing features...');
|
||||
|
||||
// TODO: Add feature initialization
|
||||
// Examples:
|
||||
// - Create database schemas
|
||||
// - Setup cron jobs
|
||||
// - Initialize caches
|
||||
// - Register webhooks
|
||||
// - Setup file watchers
|
||||
|
||||
// Module-specific initialization based on type
|
||||
switch (config.module_category) {
|
||||
case 'data': {
|
||||
await initializeDataFeatures(config);
|
||||
break;
|
||||
}
|
||||
case 'automation': {
|
||||
await initializeAutomationFeatures(config);
|
||||
break;
|
||||
}
|
||||
case 'integration': {
|
||||
await initializeIntegrationFeatures(config);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
console.log(' - Using standard initialization');
|
||||
}
|
||||
}
|
||||
|
||||
console.log(' ✓ Features initialized');
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize data-related features
|
||||
*/
|
||||
async function initializeDataFeatures(/* config */) {
|
||||
console.log(' - Setting up data storage...');
|
||||
// TODO: Setup databases, data folders, etc.
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize automation features
|
||||
*/
|
||||
async function initializeAutomationFeatures(/* config */) {
|
||||
console.log(' - Setting up automation hooks...');
|
||||
// TODO: Setup triggers, watchers, schedulers
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize integration features
|
||||
*/
|
||||
async function initializeIntegrationFeatures(/* config */) {
|
||||
console.log(' - Setting up integrations...');
|
||||
// TODO: Configure APIs, webhooks, external services
|
||||
}
|
||||
|
||||
/**
|
||||
* Run post-installation tasks
|
||||
*/
|
||||
async function runPostInstallTasks(/* config */) {
|
||||
console.log(' Running post-install tasks...');
|
||||
|
||||
// TODO: Add post-install tasks
|
||||
// Examples:
|
||||
// - Generate sample data
|
||||
// - Run initial workflows
|
||||
// - Send notifications
|
||||
// - Update registries
|
||||
|
||||
console.log(' ✓ Post-install tasks complete');
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize database for the module (optional)
|
||||
*/
|
||||
async function initDatabase(/* config */) {
|
||||
console.log(' Initializing database...');
|
||||
|
||||
// TODO: Add database initialization
|
||||
// This function can be called from install-config.yaml
|
||||
|
||||
console.log(' ✓ Database initialized');
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate sample data for the module (optional)
|
||||
*/
|
||||
async function generateSamples(config) {
|
||||
console.log(' Generating sample data...');
|
||||
|
||||
// TODO: Create sample files, data, configurations
|
||||
// This helps users understand how to use the module
|
||||
|
||||
const samplesPath = path.join(config.project_root, 'examples', config.module_code);
|
||||
|
||||
console.log(` - Would create samples at: ${samplesPath}`);
|
||||
console.log(' ✓ Samples generated');
|
||||
}
|
||||
|
||||
/**
|
||||
* Uninstall the module (cleanup)
|
||||
*/
|
||||
async function uninstallModule(/* config */) {
|
||||
console.log('🗑️ Uninstalling {{MODULE_NAME}} module...');
|
||||
|
||||
try {
|
||||
// TODO: Add cleanup logic
|
||||
// - Remove configurations
|
||||
// - Clean up databases
|
||||
// - Unregister services
|
||||
// - Backup user data
|
||||
|
||||
console.log('✅ Module uninstalled successfully');
|
||||
return { success: true };
|
||||
} catch (error) {
|
||||
console.error('❌ Uninstall failed:', error.message);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Export functions for BMAD installer
|
||||
module.exports = {
|
||||
installModule,
|
||||
initDatabase,
|
||||
generateSamples,
|
||||
uninstallModule,
|
||||
};
|
||||
@@ -1,577 +0,0 @@
|
||||
# Build Module - Interactive Module Builder Instructions
|
||||
|
||||
<critical>The workflow execution engine is governed by: {project-root}/{bmad_folder}/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {project-root}/{bmad_folder}/bmb/workflows/create-module/workflow.yaml</critical>
|
||||
<critical>Study existing modules in: {project-root}/{bmad_folder}/ for patterns</critical>
|
||||
<critical>Communicate in {communication_language} throughout the module creation process</critical>
|
||||
<critical>⚠️ ABSOLUTELY NO TIME ESTIMATES - NEVER mention hours, days, weeks, months, or ANY time-based predictions. AI has fundamentally changed development speed - what once took teams weeks/months can now be done by one person in hours. DO NOT give ANY time estimates whatsoever.</critical>
|
||||
|
||||
<workflow>
|
||||
|
||||
<step n="-1" goal="Optional brainstorming for module ideas" optional="true">
|
||||
<ask>Do you want to brainstorm module ideas first? [y/n]</ask>
|
||||
|
||||
<check if="yes">
|
||||
<action>Invoke brainstorming workflow: {brainstorming_workflow}</action>
|
||||
<action>Pass context data: {brainstorming_context}</action>
|
||||
<action>Wait for brainstorming session completion</action>
|
||||
<action>Use brainstorming output to inform module concept, agent lineup, and workflow portfolio in following steps</action>
|
||||
</check>
|
||||
|
||||
<check if="no">
|
||||
<action>Proceed directly to Step 0</action>
|
||||
</check>
|
||||
|
||||
<template-output>brainstorming_results</template-output>
|
||||
</step>
|
||||
|
||||
<step n="0" goal="Check for module brief" optional="true">
|
||||
<ask>Do you have a module brief or should we create one? [have/create/skip]</ask>
|
||||
|
||||
<check if="create">
|
||||
<action>Invoke module-brief workflow: {project-root}/{bmad_folder}/bmb/workflows/module-brief/workflow.yaml</action>
|
||||
<action>Wait for module brief completion</action>
|
||||
<action>Load the module brief to use as blueprint</action>
|
||||
</check>
|
||||
|
||||
<check if="have">
|
||||
<ask>Provide path to module brief document</ask>
|
||||
<action>Load the module brief and use it to pre-populate all planning sections</action>
|
||||
</check>
|
||||
|
||||
<check if="skip">
|
||||
<action>Proceed directly to Step 1</action>
|
||||
</check>
|
||||
|
||||
<template-output>module_brief</template-output>
|
||||
</step>
|
||||
|
||||
<step n="1" goal="Define module concept and scope">
|
||||
<critical>Load and study the complete module structure guide</critical>
|
||||
<action>Load module structure guide: {module_structure_guide}</action>
|
||||
<action>Understand module types (Simple/Standard/Complex)</action>
|
||||
<action>Review directory structures and component guidelines</action>
|
||||
<action>Study the installation infrastructure patterns</action>
|
||||
|
||||
<action>If brainstorming or module brief was completed, reference those results to guide the conversation</action>
|
||||
|
||||
<action>Guide user to articulate their module's vision, exploring its purpose, what it will help with, and who will use it</action>
|
||||
|
||||
<action>Based on their description, intelligently propose module details:</action>
|
||||
|
||||
**Module Identity Development:**
|
||||
|
||||
1. **Module name** - Extract from their description with proper title case
|
||||
2. **Module code** - Generate kebab-case from name following patterns:
|
||||
- Multi-word descriptive names → shortened kebab-case
|
||||
- Domain-specific terms → recognizable abbreviations
|
||||
- Present suggested code and confirm it works for paths like {bmad_folder}/{{code}}/agents/
|
||||
3. **Module purpose** - Refine their description into 1-2 clear sentences
|
||||
4. **Target audience** - Infer from context or ask if unclear
|
||||
|
||||
**Module Theme Reference Categories:**
|
||||
|
||||
- Domain-Specific (Legal, Medical, Finance, Education)
|
||||
- Creative (RPG/Gaming, Story Writing, Music Production)
|
||||
- Technical (DevOps, Testing, Architecture, Security)
|
||||
- Business (Project Management, Marketing, Sales)
|
||||
- Personal (Journaling, Learning, Productivity)
|
||||
|
||||
<critical>Determine output location:</critical>
|
||||
|
||||
- Module will be created at {installer_output_folder}
|
||||
|
||||
<action>Store module identity for scaffolding</action>
|
||||
|
||||
<template-output>module_identity</template-output>
|
||||
</step>
|
||||
|
||||
<step n="2" goal="Plan module components">
|
||||
<action>Based on the module purpose, intelligently propose an initial component architecture</action>
|
||||
|
||||
**Agents Planning:**
|
||||
|
||||
<action>Suggest agents based on module purpose, considering agent types (Simple/Expert/Module) appropriate to each role</action>
|
||||
|
||||
**Example Agent Patterns by Domain:**
|
||||
|
||||
- Data/Analytics: Analyst, Designer, Builder roles
|
||||
- Gaming/Creative: Game Master, Generator, Storytelling roles
|
||||
- Team/Business: Manager, Facilitator, Documentation roles
|
||||
|
||||
<action>Present suggested agent list with types, explaining we can start with core ones and add others later</action>
|
||||
<action>Confirm which agents resonate with their vision</action>
|
||||
|
||||
**Workflows Planning:**
|
||||
|
||||
<action>Intelligently suggest workflows that complement the proposed agents</action>
|
||||
|
||||
**Example Workflow Patterns by Domain:**
|
||||
|
||||
- Data/Analytics: analyze-dataset, create-dashboard, generate-report
|
||||
- Gaming/Creative: session-prep, generate-encounter, world-building
|
||||
- Team/Business: planning, facilitation, documentation workflows
|
||||
|
||||
<action>For each workflow, note whether it should be Document, Action, or Interactive type</action>
|
||||
<action>Confirm which workflows are most important to start with</action>
|
||||
<action>Determine which to create now vs placeholder</action>
|
||||
|
||||
**Tasks Planning (optional):**
|
||||
<ask>Any special tasks that don't warrant full workflows?</ask>
|
||||
|
||||
<action if="tasks needed">For each task, capture name, purpose, and whether standalone or supporting</action>
|
||||
|
||||
<template-output>module_components</template-output>
|
||||
</step>
|
||||
|
||||
<step n="2b" goal="Determine module complexity">
|
||||
<action>Based on components, intelligently determine module type using criteria:</action>
|
||||
|
||||
**Simple Module Criteria:**
|
||||
|
||||
- 1-2 agents, all Simple type
|
||||
- 1-3 workflows
|
||||
- No complex integrations
|
||||
|
||||
**Standard Module Criteria:**
|
||||
|
||||
- 2-4 agents with mixed types
|
||||
- 3-8 workflows
|
||||
- Some shared resources
|
||||
|
||||
**Complex Module Criteria:**
|
||||
|
||||
- 4+ agents or multiple Module-type agents
|
||||
- 8+ workflows
|
||||
- Complex interdependencies
|
||||
- External integrations
|
||||
|
||||
<action>Present determined module type with explanation of what structure will be set up</action>
|
||||
|
||||
<template-output>module_type</template-output>
|
||||
</step>
|
||||
|
||||
<step n="3" goal="Create module directory structure">
|
||||
<critical>Use module path determined in Step 1:</critical>
|
||||
- The module base path is {{module_path}}
|
||||
|
||||
<action>Create base module directories at the determined path:</action>
|
||||
|
||||
```
|
||||
{{module_code}}/
|
||||
├── agents/ # Agent definitions
|
||||
├── workflows/ # Workflow folders
|
||||
├── tasks/ # Task files (if any)
|
||||
├── templates/ # Shared templates
|
||||
├── data/ # Module data files
|
||||
├── _module-installer/ # Installation configuration
|
||||
│ └── install-config.yaml # Configuration questions (config.yaml generated at install time)
|
||||
└── README.md # Module documentation
|
||||
```
|
||||
|
||||
<action>Create installer directory:</action>
|
||||
|
||||
**INSTALLED MODULE STRUCTURE** (generated in target project after installation):
|
||||
|
||||
```
|
||||
{{module_code}}/
|
||||
├── agents/ # Compiled agents
|
||||
├── workflows/ # Workflow instances
|
||||
├── config.yaml # Generated from install-config.yaml during installation
|
||||
└── data/ # User data directory
|
||||
```
|
||||
|
||||
**SOURCE MODULE** (module-installer is for installation only, not copied to target):
|
||||
|
||||
```
|
||||
{{module_code}}/
|
||||
├── _module-installer/
|
||||
│ ├── install-config.yaml # Configuration questions
|
||||
│ ├── installer.js # Optional custom installation logic
|
||||
│ └── assets/ # Files to copy during install
|
||||
```
|
||||
|
||||
<template-output>directory_structure</template-output>
|
||||
</step>
|
||||
|
||||
<step n="4" goal="Plan module configuration fields">
|
||||
<action>Based on the module purpose and components, determine what configuration settings the module needs</action>
|
||||
|
||||
**Configuration Field Planning:**
|
||||
|
||||
<ask>Does your module need any user-configurable settings during installation?</ask>
|
||||
|
||||
**Common configuration patterns:**
|
||||
|
||||
- Output/data paths (where module saves files)
|
||||
- Feature toggles (enable/disable functionality)
|
||||
- Integration settings (API keys, external services)
|
||||
- Behavior preferences (automation level, detail level)
|
||||
- User skill level or experience settings
|
||||
|
||||
<action>For each configuration field needed, determine:</action>
|
||||
|
||||
1. Field name (snake_case)
|
||||
2. Whether it's INTERACTIVE (asks user) or STATIC (hardcoded)
|
||||
3. Prompt text (if interactive)
|
||||
4. Default value
|
||||
5. Type: text input, single-select, or multi-select
|
||||
6. Result template (how the value gets stored)
|
||||
|
||||
<action>Store planned configuration fields for installer generation in step 7</action>
|
||||
|
||||
<template-output>module_config_fields</template-output>
|
||||
</step>
|
||||
|
||||
<step n="5" goal="Create first agent" optional="true">
|
||||
<ask>Create your first agent now? [yes/no]</ask>
|
||||
|
||||
<check if="yes">
|
||||
<action>Invoke agent builder workflow: {agent_builder}</action>
|
||||
<action>Pass module_components as context input</action>
|
||||
<action>Guide them to create the primary agent for the module</action>
|
||||
|
||||
<critical>Save to module's agents folder:</critical>
|
||||
|
||||
- Save to {{module_path}}/agents/
|
||||
</check>
|
||||
|
||||
<check if="no">
|
||||
<action>Create placeholder file in agents folder with TODO notes including agent name, purpose, and type</action>
|
||||
</check>
|
||||
|
||||
<template-output>first_agent</template-output>
|
||||
</step>
|
||||
|
||||
<step n="6" goal="Create first workflow" optional="true">
|
||||
<ask>Create your first workflow now? [yes/no]</ask>
|
||||
|
||||
<check if="yes">
|
||||
<action>Invoke workflow builder: {workflow_builder}</action>
|
||||
<action>Pass module_components as context input</action>
|
||||
<action>Guide them to create the primary workflow</action>
|
||||
|
||||
<critical>Save to module's workflows folder:</critical>
|
||||
|
||||
- Save to {{module_path}}/workflows/
|
||||
</check>
|
||||
|
||||
<check if="no">
|
||||
<action>Create placeholder workflow folder structure with TODO notes for workflow.yaml, instructions.md, and template.md if document workflow</action>
|
||||
</check>
|
||||
|
||||
<template-output>first_workflow</template-output>
|
||||
</step>
|
||||
|
||||
<step n="7" goal="Setup module installer">
|
||||
<action>Load installer template from: {installer_templates}/install-config.yaml</action>
|
||||
|
||||
<critical>IMPORTANT: Create install-config.yaml NOT install-config.yaml</critical>
|
||||
<critical>This is the STANDARD format that BMAD installer uses</critical>
|
||||
|
||||
Create module-installer/install-config.yaml:
|
||||
|
||||
```yaml
|
||||
# {{module_name}} Module Configuration
|
||||
# This file defines installation questions and module configuration values
|
||||
|
||||
code: {{module_code}}
|
||||
name: "{{module_name}}"
|
||||
default_selected: false # Set to true if this should be selected by default
|
||||
|
||||
# Welcome message shown during installation
|
||||
prompt:
|
||||
- "Thank you for choosing {{module_name}}!"
|
||||
- "{{brief_module_description}}"
|
||||
|
||||
# Core config values are automatically inherited:
|
||||
## user_name
|
||||
## communication_language
|
||||
## document_output_language
|
||||
## output_folder
|
||||
|
||||
# ============================================================================
|
||||
# CONFIGURATION FIELDS (from step 4 planning)
|
||||
# ============================================================================
|
||||
# Each field can be:
|
||||
# 1. INTERACTIVE (has 'prompt' - asks user during installation)
|
||||
# 2. STATIC (no 'prompt' - just uses 'result' value)
|
||||
# ============================================================================
|
||||
|
||||
# EXAMPLE Interactive text input:
|
||||
# output_path:
|
||||
# prompt: "Where should {{module_code}} save outputs?"
|
||||
# default: "output/{{module_code}}"
|
||||
# result: "{project-root}/{value}"
|
||||
|
||||
# EXAMPLE Interactive single-select:
|
||||
# detail_level:
|
||||
# prompt: "How detailed should outputs be?"
|
||||
# default: "standard"
|
||||
# result: "{value}"
|
||||
# single-select:
|
||||
# - value: "minimal"
|
||||
# label: "Minimal - Brief summaries only"
|
||||
# - value: "standard"
|
||||
# label: "Standard - Balanced detail"
|
||||
# - value: "detailed"
|
||||
# label: "Detailed - Comprehensive information"
|
||||
|
||||
# EXAMPLE Static value:
|
||||
# module_version:
|
||||
# result: "1.0.0"
|
||||
|
||||
# EXAMPLE Static path:
|
||||
# data_path:
|
||||
# result: "{project-root}/{bmad_folder}/{{module_code}}/data"
|
||||
|
||||
{{generated_config_fields_from_step_4}}
|
||||
```
|
||||
|
||||
<critical>Save location:</critical>
|
||||
|
||||
- Save to {{module_path}}/module-installer/install-config.yaml
|
||||
|
||||
<ask>Does your module need custom installation logic (database setup, API registration, etc.)?</ask>
|
||||
|
||||
<check if="yes, create installer.js">
|
||||
```javascript
|
||||
// {{module_name}} Module Installer
|
||||
// Custom installation logic
|
||||
|
||||
- @param {Object} options - Installation options
|
||||
- @param {string} options.projectRoot - Project root directory
|
||||
- @param {Object} options.config - Module configuration from install-config.yaml
|
||||
- @param {Array} options.installedIDEs - List of IDE codes being configured
|
||||
- @param {Object} options.logger - Logger instance (log, warn, error methods)
|
||||
- @returns {boolean} - true if successful, false to abort installation
|
||||
|
||||
async function install(options) {
|
||||
const { projectRoot, config, installedIDEs, logger } = options;
|
||||
|
||||
logger.log('Running {{module_name}} custom installer...');
|
||||
|
||||
// TODO: Add custom installation logic here
|
||||
// Examples:
|
||||
// - Create database tables
|
||||
// - Download external assets
|
||||
// - Configure API connections
|
||||
// - Initialize data files
|
||||
// - Set up webhooks or integrations
|
||||
|
||||
logger.log('{{module_name}} custom installation complete!');
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
module.exports = { install };
|
||||
|
||||
`````
|
||||
|
||||
<critical>Save location:</critical>
|
||||
|
||||
- Save to {{module_path}}/module-installer/installer.js
|
||||
</check>
|
||||
|
||||
<check if="no">
|
||||
<action>Skip installer.js creation - the standard installer will handle everything</action>
|
||||
</check>
|
||||
|
||||
<template-output>installer_config</template-output>
|
||||
</step>
|
||||
|
||||
<step n="8" goal="Create module documentation">
|
||||
Generate comprehensive README.md:
|
||||
|
||||
````markdown
|
||||
# {{module_name}}
|
||||
|
||||
{{module_purpose}}
|
||||
|
||||
## Overview
|
||||
|
||||
This module provides:
|
||||
{{component_summary}}
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
bmad install {{module_code}}
|
||||
`````
|
||||
|
||||
````
|
||||
|
||||
## Components
|
||||
|
||||
### Agents ({{agent_count}})
|
||||
|
||||
{{agent_documentation}}
|
||||
|
||||
### Workflows ({{workflow_count}})
|
||||
|
||||
{{workflow_documentation}}
|
||||
|
||||
### Tasks ({{task_count}})
|
||||
|
||||
{{task_documentation}}
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. **Load the main agent:**
|
||||
|
||||
```
|
||||
agent {{primary_agent}}
|
||||
```
|
||||
|
||||
2. **View available commands:**
|
||||
|
||||
```
|
||||
*help
|
||||
```
|
||||
|
||||
3. **Run the main workflow:**
|
||||
```
|
||||
workflow {{primary_workflow}}
|
||||
```
|
||||
|
||||
## Module Structure
|
||||
|
||||
```
|
||||
{{directory_tree}}
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The module can be configured in `{bmad_folder}/{{module_code}}/config.yaml`
|
||||
|
||||
Key settings:
|
||||
{{configuration_options}}
|
||||
|
||||
## Examples
|
||||
|
||||
### Example 1: {{example_use_case}}
|
||||
|
||||
{{example_walkthrough}}
|
||||
|
||||
## Development Roadmap
|
||||
|
||||
- [ ] {{roadmap_item_1}}
|
||||
- [ ] {{roadmap_item_2}}
|
||||
- [ ] {{roadmap_item_3}}
|
||||
|
||||
## Contributing
|
||||
|
||||
To extend this module:
|
||||
|
||||
1. Add new agents using `create-agent` workflow
|
||||
2. Add new workflows using `create-workflow` workflow
|
||||
3. Submit improvements via pull request
|
||||
|
||||
## Author
|
||||
|
||||
Created by {{user_name}} on {{date}}
|
||||
|
||||
````
|
||||
|
||||
<template-output>module_readme</template-output>
|
||||
</step>
|
||||
|
||||
<step n="9" goal="Generate component roadmap">
|
||||
Create a development roadmap for remaining components:
|
||||
|
||||
**TODO.md file:**
|
||||
|
||||
```markdown
|
||||
# {{module_name}} Development Roadmap
|
||||
|
||||
## Phase 1: Core Components
|
||||
|
||||
{{phase1_tasks}}
|
||||
|
||||
## Phase 2: Enhanced Features
|
||||
|
||||
{{phase2_tasks}}
|
||||
|
||||
## Phase 3: Polish and Integration
|
||||
|
||||
{{phase3_tasks}}
|
||||
|
||||
## Quick Commands
|
||||
|
||||
Create new agent:
|
||||
```
|
||||
|
||||
workflow create-agent
|
||||
|
||||
```
|
||||
|
||||
Create new workflow:
|
||||
```
|
||||
|
||||
workflow create-workflow
|
||||
|
||||
```
|
||||
|
||||
## Notes
|
||||
{{development_notes}}
|
||||
```
|
||||
|
||||
Ask if user wants to:
|
||||
|
||||
1. Continue building more components now
|
||||
2. Save roadmap for later development
|
||||
3. Test what's been built so far
|
||||
|
||||
<template-output>development_roadmap</template-output>
|
||||
</step>
|
||||
|
||||
<step n="10" goal="Validate and finalize module">
|
||||
<action>Run validation checks:</action>
|
||||
|
||||
**Structure validation:**
|
||||
|
||||
- All required directories created
|
||||
- Config files properly formatted
|
||||
- Installer configuration valid
|
||||
|
||||
**Component validation:**
|
||||
|
||||
- At least one agent or workflow exists (or planned)
|
||||
- All references use correct paths
|
||||
- Module code consistent throughout
|
||||
|
||||
**Documentation validation:**
|
||||
|
||||
- README.md complete
|
||||
- Installation instructions clear
|
||||
- Examples provided
|
||||
|
||||
<action>Present summary to {user_name}:</action>
|
||||
|
||||
- Module name and code
|
||||
- Location path
|
||||
- Agent count (created vs planned)
|
||||
- Workflow count (created vs planned)
|
||||
- Task count
|
||||
- Installer status
|
||||
|
||||
<action>Provide next steps guidance:</action>
|
||||
|
||||
1. Complete remaining components using roadmap
|
||||
2. Run the BMAD Method installer to this project location
|
||||
3. Select 'Compile Agents' option after confirming folder
|
||||
4. Module will be compiled and available for use
|
||||
5. Test with bmad install command
|
||||
6. Share or integrate with existing system
|
||||
|
||||
<ask>Would you like to:
|
||||
|
||||
- Create another component now?
|
||||
- Test the module installation?
|
||||
- Exit and continue later?
|
||||
</ask>
|
||||
|
||||
<template-output>module_summary</template-output>
|
||||
</step>
|
||||
|
||||
</workflow>
|
||||
@@ -1,400 +0,0 @@
|
||||
# BMAD Module Structure Guide
|
||||
|
||||
## What is a Module?
|
||||
|
||||
A BMAD module is a self-contained package of agents, workflows, tasks, and resources that work together to provide specialized functionality. Think of it as an expansion pack for the BMAD Method.
|
||||
|
||||
## Module Architecture
|
||||
|
||||
### Core Structure
|
||||
|
||||
```
|
||||
# SOURCE MODULE (in BMAD-METHOD project)
|
||||
src/modules/{module-code}/
|
||||
├── agents/ # Agent definitions (.agent.yaml)
|
||||
├── workflows/ # Workflow folders
|
||||
├── tasks/ # Task files
|
||||
├── tools/ # Tool files
|
||||
├── templates/ # Shared templates
|
||||
├── data/ # Static data
|
||||
├── _module-installer/ # Installation configuration
|
||||
│ ├── install-config.yaml # Installation questions & config
|
||||
│ ├── installer.js # Optional custom install logic
|
||||
│ └── assets/ # Files to copy during install
|
||||
└── README.md # Module documentation
|
||||
|
||||
# INSTALLED MODULE (in target project)
|
||||
{project-root}/{bmad_folder}/{module-code}/
|
||||
├── agents/ # Compiled agent files (.md)
|
||||
├── workflows/ # Workflow instances
|
||||
├── tasks/ # Task files
|
||||
├── tools/ # Tool files
|
||||
├── templates/ # Templates
|
||||
├── data/ # Module data
|
||||
├── config.yaml # Generated from install-config.yaml
|
||||
└── README.md # Module documentation
|
||||
```
|
||||
|
||||
## Module Types by Complexity
|
||||
|
||||
### Simple Module (1-2 agents, 2-3 workflows)
|
||||
|
||||
Perfect for focused, single-purpose tools.
|
||||
|
||||
**Example: Code Review Module**
|
||||
|
||||
- 1 Reviewer Agent
|
||||
- 2 Workflows: quick-review, deep-review
|
||||
- Clear, narrow scope
|
||||
|
||||
### Standard Module (3-5 agents, 5-10 workflows)
|
||||
|
||||
Comprehensive solution for a domain.
|
||||
|
||||
**Example: Project Management Module**
|
||||
|
||||
- PM Agent, Scrum Master Agent, Analyst Agent
|
||||
- Workflows: sprint-planning, retrospective, roadmap, user-stories
|
||||
- Integrated component ecosystem
|
||||
|
||||
### Complex Module (5+ agents, 10+ workflows)
|
||||
|
||||
Full platform or framework.
|
||||
|
||||
**Example: RPG Toolkit Module**
|
||||
|
||||
- DM Agent, NPC Agent, Monster Agent, Loot Agent, Map Agent
|
||||
- 15+ workflows for every aspect of game management
|
||||
- Multiple interconnected systems
|
||||
|
||||
## Module Naming Conventions
|
||||
|
||||
### Module Code (kebab-case)
|
||||
|
||||
- `data-viz` - Data Visualization
|
||||
- `team-collab` - Team Collaboration
|
||||
- `rpg-toolkit` - RPG Toolkit
|
||||
- `legal-assist` - Legal Assistant
|
||||
|
||||
### Module Name (Title Case)
|
||||
|
||||
- "Data Visualization Suite"
|
||||
- "Team Collaboration Platform"
|
||||
- "RPG Game Master Toolkit"
|
||||
- "Legal Document Assistant"
|
||||
|
||||
## Component Guidelines
|
||||
|
||||
### Agents per Module
|
||||
|
||||
**Recommended Distribution:**
|
||||
|
||||
- **Primary Agent (1)**: The main interface/orchestrator
|
||||
- **Specialist Agents (2-4)**: Domain-specific experts
|
||||
- **Utility Agents (0-2)**: Helper/support functions
|
||||
|
||||
**Anti-patterns to Avoid:**
|
||||
|
||||
- Too many overlapping agents
|
||||
- Agents that could be combined
|
||||
- Agents without clear purpose
|
||||
|
||||
### Workflows per Module
|
||||
|
||||
**Categories:**
|
||||
|
||||
- **Core Workflows (2-3)**: Essential functionality
|
||||
- **Feature Workflows (3-5)**: Specific capabilities
|
||||
- **Utility Workflows (2-3)**: Supporting operations
|
||||
- **Admin Workflows (0-2)**: Maintenance/config
|
||||
|
||||
**Workflow Complexity Guide:**
|
||||
|
||||
- Simple: 3-5 steps, single output
|
||||
- Standard: 5-10 steps, multiple outputs
|
||||
- Complex: 10+ steps, conditional logic, sub-workflows
|
||||
|
||||
### Tasks per Module
|
||||
|
||||
Tasks should be used for:
|
||||
|
||||
- Single-operation utilities
|
||||
- Shared subroutines
|
||||
- Quick actions that don't warrant workflows
|
||||
|
||||
## Module Dependencies
|
||||
|
||||
### Internal Dependencies
|
||||
|
||||
- Agents can reference module workflows
|
||||
- Workflows can invoke module tasks
|
||||
- Tasks can use module templates
|
||||
|
||||
### External Dependencies
|
||||
|
||||
- Reference other modules via full paths
|
||||
- Declare dependencies in config.yaml
|
||||
- Version compatibility notes
|
||||
|
||||
### Workflow Vendoring (Advanced)
|
||||
|
||||
For modules that need workflows from other modules but want to remain standalone, use **workflow vendoring**:
|
||||
|
||||
**In Agent YAML:**
|
||||
|
||||
```yaml
|
||||
menu:
|
||||
- trigger: command-name
|
||||
workflow: '{project-root}/{bmad_folder}/SOURCE_MODULE/workflows/path/workflow.yaml'
|
||||
workflow-install: '{project-root}/{bmad_folder}/THIS_MODULE/workflows/vendored/workflow.yaml'
|
||||
description: 'Command description'
|
||||
```
|
||||
|
||||
**What Happens:**
|
||||
|
||||
- During installation, workflows are copied from `workflow` to `workflow-install` location
|
||||
- Vendored workflows get `config_source` updated to reference this module's config
|
||||
- Compiled agent only references the `workflow-install` path
|
||||
- Module becomes fully standalone - no source module dependency required
|
||||
|
||||
**Use Cases:**
|
||||
|
||||
- Specialized modules that reuse common workflows with different configs
|
||||
- Domain-specific adaptations (e.g., game dev using standard dev workflows)
|
||||
- Testing workflows in isolation
|
||||
|
||||
**Benefits:**
|
||||
|
||||
- Module independence (no forced dependencies)
|
||||
- Clean namespace (workflows in your module)
|
||||
- Config isolation (use your module's settings)
|
||||
- Customization ready (modify vendored workflows freely)
|
||||
|
||||
## Installation Infrastructure
|
||||
|
||||
### Required: module-installer/install-config.yaml
|
||||
|
||||
This file defines both installation questions AND static configuration values:
|
||||
|
||||
```yaml
|
||||
# Module metadata
|
||||
code: module-code
|
||||
name: 'Module Name'
|
||||
default_selected: false
|
||||
|
||||
# Welcome message during installation
|
||||
prompt:
|
||||
- 'Welcome to Module Name!'
|
||||
- 'Brief description here'
|
||||
|
||||
# Core values automatically inherited from installer:
|
||||
## user_name
|
||||
## communication_language
|
||||
## document_output_language
|
||||
## output_folder
|
||||
|
||||
# INTERACTIVE fields (ask user during install)
|
||||
output_location:
|
||||
prompt: 'Where should module outputs be saved?'
|
||||
default: 'output/module-code'
|
||||
result: '{project-root}/{value}'
|
||||
|
||||
feature_level:
|
||||
prompt: 'Which feature set?'
|
||||
default: 'standard'
|
||||
result: '{value}'
|
||||
single-select:
|
||||
- value: 'basic'
|
||||
label: 'Basic - Core features only'
|
||||
- value: 'standard'
|
||||
label: 'Standard - Recommended features'
|
||||
- value: 'advanced'
|
||||
label: 'Advanced - All features'
|
||||
|
||||
# STATIC fields (no prompt, just hardcoded values)
|
||||
module_version:
|
||||
result: '1.0.0'
|
||||
|
||||
data_path:
|
||||
result: '{project-root}/{bmad_folder}/module-code/data'
|
||||
```
|
||||
|
||||
**Key Points:**
|
||||
|
||||
- File is named `install-config.yaml` (NOT install-config.yaml)
|
||||
- Supports both interactive prompts and static values
|
||||
- `result` field uses placeholders: `{value}`, `{project-root}`, `{directory_name}`
|
||||
- Installer generates final `config.yaml` from this template
|
||||
|
||||
### Optional: module-installer/installer.js
|
||||
|
||||
For complex installations requiring custom logic:
|
||||
|
||||
```javascript
|
||||
/**
|
||||
* @param {Object} options - Installation options
|
||||
* @param {string} options.projectRoot - Target project directory
|
||||
* @param {Object} options.config - Config from install-config.yaml
|
||||
* @param {Array} options.installedIDEs - IDEs being configured
|
||||
* @param {Object} options.logger - Logger (log, warn, error)
|
||||
* @returns {boolean} - true if successful
|
||||
*/
|
||||
async function install(options) {
|
||||
// Custom installation logic here
|
||||
// - Database setup
|
||||
// - API configuration
|
||||
// - External downloads
|
||||
// - Integration setup
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
module.exports = { install };
|
||||
```
|
||||
|
||||
### Optional: module-installer/assets/
|
||||
|
||||
Files to copy during installation:
|
||||
|
||||
- External configurations
|
||||
- Documentation
|
||||
- Example files
|
||||
- Integration scripts
|
||||
|
||||
## Module Lifecycle
|
||||
|
||||
### Development Phases
|
||||
|
||||
1. **Planning Phase**
|
||||
- Define scope and purpose
|
||||
- Identify components
|
||||
- Design architecture
|
||||
|
||||
2. **Scaffolding Phase**
|
||||
- Create directory structure
|
||||
- Generate configurations
|
||||
- Setup installer
|
||||
|
||||
3. **Building Phase**
|
||||
- Create agents incrementally
|
||||
- Build workflows progressively
|
||||
- Add tasks as needed
|
||||
|
||||
4. **Testing Phase**
|
||||
- Test individual components
|
||||
- Verify integration
|
||||
- Validate installation
|
||||
|
||||
5. **Deployment Phase**
|
||||
- Package module
|
||||
- Document usage
|
||||
- Distribute/share
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Module Cohesion
|
||||
|
||||
- All components should relate to module theme
|
||||
- Clear boundaries between modules
|
||||
- No feature creep
|
||||
|
||||
### Progressive Enhancement
|
||||
|
||||
- Start with MVP (1 agent, 2 workflows)
|
||||
- Add components based on usage
|
||||
- Refactor as patterns emerge
|
||||
|
||||
### Documentation Standards
|
||||
|
||||
- Every module needs README.md
|
||||
- Each agent needs purpose statement
|
||||
- Workflows need clear descriptions
|
||||
- Include examples and quickstart
|
||||
|
||||
### Naming Consistency
|
||||
|
||||
- Use module code prefix for uniqueness
|
||||
- Consistent naming patterns within module
|
||||
- Clear, descriptive names
|
||||
|
||||
## Example Modules
|
||||
|
||||
### Example 1: Personal Productivity
|
||||
|
||||
```
|
||||
productivity/
|
||||
├── agents/
|
||||
│ ├── task-manager.md # GTD methodology
|
||||
│ └── focus-coach.md # Pomodoro timer
|
||||
├── workflows/
|
||||
│ ├── daily-planning/ # Morning routine
|
||||
│ ├── weekly-review/ # Week retrospective
|
||||
│ └── project-setup/ # New project init
|
||||
└── config.yaml
|
||||
```
|
||||
|
||||
### Example 2: Content Creation
|
||||
|
||||
```
|
||||
content/
|
||||
├── agents/
|
||||
│ ├── writer.md # Blog/article writer
|
||||
│ ├── editor.md # Copy editor
|
||||
│ └── seo-optimizer.md # SEO specialist
|
||||
├── workflows/
|
||||
│ ├── blog-post/ # Full blog creation
|
||||
│ ├── social-media/ # Social content
|
||||
│ ├── email-campaign/ # Email sequence
|
||||
│ └── content-calendar/ # Planning
|
||||
└── templates/
|
||||
├── blog-template.md
|
||||
└── email-template.md
|
||||
```
|
||||
|
||||
### Example 3: DevOps Automation
|
||||
|
||||
```
|
||||
devops/
|
||||
├── agents/
|
||||
│ ├── deploy-master.md # Deployment orchestrator
|
||||
│ ├── monitor.md # System monitoring
|
||||
│ ├── incident-responder.md # Incident management
|
||||
│ └── infra-architect.md # Infrastructure design
|
||||
├── workflows/
|
||||
│ ├── ci-cd-setup/ # Pipeline creation
|
||||
│ ├── deploy-app/ # Application deployment
|
||||
│ ├── rollback/ # Emergency rollback
|
||||
│ ├── health-check/ # System verification
|
||||
│ └── incident-response/ # Incident handling
|
||||
├── tasks/
|
||||
│ ├── check-status.md # Quick status check
|
||||
│ └── notify-team.md # Team notifications
|
||||
└── data/
|
||||
└── runbooks/ # Operational guides
|
||||
```
|
||||
|
||||
## Module Evolution Pattern
|
||||
|
||||
```
|
||||
Simple Module → Standard Module → Complex Module → Module Suite
|
||||
(MVP) (Enhanced) (Complete) (Ecosystem)
|
||||
```
|
||||
|
||||
## Common Pitfalls
|
||||
|
||||
1. **Over-engineering**: Starting too complex
|
||||
2. **Under-planning**: No clear architecture
|
||||
3. **Poor boundaries**: Module does too much
|
||||
4. **Weak integration**: Components don't work together
|
||||
5. **Missing docs**: No clear usage guide
|
||||
|
||||
## Success Metrics
|
||||
|
||||
A well-designed module has:
|
||||
|
||||
- ✅ Clear, focused purpose
|
||||
- ✅ Cohesive components
|
||||
- ✅ Smooth installation
|
||||
- ✅ Comprehensive docs
|
||||
- ✅ Room for growth
|
||||
- ✅ Happy users!
|
||||
@@ -1,52 +0,0 @@
|
||||
# Build Module Workflow Configuration
|
||||
name: create-module
|
||||
description: "Interactive workflow to build complete BMAD modules with agents, workflows, tasks, and installation infrastructure"
|
||||
author: "BMad"
|
||||
|
||||
# Critical variables load from config_source
|
||||
config_source: "{project-root}/{bmad_folder}/bmb/config.yaml"
|
||||
custom_module_location: "{config_source}:custom_module_location"
|
||||
communication_language: "{config_source}:communication_language"
|
||||
user_name: "{config_source}:user_name"
|
||||
|
||||
# Reference guides for module building
|
||||
module_structure_guide: "{installed_path}/module-structure.md"
|
||||
installer_templates: "{installed_path}/installer-templates/"
|
||||
|
||||
# Use existing build workflows
|
||||
agent_builder: "{project-root}/{bmad_folder}/bmb/workflows/create-agent/workflow.yaml"
|
||||
workflow_builder: "{project-root}/{bmad_folder}/bmb/workflows/create-workflow/workflow.yaml"
|
||||
brainstorming_workflow: "{project-root}/{bmad_folder}/core/workflows/brainstorming/workflow.yaml"
|
||||
brainstorming_context: "{installed_path}/brainstorm-context.md"
|
||||
|
||||
# Reference examples - for learning patterns
|
||||
bmm_module_dir: "{project-root}/{bmad_folder}/bmm/"
|
||||
cis_module_dir: "{project-root}/{bmad_folder}/cis/"
|
||||
existing_agents_dir: "{project-root}/{bmad_folder}/*/agents/"
|
||||
existing_workflows_dir: "{project-root}/{bmad_folder}/*/workflows/"
|
||||
|
||||
# Optional user inputs - discovered if they exist
|
||||
input_file_patterns:
|
||||
module_brief:
|
||||
description: "Module brief with vision and requirements (optional)"
|
||||
whole: "{output_folder}/module-brief-*.md"
|
||||
load_strategy: "FULL_LOAD"
|
||||
brainstorming:
|
||||
description: "Brainstorming session outputs (optional)"
|
||||
whole: "{output_folder}/brainstorming-*.md"
|
||||
load_strategy: "FULL_LOAD"
|
||||
|
||||
# Module path and component files
|
||||
installed_path: "{project-root}/{bmad_folder}/bmb/workflows/create-module"
|
||||
template: false # This is an interactive scaffolding workflow
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
|
||||
# Output configuration - creates entire module structure
|
||||
# Save to custom_module_location/{{module_code}}
|
||||
installer_output_folder: "{custom_module_location}/{{module_code}}"
|
||||
|
||||
standalone: true
|
||||
|
||||
# Web bundle configuration
|
||||
web_bundle: false # BMB workflows run locally in BMAD-METHOD project
|
||||
@@ -106,7 +106,7 @@ Modules can share workflows:
|
||||
|
||||
```yaml
|
||||
# In agent menu item:
|
||||
workflow: '{project-root}/{bmad_folder}/other-module/workflows/shared-workflow/workflow.yaml'
|
||||
workflow: '{project-root}/.bmad/other-module/workflows/shared-workflow/workflow.yaml'
|
||||
```
|
||||
|
||||
Common patterns:
|
||||
@@ -151,7 +151,7 @@ Changes are reviewed and approved by you before being applied.
|
||||
- Can configure web bundles
|
||||
- Are the development source of truth
|
||||
|
||||
**Installed modules** (in {bmad_folder}/):
|
||||
**Installed modules** (in .bmad/):
|
||||
|
||||
- Are deployed to target projects
|
||||
- Use config.yaml for user customization
|
||||
|
||||
@@ -5,7 +5,7 @@ Use this checklist to validate module edits meet BMAD Core standards.
|
||||
## Module Structure Validation
|
||||
|
||||
- [ ] Module has clear 3-letter code (bmm, bmb, cis, etc.)
|
||||
- [ ] Module is in correct location (src/modules/ for source, {bmad_folder}/ for installed)
|
||||
- [ ] Module is in correct location (src/modules/ for source, .bmad/ for installed)
|
||||
- [ ] agents/ directory exists
|
||||
- [ ] workflows/ directory exists
|
||||
- [ ] config.yaml exists in module root
|
||||
@@ -24,7 +24,6 @@ Use this checklist to validate module edits meet BMAD Core standards.
|
||||
|
||||
### Optional Fields (if used)
|
||||
|
||||
- [ ] custom_agent_location documented
|
||||
- [ ] custom_module_location documented
|
||||
- [ ] Module-specific fields documented in README
|
||||
|
||||
@@ -128,7 +127,7 @@ Use this checklist to validate module edits meet BMAD Core standards.
|
||||
|
||||
- [ ] Web bundles configured in workflow.yaml files
|
||||
- [ ] All referenced files included in web_bundle_files
|
||||
- [ ] Paths are {bmad_folder}/-relative (not project-root)
|
||||
- [ ] Paths are .bmad/-relative (not project-root)
|
||||
- [ ] No config_source references in web bundles
|
||||
- [ ] Invoked workflows included in dependencies
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Edit Module - Module Editor Instructions
|
||||
|
||||
<critical>The workflow execution engine is governed by: {project-root}/{bmad_folder}/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {project-root}/{bmad_folder}/bmb/workflows/edit-module/workflow.yaml</critical>
|
||||
<critical>The workflow execution engine is governed by: {project-root}/.bmad/core/tasks/workflow.xml</critical>
|
||||
<critical>You MUST have already loaded and processed: {project-root}/.bmad/bmb/workflows/edit-module/workflow.yaml</critical>
|
||||
<critical>This workflow uses ADAPTIVE FACILITATION - adjust your communication based on context and user needs</critical>
|
||||
<critical>The goal is COLLABORATIVE IMPROVEMENT - work WITH the user, not FOR them</critical>
|
||||
<critical>Communicate all responses in {communication_language}</critical>
|
||||
@@ -9,7 +9,7 @@
|
||||
<workflow>
|
||||
|
||||
<step n="1" goal="Load and deeply understand the target module">
|
||||
<ask>What is the path to the module you want to edit? (provide path to module directory like {bmad_folder}/bmm/ or src/modules/bmm/)</ask>
|
||||
<ask>What is the path to the module you want to edit? (provide path to module directory like .bmad/bmm/ or src/modules/bmm/)</ask>
|
||||
|
||||
<action>Load the module directory structure completely:
|
||||
|
||||
@@ -187,7 +187,7 @@ Let the conversation flow naturally. Build a shared vision of what "better" look
|
||||
**If setting up cross-module integration:**
|
||||
|
||||
- Identify which workflows from other modules are needed
|
||||
- Show how to reference workflows properly: {project-root}/{bmad_folder}/{{module}}/workflows/{{workflow}}/workflow.yaml
|
||||
- Show how to reference workflows properly: {project-root}/.bmad/{{module}}/workflows/{{workflow}}/workflow.yaml
|
||||
- Document the integration in README
|
||||
- Ensure dependencies are clear
|
||||
- Consider adding example usage
|
||||
|
||||
@@ -4,26 +4,26 @@ description: "Edit existing BMAD modules (structure, agents, workflows, document
|
||||
author: "BMad"
|
||||
|
||||
# Critical variables load from config_source
|
||||
config_source: "{project-root}/{bmad_folder}/bmb/config.yaml"
|
||||
config_source: "{project-root}/.bmad/bmb/config.yaml"
|
||||
communication_language: "{config_source}:communication_language"
|
||||
user_name: "{config_source}:user_name"
|
||||
|
||||
# Required Data Files - Critical for understanding module conventions
|
||||
module_structure_guide: "{project-root}/{bmad_folder}/bmb/workflows/create-module/module-structure.md"
|
||||
module_structure_guide: "{project-root}/.bmad/bmb/workflows/create-module/module-structure.md"
|
||||
|
||||
# Related workflow editors
|
||||
agent_editor: "{project-root}/{bmad_folder}/bmb/workflows/edit-agent/workflow.yaml"
|
||||
workflow_editor: "{project-root}/{bmad_folder}/bmb/workflows/edit-workflow/workflow.yaml"
|
||||
agent_editor: "{project-root}/.bmad/bmb/workflows/edit-agent/workflow.yaml"
|
||||
workflow_editor: "{project-root}/.bmad/bmb/workflows/edit-workflow/workflow.yaml"
|
||||
|
||||
# Reference examples - for learning patterns
|
||||
bmm_module_dir: "{project-root}/{bmad_folder}/bmm/"
|
||||
bmb_module_dir: "{project-root}/{bmad_folder}/bmb/"
|
||||
cis_module_dir: "{project-root}/{bmad_folder}/cis/"
|
||||
existing_agents_dir: "{project-root}/{bmad_folder}/*/agents/"
|
||||
existing_workflows_dir: "{project-root}/{bmad_folder}/*/workflows/"
|
||||
bmm_module_dir: "{project-root}/.bmad/bmm/"
|
||||
bmb_module_dir: "{project-root}/.bmad/bmb/"
|
||||
cis_module_dir: "{project-root}/.bmad/cis/"
|
||||
existing_agents_dir: "{project-root}/.bmad/*/agents/"
|
||||
existing_workflows_dir: "{project-root}/.bmad/*/workflows/"
|
||||
|
||||
# Module path and component files
|
||||
installed_path: "{project-root}/{bmad_folder}/bmb/workflows/edit-module"
|
||||
installed_path: "{project-root}/.bmad/bmb/workflows/edit-module"
|
||||
template: false # This is an action workflow - no template needed
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
|
||||
@@ -254,8 +254,8 @@ To customize this workflow:
|
||||
|
||||
For issues or questions:
|
||||
|
||||
- Review the workflow creation guide at `/{bmad_folder}/bmb/workflows/create-workflow/workflow-creation-guide.md`
|
||||
- Study existing module examples in `/{bmad_folder}/` for patterns and inspiration
|
||||
- Review the workflow creation guide at `/.bmad/bmb/workflows/create-workflow/workflow-creation-guide.md`
|
||||
- Study existing module examples in `/.bmad/` for patterns and inspiration
|
||||
- Validate output using `checklist.md`
|
||||
- Consult module structure guide at `create-module/module-structure.md`
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user