Compare commits

..

12 Commits

Author SHA1 Message Date
mrsaifullah52 11f9097024
Merge c6e53dbbc7 into 0b9290789e 2025-12-04 21:39:05 +01:00
Brian Madison 0b9290789e installer fixes 2025-12-03 22:44:13 -06:00
Brian Madison aa1cf76f88 new workflow types generate slash commands 2025-12-03 21:36:24 -06:00
Alex Verkhovsky b8b4b65c10
feat(discord): compact plain-text notifications with bug fixes (#1021)
- Fix esc() bracket expression (] must be first in POSIX regex)
- Fix delete job: inline helper to avoid checkout of deleted ref
- Fix issue notifications: attribute close/reopen to actor, not author
- Simplify trunc() comment (remove false Unicode-safe claim)
- Smart truncation with wall-of-text detection
- Escape markdown and @mentions for safe display

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2025-12-03 20:22:59 -06:00
Brian Madison 73db5538bf roo installer improovement 2025-12-03 19:56:23 -06:00
Philip Louw 41f9cc1913
feat: add kiro-cli installer with BMad Core compliance (#993)
- Implement KiroCliSetup class extending BaseIdeSetup
- Generate 21 agents from YAML sources with JSON configs and markdown prompts
- Add runtime resource loading and numbered menu formatting
- Include BMad Core validation for required agent fields
- Fix agent naming conventions to prevent double prefixes
- Add .kiro/ directory to gitignore

Follows BMad Method standards for IDE installer integration.

Co-authored-by: Brian <bmadcode@gmail.com>
2025-12-03 12:17:02 -06:00
Alex Verkhovsky 686af5b0ee
feat: add intelligent routing to quick-dev workflow (#1019)
Add escalation threshold and scale-adaptive routing to quick-dev:
- Simple requests get standard [t]/[e] choice
- Complex requests evaluated against project-levels.yaml
- Level 1-2 or uncertain → tech-spec recommended
- Level 3+ → BMad Method (workflow-init) recommended

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2025-12-03 12:14:36 -06:00
Dicky Moore 65658a499b
Feat/sprint status command (#1012)
* feat: add sprint-status command

* minor changes to reduce the change radius

---------

Co-authored-by: mq-bot <mq-bot@local>
Co-authored-by: Brian <bmadcode@gmail.com>
2025-12-03 12:00:34 -06:00
Alex Verkhovsky d553a09f73
docs: create CODE_OF_CONDUCT.md (#1013)
* docs: create CODE_OF_CONDUCT.md

* chore: exclude CODE_OF_CONDUCT.md from Prettier

Third-party artifact should not be reformatted.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: add Discord as enforcement contact channel

Uses permanent invite link. Discord is common practice for
open source project Code of Conduct enforcement.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-03 10:42:28 -06:00
Brian Madison c79d081128 fix pm and architect agents menu items to load new step sharded workflows 2025-12-02 22:40:57 -06:00
Brian Madison 0b3964902a workflow builder has template LOD output options 2025-12-02 22:36:44 -06:00
Brian Madison 1e6fc4ba14 workflow creation update 2025-12-02 21:44:30 -06:00
81 changed files with 3064 additions and 1898 deletions

15
.github/scripts/discord-helpers.sh vendored Normal file
View 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"
}

View File

@ -1,16 +1,286 @@
name: Discord Notification 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: 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 runs-on: ubuntu-latest
steps: steps:
- name: Notify Discord - name: Notify Discord
uses: sarisia/actions-status-discord@v1 env:
if: always() WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
with: REF_TYPE: ${{ github.event.ref_type }}
webhook: ${{ secrets.DISCORD_WEBHOOK }} REF: ${{ github.event.ref }}
status: ${{ job.status }} ACTOR: ${{ github.actor }}
title: "Triggered by ${{ github.event_name }}" run: |
color: 0x5865F2 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 @-

2
.gitignore vendored
View File

@ -71,3 +71,5 @@ z*/
.github/chatmodes .github/chatmodes
.agent .agent
.agentvibes/ .agentvibes/
.kiro/
.roo

View File

@ -1,6 +1,9 @@
# Test fixtures with intentionally broken/malformed files # Test fixtures with intentionally broken/malformed files
test/fixtures/** test/fixtures/**
# Contributor Covenant (external standard)
CODE_OF_CONDUCT.md
# BMAD runtime folders (user-specific, not in repo) # BMAD runtime folders (user-specific, not in repo)
.bmad/ .bmad/
.bmad*/ .bmad*/

128
CODE_OF_CONDUCT.md Normal file
View 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.

View File

@ -0,0 +1,513 @@
---
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

View File

@ -1,5 +1,5 @@
--- ---
name: Brainstorming Session name: brainstorming-session
description: Facilitate interactive brainstorming sessions using diverse creative techniques and ideation methods description: Facilitate interactive brainstorming sessions using diverse creative techniques and ideation methods
context_file: '' # Optional context file path for project-specific guidance context_file: '' # Optional context file path for project-specific guidance
--- ---

View File

@ -1,5 +1,5 @@
--- ---
name: Party Mode name: party-mode
description: Orchestrates group discussions between all installed BMAD agents, enabling natural multi-agent conversations description: Orchestrates group discussions between all installed BMAD agents, enabling natural multi-agent conversations
--- ---

View File

@ -69,7 +69,7 @@ workflow-folder/
Standard variables in step files: Standard variables in step files:
```yaml ```yaml
workflow_path: '{project-root}/{bmad_folder}/bmb/reference/workflows/[workflow-name]' workflow_path: '{project-root}/{*bmad_folder*}/bmb/reference/workflows/[workflow-name]'
thisStepFile: '{workflow_path}/steps/step-[N]-[name].md' thisStepFile: '{workflow_path}/steps/step-[N]-[name].md'
nextStepFile: '{workflow_path}/steps/step-[N+1]-[name].md' nextStepFile: '{workflow_path}/steps/step-[N+1]-[name].md'
workflowFile: '{workflow_path}/workflow.md' workflowFile: '{workflow_path}/workflow.md'

View File

@ -13,7 +13,7 @@ description: 'Initialize the [workflow-type] workflow by detecting continuation
<!-- Path Definitions --> <!-- Path Definitions -->
workflow_path: '{project-root}/{bmad_folder}/[module-path]/workflows/[workflow-name]' workflow*path: '{project-root}/{\_bmad_folder*}/[module-path]/workflows/[workflow-name]'
# File References (all use {variable} format in file) # File References (all use {variable} format in file)

View File

@ -13,7 +13,7 @@ description: 'Handle workflow continuation from previous session'
<!-- Path Definitions --> <!-- Path Definitions -->
workflow_path: '{project-root}/{bmad_folder}/[module-path]/workflows/[workflow-name]' workflow*path: '{project-root}/{\_bmad_folder*}/[module-path]/workflows/[workflow-name]'
# File References (all use {variable} format in file) # File References (all use {variable} format in file)

View File

@ -3,7 +3,7 @@ name: "step-{{stepNumber}}-{{stepName}}"
description: "{{stepDescription}}" description: "{{stepDescription}}"
# Path Definitions # Path Definitions
workflow_path: "{project-root}/{bmad_folder}/{{targetModule}}/workflows/{{workflowName}}" workflow_path: "{project-root}/{*bmad_folder*}/{{targetModule}}/workflows/{{workflowName}}"
# File References # File References
thisStepFile: "{workflow_path}/steps/step-{{stepNumber}}-{{stepName}}.md" thisStepFile: "{workflow_path}/steps/step-{{stepNumber}}-{{stepName}}.md"
@ -15,9 +15,9 @@ workflowFile: "{workflow_path}/workflow.md"
outputFile: "{output_folder}/{{outputFileName}}-{project_name}.md" outputFile: "{output_folder}/{{outputFileName}}-{project_name}.md"
{{/hasOutput}} {{/hasOutput}}
# Task References # 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" advancedElicitationTask: "{project-root}/{*bmad_folder*}/core/tasks/advanced-elicitation.xml"
partyModeWorkflow: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md" partyModeWorkflow: "{project-root}/{*bmad_folder*}/core/workflows/party-mode/workflow.md"
{{#hasTemplates}} {{#hasTemplates}}
# Template References # Template References

View File

@ -11,7 +11,7 @@ description: '[Brief description of what this step accomplishes]'
<!-- Path Definitions --> <!-- 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_folder*}/bmb/reference/workflows/[workflow-name]' # the folder the workflow.md file is in
# File References (all use {variable} format in file) # 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 ) # 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' advancedElicitationTask: '{project-root}/{_bmad_folder_}/core/tasks/advanced-elicitation.xml'
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md' partyModeWorkflow: '{project-root}/{_bmad_folder_}/core/workflows/party-mode/workflow.md'
# Template References (if this step uses a specific templates) # Template References (if this step uses a specific templates)

View File

@ -53,7 +53,7 @@ web_bundle: [true/false] # Set to true for inclusion in web bundle builds
### 1. Module Configuration Loading ### 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_folder_}/[MODULE FOLDER]/config.yaml and resolve:
- `project_name`, `output_folder`, `user_name`, `communication_language`, `document_output_language`, [MODULE VARS] - `project_name`, `output_folder`, `user_name`, `communication_language`, `document_output_language`, [MODULE VARS]

View File

@ -49,7 +49,7 @@ This uses **step-file architecture** for disciplined execution:
### 1. Configuration Loading ### 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_folder_}/{{targetModule}}/config.yaml and resolve:
- `project_name`, `output_folder`, `user_name`, `communication_language`, `document_output_language` - `project_name`, `output_folder`, `user_name`, `communication_language`, `document_output_language`

View File

@ -1,5 +1,5 @@
--- ---
name: Create Agent name: create-agent
description: Interactive workflow to build BMAD Core compliant agents with optional brainstorming, persona development, and command structure description: Interactive workflow to build BMAD Core compliant agents with optional brainstorming, persona development, and command structure
web_bundle: true web_bundle: true
--- ---

View File

@ -1,6 +1,6 @@
--- ---
name: 'step-01-init' name: 'step-01-init'
description: 'Initialize workflow creation session by detecting continuation state and setting up project' description: 'Initialize workflow creation session by gathering project information and setting up unique workflow folder'
# Path Definitions # Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow' workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
@ -9,24 +9,19 @@ workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
thisStepFile: '{workflow_path}/steps/step-01-init.md' thisStepFile: '{workflow_path}/steps/step-01-init.md'
nextStepFile: '{workflow_path}/steps/step-02-gather.md' nextStepFile: '{workflow_path}/steps/step-02-gather.md'
workflowFile: '{workflow_path}/workflow.md' workflowFile: '{workflow_path}/workflow.md'
# Output files for workflow creation process # Output files for workflow creation process
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}' targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}'
workflowPlanFile: '{targetWorkflowPath}/workflow-plan-{new_workflow_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'
# Template References # Template References
projectInfoTemplate: '{workflow_path}/templates/project-info.md' # No workflow plan template needed - will create plan file directly
workflowPlanTemplate: '{workflow_path}/templates/workflow-plan.md'
--- ---
# Step 1: Workflow Creation Initialization # Step 1: Workflow Creation Initialization
## STEP GOAL: ## STEP GOAL:
To initialize the workflow creation process by detecting continuation state, understanding project context, and preparing for collaborative workflow design. To initialize the workflow creation process by understanding project context, determining a unique workflow name, and preparing for collaborative workflow design.
## MANDATORY EXECUTION RULES (READ FIRST): ## MANDATORY EXECUTION RULES (READ FIRST):
@ -50,7 +45,7 @@ To initialize the workflow creation process by detecting continuation state, und
- 🎯 Focus ONLY on initialization and project understanding - 🎯 Focus ONLY on initialization and project understanding
- 🚫 FORBIDDEN to start designing workflow steps in this step - 🚫 FORBIDDEN to start designing workflow steps in this step
- 💬 Ask questions conversationally to understand context - 💬 Ask questions conversationally to understand context
- 🚪 DETECT existing workflow state and handle continuation properly - 🚪 ENSURE unique workflow naming to avoid conflicts
## EXECUTION PROTOCOLS: ## EXECUTION PROTOCOLS:
@ -68,35 +63,7 @@ To initialize the workflow creation process by detecting continuation state, und
## INITIALIZATION SEQUENCE: ## INITIALIZATION SEQUENCE:
### 1. Check for Existing Workflow Creation ### 1. Project Discovery
First, check if there's already a workflow folder with the proposed name:
- Look for folder at `{custom_workflow_location}/{new_workflow_name}/`
- If exists, check if it contains a workflow.md file
- If not exists, this is a fresh workflow creation session
### 2. Handle Continuation (If Workflow Exists)
If the workflow folder exists and has been worked on:
- **STOP here** and continue with step 4 (Welcome Back)
- Do not proceed with fresh initialization
- Let step 4 handle the continuation logic
### 3. Handle Completed Workflow
If the workflow folder exists AND is complete:
- Ask user: "I found an existing workflow '{new_workflow_name}' from [date]. Would you like to:
1. Create a new workflow with a different name
2. Review or modify the existing workflow"
- If option 1: Get a new workflow name
- If option 2: Load step 5 (Review)
### 4. Fresh Workflow Setup (If No Workflow)
#### A. Project Discovery
Welcome the user and understand their needs: Welcome the user and understand their needs:
"Welcome! I'm excited to help you create a new workflow. Let's start by understanding what you want to build." "Welcome! I'm excited to help you create a new workflow. Let's start by understanding what you want to build."
@ -107,33 +74,55 @@ Ask conversationally:
- What problem will this workflow solve? - What problem will this workflow solve?
- Who will use this workflow? - Who will use this workflow?
- What module will it belong to (bmb, bmm, cis, custom, stand-alone)? - What module will it belong to (bmb, bmm, cis, custom, stand-alone)?
- What would you like to name this workflow folder? (kebab-case, e.g., "user-story-generator")
#### B. Create Workflow Plan Document Also, Ask / suggest a workflow name / folder: (kebab-case, e.g., "user-story-generator")
Create the workflow plan document at `{workflowPlanFile}` using the workflow plan template `{workflowPlanTemplate}`. ### 2. Ensure Unique Workflow Name
Initialize frontmatter with:
```yaml After getting the workflow name:
**Check for existing workflows:**
- Look for folder at `{custom_workflow_location}/{new_workflow_name}/`
- If it exists, inform the user and suggest or get from them a unique name or postfix
**Example alternatives:**
- Original: "user-story-generator"
- Alternatives: "user-story-creator", "user-story-generator-2025", "user-story-generator-enhanced"
**Loop until we have a unique name that doesn't conflict.**
### 3. Determine Target Location
Based on the module selection, confirm the target location:
- For bmb module: `{custom_workflow_location}` (defaults to `{bmad_folder}/custom/src/workflows`)
- For other modules: Check their install-config.yaml for custom workflow locations
- Confirm the exact folder path where the workflow will be created
- Store the confirmed path as `{targetWorkflowPath}`
### 4. Create Workflow Plan Document
Create the workflow plan document at `{workflowPlanFile}` with the following initial content:
```markdown
--- ---
workflowName: ''
targetModule: ''
workflowType: ''
flowPattern: ''
date: [current date]
user_name: { user_name }
stepsCompleted: [1] stepsCompleted: [1]
lastStep: 'init'
--- ---
# Workflow Creation Plan: {new_workflow_name}
## Initial Project Context
- **Module:** [module from user]
- **Target Location:** {targetWorkflowPath}
- **Created:** [current date]
``` ```
This plan will capture all requirements and design details before building the actual workflow. This plan will capture all requirements and design details before building the actual workflow.
### 5. Welcome Message ### 5. Present MENU OPTIONS
"Great! I'm ready to help you create a structured workflow using our step-based architecture. We'll work together to design a workflow that's collaborative, maintainable, and follows best practices."
### 6. Present MENU OPTIONS
Display: **Proceeding to requirements gathering...** Display: **Proceeding to requirements gathering...**
@ -145,7 +134,7 @@ Display: **Proceeding to requirements gathering...**
#### Menu Handling Logic: #### Menu Handling Logic:
- After setup completion, immediately load, read entire file, then execute `{workflow_path}/step-02-gather.md` to begin requirements gathering - After setup completion and the workflow folder with the workflow plan file created already, only then immediately load, read entire file, and then execute `{workflow_path}/steps/step-02-gather.md` to begin requirements gathering
--- ---

View File

@ -7,18 +7,16 @@ workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References # File References
thisStepFile: '{workflow_path}/steps/step-02-gather.md' thisStepFile: '{workflow_path}/steps/step-02-gather.md'
nextStepFile: '{workflow_path}/steps/step-03-tools-overview.md' nextStepFile: '{workflow_path}/steps/step-03-tools-configuration.md'
workflowFile: '{workflow_path}/workflow.md'
# Output files for workflow creation process # Output files for workflow creation process
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}' targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}'
workflowPlanFile: '{targetWorkflowPath}/workflow-plan-{new_workflow_name}.md'
# Task References # Task References
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml' advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md' partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md'
# Template References # Template References
requirementsTemplate: '{workflow_path}/templates/requirements-section.md' # No template needed - will append requirements directly to workflow plan
--- ---
# Step 2: Requirements Gathering # Step 2: Requirements Gathering
@ -156,25 +154,7 @@ Define what the workflow produces:
- Should outputs be saved automatically? - Should outputs be saved automatically?
- What format should outputs be in? - What format should outputs be in?
### 8. Target Location and Module Configuration ### 8. Success Criteria
Determine where the workflow will be created:
- For bmb module: Workflows go to `{custom_workflow_location}` (defaults to `{bmad_folder}/custom/src/workflows`)
- For other modules: Check their install-config.yaml for custom workflow locations
- Confirm the exact folder path where the workflow will be created
- Ensure the folder name doesn't conflict with existing workflows
### 9. Technical Constraints
Discuss technical requirements:
- Any specific tools or dependencies needed?
- Does it need to integrate with other systems?
- Any performance considerations?
- Should it be standalone or callable by other workflows?
### 10. Success Criteria
Define what makes the workflow successful: Define what makes the workflow successful:
@ -183,13 +163,11 @@ Define what makes the workflow successful:
- Are there measurable outcomes? - Are there measurable outcomes?
- What would make a user satisfied with the result? - What would make a user satisfied with the result?
## STORE REQUIREMENTS: #### STORE REQUIREMENTS:
After collecting all requirements, append them to {workflowPlanFile} using {requirementsTemplate}: After collecting all requirements, append them to {workflowPlanFile} in a format that will be be used later to design in more detail and create the workflow structure.
This information will be used in the design phase to create the workflow structure. ### 9. Present MENU OPTIONS
### 8. Present MENU OPTIONS
Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Continue Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Continue
@ -210,7 +188,7 @@ Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Conti
## CRITICAL STEP COMPLETION NOTE ## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected and requirements are stored, will you then load, read entire file, then execute {nextStepFile} to execute and begin workflow structure design step. ONLY WHEN C is selected and requirements are stored in the output file, will you then load, read entire file, then execute {nextStepFile} to execute and begin workflow structure design step.
--- ---

View File

@ -0,0 +1,250 @@
---
name: 'step-03-tools-configuration'
description: 'Configure all required tools (core, memory, external) and installation requirements in one comprehensive step'
# Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References
thisStepFile: '{workflow_path}/steps/step-03-tools-configuration.md'
nextStepFile: '{workflow_path}/steps/step-04-plan-review.md'
targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}'
workflowPlanFile: '{targetWorkflowPath}/workflow-plan-{new_workflow_name}.md'
# Documentation References
commonToolsCsv: '{project-root}/{bmad_folder}/bmb/docs/workflows/common-workflow-tools.csv'
# Task References
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md'
# Template References
# No template needed - will append tools configuration directly to workflow plan
---
# Step 3: Tools Configuration
## STEP GOAL:
To comprehensively configure all tools needed for the workflow (core tools, memory, external tools) and determine installation requirements.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: Read the complete step file before taking any action
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
- 📋 YOU ARE A FACILITATOR, not a content generator
### Role Reinforcement:
- ✅ You are a workflow architect and integration specialist
- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You bring expertise in BMAD tools and integration patterns
- ✅ User brings their workflow requirements and preferences
### Step-Specific Rules:
- 🎯 Focus ONLY on configuring tools based on workflow requirements
- 🚫 FORBIDDEN to skip tool categories - each affects workflow design
- 💬 Present options clearly, let user make informed choices
- 🚫 DO NOT hardcode tool descriptions - reference CSV
## EXECUTION PROTOCOLS:
- 🎯 Load tools dynamically from CSV, not hardcoded
- 💾 Document all tool choices in workflow plan
- 📖 Update frontmatter `stepsCompleted: [1, 2, 3]` before loading next step
- 🚫 FORBIDDEN to load next step until user selects 'C'
## CONTEXT BOUNDARIES:
- Requirements from step 2 inform tool selection
- All tool choices affect workflow design
- This is the ONLY tools configuration step
- Installation requirements affect implementation decisions
## TOOLS CONFIGURATION PROCESS:
### 1. Initialize Tools Configuration
"Configuring **Tools and Integrations**
Based on your workflow requirements, let's configure all the tools your workflow will need. This includes core BMAD tools, memory systems, and any external integrations."
### 2. Load and Present Available Tools
Load `{commonToolsCsv}` and present tools by category:
"**Available BMAD Tools and Integrations:**
**Core Tools (Always Available):**
- [List tools from CSV where propose='always', with descriptions]
**Optional Tools (Available When Needed):**
- [List tools from CSV where propose='example', with descriptions]
_Note: I'm loading these dynamically from our tools database to ensure you have the most current options._"
### 3. Configure Core BMAD Tools
"**Core BMAD Tools Configuration:**
These tools significantly enhance workflow quality and user experience:"
For each core tool from CSV (`propose='always'`):
1. **Party-Mode**
- Use case: [description from CSV]
- Where to integrate: [ask user for decision points, creative phases]
2. **Advanced Elicitation**
- Use case: [description from CSV]
- Where to integrate: [ask user for quality gates, review points]
3. **Brainstorming**
- Use case: [description from CSV]
- Where to integrate: [ask user for idea generation, innovation points]
### 4. Configure LLM Features
"**LLM Feature Integration:**
These capabilities enhance what your workflow can do:"
From CSV (`propose='always'` LLM features):
4. **Web-Browsing**
- Capability: [description from CSV]
- When needed: [ask user about real-time data needs]
5. **File I/O**
- Capability: [description from CSV]
- Operations: [ask user about file operations needed]
6. **Sub-Agents**
- Capability: [description from CSV]
- Use cases: [ask user about delegation needs]
7. **Sub-Processes**
- Capability: [description from CSV]
- Use cases: [ask user about parallel processing needs]
### 5. Configure Memory Systems
"**Memory and State Management:**
Determine if your workflow needs to maintain state between sessions:"
From CSV memory tools:
8. **Sidecar File**
- Use case: [description from CSV]
- Needed when: [ask about session continuity, agent initialization]
### 6. Configure External Tools (Optional)
"**External Integrations (Optional):**
These tools connect your workflow to external systems:"
From CSV (`propose='example'`):
- MCP integrations, database connections, APIs, etc.
- For each relevant tool: present description and ask if needed
- Note any installation requirements
### 7. Installation Requirements Assessment
"**Installation and Dependencies:**
Some tools require additional setup:"
Based on selected tools:
- Identify tools requiring installation
- Assess user's comfort level with installations
- Document installation requirements
### 8. Document Complete Tools Configuration
Append to {workflowPlanFile}:
```markdown
## Tools Configuration
### Core BMAD Tools
- **Party-Mode**: [included/excluded] - Integration points: [specific phases]
- **Advanced Elicitation**: [included/excluded] - Integration points: [specific phases]
- **Brainstorming**: [included/excluded] - Integration points: [specific phases]
### LLM Features
- **Web-Browsing**: [included/excluded] - Use cases: [specific needs]
- **File I/O**: [included/excluded] - Operations: [file management needs]
- **Sub-Agents**: [included/excluded] - Use cases: [delegation needs]
- **Sub-Processes**: [included/excluded] - Use cases: [parallel processing needs]
### Memory Systems
- **Sidecar File**: [included/excluded] - Purpose: [state management needs]
### External Integrations
- [List selected external tools with purposes]
### Installation Requirements
- [List tools requiring installation]
- **User Installation Preference**: [willing/not willing]
- **Alternative Options**: [if not installing certain tools]
```
### 9. Present MENU OPTIONS
Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Continue
#### EXECUTION RULES:
- ALWAYS halt and wait for user input after presenting menu
- ONLY proceed to next step when user selects 'C'
- After other menu items execution, return to this menu
- User can chat or ask questions - always respond and then end with display again of the menu options
- Use menu handling logic section below
#### Menu Handling Logic:
- IF A: Execute {advancedElicitationTask}
- IF P: Execute {partyModeWorkflow}
- IF C: Save tools configuration to {workflowPlanFile}, update frontmatter, then load, read entire file, then execute {nextStepFile}
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#9-present-menu-options)
## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected and tools configuration is saved will you load {nextStepFile} to review the complete plan.
---
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
### ✅ SUCCESS:
- All tool categories configured based on requirements
- User made informed choices for each tool
- Complete configuration documented in plan
- Installation requirements identified
- Ready to proceed to plan review
### ❌ SYSTEM FAILURE:
- Skipping tool categories
- Hardcoding tool descriptions instead of using CSV
- Not documenting user choices
- Proceeding without user confirmation
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.

View File

@ -1,127 +0,0 @@
---
name: 'step-03-tools-overview'
description: 'Present available tools from CSV and gather initial user requirements'
# Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References
thisStepFile: '{workflow_path}/steps/step-03-tools-overview.md'
nextStepFile: '{workflow_path}/steps/step-04-core-tools.md'
workflowFile: '{workflow_path}/workflow.md'
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
# Documentation References
commonToolsCsv: '{project-root}/{bmad_folder}/bmb/docs/workflows/common-workflow-tools.csv'
---
# Step 3: Tools Overview
## STEP GOAL:
Load and present available tools from the CSV, then gather the user's general tool requirements for their workflow.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: Read the complete step file before taking any action
- 📋 YOU ARE A FACILITATOR, not a content generator
### Role Reinforcement:
- ✅ You are a workflow architect and integration specialist
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You bring expertise in BMAD tools and workflow optimization
- ✅ User brings their workflow requirements
## EXECUTION PROTOCOLS:
- 🎯 Load CSV and present tools dynamically
- 💾 Gather user's general tool requirements
- 📖 Document requirements in workflow plan
- 🚫 FORBIDDEN to proceed without user input
## SEQUENCE OF INSTRUCTIONS:
### 1. Initialize Tools Discussion
"Beginning **Tools Integration and Configuration**
Based on your workflow requirements, I'll help identify the best tools and integrations. Let me first load the available tools from our reference."
### 2. Load and Present Available Tools
Load `{commonToolsCsv}` and present tools organized by type:
"**Available BMAD Tools and Integrations:**
**Always Available (Recommended for Most Workflows):**
- [List tools from CSV where propose='always', organized by type]
**Example Tools (Available When Needed):**
- [List tools from CSV where propose='example', organized by type]
\*\*Tools requiring installation will be noted."
### 3. Gather Initial Requirements
"**Your Tool Requirements:**
Based on your workflow type and goals, what tools do you anticipate needing?
1. **Core BMAD Tools:** Do you want collaborative idea generation, critical evaluation, or brainstorming capabilities?
2. **LLM Features:** Will you need web access, file management, sub-agents, or parallel processing?
3. **Memory:** Does your workflow need persistent state across sessions?
4. **External Tools:** Will you need MCP integrations like documentation access, browser automation, or database connections?
**Initial Tool Preferences:** [gather user's general requirements]"
### 4. Document Requirements
Append to {workflowPlanFile}:
```markdown
## Tool Requirements Summary
**Initial Tool Preferences:**
- Core BMAD Tools: [user selections]
- LLM Features: [user selections]
- Memory Requirements: [user selections]
- External Tools: [user selections]
**Installation Willingness:** [user comfort level with installing tools]
```
### 5. Menu Options
Display: **Select an Option:** [C] Continue to Core Tools [M] Modify Requirements
#### Menu Handling Logic:
- IF C: Append tools overview to {workflowPlanFile}, update frontmatter, then load {nextStepFile}
- IF M: Refine requirements discussion
## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected and requirements are documented will you load {nextStepFile} to configure core tools.
---
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
### ✅ SUCCESS:
- CSV loaded and tools presented clearly
- User's initial tool requirements gathered
- Requirements documented in workflow plan
- User ready to proceed to detailed configuration
### ❌ SYSTEM FAILURE:
- Not loading tools from CSV
- Duplicating CSV content in step file
- Proceeding without user requirements input

View File

@ -1,145 +0,0 @@
---
name: 'step-04-core-tools'
description: 'Configure always-available core tools and their integration points'
# Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References
thisStepFile: '{workflow_path}/steps/step-04-core-tools.md'
nextStepFile: '{workflow_path}/steps/step-05-memory-requirements.md'
workflowFile: '{workflow_path}/workflow.md'
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
# Documentation References
commonToolsCsv: '{project-root}/{bmad_folder}/bmb/docs/workflows/common-workflow-tools.csv'
---
# Step 4: Core Tools Configuration
## STEP GOAL:
Configure always-available core tools (party-mode, advanced-elicitation, brainstorming, and LLM features) with specific integration points in the workflow.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: Read the complete step file before taking any action
- 📋 YOU ARE A FACILITATOR, not a content generator
### Role Reinforcement:
- ✅ You are a workflow architect and integration specialist
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You bring expertise in BMAD tools and integration patterns
## EXECUTION PROTOCOLS:
- 🎯 Load core tools from CSV and configure integration points
- 💾 Confirm user choices for each core tool
- 📖 Document configuration in workflow plan
- 🚫 FORBIDDEN to proceed without user confirmation
## SEQUENCE OF INSTRUCTIONS:
### 1. Initialize Core Tools Configuration
"Configuring **Core BMAD Tools and Features**
These core tools significantly enhance workflow quality. Let's configure each one for optimal integration into your workflow."
### 2. Present Core Tools from CSV
Load `{commonToolsCsv}` and filter for `propose='always'`:
"**Core Tools (Always Available):**
**Workflows & Tasks:**
- **Party-Mode:** [description from CSV]
- **Advanced Elicitation:** [description from CSV]
- **Brainstorming:** [description from CSV]
**LLM Tool Features:**
- **Web-Browsing:** [description from CSV]
- **File I/O:** [description from CSV]
- **Sub-Agents:** [description from CSV]
- **Sub-Processes:** [description from CSV]
**Tool-Memory:**
- **Sidecar File:** [description from CSV]"
### 3. Configure Integration Points
For each tool, ask about integration:
"**Core Tools Integration:**
**Workflows & Tasks:**
1. **Party-Mode** - Where should collaborative AI sessions be offered? [decision points, creative phases]
2. **Advanced Elicitation** - Where should critical evaluation checkpoints be placed? [after content creation, quality gates]
3. **Brainstorming** - Where should creative ideation be integrated? [idea generation phases, innovation points]
**LLM Features:** 4. **Web-Browsing** - When is current information needed? [real-time data, current events] 5. **File I/O** - What document operations are required? [file creation, data management] 6. **Sub-Agents** - Where would specialized delegation help? [complex tasks, parallel processing] 7. **Sub-Processes** - Where would parallel processing improve performance? [long operations, resource optimization]
**Tool-Memory:** 8. **Sidecar File** - Does your workflow need persistent state? [session continuity, agent initialization]"
### 4. Document Core Tools Configuration
Append to {workflowPlanFile}:
```markdown
## Core Tools Configuration
### Workflows & Tasks
**Party-Mode:** [included/excluded] - Integration points: [specific phases]
**Advanced Elicitation:** [included/excluded] - Integration points: [specific phases]
**Brainstorming:** [included/excluded] - Integration points: [specific phases]
### LLM Tool Features
**Web-Browsing:** [included/excluded] - Integration points: [specific phases]
**File I/O:** [included/excluded] - Integration points: [specific phases]
**Sub-Agents:** [included/excluded] - Integration points: [specific phases]
**Sub-Processes:** [included/excluded] - Integration points: [specific phases]
### Tool-Memory
**Sidecar File:** [included/excluded] - Use case: [history tracking, agent initialization]
```
### 5. Menu Options
Display: **Select an Option:** [C] Continue to Memory Configuration [M] Modify Core Tools
#### Menu Handling Logic:
- IF C: Append core tools configuration to {workflowPlanFile}, update frontmatter, then load {nextStepFile}
- IF M: Return to tool configuration
## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected and core tools are documented will you load {nextStepFile} to configure memory requirements.
---
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
### ✅ SUCCESS:
- Core tools presented using CSV descriptions
- Integration points configured for each selected tool
- Configuration documented in workflow plan
- User understands how tools enhance workflow
### ❌ SYSTEM FAILURE:
- Duplicating CSV content instead of referencing it
- Not confirming integration points with user
- Proceeding without user confirmation of configuration

View File

@ -0,0 +1,216 @@
---
name: 'step-04-plan-review'
description: 'Review complete workflow plan (requirements + tools) and get user approval before design'
# Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References
thisStepFile: '{workflow_path}/steps/step-04-plan-review.md'
nextStepFormDesign: '{workflow_path}/steps/step-05-output-format-design.md'
nextStepDesign: '{workflow_path}/steps/step-06-design.md'
targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}'
workflowPlanFile: '{targetWorkflowPath}/workflow-plan-{new_workflow_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'
# Template References
# No template needed - will append review summary directly to workflow plan
---
# Step 4: Plan Review and Approval
## STEP GOAL:
To present the complete workflow plan (requirements and tools configuration) for user review and approval before proceeding to design.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: Read the complete step file before taking any action
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
- 📋 YOU ARE A FACILITATOR, not a content generator
### Role Reinforcement:
- ✅ You are a workflow architect and systems designer
- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You bring expertise in workflow design review and quality assurance
- ✅ User brings their specific requirements and approval authority
### Step-Specific Rules:
- 🎯 Focus ONLY on reviewing and refining the plan
- 🚫 FORBIDDEN to start designing workflow steps in this step
- 💬 Present plan clearly and solicit feedback
- 🚫 DO NOT proceed to design without user approval
## EXECUTION PROTOCOLS:
- 🎯 Present complete plan summary from {workflowPlanFile}
- 💾 Capture any modifications or refinements
- 📖 Update frontmatter `stepsCompleted: [1, 2, 3, 4]` before loading next step
- 🚫 FORBIDDEN to load next step until user approves plan
## CONTEXT BOUNDARIES:
- All requirements from step 2 are available
- Tools configuration from step 3 is complete
- Focus ONLY on review and approval
- This is the final check before design phase
## PLAN REVIEW PROCESS:
### 1. Initialize Plan Review
"**Workflow Plan Review**
We've gathered all requirements and configured tools for your workflow. Let's review the complete plan to ensure it meets your needs before we start designing the workflow structure."
### 2. Present Complete Plan Summary
Load and present from {workflowPlanFile}:
"**Complete Workflow Plan: {new_workflow_name}**
**1. Project Overview:**
- [Present workflow purpose, user type, module from plan]
**2. Workflow Requirements:**
- [Present all gathered requirements]
**3. Tools Configuration:**
- [Present selected tools and integration points]
**4. Technical Specifications:**
- [Present technical constraints and requirements]
**5. Success Criteria:**
- [Present success metrics from requirements]"
### 3. Detailed Review by Category
"**Detailed Review:**
**A. Workflow Scope and Purpose**
- Is the workflow goal clearly defined?
- Are the boundaries appropriate?
- Any missing requirements?
**B. User Interaction Design**
- Does the interaction style match your needs?
- Are collaboration points clear?
- Any adjustments needed?
**C. Tools Integration**
- Are selected tools appropriate for your workflow?
- Are integration points logical?
- Any additional tools needed?
**D. Technical Feasibility**
- Are all requirements achievable?
- Any technical constraints missing?
- Installation requirements acceptable?"
### 4. Collect Feedback and Refinements
"**Review Feedback:**
Please review each section and provide feedback:
1. What looks good and should stay as-is?
2. What needs modification or refinement?
3. What's missing that should be added?
4. Anything unclear or confusing?"
For each feedback item:
- Document the requested change
- Discuss implications on workflow design
- Confirm the refinement with user
### 5. Update Plan with Refinements
Update {workflowPlanFile} with any approved changes:
- Modify requirements section as needed
- Update tools configuration if changed
- Add any missing specifications
- Ensure all changes are clearly documented
### 6. Output Document Check
"**Output Document Check:**
Before we proceed to design, does your workflow produce any output documents or files?
Based on your requirements:
- [Analyze if workflow produces documents/files]
- Consider: Does it create reports, forms, stories, or any persistent output?"
**If NO:**
"Great! Your workflow focuses on actions/interactions without document output. We'll proceed directly to designing the workflow steps."
**If YES:**
"Perfect! Let's design your output format to ensure your workflow produces exactly what you need."
### 7. Present MENU OPTIONS
Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Design
#### EXECUTION RULES:
- ALWAYS halt and wait for user input after presenting menu
- ONLY proceed to next step when user selects 'C'
- After other menu items execution, return to this menu
- User can chat or ask questions - always respond and then end with display again of the menu options
- Use menu handling logic section below
#### Menu Handling Logic:
- IF A: Execute {advancedElicitationTask}
- IF P: Execute {partyModeWorkflow}
- IF C: Check if workflow produces documents:
- If YES: Update frontmatter, then load nextStepFormDesign
- If NO: Update frontmatter, then load nextStepDesign
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options)
## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected AND the user has explicitly approved the plan and the plan document is updated as needed, then you load either {nextStepFormDesign} or {nextStepDesign}
---
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
### ✅ SUCCESS:
- Complete plan presented clearly from {workflowPlanFile}
- User feedback collected and documented
- All refinements incorporated
- User explicitly approves the plan
- Plan ready for design phase
### ❌ SYSTEM FAILURE:
- Not loading plan from {workflowPlanFile}
- Skipping review categories
- Proceeding without user approval
- Not documenting refinements
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.

