CtrlK
BlogDocsLog inGet started
Tessl Logo

media-proxy

Shared helper that routes ALL paid media generation (FAL image/video, ElevenLabs music) through the GooseWorks proxies so every call bills the Ads agent — never a provider SDK's default host. Host-swaps the FAL queue URLs, loads the agent token from the sandbox env (GW_MEDIA_PROXY_TOKEN) or ~/.gooseworks/credentials.json, and returns the result CDN URL. Every video-ad media capability imports this; templates never call a provider directly.

58

Quality

73%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Medium

Suggest reviewing before use

Fix and improve this skill with Tessl

tessl review fix ./skills/ads/capabilities/media-proxy/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

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

An exceptionally actionable, operationally rigorous body: executable examples, real bundled scripts, and explicit validation/recovery loops for every paid operation. Its weaknesses are density and structure — the digest/dedupe rules are repeated across sections and a large slab of edge-case reference material is inlined monolithically rather than split into reference files.

Suggestions

Move the QA-14 policy-rejection reference detail (error-body shapes, ledger key derivation, charge semantics) and the MCP relay protocol into a references/ file, leaving the body with the rule plus a pointer.

Consolidate the three overlapping explanations of input_digest/dedupe (crash-resume, policy rejections, save-as-you-go) into one section, cross-referenced from the others.

Annotate the eleven_music example's positional args (e.g., duration_ms) and show a one-line download() example since it is imported in the 'Use it' snippet.

DimensionReasoningScore

Conciseness

Nearly all content is novel, ecosystem-specific knowledge (billing semantics, proxy hosts, ledger keys) that Claude could not know, so it is not padding — but it could still be tightened. The input_digest/dedupe concept is explained three times across 'Crash-resume', 'Policy rejections', and 'Save-as-you-go digest'; narrative incident asides ('a veed/fabric lipsync once finished 26s after a 600s poller quit...') and dense edge-case taxonomy (the full QA-14 error-body shape list) add tokens beyond what the instruction needs. This fits 'mostly efficient but includes some unnecessary explanation or could be tightened' better than the lean 4 or 5 anchors.

3 / 5

Actionability

The 'Use it' section gives copy-paste-ready calls with realistic payloads ('fal_generate("fal-ai/nano-banana/edit", {"prompt": p, "image_urls": [product_url], ...})'), the resume and rejection-management CLI commands are exact, the input_digest examples are concrete, and the MCP relay protocol is a precise step-by-step. Minor gaps keep it at 4: 'eleven_music(prompt, 10500, "music.mp3", force_instrumental=True)' leaves the positional args unexplained, 'download' is imported but never shown, and the 'swap any expiring input URL for its ingredient_key + digest' instruction gives no executable helper.

4 / 5

Workflow Clarity

Every multi-step process is clearly sequenced with explicit validation and error-recovery loops: the MCP relay is a numbered 1-4 workflow whose step 4 handles provider failures and prescribes the re-run; crash-resume prescribes re-attach instead of re-fire with resume_fal(request_id) after FalPollTimeout; policy rejections are validated up front via refuse_if_rejected before any upload, and the ledger refuses identical requests before any network call. Paid (financially destructive) operations have feedback loops throughout, matching the 5 anchor.

5 / 5

Progressive Disclosure

The body references real bundle files (scripts/media_proxy.py and scripts/resume.py both exist, and every referenced function — fal_generate, resume_fal, input_digest, refuse_if_rejected, forget_rejection — is present), and section headers are clear. But everything lives inline in one ~200-line SKILL.md: the QA-14 policy-rejection ledger spec (error-body taxonomy, key derivation, ledger semantics) and the MCP relay protocol are reference-grade material that belongs in separate reference files the main body could point to — the 'content that should be separate is inline' pattern of the 3 anchor.

3 / 5

Total

15

/

20

Passed

Description

66%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 specific, information-dense description with concrete actions and clear domain vocabulary, hurt by the absence of any explicit 'Use when...' trigger clause and by incomplete coverage of the skill's headline features (crash-resume, dedupe, policy-rejection ledger). It is written in third person and avoids fluff, but reads more like internal architecture documentation than trigger-oriented skill discovery text.

Suggestions

Add an explicit trigger clause, e.g. 'Use when generating any paid FAL or ElevenLabs media in the video-ad pipeline, or when a script must bill the Ads agent instead of a provider SDK account.'

Mention the headline operational features (crash-resume/re-attach, dedupe, policy-rejection ledger) so the description's capability coverage matches the skill's actual scope.

Trim internal jargon in favor of natural synonyms users would say (e.g., 'billing/credits', 'voiceover/tts') to broaden trigger matching.

DimensionReasoningScore

Specificity

The description lists several concrete actions — 'routes ALL paid media generation (FAL image/video, ElevenLabs music) through the GooseWorks proxies', 'Host-swaps the FAL queue URLs', 'loads the agent token from the sandbox env (GW_MEDIA_PROXY_TOKEN) or ~/.gooseworks/credentials.json', and 'returns the result CDN URL'. These are specific and executable-sounding, but coverage stops at the routing/auth core; the skill's major crash-resume, dedupe, and policy-rejection behaviors go unmentioned, which is the 'minor gaps in coverage' of the 4 anchor rather than the comprehensive coverage of 5.

4 / 5

Completeness

The 'what' is explicit and clear (routing, host-swapping, token loading, returning the CDN URL), but there is no 'Use when...' clause or equivalent explicit trigger guidance. 'Every video-ad media capability imports this; templates never call a provider directly' weakly implies the usage context but is an architectural statement, not trigger guidance — per the judging guidelines, a missing explicit trigger clause caps completeness at 3.

3 / 5

Trigger Term Quality

Good coverage of natural domain terms a user in this ecosystem would say: 'paid media generation', 'FAL image/video', 'ElevenLabs music', 'bills the Ads agent', 'token', 'CDN URL'. A few natural terms are missing (e.g., 'billing/credits', 'tts', 'resume'), and some phrasing leans on internal jargon ('GooseWorks proxies'), which keeps it at 4 rather than the comprehensive synonym coverage of 5; it is clearly above the 'some relevant keywords but missing variations' of 3.

4 / 5

Distinctiveness Conflict Risk

The niche is clear and distinctive (proxy-mediated paid-media billing for the video-ad pipeline) and the 'Shared helper... every video-ad media capability imports this' framing separates it from its siblings. However, the description shares FAL/ElevenLabs/media-generation trigger vocabulary with the closely related create-image-fal, create-video-fal, and create-music-elevenlabs skills, giving minor overlap risk — the 4 anchor rather than the minimal-conflict 5.

4 / 5

Total

15

/

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
gooseworks-ai/goose-skills
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.