home / skills / openclaw / skills / clawdbot-update-plus

clawdbot-update-plus skill

/skills/hopyky/clawdbot-update-plus

This skill helps you manage Clawdbot backups, updates, and restores with auto-rollback and encrypted cloud syncing.

npx playbooks add skill openclaw/skills --skill clawdbot-update-plus

Review the files below or copy the command above to add this skill to your agents.

Files (11)
SKILL.md
8.0 KB
---
name: clawdbot-update-plus
description: Full backup, update, and restore for Clawdbot - config, workspace, and skills with auto-rollback
version: 2.1.1
metadata: {"clawdbot":{"emoji":"šŸ”„","requires":{"bins":["git","jq","rsync"],"commands":["clawdbot"]}}}
---

# šŸ”„ Clawdbot Update Plus

A comprehensive backup, update, and restore tool for your entire Clawdbot environment. Protect your config, workspace, and skills with automatic rollback, encrypted backups, and cloud sync.

## Quick Start

```bash
# Check for available updates
clawdbot-update-plus check

# Create a full backup
clawdbot-update-plus backup

# Update everything (creates backup first)
clawdbot-update-plus update

# Preview changes (no modifications)
clawdbot-update-plus update --dry-run

# Restore from backup
clawdbot-update-plus restore clawdbot-update-2026-01-25-12:00:00.tar.gz
```

## Features

| Feature | Description |
|---------|-------------|
| **Full Backup** | Backup entire environment (config, workspace, skills) |
| **Auto Backup** | Creates backup before every update |
| **Auto Rollback** | Reverts to previous commit if update fails |
| **Smart Restore** | Restore everything or specific parts (config, workspace) |
| **Multi-Directory** | Separate prod/dev skills with independent update settings |
| **Encrypted Backups** | Optional GPG encryption |
| **Cloud Sync** | Upload backups to Google Drive, S3, Dropbox via rclone |
| **Notifications** | Get notified via WhatsApp, Telegram, or Discord |
| **Modular Architecture** | Clean, maintainable codebase |

## Installation

```bash
# Via ClawdHub
clawdhub install clawdbot-update-plus --dir ~/.clawdbot/skills

# Or clone manually
git clone https://github.com/hopyky/clawdbot-update-plus.git ~/.clawdbot/skills/clawdbot-update-plus
```

### Add to PATH

Create a symlink to use the command globally:

```bash
mkdir -p ~/bin
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc  # or ~/.bashrc
source ~/.zshrc
ln -sf ~/.clawdbot/skills/clawdbot-update-plus/bin/clawdbot-update-plus ~/bin/clawdbot-update-plus
```

### Dependencies

| Dependency | Required | Purpose |
|------------|----------|---------|
| `git` | Yes | Update skills from repositories |
| `jq` | Yes | Parse JSON configuration |
| `rsync` | Yes | Efficient file copying |
| `rclone` | No | Cloud storage sync |
| `gpg` | No | Backup encryption |

## Configuration

Create `~/.clawdbot/clawdbot-update.json`:

```json
{
  "backup_dir": "~/.clawdbot/backups",
  "backup_before_update": true,
  "backup_count": 5,
  "backup_paths": [
    {"path": "~/.clawdbot", "label": "config", "exclude": ["backups", "logs", "media", "*.lock"]},
    {"path": "~/clawd", "label": "workspace", "exclude": ["node_modules", ".venv"]}
  ],
  "skills_dirs": [
    {"path": "~/.clawdbot/skills", "label": "prod", "update": true},
    {"path": "~/clawd/skills", "label": "dev", "update": false}
  ],
  "remote_storage": {
    "enabled": false,
    "rclone_remote": "gdrive:",
    "path": "clawdbot-backups"
  },
  "encryption": {
    "enabled": false,
    "gpg_recipient": "[email protected]"
  },
  "notifications": {
    "enabled": false,
    "target": "+1234567890",
    "on_success": true,
    "on_error": true
  }
}
```

## Backup Paths

Configure what to backup with `backup_paths`:

| Option | Description |
|--------|-------------|
| `path` | Directory to backup (supports `~`) |
| `label` | Name in logs and restore |
| `exclude` | Files/folders to exclude |

### Recommended Setup

```json
"backup_paths": [
  {"path": "~/.clawdbot", "label": "config", "exclude": ["backups", "logs", "media"]},
  {"path": "~/clawd", "label": "workspace", "exclude": ["node_modules", ".venv"]}
]
```

## Skills Update

Configure which skills to update with `skills_dirs`:

| Option | Description |
|--------|-------------|
| `path` | Skills directory |
| `label` | Name in logs |
| `update` | Run `git pull` (true/false) |

### Recommended Setup

```json
"skills_dirs": [
  {"path": "~/.clawdbot/skills", "label": "prod", "update": true},
  {"path": "~/clawd/skills", "label": "dev", "update": false}
]
```

- **Prod**: Auto-update from ClawdHub/GitHub
- **Dev**: Manual only (protects your work)

## Commands

### `backup` — Create Full Backup

```bash
clawdbot-update-plus backup
```

### `list-backups` — List Available Backups

```bash
clawdbot-update-plus list-backups
```

### `update` — Update Everything

```bash
# Standard update (with automatic backup)
clawdbot-update-plus update

# Preview changes only
clawdbot-update-plus update --dry-run

# Skip backup
clawdbot-update-plus update --no-backup

# Force continue even if backup fails
clawdbot-update-plus update --force
```

### `restore` — Restore from Backup

```bash
# Restore everything
clawdbot-update-plus restore backup.tar.gz

# Restore only config
clawdbot-update-plus restore backup.tar.gz config

# Restore only workspace
clawdbot-update-plus restore backup.tar.gz workspace

# Force (no confirmation)
clawdbot-update-plus restore backup.tar.gz --force
```

