brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
fal-ai-imageGenerate/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.
Independent GitHub snapshot · Automated classification · Original documentation governs
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 fal