View File

@ -1,136 +0,0 @@
---
name: 'step-05-memory-requirements'
description: 'Assess memory requirements and configure memory implementation'
# Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References
thisStepFile: '{workflow_path}/steps/step-05-memory-requirements.md'
nextStepFile: '{project_path}/steps/step-06-external-tools.md'
workflowFile: '{workflow_path}/workflow.md'
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
# Documentation References
commonToolsCsv: '{project-root}/{bmad_folder}/bmb/docs/workflows/common-workflow-tools.csv'
---
# Step 5: Memory Requirements Assessment
## STEP GOAL:
Assess whether the workflow needs memory capabilities and configure appropriate memory implementation.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: Read the complete step file before taking any action
- 📋 YOU ARE A FACILITATOR, not a content generator
### Role Reinforcement:
- ✅ You are a workflow architect and integration specialist
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You bring expertise in memory implementation patterns
## EXECUTION PROTOCOLS:
- 🎯 Assess memory needs based on workflow requirements
- 💾 Present memory options from CSV
- 📖 Configure memory implementation if needed
- 🚫 FORBIDDEN to push memory when not required
## SEQUENCE OF INSTRUCTIONS:
### 1. Initialize Memory Assessment
"Assessing **Memory Requirements**
Most workflows complete their task and exit without needing persistent memory. However, some specialized workflows benefit from session-to-session continuity."
### 2. Present Memory Options from CSV
Load `{commonToolsCsv}` and filter for `type='tool-memory'`:
"**Memory Options:**
**Available Memory Types:**
- [List tool-memory options from CSV with descriptions]
**Key Question:** Does your workflow need to maintain state across multiple sessions?"
### 3. Memory Requirements Analysis
"**Memory Assessment Questions:**
1. **Session Continuity:** Will your workflow need to resume where it left off?
2. **Agent Initialization:** Will your workflow initialize agents with previous context?
3. **Pattern Recognition:** Would semantic search of past experiences be valuable?
4. **Self-Improvement:** Will your workflow learn from previous executions?
**Most workflows:** No memory needed (they complete and exit)
**Some workflows:** Sidecar files for history tracking
**Advanced workflows:** Vector database for semantic learning"
### 4. Configure Memory (If Needed)
If user selects memory:
"**Memory Configuration:**
Based on your needs, which memory type?
1. **Sidecar File** - History tracking and session continuity
2. **Vector Database** - Semantic search and pattern recognition
3. **Both** - Comprehensive memory capabilities
4. **None** - No persistent memory required
**Memory Management:** Privacy controls, cleanup strategies, access patterns"
### 5. Document Memory Configuration
Append to {workflowPlanFile}:
```markdown
## Memory Configuration
### Memory Requirements
**Sidecar File:** [selected/not selected] - Use case: [specific implementation]
**Vector Database:** [selected/not selected] - Use case: [specific implementation]
**Memory Management:** [cleanup, privacy, access patterns]
**Integration:** [how memory enhances workflow continuity]
```
### 6. Menu Options
Display: **Select an Option:** [C] Continue to External Tools [M] Modify Memory
#### Menu Handling Logic:
- IF C: Append memory configuration to {workflowPlanFile}, update frontmatter, then load {nextStepFile}
- IF M: Refine memory requirements
## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected and memory is documented will you load {nextStepFile} to configure external tools.
---
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
### ✅ SUCCESS:
- Memory options presented from CSV
- User's memory needs properly assessed
- Configuration documented appropriately
- No memory pushed when not needed
### ❌ SYSTEM FAILURE:
- Assuming memory is needed without assessment
- Duplicating CSV descriptions in step file
- Not documenting memory management strategies

View File

