# Backup Main Branch Skill **Description**: Smart backup of main branches across repositories with duplicate detection. **Script**: `scripts/backup-main.sh` ## What It Does For each of the 3 repositories: 1. Switches to `main` and pulls latest 2. **Pushes any unpushed main commits** to origin 3. Fetches latest remote backup refs 4. **Skips backup** if HEAD matches the latest `backup/main-*` branch (smart duplicate detection) 5. Creates timestamped `backup/main-YYYY-MM-DD-HHMMSS` branch and pushes it 6. Cleans up old backups (keeps last 7) 7. Prints a **summary table** with: repo name, backup status, total commits, push status, last commit message ## Repositories Covered - `learning_ai_common_plat` - `learning_voice_ai_agent` - `learning_multimodal_memory_agents` ## Quick Start ```bash # From the learning_ai_common_plat root: bash scripts/backup-main.sh ``` Or via Windsurf workflow: `/backup-main-branch` ## Example Output ``` ━━━ learning_ai_common_plat ━━━ Pulling latest... Pushing 2 unpushed commit(s) on main... ✅ Main pushed Creating: backup/main-2026-02-12-201500 ✅ Pushed to remote ━━━ learning_voice_ai_agent ━━━ Pulling latest... ✅ Already backed up → backup/main-2026-02-12-201500 ┌─────────────────────────────────────────────────────────────────────────────────┐ │ BACKUP SUMMARY 2026-02-12 20:15 │ ├──────────────────────────┬──────────────────┬─────────┬────────────┬────────────┤ │ Repository │ Backup Status │ Commits │ Main Push │ Last Commit│ ├──────────────────────────┼──────────────────┼─────────┼────────────┼────────────┤ │ learning_ai_common_plat │ ✅ New backup │ 142 │ ✅ 2 pushed│ feat(docs) │ │ learning_voice_ai_agent │ ✅ Already backed│ 387 │ up to date │ fix(blob) │ │ learning_multimodal_... │ ✅ New backup │ 98 │ ✅ 4 pushed│ feat(azure)│ └──────────────────────────┴──────────────────┴─────────┴────────────┴────────────┘ ``` ## Restoration ```bash # List available backups git branch -r | grep "backup/main-" # Restore from a specific backup git checkout -b restore-from-backup origin/backup/main-2026-02-12-201500 git switch main git merge restore-from-backup ``` ## Customization - **Add repos**: Edit `REPOS` array in `scripts/backup-main.sh` - **Change retention**: Modify `tail -n +8` (keep last N) in the cleanup section - **Cron**: `0 18 * * * bash $HOME/code/mygh/learning_ai_common_plat/scripts/backup-main.sh` ## Related Skills - [Debug Service](./debug-service.md) — Backup before major changes - [Production Readiness](./production-readiness.md) — Backup before releases