image-prompt
SkillMediaWrite prompts for 14+ frontier AI image generators (Midjourney V8.1, Flux 2/Kontext, Nano Banana Pro/2, gpt-image-2, Ideogram 4/3, Recraft V3, Seedream 5, Qwen, HiDream, Krea, SDXL). Modes: T2I, edit, multi-ref, text-in-image. Use when: 'prompt for an image', 'Midjourney prompt', 'edit with Kontext', 'character consistency', 'poster with text'.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the image-prompt skill
What this skill tells your AI
The instructions your AI receives, as published by mikefluff/skills in skills/image-prompt/SKILL.md and read by ahel’s review.
Use when the user wants an image for a specific scene, post cover, product mock, portrait, hero illustration, abstract background, OR wants to edit an existing image with character preserved, OR wants a multi-reference composite (character + style + palette), OR wants legible text inside an image. The skill picks the right model + mode + vocabulary that produces sharp, coherent output instead of generic "AI image".
This skill does NOT:
- generate the image itself (that's the model)
- design layouts or multi-frame compositions (use a design tool)
- write video prompts (use
video-prompt)
ROLE
Read the request → identify subject + intent (generate / edit / multi-ref / text-heavy) → pick target model from references/model-picker.md → assemble the prompt using the 6-part formula plus the conditional 7th block (references) → add lighting + camera + texture hints → return the prompt + optional negative or reference list.
PIPELINE
-
Clarify if needed. If the user gave only a topic ("cover for a post about cold-emails"), pick a sensible default subject ("close-up of an empty mailbox at dawn") and check before committing. If they gave a full scene, skip.
-
Mode select. Pick one:
t2i— text-to-image (default).edit— modify an existing image; preserve identity / lighting / pose, change one thing.multi-ref— compose from multiple reference images (character + product + style).text-heavy— legible text is the subject (poster, book cover, signage).
-
Pick model. Default by intent — see
references/model-picker.md:- Editorial / fashion / "vibes" → Midjourney V8.1
- Photoreal portrait / product → Flux 2 Pro or Nano Banana Pro
- Text-heavy → Ideogram 3 Quality or Nano Banana Pro
- Edit → Flux Kontext or Nano Banana Pro or gpt-image-2
- Multi-ref composite → Seedream 5.0 (weighted roles, layered output) or Flux 2 Pro or gpt-image-2
- Self-host / open-weights → Flux 2 [dev], SD 3.5, Qwen-Image 2.0 (CJK), HiDream-O1
- Cheap iteration → Flux Schnell / Nano Banana 2 Lite / Ideogram 3 Turbo
-
Build the prompt — see
references/prompt-formula.md:{subject + action} + {setting} + {style} + {lighting} + {camera/lens} + {texture/realism}When mode is
editormulti-ref, the 7th conditional block fires — seereferences/editing-prompting.md. -
Load model-specific syntax from
references/models/<vendor>.mdand apply (flags / NL phrasing / weighted refs / preserve-change grammar). -
Add negative prompt if useful (mainly SDXL / Flux). Standard set:
text, watermark, logo, distorted anatomy, extra fingers, blurry, low resolution. -
Output. Return:
- The prompt as one fence-block (paste-ready)
- Optional negative as a second fence-block
- For multi-ref: an annotated list of refs with roles + weights
- 1-line note: which model + mode + key conventions applied
- If
--variants Nrequested — N alternatives with different style / lighting / camera
-
(Optional) Execute via API. If
--executewas passed AND the env var for the chosen model is set, also runpython3 scripts/run.py --model <model> --prompt-file <generated.txt>. This calls the vendor API and saves a real PNG to./generated/image/. On any failure, fall back to prompt-only and print the reason. Seereferences/execute.md.
MODES
image-prompt <topic-or-scene>— generate default prompt (intent-routed model)image-prompt <scene> --model <name>— target a specific model. Valid:midjourney-v8,flux-2-pro,flux-2-dev,flux-1-1-pro-ultra,flux-kontext,flux-schnell,flux-krea,nano-banana-pro,nano-banana-2,nano-banana-2-lite,gpt-image-2,ideogram-3,recraft-v3,seedream-5,qwen-image,hidream-o1,krea-1,sd-3-5,sdxlimage-prompt <scene> --style <style>— force a style (photorealistic,editorial,3d-render,illustration,product-shot,cinematic,minimalist,no-ai-look)image-prompt <scene> --edit— edit mode; expects a source image (URL or path). Generates preserve/change instruction.image-prompt <scene> --reference <path-or-url>[@<role>:<weight>]— attach a reference. Repeatable. Roles:character,style,palette,layout. Weights 0-1. Triggers multi-ref mode.image-prompt <scene> --variants 3— 3 alternatives with different style or lightingimage-prompt <scene> --improve— user provides a weak prompt + the bad output description; skill rewritesimage-prompt <scene> --execute— also call the API if the env var for--modelis set; save PNG to./generated/image/image-prompt <scene> --execute --output <dir>— custom output dirimage-prompt <scene> --execute --yes— skip cost confirmationimage-prompt --check --model <slug>— verify env + connectivity, no generationimage-prompt --list-providers— list executable providers given current env (image modality)
REFERENCES (load on demand)
| File | When to load |
|---|---|
| references/model-picker.md | Always at step 3 — intent → model → which model-file to load |
| references/prompt-formula.md | When building any prompt — 6-part formula + per-part vocabularies |
| references/lighting-vocabulary.md | When picking lighting hints — portrait / scene / quality-of-light dictionaries |
| references/camera-vocabulary.md | When the image should look photographic — lens/sensor/quality-tag dictionary |
| references/editing-prompting.md | Mode edit or multi-ref — preserve/change grammar, identity locks, weighted refs |
| references/text-in-image.md | Mode text-heavy — per-model rules for legible text + multilingual |
| references/models/midjourney.md | Midjourney V8.1 (v7 legacy flags) — --sref, --oref, --raw, --ar, --s, --c, --no, --p, --w |
| references/models/flux.md | Flux 2 Pro/Dev, 1.1 Pro Ultra (Raw), Kontext, Schnell, Krea |
| references/models/google.md | Nano Banana Pro / 2 / 2 Lite (Gemini image family) + the Imagen 4 shutdown |
| references/models/openai.md | gpt-image-2 (DALL-E 3 retirement note) |
| references/models/ideogram-recraft.md | Ideogram 3 Flash/Turbo/Default/Quality, Ideogram 4 (open weights, JSON prompting) + Recraft V3 (SVG) |
| references/models/bytedance-seedream.md | Seedream 5.0 Pro / Lite (weighted multi-ref, layered PNG output) |
| references/models/open-source.md | SD 3.5 + SDXL legacy + Qwen-Image 2.0 + HiDream-O1 |
| references/execute.md | --execute mode — env var matrix, provider availability check, cost preview, troubleshooting, fall-back behaviour |
EXAMPLES
See examples/before-after.md — calibration pairs covering portrait, product, scene, abstract, illustration, text-in-image (Ideogram 3), edit (Flux Kontext), multi-reference composite (Seedream 5.0), open-weights (Qwen-Image).
CONSTRAINTS
- Don't name real people. Use role descriptors ("a confident business person") not real names.
- Don't promise reliable text > 1 short phrase outside text-tier models. Reliable text: Ideogram 3 Quality, Nano Banana Pro, Nano Banana 2, gpt-image-2, Qwen-Image. Avoid > 5 words in Midjourney / Flux 2 Pro (≈60%); avoid entirely in SD 3.5 / SDXL. For exact typography: render in a design tool, not the generator.
- For character consistency across multiple images — use a model that supports identity locks: Midjourney V8.1 (
--oref), Flux Kontext, Nano Banana Pro (up to 5 people), gpt-image-2 (16 refs), Seedream 5.0 (Character weight 1.0). - Don't re-describe the ref's appearance in the prompt. When
--referenceis attached as Character, the prompt should describe wardrobe / action / expression / environment — NOT face / hair / body. Re-describing overrides the ref and causes drift. - Don't mix Midjourney
--flags into NL-only models. Nano Banana / gpt-image-2 / Flux NL prompts ignore (or break on)--ar,--s,--style raw, etc. Use API params or NL phrasing instead. - SD 3.5 weight syntax
(word:1.3)is a no-op. Despite accepting the syntax, SD 3.5 ignores weights. Use keyword priority order. Weights DO work on SDXL / SD 1.5. - One subject per prompt unless explicitly multi-subject. The model can't render "a cat, a dog, a horse, and a fox" cleanly.
- Specific lighting beats abstract. "Soft directional key light from upper left" > "good lighting".
- Don't bury the subject. First 12-15 words anchor the model.
- Kontext deviation: in edit mode with Flux Kontext / Nano Banana Pro / gpt-image-2, the prompt is JUST the change instruction — don't restate subject / setting / style from the source image.
--executeis opt-in. Default flow stays prompt-only. Only run the API when the user passes--execute.- Never print API keys. Not in output, not in errors, not in fall-back text. Mask if you must reference them ("set $OPENAI_API_KEY", not "key starts with sk-...").
- Confirm cost. Anything above $0.10 estimated must hit interactive Y/N (handled by
common/runners/cost.py). Bypass only when user passes--yes. - Output dir is
./generated/image/by default. Don't write outside it without explicit--output. - API failure → fall back gracefully. Save prompt to
./generated/image/<timestamp>-prompt-only.txtwith a one-line reason. Skill stays useful.
INVOCATION HINTS
When the user says any of:
- "generate / write / make me a prompt for an image / cover / illustration / artwork"
- "Midjourney / Flux / Imagen / Nano Banana / gpt-image-2 / Ideogram / Seedream / Recraft / Qwen-Image / SD prompt for..."
- "edit this image", "change the dress color, keep the face", "preserve identity"
- "character consistency across covers / chapters"
- "multi-reference", "composite from these images"
- "poster / book cover / signage with legible text"
- "cover image / hero image / thumbnail / illustration prompt"
- "product shot / portrait / scene prompt"
- "improve this image prompt"
- "execute the prompt", "actually generate", "fire the gen", "use my OpenAI / Flux / Imagen key"
- "save the image", "render the asset"
RU triggers (use the skill when the user writes any of):
- «промпт для Midjourney / Flux / Imagen / Nano Banana / gpt-image-2 / Ideogram / Seedream / Recraft / Qwen / HiDream / SD»
- «обложка для статьи / поста / лонгрида»
- «отредактируй картинку», «поменяй цвет платья, оставь лицо», «сохрани идентичность»
- «единый персонаж на всех обложках», «character consistency»
- «постер с текстом», «обложка книги с подзаголовком»
- «hero-картинка для лендинга»
- «улучшить промпт для изображения»
- «multi-reference композит», «комбинация рефов»
- «выполни промпт», «сгенерируй через API», «вызови модель», «сделай реально»
- «используй мой OpenAI / Imagen / Flux ключ», «сохрани картинку»
The prompt itself is usually written in English (most models parse EN best). Only when the user explicitly asks for an RU-language prompt should the body be RU. RU terminology mapping for lighting + camera vocabulary lives in references/lighting-vocabulary.md (section RU терминология).
For multilingual text rendering INSIDE the image (Chinese, Japanese, mixed scripts), use Qwen-Image 2.0 — see references/text-in-image.md.
Use this skill. For video — use video-prompt (different vocabulary, has temporal flow + camera movement, not single-frame lighting).
Signals
- GitHub stars
- 21
- Forks
- 1
- Last commit
- Sep 2026
ahel review
K6info
bundled executables the agent is told to runK1binfo
installs-packages (in references/execute.md)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
image-prompt-mikefluff- Source
- github.com/mikefluff/skills