Commit Graph

994 Commits

Author SHA1 Message Date
Paul Preibisch 555e77016c fix(compiler): Preserve TTS data in agent frontmatter
**Problem:**
Agent compiler was stripping TTS data (intro and voices) when converting
.agent.yaml files to .md files. This caused all agents to use fallback
voice (en_US-lessac-medium) and generic intros in party mode.

**Root Cause:**
buildFrontmatter() only included name and description fields, omitting
the tts section from source YAML.

**Fix:**
- Modified buildFrontmatter() to accept and include TTS data
- Updated compileToXml() to extract TTS from parsed YAML
- TTS data now preserved in compiled .md frontmatter

**Impact:**
- Each agent now gets unique voice (ryan-high, kristin-medium, etc.)
- Personalized intros ("Hi! I'm John..." instead of "Hi! I'm Pm...")
- Party mode agents now distinguishable by voice

**Testing:**
 Tested with pm.agent.yaml → correct voice: en_US-ryan-high
 Tested with analyst.agent.yaml → correct voice: en_US-kristin-medium
 Verified TTS frontmatter structure matches manifest-generator expectations

**Related:**
- Fixes voice assignment issue in PR #987
- Enables proper multi-agent party mode experience
- Manifest generator already handles TTS correctly (no changes needed)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-17 18:18:59 -07:00
Paul Preibisch 7f36711e6c fix(party-mode): Use displayName field instead of name in agent output
CRITICAL BUG FIX: Party mode was showing agent identifiers like
"Analyst", "Architect", "Dev" instead of actual persona names like
"Mary", "Winston", "Amelia" due to incorrect field references.

Changes:
- step-01-agent-loading.md: Use [displayName] not [Agent Name]
- step-02-discussion-orchestration.md: Use [displayName] not [Agent Name]
- Added CRITICAL warnings to use displayName field from manifest CSV

This ensures agents appear with their proper persona names throughout
party mode conversations and TTS announcements.

Resolves AgentVibes test31/test32 user feedback where all agents
showed generic title-cased identifiers instead of personas.
2025-12-12 00:16:48 -07:00
Paul Preibisch 6f95e04df7 feat: Add --with-audio flag for first-time AgentVibes installations
Automatically includes --with-audio parameter when installing AgentVibes
for the first time (detects by checking if .agentvibes directory exists).
This ensures new users get audio tracks downloaded automatically.

Updates skip --with-audio to avoid re-downloading existing audio files.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-07 15:39:17 -07:00
Paul Preibisch 9a36a00b17 fix: Remove '(Optional)' from Voice Map Loading section header
Addresses code review feedback - removing (Optional) prevents agents from
skipping the section without evaluating the conditional logic within.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-07 15:16:38 -07:00
Paul Preibisch 801b328a5b Merge main into fix/agentvibes-npm-env-inheritance
- Resolved .gitignore merge conflict (kept both changes)
- Removed '(Optional)' from Voice Map Loading section in party-mode workflow per code review feedback

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-07 15:14:34 -07:00
Brian Madison 38e65abd83 moved code of conduct to github folder, readme links to it 2025-12-07 14:55:44 -06:00
Alex Verkhovsky ff9a085dd0
feat: add Raven's Verdict PR review tool (#1054)
* feat: add Raven's Verdict PR review tool

* docs: add usage guidance to Raven's Verdict README