### `check` — Check for Updates

```bash
clawdbot-update-plus check
```

### `install-cron` — Automatic Updates

```bash
# Install daily at 2 AM
clawdbot-update-plus install-cron

# Custom schedule
clawdbot-update-plus install-cron "0 3 * * 0"  # Sundays at 3 AM

# Remove
clawdbot-update-plus uninstall-cron
```

## Notifications

Get notified when updates complete or fail:

```json
"notifications": {
  "enabled": true,
  "target": "+1234567890",
  "on_success": true,
  "on_error": true
}
```

Target format determines channel:
- `+1234567890` → WhatsApp
- `@username` → Telegram
- `channel:123` → Discord

## Cloud Storage

### Setup rclone

```bash
# Install
brew install rclone  # macOS
curl https://rclone.org/install.sh | sudo bash  # Linux

# Configure
rclone config
```

### Enable in Config

```json
"remote_storage": {
  "enabled": true,
  "rclone_remote": "gdrive:",
  "path": "clawdbot-backups"
}
```

## Encrypted Backups

```json
"encryption": {
  "enabled": true,
  "gpg_recipient": "[email protected]"
}
```

## Logs

All operations are logged to `~/.clawdbot/backups/update.log`:

```
[2026-01-25 20:22:48] === Update started 2026-01-25 20:22:48 ===
[2026-01-25 20:23:39] Creating backup...
[2026-01-25 20:23:39] Backup created: clawdbot-update-2026-01-25-20:22:48.tar.gz (625M)
[2026-01-25 20:23:39] Clawdbot current version: 2026.1.22
[2026-01-25 20:23:41] Starting skills update
[2026-01-25 20:23:41] === Update completed 2026-01-25 20:23:41 ===
[2026-01-25 20:23:43] Notification sent to +1234567890 via whatsapp
```

**Log retention**: Logs older than 30 days are automatically deleted.

## Retention Policy

| Type | Retention | Config |
|------|-----------|--------|
| Backups (local) | Last N backups | `backup_count: 5` |
| Backups (remote) | Last N backups | Same as local |
| Logs | 30 days | Automatic |

## Architecture (v2.0)

```
bin/
ā”œā”€ā”€ clawdbot-update-plus     # Main entry point
└── lib/
    ā”œā”€ā”€ utils.sh             # Logging, helpers
    ā”œā”€ā”€ config.sh            # Configuration
    ā”œā”€ā”€ backup.sh            # Backup functions
    ā”œā”€ā”€ restore.sh           # Restore functions
    ā”œā”€ā”€ update.sh            # Update functions
    ā”œā”€ā”€ notify.sh            # Notifications
    └── cron.sh              # Cron management
```

## Changelog

### v2.0.0
- Complete architecture rewrite
- Modular design (7 separate modules)
- Cleaner codebase (~150 lines per module vs 1000+ monolith)
- Better error handling
- Improved restore with label support
- Auto-detect notification channel from target format
- Fixed `--no-backup` flag being ignored
- Detailed logging to file with auto-purge
- Backup retention policy (local + remote)

### v1.7.0
- Smart restore with label support
- Auto-detect backup format

### v1.6.0
- Added `backup_paths` for full environment backup
- Separated backup logic from update logic

### v1.5.0
- Multi-directory support (`skills_dirs`)

### v1.4.0
- Notifications via Clawdbot messaging

### v1.3.0
- Added `check`, `diff-backups`, `install-cron` commands

## Author

Created by **hopyky**

## License

MIT

Overview

This skill provides full backup, update, and restore automation for a Clawdbot environment, covering config, workspace, and skills. It creates encrypted archives, supports cloud sync, and includes automatic rollback if updates fail, keeping your bot safe and reproducible.

How this skill works

Before any update it optionally creates a timestamped backup of configured paths and skills directories, with exclusions. Updates use git pulls per skills directory and will auto-rollback to the previous commit or restore from the backup if errors occur. Backups can be encrypted with GPG and uploaded to remote storage via rclone, and notifications are sent on success or failure.

When to use it

  • When you want automated, safe updates for production Clawdbot skills
  • Before applying bulk changes across multiple skill directories
  • When you need encrypted, versioned archives of config and workspace
  • To enable scheduled daily updates with rollback protection
  • When you want remote backup sync (Google Drive, S3, Dropbox)

Best practices

  • Enable backup_before_update and keep backup_count reasonable (e.g., 5) to limit storage
  • Use separate skills_dirs for prod and dev; set prod to update=true and dev to update=false
  • Configure exclusions for large or transient folders (node_modules, logs, media)
  • Enable GPG encryption for backups that contain secrets and use rclone for offsite copies
  • Test restore procedures periodically using --dry-run and targeted restore labels

Example use cases

  • Daily cron job that auto-backs up and updates production skills with notifications on failure
  • Create a manual full backup before performing risky configuration changes
  • Restore only the config folder after a misconfiguration without touching workspace files
  • Archive all historical skill versions and push encrypted copies to cloud storage
  • Maintain separate update policies for production and development skill sets

FAQ

How does auto-rollback work?

If an update step fails, the skill reverts the changed repositories to the previous commit and can restore the last backup archive to return the environment to a known good state.

Can backups be encrypted and stored remotely?

Yes. Enable encryption with a GPG recipient and enable remote_storage to upload backups via rclone to supported remotes like Google Drive, S3, or Dropbox.

How do notifications get delivered?

Notifications auto-detect the channel from the target format: phone numbers for WhatsApp, @user for Telegram, and channel:id for Discord; enable notifications in the config and set on_success/on_error flags.