CtrlK
BlogDocsLog inGet started
Tessl Logo

r2-upload

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.

69

Quality

85%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

75%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-organized, actionable single-file skill with concrete config and command examples and no fluff. The main weaknesses are the unreconciled CLI-vs-MCP-tool invocation story, missing validation guidance for the destructive delete tool, and mild redundancy between the Features and Notes sections.

Suggestions

Reconcile the invocation models: state whether the skill is driven via the `r2-upload` CLI, the MCP tools (`r2_upload`, `r2_list`, `r2_delete`), or both, and give one concrete example of invoking a tool (e.g., what arguments `r2_upload` takes).

Add validation guidance around the destructive `r2_delete` tool — e.g., confirm the key with `r2_list` before deleting, and note that deletion is irreversible — and a quick check that a generated presigned URL downloads before returning it to the user.

Merge the redundant "Features" and "Notes" sections and move the Cloudflare R2 token walkthrough and multi-bucket/AWS config examples into a `references/` file to keep SKILL.md a lean overview.

DimensionReasoningScore

Conciseness

The body is mostly lean — config YAML and CLI examples with no padding and no explanations of concepts Claude already knows. It stays at 4 rather than 5 because the "Features" and "Notes" sections partially duplicate each other ("Automatic content-type detection" vs. "Content-Type automatically detected"; "Presigned URLs expire after the configured duration" restates the expiration already shown twice).

4 / 5

Actionability

Commands like `r2-upload /path/to/file.pdf --bucket personal --expires 24h` and a complete YAML config with real endpoint formats are executable and copy-paste ready. It misses 5 because the two invocation models are never reconciled: Usage shows a bash CLI `r2-upload` while Tools lists MCP tools (`r2_upload`, `r2_list`, `r2_delete`) with no example of how to call them, and there's no installation/first-run guidance.

4 / 5

Workflow Clarity

The path is well sequenced — write `~/.r2-upload.yml`, follow the numbered 7-step Cloudflare token setup, then run the upload command — and the single upload action is unambiguous. It caps below 5 because `r2_delete` is a destructive operation listed with zero validation/confirmation guidance, and there is no checkpoint for verifying a successful upload or handling a missing/invalid config.

4 / 5

Progressive Disclosure

The skill is a single self-contained file with no bundle directory, clean section headers, and consistent per-section organization, which makes navigation easy. It sits at 4 rather than 5 because at ~115 lines some setup-heavy material (the R2 API-token walkthrough and multi-bucket/AWS config) would fit better in a references/ file to keep SKILL.md a lean overview.

4 / 5

Total

16

/

20

Passed

Description

95%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: concrete third-person capability statement, explicit and trigger-rich "Use when" clause, named platforms, and sensible defaults. The only gap is that it undersells a few real capabilities (list, delete, public URLs), which keeps specificity at 4 rather than 5.

DimensionReasoningScore

Specificity

"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" names several concrete actions (upload, generate presigned links, configurable expiration) with concrete platforms and defaults. It falls just below the 5 anchor because it omits capabilities the skill itself advertises (r2_list, r2_delete, --public URLs), leaving minor coverage gaps.

4 / 5

Completeness

It explicitly answers both questions: the "what" is "Upload files ... and generate secure, time-limited presigned download links", and the "when" is a full clause "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" with concrete trigger phrases. This mirrors the 5-anchor example structure exactly.

5 / 5

Trigger Term Quality

"R2, S3, presigned URLs, temporary links, or file uploads with expiration" plus "MinIO", "cloud storage", and "shareable link" covers the natural synonyms users would say (presigned URL / temporary link / shareable link) and the compatible-provider variants. This matches the comprehensive-synonyms anchor; nothing natural is missing for this domain.

5 / 5

Distinctiveness Conflict Risk

The niche is narrow and named (R2/S3/MinIO upload + short-lived presigned links) with distinct trigger terms unlikely to fire for unrelated skills. Voice is third person ("Upload files", not "You can upload"), so no specificity penalty applies.

5 / 5

Total

19

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository
zebbern/claude-code-guide
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.