💾 Publish
v1.0.12Backup and restore your OpenClaw workspace to GitHub
详细分析 ▾
运行时依赖
版本
- Expanded backup scope to include project code from `$OPENCLAW/workspace/projects/`, excluding credentials. - Updated documentation to clarify excluded files, especially personal/workspace-specific files like AGENTS.md and configuration data. - Removed `scripts/test.sh` from the repository. - Minor updates to `README.md`, `SKILL.md`, and `sync.sh` to align with new backup/exclusion rules.
安装命令 点击复制
技能文档
Backup and restore your OpenClaw workspace to GitHub.
⚠️ Security First
This skill is designed with defense-in-depth. Please read carefully.
What It Backs Up
| Category | Files | Status |
|---|---|---|
| Skills | All from $OPENCLAW/skills/ | See notes below |
| Scripts | All from $OPENCLAW/scripts/ | See notes below |
| Project Code | All from $OPENCLAW/workspace/projects/ | Excluding credentials |
What It Does NOT Back Up (Personal/Workspace-Specific)
These files are explicitly excluded as they are personal or workspace-specific:
- AGENTS.md, SOUL.md, USER.md, TOOLS.md, IDENTITY.md, HEARTBEAT.md — Personal agent configuration
- SITES.md — May contain API keys/secrets
- MEMORY.md — Contains sensitive conversation data
- Any file in
credentials/,.env,node_modules/
What It Excludes
- ❌ API keys and tokens (any format)
- ❌ Credentials folder
- ❌ .env files
- ❌ node_modules
- ❌ .git directories
- ❌ Nested git repositories
- ❌ Files containing secrets (detected by regex)
Secret Detection
ClawSync scans for these secret patterns:
- GitHub tokens (
ghp_) - OpenAI keys (
sk-) - Google API keys (
AIza) - Slack tokens (
xoxb-,xoxp-) - AWS access keys (
AKIA) - JWTs and bearer tokens
- Private keys (
-----BEGIN PRIVATE KEY-----) - High-entropy strings
If any are detected → backup aborts before push.
Environment Variables (Required)
export GITHUB_TOKEN="ghp_xxxx"
export BACKUP_REPO="username/repo-name"
export OPENCLAW_WORKSPACE="${HOME}/openclaw-workspace"
🔐 Recommended: Fine-Grained PAT
For least privilege, use a GitHub Fine-Grained PAT:
- Go to GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens
- Create new token with:
$BACKUP_REPO
- Permissions: Contents: Write
- Use this token as
GITHUB_TOKEN
Quick Start
git clone https://github.com/your-username/clawsync.git ~/clawsync
cp .env.example .env
# Edit .env with your values
bash sync.sh
Features
- Pre-flight Check: Validates required env vars before running
- Strict Whitelist: Only copies explicitly allowed files
- Deny List: Filters out .git, credentials, node_modules
- Secret Scrubbing: Detects 100+ secret patterns, aborts if found
- Safe Restore: Requires --force or confirmation before overwriting
Safe Restore
# With confirmation (default)
bash restore.sh# Force mode (no prompt)
bash restore.sh --force
Auth
Uses gh CLI if available, falls back to token auth.
Files
sync.sh- Backup script (ShellCheck compliant)restore.sh- Restore script.env_example- Template.gitignore- Blocks secrets
Development & Release
Running Tests Locally
# Set up test workspace
mkdir -p /tmp/test-workspace
echo "test" > /tmp/test-workspace/AGENTS.md
echo "test" > /tmp/test-workspace/USER.md
mkdir -p /tmp/test-workspace/skills /tmp/test-workspace/scripts# Run integration test
export BACKUP_REPO="test/repo"
export OPENCLAW_WORKSPACE="/tmp/test-workspace"
export GITHUB_TOKEN="dummy"
cd /tmp && rm -rf test-backup-repo && mkdir test-backup-repo
cd test-backup-repo && git init
cp ~/clawsync/sync.sh .
bash sync.sh
Testing Secret Detection
# Create a test file with a fake secret
echo "My API key is ghp_test1234567890abcdefghijklmnopqrstuvwxyz" > /tmp/test-workspace/AGENTS.md# Run sync - should abort with error
bash sync.sh
# Expected output: "Error: Potential secret detected..."
Security Audit Test (Proves Non-Staged Detection)
This test verifies the script catches secrets BEFORE they are staged:
# Set up test workspace
export BACKUP_REPO="test/repo"
export OPENCLAW_WORKSPACE="/tmp/test-workspace"
export GITHUB_TOKEN="dummy"# Create workspace with secret in a non-staged file
mkdir -p /tmp/test-workspace
echo "Real API key: sk-realapikey12345678901234567890" > /tmp/test-workspace/AGENTS.md
# Copy sync.sh to temp backup dir
cd /tmp && rm -rf audit-test && mkdir audit-test && cd audit-test
git init
cp ~/clawsync/sync.sh .
# Run sync - should FAIL (catches non-staged secret)
bash sync.sh
# Expected: "Error: Potential secret detected in backup directory!"
# This proves the pre-git-add scanning works
Publishing to ClawHub
The CI runs on every push and pull request:
- ShellCheck - Lints bash scripts
- Integration test - Verifies backup/restore works
To publish a new version:
git add -A
git commit -m "Release v1.0.x"
git tag v1.0.x
git push origin master --tags
CI will automatically:
- Run tests
- If tests pass and tag starts with
v, publish to ClawHub
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制