[2.22.0] Add rclone skill and enhance feature-video command
- Add rclone skill for uploading to S3, Cloudflare R2, Backblaze B2 - Update /feature-video with better ffmpeg commands (proper scaling) - Add rclone integration for cloud uploads in feature-video - 27 agents, 20 commands, 13 skills, 2 MCP servers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
150
plugins/compound-engineering/skills/rclone/SKILL.md
Normal file
150
plugins/compound-engineering/skills/rclone/SKILL.md
Normal file
@@ -0,0 +1,150 @@
|
||||
---
|
||||
name: rclone
|
||||
description: Upload, sync, and manage files across cloud storage providers using rclone. Use when uploading files (images, videos, documents) to S3, Cloudflare R2, Backblaze B2, Google Drive, Dropbox, or any S3-compatible storage. Triggers on "upload to S3", "sync to cloud", "rclone", "backup files", "upload video/image to bucket", or requests to transfer files to remote storage.
|
||||
---
|
||||
|
||||
# rclone File Transfer Skill
|
||||
|
||||
## Setup Check (Always Run First)
|
||||
|
||||
Before any rclone operation, verify installation and configuration:
|
||||
|
||||
```bash
|
||||
# Check if rclone is installed
|
||||
command -v rclone >/dev/null 2>&1 && echo "rclone installed: $(rclone version | head -1)" || echo "NOT INSTALLED"
|
||||
|
||||
# List configured remotes
|
||||
rclone listremotes 2>/dev/null || echo "NO REMOTES CONFIGURED"
|
||||
```
|
||||
|
||||
### If rclone is NOT installed
|
||||
|
||||
Guide the user to install:
|
||||
|
||||
```bash
|
||||
# macOS
|
||||
brew install rclone
|
||||
|
||||
# Linux (script install)
|
||||
curl https://rclone.org/install.sh | sudo bash
|
||||
|
||||
# Or via package manager
|
||||
sudo apt install rclone # Debian/Ubuntu
|
||||
sudo dnf install rclone # Fedora
|
||||
```
|
||||
|
||||
### If NO remotes are configured
|
||||
|
||||
Walk the user through interactive configuration:
|
||||
|
||||
```bash
|
||||
rclone config
|
||||
```
|
||||
|
||||
**Common provider setup quick reference:**
|
||||
|
||||
| Provider | Type | Key Settings |
|
||||
|----------|------|--------------|
|
||||
| AWS S3 | `s3` | access_key_id, secret_access_key, region |
|
||||
| Cloudflare R2 | `s3` | access_key_id, secret_access_key, endpoint (account_id.r2.cloudflarestorage.com) |
|
||||
| Backblaze B2 | `b2` | account (keyID), key (applicationKey) |
|
||||
| DigitalOcean Spaces | `s3` | access_key_id, secret_access_key, endpoint (region.digitaloceanspaces.com) |
|
||||
| Google Drive | `drive` | OAuth flow (opens browser) |
|
||||
| Dropbox | `dropbox` | OAuth flow (opens browser) |
|
||||
|
||||
**Example: Configure Cloudflare R2**
|
||||
```bash
|
||||
rclone config create r2 s3 \
|
||||
provider=Cloudflare \
|
||||
access_key_id=YOUR_ACCESS_KEY \
|
||||
secret_access_key=YOUR_SECRET_KEY \
|
||||
endpoint=ACCOUNT_ID.r2.cloudflarestorage.com \
|
||||
acl=private
|
||||
```
|
||||
|
||||
**Example: Configure AWS S3**
|
||||
```bash
|
||||
rclone config create aws s3 \
|
||||
provider=AWS \
|
||||
access_key_id=YOUR_ACCESS_KEY \
|
||||
secret_access_key=YOUR_SECRET_KEY \
|
||||
region=us-east-1
|
||||
```
|
||||
|
||||
## Common Operations
|
||||
|
||||
### Upload single file
|
||||
```bash
|
||||
rclone copy /path/to/file.mp4 remote:bucket/path/ --progress
|
||||
```
|
||||
|
||||
### Upload directory
|
||||
```bash
|
||||
rclone copy /path/to/folder remote:bucket/folder/ --progress
|
||||
```
|
||||
|
||||
### Sync directory (mirror, deletes removed files)
|
||||
```bash
|
||||
rclone sync /local/path remote:bucket/path/ --progress
|
||||
```
|
||||
|
||||
### List remote contents
|
||||
```bash
|
||||
rclone ls remote:bucket/
|
||||
rclone lsd remote:bucket/ # directories only
|
||||
```
|
||||
|
||||
### Check what would be transferred (dry run)
|
||||
```bash
|
||||
rclone copy /path remote:bucket/ --dry-run
|
||||
```
|
||||
|
||||
## Useful Flags
|
||||
|
||||
| Flag | Purpose |
|
||||
|------|---------|
|
||||
| `--progress` | Show transfer progress |
|
||||
| `--dry-run` | Preview without transferring |
|
||||
| `-v` | Verbose output |
|
||||
| `--transfers=N` | Parallel transfers (default 4) |
|
||||
| `--bwlimit=RATE` | Bandwidth limit (e.g., `10M`) |
|
||||
| `--checksum` | Compare by checksum, not size/time |
|
||||
| `--exclude="*.tmp"` | Exclude patterns |
|
||||
| `--include="*.mp4"` | Include only matching |
|
||||
| `--min-size=SIZE` | Skip files smaller than SIZE |
|
||||
| `--max-size=SIZE` | Skip files larger than SIZE |
|
||||
|
||||
## Large File Uploads
|
||||
|
||||
For videos and large files, use chunked uploads:
|
||||
|
||||
```bash
|
||||
# S3 multipart upload (automatic for >200MB)
|
||||
rclone copy large_video.mp4 remote:bucket/ --s3-chunk-size=64M --progress
|
||||
|
||||
# Resume interrupted transfers
|
||||
rclone copy /path remote:bucket/ --progress --retries=5
|
||||
```
|
||||
|
||||
## Verify Upload
|
||||
|
||||
```bash
|
||||
# Check file exists and matches
|
||||
rclone check /local/file remote:bucket/file
|
||||
|
||||
# Get file info
|
||||
rclone lsl remote:bucket/path/to/file
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
```bash
|
||||
# Test connection
|
||||
rclone lsd remote:
|
||||
|
||||
# Debug connection issues
|
||||
rclone lsd remote: -vv
|
||||
|
||||
# Check config
|
||||
rclone config show remote
|
||||
```
|
||||
60
plugins/compound-engineering/skills/rclone/scripts/check_setup.sh
Executable file
60
plugins/compound-engineering/skills/rclone/scripts/check_setup.sh
Executable file
@@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
# rclone setup checker - verifies installation and configuration
|
||||
|
||||
set -e
|
||||
|
||||
echo "=== rclone Setup Check ==="
|
||||
echo
|
||||
|
||||
# Check if rclone is installed
|
||||
if command -v rclone >/dev/null 2>&1; then
|
||||
echo "✓ rclone installed"
|
||||
rclone version | head -1
|
||||
echo
|
||||
else
|
||||
echo "✗ rclone NOT INSTALLED"
|
||||
echo
|
||||
echo "Install with:"
|
||||
echo " macOS: brew install rclone"
|
||||
echo " Linux: curl https://rclone.org/install.sh | sudo bash"
|
||||
echo " or: sudo apt install rclone"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for configured remotes
|
||||
REMOTES=$(rclone listremotes 2>/dev/null || true)
|
||||
|
||||
if [ -z "$REMOTES" ]; then
|
||||
echo "✗ No remotes configured"
|
||||
echo
|
||||
echo "Run 'rclone config' to set up a remote, or use:"
|
||||
echo
|
||||
echo " # Cloudflare R2"
|
||||
echo " rclone config create r2 s3 provider=Cloudflare \\"
|
||||
echo " access_key_id=KEY secret_access_key=SECRET \\"
|
||||
echo " endpoint=ACCOUNT_ID.r2.cloudflarestorage.com"
|
||||
echo
|
||||
echo " # AWS S3"
|
||||
echo " rclone config create aws s3 provider=AWS \\"
|
||||
echo " access_key_id=KEY secret_access_key=SECRET region=us-east-1"
|
||||
echo
|
||||
exit 1
|
||||
else
|
||||
echo "✓ Configured remotes:"
|
||||
echo "$REMOTES" | sed 's/^/ /'
|
||||
echo
|
||||
fi
|
||||
|
||||
# Test connectivity for each remote
|
||||
echo "Testing remote connectivity..."
|
||||
for remote in $REMOTES; do
|
||||
remote_name="${remote%:}"
|
||||
if rclone lsd "$remote" >/dev/null 2>&1; then
|
||||
echo " ✓ $remote_name - connected"
|
||||
else
|
||||
echo " ✗ $remote_name - connection failed (check credentials)"
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo "=== Setup Complete ==="
|
||||
Reference in New Issue
Block a user