Agent skill

R2 Upload

by zebbern in zebbern/claude-code-guide

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.

MITAuto-check passedBackend & APIs

Install R2 Upload

skills CLI
$ npx skills add zebbern/claude-code-guide --skill r2-upload -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install zebbern/claude-code-guide r2-upload --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/zebbern/claude-code-guide.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/r2-upload .claude/skills/r2-upload && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
r2-upload
GitHub stars
4.7k
Used in
1 other repo
Token cost
~886 tokens
SKILL.md length
215 words
Files
11
Skills in repo
46
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 7 steps: Go to Cloudflare Dashboard → R2 → Create a bucket → Go to R2 API Tokens:… → …
  • The user needs to upload a file to cloud storage and get a shareable link
  • SKILL.md covers Features, Configuration, Usage and Tools, plus 2 more sections
  • Runs TypeScript scripts from its folder; reaches dash.cloudflare.com and abc123.r2.cloudflarestorage.com

What it does

R2 Upload is an agent skill from zebbern/claude-code-guide. 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.

Its SKILL.md is about 890 tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files (for example `CLAWDHUB.md`, `README.md` and `SECURITY.md`).

It sits in Backend & APIs, covering File uploads and storage. It works with Amazon S3 and Cloudflare R2. The repository describes itself as: Claude Code Guide - Setup, Commands, workflows, agents, skills & tips-n-tricks from beginner to power user! The licence is MIT.

When your agent uses it

  • The user needs to upload a file to cloud storage and get a shareable link
  • Temporary links
  • File uploads with expiration

Example prompts

  • “/r2-upload”

Requirements

  • Node.js

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Go to Cloudflare Dashboard → R2
  2. Create a bucket
  3. Go to R2 API Tokens: https://dash.cloudflare.com//r2/api-tokens
  4. Create a new API token
  5. Copy the Access Key ID and Secret Access Key
  6. Use endpoint format: https://.r2.cloudflarestorage.com
  7. Set region: auto

What it can do on your machine

Read from SKILL.md and the folder at commit e62775c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (TypeScript), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • dash.cloudflare.com
    • abc123.r2.cloudflarestorage.com
    • xyz789.r2.cloudflarestorage.com
    • s3.us-east-1.amazonaws.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

R2 Upload loads about 886 tokens when it runs. Until then it costs about 94 tokens; SKILL.md has 215 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~94
When it runs · the whole SKILL.md, loaded when a task matches
~886

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from zebbern/claude-code-guide at commit e62775c, republished under its MIT licence (© zebbern). 215 words, ~886 tokens.

Download SKILL.mdSave it as .claude/skills/r2-upload/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
r2-upload
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.
summary
TypeScript-based MCP skill for uploading files to cloud storage (R2, S3, MinIO) with secure, temporary download links. Features multi-bucket support…

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):

yaml
# 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
  1. Go to Cloudflare Dashboard → R2
  2. Create a bucket
  3. Go to R2 API Tokens: https://dash.cloudflare.com/<ACCOUNT_ID>/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://<account_id>.r2.cloudflarestorage.com
  7. Set region: auto
AWS S3 Setup
yaml
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

Usage

Upload a file
bash
r2-upload /path/to/file.pdf
# Returns: https://files.example.com/abc123/file.pdf?signature=...
Upload with custom path
bash
r2-upload /path/to/file.pdf --key uploads/2026/file.pdf
Upload to specific bucket
bash
r2-upload /path/to/file.pdf --bucket personal
Custom expiration (default: 5 minutes)
bash
r2-upload /path/to/file.pdf --expires 24h
r2-upload /path/to/file.pdf --expires 1d
r2-upload /path/to/file.pdf --expires 300  # seconds
Public URL (no signature)
bash
r2-upload /path/to/file.pdf --public

Tools

  • r2_upload - Upload file and get presigned URL
  • r2_list - List recent uploads
  • r2_delete - Delete a file

Environment Variables

  • R2_UPLOAD_CONFIG - Path to config file (default: ~/.r2-upload.yml)
  • R2_DEFAULT_BUCKET - Override default bucket
  • R2_DEFAULT_EXPIRES - 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

© zebbern, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 10 other files in skills/r2-upload of zebbern/claude-code-guide.

  • SKILL.md
  • CLAWDHUB.md
  • README.md
  • SECURITY.md
  • _meta.json
  • example-config.yml
  • package.json
  • pnpm-lock.yaml
  • src/index.ts
  • src/onboard.ts
  • tsconfig.json

Open the folder on GitHubat commit e62775c

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in zebbern/claude-code-guide, which our catalogue first saw on October 7, 2026.

Compare with similar skills

R2 Upload next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

R2 Upload compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
R2 Upload this skillzebbern/claude-code-guide4.7k1 repos~886Automated safety check: PassMIT
Neon Object Storageneondatabase/agent-skills100—~3.5kAutomated safety check: NotesApache-2.0
S3 Exploreduckdb/duckdb-skills6001 repos~848Automated safety check: NotesMIT
Processing S3 Uploads With Step Functionsaws/agent-toolkit-for-aws2.8k—~4kAutomated safety check: PassApache-2.0
S3 User Filesaws-samples/sample-host-openclaw-on-amazon-bedrock-agentcore177—~779Automated safety check: PassMIT-0
Django Storages for S3Jeffallan/claude-skills12k—~1.9kAutomated safety check: PassMIT

