AgentStack
SKILL verified MIT Self-run

Gen Image

skill-yasyf-cc-skills-gen-image · by yasyf

Generate project images — mascot logos, README banners (dark/light variants), GitHub social-preview cards, and arbitrary illustrations — via the OpenAI Images API, compressed locally to under 1 MiB. Use when asked to generate a logo, mascot, banner, hero image, social card, brand images, or any illustration for a repo, docs site, or profile; also invoked by repo-bootstrap and gh-profile for their…

No reviews yet
0 installs
12 views
0.0% view→install

Install

$ agentstack add skill-yasyf-cc-skills-gen-image

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No 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.

Are you the author of Gen Image? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

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.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.