fal-generate/SKILL.md
Generate images and videos using fal.ai AI models with queue support. Use when the user requests "Generate image", "Create video", "Make a picture of...", "Text to image", "Image to video", "Search models", or similar generation tasks.
npx skillsauth add abanoub-ashraf/manus-skills-import fal-generateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate images and videos using state-of-the-art AI models on fal.ai.
| Script | Purpose |
|--------|---------|
| generate.sh | Generate images/videos (queue-based) |
| upload.sh | Upload local files to fal CDN |
| search-models.sh | Search and discover models |
| get-schema.sh | Get OpenAPI schema for any model |
All requests use the queue system by default for reliability:
User Request → Queue Submit → Poll Status → Get Result
↓
request_id
Benefits:
bash /mnt/skills/user/fal-generate/scripts/generate.sh [options]
# Image - submits to queue, waits for completion
bash generate.sh --prompt "A serene mountain landscape" --model "fal-ai/nano-banana-pro"
# Video - same, but takes longer
bash generate.sh --prompt "Ocean waves crashing" --model "fal-ai/veo3.1"
# Image-to-Video
bash generate.sh \
--prompt "Camera slowly zooms in" \
--model "fal-ai/kling-video/v2.6/pro/image-to-video" \
--image-url "https://example.com/image.jpg"
For long video jobs, use --async to get request_id immediately:
# Submit and return immediately
bash generate.sh --prompt "Epic battle scene" --model "fal-ai/veo3.1" --async
# Output:
# Request ID: abc123-def456
# Request submitted. Use these commands to check:
# Status: ./generate.sh --status "abc123-def456" --model "fal-ai/veo3.1"
# Result: ./generate.sh --result "abc123-def456" --model "fal-ai/veo3.1"
# Check status
bash generate.sh --status "request_id" --model "fal-ai/veo3.1"
# → IN_QUEUE (position: 3) | IN_PROGRESS | COMPLETED
# Get result (when COMPLETED)
bash generate.sh --result "request_id" --model "fal-ai/veo3.1"
# Cancel (only if still queued)
bash generate.sh --cancel "request_id" --model "fal-ai/veo3.1"
bash generate.sh --prompt "A sunset" --model "fal-ai/nano-banana-pro" --logs
# Status: IN_QUEUE (position: 2)
# Status: IN_PROGRESS
# > Loading model...
# > Generating image...
# Status: COMPLETED
# Local file is automatically uploaded to fal CDN
bash generate.sh \
--file "/path/to/photo.jpg" \
--model "fal-ai/kling-video/v2.6/pro/image-to-video" \
--prompt "Camera zooms in slowly"
# Upload first
URL=$(bash upload.sh --file "/path/to/photo.jpg")
# → https://v3.fal.media/files/xxx/photo.jpg
# Then generate
bash generate.sh --image-url "$URL" --model "..." --prompt "..."
# Any public URL works
bash generate.sh --image-url "https://example.com/image.jpg" ...
Supported file types:
Upload flow (two-step):
1. POST rest.alpha.fal.ai/storage/auth/token?storage_type=fal-cdn-v3
→ {"token": "...", "base_url": "https://v3b.fal.media"}
2. POST {base_url}/files/upload
Authorization: Bearer {token}
→ {"access_url": "https://v3b.fal.media/files/..."}
Max file size: 100MB (simple upload)
| Argument | Description | Default |
|----------|-------------|---------|
| --prompt, -p | Text description | (required) |
| --model, -m | Model ID | fal-ai/nano-banana-pro |
| --image-url | Input image URL for I2V | - |
| --file, --image | Local file (auto-uploads) | - |
| --size | square, portrait, landscape | landscape_4_3 |
| --num-images | Number of images | 1 |
Mode Options:
| Argument | Description |
|----------|-------------|
| (default) | Queue mode - submit and poll until complete |
| --async | Submit to queue, return request_id immediately |
| --sync | Synchronous (not recommended for video) |
| --logs | Show generation logs while polling |
Queue Operations:
| Argument | Description |
|----------|-------------|
| --status ID | Check status of a queued request |
| --result ID | Get result of a completed request |
| --cancel ID | Cancel a queued request |
Advanced:
| Argument | Description | Default |
|----------|-------------|---------|
| --poll-interval | Seconds between status checks | 2 |
| --timeout | Max seconds to wait | 600 |
| --lifecycle N | Object expiration in seconds | - |
| --schema [MODEL] | Get OpenAPI schema | - |
To discover the best and latest models, use the search API:
# Search by category
bash search-models.sh --category "text-to-image"
bash search-models.sh --category "text-to-video"
bash search-models.sh --category "image-to-video"
# Search by keyword
bash search-models.sh --query "flux"
bash search-models.sh --query "kling video"
Or use the search_models MCP tool with relevant keywords.
Categories: text-to-image, image-to-image, text-to-video, image-to-video, text-to-speech, speech-to-text
IMPORTANT: Fetch schema to see exact parameters for any model.
# Get schema
bash get-schema.sh --model "fal-ai/nano-banana-pro"
# Show only input parameters
bash get-schema.sh --model "fal-ai/kling-video/v2.6/pro/image-to-video" --input
# Quick schema via generate.sh
bash generate.sh --schema "fal-ai/veo3.1"
API Endpoint:
https://fal.ai/api/openapi/queue/openapi.json?endpoint_id={model-id}
Queue Submit Response:
{
"request_id": "abc123-def456",
"status": "IN_QUEUE",
"response_url": "https://queue.fal.run/.../requests/abc123-def456",
"status_url": "https://queue.fal.run/.../requests/abc123-def456/status",
"cancel_url": "https://queue.fal.run/.../requests/abc123-def456/cancel"
}
Final Result:
{
"images": [{ "url": "https://v3.fal.media/files/...", "width": 1024, "height": 768 }]
}
Images:

• 1024×768 | Generated in 2.2s
Videos:
[Click to view video](https://v3.fal.media/files/.../video.mp4)
• Duration: 5s | Generated in 45s
Async Submission:
Request submitted to queue.
• Request ID: abc123-def456
• Model: fal-ai/veo3
• Check status: --status "abc123-def456"
Control how long generated files remain accessible:
# Files expire after 1 hour (3600 seconds)
bash generate.sh --prompt "..." --lifecycle 3600
# Files expire after 24 hours
bash generate.sh --prompt "..." --lifecycle 86400
Error: Timeout after 600s
Request ID: abc123-def456
Solution: Use --status and --result to check manually, or increase --timeout.
Error: FAL_KEY not set
Solution: Run ./generate.sh --add-fal-key or export FAL_KEY=your_key.
Go to claude.ai/settings/capabilities and add *.fal.ai to allowed domains.
development
Design principles for building polished, native-feeling SwiftUI apps and widgets. Use this skill when creating or modifying SwiftUI views, iOS widgets (WidgetKit), or any native Apple UI. Ensures proper spacing, typography, colors, and widget implementations that look and feel like quality apps rather than AI-generated slop.
data-ai
Design and implement SwiftUI views, components, and app architecture. Use when creating new SwiftUI views, implementing MVVM/TCA patterns, managing state with @Observable, @State, @Binding, or @Environment, designing navigation flows, or structuring iOS app architecture. Triggers on SwiftUI, view model, state management, navigation, coordinator pattern.
development
Implement, review, or improve SwiftUI animations and transitions. Use when adding implicit or explicit animations with withAnimation, configuring spring animations (.smooth, .snappy, .bouncy), building phase or keyframe animations with PhaseAnimator/KeyframeAnimator, creating hero transitions with matchedGeometryEffect or matchedTransitionSource, adding SF Symbol effects (bounce, pulse, variableColor, breathe, rotate, wiggle), implementing custom Transition or CustomAnimation types, or ensuring animations respect accessibilityReduceMotion.
testing
Audit SwiftUI views for accessibility (iOS + macOS) with patch-ready fixes