โ† All skills
Tencent SkillHub ยท Developer Tools

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.

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Backup and restore ClawdBot configuration, skills, commands, and settings. Sync across devices, version control with git, automate backups, and migrate to new machines.

โฌ‡ 0 downloads โ˜… 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
SKILL.md

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.0.0

Documentation

ClawHub primary doc Primary doc: SKILL.md 31 sections Open source page

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

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

Full Backup

# Create timestamped 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

# Backup just skills tar -czvf ~/clawdbot_skills_$(date +%Y%m%d).tar.gz \ -C "$HOME" .claude/skills .claude/commands

Restore from Backup

# Restore full backup BACKUP_FILE="$HOME/clawdbot-backups/clawdbot_backup_20260129.tar.gz" # Preview contents first tar -tzvf "$BACKUP_FILE" # Restore (will overwrite existing) tar -xzvf "$BACKUP_FILE" -C "$HOME" echo "Restore complete!"

Full-Featured Backup Script

#!/bin/bash # clawdbot-backup.sh - Comprehensive ClawdBot backup tool set -e # Configuration BACKUP_ROOT="${CLAWDBOT_BACKUP_DIR:-$HOME/clawdbot-backups}" CLAUDE_DIR="$HOME/.claude" MAX_BACKUPS=10 # Keep last N backups TIMESTAMP=$(date +%Y%m%d_%H%M%S) # Colors 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 if ClawdBot directory exists check_claude_dir() { if [ ! -d "$CLAUDE_DIR" ]; then log_error "ClawdBot directory not found: $CLAUDE_DIR" exit 1 fi } # Create backup 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 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 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 # Try relative path in backup dir 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!" } # Clean old backups 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 backup stats 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 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 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

# Save script cat > ~/.local/bin/clawdbot-backup << 'SCRIPT' # Paste script content here SCRIPT chmod +x ~/.local/bin/clawdbot-backup # Usage clawdbot-backup backup # Full backup clawdbot-backup backup skills # Skills only clawdbot-backup list # List backups clawdbot-backup restore <file> # Restore

Initialize Git Repo

cd ~/.claude # Initialize git git init # Create .gitignore cat > .gitignore << 'EOF' # Machine-specific settings settings.local.json # Cache and temp files cache/ *.tmp *.log # Large files *.tar.gz *.zip # Sensitive data (if any) *.pem *.key credentials/ EOF # Initial commit git add . git commit -m "Initial ClawdBot configuration backup"

Push to Remote

# Add remote (GitHub, GitLab, etc) git remote add origin git@github.com:username/clawdbot-config.git # Push git push -u origin main

Daily Workflow

# After making changes to skills/settings cd ~/.claude git add . git commit -m "Updated skill: trading-bot" git push

Auto-Commit Script

#!/bin/bash # auto-commit-claude.sh - Auto commit changes cd ~/.claude || exit 1 # Check for changes if git diff --quiet && git diff --staged --quiet; then echo "No changes to commit" exit 0 fi # Get changed files for commit message 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?)"

Method 1: Git Sync

# On new device git clone git@github.com:username/clawdbot-config.git ~/.claude # Pull latest changes cd ~/.claude && git pull # Push local changes cd ~/.claude && git add . && git commit -m "Update" && git push

Method 2: Rsync

# Sync to remote server rsync -avz --delete \ ~/.claude/ \ user@server:~/clawdbot-backup/ # Sync from remote server rsync -avz --delete \ user@server:~/clawdbot-backup/ \ ~/.claude/

Method 3: Cloud Storage

# Backup to cloud folder (Dropbox, Google Drive, etc) CLOUD_DIR="$HOME/Dropbox/ClawdBot" # Sync skills rsync -avz ~/.claude/skills/ "$CLOUD_DIR/skills/" rsync -avz ~/.claude/commands/ "$CLOUD_DIR/commands/" # Copy settings cp ~/.claude/settings.json "$CLOUD_DIR/"

Sync Script

#!/bin/bash # sync-clawdbot.sh - Sync ClawdBot config between devices 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 # Don't overwrite local settings by default 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

Cron Job (Linux/Mac)