@ -0,0 +1,289 @@
---
name: 'step-05-output-format-design'
description: 'Design the output format for workflows that produce documents or files'
# Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References
thisStepFile: '{workflow_path}/steps/step-05-output-format-design.md'
nextStepFile: '{workflow_path}/steps/step-06-design.md'
targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}'
workflowPlanFile: '{targetWorkflowPath}/workflow-plan-{new_workflow_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'
---
# Step 5: Output Format Design
## STEP GOAL:
To design and document the output format for workflows that produce documents or files, determining whether they need strict templates or flexible formatting.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: Read the complete step file before taking any action
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
- 📋 YOU ARE A FACILITATOR, not a content generator
### Role Reinforcement:
- ✅ You are a workflow architect and output format specialist
- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You bring expertise in document design and template creation
- ✅ User brings their specific output requirements and preferences
### Step-Specific Rules:
- 🎯 Focus ONLY on output format design
- 🚫 FORBIDDEN to design workflow steps in this step
- 💬 Help user understand the format spectrum
- 🚫 DO NOT proceed without clear format requirements
## EXECUTION PROTOCOLS:
- 🎯 Guide user through format spectrum with examples
- 💾 Document format decisions in workflow plan
- 📖 Update frontmatter `stepsCompleted: [1, 2, 3, 4, 5]` before loading next step
- 🚫 FORBIDDEN to load next step until user selects 'C'
## CONTEXT BOUNDARIES:
- Approved plan from step 4 is available
- Focus ONLY on output document formatting
- Skip this step if workflow produces no documents
- This step only runs when documents need structure
## OUTPUT FORMAT DESIGN PROCESS:
### 1. Initialize Output Format Discussion
"**Designing Your Output Format**
Based on your approved plan, your workflow will produce output documents. Let's design how these outputs should be formatted."
### 2. Present the Format Spectrum
"**Output Format Spectrum - Where does your workflow fit?**
**Strictly Structured Examples:**
- Government forms - exact fields, precise positions
- Legal documents - must follow specific templates
- Technical specifications - required sections, specific formats
- Compliance reports - mandatory fields, validation rules
**Structured Examples:**
- Project reports - required sections, flexible content
- Business proposals - consistent format, customizable sections
- Technical documentation - standard structure, adaptable content
- Research papers - IMRAD format, discipline-specific variations
**Semi-structured Examples:**
- Character sheets (D&D) - core stats + flexible background
- Lesson plans - required components, flexible delivery
- Recipes - ingredients/method format, flexible descriptions
- Meeting minutes - agenda/attendees/actions, flexible details
**Free-form Examples:**
- Creative stories - narrative flow, minimal structure
- Blog posts - title/body, organic organization
- Personal journals - date/entry, free expression
- Brainstorming outputs - ideas, flexible organization"
### 3. Determine Format Type
"**Which format type best fits your workflow?**
1. **Strict Template** - Must follow exact format with specific fields
2. **Structured** - Required sections but flexible within each
3. **Semi-structured** - Core sections plus optional additions
4. **Free-form** - Content-driven with minimal structure
Please choose 1-4:"
### 4. Deep Dive Based on Choice
#### IF Strict Template (Choice 1):
"**Strict Template Design**
You need exact formatting. Let's define your requirements:
**Template Source Options:**
A. Upload existing template/image to follow
B. Create new template from scratch
C. Use standard form (e.g., government, industry)
D. AI proposes template based on your needs
**Template Requirements:**
- Exact field names and positions
- Required vs optional fields
- Validation rules
- File format (PDF, DOCX, etc.)
- Any legal/compliance considerations"
#### IF Structured (Choice 2):
"**Structured Document Design**
You need consistent sections with flexibility:
**Section Definition:**
- What sections are required?
- Any optional sections?
- Section ordering rules?
- Cross-document consistency needs?
**Format Guidelines:**
- Any formatting standards (APA, MLA, corporate)?
- Section header styles?
- Content organization principles?"
#### IF Semi-structured (Choice 3):
"**Semi-structured Design**
Core sections with flexibility:
**Core Components:**
- What information must always appear?
- Which parts can vary?
- Any organizational preferences?
**Polishing Options:**
- Would you like automatic TOC generation?
- Summary section at the end?
- Consistent formatting options?"
#### IF Free-form (Choice 4):
"**Free-form Content Design**
Focus on content with minimal structure:
**Organization Needs:**
- Basic headers for readability?
- Date/title information?
- Any categorization needs?
**Final Polish Options:**
- Auto-generated summary?
- TOC based on content?
- Formatting for readability?"
### 5. Template Creation (if applicable)
For Strict/Structured workflows:
"**Template Creation Approach:**
A. **Design Together** - We'll create the template step by step
B. **AI Proposes** - I'll suggest a structure based on your needs
C. **Import Existing** - Use/upload your existing template
Which approach would you prefer?"
If A or B:
- Design/create template sections
- Define placeholders
- Specify field types and validation
- Document template structure in plan
If C:
- Request file upload or detailed description
- Analyze template structure
- Document requirements
### 6. Document Format Decisions
Append to {workflowPlanFile}:
```markdown
## Output Format Design
**Format Type**: [Strict/Structured/Semi-structured/Free-form]
**Output Requirements**:
- Document type: [report/form/story/etc]
- File format: [PDF/MD/DOCX/etc]
- Frequency: [single/batch/continuous]
**Structure Specifications**:
[Detailed structure based on format type]
**Template Information**:
- Template source: [created/imported/standard]
- Template file: [path if applicable]
- Placeholders: [list if applicable]
**Special Considerations**:
- Legal/compliance requirements
- Validation needs
- Accessibility requirements
```
### 7. Present MENU OPTIONS
Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Continue
#### EXECUTION RULES:
- ALWAYS halt and wait for user input after presenting menu
- ONLY proceed to next step when user selects 'C'
- After other menu items execution, return to this menu
- User can chat or ask questions - always respond and then end with display again of the menu options
- Use menu handling logic section below
#### Menu Handling Logic:
- IF A: Execute {advancedElicitationTask}
- IF P: Execute {partyModeWorkflow}
- IF C: Save output format design to {workflowPlanFile}, update frontmatter, then load, read entire file, then execute {nextStepFile}
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options)
## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected and output format is documented will you load {nextStepFile} to begin workflow step design.
---
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
### ✅ SUCCESS:
- User understands format spectrum
- Format type clearly identified
- Template requirements documented (if applicable)
- Output format saved in plan
### ❌ SYSTEM FAILURE:
- Not showing format examples
- Skipping format requirements
- Not documenting decisions in plan
- Assuming format without asking
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.

View File

@ -1,31 +1,30 @@
--- ---
name: 'step-09-design' name: 'step-06-design'
description: 'Design the workflow structure and step sequence based on gathered requirements and tools configuration' description: 'Design the workflow structure and step sequence based on gathered requirements, tools configuration, and output format'
# Path Definitions # Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow' workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References # File References
thisStepFile: '{workflow_path}/steps/step-09-design.md' thisStepFile: '{workflow_path}/steps/step-06-design.md'
nextStepFile: '{workflow_path}/steps/step-10-plan-review.md' nextStepFile: '{workflow_path}/steps/step-07-build.md'
workflowFile: '{workflow_path}/workflow.md' workflowFile: '{workflow_path}/workflow.md'
# Output files for workflow creation process # Output files for workflow creation process
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}' targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}'
workflowPlanFile: '{targetWorkflowPath}/workflow-plan-{new_workflow_name}.md'
# Task References # Task References
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml' advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md' partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md'
# Template References # Template References
designTemplate: '{workflow_path}/templates/design-section.md' # No template needed - will append design details directly to workflow plan
--- ---
# Step 3: Workflow Structure Design # Step 6: Workflow Structure Design
## STEP GOAL: ## STEP GOAL:
To collaboratively design the workflow structure, step sequence, and interaction patterns based on the requirements gathered in the previous step. To collaboratively design the workflow structure, step sequence, and interaction patterns based on the approved plan and output format requirements.
## MANDATORY EXECUTION RULES (READ FIRST): ## MANDATORY EXECUTION RULES (READ FIRST):
@ -55,12 +54,13 @@ To collaboratively design the workflow structure, step sequence, and interaction
- 🎯 Guide collaborative design process - 🎯 Guide collaborative design process
- 💾 After completing design, append to {workflowPlanFile} - 💾 After completing design, append to {workflowPlanFile}
- 📖 Update plan frontmatter `stepsCompleted: [1, 2, 3]` before loading next step - 📖 Update plan frontmatter `stepsCompleted: [1, 2, 3, 4, 5, 6]` before loading next step
- 🚫 FORBIDDEN to load next step until user selects 'C' and design is saved - 🚫 FORBIDDEN to load next step until user selects 'C' and design is saved
## CONTEXT BOUNDARIES: ## CONTEXT BOUNDARIES:
- Requirements from step 2 are available and should inform design - Approved plan from step 4 is available and should inform design
- Output format design from step 5 (if completed) guides structure
- Load architecture documentation when needed for guidance - Load architecture documentation when needed for guidance
- Focus ONLY on structure and flow design - Focus ONLY on structure and flow design
- Don't implement actual files in this step - Don't implement actual files in this step
@ -74,7 +74,6 @@ When designing, you may load these documents as needed:
- `{project-root}/{bmad_folder}/bmb/docs/workflows/templates/step-01-init-continuable-template.md` - Continuable init step template - `{project-root}/{bmad_folder}/bmb/docs/workflows/templates/step-01-init-continuable-template.md` - Continuable init step template
- `{project-root}/{bmad_folder}/bmb/docs/workflows/templates/step-1b-template.md` - Continuation step template - `{project-root}/{bmad_folder}/bmb/docs/workflows/templates/step-1b-template.md` - Continuation step template
- `{project-root}/{bmad_folder}/bmb/docs/workflows/templates/workflow-template.md` - Workflow configuration - `{project-root}/{bmad_folder}/bmb/docs/workflows/templates/workflow-template.md` - Workflow configuration
- `{project-root}/{bmad_folder}/bmb/docs/workflows/architecture.md` - Architecture principles
- `{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition/workflow.md` - Complete example - `{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition/workflow.md` - Complete example
## WORKFLOW DESIGN PROCESS: ## WORKFLOW DESIGN PROCESS:
@ -97,7 +96,7 @@ Read: {project-root}/{bmad_folder}/bmb/docs/workflows/templates/step-1b-template
This shows the continuation step pattern for workflows that might take multiple sessions. This shows the continuation step pattern for workflows that might take multiple sessions.
Based on the requirements, collaboratively design: Based on the approved plan, collaboratively design:
- How many major steps does this workflow need? (Recommend 3-7) - How many major steps does this workflow need? (Recommend 3-7)
- What is the goal of each step? - What is the goal of each step?
@ -199,31 +198,35 @@ Present the design for review:
- Ensure steps can be loaded independently - Ensure steps can be loaded independently
- Design for Just-In-Time loading - Design for Just-In-Time loading
### Collaborative Dialogue ### Sequential Flow with Clear Progression
- Design for conversation, not command-response - Each step should build on previous work
- Include decision points for user input - Include clear decision points
- Make the workflow adaptable to user context - Maintain logical progression toward goal
### Sequential Enforcement ### Menu-Based Interactions
- Design clear step dependencies - Include consistent menu patterns
- Ensure logical flow between steps - Provide clear options at decision points
- Include state tracking for progress - Allow for conversation within steps
### Error Prevention ### State Management
- Include validation at key points - Track progress using `stepsCompleted` array
- Design for common failure scenarios - Persist state in output file frontmatter
- Provide clear guidance to users - Support continuation where appropriate
## CONTENT TO APPEND TO PLAN: ### 9. Document Design in Plan
After completing the design, append to {workflowPlanFile}: Append to {workflowPlanFile}:
Load and append the content from {designTemplate} - Complete step outline with names and purposes
- Flow diagram or sequence description
- Interaction patterns
- File structure requirements
- Special features and handling
### 9. Present MENU OPTIONS ### 10. Present MENU OPTIONS
Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Continue Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Continue
@ -239,12 +242,12 @@ Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Conti
- IF A: Execute {advancedElicitationTask} - IF A: Execute {advancedElicitationTask}
- IF P: Execute {partyModeWorkflow} - IF P: Execute {partyModeWorkflow}
- IF C: Save content to {workflowPlanFile}, update frontmatter, then only then load, read entire file, then execute {nextStepFile} - IF C: Save design to {workflowPlanFile}, update frontmatter, then load, read entire file, then execute {nextStepFile}
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#9-present-menu-options) - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#10-present-menu-options)
## CRITICAL STEP COMPLETION NOTE ## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected and content is saved to workflow plan and frontmatter is updated, will you then load, read entire file, then execute {nextStepFile} to execute and begin workflow file generation step. ONLY WHEN C is selected and design is saved will you load {nextStepFile} to begin implementation.
--- ---
@ -253,16 +256,16 @@ ONLY WHEN C is selected and content is saved to workflow plan and frontmatter is
### ✅ SUCCESS: ### ✅ SUCCESS:
- Workflow structure designed collaboratively - Workflow structure designed collaboratively
- Step sequence mapped and agreed upon - All steps clearly defined and sequenced
- Interaction patterns designed - Interaction patterns established
- Design documented in {outputFile} - File structure planned
- Frontmatter updated with step completion - User agreement on design
### ❌ SYSTEM FAILURE: ### ❌ SYSTEM FAILURE:
- Creating implementation details instead of design - Designing without user collaboration
- Skipping design review with user - Skipping design principles
- Proceeding without complete design - Not documenting design in plan
- Not updating document frontmatter - Proceeding without user agreement
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE. **Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.

View File

@ -1,154 +0,0 @@
---
name: 'step-06-external-tools'
description: 'Configure MCP integrations and installation requirements'
# Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References
thisStepFile: '{workflow_path}/steps/step-06-external-tools.md'
nextStepFile: '{workflow_path}/steps/step-07-installation-guidance.md'
workflowFile: '{workflow_path}/workflow.md'
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
# Documentation References
commonToolsCsv: '{project-root}/{bmad_folder}/bmb/docs/workflows/common-workflow-tools.csv'
---
# Step 6: External Tools Configuration
## STEP GOAL:
Identify and configure MCP integrations and external tools that the workflow requires.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: Read the complete step file before taking any action
- 📋 YOU ARE A FACILITATOR, not a content generator
### Role Reinforcement:
- ✅ You are a workflow architect and integration specialist
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You bring expertise in MCP integrations and external tools
## EXECUTION PROTOCOLS:
- 🎯 Load external tools from CSV
- 💾 Identify specific MCP needs for workflow
- 📖 Document which tools require installation
- 🚫 FORBIDDEN to proceed without confirming tool selections
## SEQUENCE OF INSTRUCTIONS:
### 1. Initialize External Tools Assessment
"Configuring **External Tools and MCP Integrations**
These tools extend workflow capabilities but typically require installation. Let's identify what your workflow actually needs."
### 2. Present External Tools from CSV
Load `{commonToolsCsv}` and filter for `propose='example'` and `type='mcp'`:
"**Available External Tools:**
**MCP Integrations (Require Installation):**
- [List MCP tools from CSV with URLs and descriptions]
**Example Workflows/Tasks:**
- [List example workflows/tasks from CSV with descriptions]
**Installation Note:** Tools marked with `requires_install=yes` will need setup steps."
### 3. Identify Specific Tool Needs
"**External Tool Requirements:**
Based on your workflow goals, which external tools do you need?
**Common MCP Needs:**
- **Documentation Access:** Context-7 for current API docs
- **Browser Automation:** Playwright for web interactions
- **Git Operations:** Direct version control integration
- **Database Access:** Multiple database connectivity
- **Custom Tools:** Any domain-specific MCPs you need
**Your Requirements:**
1. What external data or APIs will your workflow access?
2. Does your workflow need web browser automation?
3. Will it interact with version control systems?
4. Are database connections required?
5. Any custom MCPs you plan to use?"
### 4. Document External Tools Selection
Append to {workflowPlanFile}:
```markdown
## External Tools Configuration
### MCP Integrations
**Selected Tools:** [list from CSV]
**Purpose:** [how each MCP enhances workflow]
**Integration Points:** [where external tools are essential]
**Installation Required:** [yes/no, which tools]
### Example Workflows/Tasks
**Selected:** [list chosen workflows/tasks]
**Purpose:** [how they enhance workflow capabilities]
**Integration:** [where they fit in workflow flow]
```
### 5. Installation Assessment
"**Installation Requirements Assessment:**
**Tools Requiring Installation:** [list from CSV where requires_install=yes]
**Installation Guidance Options:**
1. Include detailed setup steps in workflow
2. Provide user installation checklist
3. Assume tools are pre-installed
**Your Preference:** [ask user how to handle installation]"
### 6. Menu Options
Display: **Select an Option:** [C] Continue to Installation Guidance [M] Modify External Tools
#### Menu Handling Logic:
- IF C: Append external tools configuration to {workflowPlanFile}, update frontmatter, then load {nextStepFile}
- IF M: Refine external tool requirements
## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected and external tools are documented will you load {nextStepFile} to configure installation guidance.
---
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
### ✅ SUCCESS:
- External tools presented from CSV with installation requirements
- User's specific tool needs identified and documented
- Installation requirements clearly marked
- User understands which tools need setup
### ❌ SYSTEM FAILURE:
- Not filtering CSV for relevant tool types
- Missing installation requirement information
- Proceeding without confirming tool selections

View File

@ -1,36 +1,32 @@
--- ---
name: 'step-11-build' name: 'step-07-build'
description: 'Generate all workflow files based on the approved plan' description: 'Generate all workflow files based on the approved plan'
# Path Definitions # Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow' workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References # File References
thisStepFile: '{workflow_path}/steps/step-11-build.md' thisStepFile: '{workflow_path}/steps/step-07-build.md'
nextStepFile: '{workflow_path}/steps/step-12-review.md' nextStepFile: '{workflow_path}/steps/step-08-review.md'
workflowFile: '{workflow_path}/workflow.md' workflowFile: '{workflow_path}/workflow.md'
# Output files for workflow creation process # Output files for workflow creation process
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}' targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}'
workflowPlanFile: '{targetWorkflowPath}/workflow-plan-{new_workflow_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'
# Template References # Template References
workflowTemplate: '{project-root}/{bmad_folder}/bmb/docs/workflows/templates/workflow-template.md' workflowTemplate: '{project-root}/{bmad_folder}/bmb/docs/workflows/templates/workflow-template.md'
stepTemplate: '{project-root}/{bmad_folder}/bmb/docs/workflows/templates/step-template.md' stepTemplate: '{project-root}/{bmad_folder}/bmb/docs/workflows/templates/step-template.md'
stepInitContinuableTemplate: '{project-root}/{bmad_folder}/bmb/docs/workflows/templates/step-01-init-continuable-template.md' stepInitContinuableTemplate: '{project-root}/{bmad_folder}/bmb/docs/workflows/templates/step-01-init-continuable-template.md'
step1bTemplate: '{project-root}/{bmad_folder}/bmb/docs/workflows/templates/step-1b-template.md' step1bTemplate: '{project-root}/{bmad_folder}/bmb/docs/workflows/templates/step-1b-template.md'
contentTemplate: '{workflow_path}/templates/content-template.md' # No content templates needed - will create content as needed during build
buildSummaryTemplate: '{workflow_path}/templates/build-summary.md' # No build summary template needed - will append summary directly to workflow plan
--- ---
# Step 5: Workflow File Generation # Step 7: Workflow File Generation
## STEP GOAL: ## STEP GOAL:
To generate all the workflow files (workflow.md, step files, templates, and supporting files) based on the approved plan from the previous review step. To generate all the workflow files (workflow.md, step files, templates, and supporting files) based on the approved plan from the previous design step.
## MANDATORY EXECUTION RULES (READ FIRST): ## MANDATORY EXECUTION RULES (READ FIRST):
@ -60,12 +56,12 @@ To generate all the workflow files (workflow.md, step files, templates, and supp
- 🎯 Generate files systematically from design - 🎯 Generate files systematically from design
- 💾 Document all generated files and their locations - 💾 Document all generated files and their locations
- 📖 Update frontmatter `stepsCompleted: [1, 2, 3, 4]` before loading next step - 📖 Update frontmatter `stepsCompleted: [1, 2, 3, 4, 5, 6, 7]` before loading next step
- 🚫 FORBIDDEN to load next step until user selects 'C' and build is complete - 🚫 FORBIDDEN to load next step until user selects 'C' and build is complete
## CONTEXT BOUNDARIES: ## CONTEXT BOUNDARIES:
- Approved plan from step 10 guides implementation - Approved plan from step 6 guides implementation
- Generate files in target workflow location - Generate files in target workflow location
- Load templates and documentation as needed during build - Load templates and documentation as needed during build
- Follow step-file architecture principles - Follow step-file architecture principles
@ -121,7 +117,7 @@ Load and follow {workflowTemplate}:
- Create workflow.md using template structure - Create workflow.md using template structure
- Insert workflow name and description - Insert workflow name and description
- Configure all path variables ({project-root}, {bmad_folder}, {workflow_path}) - Configure all path variables ({project-root}, {_bmad_folder_}, {workflow_path})
- Set web_bundle flag to true unless user has indicated otherwise - Set web_bundle flag to true unless user has indicated otherwise
- Define role and goal - Define role and goal
- Include initialization path to step-01 - Include initialization path to step-01
@ -182,7 +178,6 @@ For each remaining step in the design:
For document workflows: For document workflows:
- Load {contentTemplate}
- Create template.md with proper structure - Create template.md with proper structure
- Include all variables from design - Include all variables from design
- Ensure variable naming consistency - Ensure variable naming consistency
@ -265,7 +260,12 @@ Create a summary of what was generated:
After generating all files, append to {workflowPlanFile}: After generating all files, append to {workflowPlanFile}:
Load and append the content from {buildSummaryTemplate} Create a build summary including:
- List of all files created with full paths
- Any customizations from templates
- Manual steps needed
- Next steps for testing
### 9. Present MENU OPTIONS ### 9. Present MENU OPTIONS

View File

@ -1,159 +0,0 @@
---
name: 'step-07-installation-guidance'
description: 'Configure installation guidance for tools that require setup'
# Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References
thisStepFile: '{workflow_path}/steps/step-07-installation-guidance.md'
nextStepFile: '{workflow_path}/steps/step-08-tools-summary.md'
workflowFile: '{workflow_path}/workflow.md'
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
# Documentation References
commonToolsCsv: '{project-root}/{bmad_folder}/bmb/docs/workflows/common-workflow-tools.csv'
---
# Step 7: Installation Guidance Configuration
## STEP GOAL:
Configure installation guidance for any selected tools that require setup, ensuring users can successfully prepare their environment.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: Read the complete step file before taking any action
- 📋 YOU ARE A FACILITATOR, not a content generator
### Role Reinforcement:
- ✅ You are a workflow architect and integration specialist
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You bring expertise in tool installation and setup procedures
## EXECUTION PROTOCOLS:
- 🎯 Identify tools requiring installation from CSV
- 💾 Configure installation approach based on user preference
- 📖 Generate or skip installation guidance as appropriate
- 🚫 FORBIDDEN to proceed without confirming installation approach
## SEQUENCE OF INSTRUCTIONS:
### 1. Initialize Installation Guidance
"Configuring **Installation Guidance**
Let's ensure users can successfully set up any tools your workflow requires. This prevents runtime errors and improves user experience."
### 2. Identify Installation Requirements
Load `{commonToolsCsv}` and filter for selected tools with `requires_install=yes`:
"**Installation Requirements:**
**Tools Requiring Installation:**
- [List selected tools from CSV where requires_install=yes]
- [Include URLs from CSV for each tool]
**No Installation Required:**
- [List selected tools from CSV where requires_install=no]
- All BMAD core tools, LLM features, and sidecar file memory"
### 3. Installation Approach Options
"**Installation Guidance Options:**
Based on your selected tools, how should the workflow handle installation?
1. **Include Installation Steps** - Add detailed setup instructions in early workflow step
2. **User Instructions Only** - Provide guidance but don't embed in workflow
3. **Assume Pre-Installed** - Skip installation guidance (advanced users)
**Installation Prerequisites (if included):**
- Node.js 18+ (for Node.js-based MCPs)
- Python 3.8+ (for Python-based MCPs)
- Git for cloning repositories
- MCP-compatible AI client (Claude Desktop or similar)"
### 4. Configure Installation Guidance
If user chooses installation guidance:
"**Installation Step Configuration:**
For each tool requiring installation, the workflow will include:
- Clone/download instructions using URL from CSV
- Dependency installation commands
- Configuration file setup
- Server startup procedures
- Claude Desktop configuration steps
**Installation Checklist (if included):**
- [ ] Download and install Claude Desktop
- [ ] Clone MCP repositories
- [ ] Install required dependencies
- [ ] Configure MCP servers
- [ ] Add to Claude configuration
- [ ] Test connectivity
- [ ] Verify functionality"
### 5. Document Installation Configuration
Append to {workflowPlanFile}:
```markdown
## Installation Guidance Configuration
### Installation Approach
**Selected Approach:** [detailed steps/user instructions/assume pre-installed]
**Tools Requiring Installation:** [list with URLs]
**Installation Step Placement:** [early in workflow, after setup]
### Installation Content
**Prerequisites:** [system requirements]
**Setup Steps:** [commands and procedures]
**Verification:** [testing procedures]
**User Support:** [troubleshooting guidance]
```
### 6. Menu Options
Display: **Select an Option:** [C] Continue to Tools Summary [M] Modify Installation Approach
#### Menu Handling Logic:
- IF C: Append installation configuration to {workflowPlanFile}, update frontmatter, then load {nextStepFile}
- IF M: Refine installation approach
## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected and installation guidance is documented will you load {nextStepFile} to complete tools configuration.
---
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
### ✅ SUCCESS:
- Installation requirements clearly identified from CSV
- Installation approach configured based on user preference
- Documentation prepared for setup procedures
- User understands how tools will be installed
### ❌ SYSTEM FAILURE:
- Missing installation requirement assessment
- Not using URLs from CSV for installation guidance
- Proceeding without confirming installation approach

View File

@ -1,27 +1,31 @@
--- ---
name: 'step-12-review' name: 'step-08-review'
description: 'Review the generated workflow and provide final validation and next steps' description: 'Review the generated workflow and provide final validation and next steps'
# Path Definitions # Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow' workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References # File References
thisStepFile: '{workflow_path}/steps/step-12-review.md' thisStepFile: '{workflow_path}/steps/step-08-review.md'
workflowFile: '{workflow_path}/workflow.md' workflowFile: '{workflow_path}/workflow.md'
# Output files for workflow creation process # Output files for workflow creation process
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}' targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}'
workflowPlanFile: '{targetWorkflowPath}/workflow-plan-{new_workflow_name}.md'
# Task References # Task References
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml' advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md' partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md'
# Template References # Template References
reviewTemplate: '{workflow_path}/templates/review-section.md' # No review template needed - will append review summary directly to workflow plan
completionTemplate: '{workflow_path}/templates/completion-section.md' # No completion template needed - will append completion details directly
# Next step reference
nextStepFile: '{workflow_path}/steps/step-09-complete.md'
--- ---
# Step 6: Workflow Review and Completion # Step 8: Workflow Review and Completion
## STEP GOAL: ## STEP GOAL:
@ -55,7 +59,7 @@ To review the generated workflow for completeness, accuracy, and adherence to be
- 🎯 Conduct thorough review of generated workflow - 🎯 Conduct thorough review of generated workflow
- 💾 Document review findings and completion status - 💾 Document review findings and completion status
- 📖 Update frontmatter `stepsCompleted: [1, 2, 3, 4, 5]` and mark complete - 📖 Update frontmatter `stepsCompleted: [1, 2, 3, 4, 5, 6, 7, 8]` and mark complete
- 🚫 This is the final step - no next step to load - 🚫 This is the final step - no next step to load
## CONTEXT BOUNDARIES: ## CONTEXT BOUNDARIES:
@ -197,26 +201,36 @@ Provide specific recommendations:
After completing review, append to {workflowPlanFile}: After completing review, append to {workflowPlanFile}:
Load and append the content from {reviewTemplate} Append review findings to {workflowPlanFile}:
Then load and append the content from {completionTemplate} Create a review summary including:
## FINAL MENU OPTIONS - Completeness check results
- Accuracy validation
- Compliance with best practices
- Any issues found
Display: **All Files Created Successfully!** [C] Complete & Get Validation Instructions Then append completion details:
- Final approval status
- Deployment recommendations
- Usage guidance
### 10. Present MENU OPTIONS
Display: **Select an Option:** [C] Continue to Completion
#### EXECUTION RULES: #### EXECUTION RULES:
- ALWAYS halt and wait for user input after presenting menu - ALWAYS halt and wait for user input after presenting menu
- Provide compliance check guidance for new context execution - ONLY proceed to next step when user selects 'C'
- After other menu items execution, return to this menu
- User can chat or ask questions - always respond and then end with display again of the menu options - User can chat or ask questions - always respond and then end with display again of the menu options
- Use menu handling logic section below - Use menu handling logic section below
#### Menu Handling Logic: #### Menu Handling Logic:
- IF C: Save content to {workflowPlanFile}, update frontmatter, then provide validation instructions for running in new context - IF C: Save review to {workflowPlanFile}, update frontmatter, then load, read entire file, then execute {nextStepFile}
- IF Any other comments or queries: respond and redisplay menu - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#10-present-menu-options)
## COMPLIANCE CHECK INSTRUCTIONS ## COMPLIANCE CHECK INSTRUCTIONS