Similar skills

  • Neon Object Storage

    neondatabase/agent-skills

    Official

    S3-compatible object storage that branches with your Neon project, so files and the database stay in sync across every branch.

    100 GitHub stars~3.5k tokensUpdated yesterday
    Backend & APIsAuto-check: notes
  • S3 Explore

    duckdb/duckdb-skills

    Official

    Explore and query data on S3, Cloudflare R2, GCS, MinIO, or any S3-compatible storage.

    600 GitHub starsUsed in 1 repo~848 tokens
    Backend & APIsAuto-check: notes
  • Official

    Deploy an event-driven workflow that routes S3 uploads to either Lambda or Fargate via Step Functions based on file size.

    2.8k GitHub stars~4k tokensUpdated today
    Backend & APIsAuto-check passed
  • S3 User Files

    aws-samples/sample-host-openclaw-on-amazon-bedrock-agentcore

    Official

    Per-user persistent file storage backed by AWS S3. An agent skill from aws-samples/sample-host-openclaw-on-amazon-bedrock-agentcore.

    177 GitHub stars~779 tokensUpdated 9 days ago
    Backend & APIsAuto-check passed
  • Django Storages for S3

    Jeffallan/claude-skills

    Sets up Django 4.2+ to keep static and media files on AWS S3 through django-storages, with public and private backends, presigned URLs and CloudFront.

    12k GitHub stars~1.9k tokensUpdated 4 days ago
    Backend & APIsAuto-check passed
  • Cloudflare R2

    einverne/dotfiles

    Guide for implementing Cloudflare R2 - S3-compatible object storage with zero egress fees.

    121 GitHub stars~2.8k tokensUpdated 29 days ago
    Backend & APIsAuto-check passed

More from zebbern/claude-code-guide

All 46 skills in this repo
  • Code To Diagram

    zebbern/claude-code-guide

    Analyze codebases and automatically generate architecture diagrams, flowcharts, and org charts.

    4.7k GitHub starsUsed in 1 repo~972 tokens
    Auto-check passed
  • Localization Toolkit

    zebbern/claude-code-guide

    This skill should be used when setting up, auditing, or enforcing internationalization/localization in UI codebases (React/TS, i18next or similar, JSON locales), including installing/configuring the…

    4.7k GitHub starsUsed in 1 repo~1.3k tokens
    Auto-check passed
  • Audit Flow

    zebbern/claude-code-guide

    Interactive system flow tracing across CODE, API, AUTH, DATA, NETWORK layers with SQLite persistence and Mermaid export.

    4.7k GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Chart Image

    zebbern/claude-code-guide

    Generate publication-quality PNG chart images from data, supporting line, bar, area, candlestick, pie, and heatmap charts.

    4.7k GitHub stars~2.7k tokensUpdated today
    Auto-check passed
  • Code Vuln Audit

    zebbern/claude-code-guide

    Scan code for security issues: dependency vulnerabilities (npm/pip audit), secret leaks (regex and entropy analysis), and OWASP anti-patterns like SQL injection, XSS, or command injection.

    4.7k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Linux Shell Scripting

    zebbern/claude-code-guide

    This skill should be used when the user asks to "create bash scripts", "automate Linux tasks", "monitor system resources", "backup files", "manage users", or "write production shell scripts".

    4.7k GitHub starsUsed in 9 repos~3.1k tokens
    Auto-check: notes

Categories

Questions about R2 Upload

What does R2 Upload do?

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. R2 Upload is an agent skill from zebbern/claude-code-guide. 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.

When should I use R2 Upload?

R2 Upload fits situations like: the user needs to upload a file to cloud storage and get a shareable link; temporary links; file uploads with expiration.

How do I install R2 Upload in Claude Code?

Run `npx skills add zebbern/claude-code-guide --skill r2-upload -a claude-code`. Or copy the skill folder (skills/r2-upload in zebbern/claude-code-guide) into .claude/skills/r2-upload in your project. Claude Code loads it when a task matches its description.

How do I install R2 Upload in Codex?

Run `npx skills add zebbern/claude-code-guide --skill r2-upload -a codex`. Or copy the skill folder (skills/r2-upload in zebbern/claude-code-guide) into .agents/skills/r2-upload in your project. Codex loads it when a task matches its description.

Can I use R2 Upload in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add zebbern/claude-code-guide --skill r2-upload -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/r2-upload, .gemini/skills/r2-upload, .github/skills/r2-upload and .opencode/skills/r2-upload in your project.

What does R2 Upload need to run?

Going by SKILL.md and its folder, R2 Upload needs TypeScript for the scripts in its folder. Our summary lists: Node.js.

Does R2 Upload access the network?

SKILL.md names 4 domains. In commands or code: dash.cloudflare.com, abc123.r2.cloudflarestorage.com, xyz789.r2.cloudflarestorage.com and s3.us-east-1.amazonaws.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is R2 Upload safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does R2 Upload use?

R2 Upload is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does R2 Upload use?

About 886 tokens (SKILL.md is roughly 3.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to R2 Upload?

Skills that share tags, products or a category with R2 Upload: Neon Object Storage (neondatabase/agent-skills, 100 stars), S3 Explore (duckdb/duckdb-skills, 600 stars), Processing S3 Uploads With Step Functions (aws/agent-toolkit-for-aws, 2.8k stars) and S3 User Files (aws-samples/sample-host-openclaw-on-amazon-bedrock-agentcore, 177 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains R2 Upload?

zebbern (a GitHub user) maintains it in zebbern/claude-code-guide, which has 4,650 GitHub stars. The repository holds 46 skills in this directory. The repository was last updated on October 8, 2026.

Source: zebbern/claude-code-guide on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.