plugins/cloudflare/skills/r2/SKILL.md
Use this skill when the user asks about Cloudflare R2, S3-compatible object storage, storing files/blobs on Cloudflare, zero-egress storage, or managing R2 buckets with Pulumi.
npx skillsauth add nsheaps/ai-mktpl cloudflare-r2Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
R2 is Cloudflare's S3-compatible object storage with zero egress fees. It supports the S3 API, Workers bindings, and public bucket access.
cloudflare.R2Bucket (docs)export default {
async fetch(request: Request, env: Env): Promise<Response> {
// Write
await env.MY_BUCKET.put("key", "value");
// Read
const obj = await env.MY_BUCKET.get("key");
return new Response(obj?.body);
},
};
# Configure AWS CLI for R2
aws configure set default.s3.endpoint_url "https://<ACCOUNT_ID>.r2.cloudflarestorage.com"
aws configure set default.s3.region auto
# Use R2 API tokens for credentials
aws s3 ls s3://my-bucket/
import * as cloudflare from "@pulumi/cloudflare";
const bucket = new cloudflare.R2Bucket("my-bucket", {
accountId,
name: "my-bucket",
location: "WNAM", // Optional: WNAM, ENAM, WEUR, EEUR, APAC
});
export const bucketName = bucket.name;
| Resource | Free | Paid | | ------------------- | ----------- | ---------------- | | Storage | 10 GB/month | $0.015/GB/month | | Class A ops (write) | 1M/month | $4.50/M | | Class B ops (read) | 10M/month | $0.36/M | | Egress | Unlimited | $0 (always free) |
tools
Manually reproduce what the github-app plugin's SessionStart hook does to make a GitHub App installation token usable in the current session — materialize the PEM, generate the token, isolate GH_CONFIG_DIR, write the runtime env file, and wire CLAUDE_ENV_FILE so every Bash call sees GH_TOKEN/GITHUB_TOKEN. Use when the hook did not run, the token is missing from the environment, or a shell/teammate needs the token wired up by hand. <example>GH_TOKEN isn't set even though github-app is configured</example> <example>the github-app SessionStart hook didn't run, set up the token manually</example> <example>wire the github app token into CLAUDE_ENV_FILE</example> <example>gh keeps falling back to the wrong account, isolate GH_CONFIG_DIR</example>
tools
Manually configure the GitHub App bot git identity the way the github-app plugin's SessionStart hook does — resolve the app slug and bot user ID, build the <slug>[bot] name and noreply email, set GIT_AUTHOR_*/GIT_COMMITTER_* env vars, and write an isolated GIT_CONFIG_GLOBAL with the gh auth git-credential helper. Use when commits are attributed to the wrong account, "Author identity unknown" appears, or git identity must be set up by hand. <example>my commits are showing up as the handler, not the bot</example> <example>git says Author identity unknown after the github-app hook ran</example> <example>configure the github app bot git identity manually</example> <example>set up the gh credential helper for git push</example>
tools
Manages spec files for requirements capture and validation
tools
# Bash Chaining Alternatives This skill teaches you how to work around the bash command chaining restriction enforced by this plugin. ## Why Chaining is Blocked The `bash-command-rejection` plugin blocks these operators: | Operator | Name | Why Blocked | | -------- | ---------- | ----------------------------------------------------------------------------------- | | `&&` | AND chain | Runs cmd2 only if cmd1 su