View File

@ -1,167 +0,0 @@
---
name: 'step-08-tools-summary'
description: 'Summarize tools configuration and proceed to workflow design'
# Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References
thisStepFile: '{workflow_path}/steps/step-08-tools-summary.md'
nextStepFile: '{workflow_path}/steps/step-09-design.md'
workflowFile: '{workflow_path}/workflow.md'
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
# Documentation References
commonToolsCsv: '{project-root}/{bmad_folder}/bmb/docs/workflows/common-workflow-tools.csv'
---
# Step 8: Tools Configuration Summary
## STEP GOAL:
Summarize the complete tools configuration and confirm readiness to proceed to workflow design.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: Read the complete step file before taking any action
- 📋 YOU ARE A FACILITATOR, not a content generator
### Role Reinforcement:
- ✅ You are a workflow architect and integration specialist
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You bring expertise in tools integration and workflow optimization
## EXECUTION PROTOCOLS:
- 🎯 Compile complete tools configuration summary
- 💾 Present final configuration for user confirmation
- 📖 Update workflow plan with comprehensive summary
- 🚫 FORBIDDEN to proceed to design without user confirmation
## SEQUENCE OF INSTRUCTIONS:
### 1. Initialize Tools Summary
"**Tools Configuration Summary**
Let's review your complete tools configuration before proceeding to workflow design. This ensures all integrations are properly planned."
### 2. Present Complete Configuration
Load all previous configurations from {workflowPlanFile} and CSV:
"**Complete Tools Configuration:**
**Core BMAD Tools:**
- [List selected core tools with integration points]
- [Load descriptions from CSV for confirmation]
**LLM Tool Features:**
- [List selected LLM features with integration points]
- [Load descriptions from CSV for confirmation]
**Tool-Memory:**
- [Selected memory types with implementation details]
- [Load descriptions from CSV for confirmation]
**External Tools:**
- [List selected MCP integrations with URLs]
- [Load descriptions from CSV for confirmation]
- [Mark which require installation]
**Installation Guidance:**
- [Approach selected and tools included]
- [Setup steps configured as needed]
**Integration Strategy:**
- [How tools enhance rather than disrupt workflow]
- [Checkpoint approaches and user choice points]
- [Performance optimization opportunities]"
### 3. Final Configuration Confirmation
"**Final Configuration Review:**
**Your workflow will include:**
- **Total Tools:** [count of selected tools]
- **Core Tools:** [number selected]
- **External Tools:** [number selected]
- **Installation Required:** [yes/no, which tools]
**Key Integration Points:**
- [Major phases where tools enhance workflow]
- [User experience considerations]
- [Performance optimizations]
**Ready to proceed with this configuration?**"
### 4. Update Workflow Plan with Final Summary
Append to {workflowPlanFile}:
```markdown
## Final Tools Configuration Summary
### Tools Inventory
**Core BMAD Tools:** [count and list]
**LLM Features:** [count and list]
**Memory Implementation:** [type and use case]
**External Tools:** [count and list with URLs]
**Installation Required:** [tools and setup complexity]
### Integration Strategy
**User Experience:** [how tools enhance workflow]
**Checkpoint Approach:** [when tools are offered]
**Performance Optimization:** [efficiency improvements]
**Installation Strategy:** [how users prepare environment]
### Ready for Design
All tools configured and ready for workflow design phase.
```
### 5. Menu Options
Display: **Select an Option:** [C] Continue to Workflow Design [M] Modify Configuration
#### Menu Handling Logic:
- IF C: Save final summary, update frontmatter stepsCompleted: [3, 4, 5, 6, 7, 8], then load {nextStepFile}
- IF M: Return to specific configuration step
## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected and summary is saved will you load {nextStepFile} to begin workflow design phase.
---
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
### ✅ SUCCESS:
- Complete tools configuration summarized clearly
- All descriptions loaded from CSV (not duplicated)
- User confirms configuration before proceeding
- Frontmatter updated with completed steps
- Ready to proceed to workflow design
### ❌ SYSTEM FAILURE:
- Not presenting complete configuration summary
- Duplicating CSV content instead of referencing it
- Proceeding to design without user confirmation
- Not updating workflow plan with final summary

View File

@ -0,0 +1,187 @@
---
name: 'step-09-complete'
description: 'Final completion and wrap-up of workflow creation process'
# Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References
thisStepFile: '{workflow_path}/steps/step-09-complete.md'
workflowFile: '{workflow_path}/workflow.md'
# Output files for workflow creation process
targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}'
workflowPlanFile: '{targetWorkflowPath}/workflow-plan-{new_workflow_name}.md'
completionFile: '{targetWorkflowPath}/completion-summary-{new_workflow_name}.md'
---
# Step 9: Workflow Creation Complete
## STEP GOAL:
To complete the workflow creation process with a final summary, confirmation, and next steps for using the new workflow.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: Read the complete step file before taking any action
- 📋 YOU ARE A FACILITATOR, not a content generator
### Role Reinforcement:
- ✅ You are a workflow architect and systems designer
- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You bring expertise in workflow deployment and usage guidance
- ✅ User brings their specific workflow needs
### Step-Specific Rules:
- 🎯 Focus ONLY on completion and next steps
- 🚫 FORBIDDEN to modify the generated workflow
- 💬 Provide clear guidance on how to use the workflow
- 🚫 This is the final step - no next step to load
## EXECUTION PROTOCOLS:
- 🎯 Present completion summary
- 💾 Create final completion documentation
- 📖 Update plan frontmatter with completion status
- 🚫 This is the final step
## CONTEXT BOUNDARIES:
- All previous steps are complete
- Workflow has been generated and reviewed
- Focus ONLY on completion and next steps
- This step concludes the create-workflow process
## COMPLETION PROCESS:
### 1. Initialize Completion
"**Workflow Creation Complete!**
Congratulations! We've successfully created your new workflow. Let's finalize everything and ensure you have everything you need to start using it."
### 2. Final Summary
Present a complete summary of what was created:
**Workflow Created:** {new_workflow_name}
**Location:** {targetWorkflowPath}
**Files Generated:** [list from build step]
### 3. Create Completion Summary
Create {completionFile} with:
```markdown
---
workflowName: { new_workflow_name }
creationDate: [current date]
module: [module from plan]
status: COMPLETE
stepsCompleted: [1, 2, 3, 4, 5, 6, 7, 8, 9]
---
# Workflow Creation Summary
## Workflow Information
- **Name:** {new_workflow_name}
- **Module:** [module]
- **Created:** [date]
- **Location:** {targetWorkflowPath}
## Generated Files
[List all files created]
## Quick Start Guide
[How to run the new workflow]
## Next Steps
[Post-creation recommendations]
```
### 4. Usage Guidance
Provide clear instructions on how to use the new workflow:
**How to Use Your New Workflow:**
1. **Running the Workflow:**
- [Instructions based on workflow type]
- [Initial setup if needed]
2. **Common Use Cases:**
- [Typical scenarios for using the workflow]
- [Expected inputs and outputs]
3. **Tips for Success:**
- [Best practices for this specific workflow]
- [Common pitfalls to avoid]
### 5. Post-Creation Recommendations
"**Next Steps:**
1. **Test the Workflow:** Run it with sample data to ensure it works as expected
2. **Customize if Needed:** You can modify the workflow based on your specific needs
3. **Share with Team:** If others will use this workflow, provide them with the location and instructions
4. **Monitor Usage:** Keep track of how well the workflow meets your needs"
### 6. Final Confirmation
"**Is there anything else you need help with regarding your new workflow?**
- I can help you test it
- We can make adjustments if needed
- I can help you create documentation for users
- Or any other support you need"
### 7. Update Final Status
Update {workflowPlanFile} frontmatter:
- Set status to COMPLETE
- Set completion date
- Add stepsCompleted: [1, 2, 3, 4, 5, 6, 7, 8, 9]
## MENU OPTIONS
Display: **Workflow Creation Complete!** [T] Test Workflow [M] Make Adjustments [D] Get Help
#### Menu Handling Logic:
- IF T: Offer to run the newly created workflow with sample data
- IF M: Offer to make specific adjustments to the workflow
- IF D: Provide additional help and resources
- IF Any other: Respond to user needs
## CRITICAL STEP COMPLETION NOTE
This is the final step. When the user is satisfied, the workflow creation process is complete.
---
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
### ✅ SUCCESS:
- Workflow fully created and reviewed
- Completion summary generated
- User understands how to use the workflow
- All documentation is in place
### ❌ SYSTEM FAILURE:
- Not providing clear usage instructions
- Not creating completion summary
- Leaving user without next steps
**Master Rule:** Ensure the user has everything needed to successfully use their new workflow.

View File

@ -1,215 +0,0 @@
---
name: 'step-10-plan-review'
description: 'Review the complete workflow plan before generating files'
# Path Definitions
workflow_path: '{project-root}/{bmad_folder}/bmb/workflows/create-workflow'
# File References
thisStepFile: '{workflow_path}/steps/step-10-plan-review.md'
nextStepFile: '{workflow_path}/steps/step-11-build.md'
workflowFile: '{workflow_path}/workflow.md'
# Output files for workflow creation process
workflowPlanFile: '{output_folder}/workflow-plan-{new_workflow_name}.md'
targetWorkflowPath: '{custom_workflow_location}/{new_workflow_name}'
# Task References
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml'
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md'
---
# Step 4: Workflow Plan Review
## STEP GOAL:
To present the complete workflow plan for user review and approval before generating the actual workflow files.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- 🛑 NEVER generate content without user input
- 📖 CRITICAL: Read the complete step file before taking any action
- 🔄 CRITICAL: Always read the complete step file before taking any action
- 📋 YOU ARE A FACILITATOR, not a content generator
### Role Reinforcement:
- ✅ You are a workflow architect and systems designer
- ✅ If you already have been given communication or persona patterns, continue to use those while playing this new role
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You present the plan clearly and answer questions
- ✅ User provides approval or requests changes
### Step-Specific Rules:
- 🎯 Focus ONLY on reviewing the plan, not building yet
- 🚫 FORBIDDEN to generate any workflow files in this step
- 💬 Present the complete plan clearly and answer all questions
- 🚪 GET explicit approval before proceeding to build
## EXECUTION PROTOCOLS:
- 🎯 Present the complete workflow plan for review
- 💾 Update plan frontmatter with review status
- 📖 Only proceed to build step with explicit user approval
- 🚫 FORBIDDEN to skip review or proceed without consent
## CONTEXT BOUNDARIES:
- Requirements and design from previous steps are in the plan
- Focus ONLY on review and approval
- Don't modify the design significantly here
- This is the final checkpoint before file generation
## REVIEW REFERENCE MATERIALS:
When reviewing, you may load for comparison:
- Example workflow: `{project-root}/{bmad_folder}/bmb/reference/workflows/meal-prep-nutrition/workflow.md`
- Step examples from same workflow's steps folder
- Architecture guide: `{project-root}/{bmad_folder}/bmb/docs/workflows/architecture.md`
## PLAN REVIEW PROCESS:
### 1. Present the Complete Plan
Read the entire {workflowPlanFile} and present it to the user:
- Executive Summary
- Requirements Analysis
- Detailed Design
- Implementation Plan
- Target Location and file structure
### 2. Analyze Plan for Gaps and Issues
Perform systematic analysis of the loaded plan:
**Logical Flow Check:**
- Do requirements align with proposed solution?
- Are tools appropriate for the workflow type?
- Is step sequence logical and complete?
- Are there missing transitions between steps?
**Completeness Review:**
- All requirements captured and addressed?
- Design covers all user scenarios?
- Implementation plan includes all necessary files?
- Are there unclear or ambiguous specifications?
**Architecture Validation:**
- Follows BMAD step-file architecture?
- Proper use of template patterns?
- Menu flow is logical and complete?
- Variable naming is consistent?
**Issue Identification:**
If gaps or issues found:
- Clearly identify each issue
- Propose specific solutions
- Ask for user input on resolution approach
### 3. Present Menu for Plan Approval
Display: **Plan Review Complete - Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Build
### 4. Address Questions and Concerns
Ask for specific feedback:
- Does this plan fully address your requirements?
- Are there any missing aspects?
- Would you like any changes to the design?
- Are you satisfied with the proposed structure?
### 5. Confirm or Revise
Based on feedback:
- If approved: Proceed to build step
- If changes needed: Go back to design step with specific feedback
- If major revisions: Consider going back to requirements step
## REVIEW CHECKPOINTS:
### Requirements Coverage
- [ ] All user requirements addressed
- [ ] Success criteria defined
- [ ] Technical constraints considered
- [ ] User interaction level appropriate
### Design Quality
- [ ] Step flow is logical
- [ ] Instruction style chosen appropriately
- [ ] Menu systems designed properly
- [ ] Error handling included
### Implementation Feasibility
- [ ] File structure is clear
- [ ] Target location confirmed
- [ ] Templates identified correctly
- [ ] Dependencies documented
## PLAN APPROVAL:
### Explicit Confirmation Required
Before proceeding to build, get explicit confirmation:
"Based on this plan, I will generate:
- [List of files]
in [target location]"
Ready to proceed when you are! Select your option below to build or modify the plan.
### 6. Present MENU OPTIONS
Display: **Review Complete - Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Build
#### EXECUTION RULES:
- ALWAYS halt and wait for user input after presenting menu
- ONLY proceed to build step with explicit 'C' selection AND approval
- After other menu items execution, return to this menu
- User can chat or ask questions - always respond and then end with display again of the menu options
- Use menu handling logic section below
#### Menu Handling Logic:
- IF A: Execute {advancedElicitationTask}
- IF P: Execute {partyModeWorkflow}
- IF C: AND user has approved the plan, update plan frontmatter, then load, read entire file, then execute {nextStepFile}
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#6-present-menu-options)
## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected AND user has explicitly approved the plan, will you then update the plan frontmatter and load, read entire file, then execute {nextStepFile} to execute and begin workflow file generation step.
---
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
### ✅ SUCCESS:
- Complete plan presented clearly
- All user questions answered
- Feedback collected and documented
- Explicit approval received (or revisions planned)
- Plan ready for implementation
### ❌ SYSTEM FAILURE:
- Skipping the review presentation
- Proceeding without explicit approval
- Not answering user questions
- Rushing through the review process
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.

View File

