Install
$ agentstack add skill-mikefluff-skills-image-prompt ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Generate a tight, model-aware prompt for AI image generation. Output: one well-formed prompt string (optionally + a negativePrompt, reference list, or edit instruction). This skill does NOT call the image model — it produces the text you paste into Midjourney / Flux / Imagen / Nano Banana / gpt-image-2 / Ideogram / Recraft / Seedream / Qwen-Image / HiDream / Krea / SD.
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 edit or multi-ref, the 7th conditional block fires — see references/editing-prompting.md`.
- Load model-specific syntax from
references/models/.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 --prompt-file. 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— generate default prompt (intent-routed model)image-prompt --model— 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 --style— force a style (photorealistic,editorial,3d-render,illustration,product-shot,cinematic,minimalist,no-ai-look)image-prompt --edit— edit mode; expects a source image (URL or path). Generates preserve/change instruction.image-prompt --reference [@:]— attach a reference. Repeatable. Roles:character,style,palette,layout. Weights 0-1. Triggers multi-ref mode.image-prompt --variants 3— 3 alternatives with different style or lightingimage-prompt --improve— user provides a weak prompt + the bad output description; skill rewritesimage-prompt --execute— also call the API if the env var for--modelis set; save PNG to./generated/image/image-prompt --execute --output— custom output dirimage-prompt --execute --yes— skip cost confirmationimage-prompt --check --model— 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](references/model-picker.md) | Always at step 3 — intent → model → which model-file to load | | [references/prompt-formula.md](references/prompt-formula.md) | When building any prompt — 6-part formula + per-part vocabularies | | [references/lighting-vocabulary.md](references/lighting-vocabulary.md) | When picking lighting hints — portrait / scene / quality-of-light dictionaries | | [references/camera-vocabulary.md](references/camera-vocabulary.md) | When the image should look photographic — lens/sensor/quality-tag dictionary | | [references/editing-prompting.md](references/editing-prompting.md) | Mode edit or multi-ref — preserve/change grammar, identity locks, weighted refs | | [references/text-in-image.md](references/text-in-image.md) | Mode text-heavy — per-model rules for legible text + multilingual | | [references/models/midjourney.md](references/models/midjourney.md) | Midjourney V8.1 (v7 legacy flags) — --sref, --oref, --raw, --ar, --s, --c, --no, --p, --w | | [references/models/flux.md](references/models/flux.md) | Flux 2 Pro/Dev, 1.1 Pro Ultra (Raw), Kontext, Schnell, Krea | | [references/models/google.md](references/models/google.md) | Nano Banana Pro / 2 / 2 Lite (Gemini image family) + the Imagen 4 shutdown | | [references/models/openai.md](references/models/openai.md) | gpt-image-2 (DALL-E 3 retirement note) | | [references/models/ideogram-recraft.md](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](references/models/bytedance-seedream.md) | Seedream 5.0 Pro / Lite (weighted multi-ref, layered PNG output) | | [references/models/open-source.md](references/models/open-source.md) | SD 3.5 + SDXL legacy + Qwen-Image 2.0 + HiDream-O1 | | [references/execute.md](references/execute.md) | --execute mode — env var matrix, provider availability check, cost preview, troubleshooting, fall-back behaviour |
EXAMPLES
See [examples/before-after.md](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 $OPENAIAPIKEY", 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/-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](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](references/text-in-image.md).
Use this skill. For video — use video-prompt (different vocabulary, has temporal flow + camera movement, not single-frame lighting).
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Mikefluff
- Source: Mikefluff/skills
- License: MIT
- Homepage: https://www.npmjs.com/package/@mikefluff/skills
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.