CtrlK
BlogDocsLog inGet started
Tessl Logo

render-offer-ad

Render a punchy ~12s vertical (9:16) music-only direct-response OFFER ad as a 4-beat kinetic-typography film — HEADLINE slam → real PRODUCT drop → CLAIM/proof → CTA pill — from one config of copy slots, a real product photo, a brand palette, fonts, bpm, and beat split. DETERMINISTIC + FREE (a bundled Remotion project; springs + interpolate, no AI-gen for visuals). Backgrounds are engine gradient divs off the palette, props are inline SVG, the ONLY composited bitmap is the REAL product photo (objectFit:contain, never stretched), and ALL headline/claim/CTA/URL/wordmark text is typeset in the engine — never AI-rendered (the format's credibility guard). A driver binds the config to Remotion input props, renders the 9:16 master, and derives a 1:1 center-crop with ffmpeg. Two gating checks run before render (claim verbs must match the product's physical format; the claim beat needs an edge-entry mechanism prop). Use for the motion-graphics-offer-ad format.

72

Quality

88%

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

SKILL.md
Quality
Evals
Security

Quality

Content

77%

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

The body is highly actionable with a concrete run sequence, pre-render validation gates, and a thorough config→props mapping, but it is longer than necessary due to repeated credibility guards and its progressive disclosure is undercut by a `project/` bundle that the body describes in detail but that is not present.

Suggestions

Ship or restore the referenced `project/` bundle (src/props.ts, src/lib/anim.ts, src/scenes/Scene01–04.tsx, src/Main.tsx, src/Root.tsx, package.json, public/) so the heavily-referenced file paths actually exist, or rewrite the body to stop referencing missing files.

Deduplicate the credibility guards ('never AI-rendered text', 'never stretched', 'music-only/beat-locked') so each rule appears once — keep the 'Craft rules' section as the single source and trim the repetitions in the intro and beats.

Add a short fix-and-retry path for the two gating checks (what to change in the config when render.py rejects), since the current text states the rejection but not the recovery.

DimensionReasoningScore

Conciseness

Dense and mostly load-bearing, but the credibility guards ('never AI-rendered text', 'never stretched', 'music-only, beat-locked') are restated 3–4 times across the intro, beats, craft rules, and Requires, so it could be tightened — matching 'mostly efficient but includes some unnecessary explanation'. Not 3 because it is not lean; not 1 because it avoids explaining concepts Claude already knows.

2 / 3

Actionability

Provides a copy-paste bash run block, exact ffmpeg output filenames and resolutions, a full config→props mapping table, and concrete frame numbers (0/90/195/285/360 @30fps) — fully executable, copy-paste ready.

3 / 3

Workflow Clarity

A clearly numbered sequence (install → bind/render → crop) with two explicit pre-render gating checks (CLAIM-MATCHES-FORMAT, CLAIM-BEAT MECHANISM PROP) that reject bad input before any render — an explicit validation checkpoint. Borderline with 2, but the validation-first gating and QC checklist in Requires push it to 3.

3 / 3

Progressive Disclosure

References are clearly signaled and one-level-deep in intent, but the body repeatedly points into a `project/` bundle (scenes, anim.ts, props.ts, Main.tsx, Root.tsx, package.json, public/) that is not actually present — only `scripts/` ships — so the disclosed structure does not match the real bundle. Not 3 because of the bundle mismatch; not 1 because there are no nested 2+-level references.

2 / 3

Total

10

/

12

Passed

Description

100%

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 is concrete, third-person, and covers both what the skill does and when to use it with explicit triggers, placing it in a distinct niche unlikely to conflict with other skills. It is on the long side but every clause carries capability or trigger information.

DimensionReasoningScore

Specificity

Lists multiple concrete actions — 'Render a punchy ~12s vertical (9:16) music-only direct-response OFFER ad as a 4-beat kinetic-typography film', 'derives a 1:1 center-crop with ffmpeg', and 'Two gating checks run before render' — far beyond vague language, in third person throughout.

3 / 3

Completeness

Explicitly answers both what ('Render… OFFER ad', 'derives a 1:1 center-crop') and when via the explicit trigger clause 'Use for the motion-graphics-offer-ad format.'

3 / 3

Trigger Term Quality

Strong natural-term coverage for the niche: 'offer ad', 'direct-response ad', 'vertical (9:16)', 'kinetic-typography film', 'motion-graphics-offer-ad', 'Remotion', 'ffmpeg' — terms a user needing this format would actually say.

3 / 3

Distinctiveness Conflict Risk

Occupies a clear, narrow niche (kinetic-typography offer ads via a bundled Remotion project) with distinct triggers, making conflict with other ad/video skills unlikely.

3 / 3

Total

12

/

12

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.

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