@ -1,36 +0,0 @@
## Build Summary
### Files Generated
{{#generatedFiles}}
- **{{type}}**: {{path}}
{{/generatedFiles}}
### Customizations Made
{{#customizations}}
- {{.}}
{{/customizations}}
### Manual Steps Required
{{#manualSteps}}
- {{.}}
{{/manualSteps}}
### Build Validation Results
- **Syntax Check**: {{syntaxCheckResult}}
- **Path Validation**: {{pathValidationResult}}
- **Variable Consistency**: {{variableConsistencyResult}}
- **Template Compliance**: {{templateComplianceResult}}
### Next Steps for Testing
1. Run `workflow {{targetModule}}/workflows/{{workflowName}}` to test
2. Verify all steps execute properly
3. Check output generation
4. Validate user interaction points

View File

@ -1,39 +0,0 @@
## Workflow Creation Complete!
### Final Deliverables
**Main Workflow**: {{targetWorkflowPath}}/workflow.md
**Step Files**: {{stepCount}} step files created
**Templates**: {{templateCount}} templates created
**Documentation**: Complete documentation provided
### Deployment Instructions
1. **Installation**: Run the BMAD Method installer to your project location
2. **Compilation**: Select 'Compile Agents' after confirming the folder
3. **Testing**: Use `workflow {{targetWorkflowPath}}` to test
### Usage Guide
```bash
# To invoke the workflow (from custom location)
workflow {{customWorkflowLocation}}/{{workflowName}}
# Or if standalone is true
/{{workflowCommand}}
```
### Support
- Created by: {{user_name}}
- Date: {{completionDate}}
- Module: {{targetModule}}
- Type: {{workflowType}}
### Thank You!
Thank you for using the Standalone Workflow Builder. Your workflow has been created following best practices for step-file architecture and collaborative design principles.
---
_Workflow creation completed successfully on {{completionDate}}_

View File

@ -1,21 +0,0 @@
# {{documentTitle}}
**Created:** {{date}}
**Author:** {{user_name}}
**Workflow:** {{workflowName}}
## Executive Summary
{{executiveSummary}}
## Details
{{mainContent}}
## Conclusion
{{conclusion}}
---
_Generated by the {{workflowName}} workflow_

View File

@ -1,53 +0,0 @@
## Workflow Design
### Step Structure
**Total Steps**: {{totalSteps}}
**Step Overview**:
{{stepOverview}}
### Detailed Step Plan
{{stepDetails}}
### Interaction Design
- **Menu Pattern**: {{menuPattern}}
- **User Input Points**: {{userInputPoints}}
- **AI Autonomy Level**: {{aiAutonomyLevel}}
- **Decision Flow**: {{decisionFlow}}
### Data Flow Architecture
- **Input Requirements**: {{dataInputRequirements}}
- **Intermediate Variables**: {{intermediateVariables}}
- **Output Mapping**: {{outputMapping}}
- **State Management**: {{stateManagement}}
### File Organization
- **Core Files**: {{coreFiles}}
- **Templates**: {{templates}}
- **Data Files**: {{dataFiles}}
- **Supporting Files**: {{supportingFiles}}
### AI Role Definition
- **Primary Role**: {{primaryRole}}
- **Expertise Areas**: {{expertiseAreas}}
- **Communication Style**: {{communicationStyle}}
- **Collaboration Approach**: {{collaborationApproach}}
### Quality Assurance
- **Validation Points**: {{validationPoints}}
- **Error Handling**: {{errorHandling}}
- **Recovery Strategies**: {{recoveryStrategies}}
- **Success Criteria**: {{designSuccessCriteria}}
### Special Features
- **Conditional Logic**: {{conditionalLogic}}
- **Branch Points**: {{branchPoints}}
- **Integrations**: {{designIntegrations}}
- **Multi-Scenario Support**: {{multiScenarioSupport}}

View File

@ -1,18 +0,0 @@
# Workflow Creation: {{workflow_name}}
**Created:** {{date}}
**Author:** {{user_name}}
**Module:** {{targetModule}}
**Type:** {{workflowType}}
## Project Overview
{{projectOverview}}
## Requirements Collected
{{requirementsCollected}}
---
_This document tracks the workflow creation process. The final workflow will be generated separately._

View File

@ -1,47 +0,0 @@
## Requirements Summary
### Workflow Purpose
- **Problem to Solve**: {{problemStatement}}
- **Primary Users**: {{targetUsers}}
- **Main Outcome**: {{primaryOutcome}}
- **Usage Frequency**: {{usageFrequency}}
### Workflow Classification
- **Type**: {{workflowType}}
- **Flow Pattern**: {{flowPattern}}
- **Interaction Style**: {{interactionStyle}}
- **Instruction Style**: {{instructionStyle}}
- **Autonomy Level**: {{autonomyLevel}}
### Input Requirements
- **Required Inputs**: {{requiredInputs}}
- **Optional Inputs**: {{optionalInputs}}
- **Prerequisites**: {{prerequisites}}
### Output Specifications
- **Primary Output**: {{primaryOutput}}
- **Intermediate Outputs**: {{intermediateOutputs}}
- **Output Format**: {{outputFormat}}
### Technical Constraints
- **Dependencies**: {{dependencies}}
- **Integrations**: {{integrations}}
- **Performance Requirements**: {{performanceRequirements}}
### Target Location
- **Module**: {{targetModule}}
- **Folder Name**: {{workflowFolderName}}
- **Target Path**: {{targetWorkflowPath}}
- **Custom Workflow Location**: {{customWorkflowLocation}}
### Success Criteria
- **Quality Metrics**: {{qualityMetrics}}
- **Success Indicators**: {{successIndicators}}
- **User Satisfaction**: {{userSatisfactionCriteria}}

View File

@ -1,56 +0,0 @@
## Workflow Review Results
### File Structure Review
**Status**: {{fileStructureStatus}}
- Required Files: {{requiredFilesStatus}}
- Directory Structure: {{directoryStructureStatus}}
- Naming Conventions: {{namingConventionsStatus}}
### Configuration Validation
**Status**: {{configValidationStatus}}
- Metadata Completeness: {{metadataStatus}}
- Path Variables: {{pathVariablesStatus}}
- Dependencies: {{dependenciesStatus}}
### Step File Compliance
**Status**: {{stepComplianceStatus}}
- Template Structure: {{templateStructureStatus}}
- Mandatory Rules: {{mandatoryRulesStatus}}
- Menu Implementation: {{menuImplementationStatus}}
### Cross-File Consistency
**Status**: {{consistencyStatus}}
- Variable Naming: {{variableNamingStatus}}
- Path References: {{pathReferencesStatus}}
- Step Sequence: {{stepSequenceStatus}}
### Requirements Verification
**Status**: {{requirementsVerificationStatus}}
- Problem Addressed: {{problemAddressedStatus}}
- User Types Supported: {{userTypesStatus}}
- Inputs/Outputs: {{inputsOutputsStatus}}
### Best Practices Adherence
**Status**: {{bestPracticesStatus}}
- File Size Limits: {{fileSizeStatus}}
- Collaborative Dialogue: {{collaborativeDialogueStatus}}
- Error Handling: {{errorHandlingStatus}}
### Issues Found
{{#issues}}
- **{{severity}}**: {{description}}
{{/issues}}

View File

@ -1,54 +0,0 @@
# Workflow Creation Plan: {{workflowName}}
**Created:** {{date}}
**Author:** {{user_name}}
**Module:** {{targetModule}}
**Type:** {{workflowType}}
## Executive Summary
{{executiveSummary}}
## Requirements Analysis
[Requirements will be appended here from step 2]
## Detailed Design
[Design details will be appended here from step 3]
## Implementation Plan
[Implementation plan will be appended here from step 4]
## Review and Validation
[Review results will be appended here from step 5]
---
## Final Configuration
### Output Files to Generate
{{#outputFiles}}
- {{type}}: {{path}}
{{/outputFiles}}
### Target Location
- **Folder**: {{targetWorkflowPath}}
- **Module**: {{targetModule}}
- **Custom Location**: {{customWorkflowLocation}}
### Final Checklist
- [ ] All requirements documented
- [ ] Workflow designed and approved
- [ ] Files generated successfully
- [ ] Workflow tested and validated
## Ready for Implementation
When you approve this plan, I'll generate all the workflow files in the specified location with the exact structure and content outlined above.

View File

@ -1,5 +1,5 @@
--- ---
name: Create Workflow name: create-workflow
description: Create structured standalone workflows using markdown-based step architecture description: Create structured standalone workflows using markdown-based step architecture
web_bundle: true web_bundle: true
--- ---

View File

@ -1,5 +1,5 @@
--- ---
name: Edit Agent name: edit-agent
description: Edit existing BMAD agents while following all best practices and conventions description: Edit existing BMAD agents while following all best practices and conventions
web_bundle: false web_bundle: false
--- ---

View File

@ -1,5 +1,5 @@
--- ---
name: Edit Workflow name: edit-workflow
description: Intelligent workflow editor that helps modify existing workflows while following best practices description: Intelligent workflow editor that helps modify existing workflows while following best practices
web_bundle: true web_bundle: true
--- ---

View File

@ -132,10 +132,10 @@ For each deviation:
"**Initialization Validation:**" "**Initialization Validation:**"
- Configuration Loading uses correct path format: `{project-root}/{bmad_folder}/[module]/config.yaml` (variable substitution pattern) - Configuration Loading uses correct path format: `{project-root}/{*bmad_folder*}/[module]/config.yaml` (variable substitution pattern)
- First step follows pattern: `step-01-init.md` OR documented deviation - First step follows pattern: `step-01-init.md` OR documented deviation
- Required config variables properly listed - Required config variables properly listed
- Variables use proper substitution pattern: {project-root}, {bmad_folder}, {workflow_path}, etc. - Variables use proper substitution pattern: {project-root}, {_bmad_folder_}, {workflow_path}, etc.
For violations: For violations:
@ -198,7 +198,7 @@ Append to {complianceReportFile}:
"**Phase 1 Complete:** Workflow.md validation finished with detailed violation analysis. "**Phase 1 Complete:** Workflow.md validation finished with detailed violation analysis.
**Ready for Phase 2:** Step-by-step validation against step-template.md **Ready for Phase 3:** Step-by-step validation against step-template.md
This will check each step file for: This will check each step file for:

View File

@ -138,8 +138,8 @@ Check for proper references:
```yaml ```yaml
# Task References # Task References
advancedElicitationTask: '{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml' advancedElicitationTask: '{project-root}/{*bmad_folder*}/core/tasks/advanced-elicitation.xml'
partyModeWorkflow: '{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md' partyModeWorkflow: '{project-root}/{*bmad_folder*}/core/workflows/party-mode/workflow.md'
``` ```
**Violations to document:** **Violations to document:**
@ -186,7 +186,7 @@ For each step:
"**Path Variable Validation:**" "**Path Variable Validation:**"
- Check format: `{project-root}/{bmad_folder}/bmb/...` vs `{project-root}/src/modules/bmb/...` - Check format: `{project-root}/{*bmad_folder*}/bmb/...` vs `{project-root}/src/modules/bmb/...`
- Ensure consistent variable usage across all step files - Ensure consistent variable usage across all step files
- Validate relative vs absolute path usage - Validate relative vs absolute path usage
@ -232,13 +232,13 @@ For each step file with violations:
2. [Second most frequent] 2. [Second most frequent]
3. [Third most frequent] 3. [Third most frequent]
**Ready for Phase 3:** Holistic workflow analysis **Ready for Phase 4:** File Validation workflow analysis
- Flow optimization assessment - Flow optimization assessment
- Goal alignment verification - Goal alignment verification
- Meta-workflow failure analysis - Meta-workflow failure analysis
**Select an Option:** [C] Continue to Holistic Analysis [X] Exit" **Select an Option:** [C] Continue to File Validation [X] Exit"
## Menu Handling Logic: ## Menu Handling Logic:

View File

@ -253,7 +253,7 @@ For each file with issues:
- **Formatting Standards:** [summary of markdown compliance issues] - **Formatting Standards:** [summary of markdown compliance issues]
- **Data Validation:** [summary of CSV standards compliance] - **Data Validation:** [summary of CSV standards compliance]
**Ready for Phase 5:** Holistic workflow analysis **Ready for Phase 5:** Intent Spectrum Validation analysis
- Flow validation and goal alignment - Flow validation and goal alignment
- Meta-workflow failure analysis - Meta-workflow failure analysis

View File

@ -222,7 +222,7 @@ Append to {complianceReportFile}:
- **User Understanding:** Confirmed implications and benefits - **User Understanding:** Confirmed implications and benefits
- **Implementation Ready:** Guidance provided for maintaining position - **Implementation Ready:** Guidance provided for maintaining position
**Ready for Phase 6:** Holistic workflow analysis **Ready for Phase 6:** Web Subprocess Validation analysis
- Flow validation and completion paths - Flow validation and completion paths
- Goal alignment and optimization assessment - Goal alignment and optimization assessment

View File

@ -315,7 +315,7 @@ Append to {complianceReportFile}:
- **Performance Impact:** [expected efficiency gains] - **Performance Impact:** [expected efficiency gains]
- **User Experience Benefits:** [specific improvements] - **User Experience Benefits:** [specific improvements]
**Ready for Phase 6:** Holistic workflow analysis **Ready for Phase 7:** Holistic workflow analysis
- Flow validation and completion paths - Flow validation and completion paths
- Goal alignment with optimized resources - Goal alignment with optimized resources

View File

@ -215,7 +215,7 @@ Evaluate workflow from user perspective:
- **Optimization Opportunities:** [number key improvements identified] - **Optimization Opportunities:** [number key improvements identified]
- **Meta-Workflow Failures:** [number issues that should have been prevented] - **Meta-Workflow Failures:** [number issues that should have been prevented]
**Ready for Phase 6:** Comprehensive compliance report generation **Ready for Phase 8:** Comprehensive compliance report generation
- All findings compiled into structured report - All findings compiled into structured report
- Severity-ranked violation list - Severity-ranked violation list

View File

@ -1,5 +1,5 @@
--- ---
name: Workflow Compliance Check name: workflow-compliance-check
description: Systematic validation of workflows against BMAD standards with adversarial analysis and detailed reporting description: Systematic validation of workflows against BMAD standards with adversarial analysis and detailed reporting
web_bundle: false web_bundle: false
--- ---

View File

@ -26,12 +26,8 @@ agent:
exec: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/architecture/workflow.md" exec: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/architecture/workflow.md"
description: Create an Architecture Document to Guide Development of a PRD (required for BMad Method projects) description: Create an Architecture Document to Guide Development of a PRD (required for BMad Method projects)
- trigger: validate-architecture
validate-workflow: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/architecture/workflow.yaml"
description: Validate Architecture Document (Recommended, use another LLM and fresh context for best results)
- trigger: implementation-readiness - trigger: implementation-readiness
workflow: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/implementation-readiness/workflow.yaml" exec: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/implementation-readiness/workflow.md"
description: Validate PRD, UX, Architecture, Epics and stories aligned (Optional but recommended before development) description: Validate PRD, UX, Architecture, Epics and stories aligned (Optional but recommended before development)
- trigger: create-excalidraw-diagram - trigger: create-excalidraw-diagram

View File

@ -27,14 +27,14 @@ agent:
exec: "{project-root}/{bmad_folder}/bmm/workflows/2-plan-workflows/prd/workflow.md" exec: "{project-root}/{bmad_folder}/bmm/workflows/2-plan-workflows/prd/workflow.md"
description: Create Product Requirements Document (PRD) (Required for BMad Method flow) description: Create Product Requirements Document (PRD) (Required for BMad Method flow)
- trigger: validate-prd
validate-workflow: "{project-root}/{bmad_folder}/bmm/workflows/2-plan-workflows/prd/workflow.yaml"
description: Validate PRD (Highly Recommended, use fresh context and different LLM for best results)
- trigger: create-epics-and-stories - trigger: create-epics-and-stories
workflow: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml" exec: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md"
description: Create Epics and User Stories from PRD (Required for BMad Method flow AFTER the Architecture is completed) description: Create Epics and User Stories from PRD (Required for BMad Method flow AFTER the Architecture is completed)
- trigger: implementation-readiness
exec: "{project-root}/{bmad_folder}/bmm/workflows/3-solutioning/implementation-readiness/workflow.md"
description: Validate PRD, UX, Architecture, Epics and stories aligned (Optional but recommended before development)
- trigger: correct-course - trigger: correct-course
workflow: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/correct-course/workflow.yaml" workflow: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/correct-course/workflow.yaml"
description: Course Correction Analysis (optional during implementation when things go off track) description: Course Correction Analysis (optional during implementation when things go off track)

View File

@ -108,7 +108,8 @@ Stories move through these states in the sprint status file:
**As Needed:** **As Needed:**
- Run `workflow-status` anytime to check progress - Run `sprint-status` anytime in Phase 4 to inspect sprint-status.yaml and get the next implementation command
- Run `workflow-status` for cross-phase routing and project-level paths
- Run `correct-course` if significant changes needed - Run `correct-course` if significant changes needed
--- ---
@ -155,7 +156,7 @@ PRD (PM) → Architecture (Architect)
## Troubleshooting ## Troubleshooting
**Q: Which workflow should I run next?** **Q: Which workflow should I run next?**
A: Run `workflow-status` - it reads the sprint status file and tells you exactly what to do. A: Run `workflow-status` - it reads the sprint status file and tells you exactly what to do. During implementation (Phase 4) run `sprint-status` (fast check against sprint-status.yaml).
**Q: Story needs significant changes mid-implementation?** **Q: Story needs significant changes mid-implementation?**
A: Run `correct-course` to analyze impact and route appropriately. A: Run `correct-course` to analyze impact and route appropriately.

View File

@ -1,5 +1,5 @@
--- ---
name: Product Brief Workflow name: create-product-brief
description: Create comprehensive product briefs through collaborative step-by-step discovery as creative Business Analyst working with the user as peers. description: Create comprehensive product briefs through collaborative step-by-step discovery as creative Business Analyst working with the user as peers.
web_bundle: true web_bundle: true
--- ---

View File

@ -1,6 +1,7 @@
--- ---
name: Research Workflow name: research
description: Conduct comprehensive research across multiple domains using current web data and verified sources - Market, Technical, Domain and other research types. description: Conduct comprehensive research across multiple domains using current web data and verified sources - Market, Technical, Domain and other research types.
web_bundle: true
--- ---
# Research Workflow # Research Workflow

View File

@ -1,3 +1,9 @@
---
name: create-ux-design
description: Work with a peer UX Design expert to plan your applications UX patterns, look and feel.
web_bundle: true
---
# Create UX Design Workflow # Create UX Design Workflow
**Goal:** Create comprehensive UX design specifications through collaborative visual exploration and informed decision-making where you act as a UX facilitator working with a product stakeholder. **Goal:** Create comprehensive UX design specifications through collaborative visual exploration and informed decision-making where you act as a UX facilitator working with a product stakeholder.

View File

@ -1,7 +1,7 @@
--- ---
name: PRD Workflow name: create-prd
description: Creates a comprehensive PRDs through collaborative step-by-step discovery between two product managers working as peers. description: Creates a comprehensive PRDs through collaborative step-by-step discovery between two product managers working as peers.
main_config: `{project-root}/{bmad_folder}/bmm/config.yaml` main_config: '{project-root}/{bmad_folder}/bmm/config.yaml'
web_bundle: true web_bundle: true
--- ---

View File

@ -1,6 +1,7 @@
--- ---
name: Architecture Workflow name: create-architecture
description: Collaborative architectural decision facilitation for AI-agent consistency. Replaces template-driven architecture with intelligent, adaptive conversation that produces a decision-focused architecture document optimized for preventing agent conflicts. description: Collaborative architectural decision facilitation for AI-agent consistency. Replaces template-driven architecture with intelligent, adaptive conversation that produces a decision-focused architecture document optimized for preventing agent conflicts.
web_bundle: true
--- ---
# Architecture Workflow # Architecture Workflow

View File

@ -1,5 +1,5 @@
--- ---
name: 'Create Epics and Stories' name: create-epics-stories
description: 'Transform PRD requirements and Architecture decisions into comprehensive stories organized by user value. This workflow requires completed PRD + Architecture documents (UX recommended if UI exists) and breaks down requirements into implementation-ready epics and user stories that incorporate all available technical and design context. Creates detailed, actionable stories with complete acceptance criteria for development teams.' description: 'Transform PRD requirements and Architecture decisions into comprehensive stories organized by user value. This workflow requires completed PRD + Architecture documents (UX recommended if UI exists) and breaks down requirements into implementation-ready epics and user stories that incorporate all available technical and design context. Creates detailed, actionable stories with complete acceptance criteria for development teams.'
web_bundle: true web_bundle: true
--- ---

View File

@ -1,5 +1,5 @@
--- ---
name: 'Implementation Readiness' name: check-implementation-readiness
description: 'Critical validation workflow that assesses PRD, Architecture, and Epics & Stories for completeness and alignment before implementation. Uses adversarial review approach to find gaps and issues.' description: 'Critical validation workflow that assesses PRD, Architecture, and Epics & Stories for completeness and alignment before implementation. Uses adversarial review approach to find gaps and issues.'
web_bundle: false web_bundle: false
--- ---

View File

@ -0,0 +1,174 @@
# Sprint Status - Multi-Mode Service
<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}/bmm/workflows/4-implementation/sprint-status/workflow.yaml</critical>
<critical>Modes: interactive (default), validate, data</critical>
<critical>⚠️ ABSOLUTELY NO TIME ESTIMATES. Do NOT mention hours, days, weeks, or timelines.</critical>
<workflow>
<step n="0" goal="Determine execution mode">
<action>Set mode = {{mode}} if provided by caller; otherwise mode = "interactive"</action>
<check if="mode == data">
<action>Jump to Step 20</action>
</check>
<check if="mode == validate">
<action>Jump to Step 30</action>
</check>
<check if="mode == interactive">
<action>Continue to Step 1</action>
</check>
</step>
<step n="1" goal="Locate sprint status file">
<action>Try {sprint_status_file}</action>
<check if="file not found">
<output>❌ sprint-status.yaml not found.
Run `/bmad:bmm:workflows:sprint-planning` to generate it, then rerun sprint-status.</output>
<action>Exit workflow</action>
</check>
<action>Continue to Step 2</action>
</step>
<step n="2" goal="Read and parse sprint-status.yaml">
<action>Read the FULL file: {sprint_status_file}</action>
<action>Parse fields: generated, project, project_key, tracking_system, story_location</action>
<action>Parse development_status map. Classify keys:</action>
- Epics: keys starting with "epic-" (and not ending with "-retrospective")
- Retrospectives: keys ending with "-retrospective"
- Stories: everything else (e.g., 1-2-login-form)
<action>Count story statuses: backlog, drafted, ready-for-dev, in-progress, review, done</action>
<action>Count epic statuses: backlog, contexted</action>
<action>Detect risks:</action>
- Stories in review but no reviewer assigned context → suggest `/bmad:bmm:workflows:code-review`
- Stories in in-progress with no ready-for-dev items behind them → keep focus on the active story
- All epics backlog/contexted but no stories drafted → prompt to run `/bmad:bmm:workflows:create-story`
</step>
<step n="3" goal="Select next action recommendation">
<action>Pick the next recommended workflow using priority:</action>
1. If any story status == in-progress → recommend `dev-story` for the first in-progress story
2. Else if any story status == review → recommend `code-review` for the first review story
3. Else if any story status == ready-for-dev → recommend `dev-story`
4. Else if any story status == drafted → recommend `story-ready`
5. Else if any story status == backlog → recommend `create-story`
6. Else if any epic status == backlog → recommend `epic-tech-context`
7. Else if retrospectives are optional → recommend `retrospective`
8. Else → All implementation items done; suggest `workflow-status` to plan next phase
<action>Store selected recommendation as: next_story_id, next_workflow_id, next_agent (SM/DEV as appropriate)</action>
</step>
<step n="4" goal="Display summary">
<output>
## 📊 Sprint Status
- Project: {{project}} ({{project_key}})
- Tracking: {{tracking_system}}
- Status file: {sprint_status_file}
**Stories:** backlog {{count_backlog}}, drafted {{count_drafted}}, ready-for-dev {{count_ready}}, in-progress {{count_in_progress}}, review {{count_review}}, done {{count_done}}
**Epics:** backlog {{epic_backlog}}, contexted {{epic_contexted}}
**Next Recommendation:** /bmad:bmm:workflows:{{next_workflow_id}} ({{next_story_id}})
{{#if risks}}
**Risks:**
{{#each risks}}
- {{this}}
{{/each}}
{{/if}}
{{#if by_epic}}
**Per Epic:**
{{#each by_epic}}
- {{epic_id}}: context={{context_status}}, stories → backlog {{backlog}}, drafted {{drafted}}, ready {{ready_for_dev}}, in-progress {{in_progress}}, review {{review}}, done {{done}}
{{/each}}
{{/if}}
</output>
</step>
<step n="5" goal="Offer actions">
<ask>Pick an option:
1) Run recommended workflow now
2) Show all stories grouped by status
3) Show raw sprint-status.yaml
4) Exit
Choice:</ask>
<check if="choice == 1">
<output>Run `/bmad:bmm:workflows:{{next_workflow_id}}`.
If the command targets a story, set `story_key={{next_story_id}}` when prompted.</output>
</check>
<check if="choice == 2">
<output>
### Stories by Status
- In Progress: {{stories_in_progress}}
- Review: {{stories_in_review}}
- Ready for Dev: {{stories_ready_for_dev}}
- Drafted: {{stories_drafted}}
- Backlog: {{stories_backlog}}
- Done: {{stories_done}}
</output>
</check>
<check if="choice == 3">
<action>Display the full contents of {sprint_status_file}</action>
</check>
<check if="choice == 4">
<action>Exit workflow</action>
</check>
</step>
<!-- ========================= -->
<!-- Data mode for other flows -->
<!-- ========================= -->
<step n="20" goal="Data mode output">
<action>Load and parse {sprint_status_file} same as Step 2</action>
<action>Compute recommendation same as Step 3</action>
<template-output>next_workflow_id = {{next_workflow_id}}</template-output>
<template-output>next_story_id = {{next_story_id}}</template-output>
<template-output>count_backlog = {{count_backlog}}</template-output>
<template-output>count_drafted = {{count_drafted}}</template-output>
<template-output>count_ready = {{count_ready}}</template-output>
<template-output>count_in_progress = {{count_in_progress}}</template-output>
<template-output>count_review = {{count_review}}</template-output>
<template-output>count_done = {{count_done}}</template-output>
<template-output>epic_backlog = {{epic_backlog}}</template-output>
<template-output>epic_contexted = {{epic_contexted}}</template-output>
<template-output>warnings = {{risks}}</template-output>
<action>Return to caller</action>
</step>
<!-- ========================= -->
<!-- Validate mode -->
<!-- ========================= -->
<step n="30" goal="Validate sprint-status file">
<action>Check that {sprint_status_file} exists</action>
<check if="missing">
<template-output>is_valid = false</template-output>
<template-output>error = "sprint-status.yaml missing"</template-output>
<template-output>suggestion = "Run sprint-planning to create it"</template-output>
<action>Return</action>
</check>
<action>Read file and verify it has a development_status section with at least one entry</action>
<check if="validation fails">
<template-output>is_valid = false</template-output>
<template-output>error = "development_status missing or empty"</template-output>
<template-output>suggestion = "Re-run sprint-planning or repair the file manually"</template-output>
<action>Return</action>
</check>
<template-output>is_valid = true</template-output>
<template-output>message = "sprint-status.yaml present and parsable"</template-output>
</step>
</workflow>

View File

@ -0,0 +1,35 @@
# Sprint Status - Implementation Tracker
name: sprint-status
description: "Summarize sprint-status.yaml, surface risks, and route to the right implementation workflow."
author: "BMad"
# Critical variables from config
config_source: "{project-root}/{bmad_folder}/bmm/config.yaml"
output_folder: "{config_source}:output_folder"
user_name: "{config_source}:user_name"
communication_language: "{config_source}:communication_language"
document_output_language: "{config_source}:document_output_language"
date: system-generated
sprint_artifacts: "{config_source}:sprint_artifacts"
# Workflow components
installed_path: "{project-root}/{bmad_folder}/bmm/workflows/4-implementation/sprint-status"
instructions: "{installed_path}/instructions.md"
# Inputs
variables:
sprint_status_file: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml"
tracking_system: "file-system"
# Smart input file references
input_file_patterns:
sprint_status:
description: "Sprint status file generated by sprint-planning"
whole: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-status.yaml"
load_strategy: "FULL_LOAD"
# Standalone so IDE commands get generated
standalone: true
# No web bundle needed
web_bundle: false

View File

@ -32,6 +32,29 @@
</check> </check>
<check if="Mode B"> <check if="Mode B">
<!-- Escalation Threshold: Lightweight check - should we invoke scale-adaptive? -->
<action>Evaluate escalation threshold against user input (minimal tokens, no file loading):
**Triggers escalation** (if 2+ signals present):
- Multiple components mentioned (e.g., dashboard + api + database)
- System-level language (e.g., platform, integration, architecture)
- Uncertainty about approach (e.g., "how should I", "best way to")
- Multi-layer scope (e.g., UI + backend + data together)
- Extended timeframe (e.g., "this week", "over the next few days")
**Reduces signal:**
- Simplicity markers (e.g., "just", "quickly", "fix", "bug", "typo", "simple", "basic", "minor")
- Single file/component focus
- Confident, specific request
Use holistic judgment, not mechanical keyword matching.</action>
<!-- No Escalation: Simple request, offer existing choice -->
<check if="escalation threshold NOT triggered">
<ask>**[t] Plan first** - Create tech-spec then implement <ask>**[t] Plan first** - Create tech-spec then implement
**[e] Execute directly** - Start now</ask> **[e] Execute directly** - Start now</ask>
@ -44,6 +67,80 @@
<ask>Any additional guidance before I begin? (patterns, files, constraints) Or "go" to start.</ask> <ask>Any additional guidance before I begin? (patterns, files, constraints) Or "go" to start.</ask>
<goto>step_2</goto> <goto>step_2</goto>
</check> </check>
</check>
<!-- Escalation Triggered: Load scale-adaptive and evaluate level -->
<check if="escalation threshold triggered">
<action>Load {project_levels} and evaluate user input against detection_hints.keywords</action>
<action>Determine level (0-4) using scale-adaptive definitions</action>
<!-- Level 0: Scale-adaptive confirms simple, fall back to standard choice -->
<check if="level 0">
<ask>**[t] Plan first** - Create tech-spec then implement
**[e] Execute directly** - Start now</ask>
<check if="t">
<action>Load and execute {create_tech_spec_workflow}</action>
<action>Continue to implementation after spec complete</action>
</check>
<check if="e">
<ask>Any additional guidance before I begin? (patterns, files, constraints) Or "go" to start.</ask>
<goto>step_2</goto>
</check>
</check>
<check if="level 1 or 2 or couldn't determine level">
<ask>This looks like a focused feature with multiple components.
**[t] Create tech-spec first** (recommended)
**[w] Seems bigger than quick-dev** — see what BMad Method recommends (workflow-init)
**[e] Execute directly**</ask>
<check if="t">
<action>Load and execute {create_tech_spec_workflow}</action>
<action>Continue to implementation after spec complete</action>
</check>
<check if="w">
<action>Load and execute {workflow_init}</action>
<action>EXIT quick-dev - user has been routed to BMad Method</action>
</check>
<check if="e">
<ask>Any additional guidance before I begin? (patterns, files, constraints) Or "go" to start.</ask>
<goto>step_2</goto>
</check>
</check>
<!-- Level 3+: BMad Method territory, recommend workflow-init -->
<check if="level 3 or higher">
<ask>This sounds like platform/system work.
**[w] Start BMad Method** (recommended) (workflow-init)
**[t] Create tech-spec** (lighter planning)
**[e] Execute directly** - feeling lucky</ask>
<check if="w">
<action>Load and execute {workflow_init}</action>
<action>EXIT quick-dev - user has been routed to BMad Method</action>
</check>
<check if="t">
<action>Load and execute {create_tech_spec_workflow}</action>
<action>Continue to implementation after spec complete</action>
</check>
<check if="e">
<ask>Any additional guidance before I begin? (patterns, files, constraints) Or "go" to start.</ask>
<goto>step_2</goto>
</check>
</check>
</check>
</check> </check>
</step> </step>

View File

@ -25,5 +25,9 @@ create_tech_spec_workflow: "{project-root}/{bmad_folder}/bmm/workflows/bmad-quic
party_mode_exec: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md" party_mode_exec: "{project-root}/{bmad_folder}/core/workflows/party-mode/workflow.md"
advanced_elicitation: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml" advanced_elicitation: "{project-root}/{bmad_folder}/core/tasks/advanced-elicitation.xml"
# Routing resources (lazy-loaded)
project_levels: "{project-root}/{bmad_folder}/bmm/workflows/workflow-status/project-levels.yaml"
workflow_init: "{project-root}/{bmad_folder}/bmm/workflows/workflow-status/init/workflow.yaml"
standalone: true standalone: true
web_bundle: false web_bundle: false

View File

@ -1,5 +1,5 @@
--- ---
name: Generate Project Context name: generate-project-context
description: Creates a concise project_context.md file with critical rules and patterns that AI agents must follow when implementing code. Optimized for LLM context efficiency. description: Creates a concise project_context.md file with critical rules and patterns that AI agents must follow when implementing code. Optimized for LLM context efficiency.
--- ---

View File

@ -141,6 +141,11 @@ class Installer {
content = content.replaceAll('{bmad_folder}', bmadFolderName); content = content.replaceAll('{bmad_folder}', bmadFolderName);
} }
// Replace escape sequence {*bmad_folder*} with literal {bmad_folder}
if (content.includes('{*bmad_folder*}')) {
content = content.replaceAll('{*bmad_folder*}', '{bmad_folder}');
}
// Process AgentVibes injection points // Process AgentVibes injection points
content = this.processTTSInjectionPoints(content); content = this.processTTSInjectionPoints(content);

View File

@ -105,7 +105,7 @@ class ManifestGenerator {
} }
/** /**
* Recursively find and parse workflow.yaml files * Recursively find and parse workflow.yaml and workflow.md files
*/ */
async getWorkflowsFromPath(basePath, moduleName) { async getWorkflowsFromPath(basePath, moduleName) {
const workflows = []; const workflows = [];
@ -126,11 +126,23 @@ class ManifestGenerator {
// Recurse into subdirectories // Recurse into subdirectories
const newRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name; const newRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
await findWorkflows(fullPath, newRelativePath); await findWorkflows(fullPath, newRelativePath);
} else if (entry.name === 'workflow.yaml') { } else if (entry.name === 'workflow.yaml' || entry.name === 'workflow.md') {
// Parse workflow file // Parse workflow file (both YAML and MD formats)
try { try {
const content = await fs.readFile(fullPath, 'utf8'); const content = await fs.readFile(fullPath, 'utf8');
const workflow = yaml.load(content);
let workflow;
if (entry.name === 'workflow.yaml') {
// Parse YAML workflow
workflow = yaml.load(content);
} else {
// Parse MD workflow with YAML frontmatter
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
if (!frontmatterMatch) {
continue; // Skip MD files without frontmatter
}
workflow = yaml.load(frontmatterMatch[1]);
}
// Skip template workflows (those with placeholder values) // Skip template workflows (those with placeholder values)
if (workflow.name && workflow.name.includes('{') && workflow.name.includes('}')) { if (workflow.name && workflow.name.includes('{') && workflow.name.includes('}')) {
@ -141,18 +153,15 @@ class ManifestGenerator {
// Build relative path for installation // Build relative path for installation
const installPath = const installPath =
moduleName === 'core' moduleName === 'core'
? `${this.bmadFolderName}/core/workflows/${relativePath}/workflow.yaml` ? `${this.bmadFolderName}/core/workflows/${relativePath}/${entry.name}`
: `${this.bmadFolderName}/${moduleName}/workflows/${relativePath}/workflow.yaml`; : `${this.bmadFolderName}/${moduleName}/workflows/${relativePath}/${entry.name}`;
// Check for standalone property (default: false)
const standalone = workflow.standalone === true;
// ALL workflows now generate commands - no standalone property needed
workflows.push({ workflows.push({
name: workflow.name, name: workflow.name,
description: workflow.description.replaceAll('"', '""'), // Escape quotes for CSV description: workflow.description.replaceAll('"', '""'), // Escape quotes for CSV
module: moduleName, module: moduleName,
path: installPath, path: installPath,
standalone: standalone,
}); });
// Add to files list // Add to files list
@ -541,12 +550,12 @@ class ManifestGenerator {
async writeWorkflowManifest(cfgDir) { async writeWorkflowManifest(cfgDir) {
const csvPath = path.join(cfgDir, 'workflow-manifest.csv'); const csvPath = path.join(cfgDir, 'workflow-manifest.csv');
// Create CSV header with standalone column // Create CSV header - removed standalone column as ALL workflows now generate commands
let csv = 'name,description,module,path,standalone\n'; let csv = 'name,description,module,path\n';
// Add all workflows // Add all workflows - no standalone property needed anymore
for (const workflow of this.workflows) { for (const workflow of this.workflows) {
csv += `"${workflow.name}","${workflow.description}","${workflow.module}","${workflow.path}","${workflow.standalone}"\n`; csv += `"${workflow.name}","${workflow.description}","${workflow.module}","${workflow.path}"\n`;
} }
await fs.writeFile(csvPath, csv); await fs.writeFile(csvPath, csv);

View File

@ -536,6 +536,11 @@ class BaseIdeSetup {
if (typeof content === 'string' && content.includes('{bmad_folder}')) { if (typeof content === 'string' && content.includes('{bmad_folder}')) {
content = content.replaceAll('{bmad_folder}', this.bmadFolderName); content = content.replaceAll('{bmad_folder}', this.bmadFolderName);
} }
// Replace escape sequence {*bmad_folder*} with literal {bmad_folder}
if (typeof content === 'string' && content.includes('{*bmad_folder*}')) {
content = content.replaceAll('{*bmad_folder*}', '{bmad_folder}');
}
await this.ensureDir(path.dirname(filePath)); await this.ensureDir(path.dirname(filePath));
await fs.writeFile(filePath, content, 'utf8'); await fs.writeFile(filePath, content, 'utf8');
} }
@ -563,6 +568,11 @@ class BaseIdeSetup {
content = content.replaceAll('{bmad_folder}', this.bmadFolderName); content = content.replaceAll('{bmad_folder}', this.bmadFolderName);
} }
// Replace escape sequence {*bmad_folder*} with literal {bmad_folder}
if (content.includes('{*bmad_folder*}')) {
content = content.replaceAll('{*bmad_folder*}', '{bmad_folder}');
}
// Write to dest with replaced content // Write to dest with replaced content
await fs.writeFile(dest, content, 'utf8'); await fs.writeFile(dest, content, 'utf8');
} catch { } catch {

View File

@ -3,6 +3,7 @@ const fs = require('fs-extra');
const { BaseIdeSetup } = require('./_base-ide'); const { BaseIdeSetup } = require('./_base-ide');
const chalk = require('chalk'); const chalk = require('chalk');
const { AgentCommandGenerator } = require('./shared/agent-command-generator'); const { AgentCommandGenerator } = require('./shared/agent-command-generator');
const { WorkflowCommandGenerator } = require('./shared/workflow-command-generator');
/** /**
* Auggie CLI setup handler * Auggie CLI setup handler
@ -33,10 +34,23 @@ class AuggieSetup extends BaseIdeSetup {
const agentGen = new AgentCommandGenerator(this.bmadFolderName); const agentGen = new AgentCommandGenerator(this.bmadFolderName);
const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []); const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
// Get tasks, tools, and workflows (standalone only) // Get tasks, tools, and workflows (ALL workflows now generate commands)
const tasks = await this.getTasks(bmadDir, true); const tasks = await this.getTasks(bmadDir, true);
const tools = await this.getTools(bmadDir, true); const tools = await this.getTools(bmadDir, true);
const workflows = await this.getWorkflows(bmadDir, true);
// Get ALL workflows using the new workflow command generator
const workflowGenerator = new WorkflowCommandGenerator(this.bmadFolderName);
const { artifacts: workflowArtifacts, counts: workflowCounts } = await workflowGenerator.collectWorkflowArtifacts(bmadDir);
// Convert workflow artifacts to expected format
const workflows = workflowArtifacts
.filter((artifact) => artifact.type === 'workflow-command')
.map((artifact) => ({
module: artifact.module,
name: path.basename(artifact.relativePath, '.md'),
path: artifact.sourcePath,
content: artifact.content,
}));
const bmadCommandsDir = path.join(location, 'bmad'); const bmadCommandsDir = path.join(location, 'bmad');
const agentsDir = path.join(bmadCommandsDir, 'agents'); const agentsDir = path.join(bmadCommandsDir, 'agents');
@ -73,13 +87,11 @@ class AuggieSetup extends BaseIdeSetup {
await this.writeFile(targetPath, commandContent); await this.writeFile(targetPath, commandContent);
} }
// Install workflows // Install workflows (already generated commands)
for (const workflow of workflows) { for (const workflow of workflows) {
const content = await this.readFile(workflow.path); // Use the pre-generated workflow command content
const commandContent = this.createWorkflowCommand(workflow, content);
const targetPath = path.join(workflowsDir, `${workflow.module}-${workflow.name}.md`); const targetPath = path.join(workflowsDir, `${workflow.module}-${workflow.name}.md`);
await this.writeFile(targetPath, commandContent); await this.writeFile(targetPath, workflow.content);
} }
const totalInstalled = agentArtifacts.length + tasks.length + tools.length + workflows.length; const totalInstalled = agentArtifacts.length + tasks.length + tools.length + workflows.length;

View File

@ -3,6 +3,7 @@ const fs = require('fs-extra');
const { BaseIdeSetup } = require('./_base-ide'); const { BaseIdeSetup } = require('./_base-ide');
const chalk = require('chalk'); const chalk = require('chalk');
const { AgentCommandGenerator } = require('./shared/agent-command-generator'); const { AgentCommandGenerator } = require('./shared/agent-command-generator');
const { WorkflowCommandGenerator } = require('./shared/workflow-command-generator');
/** /**
* Crush IDE setup handler * Crush IDE setup handler
@ -34,10 +35,23 @@ class CrushSetup extends BaseIdeSetup {
const agentGen = new AgentCommandGenerator(this.bmadFolderName); const agentGen = new AgentCommandGenerator(this.bmadFolderName);
const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []); const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
// Get tasks, tools, and workflows (standalone only) // Get tasks, tools, and workflows (ALL workflows now generate commands)
const tasks = await this.getTasks(bmadDir, true); const tasks = await this.getTasks(bmadDir, true);
const tools = await this.getTools(bmadDir, true); const tools = await this.getTools(bmadDir, true);
const workflows = await this.getWorkflows(bmadDir, true);
// Get ALL workflows using the new workflow command generator
const workflowGenerator = new WorkflowCommandGenerator(this.bmadFolderName);
const { artifacts: workflowArtifacts, counts: workflowCounts } = await workflowGenerator.collectWorkflowArtifacts(bmadDir);
// Convert workflow artifacts to expected format for organizeByModule
const workflows = workflowArtifacts
.filter((artifact) => artifact.type === 'workflow-command')
.map((artifact) => ({
module: artifact.module,
name: path.basename(artifact.relativePath, '.md'),
path: artifact.sourcePath,
content: artifact.content,
}));
// Organize by module // Organize by module
const agentCount = await this.organizeByModule(commandsDir, agentArtifacts, tasks, tools, workflows, projectDir); const agentCount = await this.organizeByModule(commandsDir, agentArtifacts, tasks, tools, workflows, projectDir);
@ -113,13 +127,12 @@ class CrushSetup extends BaseIdeSetup {
toolCount++; toolCount++;
} }
// Copy module-specific workflows // Copy module-specific workflow commands (already generated)
const moduleWorkflows = workflows.filter((w) => w.module === module); const moduleWorkflows = workflows.filter((w) => w.module === module);
for (const workflow of moduleWorkflows) { for (const workflow of moduleWorkflows) {
const content = await this.readFile(workflow.path); // Use the pre-generated workflow command content
const commandContent = this.createWorkflowCommand(workflow, content);
const targetPath = path.join(moduleWorkflowsDir, `${workflow.name}.md`); const targetPath = path.join(moduleWorkflowsDir, `${workflow.name}.md`);
await this.writeFile(targetPath, commandContent); await this.writeFile(targetPath, workflow.content);
workflowCount++; workflowCount++;
} }
} }

View File

@ -2,6 +2,7 @@ const path = require('node:path');
const { BaseIdeSetup } = require('./_base-ide'); const { BaseIdeSetup } = require('./_base-ide');
const chalk = require('chalk'); const chalk = require('chalk');
const { AgentCommandGenerator } = require('./shared/agent-command-generator'); const { AgentCommandGenerator } = require('./shared/agent-command-generator');
const { WorkflowCommandGenerator } = require('./shared/workflow-command-generator');
/** /**
* Cursor IDE setup handler * Cursor IDE setup handler
@ -53,10 +54,22 @@ class CursorSetup extends BaseIdeSetup {
// Convert artifacts to agent format for index creation // Convert artifacts to agent format for index creation
const agents = agentArtifacts.map((a) => ({ module: a.module, name: a.name })); const agents = agentArtifacts.map((a) => ({ module: a.module, name: a.name }));
// Get tasks, tools, and workflows (standalone only) // Get tasks, tools, and workflows (ALL workflows now generate commands)
const tasks = await this.getTasks(bmadDir, true); const tasks = await this.getTasks(bmadDir, true);
const tools = await this.getTools(bmadDir, true); const tools = await this.getTools(bmadDir, true);
const workflows = await this.getWorkflows(bmadDir, true);
// Get ALL workflows using the new workflow command generator
const workflowGenerator = new WorkflowCommandGenerator(this.bmadFolderName);
const { artifacts: workflowArtifacts, counts: workflowCounts } = await workflowGenerator.collectWorkflowArtifacts(bmadDir);
// Convert artifacts to workflow objects for directory creation
const workflows = workflowArtifacts
.filter((artifact) => artifact.type === 'workflow-command')
.map((artifact) => ({
module: artifact.module,
name: path.basename(artifact.relativePath, '.md'),
path: artifact.sourcePath,
}));
// Create directories for each module // Create directories for each module
const modules = new Set(); const modules = new Set();
@ -113,19 +126,22 @@ class CursorSetup extends BaseIdeSetup {
toolCount++; toolCount++;
} }
// Process and copy workflows // Process and copy workflow commands (generated, not raw workflows)
let workflowCount = 0; let workflowCount = 0;
for (const workflow of workflows) { for (const artifact of workflowArtifacts) {
const content = await this.readAndProcess(workflow.path, { if (artifact.type === 'workflow-command') {
module: workflow.module, // Add MDC metadata header to workflow command
name: workflow.name, const content = this.wrapLauncherWithMDC(artifact.content, {
module: artifact.module,
name: path.basename(artifact.relativePath, '.md'),
}); });
const targetPath = path.join(bmadRulesDir, workflow.module, 'workflows', `${workflow.name}.mdc`); const targetPath = path.join(bmadRulesDir, artifact.module, 'workflows', `${path.basename(artifact.relativePath, '.md')}.mdc`);
await this.writeFile(targetPath, content); await this.writeFile(targetPath, content);
workflowCount++; workflowCount++;
} }
}
// Create BMAD index file (but NOT .cursorrules - user manages that) // Create BMAD index file (but NOT .cursorrules - user manages that)
await this.createBMADIndex(bmadRulesDir, agents, tasks, tools, workflows, modules); await this.createBMADIndex(bmadRulesDir, agents, tasks, tools, workflows, modules);

View File

@ -4,6 +4,7 @@ const yaml = require('js-yaml');
const { BaseIdeSetup } = require('./_base-ide'); const { BaseIdeSetup } = require('./_base-ide');
const chalk = require('chalk'); const chalk = require('chalk');
const { AgentCommandGenerator } = require('./shared/agent-command-generator'); const { AgentCommandGenerator } = require('./shared/agent-command-generator');
const { WorkflowCommandGenerator } = require('./shared/workflow-command-generator');
/** /**
* Gemini CLI setup handler * Gemini CLI setup handler
@ -68,9 +69,13 @@ class GeminiSetup extends BaseIdeSetup {
const agentGen = new AgentCommandGenerator(this.bmadFolderName); const agentGen = new AgentCommandGenerator(this.bmadFolderName);
const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []); const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
// Get tasks // Get tasks and workflows (ALL workflows now generate commands)
const tasks = await this.getTasks(bmadDir); const tasks = await this.getTasks(bmadDir);
// Get ALL workflows using the new workflow command generator
const workflowGenerator = new WorkflowCommandGenerator(this.bmadFolderName);
const { artifacts: workflowArtifacts, counts: workflowCounts } = await workflowGenerator.collectWorkflowArtifacts(bmadDir);
// Install agents as TOML files with bmad- prefix (flat structure) // Install agents as TOML files with bmad- prefix (flat structure)
let agentCount = 0; let agentCount = 0;
for (const artifact of agentArtifacts) { for (const artifact of agentArtifacts) {
@ -98,17 +103,37 @@ class GeminiSetup extends BaseIdeSetup {
console.log(chalk.green(` ✓ Added task: /bmad:tasks:${task.module}:${task.name}`)); console.log(chalk.green(` ✓ Added task: /bmad:tasks:${task.module}:${task.name}`));
} }
// Install workflows as TOML files with bmad- prefix (flat structure)
let workflowCount = 0;
for (const artifact of workflowArtifacts) {
if (artifact.type === 'workflow-command') {
// Create TOML wrapper around workflow command content
const tomlContent = await this.createWorkflowToml(artifact);
// Flat structure: bmad-workflow-{module}-{name}.toml
const workflowName = path.basename(artifact.relativePath, '.md');
const tomlPath = path.join(commandsDir, `bmad-workflow-${artifact.module}-${workflowName}.toml`);
await this.writeFile(tomlPath, tomlContent);
workflowCount++;
console.log(chalk.green(` ✓ Added workflow: /bmad:workflows:${artifact.module}:${workflowName}`));
}
}
console.log(chalk.green(`${this.name} configured:`)); console.log(chalk.green(`${this.name} configured:`));
console.log(chalk.dim(` - ${agentCount} agents configured`)); console.log(chalk.dim(` - ${agentCount} agents configured`));
console.log(chalk.dim(` - ${taskCount} tasks configured`)); console.log(chalk.dim(` - ${taskCount} tasks configured`));
console.log(chalk.dim(` - ${workflowCount} workflows configured`));
console.log(chalk.dim(` - Commands directory: ${path.relative(projectDir, commandsDir)}`)); console.log(chalk.dim(` - Commands directory: ${path.relative(projectDir, commandsDir)}`));
console.log(chalk.dim(` - Agent activation: /bmad:agents:{agent-name}`)); console.log(chalk.dim(` - Agent activation: /bmad:agents:{agent-name}`));
console.log(chalk.dim(` - Task activation: /bmad:tasks:{task-name}`)); console.log(chalk.dim(` - Task activation: /bmad:tasks:{task-name}`));
console.log(chalk.dim(` - Workflow activation: /bmad:workflows:{workflow-name}`));
return { return {
success: true, success: true,
agents: agentCount, agents: agentCount,
tasks: taskCount, tasks: taskCount,
workflows: workflowCount,
}; };
} }
@ -149,6 +174,7 @@ ${contentWithoutFrontmatter}
// Note: {user_name} and other {config_values} are left as-is for runtime substitution by Gemini // Note: {user_name} and other {config_values} are left as-is for runtime substitution by Gemini
const tomlContent = template const tomlContent = template
.replaceAll('{{title}}', title) .replaceAll('{{title}}', title)
.replaceAll('{{*bmad_folder*}}', '{bmad_folder}')
.replaceAll('{{bmad_folder}}', this.bmadFolderName) .replaceAll('{{bmad_folder}}', this.bmadFolderName)
.replaceAll('{{module}}', agent.module) .replaceAll('{{module}}', agent.module)
.replaceAll('{{name}}', agent.name); .replaceAll('{{name}}', agent.name);
@ -170,6 +196,7 @@ ${contentWithoutFrontmatter}
// Replace template variables // Replace template variables
const tomlContent = template const tomlContent = template
.replaceAll('{{taskName}}', taskName) .replaceAll('{{taskName}}', taskName)
.replaceAll('{{*bmad_folder*}}', '{bmad_folder}')
.replaceAll('{{bmad_folder}}', this.bmadFolderName) .replaceAll('{{bmad_folder}}', this.bmadFolderName)
.replaceAll('{{module}}', task.module) .replaceAll('{{module}}', task.module)
.replaceAll('{{filename}}', task.filename); .replaceAll('{{filename}}', task.filename);
@ -177,6 +204,27 @@ ${contentWithoutFrontmatter}
return tomlContent; return tomlContent;
} }
/**
* Create workflow TOML content from artifact
*/
async createWorkflowToml(artifact) {
// Extract description from artifact content
const descriptionMatch = artifact.content.match(/description:\s*"([^"]+)"/);
const description = descriptionMatch
? descriptionMatch[1]
: `BMAD ${artifact.module.toUpperCase()} Workflow: ${path.basename(artifact.relativePath, '.md')}`;
// Strip frontmatter from command content
const frontmatterRegex = /^---\s*\n[\s\S]*?\n---\s*\n/;
const contentWithoutFrontmatter = artifact.content.replace(frontmatterRegex, '').trim();
return `description = "${description}"
prompt = """
${contentWithoutFrontmatter}
"""
`;
}
/** /**
* Cleanup Gemini configuration - surgically remove only BMAD files * Cleanup Gemini configuration - surgically remove only BMAD files
*/ */

View File

@ -3,6 +3,7 @@ const fs = require('fs-extra');
const { BaseIdeSetup } = require('./_base-ide'); const { BaseIdeSetup } = require('./_base-ide');
const chalk = require('chalk'); const chalk = require('chalk');
const { AgentCommandGenerator } = require('./shared/agent-command-generator'); const { AgentCommandGenerator } = require('./shared/agent-command-generator');
const { WorkflowCommandGenerator } = require('./shared/workflow-command-generator');
/** /**
* iFlow CLI setup handler * iFlow CLI setup handler
@ -29,9 +30,11 @@ class IFlowSetup extends BaseIdeSetup {
const commandsDir = path.join(iflowDir, this.commandsDir, 'bmad'); const commandsDir = path.join(iflowDir, this.commandsDir, 'bmad');
const agentsDir = path.join(commandsDir, 'agents'); const agentsDir = path.join(commandsDir, 'agents');
const tasksDir = path.join(commandsDir, 'tasks'); const tasksDir = path.join(commandsDir, 'tasks');
const workflowsDir = path.join(commandsDir, 'workflows');
await this.ensureDir(agentsDir); await this.ensureDir(agentsDir);
await this.ensureDir(tasksDir); await this.ensureDir(tasksDir);
await this.ensureDir(workflowsDir);
// Generate agent launchers // Generate agent launchers
const agentGen = new AgentCommandGenerator(this.bmadFolderName); const agentGen = new AgentCommandGenerator(this.bmadFolderName);
@ -47,9 +50,13 @@ class IFlowSetup extends BaseIdeSetup {
agentCount++; agentCount++;
} }
// Get tasks // Get tasks and workflows (ALL workflows now generate commands)
const tasks = await this.getTasks(bmadDir); const tasks = await this.getTasks(bmadDir);
// Get ALL workflows using the new workflow command generator
const workflowGenerator = new WorkflowCommandGenerator(this.bmadFolderName);
const { artifacts: workflowArtifacts, counts: workflowCounts } = await workflowGenerator.collectWorkflowArtifacts(bmadDir);
// Setup tasks as commands // Setup tasks as commands
let taskCount = 0; let taskCount = 0;
for (const task of tasks) { for (const task of tasks) {
@ -61,15 +68,27 @@ class IFlowSetup extends BaseIdeSetup {
taskCount++; taskCount++;
} }
// Setup workflows as commands (already generated)
let workflowCount = 0;
for (const artifact of workflowArtifacts) {
if (artifact.type === 'workflow-command') {
const targetPath = path.join(workflowsDir, `${artifact.module}-${path.basename(artifact.relativePath, '.md')}.md`);
await this.writeFile(targetPath, artifact.content);
workflowCount++;
}
}
console.log(chalk.green(`${this.name} configured:`)); console.log(chalk.green(`${this.name} configured:`));
console.log(chalk.dim(` - ${agentCount} agent commands created`)); console.log(chalk.dim(` - ${agentCount} agent commands created`));
console.log(chalk.dim(` - ${taskCount} task commands created`)); console.log(chalk.dim(` - ${taskCount} task commands created`));
console.log(chalk.dim(` - ${workflowCount} workflow commands created`));
console.log(chalk.dim(` - Commands directory: ${path.relative(projectDir, commandsDir)}`)); console.log(chalk.dim(` - Commands directory: ${path.relative(projectDir, commandsDir)}`));
return { return {
success: true, success: true,
agents: agentCount, agents: agentCount,
tasks: taskCount, tasks: taskCount,
workflows: workflowCount,
}; };
} }

View File

@ -0,0 +1,327 @@
const path = require('node:path');
const { BaseIdeSetup } = require('./_base-ide');
const chalk = require('chalk');
const fs = require('fs-extra');
const yaml = require('js-yaml');
/**
* Kiro CLI setup handler for BMad Method
*/
class KiroCliSetup extends BaseIdeSetup {
constructor() {
super('kiro-cli', 'Kiro CLI', false);
this.configDir = '.kiro';
this.agentsDir = 'agents';
}
/**
* Cleanup old BMAD installation before reinstalling
* @param {string} projectDir - Project directory
*/
async cleanup(projectDir) {
const bmadAgentsDir = path.join(projectDir, this.configDir, this.agentsDir);
if (await fs.pathExists(bmadAgentsDir)) {
// Remove existing BMad agents
const files = await fs.readdir(bmadAgentsDir);
for (const file of files) {
if (file.startsWith('bmad-') || file.includes('bmad')) {
await fs.remove(path.join(bmadAgentsDir, file));
}
}
console.log(chalk.dim(` Cleaned old BMAD agents from ${this.name}`));
}
}
/**
* Setup Kiro CLI configuration with BMad agents
* @param {string} projectDir - Project directory
* @param {string} bmadDir - BMAD installation directory
* @param {Object} options - Setup options
*/
async setup(projectDir, bmadDir, options = {}) {
console.log(chalk.cyan(`Setting up ${this.name}...`));
await this.cleanup(projectDir);
const kiroDir = path.join(projectDir, this.configDir);
const agentsDir = path.join(kiroDir, this.agentsDir);
await this.ensureDir(agentsDir);
// Create BMad agents from source YAML files
await this.createBmadAgentsFromSource(agentsDir, projectDir);
console.log(chalk.green(`${this.name} configured with BMad agents`));
}
/**
* Create BMad agent definitions from source YAML files
* @param {string} agentsDir - Agents directory
* @param {string} projectDir - Project directory
*/
async createBmadAgentsFromSource(agentsDir, projectDir) {
const sourceDir = path.join(__dirname, '../../../../../src/modules');
// Find all agent YAML files
const agentFiles = await this.findAgentFiles(sourceDir);
for (const agentFile of agentFiles) {
try {
await this.processAgentFile(agentFile, agentsDir, projectDir);
} catch (error) {
console.warn(chalk.yellow(`⚠️ Failed to process ${agentFile}: ${error.message}`));
}
}
}
/**
* Find all agent YAML files in modules and core
* @param {string} sourceDir - Source modules directory
* @returns {Array} Array of agent file paths
*/
async findAgentFiles(sourceDir) {
const agentFiles = [];
// Check core agents
const coreAgentsDir = path.join(__dirname, '../../../../../src/core/agents');
if (await fs.pathExists(coreAgentsDir)) {
const files = await fs.readdir(coreAgentsDir);
for (const file of files) {
if (file.endsWith('.agent.yaml')) {
agentFiles.push(path.join(coreAgentsDir, file));
}
}
}
// Check module agents
if (!(await fs.pathExists(sourceDir))) {
return agentFiles;
}
const modules = await fs.readdir(sourceDir);
for (const module of modules) {
const moduleAgentsDir = path.join(sourceDir, module, 'agents');
if (await fs.pathExists(moduleAgentsDir)) {
const files = await fs.readdir(moduleAgentsDir);
for (const file of files) {
if (file.endsWith('.agent.yaml')) {
agentFiles.push(path.join(moduleAgentsDir, file));
}
}
}
}
return agentFiles;
}
/**
* Validate BMad Core compliance
* @param {Object} agentData - Agent YAML data
* @returns {boolean} True if compliant
*/
validateBmadCompliance(agentData) {
const requiredFields = ['agent.metadata.id', 'agent.persona.role', 'agent.persona.principles'];
for (const field of requiredFields) {
const keys = field.split('.');
let current = agentData;
for (const key of keys) {
if (!current || !current[key]) {
return false;
}
current = current[key];
}
}
return true;
}
/**
* Process individual agent YAML file
* @param {string} agentFile - Path to agent YAML file
* @param {string} agentsDir - Target agents directory
* @param {string} projectDir - Project directory
*/
async processAgentFile(agentFile, agentsDir, projectDir) {
const yamlContent = await fs.readFile(agentFile, 'utf8');
const agentData = yaml.load(yamlContent);
if (!this.validateBmadCompliance(agentData)) {
return;
}
// Extract module from file path
const normalizedPath = path.normalize(agentFile);
const pathParts = normalizedPath.split(path.sep);
const basename = path.basename(agentFile, '.agent.yaml');
// Find the module name from path
let moduleName = 'unknown';
if (pathParts.includes('src')) {
const srcIndex = pathParts.indexOf('src');
if (srcIndex + 3 < pathParts.length) {
const folderAfterSrc = pathParts[srcIndex + 1];
// Handle both src/core/agents and src/modules/[module]/agents patterns
if (folderAfterSrc === 'core') {
moduleName = 'core';
} else if (folderAfterSrc === 'modules') {
moduleName = pathParts[srcIndex + 2]; // The actual module name
}
}
}
// Extract the agent name from the ID path in YAML if available
let agentBaseName = basename;
if (agentData.agent && agentData.agent.metadata && agentData.agent.metadata.id) {
const idPath = agentData.agent.metadata.id;
agentBaseName = path.basename(idPath, '.md');
}
const agentName = `bmad-${moduleName}-${agentBaseName}`;
const sanitizedAgentName = this.sanitizeAgentName(agentName);
// Create JSON definition
await this.createAgentDefinitionFromYaml(agentsDir, sanitizedAgentName, agentData);
// Create prompt file
await this.createAgentPromptFromYaml(agentsDir, sanitizedAgentName, agentData, projectDir);
}
/**
* Sanitize agent name for file naming
* @param {string} name - Agent name
* @returns {string} Sanitized name
*/
sanitizeAgentName(name) {
return name
.toLowerCase()
.replaceAll(/\s+/g, '-')
.replaceAll(/[^a-z0-9-]/g, '');
}
/**
* Create agent JSON definition from YAML data
* @param {string} agentsDir - Agents directory
* @param {string} agentName - Agent name (role-based)
* @param {Object} agentData - Agent YAML data
*/
async createAgentDefinitionFromYaml(agentsDir, agentName, agentData) {
const personName = agentData.agent.metadata.name;
const role = agentData.agent.persona.role;
const agentConfig = {
name: agentName,
description: `${personName} - ${role}`,
prompt: `file://./${agentName}-prompt.md`,
tools: ['*'],
mcpServers: {},
useLegacyMcpJson: true,
resources: [],
};
const agentPath = path.join(agentsDir, `${agentName}.json`);
await fs.writeJson(agentPath, agentConfig, { spaces: 2 });
}
/**
* Create agent prompt from YAML data
* @param {string} agentsDir - Agents directory
* @param {string} agentName - Agent name (role-based)
* @param {Object} agentData - Agent YAML data
* @param {string} projectDir - Project directory
*/
async createAgentPromptFromYaml(agentsDir, agentName, agentData, projectDir) {
const promptPath = path.join(agentsDir, `${agentName}-prompt.md`);
// Generate prompt from YAML data
const prompt = this.generatePromptFromYaml(agentData);
await fs.writeFile(promptPath, prompt);
}
/**
* Generate prompt content from YAML data
* @param {Object} agentData - Agent YAML data
* @returns {string} Generated prompt
*/
generatePromptFromYaml(agentData) {
const agent = agentData.agent;
const name = agent.metadata.name;
const icon = agent.metadata.icon || '🤖';
const role = agent.persona.role;
const identity = agent.persona.identity;
const style = agent.persona.communication_style;
const principles = agent.persona.principles;
let prompt = `# ${name} ${icon}\n\n`;
prompt += `## Role\n${role}\n\n`;
if (identity) {
prompt += `## Identity\n${identity}\n\n`;
}
if (style) {
prompt += `## Communication Style\n${style}\n\n`;
}
if (principles) {
prompt += `## Principles\n`;
if (typeof principles === 'string') {
// Handle multi-line string principles
prompt += principles + '\n\n';
} else if (Array.isArray(principles)) {
// Handle array principles
for (const principle of principles) {
prompt += `- ${principle}\n`;
}
prompt += '\n';
}
}
// Add menu items if available
if (agent.menu && agent.menu.length > 0) {
prompt += `## Available Workflows\n`;
for (let i = 0; i < agent.menu.length; i++) {
const item = agent.menu[i];
prompt += `${i + 1}. **${item.trigger}**: ${item.description}\n`;
}
prompt += '\n';
}
prompt += `## Instructions\nYou are ${name}, part of the BMad Method. Follow your role and principles while assisting users with their development needs.\n`;
return prompt;
}
/**
* Check if Kiro CLI is available
* @returns {Promise<boolean>} True if available
*/
async isAvailable() {
try {
const { execSync } = require('node:child_process');
execSync('kiro-cli --version', { stdio: 'ignore' });
return true;
} catch {
return false;
}
}
/**
* Get installation instructions
* @returns {string} Installation instructions
*/
getInstallInstructions() {
return `Install Kiro CLI:
curl -fsSL https://github.com/aws/kiro-cli/releases/latest/download/install.sh | bash
Or visit: https://github.com/aws/kiro-cli`;
}
}
module.exports = { KiroCliSetup };

View File

@ -47,7 +47,7 @@ class OpenCodeSetup extends BaseIdeSetup {
agentCount++; agentCount++;
} }
// Install workflow commands with flat naming: bmad-workflow-{module}-{name}.md // Install workflow commands with flat naming: bmad-{module}-{workflow-name}
const workflowGenerator = new WorkflowCommandGenerator(this.bmadFolderName); const workflowGenerator = new WorkflowCommandGenerator(this.bmadFolderName);
const { artifacts: workflowArtifacts, counts: workflowCounts } = await workflowGenerator.collectWorkflowArtifacts(bmadDir); const { artifacts: workflowArtifacts, counts: workflowCounts } = await workflowGenerator.collectWorkflowArtifacts(bmadDir);
@ -55,10 +55,10 @@ class OpenCodeSetup extends BaseIdeSetup {
for (const artifact of workflowArtifacts) { for (const artifact of workflowArtifacts) {
if (artifact.type === 'workflow-command') { if (artifact.type === 'workflow-command') {
const commandContent = artifact.content; const commandContent = artifact.content;
// Flat structure: bmad-workflow-{module}-{name}.md // Flat structure: bmad-{module}-{workflow-name}.md
// artifact.relativePath is like: bmm/workflows/plan-project.md // artifact.relativePath is like: bmm/workflows/plan-project.md
const workflowName = path.basename(artifact.relativePath, '.md'); const workflowName = path.basename(artifact.relativePath, '.md');
const targetPath = path.join(commandsBaseDir, `bmad-workflow-${artifact.module}-${workflowName}.md`); const targetPath = path.join(commandsBaseDir, `bmad-${artifact.module}-${workflowName}.md`);
await this.writeFile(targetPath, commandContent); await this.writeFile(targetPath, commandContent);
workflowCommandCount++; workflowCommandCount++;
} }

View File

@ -5,34 +5,13 @@ const { AgentCommandGenerator } = require('./shared/agent-command-generator');
/** /**
* Roo IDE setup handler * Roo IDE setup handler
* Creates custom modes in .roomodes file * Creates custom commands in .roo/commands directory
*/ */
class RooSetup extends BaseIdeSetup { class RooSetup extends BaseIdeSetup {
constructor() { constructor() {
super('roo', 'Roo Code'); super('roo', 'Roo Code');
this.configFile = '.roomodes'; this.configDir = '.roo';
this.defaultPermissions = { this.commandsDir = 'commands';
dev: {
description: 'Development files',
fileRegex: String.raw`.*\.(js|jsx|ts|tsx|py|java|cpp|c|h|cs|go|rs|php|rb|swift)$`,
},
config: {
description: 'Configuration files',
fileRegex: String.raw`.*\.(json|yaml|yml|toml|xml|ini|env|config)$`,
},
docs: {
description: 'Documentation files',
fileRegex: String.raw`.*\.(md|mdx|rst|txt|doc|docx)$`,
},
styles: {
description: 'Style and design files',
fileRegex: String.raw`.*\.(css|scss|sass|less|stylus)$`,
},
all: {
description: 'All files',
fileRegex: '.*',
},
};
} }
/** /**
@ -44,94 +23,96 @@ class RooSetup extends BaseIdeSetup {
async setup(projectDir, bmadDir, options = {}) { async setup(projectDir, bmadDir, options = {}) {
console.log(chalk.cyan(`Setting up ${this.name}...`)); console.log(chalk.cyan(`Setting up ${this.name}...`));
// Check for existing .roomodes file // Create .roo/commands directory
const roomodesPath = path.join(projectDir, this.configFile); const rooCommandsDir = path.join(projectDir, this.configDir, this.commandsDir);
let existingModes = []; await this.ensureDir(rooCommandsDir);
let existingContent = '';
if (await this.pathExists(roomodesPath)) { // Generate agent launchers
existingContent = await this.readFile(roomodesPath);
// Parse existing modes to avoid duplicates
const modeMatches = existingContent.matchAll(/- slug: ([\w-]+)/g);
for (const match of modeMatches) {
existingModes.push(match[1]);
}
console.log(chalk.yellow(`Found existing .roomodes file with ${existingModes.length} modes`));
}
// Generate agent launchers (though Roo will reference the actual .bmad agents)
const agentGen = new AgentCommandGenerator(this.bmadFolderName); const agentGen = new AgentCommandGenerator(this.bmadFolderName);
const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []); const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
// Always use 'all' permissions - users can customize in .roomodes file
const permissionChoice = 'all';
// Create modes content
let newModesContent = '';
let addedCount = 0; let addedCount = 0;
let skippedCount = 0; let skippedCount = 0;
for (const artifact of agentArtifacts) { for (const artifact of agentArtifacts) {
const slug = `bmad-${artifact.module}-${artifact.name}`; const commandName = `bmad-${artifact.module}-agent-${artifact.name}`;
const commandPath = path.join(rooCommandsDir, `${commandName}.md`);
// Skip if already exists // Skip if already exists
if (existingModes.includes(slug)) { if (await this.pathExists(commandPath)) {
console.log(chalk.dim(` Skipping ${slug} - already exists`)); console.log(chalk.dim(` Skipping ${commandName} - already exists`));
skippedCount++; skippedCount++;
continue; continue;
} }
// Read the actual agent file from .bmad for metadata extraction // Read the actual agent file from .bmad for metadata extraction (installed agents are .md files)
const agentPath = path.join(bmadDir, artifact.module, 'agents', `${artifact.name}.md`); const agentPath = path.join(bmadDir, artifact.module, 'agents', `${artifact.name}.md`);
const content = await this.readFile(agentPath); const content = await this.readFile(agentPath);
// Create mode entry that references the actual .bmad agent // Create command file that references the actual .bmad agent
const modeEntry = await this.createModeEntry( await this.createCommandFile({ module: artifact.module, name: artifact.name, path: agentPath }, content, commandPath, projectDir);
{ module: artifact.module, name: artifact.name, path: agentPath },
content,
permissionChoice,
projectDir,
);
newModesContent += modeEntry;
addedCount++; addedCount++;
console.log(chalk.green(` ✓ Added mode: ${slug}`)); console.log(chalk.green(` ✓ Added command: ${commandName}`));
} }
// Build final content
let finalContent = '';
if (existingContent) {
// Append to existing content
finalContent = existingContent.trim() + '\n' + newModesContent;
} else {
// Create new .roomodes file
finalContent = 'customModes:\n' + newModesContent;
}
// Write .roomodes file
await this.writeFile(roomodesPath, finalContent);
console.log(chalk.green(`${this.name} configured:`)); console.log(chalk.green(`${this.name} configured:`));
console.log(chalk.dim(` - ${addedCount} modes added`)); console.log(chalk.dim(` - ${addedCount} commands added`));
if (skippedCount > 0) { if (skippedCount > 0) {
console.log(chalk.dim(` - ${skippedCount} modes skipped (already exist)`)); console.log(chalk.dim(` - ${skippedCount} commands skipped (already exist)`));
} }
console.log(chalk.dim(` - Configuration file: ${this.configFile}`)); console.log(chalk.dim(` - Commands directory: ${this.configDir}/${this.commandsDir}/bmad/`));
console.log(chalk.dim(` - Permission level: all (unrestricted)`)); console.log(chalk.dim(` Commands will be available when you open this project in Roo Code`));
console.log(chalk.yellow(`\n 💡 Tip: Edit ${this.configFile} to customize file permissions per agent`));
console.log(chalk.dim(` Modes will be available when you open this project in Roo Code`));
return { return {
success: true, success: true,
modes: addedCount, commands: addedCount,
skipped: skippedCount, skipped: skippedCount,
}; };
} }
/** /**
* Create a mode entry for an agent * Create a unified command file for agents
* @param {string} commandPath - Path where to write the command file
* @param {Object} options - Command options
* @param {string} options.name - Display name for the command
* @param {string} options.description - Description for the command
* @param {string} options.agentPath - Path to the agent file (relative to project root)
* @param {string} [options.icon] - Icon emoji (defaults to 🤖)
* @param {string} [options.extraContent] - Additional content to include before activation
*/ */
async createModeEntry(agent, content, permissionChoice, projectDir) { async createAgentCommandFile(commandPath, options) {
const { name, description, agentPath, icon = '🤖', extraContent = '' } = options;
// Build command content with YAML frontmatter
let commandContent = `---\n`;
commandContent += `name: '${icon} ${name}'\n`;
commandContent += `description: '${description}'\n`;
commandContent += `---\n\n`;
commandContent += `You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.\n\n`;
// Add any extra content (e.g., warnings for custom agents)
if (extraContent) {
commandContent += `${extraContent}\n\n`;
}
commandContent += `<agent-activation CRITICAL="TRUE">\n`;
commandContent += `1. LOAD the FULL agent file from @${agentPath}\n`;
commandContent += `2. READ its entire contents - this contains the complete agent persona, menu, and instructions\n`;
commandContent += `3. Execute ALL activation steps exactly as written in the agent file\n`;
commandContent += `4. Follow the agent's persona and menu system precisely\n`;
commandContent += `5. Stay in character throughout the session\n`;
commandContent += `</agent-activation>\n`;
// Write command file
await this.writeFile(commandPath, commandContent);
}
/**
* Create a command file for an agent
*/
async createCommandFile(agent, content, commandPath, projectDir) {
// Extract metadata from agent content // Extract metadata from agent content
const titleMatch = content.match(/title="([^"]+)"/); const titleMatch = content.match(/title="([^"]+)"/);
const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name); const title = titleMatch ? titleMatch[1] : this.formatTitle(agent.name);
@ -142,66 +123,16 @@ class RooSetup extends BaseIdeSetup {
const whenToUseMatch = content.match(/whenToUse="([^"]+)"/); const whenToUseMatch = content.match(/whenToUse="([^"]+)"/);
const whenToUse = whenToUseMatch ? whenToUseMatch[1] : `Use for ${title} tasks`; const whenToUse = whenToUseMatch ? whenToUseMatch[1] : `Use for ${title} tasks`;
// Get the activation header from central template
const activationHeader = await this.getAgentCommandHeader();
const roleDefinitionMatch = content.match(/roleDefinition="([^"]+)"/);
const roleDefinition = roleDefinitionMatch
? roleDefinitionMatch[1]
: `You are a ${title} specializing in ${title.toLowerCase()} tasks and responsibilities.`;
// Get relative path // Get relative path
const relativePath = path.relative(projectDir, agent.path).replaceAll('\\', '/'); const relativePath = path.relative(projectDir, agent.path).replaceAll('\\', '/');
// Determine permissions // Use unified method
const permissions = this.getPermissionsForAgent(agent, permissionChoice); await this.createAgentCommandFile(commandPath, {
name: title,
// Build mode entry description: whenToUse,
const slug = `bmad-${agent.module}-${agent.name}`; agentPath: relativePath,
let modeEntry = ` - slug: ${slug}\n`; icon: icon,
modeEntry += ` name: '${icon} ${title}'\n`; });
if (permissions && permissions.description) {
modeEntry += ` description: '${permissions.description}'\n`;
}
modeEntry += ` roleDefinition: ${roleDefinition}\n`;
modeEntry += ` whenToUse: ${whenToUse}\n`;
modeEntry += ` customInstructions: ${activationHeader} Read the full YAML from ${relativePath} start activation to alter your state of being follow startup section instructions stay in this being until told to exit this mode\n`;
modeEntry += ` groups:\n`;
modeEntry += ` - read\n`;
if (permissions && permissions.fileRegex) {
modeEntry += ` - - edit\n`;
modeEntry += ` - fileRegex: ${permissions.fileRegex}\n`;
modeEntry += ` description: ${permissions.description}\n`;
} else {
modeEntry += ` - edit\n`;
}
return modeEntry;
}
/**
* Get permissions configuration for an agent
*/
getPermissionsForAgent(agent, permissionChoice) {
if (permissionChoice === 'custom') {
// Custom logic based on agent name/module
if (agent.name.includes('dev') || agent.name.includes('code')) {
return this.defaultPermissions.dev;
} else if (agent.name.includes('doc') || agent.name.includes('write')) {
return this.defaultPermissions.docs;
} else if (agent.name.includes('config') || agent.name.includes('setup')) {
return this.defaultPermissions.config;
} else if (agent.name.includes('style') || agent.name.includes('css')) {
return this.defaultPermissions.styles;
}
// Default to all for custom agents
return this.defaultPermissions.all;
}
return this.defaultPermissions[permissionChoice] || null;
} }
/** /**
@ -219,8 +150,26 @@ class RooSetup extends BaseIdeSetup {
*/ */
async cleanup(projectDir) { async cleanup(projectDir) {
const fs = require('fs-extra'); const fs = require('fs-extra');
const roomodesPath = path.join(projectDir, this.configFile); const rooCommandsDir = path.join(projectDir, this.configDir, this.commandsDir);
if (await fs.pathExists(rooCommandsDir)) {
const files = await fs.readdir(rooCommandsDir);
let removedCount = 0;
for (const file of files) {
if (file.startsWith('bmad-') && file.endsWith('.md')) {
await fs.remove(path.join(rooCommandsDir, file));
removedCount++;
}
}
if (removedCount > 0) {
console.log(chalk.dim(`Removed ${removedCount} BMAD commands from .roo/commands/`));
}
}
// Also clean up old .roomodes file if it exists
const roomodesPath = path.join(projectDir, '.roomodes');
if (await fs.pathExists(roomodesPath)) { if (await fs.pathExists(roomodesPath)) {
const content = await fs.readFile(roomodesPath, 'utf8'); const content = await fs.readFile(roomodesPath, 'utf8');
@ -245,7 +194,9 @@ class RooSetup extends BaseIdeSetup {
// Write back filtered content // Write back filtered content
await fs.writeFile(roomodesPath, filteredLines.join('\n')); await fs.writeFile(roomodesPath, filteredLines.join('\n'));
console.log(chalk.dim(`Removed ${removedCount} BMAD modes from .roomodes`)); if (removedCount > 0) {
console.log(chalk.dim(`Removed ${removedCount} BMAD modes from legacy .roomodes file`));
}
} }
} }
@ -254,68 +205,53 @@ class RooSetup extends BaseIdeSetup {
* @param {string} projectDir - Project directory * @param {string} projectDir - Project directory
* @param {string} agentName - Agent name (e.g., "fred-commit-poet") * @param {string} agentName - Agent name (e.g., "fred-commit-poet")
* @param {string} agentPath - Path to compiled agent (relative to project root) * @param {string} agentPath - Path to compiled agent (relative to project root)
* @param {Object} metadata - Agent metadata * @param {Object} metadata - Agent metadata (unused, kept for compatibility)
* @returns {Object} Installation result * @returns {Object} Installation result
*/ */
async installCustomAgentLauncher(projectDir, agentName, agentPath, metadata) { async installCustomAgentLauncher(projectDir, agentName, agentPath, metadata) {
const roomodesPath = path.join(projectDir, this.configFile); const rooCommandsDir = path.join(projectDir, this.configDir, this.commandsDir);
let existingContent = ''; await this.ensureDir(rooCommandsDir);
// Read existing .roomodes file const commandName = `bmad-custom-agent-${agentName.toLowerCase()}`;
if (await this.pathExists(roomodesPath)) { const commandPath = path.join(rooCommandsDir, `${commandName}.md`);
existingContent = await this.readFile(roomodesPath);
}
// Create custom agent mode entry // Check if command already exists
const slug = `bmad-custom-${agentName.toLowerCase()}`; if (await this.pathExists(commandPath)) {
const modeEntry = ` - slug: ${slug}
name: 'BMAD Custom: ${agentName}'
description: |
Custom BMAD agent: ${agentName}
** IMPORTANT**: Run @${agentPath} first to load the complete agent!
This is a launcher for the custom BMAD agent "${agentName}". The agent will follow the persona and instructions from the main agent file.
prompt: |
@${agentPath}
always: false
permissions: all
`;
// Check if mode already exists
if (existingContent.includes(slug)) {
return { return {
ide: 'roo', ide: 'roo',
path: this.configFile, path: path.join(this.configDir, this.commandsDir, `${commandName}.md`),
command: agentName, command: commandName,
type: 'custom-agent-launcher', type: 'custom-agent-launcher',
alreadyExists: true, alreadyExists: true,
}; };
} }
// Build final content // Read the custom agent file to extract metadata (same as regular agents)
let finalContent = ''; const fullAgentPath = path.join(projectDir, agentPath);
if (existingContent) { const content = await this.readFile(fullAgentPath);
// Find customModes section or add it
if (existingContent.includes('customModes:')) {
// Append to existing customModes
finalContent = existingContent + modeEntry;
} else {
// Add customModes section
finalContent = existingContent.trim() + '\n\ncustomModes:\n' + modeEntry;
}
} else {
// Create new .roomodes file with customModes
finalContent = 'customModes:\n' + modeEntry;
}
// Write .roomodes file // Extract metadata from agent content
await this.writeFile(roomodesPath, finalContent); const titleMatch = content.match(/title="([^"]+)"/);
const title = titleMatch ? titleMatch[1] : this.formatTitle(agentName);
const iconMatch = content.match(/icon="([^"]+)"/);
const icon = iconMatch ? iconMatch[1] : '🤖';
const whenToUseMatch = content.match(/whenToUse="([^"]+)"/);
const whenToUse = whenToUseMatch ? whenToUseMatch[1] : `Use for ${title} tasks`;
// Use unified method without extra content (clean)
await this.createAgentCommandFile(commandPath, {
name: title,
description: whenToUse,
agentPath: agentPath,
icon: icon,
});
return { return {
ide: 'roo', ide: 'roo',
path: this.configFile, path: path.join(this.configDir, this.commandsDir, `${commandName}.md`),
command: slug, command: commandName,
type: 'custom-agent-launcher', type: 'custom-agent-launcher',
}; };
} }

View File

@ -60,7 +60,8 @@ class AgentCommandGenerator {
.replaceAll('{{name}}', agent.name) .replaceAll('{{name}}', agent.name)
.replaceAll('{{module}}', agent.module) .replaceAll('{{module}}', agent.module)
.replaceAll('{{description}}', agent.description || `${agent.name} agent`) .replaceAll('{{description}}', agent.description || `${agent.name} agent`)
.replaceAll('{bmad_folder}', this.bmadFolderName); .replaceAll('{bmad_folder}', this.bmadFolderName)
.replaceAll('{*bmad_folder*}', '{bmad_folder}');
} }
/** /**

View File

@ -90,6 +90,11 @@ async function getAgentsFromDir(dirPath, moduleName) {
continue; continue;
} }
// Skip README files and other non-agent files
if (file.toLowerCase() === 'readme.md' || file.toLowerCase().startsWith('readme-')) {
continue;
}
if (file.includes('.customize.')) { if (file.includes('.customize.')) {
continue; continue;
} }
@ -101,6 +106,11 @@ async function getAgentsFromDir(dirPath, moduleName) {
continue; continue;
} }
// Only include files that have agent-specific content (compiled agents have <agent> tag)
if (!content.includes('<agent')) {
continue;
}
agents.push({ agents.push({
path: filePath, path: filePath,
name: file.replace('.md', ''), name: file.replace('.md', ''),

View File

@ -25,16 +25,16 @@ class WorkflowCommandGenerator {
return { generated: 0 }; return { generated: 0 };
} }
// Filter to only standalone workflows // ALL workflows now generate commands - no standalone filtering
const standaloneWorkflows = workflows.filter((w) => w.standalone === 'true' || w.standalone === true); const allWorkflows = workflows;
// Base commands directory // Base commands directory
const baseCommandsDir = path.join(projectDir, '.claude', 'commands', 'bmad'); const baseCommandsDir = path.join(projectDir, '.claude', 'commands', 'bmad');
let generatedCount = 0; let generatedCount = 0;
// Generate a command file for each standalone workflow, organized by module // Generate a command file for each workflow, organized by module
for (const workflow of standaloneWorkflows) { for (const workflow of allWorkflows) {
const moduleWorkflowsDir = path.join(baseCommandsDir, workflow.module, 'workflows'); const moduleWorkflowsDir = path.join(baseCommandsDir, workflow.module, 'workflows');
await fs.ensureDir(moduleWorkflowsDir); await fs.ensureDir(moduleWorkflowsDir);
@ -46,7 +46,7 @@ class WorkflowCommandGenerator {
} }
// Also create a workflow launcher README in each module // Also create a workflow launcher README in each module
const groupedWorkflows = this.groupWorkflowsByModule(standaloneWorkflows); const groupedWorkflows = this.groupWorkflowsByModule(allWorkflows);
await this.createModuleWorkflowLaunchers(baseCommandsDir, groupedWorkflows); await this.createModuleWorkflowLaunchers(baseCommandsDir, groupedWorkflows);
return { generated: generatedCount }; return { generated: generatedCount };
@ -59,12 +59,12 @@ class WorkflowCommandGenerator {
return { artifacts: [], counts: { commands: 0, launchers: 0 } }; return { artifacts: [], counts: { commands: 0, launchers: 0 } };
} }
// Filter to only standalone workflows // ALL workflows now generate commands - no standalone filtering
const standaloneWorkflows = workflows.filter((w) => w.standalone === 'true' || w.standalone === true); const allWorkflows = workflows;
const artifacts = []; const artifacts = [];
for (const workflow of standaloneWorkflows) { for (const workflow of allWorkflows) {
const commandContent = await this.generateCommandContent(workflow, bmadDir); const commandContent = await this.generateCommandContent(workflow, bmadDir);
artifacts.push({ artifacts.push({
type: 'workflow-command', type: 'workflow-command',
@ -75,7 +75,7 @@ class WorkflowCommandGenerator {
}); });
} }
const groupedWorkflows = this.groupWorkflowsByModule(standaloneWorkflows); const groupedWorkflows = this.groupWorkflowsByModule(allWorkflows);
for (const [module, launcherContent] of Object.entries(this.buildModuleWorkflowLaunchers(groupedWorkflows))) { for (const [module, launcherContent] of Object.entries(this.buildModuleWorkflowLaunchers(groupedWorkflows))) {
artifacts.push({ artifacts.push({
type: 'workflow-launcher', type: 'workflow-launcher',
@ -89,7 +89,7 @@ class WorkflowCommandGenerator {
return { return {
artifacts, artifacts,
counts: { counts: {
commands: standaloneWorkflows.length, commands: allWorkflows.length,
launchers: Object.keys(groupedWorkflows).length, launchers: Object.keys(groupedWorkflows).length,
}, },
}; };
@ -99,8 +99,13 @@ class WorkflowCommandGenerator {
* Generate command content for a workflow * Generate command content for a workflow
*/ */
async generateCommandContent(workflow, bmadDir) { async generateCommandContent(workflow, bmadDir) {
// Load the template // Determine template based on workflow file type
const template = await fs.readFile(this.templatePath, 'utf8'); const isMarkdownWorkflow = workflow.path.endsWith('workflow.md');
const templateName = isMarkdownWorkflow ? 'workflow-commander.md' : 'workflow-command-template.md';
const templatePath = path.join(path.dirname(this.templatePath), templateName);
// Load the appropriate template
const template = await fs.readFile(templatePath, 'utf8');
// Convert source path to installed path // Convert source path to installed path
// From: /Users/.../src/modules/bmm/workflows/.../workflow.yaml // From: /Users/.../src/modules/bmm/workflows/.../workflow.yaml
@ -127,8 +132,7 @@ class WorkflowCommandGenerator {
.replaceAll('{{description}}', workflow.description) .replaceAll('{{description}}', workflow.description)
.replaceAll('{{workflow_path}}', workflowPath) .replaceAll('{{workflow_path}}', workflowPath)
.replaceAll('{bmad_folder}', this.bmadFolderName) .replaceAll('{bmad_folder}', this.bmadFolderName)
.replaceAll('{{interactive}}', workflow.interactive) .replaceAll('{*bmad_folder*}', '{bmad_folder}');
.replaceAll('{{author}}', workflow.author || 'BMAD');
} }
/** /**

View File

@ -0,0 +1,5 @@
---
description: '{{description}}'
---
IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL @{{workflow_path}}, READ its entire contents and follow its directions exactly!

View File

@ -53,6 +53,11 @@ class ModuleManager {
// Read the file content // Read the file content
let content = await fs.readFile(sourcePath, 'utf8'); let content = await fs.readFile(sourcePath, 'utf8');
// Replace escape sequence {*bmad_folder*} with literal {bmad_folder}
if (content.includes('{*bmad_folder*}')) {
content = content.replaceAll('{*bmad_folder*}', '{bmad_folder}');
}
// Replace {bmad_folder} placeholder with actual folder name // Replace {bmad_folder} placeholder with actual folder name
if (content.includes('{bmad_folder}')) { if (content.includes('{bmad_folder}')) {
content = content.replaceAll('{bmad_folder}', this.bmadFolderName); content = content.replaceAll('{bmad_folder}', this.bmadFolderName);
@ -396,8 +401,9 @@ class ModuleManager {
// Read the source YAML file // Read the source YAML file
let yamlContent = await fs.readFile(sourceFile, 'utf8'); let yamlContent = await fs.readFile(sourceFile, 'utf8');
// IMPORTANT: Replace {bmad_folder} BEFORE parsing YAML // IMPORTANT: Replace escape sequence and placeholder BEFORE parsing YAML
// Otherwise parsing will fail on the placeholder // Otherwise parsing will fail on the placeholder
yamlContent = yamlContent.replaceAll('{*bmad_folder*}', '{bmad_folder}');
yamlContent = yamlContent.replaceAll('{bmad_folder}', this.bmadFolderName); yamlContent = yamlContent.replaceAll('{bmad_folder}', this.bmadFolderName);
try { try {