Agent skill · software engineering · sundial-org
send-me-my-files-r2-upload-with-short-lived-signed-urls
Upload files to Cloudflare R2, AWS S3, or any S3-compatible storage and generate secure presigned download links with configurable expiration.
Why this skill is useful
Adds a TypeScript-based CLI tool for uploading files to S3-compatible storage with presigned URLs, which includes specific commands and configurations not commonly found in public documentation.
What it needs
Requires typescript installed locally. Requires aws, cloudflare account access. About 2k tokens when loaded. Last updated 2026-03-07. 639 stars on the source repository.
What this skill does
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 R2UPLOADCONFIG env var): Cloudflare R2 Setup 1. Go to Cloudflare Dashboard → R2 2. Create a bucket 3. Go to R2 API Tokens: https://dash.cloudflare.com/<ACCOUNTID>/r2/api-tokens 4. Create a new API token Important: Apply to specific bucket (select your bucket) Permissions: Object Read & Write 5. Copy the Access Key ID and Secret Access Key 6. Use endpoint format: https://<accountid>.r2.cloudflarestorage.com 7. Set region: auto AWS S3 Setup Usage Upload a file Upload with custom path Upload to specific bucket Custom expiration (default: 5 minutes) Public URL (no signature) Tools r2upload - Upload file and get presigned URL r2list - List recent uploads r2delete - Delete a file Environment Variables R2UPLOADCONFIG - Path to config file (default: ~/.r2-upload.yml) R2DEFAULTBUCKET - Override default bucket R2DEFAULTEXPIRES - Default expiration in seconds (default: 300 = 5 minutes) Notes Uploaded files are stored with their original filename unless --key is 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
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills sundial-org/send-me-my-files-r2-upload-with-short-lived-signed-urls