13 KiB
BMAD Agent Preservation & Backup System
🎯 Purpose
Preserve all custom BMAD agents you've personally created, ensuring they're:
- Backed up across multiple locations
- Version controlled in git
- Exportable to other projects
- Recoverable after system failures
- Shareable with team members
📦 What Gets Backed Up
Agent Definition Files
bmad/core/agents/
├── bmad-master.md
├── bmad-builder.md
├── genesis-keeper.md (Athena)
├── mcp-guardian.md (Atlas)
└── [your-custom-agents].md
bmad/bmm/agents/
├── analyst.md (Mary)
├── architect.md (Winston)
├── dev-impl.md (Amelia)
├── pm.md (John)
├── sm.md (Bob)
├── tea.md (Murat)
├── ux-expert.md (Sally)
└── lukasz-ai.md
bmad/cis/agents/
├── brainstorming-coach.md (Carson)
├── creative-problem-solver.md (Dr. Quinn)
├── design-thinking-coach.md (Maya)
├── innovation-strategist.md (Victor)
└── storyteller.md (Sophia)
Agent Manifest
bmad/_cfg/agent-manifest.csv
Custom Workflows Using Agents
bmad/core/workflows/party-mode/
├── workflow.yaml
├── instructions.md
└── template.md
🔄 Three-Tier Backup Strategy
Tier 1: Local Git Repository (Primary)
Location: /Users/hbl/Documents/BMAD-METHOD/.git
# Current status
cd /Users/hbl/Documents/BMAD-METHOD
git status
# Create backup commit
git add bmad/
git commit -m "Backup: All custom BMAD agents $(date +%Y-%m-%d)"
git push origin main
Frequency: After every agent creation/modification
Tier 2: External Backup Archive
Location: /Users/hbl/Documents/BMAD-AGENT-BACKUPS/
# Create timestamped backup
export BACKUP_DIR="/Users/hbl/Documents/BMAD-AGENT-BACKUPS"
export BACKUP_DATE=$(date +%Y-%m-%d_%H-%M-%S)
mkdir -p "$BACKUP_DIR/$BACKUP_DATE"
# Copy all agents
cp -r /Users/hbl/Documents/BMAD-METHOD/bmad/core/agents "$BACKUP_DIR/$BACKUP_DATE/"
cp -r /Users/hbl/Documents/BMAD-METHOD/bmad/bmm/agents "$BACKUP_DIR/$BACKUP_DATE/"
cp -r /Users/hbl/Documents/BMAD-METHOD/bmad/cis/agents "$BACKUP_DIR/$BACKUP_DATE/"
cp /Users/hbl/Documents/BMAD-METHOD/bmad/_cfg/agent-manifest.csv "$BACKUP_DIR/$BACKUP_DATE/"
# Create archive
cd "$BACKUP_DIR"
tar -czf "bmad-agents-$BACKUP_DATE.tar.gz" "$BACKUP_DATE"
echo "✅ Backup created: $BACKUP_DIR/bmad-agents-$BACKUP_DATE.tar.gz"
Frequency: Weekly or before major changes
Tier 3: Cloud Storage (GitHub/iCloud)
Location: GitHub repository + iCloud Drive
Option A: GitHub Private Repository
# Create dedicated agent backup repo
gh repo create bmad-agents-backup --private --description "Custom BMAD agent definitions backup"
# Initialize and push
cd /Users/hbl/Documents/BMAD-METHOD
git subtree push --prefix=bmad origin bmad-agents-backup
# Or create separate repo
mkdir ~/bmad-agents-export
cp -r bmad/*/agents ~/bmad-agents-export/
cp bmad/_cfg/agent-manifest.csv ~/bmad-agents-export/
cd ~/bmad-agents-export
git init
git add .
git commit -m "Initial agent backup"
git remote add origin git@github.com:yourusername/bmad-agents-backup.git
git push -u origin main
Option B: iCloud Drive
# Sync to iCloud
export ICLOUD_DIR="$HOME/Library/Mobile Documents/com~apple~CloudDocs/BMAD-Agents"
mkdir -p "$ICLOUD_DIR"
rsync -av --delete \
/Users/hbl/Documents/BMAD-METHOD/bmad/ \
"$ICLOUD_DIR/"
echo "✅ Synced to iCloud: $ICLOUD_DIR"
Frequency: Daily automated sync
🛠️ Automated Backup Script
File: /Users/hbl/Documents/BMAD-METHOD/bmad/core/preservation/backup-agents.sh
#!/bin/bash
# BMAD Agent Backup Automation Script
# Usage: ./backup-agents.sh [quick|full]
set -e
BMAD_ROOT="/Users/hbl/Documents/BMAD-METHOD"
BACKUP_ROOT="/Users/hbl/Documents/BMAD-AGENT-BACKUPS"
ICLOUD_DIR="$HOME/Library/Mobile Documents/com~apple~CloudDocs/BMAD-Agents"
BACKUP_DATE=$(date +%Y-%m-%d_%H-%M-%S)
echo "🔧 BMAD Agent Backup System"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Tier 1: Git Commit
echo "📦 Tier 1: Creating git commit..."
cd "$BMAD_ROOT"
git add bmad/*/agents/ bmad/_cfg/agent-manifest.csv
if git diff --cached --quiet; then
echo "✓ No changes to commit"
else
git commit -m "Agent backup: $BACKUP_DATE"
echo "✅ Git commit created"
fi
# Tier 2: Local Archive
if [ "$1" == "full" ]; then
echo "📦 Tier 2: Creating local archive..."
mkdir -p "$BACKUP_ROOT/$BACKUP_DATE"
cp -r "$BMAD_ROOT/bmad/core/agents" "$BACKUP_ROOT/$BACKUP_DATE/core-agents"
cp -r "$BMAD_ROOT/bmad/bmm/agents" "$BACKUP_ROOT/$BACKUP_DATE/bmm-agents"
cp -r "$BMAD_ROOT/bmad/cis/agents" "$BACKUP_ROOT/$BACKUP_DATE/cis-agents"
cp "$BMAD_ROOT/bmad/_cfg/agent-manifest.csv" "$BACKUP_ROOT/$BACKUP_DATE/"
cd "$BACKUP_ROOT"
tar -czf "bmad-agents-$BACKUP_DATE.tar.gz" "$BACKUP_DATE"
rm -rf "$BACKUP_DATE"
echo "✅ Archive created: bmad-agents-$BACKUP_DATE.tar.gz"
# Keep only last 30 backups
ls -t bmad-agents-*.tar.gz | tail -n +31 | xargs -r rm
echo "✓ Cleanup: Kept last 30 backups"
fi
# Tier 3: iCloud Sync
echo "📦 Tier 3: Syncing to iCloud..."
mkdir -p "$ICLOUD_DIR"
rsync -av --delete \
"$BMAD_ROOT/bmad/" \
"$ICLOUD_DIR/" \
--exclude=".DS_Store"
echo "✅ Synced to iCloud"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "✅ Backup Complete!"
echo ""
echo "📊 Backup Locations:"
echo " - Git: $BMAD_ROOT/.git"
if [ "$1" == "full" ]; then
echo " - Archive: $BACKUP_ROOT/bmad-agents-$BACKUP_DATE.tar.gz"
fi
echo " - iCloud: $ICLOUD_DIR"
Make it executable:
chmod +x /Users/hbl/Documents/BMAD-METHOD/bmad/core/preservation/backup-agents.sh
Usage:
# Quick backup (git + iCloud)
./backup-agents.sh quick
# Full backup (git + archive + iCloud)
./backup-agents.sh full
🔄 Restoration Procedures
Restore from Git
cd /Users/hbl/Documents/BMAD-METHOD
git log --oneline --grep="Agent backup" # Find backup commit
git checkout <commit-hash> -- bmad/
Restore from Archive
cd /Users/hbl/Documents/BMAD-AGENT-BACKUPS
ls -lt bmad-agents-*.tar.gz | head -5 # List recent backups
tar -xzf bmad-agents-YYYY-MM-DD_HH-MM-SS.tar.gz
cp -r YYYY-MM-DD_HH-MM-SS/* /Users/hbl/Documents/BMAD-METHOD/bmad/
Restore from iCloud
rsync -av \
"$HOME/Library/Mobile Documents/com~apple~CloudDocs/BMAD-Agents/" \
/Users/hbl/Documents/BMAD-METHOD/bmad/
📤 Export Agents to New Project
Step 1: Create Agent Export Package
#!/bin/bash
# File: export-agents.sh
PROJECT_NAME="$1"
EXPORT_DIR="$HOME/bmad-agent-exports/$PROJECT_NAME"
mkdir -p "$EXPORT_DIR/agents"
mkdir -p "$EXPORT_DIR/config"
# Copy all agents
cp -r /Users/hbl/Documents/BMAD-METHOD/bmad/*/agents "$EXPORT_DIR/"
# Copy manifest
cp /Users/hbl/Documents/BMAD-METHOD/bmad/_cfg/agent-manifest.csv "$EXPORT_DIR/config/"
# Create import instructions
cat > "$EXPORT_DIR/IMPORT_README.md" <<'EOF'
# BMAD Agent Import Instructions
## Installation
1. Copy agent files to your project:
```bash
cp -r agents/* YOUR_PROJECT/bmad/
-
Merge manifest entries:
cat config/agent-manifest.csv >> YOUR_PROJECT/bmad/_cfg/agent-manifest.csv -
Verify agents loaded:
# In Party Mode /bmad:core:workflows:party-mode
Customization
- Edit agent .md files to customize for your project
- Update manifest with project-specific paths
- Test in Party Mode before production use EOF
Create archive
cd "$HOME/bmad-agent-exports" tar -czf "$PROJECT_NAME-agents.tar.gz" "$PROJECT_NAME"
echo "✅ Export complete: $HOME/bmad-agent-exports/$PROJECT_NAME-agents.tar.gz"
**Usage**:
```bash
./export-agents.sh signright-au
./export-agents.sh visa-ai
./export-agents.sh my-new-project
Step 2: Import to New Project
# In new project
cd /path/to/new-project
tar -xzf ~/bmad-agent-exports/PROJECT_NAME-agents.tar.gz
cd PROJECT_NAME
cat IMPORT_README.md
# Follow instructions
🤖 Automated Daily Backup (Cron/LaunchAgent)
Option 1: Cron Job
# Edit crontab
crontab -e
# Add daily backup at 2 AM
0 2 * * * /Users/hbl/Documents/BMAD-METHOD/bmad/core/preservation/backup-agents.sh quick >> /tmp/bmad-backup.log 2>&1
# Full backup weekly (Sunday 3 AM)
0 3 * * 0 /Users/hbl/Documents/BMAD-METHOD/bmad/core/preservation/backup-agents.sh full >> /tmp/bmad-backup.log 2>&1
Option 2: LaunchAgent (macOS)
File: ~/Library/LaunchAgents/com.bmad.agent-backup.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.bmad.agent-backup</string>
<key>ProgramArguments</key>
<array>
<string>/Users/hbl/Documents/BMAD-METHOD/bmad/core/preservation/backup-agents.sh</string>
<string>quick</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>2</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/tmp/bmad-backup.log</string>
<key>StandardErrorPath</key>
<string>/tmp/bmad-backup-error.log</string>
</dict>
</plist>
Load it:
launchctl load ~/Library/LaunchAgents/com.bmad.agent-backup.plist
launchctl start com.bmad.agent-backup # Test immediately
📋 Agent Inventory Report
Generate a complete inventory of your agents:
#!/bin/bash
# File: agent-inventory.sh
echo "# BMAD Agent Inventory Report"
echo "Generated: $(date)"
echo ""
echo "## Summary"
echo "Total Agents: $(wc -l < /Users/hbl/Documents/BMAD-METHOD/bmad/_cfg/agent-manifest.csv)"
echo ""
echo "## Agents by Module"
echo ""
for module in core bmm cis; do
count=$(find /Users/hbl/Documents/BMAD-METHOD/bmad/$module/agents -name "*.md" 2>/dev/null | wc -l)
echo "### $module: $count agents"
find /Users/hbl/Documents/BMAD-METHOD/bmad/$module/agents -name "*.md" 2>/dev/null | while read file; do
name=$(basename "$file" .md)
displayName=$(grep "^$name," /Users/hbl/Documents/BMAD-METHOD/bmad/_cfg/agent-manifest.csv | cut -d',' -f2)
icon=$(grep "^$name," /Users/hbl/Documents/BMAD-METHOD/bmad/_cfg/agent-manifest.csv | cut -d',' -f4)
echo "- $icon $displayName ($name)"
done
echo ""
done
echo "## File Sizes"
du -sh /Users/hbl/Documents/BMAD-METHOD/bmad/*/agents 2>/dev/null
echo ""
echo "## Recent Modifications"
find /Users/hbl/Documents/BMAD-METHOD/bmad/*/agents -name "*.md" -mtime -7 2>/dev/null | while read file; do
echo "- $(basename "$file" .md): $(stat -f "%Sm" "$file")"
done
Run it:
chmod +x agent-inventory.sh
./agent-inventory.sh > AGENT_INVENTORY.md
✅ Verification Checklist
After backup, verify:
# 1. Git has latest agents
cd /Users/hbl/Documents/BMAD-METHOD
git log -1 --grep="Agent backup"
# 2. Archive exists
ls -lh /Users/hbl/Documents/BMAD-AGENT-BACKUPS/*.tar.gz | head -5
# 3. iCloud synced
ls -lh "$HOME/Library/Mobile Documents/com~apple~CloudDocs/BMAD-Agents/"
# 4. Agent count matches
wc -l bmad/_cfg/agent-manifest.csv
find bmad/*/agents -name "*.md" | wc -l
# 5. All agents loadable in Party Mode
# Start Claude Code, run: /bmad:core:workflows:party-mode
🚨 Disaster Recovery
Complete system failure - restore everything:
#!/bin/bash
# File: disaster-recovery.sh
echo "🚨 BMAD Agent Disaster Recovery"
echo "This will restore all agents from backups"
read -p "Continue? (yes/no): " confirm
if [ "$confirm" != "yes" ]; then
echo "Aborted"
exit 1
fi
# Option 1: Restore from iCloud (fastest)
echo "Attempting iCloud restore..."
if [ -d "$HOME/Library/Mobile Documents/com~apple~CloudDocs/BMAD-Agents" ]; then
rsync -av \
"$HOME/Library/Mobile Documents/com~apple~CloudDocs/BMAD-Agents/" \
/Users/hbl/Documents/BMAD-METHOD/bmad/
echo "✅ Restored from iCloud"
exit 0
fi
# Option 2: Restore from latest archive
echo "Attempting archive restore..."
LATEST_BACKUP=$(ls -t /Users/hbl/Documents/BMAD-AGENT-BACKUPS/bmad-agents-*.tar.gz 2>/dev/null | head -1)
if [ -n "$LATEST_BACKUP" ]; then
tar -xzf "$LATEST_BACKUP" -C /tmp
BACKUP_DIR=$(basename "$LATEST_BACKUP" .tar.gz | sed 's/bmad-agents-//')
cp -r "/tmp/$BACKUP_DIR/"* /Users/hbl/Documents/BMAD-METHOD/bmad/
echo "✅ Restored from archive: $LATEST_BACKUP"
exit 0
fi
# Option 3: Restore from git
echo "Attempting git restore..."
cd /Users/hbl/Documents/BMAD-METHOD
git log --oneline --grep="Agent backup" | head -1
read -p "Enter commit hash to restore: " commit
git checkout "$commit" -- bmad/
echo "✅ Restored from git commit: $commit"
📚 Now let me hand this to Athena to document permanently...