Generate/edit images via fal.ai. Supports Google Nano Banana Pro and OpenAI GPT Image 2 selected from config/.env. Supports reference images and strong text rendering. ALWAYS read SKILL.md before first use.
npx skills add https://github.com/artwist-polyakov/polyakov-claude-skills --skill fal-ai-image
Generate images via fal.ai. The skill now supports two fal-hosted models:
fal-ai/nano-banana-pro) — default, backward-compatibleopenai/gpt-image-2) — enabled from config/.envSynonyms the agent should treat as equivalent:
gpt = openai = GPT Image 2nano banana = google = gemini = Nano Banana ProBest for: infographics, text rendering, banners, photo edits, reference-based compositions.
config/README.md logic; if no selector is configured, the skill stays on Nano Banana--model ... when the user explicitly asks for a specific model/provider or asks to compare providersupload.sh first to get URLs for edit.shReference images provided? -> Edit mode (upload.sh -> edit.sh)
Text-only generation? -> Generate mode (generate.sh)
Model comes from config/.env:
no selector set -> Nano Banana Pro
FAL_IMAGE_PROVIDER=openai -> GPT Image 2
FAL_IMAGE_MODEL=... -> exact override
Requires FAL_KEY in config/.env or the environment.
Model selection:
--model — one-off override for the current commandFAL_IMAGE_MODEL — exact override in configFAL_IMAGE_PROVIDER — google or openaiUse --model whenever the user explicitly says things like:
Answer that the skill supports two choices and map the command like this:
--model gpt for OpenAI GPT Image 2--model gemini or --model nano-banana for Nano BananaOpenAI quality default:
FAL_IMAGE_OPENAI_QUALITY=medium unless overridden with --qualitymedium as the default for GPT to avoid expensive exploratory runsFull setup and troubleshooting: config/README.md.
Read references only when needed:
mask_url, inpainting behaviorStrengths:
--web-search in generate modeMain params:
--aspect-ratio--resolution--web-search (generate only)Strengths:
quality controlFAL_KEY through fal, no separate OpenAI key$0.18 per image, but check the live model page before quoting an exact numberMain params:
--image-size--qualityCompatibility layer:
--image-size is omitted, the scripts derive a valid OpenAI image_size from --aspect-ratio + --resolutiongenerate.shupload.shedit.shNano Banana example:
sh scripts/generate.sh \
--model "gemini" \
--prompt "infographic about coffee brewing" \
--aspect-ratio "9:16" \
--resolution "1K" \
--output-dir "./images" \
--filename "coffee_infographic"
GPT Image 2 example:
sh scripts/generate.sh \
--model "gpt" \
--prompt "realistic product hero shot with sharp packaging text" \
--image-size "landscape_4_3" \
--quality "medium" \
--output-dir "./images" \
--filename "product_hero"
Compatibility example for GPT:
sh scripts/generate.sh \
--model "openai" \
--prompt "editorial portrait, window light, magazine cover layout" \
--aspect-ratio "4:3" \
--resolution "2K"
| Param | Required | Default | Notes |
|-------|----------|---------|-------|
| --prompt | yes | - | text prompt |
| --model | no | config / Nano Banana fallback | nano-banana, google, gemini, gpt, openai, or exact endpoint |
| --aspect-ratio | no | 1:1 | Nano native; for GPT used only when --image-size is omitted |
| --resolution | no | 1K | Nano native; for GPT used only when --image-size is omitted |
| --image-size | no | derived from ratio/resolution | GPT only; preset (landscape_4_3) or WIDTHxHEIGHT |
| --quality | no | medium via config | GPT only; low, medium, high |
| --num-images | no | 1 | 1-4 |
| --output-format | no | png | jpeg, png, webp |
| --output-dir | no | - | local path |
| --filename | no | generated | base filename |
| --web-search | no | false | Nano only; ignored for GPT |
Nano Banana example:
sh scripts/edit.sh \
--model "gemini" \
--prompt "combine these into a collage" \
--image-urls "https://example.com/img1.png,https://example.com/img2.png" \
--aspect-ratio "16:9" \
--output-dir "./images" \
--filename "collage"
GPT Image 2 example:
sh scripts/edit.sh \
--model "gpt" \
--prompt "make this product shot look like a premium studio campaign" \
--image-urls "https://example.com/source.png" \
--mask-url "https://example.com/mask.png" \
--image-size "auto" \
--quality "medium" \
--output-dir "./images" \
--filename "studio_edit"
| Param | Required | Default | Notes |
|-------|----------|---------|-------|
| --prompt | yes | - | edit instruction |
| --image-urls | yes | - | comma-separated URLs |
| --model | no | config / Nano Banana fallback | nano-banana, google, gemini, gpt, openai, or exact endpoint |
| --mask-url | no | - | GPT edit only; optional mask for targeted edits |
| --aspect-ratio | no | auto | Nano native; for GPT used only when --image-size is omitted |
| --resolution | no | 1K | Nano native; for GPT used only when --image-size is omitted |
| --image-size | no | derived from ratio/resolution / auto | GPT only |
| --quality | no | medium via config | GPT only |
| --num-images | no | 1 | 1-4 |
| --output-format | no | png | jpeg, png, webp |
| --output-dir | no | - | local path |
| --filename | no | edited | base filename |
# Get hosted URL for local file
URL=$(sh scripts/upload.sh --file /path/to/image.png)
# Get base64 data URI for manual API work
URI=$(sh scripts/upload.sh --file /path/to/image.png --base64)
quality and image_sizemedium quality to reduce surprise spendFor current pricing, check fal's model pages in config/README.md.
edit.sh now polls the same /edit queue endpoints documented by falCreate beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.
Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.
Publish Markdown articles to X (Twitter) Articles editor with proper formatting. Use when user wants to publish a Markdown file/URL to X Articles, or mentions "publish to X", "post article to Twitter", "X article", or wants help with X Premium article publishing. Handles cover image upload and converts Markdown to rich text automatically.
Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.
Teaches the AI to design like a high-end agency. Defines the exact fonts, spacing, shadows, card structures, and animations that make a website feel expensive. Blocks all the common defaults that make AI designs look cheap or generic.
Lightweight WSI tile extraction and preprocessing. Use for basic slide processing tissue detection, tile extraction, stain normalization for H&E images. Best for simple pipelines, dataset preparation, quick tile-based analysis. For advanced spatial proteomics, multiplexed imaging, or deep learning pipelines use pathml.
Take artwist-polyakov/fal-ai-image from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.