CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

cloudflare-r2

Cloudflare R2 integration. Manage data, records, and automate workflows. Use when the user wants to interact with Cloudflare R2 data.

Quality

67%

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

Fix and improve this skill with Tessl

tessl review fix ./skills/cloudflare-r2/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

63%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.

The body is a solid, command-driven guide: nearly every section gives copy-pasteable CLI invocations, and the connection lifecycle is handled with an explicit state-machine decision tree including re-polling after user action. Its main weaknesses are token waste (re-explaining R2 and Membrane's value proposition), a dangling 'Step 2' cross-reference that breaks the workflow's coherence, and no progressive disclosure — everything, including the clientAction schema taxonomy and proxy flag reference, is inlined in one file. Tightening the prose and splitting reference material would lift it substantially.

Suggestions

Delete the introductory paragraph explaining what Cloudflare R2 is (Claude already knows) and trim marketing-flavored lines like 'This will burn less tokens and make communication more secure' to bare directives.

Fix the broken cross-references: replace 'skip to **Step 2**' with an actual named/numbered step (and rename '1b' accordingly), and pick one CLI invocation style (`membrane` vs `npx @membranehq/cli`) consistently.

Move the `clientAction` field taxonomy and the proxy request flag table into a `references/` file (e.g., `references/connection-states.md` and `references/proxy.md`) and link to them from the body to enable progressive disclosure.

DimensionReasoningScore

Conciseness

The opening paragraph re-explains what Cloudflare R2 is ('a decentralized object storage service, similar to AWS S3 or Google Cloud Storage'), which Claude already knows, and there is padding like 'so you can focus on the integration logic rather than auth plumbing' plus redundant CLI invocation styles (`npm install -g @membranehq/cli` vs `npx @membranehq/cli`). This matches 'mostly efficient but includes some unnecessary explanation or could be tightened', not anchor 4, because multiple sections — not just minor instances — could be trimmed.

3 / 5

Actionability

The body provides concrete, executable commands for every phase — `npm install -g @membranehq/cli@latest`, `membrane login --tenant --clientName=<agentType>`, `membrane connection ensure "…" --json`, `membrane action run <actionId> --connectionId=… --input '{…}'` — plus a flag table for proxy requests. It falls short of anchor 5 only through minor gaps: the `CONNECTION_ID` placeholder is never shown being extracted from output, and the referenced 'Step 2' does not exist; it is well above anchor 3's pseudocode/incomplete level.

4 / 5

Workflow Clarity

The sequence (install → login → connect → poll → discover actions → run → proxy fallback) is clear and includes explicit checkpoints: polling `--wait` until state leaves `BUILDING`, a full `READY`/`CLIENT_ACTION_REQUIRED`/`CONFIGURATION_ERROR` decision tree, and re-polling after the user completes an action. It misses anchor 5 because 'If the returned connection has state: "READY", skip to **Step 2**' is a dangling reference — no Step 2, 1a, or numbered step framework exists — leaving a coherence gap in the sequence.

4 / 5

Progressive Disclosure

The body has reasonable section headers but is a single ~140-line file with no bundle files, and content that would sit better in references is inlined — notably the full `clientAction` field taxonomy and the proxy request flag table. This fits 'some structure but could be better organized; content that should be separate is inline'; it is not anchor 2 because the sections are organized rather than a wall of text, and not anchor 4 because there are no well-signaled reference files at all.

3 / 5

Total

14

/

20

Passed

Description

57%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.

The description correctly names the Cloudflare R2 domain and includes an explicit 'Use when…' trigger clause, satisfying the completeness floor. However, its capability statement is generic ('Manage data, records, and automate workflows'), omits R2-specific vocabulary like buckets, objects, or object storage, and includes the non-R2 term 'records', weakening specificity and trigger coverage. It is serviceable but reads like a template rather than a description written for this specific service.

Suggestions

Replace the generic capability sentence with concrete R2 actions, e.g., 'Create and manage buckets, upload/download/list objects, generate presigned URLs, and configure bucket settings in Cloudflare R2.'

Add natural trigger keywords and synonyms such as 'object storage', 'buckets', 'S3-compatible storage', and '.r2' so users phrasing the need differently still match.

Remove the inaccurate term 'records' (not an R2 concept) and drop the buzzword 'automate workflows' in favor of a specific capability.

DimensionReasoningScore

Specificity

The description names the domain ('Cloudflare R2 integration') but the stated actions are generic — 'Manage data, records, and automate workflows' contains no concrete R2 operations (e.g., buckets, objects, uploads) and 'records' is not even an R2 concept. It matches the anchor 'names the domain but actions are minimal or generic', not anchor 3, which requires 1-2 genuinely concrete actions.

2 / 5

Completeness

Both parts are present: a 'what' ('Cloudflare R2 integration. Manage data, records, and automate workflows') and an explicit 'when' ('Use when the user wants to interact with Cloudflare R2 data'). It is not anchor 5 because the 'what' is vague and lacks concrete capability detail with rich trigger phrases, and not anchor 3 because the 'when' is explicit rather than weakly implied.

4 / 5

Trigger Term Quality

'Cloudflare R2' and 'R2 data' are the natural terms a user would say, giving some relevant keyword coverage, but common variations and synonyms are missing — 'object storage', 'buckets', 'objects', or 'S3-compatible storage' never appear. This sits at 'some relevant keywords but missing common variations or synonyms' rather than anchor 4's 'good keyword coverage'.

3 / 5

Distinctiveness Conflict Risk

'Cloudflare R2' establishes a clear niche that is unlikely to trigger for the wrong skill, but the generic middle sentence ('Manage data, records, and automate workflows') overlaps with virtually any data skill, keeping it at 'mostly distinct; minor overlap risk' rather than anchor 5's fully distinct triggers paired with concrete capabilities.

4 / 5

Total

13

/

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

membranedev/application-skills

Path

skills/cloudflare-r2/SKILL.md

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.