name: Publish Latest Bundles on: push: branches: [main] workflow_dispatch: {} permissions: contents: write jobs: bundle-and-publish: runs-on: ubuntu-latest steps: - name: Checkout BMAD-METHOD uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: npm - name: Install dependencies run: npm ci - name: Generate bundles run: npm run bundle - name: Create bundle distribution structure run: | mkdir -p dist/bundles # Copy web bundles (XML files from npm run bundle output) cp -r web-bundles/* dist/bundles/ 2>/dev/null || true # Verify bundles were copied (fail if completely empty) if [ ! "$(ls -A dist/bundles)" ]; then echo "❌ ERROR: No bundles found in dist/bundles/" echo "This likely means 'npm run bundle' failed or bundles weren't generated" exit 1 fi # Count bundles per module for module in bmm bmb cis bmgd; do if [ -d "dist/bundles/$module/agents" ]; then COUNT=$(find dist/bundles/$module/agents -name '*.xml' 2>/dev/null | wc -l) echo "✅ $module: $COUNT agent bundles" fi done # Generate index.html for each agents directory (fixes directory browsing) for module in bmm bmb cis bmgd; do if [ -d "dist/bundles/$module/agents" ]; then cat > "dist/bundles/$module/agents/index.html" << 'DIREOF' MODULE_NAME Agents

MODULE_NAME Agents

← Back to all modules

DIREOF # Replace MODULE_NAME sed -i "s/MODULE_NAME/${module^^}/g" "dist/bundles/$module/agents/index.html" # Generate agent links LINKS="" for file in dist/bundles/$module/agents/*.xml; do if [ -f "$file" ]; then name=$(basename "$file" .xml) LINKS="$LINKS
  • $name
  • \n" fi done sed -i "s|AGENT_LINKS|$LINKS|" "dist/bundles/$module/agents/index.html" fi done # Create zip archives per module mkdir -p dist/bundles/downloads for module in bmm bmb cis bmgd; do if [ -d "dist/bundles/$module" ]; then (cd dist/bundles && zip -r downloads/$module-agents.zip $module/) echo "✅ Created $module-agents.zip" fi done # Create index.html for GitHub Pages cat > dist/bundles/index.html << 'EOF' BMAD Bundles - Latest

    BMAD Web Bundles - Latest (Main Branch)

    ⚠️ Latest Build (Unstable)
    These bundles are built from the latest main branch commit. For stable releases, visit GitHub Releases.

    Last Updated: $TIMESTAMP

    Commit: $COMMIT_SHA

    Available Modules

    BMM (BMad Method)

    PM | Architect | TEA | Developer | Analyst | Scrum Master | UX Designer | Tech Writer
    📁 Browse All | 📦 Download Zip

    BMB (BMad Builder)

    Builder Agent
    📁 Browse All | 📦 Download Zip

    CIS (Creative Intelligence Suite)

    📁 Browse Agents | 📦 Download Zip

    BMGD (Game Development)

    📁 Browse Agents | 📦 Download Zip

    Bulk Downloads

    Download all agents for a module as a zip archive:

    Usage

    Copy the raw XML URL and paste into your AI platform's custom instructions or project knowledge.

    Example: https://raw.githubusercontent.com/bmad-code-org/bmad-bundles/main/bmm/agents/pm.xml

    Installation (Recommended)

    For full IDE integration with slash commands, use the installer:

    npx bmad-method@alpha install
    EOF # Replace placeholders TIMESTAMP=$(date -u +"%Y-%m-%d %H:%M UTC") COMMIT_SHA=$(git rev-parse --short HEAD) sed -i "s/\$TIMESTAMP/$TIMESTAMP/" dist/bundles/index.html sed -i "s/\$COMMIT_SHA/$COMMIT_SHA/" dist/bundles/index.html - name: Checkout bmad-bundles repo uses: actions/checkout@v4 with: repository: bmad-code-org/bmad-bundles path: bmad-bundles token: ${{ secrets.BUNDLES_PAT }} - name: Update bundles run: | # Clear old bundles rm -rf bmad-bundles/* # Copy new bundles cp -r dist/bundles/* bmad-bundles/ # Create .nojekyll for GitHub Pages touch bmad-bundles/.nojekyll # Create README cat > bmad-bundles/README.md << 'EOF' # BMAD Web Bundles (Latest) **⚠️ Unstable Build**: These bundles are auto-generated from the latest `main` branch. For stable releases, visit [GitHub Releases](https://github.com/bmad-code-org/BMAD-METHOD/releases/latest). ## Usage Copy raw markdown URLs for use in AI platforms: - Claude Code: `https://raw.githubusercontent.com/bmad-code-org/bmad-bundles/main/claude-code/sub-agents/{agent}.md` - ChatGPT: `https://raw.githubusercontent.com/bmad-code-org/bmad-bundles/main/chatgpt/sub-agents/{agent}.md` - Gemini: `https://raw.githubusercontent.com/bmad-code-org/bmad-bundles/main/gemini/sub-agents/{agent}.md` ## Browse Visit [https://bmad-code-org.github.io/bmad-bundles/](https://bmad-code-org.github.io/bmad-bundles/) to browse bundles. ## Installation (Recommended) For full IDE integration: ```bash npx bmad-method@alpha install ``` --- Auto-updated by [BMAD-METHOD](https://github.com/bmad-code-org/BMAD-METHOD) on every main branch merge. EOF - name: Commit and push to bmad-bundles run: | cd bmad-bundles git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git add . if git diff --staged --quiet; then echo "No changes to bundles, skipping commit" else COMMIT_SHA=$(cd .. && git rev-parse --short HEAD) git commit -m "Update bundles from BMAD-METHOD@${COMMIT_SHA}" git push echo "✅ Bundles published to GitHub Pages" fi - name: Summary run: | echo "## 🎉 Bundles Published!" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**Latest bundles** available at:" >> $GITHUB_STEP_SUMMARY echo "- 🌐 Browse: https://bmad-code-org.github.io/bmad-bundles/" >> $GITHUB_STEP_SUMMARY echo "- 📦 Raw files: https://github.com/bmad-code-org/bmad-bundles" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**Commit**: ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY