From fal-ai
Use for any fal.ai task — image/video/audio/3D generation, editing, analysis, model discovery, pricing, training. Triggers on "generate", "create", "edit", "upscale", "restore", "transcribe", "train", "fal pricing", "fal models", or any media AI task.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fal-ai:falThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<SUBAGENT-STOP>
Intent-first workflow for fal.ai: discover models, probe cheaply, refine from feedback, execute with cost awareness. All API calls go through bash scripts — you provide the workflow intelligence.
digraph fal_workflow {
"Intent" [shape=doublecircle];
"Discover candidates" [shape=box];
"Check pricing" [shape=box];
"Probe (cheap sample)" [shape=box];
"Review probe?" [shape=diamond];
"Refine with feedback" [shape=box];
"Final execution" [shape=box];
"Result" [shape=doublecircle];
"Intent" -> "Discover candidates";
"Discover candidates" -> "Check pricing";
"Check pricing" -> "Probe (cheap sample)";
"Probe (cheap sample)" -> "Review probe?";
"Review probe?" -> "Refine with feedback" [label="needs work"];
"Review probe?" -> "Final execution" [label="looks good"];
"Refine with feedback" -> "Probe (cheap sample)";
"Final execution" -> "Result";
}
The session-start hook injects the full script path into your context. Use it as shown. If the path was not injected, resolve it from the plugin root: <plugin_root>/skills/fal/scripts/<name>.sh.
| Script | Purpose | Key Flags |
|---|---|---|
search.sh | Discover models | --query, --category, --limit |
schema.sh | Model input/output schema | --model, --input |
pricing.sh | Price lookup | --model (repeatable) |
run.sh | Sync execution | --model, --prompt, --file, --set K=V |
queue.sh | Async jobs | subcommands: submit, status, result, cancel, wait |
upload.sh | File upload to CDN | --file |
docs.sh | Documentation search | --query, --limit |
All scripts support --json for raw JSON output and --help for usage.
These rules encode the workflow intelligence. Follow them for every fal.ai task.
Identify the user's intent and map it to a model category.
| User intent contains | Category | Search flags |
|---|---|---|
| "generate image", "photo", "illustration", "draw" | text-to-image | --category text-to-image |
| "video from image", file + "animate", "bring to life" | image-to-video | --category image-to-video |
| "generate video", "clip", "video of" | text-to-video | --category text-to-video |
| "edit image", "style transfer", "remove bg", "upscale" | image-to-image | --category image-to-image |
| "speech", "voice", "read aloud", "TTS" | text-to-speech | --category text-to-speech |
| "transcribe", "speech to text", "STT" | speech-to-text | --category speech-to-text |
| "music", "audio generation", "sound" | text-to-music | --category text-to-music |
| "3D model", "mesh", "point cloud" | text-to-3d | --category text-to-3d |
| "train", "fine-tune", "lora" | training | --query "training lora" |
HARD RULE: Never pick a model automatically. Always present options and let the user choose.
Discover candidates:
bash skills/fal/scripts/search.sh --category "text-to-image" --limit 5
Then fetch pricing for the top candidates:
bash skills/fal/scripts/pricing.sh --model "fal-ai/flux-2" --model "fal-ai/flux-2-pro" --model "fal-ai/recraft-v3"
Present the options to the user with pricing:
Here are the available models for text-to-image:
- fal-ai/flux-2 — $0.012/megapixel
- fal-ai/flux-2-pro — $0.05/megapixel
- fal-ai/recraft-v3 — $0.02/megapixel
Which one would you like to use?
Only proceed after the user picks a model. If the user specifies a model upfront (e.g., "use flux"), skip discovery and confirm: "I'll use fal-ai/flux-2, correct?"
Cost awareness: When presenting model options, always include pricing. Flag models that cost > $0.10/image or > $0.50/second of video as expensive.
After the user picks a model, run a low-cost sample to validate the approach.
Probe reduction rules — always apply these for probes:
num_images=1 (never generate multiple images in a probe)duration to minimum (e.g., 3s for video)resolution to minimum (e.g., 720p, or square image size)num_inference_steps if the parameter exists--set to apply reductions:bash skills/fal/scripts/run.sh --model "fal-ai/flux/dev" \
--prompt "a sunset over mountains" \
--set num_images=1 --set image_size=square
Present the probe result to the user and wait for feedback. Based on their response:
This is a loop. Repeat as many times as the user needs until they're happy with the result or decide to move on.
Run with full quality settings:
bash skills/fal/scripts/run.sh --model "fal-ai/flux/dev" \
--prompt "a sunset over mountains, cinematic lighting" \
--set num_images=4 --set image_size=landscape_16_9
Use queue.sh instead of run.sh for:
# Submit async job
bash skills/fal/scripts/queue.sh submit --model "fal-ai/kling-video/v2.6/pro/text-to-video" \
--prompt "cinematic sunset timelapse" --set duration=5
# Wait for completion (with timeout)
bash skills/fal/scripts/queue.sh wait --model "fal-ai/kling-video/v2.6/pro/text-to-video" \
--request-id "REQUEST_ID" --timeout 300
bash skills/fal/scripts/search.sh --query "flux" --category "text-to-image" --limit 3
bash skills/fal/scripts/run.sh --model "fal-ai/flux/dev" --prompt "a serene mountain landscape at sunset"
bash skills/fal/scripts/search.sh --category "image-to-video" --limit 3
bash skills/fal/scripts/queue.sh submit --model "fal-ai/kling-video/v2.6/pro/image-to-video" \
--file ./photo.jpg --prompt "slow cinematic zoom"
bash skills/fal/scripts/search.sh --query "speech" --category "text-to-speech" --limit 3
bash skills/fal/scripts/run.sh --model "fal-ai/f5-tts" --prompt "Hello world, this is a test."
bash skills/fal/scripts/run.sh --model "fal-ai/whisper" --file ./recording.mp3
bash skills/fal/scripts/pricing.sh --model "fal-ai/flux/dev" --model "fal-ai/flux-pro" --model "fal-ai/flux/schnell"
bash skills/fal/scripts/schema.sh --model "fal-ai/flux/dev" --input
bash skills/fal/scripts/docs.sh --query "flux lora training"
bash skills/fal/scripts/upload.sh --file ./photo.jpg
# Returns: https://v3.fal.media/files/.../photo.jpg
Images: Display as markdown image links with dimensions.

1024x768 | Model: fal-ai/flux/dev
Videos: Display as clickable links with duration.
[View video](https://v3.fal.media/files/.../video.mp4)
Duration: 5s | Model: fal-ai/kling-video/v2.6/pro
Audio: Display as clickable links.
[Listen to audio](https://v3.fal.media/files/.../audio.mp3)
Model: fal-ai/f5-tts
Async jobs: Display request ID and follow-up commands.
Job submitted.
Request ID: abc123-def456
Check: bash skills/fal/scripts/queue.sh status --model "..." --request-id "abc123-def456"
Wait: bash skills/fal/scripts/queue.sh wait --model "..." --request-id "abc123-def456"
For chaining multiple models into a workflow (e.g., generate image -> animate -> add audio), use the fal-ai:fal-workflow skill instead. It handles structured JSON pipeline authoring with validation rules.
npx claudepluginhub morozovdd/fal-ai-skill --plugin fal-aiGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.