CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

cloudinary

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

Quality

66%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./skills/cloudinary/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

61%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 delivers strong executable guidance — install, auth (including headless flow), connection lifecycle with state-based branching, action discovery/run, and a proxy fallback — organized into clean sections. Its main weaknesses are an unnecessary intro explaining Cloudinary, and the absence of any validation or confirmation guidance for the destructive and batch operations it documents, which caps workflow clarity.

Suggestions

Add a validation/confirmation rule for destructive and batch actions, e.g. "Before destroy-asset, delete-folder, or generate-archive, confirm the target with the user and verify it with get-resource/list-tags first".

Delete or compress the opening paragraph explaining what Cloudinary is — Claude already knows this — and trim padded phrases like "so you can focus on the integration logic rather than auth plumbing".

Fix internal inconsistencies: give --tenant an example value, rename '1b'/'Step 2' to a consistent numbered step sequence, and use the installed "membrane" command instead of "npx @membranehq/cli" in the polling example.

DimensionReasoningScore

Conciseness

The intro paragraph ("Cloudinary is a cloud-based media management platform. It helps developers and marketers store, optimize, and deliver images and videos. It's used by businesses of all sizes...") explains what Claude already knows, and phrases like "so you can focus on the integration logic rather than auth plumbing" and "This will burn less tokens" are padding. The bulk is efficient commands and tables, so this sits at 'mostly efficient but includes some unnecessary explanation'.

3 / 5

Actionability

Concrete, largely copy-paste-ready commands throughout — "npm install -g @membranehq/cli@latest", "membrane connection ensure 'https://cloudinary.com/' --json", "membrane action run <actionId> --connectionId=... --input '{...}'", plus a proxy flags table. Minor gaps keep it below 5: "membrane login --tenant --clientName=<agentType>" shows --tenant with no value, "Skip to Step 2" points at sections that aren't numbered, and "npx @membranehq/cli connection get" is inconsistent with the installed "membrane" command.

4 / 5

Workflow Clarity

The connection workflow has a clear sequence with a polling feedback loop (BUILDING → poll with --wait → handle CLIENT_ACTION_REQUIRED → re-poll), which would merit 4. However the skill documents destructive operations ("Destroy Asset — Permanently delete an asset", "Delete Folder") and batch operations ("Generate Archive") with no validation/verification or confirmation steps anywhere, and the rubric caps workflow clarity at 3 for destructive/batch operations without validation.

3 / 5

Progressive Disclosure

A single well-organized SKILL.md with clear sections and no nested references; the CLI's "membrane action list --intent" discovery pattern substitutes for a reference catalog, which is appropriate. Minor organization gaps: the "#### 1b" heading implies numbered steps that don't exist ("skip to Step 2" has no Step 2 heading), and the 15-row Popular actions table is borderline content that could live in a reference file — hence 4 rather than 5.

4 / 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 has the right skeleton — domain name, a what-statement, and an explicit 'Use when' trigger in third-person voice — but the capability statement is generic filler that could describe almost any data integration. Naming the concrete Cloudinary capabilities (upload, transform, tag, search media assets) and natural synonyms would lift it substantially.

Suggestions

Replace the generic "Manage data, records, and automate workflows" with concrete Cloudinary capabilities, e.g. "Upload, transform, tag, and search images and videos in Cloudinary".

Add natural trigger synonyms users would actually say — images, videos, media assets, asset management — to the 'Use when' clause, e.g. "Use when the user mentions Cloudinary, or wants to upload, transform, or manage media assets/images/videos".

Drop "records" and "automate workflows" unless they reflect real Cloudinary capabilities, since they blur distinctiveness with generic data-management skills.

DimensionReasoningScore

Specificity

"Manage data, records, and automate workflows" names the domain (Cloudinary) but the actions are minimal and generic — no concrete capabilities like uploading, transforming, or tagging media assets are stated. It matches the anchor 'Names the domain but actions are minimal or generic' rather than 3, which requires 1-2 concrete actions.

2 / 5

Completeness

Both 'what' ("Cloudinary integration. Manage data, records, and automate workflows") and an explicit 'when' ("Use when the user wants to interact with Cloudinary data") are present, each could be more specific — the 'what' side is vague. Not 3 because the when-clause is explicit rather than missing or weakly implied; not 5 because neither part gives concrete trigger phrases or comprehensive actions.

4 / 5

Trigger Term Quality

"Use when the user wants to interact with Cloudinary data" includes the natural keyword 'Cloudinary', but coverage stops there — no synonyms or common variations users say (images, videos, media assets, tags). Not 2 because the keyword is domain-specific rather than generic like 'Works with files'; not 4 because most natural terms are missing.

3 / 5

Distinctiveness Conflict Risk

The 'Cloudinary' trigger carves a clear niche with minimal wrong-skill risk, but the generic tail 'Manage data, records, and automate workflows' overlaps other data-management/integration skills. Not 5 because that generic phrasing creates minor overlap risk with closely related skills.

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/cloudinary/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.