Imagegen
nexu-io/open-design
Generate and edit images using OpenAI's Image API for project assets — UI mockups, icons, illustrations, social cards, and visual references.
Generate or edit images using the OpenAI Image API (gpt-image-2).
$ npx skills add spencerpauly/awesome-cursor-skills --skill generating-images -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install spencerpauly/awesome-cursor-skills generating-images --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/spencerpauly/awesome-cursor-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/resources/generating-images .claude/skills/generating-images && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "generating-images" agent skill from https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/generating-images into .claude/skills/generating-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generating-images", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/generating-imagesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add spencerpauly/awesome-cursor-skills --skill generating-images -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install spencerpauly/awesome-cursor-skills generating-images --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spencerpauly/awesome-cursor-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/resources/generating-images .agents/skills/generating-images && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "generating-images" agent skill from https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/generating-images into .agents/skills/generating-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generating-images", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add spencerpauly/awesome-cursor-skills --skill generating-images -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install spencerpauly/awesome-cursor-skills generating-images --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spencerpauly/awesome-cursor-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/resources/generating-images .cursor/skills/generating-images && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "generating-images" agent skill from https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/generating-images into .cursor/skills/generating-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generating-images", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/spencerpauly/awesome-cursor-skills.git --path resources/generating-images--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add spencerpauly/awesome-cursor-skills --skill generating-images -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install spencerpauly/awesome-cursor-skills generating-images --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spencerpauly/awesome-cursor-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/resources/generating-images .gemini/skills/generating-images && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "generating-images" agent skill from https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/generating-images into .gemini/skills/generating-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generating-images", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install spencerpauly/awesome-cursor-skills generating-imagesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add spencerpauly/awesome-cursor-skills --skill generating-images -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/spencerpauly/awesome-cursor-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/resources/generating-images .github/skills/generating-images && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "generating-images" agent skill from https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/generating-images into .github/skills/generating-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generating-images", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add spencerpauly/awesome-cursor-skills --skill generating-images -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install spencerpauly/awesome-cursor-skills generating-images --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spencerpauly/awesome-cursor-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/resources/generating-images .opencode/skills/generating-images && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "generating-images" agent skill from https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/generating-images into .opencode/skills/generating-images/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generating-images", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
generating-imagesGenerate or edit images using the OpenAI Image API (gpt-image-2).
Generating Images is an agent skill from spencerpauly/awesome-cursor-skills. Generate or edit images using the OpenAI Image API (gpt-image-2). Use when the user asks to generate, create, draw, render, illustrate, mock up, or edit an image, icon, logo, mockup, illustration, OG image, blog hero, marketing asset, or similar visual. Also use when the user supplies a reference image and asks to modify, restyle, or remix it. Triggers on: "generate an image", "create an image", "make a picture of", "edit this image", "restyle this", "make a mockup of", "draw a", "render a", "illustration of".
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/generate_image.py`).
It sits in Media & Creative, covering Image generation, Social media graphics and Image editing. It works with OpenAI. The repository describes itself as: A curated list of awesome skills for Cursor. The licence is CC0-1.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 99cd265. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3pipFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
platform.openai.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OPENAI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Generating Images loads about 3.7k tokens when it runs. Until then it costs about 133 tokens; SKILL.md has 1,786 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
sing `OPENAI_API_KEY`** by reading from `.env` files,cp .env.example .env# then edit .env and put your real key inset -a && source .env && set +aAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from spencerpauly/awesome-cursor-skills at commit 99cd265, republished under its CC0-1.0 licence (© spencerpauly). 1,786 words, ~3,736 tokens.
.claude/skills/generating-images/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Use this skill any time the user asks to generate or edit an image. It wraps
OpenAI's gpt-image-2 model via a Python script, supports both text-only
prompts and one-or-more reference images, and writes the resulting PNG/JPEG/WebP
to disk.
gpt-image-2. Never fall back to gpt-image-1, dall-e-3,
or any other model. The script has no --model flag for this reason.OPENAI_API_KEY by reading from .env files,
1Password, etc. unless the user explicitly tells you to. If the env var is
missing, ask the user how they want to provide it (or to export it) and
then stop.--mask).Do not use this skill for:
You need an OPENAI_API_KEY exported in your environment. Get one at
platform.openai.com/api-keys.
The skill ships with a .env.example next to this SKILL.md. Copy it and
fill in your key:
cp .env.example .env
# then edit .env and put your real key inThen export it before running the script:
set -a && source .env && set +aOr just export it directly in your shell:
export OPENAI_API_KEY="sk-..."If OPENAI_API_KEY is not set, the script exits with code 2 immediately.
Do not try to read it from anywhere else without the user's explicit
permission.
Your OpenAI org must be verified for gpt-image-2 at
platform.openai.com/settings/organization/general.
If you see a 403 mentioning "organization must be verified", surface it and
stop — do not switch models.
pip install --upgrade openaiThe Python script lives next to this SKILL.md at scripts/generate_image.py.
When this skill is installed at ~/.cursor/skills/generating-images/, the
script will be at ~/.cursor/skills/generating-images/scripts/generate_image.py.
It prints the absolute path(s) of the written image(s) to stdout. Errors go to stderr with a non-zero exit code, and the script exits immediately on the first error.
Always run via the Shell tool. Pick a sensible output path inside the user's
current workspace (e.g. ./public/generated/<slug>.png for web projects, or
./<slug>.png otherwise).
python3 ~/.cursor/skills/generating-images/scripts/generate_image.py \
--prompt "Minimal flat-vector app icon for a note-taking app, indigo gradient, rounded square, soft shadow" \
--size 1024x1024 \
--quality high \
--out ./icon.pngpython3 ~/.cursor/skills/generating-images/scripts/generate_image.py \
--prompt "Restyle this photo as a watercolor painting with warm tones" \
--image ./photo.jpg \
--out ./photo-watercolor.pngpython3 ~/.cursor/skills/generating-images/scripts/generate_image.py \
--prompt "Photorealistic flat-lay product shot combining all of these items on a white background" \
--image ./a.png --image ./b.png --image ./c.png \
--out ./flatlay.pngThe mask must be the same size and format as the first input image, with an alpha channel marking the editable region.
python3 ~/.cursor/skills/generating-images/scripts/generate_image.py \
--prompt "Replace the sky with a vivid sunset" \
--image ./scene.png --mask ./sky-mask.png \
--out ./scene-sunset.pngWhen you need to generate multiple different images in one go (e.g. a set
of blog heroes, several icon variations with different prompts, OG images for
many pages), use --batch instead of running the script N times. It runs all
jobs in parallel from a single Python process — much faster than serial calls
and avoids repeated SDK startup cost.
Write a JSON file describing every job, then call the script once:
cat > /tmp/img-jobs.json <<'EOF'
[
{
"prompt": "Minimal flat-vector app icon for a note-taking app, indigo gradient, rounded square",
"out": "./public/icons/notes.png",
"size": "1024x1024",
"quality": "high"
},
{
"prompt": "Photoreal blog hero: a cozy library with warm afternoon light, 5:3 ratio",
"out": "./public/static/blog/library.png",
"size": "1600x960",
"quality": "medium"
},
{
"prompt": "Restyle this product photo as a watercolor painting with warm tones",
"image": ["./public/products/mug.jpg"],
"out": "./public/products/mug-watercolor.png"
}
]
EOF
python3 ~/.cursor/skills/generating-images/scripts/generate_image.py \
--batch /tmp/img-jobs.json --concurrency 5Each job object accepts the same fields as the CLI flags: prompt (required),
out, size, quality, format, n, image (string or array of strings),
mask. Defaults match the single-shot CLI.
Behavior:
--concurrency (default 4). A reasonable
range is 3–8; OpenAI rate-limits per org so don't go too wild.ERROR: job <i> failed: ...)
and the script exits with code 1 after the remaining jobs finish. Other
jobs are not cancelled — partial output is fine and you can retry only the
failed ones.--batch is mutually exclusive with --prompt / --image / --mask.When to prefer --batch over parallel Shell calls: any time you're
generating ≥2 distinct images in the same turn. Don't fire multiple parallel
Shell invocations of this script — use one batch call instead.
Don't confuse with --n. --n produces multiple variations of the same
prompt in a single API call (cheaper, but all the same idea). --batch runs
different prompts in parallel. They can be combined: a batch job can set
"n": 4 to get 4 variations of that one prompt.
| Flag | Default | Notes |
|---|---|---|
--prompt | required* | Required unless --batch is used. Always include, even when editing. |
--image | none | Pass multiple times for multiple references. Triggers images.edit. |
--mask | none | Optional inpainting mask (PNG with alpha). |
--out | ./image.png | Output path; index suffix added when --n > 1. |
--size | auto | 1024x1024, 1536x1024, 1024x1536, 2048x2048, 3840x2160, etc. Edges must be multiples of 16, max 3840px, ratio ≤ 3:1. |
--quality | auto | low (fast drafts), medium, high (final assets). |
--format | png | png, jpeg, webp. |
--n | 1 | Variations of the SAME prompt in one call. |
--batch | none | Path to JSON array of job objects; runs them in parallel. |
--concurrency | 4 | Max parallel workers in --batch mode. |
There is intentionally no --model flag. The model is hardcoded to
gpt-image-2.
1024x10241536x10241600x960 (both edges multiples of 16, ratio = 5:3)1024x15363840x2160low for quick exploration / drafts (cheapest, fastest).medium is a good default.high only for final, ship-ready assets — significantly more expensive
and can take up to ~2 minutes.If the user just says "generate an image" with no signal of finality, default
to --quality medium.
For best results, include in the prompt:
gpt-image-2 does not support
transparent backgrounds)gpt-image-2 renders text well)If the user gives a vague prompt, expand it with sensible defaults rather than asking back, unless the request is genuinely ambiguous.
pngquant, cwebp) when file size matters.Unless the user has spelled out exactly what they want (subject, style, palette, size, destination), do a quick context-gathering pass first. The goal is for the generated image to feel like it belongs where it's going, not like a random asset dropped into the project. Skipping this step is the #1 way this skill produces off-brand results.
Things to look at, in roughly this order:
Sibling images at the destination. If the image will live in
public/static/blog/, public/static/marketing/, assets/, etc., open
one or two existing images in that folder with the Read tool. Match their:
The surface that will display it. Read the relevant file:
Pull the image's meaning from the actual content, not just the filename.
Brand / design tokens. If the project has a clearly defined palette, logo, or mascot, mirror them. Quick places to check:
tailwind.config.* for brand colorsglobals.css / theme files for CSS variablespublic/ for logos / mascot assetsAspect ratio / size. Pick --size based on the surface:
blog hero, OG image, square avatar, mobile portrait, etc. Match what's
already there.
Then write the prompt incorporating what you learned: subject pulled from the content, style + palette pulled from sibling assets and brand tokens, composition matched to the surface.
If the user did give explicit direction (style, colors, exact subject), honor it and skip context-gathering. If they gave partial direction, gather context for the parts they left open.
Don't ask the user clarifying questions for things you can reasonably infer from the codebase — infer first, ask only when something is genuinely ambiguous (e.g. two equally valid styles already exist in the project).
When the user asks for an image for a specific surface (a blog post, a landing page, an OG card, a README, a component, etc.), you are responsible for the whole job, not just the PNG. Always do these in order:
Pick the correct on-disk location for that surface. Look at what already exists and match it. Examples:
apps/<app>/public/static/blog/<slug>.png).apps/<app>/public/static/marketing/...).docs/images/, assets/, or next to the doc.public//assets/ folder.Use the file's slug, component name, or section name for the filename. Don't invent a new convention if one already exists.
Wire the image up so it actually shows where the user wanted it. This is not optional. Examples:
image: (or equivalent) frontmatter field to
point at the new path. Replace any placeholder Unsplash/stock URL.<meta property="og:image"> / metadata config.Match existing conventions for paths (relative vs /static/... vs
@/assets/...), file format (png/webp/jpg), and any wrapper components
(next/image, custom <Image>, etc.).
Don't ask first. If the user asked for an image for a known surface, do the placement + wiring automatically and tell them what you changed at the end. Only ask when the destination is genuinely ambiguous.
If any of the following happen, stop immediately and report the error to the user. Do not retry, do not change the model, do not change the prompt.
OPENAI_API_KEY is not set → ask the user how to provide it.openai package not installed → tell the user to run pip install --upgrade openai.gpt-image-2 doesn't
support transparency.© spencerpauly, CC0-1.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts) in resources/generating-images of spencerpauly/awesome-cursor-skills.
Open the folder on GitHubat commit 99cd265
Generating Images next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Generating Images this skillspencerpauly/awesome-cursor-skills | 844 | — | ~3.7k | Automated safety check: Notes | CC0-1.0 | |
| Imagegennexu-io/open-design | 100k | — | ~300 | Automated safety check: Pass | Apache-2.0 | |
| AI Image Generation and Editingzhayujie/CowAgent | 47k | — | ~1.3k | Automated safety check: Pass | MIT | |
| GPT Image Generation CLIwuyoscar/GPT-Image2-Skill | 5.7k | — | ~2.5k | Automated safety check: Notes | MIT | |
| BlockRun Image GenerationBlockRunAI/ClawRouter | 6.6k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Native Transparent ImagegenZSeven-W/craft-skills | 225 | 1 repos | ~1.1k | Automated safety check: Pass | Apache-2.0 |
nexu-io/open-design
Generate and edit images using OpenAI's Image API for project assets — UI mockups, icons, illustrations, social cards, and visual references.
zhayujie/CowAgent
Generates or edits images from text prompts through a Python script that picks an image backend based on which API keys are configured.
wuyoscar/GPT-Image2-Skill
Generates and edits images with GPT Image 2 or 2.5 through a packaged CLI and a prompt gallery, after settling which model fits the request.
BlockRunAI/ClawRouter
Generates or edits images through ClawRouter's local image API, with a choice of models and sizes and payment handled automatically through x402.
ZSeven-W/craft-skills
Generate new raster assets that must contain native pixel transparency, then verify the untouched PNG or WebP before delivery.
Vivixiao980/xhs-cover-skill
Creates and edits Xiaohongshu (RedNote) cover images from a portrait photo and text, using GPT Image 2 first and a Gemini CLI script as fallback.
spencerpauly/awesome-cursor-skills
Monitor a pull request for CI failures, review comments, and merge conflicts — then fix them automatically.
spencerpauly/awesome-cursor-skills
Solve a hard problem by trying multiple approaches in parallel using isolated git worktrees.
spencerpauly/awesome-cursor-skills
Keep iterating on code changes until the tests pass, the build succeeds, or linting is clean.
spencerpauly/awesome-cursor-skills
When GitHub Actions fails, fetch failing job logs and assign each failing job to a separate subagent that fixes its slice of the problem in parallel.
spencerpauly/awesome-cursor-skills
Explore a large codebase in parallel by launching multiple explore subagents that each investigate a different area simultaneously.
spencerpauly/awesome-cursor-skills
Profile a running web application's CPU performance using Cursor's built-in browser profiler.
Works with
Categories
Generate or edit images using the OpenAI Image API (gpt-image-2). Generating Images is an agent skill from spencerpauly/awesome-cursor-skills. Generate or edit images using the OpenAI Image API (gpt-image-2).
Generating Images fits situations like: the user asks to generate; marketing asset; the user supplies a reference image and asks to modify; : generate an image.
Run `npx skills add spencerpauly/awesome-cursor-skills --skill generating-images -a claude-code`. Or copy the skill folder (resources/generating-images in spencerpauly/awesome-cursor-skills) into .claude/skills/generating-images in your project. Claude Code loads it when a task matches its description.
Run `npx skills add spencerpauly/awesome-cursor-skills --skill generating-images -a codex`. Or copy the skill folder (resources/generating-images in spencerpauly/awesome-cursor-skills) into .agents/skills/generating-images in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add spencerpauly/awesome-cursor-skills --skill generating-images -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generating-images, .gemini/skills/generating-images, .github/skills/generating-images and .opencode/skills/generating-images in your project.
Going by SKILL.md and its folder, Generating Images needs Python for the scripts in its folder, the command-line tools its instructions call (python3 and pip) and credentials named OPENAI_API_KEY. Our summary lists: Python 3; A credential in OPENAI_API_KEY.
SKILL.md names 1 domain. As links in the text: platform.openai.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Generating Images is published under the CC0-1.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Generating Images: Imagegen (nexu-io/open-design, 100k stars), AI Image Generation and Editing (zhayujie/CowAgent, 47k stars), GPT Image Generation CLI (wuyoscar/GPT-Image2-Skill, 5.7k stars) and BlockRun Image Generation (BlockRunAI/ClawRouter, 6.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
spencerpauly (a GitHub user) maintains it in spencerpauly/awesome-cursor-skills, which has 844 GitHub stars. The repository holds 60 skills in this directory. The repository was last updated on August 2, 2026.
Source: spencerpauly/awesome-cursor-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.