- Skip module selection prompt during update/reinstall
- Keep all existing installed modules by default
- This prevents inquirer from showing modules as 'obsolete items' with confusing delete options
- Modules are now preserved during update/reinstall operations
- Fix getAgentsFromDir in bmad-artifacts.js to recursively scan subdirectories
- This ensures agents like cbt-coach and wellness-companion that are in subdirectories are properly found
- Agents now correctly get slash commands in .claude/commands/bmad/mwm/agents/
- All agents from the manifest now have corresponding IDE commands
- Updated getAgentsFromDir to search subdirectories for .md files
- Fixed installPath construction to include nested directory structure
- This ensures agents in subdirectories (like cbt-coach/cbt-coach.md) get added to agent-manifest.csv
- All agents now get proper CLI slash commands regardless of nesting depth
- Previously only scanned selectedModules, missing modules installed from custom locations
- Now scans the bmad directory to find all actually installed modules
- Any module with agents/workflows/tasks/tools will be included in manifests
- This fixes issue where MWM workflows weren't getting slash commands
- All modules now get equal treatment in IDE integration
- Added logic to create customize template files during agent compilation
- ModuleManager was only using existing customize files, not creating them
- Now customize.yaml files will be created for all module agents
- This fixes issue where agents in subdirectories had no customization support
Next: Need to fix agent-manifest.csv to find agents in subdirectories
- Module agents now discovered recursively at any depth in agents folder
- .agent.yaml files are compiled to .md format during module installation
- Custom agents also support subdirectory structure
- Agents maintain their directory structure when installed
- YAML files are skipped during file copying as they're compiled separately
- Added compileModuleAgents method to handle YAML-to-MD compilation
- Updated discoverAgents to recursively search for .agent.yaml files
- Agents in subdirectories are properly placed in _cfg/agents with relative paths
This fixes issue where agents like cbt-coach were not being compiled
and were only copied as YAML files.
- Module discovery now scans entire project recursively for install-config.yaml
- Removed hardcoded module locations (bmad-custom-src, etc.)
- Modules can exist anywhere with _module-installer/install-config.yaml
- All modules treated equally regardless of location
- No special UI handling for 'custom' modules
- Core module excluded from selection list (always installed first)
- Only install-config.yaml is valid (removed support for legacy config.yaml)
Modules are now discovered by structure, not location.
- Add markdownlint-cli2 as dev dependency
- Add lint:md script to package.json
- Add markdownlint job to CI workflow
- Configure 5 rules: heading-increment, no-duplicate-heading,
no-trailing-punctuation, no-bare-urls, no-space-in-emphasis
- Fix existing violations across 19 markdown files
- No auto-fix to prevent destructive changes
Closes#1034🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
The agent build caching never worked - BUILD-META comments were
never written to output files, so every build acted like --force.
Since building all 29 agents takes ~300ms, caching provided no
meaningful benefit. Removed ~190 lines of dead code including
checkIfNeedsRebuild, checkBuildStatus, buildMetadataComment,
and the --force flag.
Co-authored-by: Brian <bmadcode@gmail.com>
* update 2024 to 2025
* fix(workflows): remove hardcoded years from WebSearch queries
Years in search queries (2024/2025) do not improve results - search
engines already prioritize current documentation. Tested all patterns
and confirmed identical quality results with/without years.
Removes years from:
- step-03-starter.md (5 queries)
- step-04-decisions.md (2 queries)
- game-architecture/instructions.md (2 queries)
Leaves file-utils.md unchanged (test fixture data, not a search query).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix(workflows): remove year placeholders from research WebSearch queries
Search engines return current results regardless of year - removes
{{current_year}} and hardcoded 2025 from step-05-technical-trends.md
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* refactor(workflows): replace {{current_year}} with semantic alternatives
Replaces year placeholder with context-appropriate wording:
- 'current data' for up-to-date information
- 'web searches' without year qualifier
- Updated failure mode to focus on using web searches
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix(workflows): clarify failure mode about stale training data
Rephrased to explicitly mention training data cutoff as the reason
to use web searches for current technology trends.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* refactor(workflows): make web search references platform-agnostic
- Remove hardcoded year references from WebSearch queries
- Replace `WebSearch` tool name with natural language "search the web"
- Soften "training data is stale" to "verify and supplement your knowledge"
- Add web search prerequisite check to research workflow
- Add platform-agnostic design note to CLAUDE.md
This framework targets 15+ agentic platforms, not just Claude Code.
Tool-specific syntax like `WebSearch:` won't work across all platforms.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor(research): clean up prompts and routing
---------
Co-authored-by: Pomazan Bohdan <pomazan.bogdan@gmail.com>
Co-authored-by: Brian <bmadcode@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
The manifest writer hardcoded 'bmad' as the path prefix regardless of
the actual folder name (.bmad, bmad, etc). The reader had a matching
hardcoded strip, so it worked by accident.
Now paths are stored relative to bmadDir without any prefix. Legacy
fallback strips 'bmad/' on read - safe because no real path inside
bmadDir would start with 'bmad/'.
Co-authored-by: Brian <bmadcode@gmail.com>
- Remove validate-prd workflow references from all workflow path YAML files
- Update Excalidraw diagram: remove Validate PRD box and zombie JSON elements
- Re-export SVG at 1x scale
- Standardize implementation-readiness descriptions across all docs
- Add validation script (validate-svg-changes.sh) and README for SVG export process
- Correct Excalidraw timestamps
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
- Fix checklist to only accept 'review' status (not 'ready-for-review')
- Include MEDIUM issues in done/in-progress status determination
- Initialize and track fixed_count/action_count variables for summary
- Add sprint-status.yaml sync when story status changes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude <noreply@anthropic.com>
Replace 'looks good' with `looks good` to avoid nested single quote
issues when IDEs generate command files from workflow YAML.
Co-authored-by: Brian <bmadcode@gmail.com>
## Summary
- Track all files with TTS injection applied during installation
- Display informative summary explaining what TTS injection does
- Show backup location and restore command for recovery
## What is TTS Injection?
TTS (Text-to-Speech) injection adds voice instructions to BMAD agents,
enabling them to speak their responses aloud using AgentVibes.
Example: When you activate the PM agent, it will greet you with
spoken audio like "Hey! I'm your Project Manager. How can I help?"
## Changes
- **installer.js**: Track files in `processAgentFiles()`, `buildStandaloneAgents()`,
and `rebuildAgentFiles()` when TTS markers are processed
- **compiler.js**: Add TTS injection support for custom agent compilation
- **ui.js**: Enhanced installation summary showing:
- Explanation of what TTS injection is with example
- List of all files with TTS injection applied (grouped by type)
- Backup location (~/.bmad-tts-backups/)
- Restore command for recovery
## Example Output
```
═══════════════════════════════════════════════════
AgentVibes TTS Injection Summary
═══════════════════════════════════════════════════
What is TTS Injection?
TTS (Text-to-Speech) injection adds voice instructions to BMAD agents,
enabling them to speak their responses aloud using AgentVibes.
Example: When you activate the PM agent, it will greet you with
spoken audio like "Hey! I'm your Project Manager. How can I help?"
✅ TTS injection applied to 11 file(s):
Party Mode (multi-agent conversations):
• .bmad/core/workflows/party-mode/instructions.md
Agent TTS (individual agent voices):
• .bmad/bmm/agents/analyst.md
• .bmad/bmm/agents/architect.md
...
Backups & Recovery:
Pre-injection backups are stored in:
~/.bmad-tts-backups/
To restore original files (removes TTS instructions):
bmad-tts-injector.sh --restore /path/to/.bmad
```
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Paul Preibisch <paul@paulpreibisch.com>
Co-authored-by: Claude <noreply@anthropic.com>
- 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>
- 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>
* 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>
* 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>
## Major Features Added
- **Step-file workflow architecture**: Transform monolithic workflows into granular step files for improved LLM adherence and consistency
- **Multi-menu handler system**: New `handler-multi.xml` enables grouped menu items with fuzzy matching
- **Workflow compliance checker**: Added automated compliance validation for all workflows
- **Create/edit agent workflows**: New structured workflows for agent creation and editing
## Workflow Enhancements
- **Create-workflow**: Expanded from 6 to 14 detailed steps covering tools, design, compliance
- **Granular step execution**: Each workflow step now has dedicated files for focused execution
- **New documentation**: Added CSV data standards, intent vs prescriptive spectrum, and common tools reference
## Complete Migration Status
- **4 workflows fully migrated**: `create-agent`, `edit-agent`, `create-workflow`, and `edit-workflow` now use the new granular step-file architecture
- **Legacy transformation**: `edit-workflow` includes built-in capability to transform legacy single-file workflows into the new improved granular format
- **Future cleanup**: Legacy versions will be removed in a future commit after validation
## Schema Updates
- **Multi-menu support**: Updated agent schema to support `triggers` array for grouped menu items
- **Legacy compatibility**: Maintains backward compatibility with single `trigger` field
- **Discussion enhancements**: Added conversational_knowledge recommendation for discussion agents
## File Structure Changes
- Added: `create-agent/`, `edit-agent/`, `edit-workflow/`, `workflow-compliance-check/` workflows
- Added: Documentation standards and CSV reference files
- Refactored: `create-workflow/steps/` with detailed granular step files
## Handler Improvements
- Enhanced `handler-exec.xml` with clearer execution instructions
- Improved data passing context for executed files
- Better error handling and user guidance
This architectural change significantly improves workflow execution consistency across all LLM models by breaking complex processes into manageable, focused steps. The edit-workflow transformation tool ensures smooth migration of existing workflows to the new format.