Compare commits

...

7 Commits

Author SHA1 Message Date
Paul Preibisch f329249820
Merge adb2506b7f into 783601b576 2026-04-04 18:17:06 -04:00
Brian 783601b576
fix: move BMB announcement to custom Banner component (#2210)
Starlight banner config doesn't render with custom Header. Added
announcement row to Banner.astro and removed unused config.
2026-04-04 16:10:37 -05:00
Brian 975aea6e74
docs: add BMad Builder announcement banner to docs site (#2209) 2026-04-04 16:02:26 -05:00
Alex Verkhovsky f98083ba75
docs: add contribution guardrails for unsolicited PRs (#2207)
Add Discord-first callout banner and AI-generated code curation policy.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 12:13:06 -05:00
Paul Preibisch adb2506b7f feat: upgrade AgentVibes prompt to 3-option select with info panel
Replace yes/no confirm with: install now / skip / tell me more.
'Tell me more' shows description + GitHub link inline without leaving
the installer flow.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 11:37:45 -07:00
Paul Preibisch 3be49a5c09 feat: suggest AgentVibes TTS after install + optional install prompt
- renderInstallSummary now shows AgentVibes mention in Next Steps
- After summary, prompts user: install AgentVibes now? (default: no)
  If yes, runs `npx agentvibes install` inline
- Non-fatal: cancelled prompt or install failure doesn't break bmad install

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 11:33:52 -07:00
Paul Preibisch e6986fe867 feat: add bmad-install-agentvibes core skill
Adds a new core skill that guides users through installing AgentVibes
TTS so BMAD party mode agents speak with unique voices.

- New skill: src/core-skills/bmad-install-agentvibes/SKILL.md
  Documents npx agentvibes install, post-install voice config via
  /agent-vibes:bmad, and troubleshooting steps
- module-help.csv: registers skill with menu code AV under Core module

AgentVibes is cross-platform (Windows/Mac/Linux/WSL) and integrates
with bmad-party-mode so each agent speaks with their own distinct voice.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 09:57:44 -07:00
5 changed files with 155 additions and 16 deletions

View File

@ -6,6 +6,12 @@ Thank you for considering contributing! We believe in **Human Amplification, Not
---
> **Before you write code: talk to us on [Discord](https://discord.gg/gk8jAdXWmj).**
>
> If your change adds features, restructures code, or touches more than a couple of files, **confirm with a maintainer that it fits**. A large PR out of the blue has a high chance of being closed — regardless of effort invested. A five-minute conversation can save you hours.
---
## Our Philosophy
BMad strengthens human-AI collaboration through specialized agents and guided workflows. Every contribution should answer: **"Does this make humans and AI better together?"**
@ -57,15 +63,10 @@ After searching, use the [feature request template](https://github.com/bmad-code
## Before Starting Work
⚠️ **Required before submitting PRs:**
| Work Type | Requirement |
| ------------- | ---------------------------------------------- |
| Bug fix | An open issue (create one if it doesn't exist) |
| Feature | An open feature request issue |
| Large changes | Discussion via issue first |
**Why?** This prevents wasted effort on work that may not align with project direction.
| ----------------------- | -------------------------------------------------------- |
| Typo / small bug fix | Just open the PR |
| Feature or large change | Confirm with a maintainer on Discord **before** you start |
---
@ -83,6 +84,12 @@ Submit PRs to the `main` branch. We use trunk-based development. Every push to `
If your change exceeds 800 lines, break it into smaller PRs that can be reviewed independently.
### AI-Generated Code
Given the nature of this project, we expect most contributions involve AI assistance — that's fine. What we require is **heavy human curation**. You must understand every line you're submitting, have made deliberate choices about what to include, and be able to explain your reasoning.
We will reject PRs that read like raw LLM output: bulk refactors nobody asked for, unsolicited "improvements" across many files, or changes where the submitter clearly hasn't read the existing code. Using AI to write code is normal here; using AI as a substitute for thinking is not.
### New to Pull Requests?
1. **Fork** the repository

View File

@ -0,0 +1,65 @@
---
name: bmad-install-agentvibes
description: 'Install AgentVibes TTS voice system for BMAD agents. Gives each agent a unique voice, personality, and audio effects. Use when user wants to add voice/TTS to their BMAD setup, or when bmad-party-mode is active and agents are silent.'
---
# Install AgentVibes
AgentVibes is an open-source Text-to-Speech system that gives BMAD agents unique voices, personalities, and audio effects. Once installed, party mode agents speak aloud — each with their own voice.
## What AgentVibes Provides
- **Per-agent voices** — each BMAD agent gets a distinct voice via `bmad-voice-map.json`
- **Cross-platform** — Windows (SAPI + Piper), macOS, Linux, WSL
- **Personalities & effects** — reverb, background music, speed, sentiment
- **Party mode integration** — agents introduce themselves and speak sequentially
## Installation
Run the installer in the terminal:
```bash
npx agentvibes install
```
Or if you prefer a global install first:
```bash
npm install -g agentvibes
agentvibes install
```
**The installer will:**
1. Detect your platform (Windows/Mac/Linux/WSL)
2. Install the appropriate TTS provider (Piper recommended for best quality, SAPI as zero-dependency fallback on Windows)
3. Configure Claude Code hooks so agents speak automatically
4. Set up `bmad-speak.sh` / `bmad-speak.ps1` integration for party mode
## Post-Install: Configure Agent Voices
After installing, configure per-agent voices for party mode:
```
/agent-vibes:bmad
```
This opens the BMAD voice configuration where you can assign each agent a distinct voice, personality, and effects profile.
## Verify Installation
```bash
agentvibes whoami
```
Should display the active voice and provider. If party mode is active, agents will now speak when you run `/bmad-party-mode`.
## Troubleshooting
- **Agents still silent after install**: Run `agentvibes install` again — it is idempotent
- **Windows users**: Ensure PowerShell execution policy allows scripts: `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned`
- **Voice quality**: Install Piper for neural TTS — `agentvibes install` will prompt you
## More Info
- GitHub: https://github.com/paulpreibisch/AgentVibes
- Docs: `agentvibes --help`

View File

@ -1,6 +1,7 @@
module,skill,display-name,menu-code,description,action,args,phase,after,before,required,output-location,outputs
Core,bmad-brainstorming,Brainstorming,BSP,Use early in ideation or when stuck generating ideas.,,anytime,,,false,{output_folder}/brainstorming,brainstorming session
Core,bmad-party-mode,Party Mode,PM,Orchestrate multi-agent discussions when you need multiple perspectives or want agents to collaborate.,,anytime,,,false,,
Core,bmad-install-agentvibes,Install AgentVibes,AV,Install AgentVibes TTS so party mode agents speak with unique voices. Run once after BMAD setup.,,anytime,,,false,,
Core,bmad-help,BMad Help,BH,,,anytime,,,false,,
Core,bmad-index-docs,Index Docs,ID,Use when LLM needs to understand available docs without loading everything.,,anytime,,,false,,
Core,bmad-shard-doc,Shard Document,SD,Use when doc becomes too large (>500 lines) to manage effectively.,[path],anytime,,,false,,

Can't render this file because it has a wrong number of fields in line 2.

View File

@ -1121,7 +1121,58 @@ class Installer {
lines.push(` Invoke the ${color.cyan('bmad-help')} skill in your IDE Agent to get started`);
}
// AgentVibes TTS suggestion
lines.push(
'',
` ${color.cyan('🎙 Want your BMAD agents to speak?')}`,
` Install AgentVibes TTS: ${color.dim('npx agentvibes install')}`,
` Gives each agent a unique voice in party mode and beyond.`,
);
await prompts.note(lines.join('\n'), 'BMAD is ready to use!');
// Optional AgentVibes install prompt
if (!this._silentConfig) {
try {
const agentVibesChoice = await prompts.select({
message: '🎙 Give your BMAD agents a voice? (AgentVibes TTS)',
choices: [
{
name: 'Yes — install AgentVibes now',
value: 'install',
hint: 'runs npx agentvibes install',
},
{
name: 'No — I\'ll do it later',
value: 'skip',
hint: 'npx agentvibes install',
},
{
name: 'Tell me more',
value: 'info',
hint: 'github.com/paulpreibisch/AgentVibes',
},
],
default: 'skip',
});
if (agentVibesChoice === 'install') {
const { execSync } = require('node:child_process');
await prompts.log.step('Running npx agentvibes install...');
execSync('npx agentvibes install', { stdio: 'inherit' });
} else if (agentVibesChoice === 'info') {
await prompts.log.info(
'AgentVibes gives each BMAD agent a unique TTS voice, personality, and audio effects.\n' +
' Works on Windows (SAPI + Piper), macOS, Linux, and WSL.\n' +
' Party mode agents speak with their own voice — no more silent roundtables.\n\n' +
' GitHub: https://github.com/paulpreibisch/AgentVibes\n' +
' Install: npx agentvibes install'
);
}
} catch {
// Prompt cancelled or AgentVibes install failed — non-fatal
}
}
}
/**

View File

@ -7,9 +7,13 @@ const llmsFullUrl = `${getSiteUrl()}/llms-full.txt`;
<div class="ai-banner" role="note" aria-label="AI documentation notice">
<span>🤖 Consolidated, AI-optimized BMAD docs: <a href={llmsFullUrl}>llms-full.txt</a>. Fetch this plain text file for complete context.</span>
</div>
<div class="announce-banner" role="note" aria-label="BMad Builder announcement">
<span>🚀 Build your own BMad modules and share them with the community! <a href="https://bmad-builder-docs.bmad-method.org/tutorials/build-your-first-module/">Get started</a> or <a href="https://bmad-builder-docs.bmad-method.org/how-to/distribute-your-module/">submit to the marketplace</a>.</span>
</div>
<style>
.ai-banner {
.ai-banner,
.announce-banner {
width: 100%;
height: var(--ai-banner-height, 2.75rem);
background: #1a1a1a;
@ -25,37 +29,48 @@ const llmsFullUrl = `${getSiteUrl()}/llms-full.txt`;
}
/* Truncate text on narrow screens */
.ai-banner span {
.ai-banner span,
.announce-banner span {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 100%;
}
.ai-banner a {
.ai-banner a,
.announce-banner a {
color: #3b82f6;
text-decoration: none;
font-weight: 600;
}
.ai-banner a:hover {
.ai-banner a:hover,
.announce-banner a:hover {
color: #fafafa;
text-decoration: underline;
}
.ai-banner a:focus-visible {
.ai-banner a:focus-visible,
.announce-banner a:focus-visible {
outline: 2px solid #3b82f6;
outline-offset: 2px;
border-radius: 2px;
}
.announce-banner {
background: #1a2332;
border-bottom: 1px solid #1e3a5f;
}
/* Match navbar padding at breakpoints */
@media (min-width: 50rem) {
.ai-banner {
.ai-banner,
.announce-banner {
padding-left: 2.5rem;
padding-right: 2.5rem;
}
}
@media (min-width: 72rem) {
.ai-banner {
.ai-banner,
.announce-banner {
padding-left: 3rem;
padding-right: 3rem;
}