skills/openclaw-backup/SKILL.md
Encrypted backup and restore for OpenClaw Agent workspace files (SOUL.md, MEMORY.md, IDENTITY.md, AGENTS.md, TOOLS.md). Uses tar + openssl (AES-256-CBC) encryption and soul-upload.com API. Auto-generates a new random password for each backup (DO NOT reuse passwords). Use when the user needs to: (1) Back up or upload agent workspace files, (2) Restore or download a previous backup, (3) Delete a backup from remote storage, or (4) Manage encrypted agent persistence.
npx skillsauth add gaos6e/myopenclaw openclaw-backupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Automated encrypted backup and restore for OpenClaw Agent workspace files using Claude Code.
This skill provides three core functions:
All backups use AES-256-CBC encryption (via openssl) with auto-generated random passwords. Each backup gets a unique password that is stored in the recovery file.
Before executing backup operations, ensure the following tools are installed:
pip install requests)If the user doesn't specify files, the following OpenClaw workspace files are backed up by default:
SOUL.md - Agent core identity and goalsMEMORY.md - Agent memory and contextIDENTITY.md - Agent identity definitionAGENTS.md - Agent configurationTOOLS.md - Tool configurationExecute when the user requests to backup workspace files:
Collect File List
SOUL.md MEMORY.md IDENTITY.md AGENTS.md TOOLS.mdExecute Backup Script (Password Auto-Generated)
scripts/backup.py in Skill directory)python3 scripts/backup.py upload \
--files "SOUL.md MEMORY.md IDENTITY.md"
Process Response
{
"backupId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"downloadUrl": "https://soul-upload.com/backup/...",
"sizeBytes": 12345,
"sha256": "abc123...",
"password": "auto-generated-32-char-random-password"
}
Save Recovery Information
.openclaw-backup-recovery.txtBackup ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Password: auto-generated-32-char-random-password
Download URL: https://soul-upload.com/backup/...
Created: 2024-01-15 10:30:00 UTC
Size: 12.05 KB
SHA256: abc123...
Files: SOUL.md, MEMORY.md, IDENTITY.md
---
Display Success Message
.openclaw-backup-recovery.txt| Error Scenario | Detection | User Guidance | |----------------|-----------|---------------| | Files not found | Script returns error: "Files not found: ..." | List missing files, ask if user wants to continue backing up other files | | Files too large | Script returns error: "Backup size ... exceeds limit ..." | Show actual size, suggest removing large files or splitting backup | | Network error | Script returns error: "Network error: ..." | Suggest checking network connection, ask if retry is wanted | | 413 Too Large | Script returns error: "File too large (413 Payload Too Large)" | Indicate 20MB limit exceeded, suggest reducing backup size | | Encryption failed | Script returns error: "openssl encryption failed: ..." | Check if openssl is properly installed |
User: Back up my SOUL.md and MEMORY.md
Claude: I'll backup these files with auto-generated encryption.
[Executes backup script]
Backup complete!
- Backup ID: 3f8a2b1c-...
- Size: 45.2 KB
- Password: Auto-generated (32 chars)
- Recovery info saved to .openclaw-backup-recovery.txt
IMPORTANT: Keep .openclaw-backup-recovery.txt safe!
It contains the password needed to restore this backup.
Execute when user requests to restore backup:
Get Backup ID and Password
.openclaw-backup-recovery.txtDetermine Output Directory
.)Execute Restore Script
python3 scripts/backup.py download \
--backup-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
--password "password-from-recovery-file" \
--output-dir "."
Process Response
{
"success": true,
"extractedFiles": ["SOUL.md", "MEMORY.md", "IDENTITY.md"],
"outputDir": "/path/to/output"
}
Verify Restoration Result
Display Success Message
| Error Scenario | Detection | User Guidance |
|----------------|-----------|---------------|
| Backup ID doesn't exist | Script returns error: "Backup not found: ..." | Check if Backup ID is correct, may have been deleted |
| Recovery file missing | .openclaw-backup-recovery.txt not found | Cannot restore - password is unknown without recovery file |
| Wrong password | Script returns error: "Decryption failed - wrong password ..." | Recovery file may be corrupted or from different backup |
| Network error | Script returns error: "Network error: ..." | Suggest checking network connection, ask if retry is wanted |
| Extraction failed | Script returns error: "tar extraction failed: ..." | File may be corrupted, try downloading again |
User: Restore my last backup
Claude: I found the most recent backup in .openclaw-backup-recovery.txt
- Backup ID: 3f8a2b1c-...
- Created: 2024-01-15 10:30:00 UTC
Downloading and decrypting backup...
Restoration complete! Extracted the following files:
- SOUL.md
- MEMORY.md
- IDENTITY.md
Files saved to current directory, please verify content is correct.
Execute when user requests to delete remote backup:
Get Backup ID
.openclaw-backup-recovery.txtRequest Confirmation
Execute Delete Script
python3 scripts/backup.py delete \
--backup-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Process Response
{
"success": true,
"backupId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
Update Recovery Info File
.openclaw-backup-recovery.txtDisplay Success Message
| Error Scenario | Detection | User Guidance | |----------------|-----------|---------------| | Backup ID doesn't exist | Script returns error: "Backup not found: ..." | Backup may have been deleted or ID is incorrect | | Network error | Script returns error: "Network error: ..." | Suggest checking network connection, ask if retry is wanted | | User cancels | User declines confirmation | Operation cancelled, backup not deleted |
User: Delete my backup
Claude: I found the following backups in .openclaw-backup-recovery.txt:
1. Backup ID: 3f8a2b1c-... (2024-01-15 10:30:00)
2. Backup ID: 7b2c9d4e-... (2024-01-14 08:20:00)
Which backup would you like to delete? (1 or 2)
User: 1
Claude: Warning: This will permanently delete backup 3f8a2b1c-...
This action cannot be undone. Confirm deletion? (yes/no)
User: yes
Claude: Backup deleted.
- Backup ID: 3f8a2b1c-...
To backup again, create a new backup with a new auto-generated password.
.openclaw-backup-recovery.txt (necessary for decryption).openclaw-backup-recovery.txt (workspace root directory).gitignore if sensitivesoul-upload.com Backup API:
| Endpoint | Method | Function | Response |
|----------|--------|----------|----------|
| /backup | POST | Upload backup | {backupId, downloadUrl, sizeBytes, sha256} |
| /backup/:backupId | GET | Download backup | 302 redirect to R2 storage URL |
| /backup/:backupId | DELETE | Delete backup | {success: true, backupId} |
Common Status Codes:
Problem: Script error "Missing required tools: tar, openssl"
Solution:
brew install openssl (tar built-in)sudo apt-get install tar openssltar --version and openssl versionProblem: Script error "Error: 'requests' library not found"
Solution:
pip install requests
# or
pip3 install requests
Problem: Cannot restore backup - recovery file missing
Solution:
Problem: Timeout during upload/download
Solution:
Problem: Overwriting existing files during restore
Solution:
User: Back up my workspace files
Claude: [Execute upload workflow using default file list]
[Auto-generate password and save to recovery file]
User: Back up only SOUL.md and MEMORY.md
Claude: [Execute upload workflow, backup only specified files]
[Auto-generate password and save to recovery file]
User: Restore my last backup
Claude: [Read latest Backup ID and password from .openclaw-backup-recovery.txt]
[Execute download workflow]
User: Restore backup 3f8a2b1c-1234-5678-90ab-cdef12345678
Claude: [Read password for this Backup ID from recovery file]
[Execute download workflow]
User: Delete my old backups
Claude: [Show available backup list from recovery file]
[User selects backup to delete]
[Execute delete workflow]
[Remove entry from recovery file]
.openclaw-backup-recovery.txt safe and backed up separatelyScript file is located in Skill directory at scripts/backup.py.
When executing Bash commands, ensure correct relative or absolute path is used. Usually:
python3 scripts/backup.py ...cd to Skill directory firstVersion: 2.0.0 Author: Claude Code License: MIT Password Policy: Auto-generated unique password per backup (NEW in v2.0.0)
development
Connect to 100+ APIs (Google Workspace, Microsoft 365, GitHub, Notion, Slack, Airtable, HubSpot, etc.) with managed OAuth. Use this skill when users want to interact with external services. Security: The MATON_API_KEY authenticates with Maton.ai but grants NO access to third-party services by itself. Each service requires explicit OAuth authorization by the user through Maton's connect flow. Access is strictly scoped to connections the user has authorized. Provided by Maton (https://maton.ai).
tools
# SKILL.md # Web Automation Service 自动化 Web 任务执行服务。 ## 能力 - 表单填写 - 数据抓取 - 定时任务 - 自动化测试 - API 测试 - 网站监控 - 自动化提交 ## 使用方式 ```bash # 自动化表单填写 openclaw run web-automation --url "https://example.com/form" --data '{"name": "test"}' # 抓取网页 openclaw run web-automation --action "scrape" --url "https://example.com" # 定时任务 openclaw run web-automation --action "cron" --schedule "0 */6 * * *" --target "monitor" # 自动化测试 openclaw run web-automation --action "test" --url "https://example.com" ``` ## 收费模
testing
This skill should be used when the user asks to "生成 AI 大事日报", "整理 AI 日报", "汇总 AI 新闻", "总结 AI 行业动态", "做 AI daily brief", or wants a recurring AI news summary with official sources first.
tools
A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.