Skip to main content
clawdbot-backup Backup and restore ClawdBot configuration, skills, commands, and settings. Sync across devices, version control with git, automate backups, and migrate to new machines.
설치로 이동 Skills Marketplace 커뮤니티가 만든 AI 스킬을 발견하고 탐색하세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/duclm1x1/Dive-Ai --skill clawdbot-backup명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Zip 다운로드 다운로드 중... 이 저장소의 다른 Skills Persistent memory system for AI agents following Model Context Protocol (MCP). Use for storing long-term memories across sessions, semantic search of past knowledge, building knowledge graphs, auto-injecting context, deduplicating memories, syncing to cloud storage. Essential for agents that need to remember decisions, solutions, preferences, and learned patterns over time.
Persistent memory system for AI agents following Model Context Protocol (MCP). Use for storing long-term memories across sessions, semantic search of past knowledge, building knowledge graphs, auto-injecting context, deduplicating memories, syncing to cloud storage. Essential for agents that need to remember decisions, solutions, preferences, and learned patterns over time.
Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use when designing new APIs, reviewing API specifications, or establishing API design standards.
name clawdbot-backup description Backup and restore ClawdBot configuration, skills, commands, and settings. Sync across devices, version control with git, automate backups, and migrate to new machines. homepage https://github.com/clawdbot/backup-skill metadata {"clawdbot":{"emoji":"💾","requires":{"bins":["git","tar","rsync"],"env":[]}}}
ClawdBot Backup Skill
Backup, restore, and sync your ClawdBot configuration across devices directly from Clawdbot.
Overview
This skill helps you:
Backup all ClawdBot data and settings
Restore from backups
Sync between multiple machines
Version control your configuration
Automate backup routines
Migrate to new devices
ClawdBot Directory Structure
Key Locations
~/.claude/ # Main ClawdBot directory
├── settings.json # Global settings
├── settings.local.json # Local overrides (machine-specific)
├── projects.json # Project configurations
├── skills/ # Your custom skills
│ ├── skill-name/
│ │ ├── SKILL.md
│ │ └── supporting-files/
│ └── another-skill/
├── commands/ # Custom slash commands (legacy)
│ └── command-name.md
├── contexts/ # Saved contexts
├── templates/ # Response templates
└── mcp/ # MCP server configurations
└── servers.json
~/projects/ # Your projects (optional backup)
├── project-1/
│ └── .claude/ # Project-specific config
│ ├── settings.json
│ └── skills/
└── project-2/
What to Backup ESSENTIAL (Always backup):
✓ ~/.claude/skills/ # Custom skills
✓ ~/.claude/commands/ # Custom commands
✓ ~/.claude/settings.json # Global settings
✓ ~/.claude/mcp/ # MCP configurations
RECOMMENDED (Usually backup):
✓ ~/.claude/contexts/ # Saved contexts
✓ ~/.claude/templates/ # Templates
✓ Project .claude/ folders # Project configs
OPTIONAL (Case by case):
○ ~/.claude/settings.local.json # Machine-specific
○ Cache directories # Can be rebuilt
○ Log files # Usually not needed
Quick Backup Commands
Full Backup
BACKUP_DIR="$HOME /clawdbot-backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_NAME="clawdbot_backup_$TIMESTAMP "
mkdir -p "$BACKUP_DIR "
tar -czvf "$BACKUP_DIR /$BACKUP_NAME .tar.gz" \
-C "$HOME " \
.claude/skills \
.claude/commands \
.claude/settings.json \
.claude/mcp \
.claude/contexts \
.claude/templates \
2>/dev/null
echo "Backup created: $BACKUP_DIR /$BACKUP_NAME .tar.gz"
Quick Skills-Only Backup
tar -czvf ~/clawdbot_skills_$(date +%Y%m%d).tar.gz \
-C "$HOME " .claude/skills .claude/commands
Restore from Backup
BACKUP_FILE="$HOME /clawdbot-backups/clawdbot_backup_20260129.tar.gz"
tar -tzvf "$BACKUP_FILE "
tar -xzvf "$BACKUP_FILE " -C "$HOME "
echo "Restore complete!"
Backup Script
Full-Featured Backup Script #!/bin/bash
set -e
BACKUP_ROOT="${CLAWDBOT_BACKUP_DIR:-$HOME /clawdbot-backups} "
CLAUDE_DIR="$HOME /.claude"
MAX_BACKUPS=10
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log_info () { echo -e "${GREEN} [INFO]${NC} $1 " ; }
log_warn () { echo -e "${YELLOW} [WARN]${NC} $1 " ; }
log_error () { echo -e "${RED} [ERROR]${NC} $1 " ; }
check_claude_dir () {
if [ ! -d "$CLAUDE_DIR " ]; then
log_error "ClawdBot directory not found: $CLAUDE_DIR "
exit 1
fi
}
create_backup () {
local backup_type="${1:-full} "
local backup_name="clawdbot_${backup_type} _${TIMESTAMP} "
local backup_path="$BACKUP_ROOT /$backup_name .tar.gz"
mkdir -p "$BACKUP_ROOT "
log_info "Creating $backup_type backup..."
case $backup_type in
full)
tar -czvf "$backup_path " \
-C "$HOME " \
.claude/skills \
.claude/commands \
.claude/settings.json \
.claude/settings.local.json \
.claude/projects.json \
.claude/mcp \
.claude/contexts \
.claude/templates \
2>/dev/null || true
;;
skills)
tar -czvf "$backup_path " \
-C "$HOME " \
.claude/skills \
.claude/commands \
2>/dev/null || true
;;
settings)
tar -czvf "$backup_path " \
-C "$HOME " \
.claude/settings.json \
.claude/settings.local.json \
.claude/mcp \
2>/dev/null || true
;;
*)
log_error "Unknown backup type: $backup_type "
exit 1
;;
esac
if [ -f "$backup_path " ]; then
local size=$(du -h "$backup_path " | cut -f1)
log_info "Backup created: $backup_path ($size )"
else
log_error "Backup failed!"
exit 1
fi
}
list_backups () {
log_info "Available backups in $BACKUP_ROOT :"
echo ""
if [ -d "$BACKUP_ROOT " ]; then
ls -lh "$BACKUP_ROOT " /*.tar.gz 2>/dev/null | \
awk '{print $9, $5, $6, $7, $8}' || \
echo "No backups found."
else
echo "Backup directory doesn't exist."
fi
}
restore_backup () {
local backup_file="$1 "
if [ -z "$backup_file " ]; then
log_error "Please specify backup file"
list_backups
exit 1
fi
if [ ! -f "$backup_file " ]; then
backup_file="$BACKUP_ROOT /$backup_file "
fi
if [ ! -f "$backup_file " ]; then
log_error "Backup file not found: $backup_file "
exit 1
fi
log_warn "This will overwrite existing configuration!"
read -p "Continue? (y/N) " confirm
if [ "$confirm " != "y" ] && [ "$confirm " != "Y" ]; then
log_info "Restore cancelled."
exit 0
fi
log_info "Restoring from: $backup_file "
tar -xzvf "$backup_file " -C "$HOME "
log_info "Restore complete!"
}
cleanup_backups () {
log_info "Cleaning old backups (keeping last $MAX_BACKUPS )..."
cd "$BACKUP_ROOT " 2>/dev/null || return
local count=$(ls -1 *.tar.gz 2>/dev/null | wc -l)
if [ "$count " -gt "$MAX_BACKUPS " ]; then
local to_delete=$((count - MAX_BACKUPS))
ls -1t *.tar.gz | tail -n "$to_delete " | xargs rm -v
log_info "Removed $to_delete old backup(s)"
else
log_info "No cleanup needed ($count backups)"
fi
}
show_stats () {
log_info "ClawdBot Backup Statistics"
echo ""
echo "=== Directory Sizes ==="
du -sh "$CLAUDE_DIR " /skills 2>/dev/null || echo "Skills: N/A"
du -sh "$CLAUDE_DIR " /commands 2>/dev/null || echo "Commands: N/A"
du -sh "$CLAUDE_DIR " /mcp 2>/dev/null || echo "MCP: N/A"
du -sh "$CLAUDE_DIR " 2>/dev/null || echo "Total: N/A"
echo ""
echo "=== Skills Count ==="
find "$CLAUDE_DIR /skills" -name "SKILL.md" 2>/dev/null | wc -l | xargs echo "Skills:"
find "$CLAUDE_DIR /commands" -name "*.md" 2>/dev/null | wc -l | xargs echo "Commands:"
echo ""
echo "=== Backup Directory ==="
if [ -d "$BACKUP_ROOT " ]; then
du -sh "$BACKUP_ROOT "
ls -1 "$BACKUP_ROOT " /*.tar.gz 2>/dev/null | wc -l | xargs echo "Backup files:"
else
echo "No backups yet"
fi
}
usage () {
cat << EOF
ClawdBot Backup Tool
Usage: $(basename $0) <command> [options]
Commands:
backup [type] Create backup (types: full, skills, settings)
restore <file> Restore from backup file
list List available backups
cleanup Remove old backups (keep last $MAX_BACKUPS)
stats Show backup statistics
help Show this help
Examples:
$(basename $0) backup # Full backup
$(basename $0) backup skills # Skills only
$(basename $0) restore latest.tar.gz
$(basename $0) list
$(basename $0) cleanup
Environment:
CLAWDBOT_BACKUP_DIR Backup directory (default: ~/clawdbot-backups)
EOF
}
main () {
check_claude_dir
case "${1:-help} " in
backup)
create_backup "${2:-full} "
;;
restore)
restore_backup "$2 "
;;
list)
list_backups
;;
cleanup)
cleanup_backups
;;
stats)
show_stats
;;
help |--help |-h)
usage
;;
*)
log_error "Unknown command: $1 "
usage
exit 1
;;
esac
}
main "$@ "
Save and Use
cat > ~/.local/bin/clawdbot-backup << 'SCRIPT'
SCRIPT
chmod +x ~/.local/bin/clawdbot-backup
clawdbot-backup backup
clawdbot-backup backup skills
clawdbot-backup list
clawdbot-backup restore <file>
Git Version Control
Initialize Git Repo cd ~/.claude
git init
cat > .gitignore << 'EOF'
settings.local.json
cache/
*.tmp
*.log
*.tar.gz
*.zip
*.pem
*.key
credentials/
EOF
git add .
git commit -m "Initial ClawdBot configuration backup"
Push to Remote
git remote add origin git@github.com:username/clawdbot-config.git
git push -u origin main
Daily Workflow
cd ~/.claude
git add .
git commit -m "Updated skill: trading-bot"
git push
Auto-Commit Script #!/bin/bash
cd ~/.claude || exit 1
if git diff --quiet && git diff --staged --quiet; then
echo "No changes to commit"
exit 0
fi
CHANGED=$(git status --short | head -5 | awk '{print $2}' | tr '\n' ', ' )
git add .
git commit -m "Auto-backup: $CHANGED ($(date +%Y-%m-%d) )"
git push 2>/dev/null || echo "Push failed (offline?)"
Sync Between Devices
Method 1: Git Sync
git clone git@github.com:username/clawdbot-config.git ~/.claude
cd ~/.claude && git pull
cd ~/.claude && git add . && git commit -m "Update" && git push
Method 2: Rsync
rsync -avz --delete \
~/.claude/ \
user@server:~/clawdbot-backup/
rsync -avz --delete \
user@server:~/clawdbot-backup/ \
~/.claude/
Method 3: Cloud Storage
CLOUD_DIR="$HOME /Dropbox/ClawdBot"
rsync -avz ~/.claude/skills/ "$CLOUD_DIR /skills/"
rsync -avz ~/.claude/commands/ "$CLOUD_DIR /commands/"
cp ~/.claude/settings.json "$CLOUD_DIR /"
Sync Script #!/bin/bash
SYNC_DIR="${CLAWDBOT_SYNC_DIR:-$HOME /Dropbox/ClawdBot} "
CLAUDE_DIR="$HOME /.claude"
sync_to_cloud () {
echo "Syncing to cloud..."
mkdir -p "$SYNC_DIR "
rsync -avz --delete "$CLAUDE_DIR /skills/" "$SYNC_DIR /skills/"
rsync -avz --delete "$CLAUDE_DIR /commands/" "$SYNC_DIR /commands/"
rsync -avz "$CLAUDE_DIR /mcp/" "$SYNC_DIR /mcp/" 2>/dev/null
cp "$CLAUDE_DIR /settings.json" "$SYNC_DIR /" 2>/dev/null
echo "Sync complete!"
}
sync_from_cloud () {
echo "Syncing from cloud..."
rsync -avz "$SYNC_DIR /skills/" "$CLAUDE_DIR /skills/"
rsync -avz "$SYNC_DIR /commands/" "$CLAUDE_DIR /commands/"
rsync -avz "$SYNC_DIR /mcp/" "$CLAUDE_DIR /mcp/" 2>/dev/null
if [ ! -f "$CLAUDE_DIR /settings.json" ]; then
cp "$SYNC_DIR /settings.json" "$CLAUDE_DIR /" 2>/dev/null
fi
echo "Sync complete!"
}
case "$1 " in
push) sync_to_cloud ;;
pull) sync_from_cloud ;;
*)
echo "Usage: $0 {push|pull}"
echo " push - Upload local config to cloud"
echo " pull - Download cloud config to local"
;;
esac
Automated Backups
Cron Job (Linux/Mac)
crontab -e
0 2 * * * /home/user/.local/bin/clawdbot-backup backup full
0 3 * * 0 /home/user/.local/bin/clawdbot-backup cleanup
0 */6 * * * cd ~/.claude && git add . && git commit -m "Auto-backup $(date +\%Y-\%m-\%d) " && git push 2>/dev/null
Systemd Timer (Linux)
cat > ~/.config/systemd/user/clawdbot-backup.service << 'EOF'
[Unit]
Description=ClawdBot Backup
[Service]
Type=oneshot
ExecStart=/home/user/.local/bin/clawdbot-backup backup full
EOF
cat > ~/.config/systemd/user/clawdbot-backup.timer << 'EOF'
[Unit]
Description=Daily ClawdBot Backup
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
EOF
systemctl --user enable clawdbot-backup.timer
systemctl --user start clawdbot-backup.timer
Launchd (macOS)
cat > ~/Library/LaunchAgents/com.clawdbot.backup.plist << 'EOF'
<?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.clawdbot.backup</string>
<key>ProgramArguments</key>
<array>
<string>/Users/username/.local/bin/clawdbot-backup</string>
<string>backup</string>
<string>full</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer >2</integer>
<key>Minute</key>
<integer >0</integer>
</dict>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.clawdbot.backup.plist
Migration Guide
Migrate to New Machine
clawdbot-backup backup full
scp ~/clawdbot-backups/clawdbot_full_*.tar.gz newmachine:~/
cd ~/.claude
git add . && git commit -m "Pre-migration backup"
git push
tar -xzvf ~/clawdbot_full_*.tar.gz -C ~
git clone git@github.com:username/clawdbot-config.git ~/.claude
ls -la ~/.claude/skills/
Export Single Skill
SKILL_NAME="my-awesome-skill"
tar -czvf "${SKILL_NAME} .tar.gz" -C ~/.claude/skills "$SKILL_NAME "
tar -xzvf "${SKILL_NAME} .tar.gz" -C ~/.claude/skills/
Export All Skills for Sharing
tar -czvf clawdbot-skills-share.tar.gz \
-C ~/.claude \
skills \
--exclude='*.local*' \
--exclude='*personal*'
Backup Verification
Verify Backup Integrity
tar -tzvf backup.tar.gz > /dev/null && echo "Backup OK" || echo "Backup CORRUPT"
tar -tzvf backup.tar.gz
tar -tzvf backup.tar.gz | grep "skills/my-skill/SKILL.md"
Compare Backup to Current
TEMP_DIR=$(mktemp -d)
tar -xzf backup.tar.gz -C "$TEMP_DIR "
diff -rq ~/.claude/skills "$TEMP_DIR /.claude/skills"
rm -rf "$TEMP_DIR "
Troubleshooting
Common Issues
chmod -R u+rw ~/.claude
tar --exclude='cache' --exclude='*.log' -czvf backup.tar.gz ~/.claude
cd ~/.claude
git stash
git pull
git stash pop
Recovery from Corruption
mv ~/.claude ~/.claude.corrupted
clawdbot-backup restore latest.tar.gz
git clone git@github.com:username/clawdbot-config.git ~/.claude
diff -rq ~/.claude ~/.claude.corrupted/
Quick Reference
Essential Commands
tar -czvf ~/clawdbot-backup.tar.gz -C ~ .claude/skills .claude/commands .claude/settings.json
tar -xzvf ~/clawdbot-backup.tar.gz -C ~
tar -tzvf ~/clawdbot-backup.tar.gz
cd ~/.claude && git add . && git commit -m "Backup" && git push
cd ~/.claude && git pull
Backup Checklist Before major changes:
□ Create backup
□ Verify backup integrity
□ Note what you're changing
Regular maintenance:
□ Weekly full backup
□ Daily git commits (if using)
□ Monthly cleanup of old backups
□ Test restore procedure quarterly
Resources
Related Skills - skill-creator - Create new skills
- mcp-builder - Configure MCP servers
- dotfiles - General dotfile management
Documentation - ClawdBot Docs: docs.clawdbot.com
- Skills Guide: docs.clawdbot.com/skills
- MCP Setup: docs.clawdbot.com/mcp
Tip: Always test your backup restoration process before you actually need it. A backup you can't restore is worthless!