Agent Skills
› zebbern/claude-code-guide
› r2-upload
r2-upload
GitHub支持上传文件至 Cloudflare R2、AWS S3 等兼容存储,并生成带过期时间的预签名下载链接。提供多桶配置及文件管理工具。
Trigger Scenarios
需要上传文件到云存储
请求生成临时分享链接或预签名 URL
提及 R2、S3、MinIO 或文件过期链接
Install
npx skills add zebbern/claude-code-guide --skill r2-upload -g -y
SKILL.md
Frontmatter
{
"name": "r2-upload",
"summary": "TypeScript-based MCP skill for uploading files to cloud storage (R2, S3, MinIO) with secure, temporary download links. Features multi-bucket support, interactive onboarding, and 5-minute default expiration.",
"description": "Upload files to Cloudflare R2, AWS S3, or any S3-compatible storage (like MinIO) and generate secure, time-limited presigned download links with configurable expiration, typically set to 5 minutes. Use when the user needs to upload a file to cloud storage and get a shareable link, or mentions R2, S3, presigned URLs, temporary links, or file uploads with expiration."
}
Send Me My Files - R2 Upload with Short Lived Signed URLs
Upload files to Cloudflare R2 or any S3-compatible storage and generate presigned download links.
Features
- Upload files to R2/S3 buckets
- Generate presigned download URLs (configurable expiration)
- Support for any S3-compatible storage (R2, AWS S3, MinIO, etc.)
- Multiple bucket configurations
- Automatic content-type detection
Configuration
Create ~/.r2-upload.yml (or set R2_UPLOAD_CONFIG env var):
# Default bucket (used when no bucket specified)
default: my-bucket
# Bucket configurations
buckets:
my-bucket:
endpoint: https://abc123.r2.cloudflarestorage.com
access_key_id: your_access_key
secret_access_key: your_secret_key
bucket_name: my-bucket
public_url: https://files.example.com # Optional: custom domain
region: auto # For R2, use "auto"
# Additional buckets
personal:
endpoint: https://xyz789.r2.cloudflarestorage.com
access_key_id: ...
secret_access_key: ...
bucket_name: personal-files
region: auto
Cloudflare R2 Setup
- Go to Cloudflare Dashboard → R2
- Create a bucket
- Go to R2 API Tokens:
https://dash.cloudflare.com/<ACCOUNT_ID>/r2/api-tokens - Create a new API token
- Important: Apply to specific bucket (select your bucket)
- Permissions: Object Read & Write
- Copy the Access Key ID and Secret Access Key
- Use endpoint format:
https://<account_id>.r2.cloudflarestorage.com - Set
region: auto
AWS S3 Setup
aws-bucket:
endpoint: https://s3.us-east-1.amazonaws.com
access_key_id: ...
secret_access_key: ...
bucket_name: my-aws-bucket
region: us-east-1
Setup
This skill is a stdio MCP server, not a shell command (there is no r2-upload binary). Build it once and register it with Claude Code:
cd "${CLAUDE_SKILL_DIR}" && npm install && npm run build
claude mcp add r2-upload -- node "${CLAUDE_SKILL_DIR}/dist/index.js"
Run npm run onboard in the same folder to create ~/.r2-upload.yml interactively.
Tools
r2_upload- Uploadfile_pathand return a presigned URL. Optional:key(custom object path),bucket,expires(300,24h,1d; default5m),public(unsigned URL, needs a public bucket),content_typer2_list- List files in a bucket (bucket,prefix,max_keys)r2_delete- Delete a file bykeyr2_generate_url- Generate a new presigned URL for an existingkey
Environment Variables
R2_UPLOAD_CONFIG- Path to config file (default:~/.r2-upload.yml)R2_DEFAULT_BUCKET- Override default bucket
Notes
- Uploaded files are stored with their original filename unless
keyis specified - Automatic UUID prefix added to prevent collisions (e.g.,
abc123/file.pdf) - Content-Type automatically detected from file extension
- Presigned URLs expire after the configured duration
Version History
-
2b927dd
Current 2026-11-03 00:58
修复损坏的引用,移除不可再分发的文件,更新 r2-upload 说明以修正从其他平台复制的错误指令。
- 1ed99ef 2026-07-25 05:53


