CtrlK
BlogDocsLog inGet started
Tessl Logo

render-airdrop-carousel

Assemble a viral iOS "AirDrop" notification-carousel video ad (≈6–8s, 9:16) from a brand line plus 6–16 real product photos — a native AirDrop share-sheet card ("Brand would like to share a ___ · Decline / Accept") springs up and its preview window CYCLES through the products, landing on a range/lineup payoff with an Accept tap; a chime + soft per-swap ticks track the swaps. DETERMINISTIC assembly — an HTML card (real DOM text) rendered to PNG via headless Chrome, chroma-keyed, its magenta window refilled per-product in PIL, then animated + audio-synthed with FFmpeg. FREE (no paid model calls); the recipe supplies the brand line, product images, and payoff and gates the only optional paid step (a hero shot when the brand has NO usable photo → create-image-fal). Use for the airdrop-notification-carousel format.

67

Quality

84%

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

78%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 lean, well-structured overview body that points cleanly to a real, verified script bundle and encodes genuine craft constraints (chroma contract, no AI-rendered text, derived duration). The gaps are repetition of the free/paid-gating point, no literal example command invocation, and an implicit rather than explicitly numbered run order.

Suggestions

Add one copy-paste example invocation, e.g. `python scripts/one_shot.py --config config.json → out.mp4`, so the first run needs no inference.

State the happy-path order explicitly (1. build_card 2. screenshot 3. compose_carousel, or just 'run one_shot.py') rather than leaving the sequence implicit in the scripts catalog.

Deduplicate the FREE/no-paid-calls and create-image-fal gating notes into a single place (Requires) to reclaim a few tokens.

DimensionReasoningScore

Conciseness

The body is dense and almost every line is load-bearing (script purposes, chroma contract hex values, craft rules, install commands), assuming Claude's competence with no concept tutorials. It sits at the 4 anchor ('Efficient; minor instances of over-explanation that could be trimmed') rather than 5 because the FREE/no-paid-calls and create-image-fal gating points are stated three times across the intro, Inputs, and Requires sections, and the deterministic/no-AI-render point is repeated twice.

4 / 5

Actionability

Concrete and mostly executable: named scripts with roles ('One `--config`, one MP4'), a real install command ('pip install playwright && playwright install chromium'), a verified config.example.json with the exact field shape, and a fully specified Playwright-unavailable fallback with concrete filenames (chrome.html → chrome-green.png via chrome-devtools MCP). It stops short of 5 because no literal example invocation of one_shot.py or compose_carousel.py is given, so the first command line must be inferred from the scripts themselves.

4 / 5

Workflow Clarity

The pipeline sequence is legible (build_card → headless-Chrome screenshot → compose_carousel, with one_shot as glue, plus an ordered fallback path) and validation exists: the chroma-bleed recovery loop ('Swap the image or tighten the window_mask thresholds if it bleeds') and the final 'watch' QC step. It fits 4 ('most checkpoints present; minor validation gaps') rather than 5 because the happy-path order is implied by the scripts catalog rather than given as an explicit numbered run sequence, and there is no stated check on intermediate outputs (e.g., the green/magenta PNGs) before the encode step.

4 / 5

Progressive Disclosure

The 65-line body is an overview that appropriately defers detail to the four real scripts/, each referenced by exact path with a one-line purpose — verified to all exist, including config.example.json, which matches the body's claims (placeholder /abs/path/... paths, derived duration). References are one level deep, well-signaled under a 'Scripts (free)' section, and navigation is easy, matching the 5 anchor.

5 / 5

Total

17

/

20

Passed

Description

83%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 highly specific, distinctive description with a complete pipeline description and an explicit (if terse) trigger clause. Its weaknesses are the narrow single-phrase 'when' clause, some natural user phrasings being absent, and notable verbosity for a description field.

Suggestions

Expand the trigger clause beyond the internal format name to user-side phrasings, e.g. 'Use when the user asks for an AirDrop-style / notification-style product ad, share-sheet carousel video, or a 9:16 product teaser from real photos.'

Trim internal pipeline jargon ('chroma-keyed', 'audio-synthed', 'create-image-fal') from the description; move that detail to the body so the description stays scannable and keyword-dense.

Add the natural synonyms users would actually say ('share sheet', 'product showcase', '9:16 vertical ad') to improve trigger-term coverage.

DimensionReasoningScore

Specificity

The description enumerates multiple concrete, specific actions: 'an HTML card (real DOM text) rendered to PNG via headless Chrome, chroma-keyed, its magenta window refilled per-product in PIL, then animated + audio-synthed with FFmpeg' — comprehensive coverage of the pipeline with named tools. It clearly matches the anchor 'Lists multiple specific concrete actions; comprehensive coverage' and is not the level below (only several actions with minor gaps); nothing above 5 exists on the scale.

5 / 5

Completeness

Both halves are present: a very detailed 'what' and an explicit trigger clause 'Use for the airdrop-notification-carousel format.' This fits the 4 anchor ('both what and when; when could be more explicit or specific') rather than 5 because the when-clause is a single narrow phrase naming the internal format, with no richer 'use when the user asks for…' phrasing covering the situations that would invoke it.

4 / 5

Trigger Term Quality

Good natural-keyword coverage — 'viral iOS "AirDrop" notification-carousel video ad', 'product photos', 'carousel', 'Accept tap', 'range/lineup payoff' are phrases a user requesting this ad format would plausibly say. It falls short of 5 because common user-side variations like 'share sheet', 'product showcase', or 'notification-style ad' are absent, and some space is spent on internal jargon ('chroma-keyed', 'audio-synthed') users would not say.

4 / 5

Distinctiveness Conflict Risk

The description carves out a clear niche — deterministic iOS AirDrop share-sheet carousel video ads with chroma-keyed real product photos — with essentially no overlap risk against generic video, image, or document skills. It matches the 5 anchor ('Clear niche with distinct triggers; minimal conflict risk'); the 4 anchor's 'minor overlap risk with closely related skills' does not apply.

5 / 5

Total

18

/

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.