Claude-skill-registry Data Backup Manager
Backup and manage game data including maps, NPCs, and configurations. Use when the user wants to backup data, create snapshots, export data, or restore from backups.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/data-backup-manager" ~/.claude/skills/majiayu000-claude-skill-registry-data-backup-manager && rm -rf "$T"
manifest:
skills/data/data-backup-manager/SKILL.mdsource content
Data Backup Manager
Backup, export, and manage game data for the Babylon.js first-person game.
Quick Start
Create timestamped backup
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp TIMESTAMP=$(date +%Y%m%d_%H%M%S) mkdir -p backups/$TIMESTAMP cp -r public/data backups/$TIMESTAMP/ echo "Backup created: backups/$TIMESTAMP"
List all backups
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp ls -lht backups/
Restore from latest backup
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp LATEST=$(ls -t backups/ | head -1) cp -r backups/$LATEST/data/* public/data/ echo "Restored from: $LATEST"
Backup Operations
Backup specific data type
# Backup maps only cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp TIMESTAMP=$(date +%Y%m%d_%H%M%S) mkdir -p backups/$TIMESTAMP cp -r public/data/maps backups/$TIMESTAMP/
# Backup NPCs only cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp TIMESTAMP=$(date +%Y%m%d_%H%M%S) mkdir -p backups/$TIMESTAMP cp -r public/data/npcs backups/$TIMESTAMP/
Create compressed backup
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp TIMESTAMP=$(date +%Y%m%d_%H%M%S) tar -czf backups/backup_$TIMESTAMP.tar.gz public/data echo "Compressed backup: backup_$TIMESTAMP.tar.gz"
Export as JSON
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp # Pretty print all JSON files for file in public/data/**/*.json; do echo "Formatting: $file" node -e "console.log(JSON.stringify(JSON.parse(require('fs').readFileSync('$file')), null, 2))" > "$file.tmp" && mv "$file.tmp" "$file" done
Data Validation
Check JSON validity
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp for file in public/data/**/*.json; do echo -n "Checking $file: " node -e "JSON.parse(require('fs').readFileSync('$file'))" && echo "✓ Valid" || echo "✗ Invalid" done
Count data files
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp echo "Maps: $(find public/data/maps -name '*.json' | wc -l)" echo "NPCs: $(find public/data/npcs -name '*.json' | wc -l)" echo "Events: $(find public/data/events -name '*.json' | wc -l)" echo "Investigations: $(find public/data/investigations -name '*.json' | wc -l)"
Restore Operations
Restore from specific backup
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp # List available backups first ls -1 backups/ # Restore from chosen backup (replace BACKUP_NAME) BACKUP_NAME="20250117_143000" cp -r backups/$BACKUP_NAME/data/* public/data/ echo "Restored from: $BACKUP_NAME"
Restore specific file
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp LATEST=$(ls -t backups/ | head -1) cp backups/$LATEST/data/maps/world.json public/data/maps/ echo "Restored world.json from: $LATEST"
Best Practices
- Backup before major changes: Always create backup before editing data
- Use timestamps: Makes it easy to track when backups were created
- Validate JSON: Check JSON validity after editing
- Regular backups: Create backups at end of work sessions
- Test restores: Periodically test that backups work
- Version control: Backups complement git, don't replace it
Cleanup
Remove old backups (keep last 10)
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp ls -t backups/ | tail -n +11 | xargs -I {} rm -rf backups/{} echo "Cleaned up old backups"