Install
$ agentstack add skill-yasyf-cc-skills-gen-image ✓ 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.
About
Generate Project Images
Generate brand and illustration images through one CLI; all post-processing (center-crops, format choice, block via prefers-color-scheme` |
With --logo, composition goes through the edits endpoint so the banner's mascot matches the logo; without it, the banner gets a generic flat motif.
brand — full pipeline (logo + banner + social card)
$GENIMAGE brand --name PROJECT --tagline "..." --concept "robot pup" --out-dir docs/assets
Writes exactly three files into --out-dir: logo.png (transparent mascot), readme-banner.webp (1536x512), and social-preview.jpg (1536x768 — GitHub's social-preview upload accepts only PNG/JPG/GIF under 1 MB). The mascot is generated first, then a banner source is composed from it via the edits endpoint so the character matches, then center-cropped twice. On re-runs, --from-logo reuses the existing logo.png (re-encoding it in place if over 1 MiB) and regenerates only banner + social card — --concept not needed.
Exit criteria: the command exited 0 and printed every output path.
3 — Review with Read
View every output with Read (it renders images) and judge: is the mascot on concept? Is the in-image name/tagline text exactly right? Is the composition centered? On a miss, re-run with a refined --concept/--prompt; wrong text usually fixes itself on a regeneration (accuracy varies per attempt — always quote the exact strings in the prompt). Never ship an image you haven't looked at.
Exit criteria: every generated file viewed and on-spec.
Conventions
- Every output is lossy-compressed locally to under 1 MiB — quantized PNG
logos, quality-stepping WEBP banners, JPEG social cards. Small enough for jj's snapshot limit and GitHub's upload caps, visually identical for flat illustration.
- Logos stay PNG (Great Docs logo auto-detection matches only svg/png);
banners are WEBP; social cards are JPEG.
- Generate related images in one run — or chain them with
--edit-from/
--logo — so the character and palette stay consistent.
Calling from other skills
repo-bootstrap and gh-profile invoke this skill instead of bundling image code. Exact invocations and the files that come back:
| Caller | Invocation | Files written | |---|---|---| | repo-bootstrap (brand images) | $GENIMAGE brand --name N --tagline "T" --concept "C" --out-dir docs/assets | docs/assets/logo.png, docs/assets/readme-banner.webp, docs/assets/social-preview.jpg | | repo-bootstrap (re-run) | $GENIMAGE brand --name N --tagline "T" --from-logo --out-dir docs/assets | banner + social regenerated; existing logo reused | | gh-profile (hero banner) | $GENIMAGE banner --name LOGIN --tagline "T" --variant both --out-dir assets | assets/banner-dark.webp, assets/banner-light.webp |
These filenames are a contract — callers reference them in READMEs and verify steps. Never rename the outputs.
Common issues
ERROR: OPENAI_API_KEY is not set: walk the key chain in step 1; the script intentionally never prompts.
Images API returned 4xx: 401 — bad or expired key; 400 mentioning size — use a supported size and crop locally; 429 — the env key may be billing-capped; prefer the 1Password key over a stale env var.
quantized logo is N bytes, still >= 1 MiB: the mascot came out photographic or noisy — regenerate with "flat illustration, bold clean shapes" wording in the concept.
could not encode ... under 1 MiB: same cause for banners — regenerate with a flatter, less textured prompt.
Wrong text in the image: quote the exact name/tagline strings in the prompt and regenerate; text accuracy varies per generation.
uv: command not found: install uv (https://docs.astral.sh/uv/) — the script declares its own dependencies inline, so uv is the only prerequisite.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: yasyf
- Source: yasyf/cc-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.