Skill: christopher-schulze/claw2claw-filetransfer-v2 (version 1.0.0)

--- name: claw2claw-filetransfer description: Cross-platform file transfer between OpenClaw agents via rsync over SSH. From Claws for Claws - send files uncomplicated without getting drizzled by hot butter. Use when user wants to sync, backup, or transfer files between agents on different machines. homepage: https://github.com/claw2claw/filetransfer metadata: clawdbot: emoji: "📦" requires: bins: - rsync - ssh install: - id: rsync kind: apt packages: - rsync - openssh-client label: Install rsync + SSH --- # claw2claw-filetransfer **File transfer so smooth, even a lobster can do it.** 🦞 Send files between OpenClaw agents without the drama. rsync over SSH - delta transfers, compression, progress bars. Linux, macOS, Windows - we got you covered. --- ## When to Trigger This Skill Use this skill when user wants to: - Transfer files between two OpenClaw agents - Sync project directories bidirectionally - Backup files to a remote agent - Pull logs/data from remote agent - Set up SSH connection between agents - Move bits from A to B without crying --- ## Quick Start ```bash # 1. Set up remote agent (one-time) claw2claw setup 192.168.1.100 --user root # 2. Send files like a pro claw2claw send /backup.tar.gz # 3. Get files back claw2claw get /remote/logs.txt # 4. Sync entire directories claw2claw sync-to-remote ./my-project/ ``` --- ## Commands | Command | Description | |---------|-------------| | `setup <host>` | Configure remote agent | | `send <file>` | Upload to remote | | `get <file>` | Download from remote | | `sync-to-remote <dir>` | Push directory to remote | | `sync-from-remote <dir>` | Pull directory from remote | | `ls <path>` | List remote files | | `status` | Show connection status | --- ## Options | Option | Description | |--------|-------------| | `-n, --dry-run` | Preview without executing | | `--compress` | Enable compression (default) | | `--no-compress` | Disable compression | | `--debug` | Enable debug output | --- ## Environment Variables ```bash REMOTE_HOST="192.168.1.100" # Remote IP/hostname REMOTE_USER="root" # SSH user REMOTE_PORT="22" # SSH port SSH_KEY="/path/to/key" # Custom SSH key RSYNC_BWLIMIT=1000 # KB/s limit ``` --- ## Why This Skill? ### Features - **Delta transfers** - Only sends changed bytes - **Compression** - Gzip on the wire - **Progress bars** - Watch it go brrr - **Bidirectional** - Push or pull - **Cross-platform** - Linux, macOS, Windows - **Key-based auth** - No passwords ### Use Cases - Backup server to local - Sync code between agents - Pull logs for analysis - Deploy static sites - Share datasets --- ## Installation ### Linux ```bash # Pre-installed on most distros sudo apt install rsync ``` ### macOS ```bash brew install rsync ``` ### Windows ```bash # Option A: Git Bash (recommended) # Download from https://git-scm.com # Option B: cwrsync # Download from https://www.itefix.net/cwrsync # Option C: WSL wsl --install ``` --- ## Platform-Specific Notes ### Git Bash / MSYS2 - Uses Unix-style paths: `/c/Users/...` - rsync usually pre-installed - Works out of the box ### Windows Command Prompt / PowerShell - Use full paths or forward slashes: `C:/Users/...` - Or use cwrsync ### WSL - Detected as Linux, works perfectly - Can communicate with Windows filesystem ### Cygwin - Install via Cygwin setup - Path: `/cygdrive/c/Users/...` --- ## Performance Tips ### Compression ```bash # On (default) - for text files claw2claw send /logs/*.log # Off - for already compressed files claw2claw send /backup.tar.gz --no-compress ``` ### Bandwidth ```bash # Limit to 500 KB/s RSYNC_BWLIMIT=500 claw2claw send /huge-file.tar.gz ``` ### Large Files ```bash # rsync auto-resumes interrupted transfers # Just run same command again claw2claw send /huge-file.tar.gz ``` ### Selective Sync ```bash # Only sync specific patterns # Use --include and --exclude in rsync manually # Or sync specific subdirectories claw2claw sync-to-remote ./src/ ``` --- ## Testing Connection ### Quick Test ```bash claw2claw status ``` ### Manual SSH Test ```bash ssh -o ConnectTimeout=5 user@host "echo OK" ``` ### Test File Transfer ```bash # Small test file first echo "test" > /tmp/test.txt claw2claw send /tmp/test.txt /tmp/ claw2claw get /tmp/test.txt /tmp/ rm /tmp/test.txt ``` --- ## Troubleshooting ### "rsync: command not found" ```bash # Linux sudo apt install rsync # macOS brew install rsync # Windows # Install Git Bash or cwrsync ``` ### "Permission denied" ```bash # Re-run setup to add SSH key claw2claw setup <host> --user <user> ``` ### "Connection timed out" ```bash # Check host reachable ping <host> # Check port open nc -zv <host> 22 ``` --- ## Examples ### Daily Backup ```bash claw2claw send /backups/daily-$(date +%Y%m%d).tar.gz /backups/ ``` ### Project Sync ```bash # Morning claw2claw sync-from-remote /workspace/project/ # Evening claw2claw sync-to-remote /workspace/project/ ``` ### Log Collection ```bash claw2claw get /var/log/syslog ./logs/ ``` --- ## Security - SSH key-based auth only - Keys: `~/.ssh/` (mode 700) - Config: `~/.claw2claw.conf` (mode 600) - No passwords in scripts --- ## Related Skills Works well with: - `blogwatcher` - Sync RSS feeds between agents - `github` - Sync repositories after commits - `playwright-scraper-skill` - Transfer scraped data - Any skill that needs to share files --- ## Uninstall ```bash rm /usr/local/bin/claw2claw rm ~/.claw2claw.conf rm -rf ~/.claw2claw/ ``` --- **Made with 🦞🦞** *From Claws for Claws. Transfer files uncomplicated.*

