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.
Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.
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.
Microscopy data management platform. Access images via Python, retrieve datasets, analyze pixels, manage ROIs/annotations, batch processing, for high-content screening and microscopy workflows.
Python library for working with DICOM (Digital Imaging and Communications in Medicine) files. Use this skill when reading, writing, or modifying medical imaging data in DICOM format, extracting pixel data from medical images (CT, MRI, X-ray, ultrasound), anonymizing DICOM files, working with DICOM metadata and tags, converting DICOM images to other formats, handling compressed DICOM data, or processing medical imaging datasets. Applies to tasks involving medical image analysis, PACS systems, radiology workflows, and healthcare imaging applications.
This skill should be used when working with pre-trained transformer models for natural language processing, computer vision, audio, or multimodal tasks. Use for text generation, classification, question answering, translation, summarization, image classification, object detection, speech recognition, and fine-tuning models on custom datasets.
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.