CtrlK
BlogDocsLog inGet started
Tessl Logo

create-image-fal

Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls must be public URLs (orchestrator hosts local product refs via MCP upload->presign). The recipe names the model + prompt. Use for keyframes, flat-cover transforms, product hero edits. (For the OpenAI gpt-image family specifically, create-image-gpt-image-fal also exists.)

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

71%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 body with a concrete run command, a real and clearly signaled one-level reference bundle, and an explicit stop-checkpoint for the person-image flow. The main costs are the verbatim duplication of the frontmatter description as the intro paragraph, a placeholder payload in the only command example, and no failure handling around the paid call itself.

Suggestions

Delete the intro paragraph that repeats the frontmatter description verbatim — the frontmatter already carries it, saving ~90 tokens.

Replace the placeholder payload in the Run command with one concrete executable example (e.g. --payload '{"prompt":"...","image_urls":["https://..."],"aspect_ratio":"9:16"}' from gen_image.py's docstring) so the command is copy-paste ready.

Add one line of failure handling for the paid call (e.g. what to check or whether a retry is authorized when the proxy call fails), since the skill's only validation checkpoint currently covers just the missing-guide case.

DimensionReasoningScore

Conciseness

The opening paragraph restates the frontmatter description verbatim (~90 tokens of pure duplication), and the 'Creator references' section reiterates rules that the linked avatar-generation.md already carries ('never use a Flux route (fal-ai/flux/dev, fal-ai/flux/schnell) for a face', 'make no person still at all'). Mostly efficient elsewhere — the Run and Contract sections are tight. Not 4 because the verbatim description duplication is a whole redundant block, more than a 'minor instance' of trimming.

3 / 5

Actionability

The Run section gives the real command with correct flags ('gen_image.py --model fal-ai/nano-banana/edit --payload '{...}' --out keyframe.png' — verified against the script's argparse), and the Contract section names the bundled media_proxy.py. Not 5 because '--payload '{...}'' is a placeholder rather than a concrete example payload (the full form lives only in the script's docstring) and the script is invoked without its scripts/ path. Not 3 because the placeholder is semi-justified ('The template recipe (DB) supplies the model + params') and the command is otherwise executable.

4 / 5

Workflow Clarity

The sequence is clear: conditionally read the avatar guide 'before any paid call', then run gen_image.py, which returns the URL. There is an explicit checkpoint ('If a required guide cannot be fetched or opened, stop and name the missing file'). Not 5 because there are minor validation gaps — no guidance for a failed or rejected paid call and no output verification — and the run step itself is a single unannotated command. Not 3 because the person-checkpoint and stop-condition are explicit, not merely implicit.

4 / 5

Progressive Disclosure

The body is a lean overview with well-signaled, one-level-deep references that all exist in the bundle: the markdown link to [avatar-generation.md](references/avatar-generation.md) with a clear when-to-read condition, plus the bundled scripts (gen_image.py, media_proxy.py) invoked by name. Detail that belongs in a separate file (the avatar guide) is properly out-of-line rather than inlined. Not 4 because there are no real organization gaps — sections (Run, Contract, Creator references) are distinct and navigation is easy.

5 / 5

Total

16

/

20

Passed

Description

92%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 strong description: it states concrete capabilities, an explicit 'Use for' trigger clause with specific scenarios, operational constraints (proxy routing, public URLs), and explicit disambiguation from a sibling skill. The only weakness is a handful of missing natural synonyms for image generation requests amid some internal jargon.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions with comprehensive coverage: 'Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...)', the routing requirement 'ROUTED THROUGH THE fal-proxy so it bills the Ads agent', the input constraint 'image_urls must be public URLs', and concrete use cases. Nothing is generic; every clause states a specific capability or constraint. Not 4 because coverage of actions (generate, edit, proxy routing, URL hosting, use cases) goes beyond 'minor gaps' — it is comprehensive.

5 / 5

Completeness

It explicitly answers both questions: the 'what' is 'Generate or edit an image via any FAL image model... ROUTED THROUGH THE fal-proxy' and the 'when' is the explicit trigger clause 'Use for keyframes, flat-cover transforms, product hero edits.' with concrete trigger phrases. Not 4 because the 'when' clause is present, explicit, and lists specific scenarios rather than being merely adequate.

5 / 5

Trigger Term Quality

Good natural keyword coverage: 'generate or edit an image', 'keyframes', 'flat-cover transforms', 'product hero edits', and the model names themselves ('nano-banana', 'gpt-image', 'flux') are terms a user would naturally say. Not 5 because common natural synonyms like 'image generation', 'AI image', or 'photo' are absent, and some phrasing ('MCP upload->presign', 'orchestrator') is internal jargon rather than user-spoken terms.

4 / 5

Distinctiveness Conflict Risk

Clear niche (FAL image models routed through the fal-proxy) with distinct triggers, and it even preemptively disambiguates the closest sibling: '(For the OpenAI gpt-image family specifically, create-image-gpt-image-fal also exists.)'. This actively reduces conflict risk with the most similar skill. Not 4 because the overlap risk is not merely minor — it is explicitly managed.

5 / 5

Total

19

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

referenced_paths_exist

Referenced path issues: 1 missing

Warning

Total

14

/

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.