# Edit crontab crontab -e # Add daily backup at 2 AM 0 2 * * * /home/user/.local/bin/clawdbot-backup backup full # Add weekly cleanup on Sundays 0 3 * * 0 /home/user/.local/bin/clawdbot-backup cleanup # Add git auto-commit every 6 hours 0 */6 * * * cd ~/.claude && git add . && git commit -m "Auto-backup $(date +\%Y-\%m-\%d)" && git push 2>/dev/null

Systemd Timer (Linux)

# Create service: ~/.config/systemd/user/clawdbot-backup.service 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 # Create timer: ~/.config/systemd/user/clawdbot-backup.timer cat > ~/.config/systemd/user/clawdbot-backup.timer << 'EOF' [Unit] Description=Daily ClawdBot Backup [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.target EOF # Enable systemctl --user enable clawdbot-backup.timer systemctl --user start clawdbot-backup.timer

Launchd (macOS)

# Create plist: ~/Library/LaunchAgents/com.clawdbot.backup.plist 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 # Load launchctl load ~/Library/LaunchAgents/com.clawdbot.backup.plist

Migrate to New Machine

# === On OLD machine === # 1. Create full backup clawdbot-backup backup full # 2. Copy backup file to new machine scp ~/clawdbot-backups/clawdbot_full_*.tar.gz newmachine:~/ # Or use git cd ~/.claude git add . && git commit -m "Pre-migration backup" git push # === On NEW machine === # Method A: From backup file tar -xzvf ~/clawdbot_full_*.tar.gz -C ~ # Method B: From git git clone git@github.com:username/clawdbot-config.git ~/.claude # 3. Verify ls -la ~/.claude/skills/

Export Single Skill

# Export one skill for sharing SKILL_NAME="my-awesome-skill" tar -czvf "${SKILL_NAME}.tar.gz" -C ~/.claude/skills "$SKILL_NAME" # Import skill tar -xzvf "${SKILL_NAME}.tar.gz" -C ~/.claude/skills/

Export All Skills for Sharing

# Create shareable skills bundle (no personal settings) tar -czvf clawdbot-skills-share.tar.gz \ -C ~/.claude \ skills \ --exclude='*.local*' \ --exclude='*personal*'

Verify Backup Integrity

# Test backup without extracting tar -tzvf backup.tar.gz > /dev/null && echo "Backup OK" || echo "Backup CORRUPT" # List contents tar -tzvf backup.tar.gz # Verify specific file exists tar -tzvf backup.tar.gz | grep "skills/my-skill/SKILL.md"

Compare Backup to Current

# Extract to temp dir TEMP_DIR=$(mktemp -d) tar -xzf backup.tar.gz -C "$TEMP_DIR" # Compare diff -rq ~/.claude/skills "$TEMP_DIR/.claude/skills" # Cleanup rm -rf "$TEMP_DIR"

Common Issues

# Issue: Permission denied chmod -R u+rw ~/.claude # Issue: Backup too large # Exclude cache and logs tar --exclude='cache' --exclude='*.log' -czvf backup.tar.gz ~/.claude # Issue: Restore overwrote settings # Keep settings.local.json for machine-specific config # It won't be overwritten if using proper backup # Issue: Git conflicts after sync cd ~/.claude git stash git pull git stash pop # Resolve conflicts manually if needed

Recovery from Corruption

# If ~/.claude is corrupted # 1. Move corrupted dir mv ~/.claude ~/.claude.corrupted # 2. Restore from backup clawdbot-backup restore latest.tar.gz # 3. Or restore from git git clone git@github.com:username/clawdbot-config.git ~/.claude # 4. Compare and recover anything missing diff -rq ~/.claude ~/.claude.corrupted/

Essential Commands

# Backup tar -czvf ~/clawdbot-backup.tar.gz -C ~ .claude/skills .claude/commands .claude/settings.json # Restore tar -xzvf ~/clawdbot-backup.tar.gz -C ~ # List backup contents tar -tzvf ~/clawdbot-backup.tar.gz # Git backup cd ~/.claude && git add . && git commit -m "Backup" && git push # Git restore 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

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!
Category context

Code helpers, APIs, CLIs, browser automation, testing, and developer operations.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
1 Docs
  • SKILL.md Primary doc