cloudflare-r2

Store and manage objects in Cloudflare R2 via S3-compatible APIs.

52|6|Updated Nov 24, 2025
One-click install
npx skills add https://github.com/ovachiever/droid-tings --skill cloudflare-r2-ovachiever
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: cloudflare-r2
Source: https://github.com/ovachiever/droid-tings/tree/main/skills/cloudflare-r2
Command: npx skills add https://github.com/ovachiever/droid-tings --skill cloudflare-r2-ovachiever

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Store and manage objects on Cloudflare's edge using R2’s S3-compatible API, enabling fast uploads/downloads, edge CORS configuration, presigned URLs, multipart uploads, and metadata handling.

Core Features & Use Cases

  • ✅ R2 Workers API: put(), get(), head(), delete(), list() for object storage
  • ✅ Presigned URLs: client-side uploads/downloads without exposing keys
  • ✅ CORS & HTTP Metadata: configure Content-Type, Cache-Control, and custom metadata
  • ✅ Multipart Uploads: resumable uploads for large files
  • ✅ Metadata Handling: HTTP and custom metadata for assets
  • ✅ Edge Serving: host static assets (images, CSS, JS) with edge caching

Quick Start

Begin by configuring an R2 bucket and binding in wrangler.jsonc, then deploy and access env.MY_BUCKET in your Worker to store and retrieve assets.

Frequently Asked Questions about cloudflare-r2

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I store and retrieve files using Cloudflare R2?

R2 provides S3-compatible object storage on Cloudflare's edge. Use the Workers API methods—put() to upload, get() to download, head() to check metadata, delete() to remove, and list() to enumerate objects in your R2 bucket after binding it in wrangler.jsonc.

Can I generate presigned URLs for client-side uploads without exposing my R2 credentials?

Yes, presigned URLs let clients upload and download objects directly without API key exposure. R2 supports generating time-limited, signed URLs through its S3-compatible API, enabling secure client-side transfers while keeping credentials server-side.

How do I configure CORS and set custom metadata on R2 objects?

R2 supports HTTP metadata (Content-Type, Cache-Control) and custom metadata on individual objects. Configure bucket-level CORS rules to control cross-origin access, then attach headers and custom key-value pairs during put() operations or via R2 configuration.

What's the best way to upload large files to R2?

Multipart uploads break large files into resumable chunks, improving reliability for big assets. R2's multipart upload API lets you upload segments independently and combine them, reducing timeout risk and enabling resume capability on connection loss.

Can I serve static assets like images and CSS directly from R2 with edge caching?

Yes, R2 hosts static assets (images, CSS, JavaScript) on Cloudflare's edge with built-in caching. Deploy your Worker to serve files from R2 bindings, and Cloudflare's edge network automatically caches responses based on Cache-Control headers you set.

Does R2 work with Wrangler and Hono for edge workers?

R2 integrates natively with Wrangler and Hono bindings. Configure your R2 bucket in wrangler.jsonc, deploy your Worker, and access the binding via env.MY_BUCKET in Hono route handlers to perform storage operations on the edge.