Install
$ agentstack add skill-iamzhihuix-happy-claude-skills-happy-image-gen ✓ 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
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.
Quick usage
bun scripts/main.ts --prompt "A calico cat on green grass, cinematic light" --ar 16:9 --image ./out.png
When to invoke this skill
Invoke this skill whenever the user:
- Asks to generate, create, draw, render, illustrate, or synthesize an image from text.
- Asks to restyle or transform an existing image they provide a path to.
- Names any image-generation model (DALL·E, gpt-image, Flux, SDXL, Gemini Image, Imagen, Seedream, Kolors, Wanx, Stable Diffusion) without specifying 即梦/Dreamina/Jimeng.
Route to happy-dreamina instead when the user explicitly names 即梦, Jimeng, or the dreamina CLI.
Step 0: Preflight (BLOCKING — run before any generation)
Run these checks:
- Locate EXTEND.md config. Check in order:
./.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.
- Verify a provider is usable. Confirm either an env var is set (e.g.,
OPENAI_API_KEY) or EXTEND.md references anapi_key_env/api_key_sourcethat resolves. If nothing resolves, loop back to setup.
- Verify Bun is available. Run
command -v bun. If missing, fall back tonpx -y bun scripts/main.ts ....
Step 1: Choose a provider
Pick in this order of preference:
--providerexplicitly passed by the user.- The
default_providerin EXTEND.md. - The first provider whose API key is present in the environment. Priority when auto-detecting:
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).
Step 2: Fill in parameters
--prompt: the user's full request, trimmed. Always double-quote.--ar: aspect ratio —1:1/16:9/9:16/3:4/4:3. Seereferences/aspect_ratio_map.mdfor how each provider interprets this.--quality:draft(fastest + cheapest),hd(default), orultra(4K-class, slower).--ref: 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: REQUIRED — output file path. Use a descriptive name (e.g.,./out/hero-landscape.png).
Step 3: Run
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.
Step 4: Handle errors
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.- Timeouts / network errors — retry once. If still failing, surface the raw message and
providerso the user knows what to check.
See references/error_codes.md for a per-provider error table.
References
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.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: iamzhihuix
- Source: iamzhihuix/happy-claude-skills
- License: MIT
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.