mohamedabdallah-14/prompt-to-asset/asset-enhancer
Claude Code and agent skill by mohamedabdallah-14/prompt-to-asset
- community
Checking that the SKILL.md file is still in the repository.
Classify a software-asset brief (logo, app icon, favicon, OG image, illustration, splash, icon pack, transparent mark), route to the right image model, rewrite the prompt in the target model's dialect, pick an execution mode (inline_svg / external_prompt_only / api) based on what's actually available, and run the pipeline. Use whenever the user asks for any visual asset for a software product.
Install
npx vskill@latest install mohamedabdallah-14/prompt-to-asset/asset-enhancerSKILL.md
asset-enhancer skill
Comprehensive behavior spec for producing production-grade software-development assets. Drives every asset_* MCP tool.
Cardinal rules
1. Producing production-grade software assets is a routing + post-processing problem, not a prompt-engineering problem.2. The user may not have an image-model API key. The plugin must work anyway.3. There are real zero-key and free-token paths — always surface them first before asking the user to pay for anything. Thefree_api.routesblock inasset_capabilities()enumerates the ranked free programmatic routes: Cloudflare Workers AI (Flux-1-Schnell + SDXL, 10k neurons/day), NVIDIA NIM (Flux / SDXL / SANA, 1k requests/month withNVIDIA_API_KEY, no card), HF Inference (freeHF_TOKEN), Stable Horde (anonymous queue), Pollinations (zero-signup HTTP, last resort), and local ComfyUI. Google's Gemini / Imagen image API is paid for programmatic image output — unbilledGEMINI_API_KEY→ HTTP 429,limit: 0. The AI Studio web UI at https://aistudio.google.com is still free for interactive generation — treat it as a paste-only flow (external_prompt_only→asset_ingest_external).
See rules/asset-enhancer-activate.md for the condensed always-on version. This file is the long-form spec.
Three execution modes
Before generating anything, decide (with the user) which mode to use. Call asset_capabilities() to learn what's available in the current environment.
1. inline_svg — zero key, Claude writes the SVG, server persists
Two-step round trip:
- The server returns an
svg_brief(viewBox, palette, path budget, style hints, skeleton) andinstructions_to_host_llm. You emit the<svg>…</svg>inline in your reply as a ```svg code block so the user can see it. - Immediately after emitting, call `asset_save_inline_svg({ svg, asset_type })`. The server validates the SVG against the brief (viewBox,
<path>count, palette), writesmaster.svgto disk, and — for favicon / app_icon — runs the full platform export (favicon.ico + apple-touch-icon + PWA 192/512/512-maskable; or AppIconSet + Android adaptive + PWA). Returns anAssetBundlewithvariants[].path. Show those paths to the user.
Skip step 2 and the user gets a code block with no file. Do not skip step 2.
Good for: logo, favicon, icon_pack, sticker, transparent_mark, simple app_icon masters. Flat, geometric, ≤40 paths.
Not good for: illustrations, hero art, photoreal, OG cards with web-font typography.
2. external_prompt_only — zero key, user pastes into a web UI
The server returns the dialect-correct prompt + a list of paste targets with URLs in free-first order: AI Studio web UI (https://aistudio.google.com — free interactive Gemini / Imagen), Pollinations (zero-signup HTTP), HF Inference (free HF_TOKEN), Stable Horde (anonymous queue), then paid UIs (Ideogram web, Recraft web, Midjourney, fal.ai Flux, BFL Playground, OpenAI Platform Playground, etc.). The user generates elsewhere, saves the image locally, and calls asset_ingest_external({ image_path, asset_type }) to run the matte / vectorize / validate pipeline.
Note: GEMINI_API_KEY does NOT give free image-gen — Google removed that tier in December 2025. The free Gemini/Imagen route is the AI Studio web UI, not the API.
Good for: any asset type. Best for illustration, hero, text-heavy logos, when the user has a Midjourney / Ideogram subscription but no API key.
3. api — requires a provider key
Server calls the routed provider directly, mattes, vectorizes, exports, validates. Writes a content-addressed AssetBundle with variants[].path for every artifact.
Requires at least one of: OPENAI_API_KEY, IDEOGRAM_API_KEY, RECRAFT_API_KEY, BFL_API_KEY, GEMINI_API_KEY (or GOOGLE_API_KEY). The router falls back among configured providers automatically.
Recommended flow
Asset taxonomy — closed enum
asset_type | Transparency default | Vector? | Text? | inline_svg? | external_prompt_only? | api? | |
|---|---|---|---|---|---|---|---|
logo | yes (RGBA PNG and SVG) | preferred | wordmark optional (composite) | ✅ | ✅ | ✅ | |
app_icon | no on iOS 1024 marketing | no | no | ✅ master only | ✅ master only | ✅ full fan-out | |
favicon | mixed | prefer | rare | ✅ | ✅ | ✅ | |
og_image | no | no | yes (headline) | ❌ (web-font layout beyond LLM reach) | ✅ bg only | ✅ | |
splash_screen | vector icon + solid bg | no | no | ❌ | ✅ | ✅ | |
illustration | often | SVG where geometry allows | avoid | ❌ path budget | ✅ | ✅ | |
icon_pack | yes | mandatory SVG | no | ✅ | ✅ | ✅ | |
hero | optional | no | sometimes | ❌ | ✅ | ✅ | |
sticker | yes | no | rare | ✅ | ✅ | ✅ | |
transparent_mark | yes | no | avoid | ✅ | ✅ | ✅ |
Pipeline (api mode)
Model routing (data-driven)
The routing table lives in data/routing-table.json. Summary:
| Need | Primary | Fallback | Never | |
|---|---|---|---|---|
| Transparent PNG mark | gpt-image-1 (background:"transparent") | Ideogram 3 Turbo style:"transparent" → Recraft V3 | Imagen any, Gemini any, SD 1.5 | |
| Logo with 1–3 word text | Ideogram 3 → gpt-image-1.5 → Recraft V4 | Composite real SVG type over mark | Imagen 4, SD 1.5, Flux Schnell | |
| Logo with 4–10 word text | flux-2 / gpt-image-2 / Nano Banana Pro | gpt-image-1.5 | SD, Flux Schnell, Pollinations | |
| Logo with paragraph-length text | Nano Banana Pro / gpt-image-2 (model can render); composite stays safer for pixel-exact UI | — | All weak-text models | |
| Native SVG | Recraft V4 | LLM-author SVG (simple geometry) — this is `inline_svg` mode | Everyone else | |
| Photoreal hero | Flux 2 / gpt-image-2 / Imagen 4 Ultra | SDXL + brand LoRA | DALL·E 3 | |
| Empty-state illustration | Flux 2 + brand refs (up to 10) / IP-Adapter | SDXL + LoRA → Recraft brand style | One-off Ideogram/MJ (style drift) | |
| App icon | Recraft V4 or Ideogram 3 for mark → packaging pipeline | gpt-image-1.5 mark → packaging | Full-bleed Imagen 4 as final | |
| Favicon | SVG first (LLM-author or Recraft V3) | Raster 512 → vectorize | — | |
| OG image | Satori + @resvg/resvg-js template (no diffusion) | Diffusion only for hero image inside OG template | — |
Dialect rules per provider
Prompts are never forwarded verbatim. Rewrite per target family. See the per-angle research under docs/research/ for derivations; implementation is in packages/mcp-server/src/rewriter.ts.
gpt-image-2 / gpt-image-1.5 / gpt-image-1 (OpenAI)
- Prose sentences. Subject → Context → Style → Constraints.
- Transparency:
gpt-image-1.5andgpt-image-1acceptbackground: "transparent". `gpt-image-2` does NOT — the param 400s (regression). Route transparent jobs to gpt-image-1.5. - For text:
"Acme"in double quotes. Ceilings: gpt-image-2 ~80 chars / paragraph (~99% per third-party); gpt-image-1.5 dense text (~60 chars, LM Arena #1); gpt-image-1 ~50 chars. - Never rely on
negative_promptfield — silently ignored across all three. - gpt-image-2 has an active noise-artifact bug on structured surfaces (clouds, skin, panels). Pricing is not yet on OpenAI's pricing page.
Imagen 3 / 4 (Google) & Gemini 2.5 / 3.1 / 3 Pro Flash Image ("Nano Banana")
- Narrative prose. Imagen has a default rewriter for prompts <30 words, so write ≥30 words of concrete description to suppress it.
- Do not ask for transparency in the prompt — RGB-only VAE renders a checkerboard. Ask for
"solid pure white background"and matte externally. - Per-model text ceilings:
- Imagen 4 family: ≤25 chars / ~3-4 short words per Google's own guidance. Photoreal leaders, not text.
gemini-2.5-flash-image(original Nano Banana 1): ~80% accuracy, degrades past 1-3 words.gemini-3.1-flash-image-preview(Nano Banana 2): ~90% accuracy, ranked #1 on Artificial Analysis Image Arena at launch — strong-text, not weak.gemini-3-pro-image-preview(Nano Banana Pro): paragraph-length reliable, ~94-96% accuracy.- `negative_prompt`: Imagen 4 accepts
negativePrompton the Vertex AI endpoint; the Gemini API surface ignores it. All Nano Banana variants ignore it. - Gemini supports multimodal edit (in-context image refs, up to 14 on 3.1); Imagen does not.
Stable Diffusion 1.5 / SDXL
- Tag-soup: comma-separated descriptors.
"masterpiece, 8k, studio lighting". - 77-token CLIP limit — front-load important tags.
negative_promptis a real CFG sampler feature; use it.- For transparency: LayerDiffuse adapter, or matte after.
Flux 1 / Flux 2 / Flux Pro / Kontext
- Prose narrative. T5 + (Mistral-3 24B VLM on Flux 2) — long-form sentences work; Flux 2 also accepts JSON-structured prompts and
@-image refs. - Never send `negative_prompt`. Per BFL's Flux 2 prompting guide: "FLUX.2 does not support negative prompts." On 1.x the fal schema rejects it; on 2.x fal silently no-ops. Use positive anchors instead.
- Text ceilings: Flux 1.1 Pro / Pro: 1–3 words. Flux Schnell / Klein: 1–2 words. Flux 2 (pro/dev): ~5–10 words / one tagline reliable. Flux 2 Flex: BFL claims strongest text in the Flux 2 line.
- Flux 2 accepts up to 10 brand reference images (was 8 on Flux 1).
- Flux 2 family has 5 SKUs: pro / flex (steps+guidance control) / max / dev (32B open weights, non-commercial) / klein (Apache 2.0 distilled).
Midjourney v6 / v7
- Prose +
--flags.--sref,--cref,--mreffor consistency. - No official API — only reachable via
external_prompt_onlymode. --ar 1:1,--style raw,--q 2.
Ideogram 2 / 3 / 3 Turbo
- Prose + quoted text strings. Best-in-class typography.
- For RGBA transparency: use the dedicated
/ideogram-v3/generate-transparentendpoint; setrendering_speed: "TURBO"for the Turbo tier (there is nostyle: "transparent"API parameter). - "Magic Prompt" expands literal prompts — toggle OFF for logo/icon/brand work.
Recraft V2 / V3 / V4
- Prose.
style_id= brand lock.controls.colors= hex palette enforcement. - Only production model with native SVG output.
- Path count correlates with quality; reject >200 paths for a clean mark.
Brand bundle
If a BrandBundle is provided, every generation injects it. Shape:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/asset-enhancer/SKILL.md
Popularity
- Repository stars
- 21
- Repository forks
- 2
- 7-day trend score
- 15
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/mohamedabdallah-14/prompt-to-asset/asset-enhancer)