CtrlK
BlogDocsLog inGet started
Tessl Logo

create-video-fal

Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent. The template recipe names the model + params; image_url inputs must be public URLs (the orchestrator hosts local frames via MCP get_upload_url -> get_download_url). Returns the result video URL and downloads it. Use for the generative base clip of any video-ad format.

60

Quality

75%

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/ads/capabilities/create-video-fal/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.

A lean, mostly actionable skill body with a real executable command and sound contract rules, weakened by a verbatim restatement of the description, an implicit rather than ordered workflow, and dense multi-topic policy prose inlined where a reference file with pointers would serve better.

Suggestions

Drop the opening paragraph that repeats the frontmatter description verbatim; replace it with the workflow itself so the body starts with what to do.

State the end-to-end sequence as explicit steps — fetch the recipe (model + params) from the template DB, host the local frame via MCP get_upload_url -> get_download_url to get a public image_url, run gen_video.py, then review the take against the scene checklist — making the review an explicit validation checkpoint.

Move the multi-character comparison and cast-planning detail into a references/ file (e.g. references/cast-planning.md) and keep a one-line pointer plus the essential rejection rule in SKILL.md, and briefly signpost media_proxy.py's key behaviors (host-swap, MCP relay, rejection ledger).

DimensionReasoningScore

Conciseness

The body opens by repeating the frontmatter description verbatim ('Image-to-video (or text-to-video) via any FAL video model...'), which is pure waste, and the three dense paragraphs of 'Rejection, physical constraints and cast planning' mix domain-specific rejection handling with generic video-production advice ('Keep unnecessary hands still, use one simple action per shot') that could be tightened. Not 4 because the verbatim repetition is clear unnecessary duplication; not 2 because most of the rest (Run, Contract) is compact and earns its place.

3 / 5

Actionability

The Run section gives a concrete, real command matching the bundled script — 'gen_video.py --model fal-ai/kling-video/v2.1/standard/image-to-video --payload '{...}' --out clip.mp4' — and the Contract rules are specific ('never a provider SDK's default host'). Not 5 because the payload is a '{...}' placeholder rather than a copy-paste example, and the rejection section is prose direction without concrete commands or examples of the preserved reason/request-id format.

4 / 5

Workflow Clarity

The actual end-to-end sequence (get the recipe from the template DB, host the local frame via MCP get_upload_url -> get_download_url, run gen_video.py, review the take) is scattered across prose sections rather than listed as steps, with preconditions like image hosting only implied. A review checklist exists ('review the whole generated take against the checklist... reject extra/missing products') but it is not tied into an ordered workflow. Not 4 because the step order and the validation checkpoint are implicit, not a clear sequence with checkpoints; not 2 because the pieces of the sequence are all present and coherent.

3 / 5

Progressive Disclosure

The bundle structure is clean: body references 'scripts/gen_video.py' (Run) and the 'bundled media_proxy.py' (Contract), both real files one level deep, and sections are well organized. Not 5 because the three distinct dense topics under 'Rejection, physical constraints and cast planning' (rejection handling, scene checklist, multi-character strategy) read as inline reference material that belongs in a separate file with a one-line pointer, and the 56KB media_proxy.py gets no navigation to its key behaviors (host-swap, MCP relay, rejection ledger).

4 / 5

Total

14

/

20

Passed

Description

78%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, well-scoped description with genuine model-name triggers and an explicit use clause. It is held back from top marks by operational billing detail and a narrow, jargon-heavy trigger clause that could name the natural phrases a user would say when they need a generated video clip.

DimensionReasoningScore

Specificity

Quotes several concrete actions — 'Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo)', 'Returns the result video URL and downloads it', 'the orchestrator hosts local frames via MCP get_upload_url -> get_download_url' — covering input, processing, and output. Not 5 because several statements ('ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent', 'The template recipe names the model + params') are internal billing/contract mechanics rather than user-facing capabilities, leaving minor gaps in the action picture.

4 / 5

Completeness

Both 'what' (image-to-video/text-to-video via FAL models, returns and downloads the video) and 'when' ('Use for the generative base clip of any video-ad format') are present, so it clears the completeness cap. Not 5 because the trigger clause is jargon-heavy ('generative base clip of any video-ad format') and gives one narrow trigger rather than concrete user-sayable trigger phrases; not 3 because the 'when' is explicitly stated, not merely implied.

4 / 5

Trigger Term Quality

Good natural keyword coverage: 'image-to-video', 'text-to-video', 'video', plus model names 'Kling', 'Seedance', 'Veo' and 'video-ad' that a user would plausibly say. Not 5 because common variations users would naturally say like 'video ad', 'clip', 'generate video', or an extension like '.mp4' are absent; not 3 because coverage goes well beyond a single generic term.

4 / 5

Distinctiveness Conflict Risk

Clear niche with distinct triggers: 'FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent' and 'the generative base clip of any video-ad format' — highly specific to this environment's paid video generation path. Minimal overlap risk with generic video or media skills.

5 / 5

Total

17

/

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.