iamzhihuix/happy-image-gen
Universal AI image generation supporting OpenAI DALL·E / gpt-image, Google Gemini Image / Imagen, Replicate (Flux / SDXL / any model), Stability AI, FAL, Ark (Seedream 4.5), Bailian (qwen-image / wanx), and SiliconFlow. Use this skill whenever the user asks to generate, create, draw, illustrate, render, or synthesize images from text prompts or reference images. Typical phrases include "draw a ...", "generate an image of ...", "画一张 ...", "给我来张图", "make a poster of ...", "create an illustration ...", or any mention of image-generation model families like DALL·E, gpt-image, Flux, SDXL, Seedream, Imagen, Gemini image, Kolors, or Wanx. Always use this skill even if the user does not name a specific model — pick a provider based on their EXTEND.md defaults or available API keys in the environment. Do NOT use this skill when the user explicitly mentions 即梦 / Dreamina / Jimeng — those go to happy-dreamina instead.
npx skills add https://github.com/iamzhihuix/happy-claude-skills --skill happy-image-gen
Generates still images across 8 providers through one CLI: bun scripts/main.ts .... The same CLI handles text-to-image and image-to-image (reference-driven) edits.
bun scripts/main.ts --prompt "A calico cat on green grass, cinematic light" --ar 16:9 --image ./out.png
Invoke this skill whenever the user:
Route to happy-dreamina instead when the user explicitly names 即梦, Jimeng, or the dreamina CLI.
Run these checks:
./.happy-skills/happy-image-gen/EXTEND.md (project)$XDG_CONFIG_HOME/happy-skills/happy-image-gen/EXTEND.md~/.happy-skills/happy-image-gen/EXTEND.md (user)If none exist, run bun scripts/main.ts --setup and follow references/config/first-time-setup.md to create one. Do not proceed to generation until the user has at least one provider configured.
OPENAI_API_KEY) or EXTEND.md references an api_key_env / api_key_source that resolves. If nothing resolves, loop back to setup.command -v bun. If missing, fall back to npx -y bun scripts/main.ts ....Pick in this order of preference:
--provider <id> explicitly passed by the user.default_provider in EXTEND.md.openai → google → replicate → stability → fal → ark → bailian → siliconflow.See references/providers.md for each provider's required env vars, default models, and strengths (e.g., prefer google for text-in-image, replicate for Flux-family photorealism, ark for Chinese text fidelity).
--prompt: the user's full request, trimmed. Always double-quote.--ar: aspect ratio — 1:1 / 16:9 / 9:16 / 3:4 / 4:3. See references/aspect_ratio_map.md for how each provider interprets this.--quality: draft (fastest + cheapest), hd (default), or ultra (4K-class, slower).--ref <path>: repeat for multiple reference images. Not every provider supports this — see providers.md.--model: override the default model for the chosen provider. Omit unless the user asked for a specific one.--image <path>: REQUIRED — output file path. Use a descriptive name (e.g., ./out/hero-landscape.png).bun scripts/main.ts \
--prompt "..." \
--image ./out.png \
--provider openai \
--ar 1:1 \
--quality hd
On success the CLI prints the resolved absolute path and byte count. In --json mode it emits:
{ "success": true, "provider": "openai", "model": "gpt-image-1", "image": "/abs/path.png", "size_bytes": 1416341, "format": "png" }
Echo the path back to the user.
config: No provider selected ... — no API key in env and no EXTEND.md. Loop back to Step 0.[openai] OpenAI images API 401 ... — key invalid or expired. Ask the user to refresh it.[openai] ... 400 ... content_policy_violation — prompt blocked. Show the raw error to the user; do not paraphrase.provider so the user knows what to check.See references/error_codes.md for a per-provider error table.
Read on demand:
references/providers.md — all 8 providers, required env vars, default models, strengths.references/aspect_ratio_map.md — how each provider interprets --ar.references/error_codes.md — common errors per provider and fixes.references/config/first-time-setup.md — step-by-step for --setup.references/config/extend-schema.md — EXTEND.md schema reference.Template for EXTEND.md: assets/EXTEND.template.md.
Take iamzhihuix/happy-image-gen 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.
The instructions reference npx.
Without those the skill loads but fails at the first command.