* docs: add guidance to skip PRs that shouldn't merge
2025-12-07 14:13:33 -06:00
Brian Madison d5c687d99d custom content installation guide 2025-12-07 14:11:17 -06:00
Brian Madison b68e5c0225 add custom content installation question to indicate location of custom content 2025-12-07 13:39:27 -06:00
Alex Verkhovsky 987f81ff64
feat: add CodeRabbit AI code review integration (#1053)
- Add .coderabbit.yaml with minimal config and path instructions
- Exclude node_modules from review scope
- Document pilot research and conclusions in docs/planning/

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 10:36:24 -06:00
Wendy Smoak 0c2afdd2bb
Change Gem creation link to Gemini Gem manager (#1057)
Updated the link for creating a Gem to the Gemini Gem manager.
2025-12-07 10:16:49 -06:00
Brian Madison a65ff90b44 example-custom-* disabled so installer does not find them when trying to install from npx 2025-12-07 07:48:44 -06:00
Brian Madison 80a90c01d4 chore: bump version to alpha.14
- Updated CHANGELOG.md with comprehensive Alpha.14 release notes
- Added advanced builder features and custom installation improvements
- IDE configuration preservation during upgrades
- Breaking change: removed legacy agent-install command
2025-12-07 02:21:49 -06:00
Brian Madison 119187a1e7 custom module installer improved, and removed agent-install 2025-12-07 02:10:03 -06:00
Brian Madison b252778043 custom inst imporove 2025-12-07 01:43:44 -06:00
Paul Preibisch 169e983e62 refactor: Remove deprecated ElevenLabs provider mapping
- Remove 'elevenlabs' fallback from providerVoiceField mapping
- ElevenLabs is no longer supported in AgentVibes
- Only Piper and macOS providers remain

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-07 00:17:38 -07:00
Paul Preibisch 5f0db3fd27 feat: Add declarative TTS voice configuration in agent YAML files
- Add optional `tts` section to agent schema with intro and voices
- Update manifest-generator.js to read TTS from YAML and generate provider-aware CSV
- Add TTS configuration to all 9 agent YAML files with Piper and macOS voices
- Voice map CSV now auto-generated from agent YAML instead of hardcoded
- Provider-aware: auto-selects correct voice based on active TTS (Piper/macOS)

Benefits:
- Declarative: voice config lives with agent definition
- Loose coupling: AgentVibes reads CSV, no YAML dependency
- Extensible: new agents automatically get voice mapping

Related:
- Created comprehensive test suite in AgentVibes repo (test/unit/bmad-voice-map.bats)
- All 10 tests passing (8 pass, 2 skip future features)
- Validates BMAD → AgentVibes voice configuration pipeline

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-07 00:12:26 -07:00
Brian Madison eacfba2e5b custom agents and workflows can now also be installed with a simple custom.yaml designation 2025-12-06 22:45:02 -06:00
Brian Madison 903c7a4133 remove hardcoded agent sidecar locations to fully use config option 2025-12-06 21:37:43 -06:00
Brian Madison 8c04ccf3f0 rename default folder location for agent_sidecar_folder installation location 2025-12-06 21:21:03 -06:00
Brian Madison 6d98864ec1 sidecar files retained on updates 2025-12-06 21:17:13 -06:00
Brian Madison 1697a45376 sidecar content goes to custom core config location 2025-12-06 21:08:57 -06:00
Brian Madison ba2c81263b remove: all legacy file cleanup functionality
- Removed scanForLegacyFiles, performCleanup, and related methods from installer.js
- Removed --skip-cleanup option from install command
- Deleted cleanup.js command file entirely
- Simplified installation flow by removing cleanup prompts
- All tests passing after removal
2025-12-06 17:11:40 -06:00
Brian Madison 8d044f8c3e fix: prevent modules from showing as obsolete during reinstall
- 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
2025-12-06 16:56:09 -06:00
Brian Madison 74d071708d fix: nested agents now appear in CLI commands
- 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
2025-12-06 16:39:28 -06:00
Brian Madison 86e2daabba fix: ManifestGenerator now recursively scans for agents
- 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
2025-12-06 16:31:32 -06:00
Brian Madison aad7a71718 fix: ManifestGenerator now scans for all installed modules
- 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
2025-12-06 16:16:48 -06:00
Brian Madison f052967f65 fix: ModuleManager now creates customize.yaml files for agents
- 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
2025-12-06 16:02:07 -06:00
Brian Madison 1bd01e1ce6 feat: implement recursive agent discovery and compilation
- 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.
2025-12-06 15:38:38 -06:00
Brian Madison 0d83799ecf refactor: simplify module discovery to scan entire project
- 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.
2025-12-06 15:28:37 -06:00
Brian Madison 7c5c97a914 atl rovo dev not in preferred list until fully tested 2025-12-06 14:25:29 -06:00
Paul Preibisch 961c50f752 fix: Remove agent-voice-map.csv from tracking (user-specific file) 2025-12-06 13:04:14 -07:00
Paul Preibisch bb2942ef0b fix: Apply Prettier formatting to workflow.md 2025-12-06 12:51:50 -07:00
Paul Preibisch ba2d6c5cad fix: Always run AgentVibes installer when enabled
Previously, BMAD would skip the AgentVibes installer if it detected
existing hook files (.claude/hooks/bmad-speak.sh and play-tts.sh).
This prevented users from getting AgentVibes updates.

Now when user says "Yes" to AgentVibes, it always runs the installer,
ensuring users get the latest version with new features and fixes.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-06 12:20:57 -07:00
Paul Preibisch 6e0b36f0e0 feat: Add voice map generation with agent intros for party mode
- Generate _cfg/agent-voice-map.csv during BMAD install with voice and intro columns
- Update party mode instructions to have 3-4 agents introduce themselves on activation
- Each agent speaks their personalized intro message via TTS

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-06 12:20:57 -07:00
Paul Preibisch fe79f77768 feat: Move AgentVibes prompt after tool selection with smart defaults
- Move AgentVibes TTS prompt to after IDE/tool selection
- Default to Y if Claude Code is selected (since AgentVibes only works with Claude Code)
- Default to N if Claude Code is not selected
- Remove mid-install warning about AgentVibes not being installed (handled at end)
- Pass configured IDEs to quick update flow for consistent behavior

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-06 12:02:50 -07:00
Paul Preibisch 08aaf5e2f3 feat: Swap bmad-master and pm voice assignments
- bmad-master: en_US-ryan-high → en_US-lessac-medium
- pm (john): en_US-lessac-medium → en_US-ryan-high

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-06 12:02:50 -07:00
Paul Preibisch d9b10490b4 fix: Clear all npm config env vars before calling AgentVibes installer
When BMAD is invoked with --prefix flag, npm sets many npm_config_*
and npm_package_* environment variables. These caused npx agentvibes
to look for files in the wrong directory (/prefix/lib instead of cwd).

Changes:
- tools/cli/commands/install.js: Filter out ALL npm_config_* and
  npm_package_* env vars before calling npx agentvibes
- tools/cli/installers/lib/core/installer.js: Add AgentVibes prompt
  to Quick Update flow so existing installations can enable TTS
- tools/cli/installers/lib/core/manifest-generator.js: Track
  agentVibes configuration in manifest.yaml

This ensures AgentVibes runs in a clean environment regardless of
how BMAD was invoked (with or without --prefix flag).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-06 12:02:50 -07:00
Brian Madison 7545bf9227 remove custom test content from src control 2025-12-06 12:53:43 -06:00
Brian Madison 228dfa28a5 installer updates working with basic flow 2025-12-06 12:53:43 -06:00
Alex Verkhovsky e3f756488a
feat(quality): add markdownlint-cli2 to quality checks (#1039)
- 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>
2025-12-06 12:40:07 -06:00
Alex Verkhovsky d85090060b
fix: read version from package.json instead of hardcoded fallback (#1041)
Co-authored-by: Brian <bmadcode@gmail.com>
2025-12-06 12:39:39 -06:00
Alex Verkhovsky a0442d4fb7
chore(cli): remove broken build caching (#1042)
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>
2025-12-06 12:38:56 -06:00
Alex Verkhovsky e979b47fe5
fix(workflows): remove hardcoded years from WebSearch queries (#1040)
* 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>
2025-12-06 12:37:50 -06:00
Alex Verkhovsky a6dffb4706
fix(installer): remove hardcoded 'bmad' prefix from files-manifest.csv paths (#1043)
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>
2025-12-06 12:36:17 -06:00
Hang 282bc27c7e
feat(bmm): enhance PRD workflow with brownfield project support (#1047)
- Add three-branch conditional logic for document-based discovery:
  - PATH A: Has Product Brief (any project type)
  - PATH B: No Brief + Has Project Docs (brownfield)
  - PATH C: No Documents (greenfield from scratch)
- Add YAML frontmatter to all 12 PRD step files
- Add documentCounts to frontmatter for state tracking
- Fix step count (11 steps, not 10) and path typos
- Remove non-existent workflow references (story-context, validate-architecture)
- Update workflow chains and glossary definitions

Key insight: Branch based on DOCUMENT TYPE, not PROJECT TYPE.

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

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-06 12:35:30 -06:00
Alex Verkhovsky 5ee1551b5b
fix(bmm): remove stale validate-prd references (fixes #1030) (#1038)
- 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>
2025-12-05 21:35:46 -06:00
Alex Verkhovsky c95b65f462
fix(bmm): correct code-review workflow status logic and checklist (#1015) (#1028)
- 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>
2025-12-05 21:27:11 -06:00
Nguyen Quang Huy 72ef9e9722
fix: use backticks for quoted phrase in code-review description (#1025)
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>
2025-12-05 21:26:04 -06:00
Paul Preibisch 8265bbf295
feat(installer): Enhanced TTS injection summary with tracking and documentation (#1037)
## 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>
2025-12-05 18:54:03 -06:00