path: references/commands.md
content: # Command Reference

Detailed documentation for all claw2claw commands.

---

## setup

Configure connection to a remote OpenClaw agent.

```bash
claw2claw setup <remote-host> [user] [port]
```

### Arguments

| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `<remote-host>` | Yes | - | IP or hostname |
| `[user]` | No | `root` | SSH username |
| `[port]` | No | `22` | SSH port |

### Examples

```bash
claw2claw setup 192.168.1.100
claw2claw setup 192.168.1.100 admin
claw2claw setup 192.168.1.100 admin 2222
claw2claw setup myserver.example.com
```

### What Happens

1. Tests SSH connectivity
2. Adds SSH key to remote if needed
3. Saves config to `~/.claw2claw.conf`

---

## send

Upload file to remote agent.

```bash
claw2claw send <source> [destination]
```

### Arguments

| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `<source>` | Yes | - | Local file/directory |
| `[destination]` | No | `/tmp/` | Remote path |

### Examples

```bash
claw2claw send /backup.tar.gz
claw2claw send /backup.tar.gz /backups/
claw2claw send ./my-folder/
claw2claw send /huge-file.tar.gz --dry-run
```

---

## get

Download file from remote agent.

```bash
claw2claw get <remote-source> [local-destination]
```

### Arguments

| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `<remote-source>` | Yes | - | Remote file path |
| `[local-destination]` | No | `.` | Local path |

### Examples

```bash
claw2claw get /var/log/syslog
claw2claw get /var/log/syslog ./logs/
claw2claw get /backups/daily/ ./
```

---

## sync-to-remote

Mirror local directory to remote. **Warning: Deletes remote files not in local.**

```bash
claw2claw sync-to-remote <local-directory> [remote-destination]
```

### Arguments

| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `<local-directory>` | Yes | - | Local dir to sync |
| `[remote-destination]` | No | basename | Remote dir |

### Examples

```bash
claw2claw sync-to-remote ./project/
claw2claw sync-to-remote ./project/ /workspace/project/
claw2claw sync-to-remote ./project/ --dry-run
```

---

## sync-from-remote

Mirror remote directory to local. **Warning: Deletes local files not in remote.**

```bash
claw2claw sync-from-remote <remote-directory> [local-destination]
```

### Arguments

| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `<remote-directory>` | Yes | - | Remote dir |
| `[local-destination]` | No | `.` | Local path |

### Examples

```bash
claw2claw sync-from-remote /workspace/
claw2claw sync-from-remote /workspace/project/ ./local/
```

---

## ls

List files on remote.

```bash
claw2claw ls [path]
```

### Examples

```bash
claw2claw ls
claw2claw ls /var/log/
```

---

## status

Show connection status and diagnostics.

```bash
claw2claw status
```

Shows: platform, config, SSH key, connection test, requirements

---

## Options

### -n, --dry-run

Preview without executing.

```bash
claw2claw send /big-file.tar.gz --dry-run
```

### --compress / --no-compress

Toggle compression.

```bash
claw2claw send /video.mp4 --no-compress
```

### --debug

Enable debug output.

```bash
claw2claw send /file.txt --debug
```

---

## Exit Codes

| Code | Meaning |
|------|---------|
| 0 | Success |
| 1 | Error |
| 2 | Invalid args |
| 130 | Interrupted |


path: references/examples.md
content: # Real-World Examples

Practical examples for common workflows.

---

## Server Backup

### Full Backup Script
```bash
#!/bin/bash
DATE=$(date +%Y%m%d-%H%M%S)

# Create archive
tar -czf /tmp/backup-$DATE.tar.gz -C /var/www html

# Upload
claw2claw send /tmp/backup-$DATE.tar.gz /backups/

# Cleanup
rm /tmp/backup-$DATE.tar.gz
```

### Add to Cron
```bash
crontab -e
# Add: 0 2 * * * /path/to/backup-script.sh
```

---

## Development Sync

### Morning: Get Latest
```bash
claw2claw sync-from-remote /workspace/myapp/
# Edit code...
```

### Evening: Push Changes
```bash
claw2claw sync-to-remote /workspace/myapp/
```

---

## Log Collection

```bash
# Get syslog
claw2claw get /var/log/syslog ./logs/

# Get specific logs
claw2claw get /var/log/nginx/access.log.1 ./logs/

# Get entire log directory
claw2claw sync-from-remote /var/log/nginx/ ./logs/nginx/
```

---

## Database Transfer

### Export & Send
```bash
# Source: Create dump
mysqldump -u root -p mydb > /tmp/mydb.sql

# Send to remote
claw2claw send /tmp/mydb.sql /backups/
```

### Sync Backup Directory
```bash
claw2claw sync-to-remote /backups/mysql/
```

---

## Multi-Agent Setup

**Agent A:**
```bash
claw2claw setup <agent-b-ip> --user root
```

**Agent B:**
```bash
claw2claw setup <agent-a-ip> --user root
```

Now both can initiate transfers!

---

## Bandwidth Management

```bash
# Limit single transfer
RSYNC_BWLIMIT=500 claw2claw send /large-file.tar.gz

# Export for multiple transfers
export RSYNC_BWLIMIT=500
claw2claw send /file1.tar.gz
claw2claw send /file2.tar.gz
```

---

## Platform Examples

### Linux to Linux
```bash
claw2claw send /backup.tar.gz /backups/
```

### Windows (Git Bash) to Linux
```bash
claw2claw send /c/Users/Admin/Documents/file.txt /tmp/
# or
claw2claw send C:/Users/Admin/Documents/file.txt /tmp/
```

### Linux to Windows
```bash
claw2claw send /workspace/data.csv C:/Users/Admin/Documents/
```

### macOS to Linux
```bash
claw2claw sync-to-remote /Users/admin/project/
```

---

## Emergency Recovery

```bash
# Grab everything before decommission
claw2claw sync-from-remote /home/ ./rescued-home/
claw2claw sync-from-remote /var/log/ ./rescued-logs/
claw2claw get /etc/nginx/ ./rescued-etc/nginx/
```

---

## Selective Transfer

```bash
# Only specific file types (workaround)
mkdir /tmp/js-files
cp $(find ./src -name "*.js") /tmp/js-files/
claw2claw send /tmp/js-files/ /remote/src/
rm -rf /tmp/js-files
```

---

## Testing

### Dry Run First
```bash
# Always test with dry-run for large transfers
claw2claw sync-to-remote ./project/ --dry-run
```

### Small Test File
```bash
echo "test" > /tmp/test.txt
claw2claw send /tmp/test.txt /tmp/
claw2claw get /tmp/test.txt /tmp/
rm /tmp/test.txt
```

### Connection Test
```bash
claw2claw status
# or
ssh -o ConnectTimeout=5 user@host "echo OK"
```

---

## Resume Interrupted

```bash
# Just run again - rsync auto-resumes
claw2claw send /huge-file.tar.gz /remote/

# If really stuck, delete partial and retry
ssh user@host "rm /remote/huge-file.tar.gz.part"
claw2claw send /huge-file.tar.gz /remote/
```


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: suspicious (HIGH)