Image Prompt Reverse
LunarXuan/image-prompt-reverse
Analyze user-provided reference images and reverse-engineer high-fidelity AI image-generation prompts.
Generate a polished PNG graphic from a text prompt and an aspect ratio.
$ npx skills add hassancs91/claude-image-generation --skill prompt-to-design -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hassancs91/claude-image-generation prompt-to-design --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/hassancs91/claude-image-generation.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/level-1-image-generator .claude/skills/prompt-to-design && 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 "prompt-to-design" agent skill from https://github.com/hassancs91/claude-image-generation/tree/main/.claude/skills/level-1-image-generator into .claude/skills/prompt-to-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prompt-to-design", 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/hassancs91/claude-image-generation/tree/main/.claude/skills/level-1-image-generatorType 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 hassancs91/claude-image-generation --skill prompt-to-design -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hassancs91/claude-image-generation prompt-to-design --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hassancs91/claude-image-generation.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/level-1-image-generator .agents/skills/prompt-to-design && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "prompt-to-design" agent skill from https://github.com/hassancs91/claude-image-generation/tree/main/.claude/skills/level-1-image-generator into .agents/skills/prompt-to-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prompt-to-design", 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 hassancs91/claude-image-generation --skill prompt-to-design -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hassancs91/claude-image-generation prompt-to-design --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hassancs91/claude-image-generation.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/level-1-image-generator .cursor/skills/prompt-to-design && 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 "prompt-to-design" agent skill from https://github.com/hassancs91/claude-image-generation/tree/main/.claude/skills/level-1-image-generator into .cursor/skills/prompt-to-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prompt-to-design", 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/hassancs91/claude-image-generation.git --path .claude/skills/level-1-image-generator--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 hassancs91/claude-image-generation --skill prompt-to-design -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hassancs91/claude-image-generation prompt-to-design --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hassancs91/claude-image-generation.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/level-1-image-generator .gemini/skills/prompt-to-design && 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 "prompt-to-design" agent skill from https://github.com/hassancs91/claude-image-generation/tree/main/.claude/skills/level-1-image-generator into .gemini/skills/prompt-to-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prompt-to-design", 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 hassancs91/claude-image-generation prompt-to-designInstalls 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 hassancs91/claude-image-generation --skill prompt-to-design -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hassancs91/claude-image-generation.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/level-1-image-generator .github/skills/prompt-to-design && 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 "prompt-to-design" agent skill from https://github.com/hassancs91/claude-image-generation/tree/main/.claude/skills/level-1-image-generator into .github/skills/prompt-to-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prompt-to-design", 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 hassancs91/claude-image-generation --skill prompt-to-design -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hassancs91/claude-image-generation prompt-to-design --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hassancs91/claude-image-generation.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/level-1-image-generator .opencode/skills/prompt-to-design && 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 "prompt-to-design" agent skill from https://github.com/hassancs91/claude-image-generation/tree/main/.claude/skills/level-1-image-generator into .opencode/skills/prompt-to-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prompt-to-design", 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.
prompt-to-designGenerate a polished PNG graphic from a text prompt and an aspect ratio.
Prompt To Design is an agent skill from hassancs91/claude-image-generation. Generate a polished PNG graphic from a text prompt and an aspect ratio. This is a CODE-BASED design generator (not a diffusion/photo model): it builds images from gradients, mesh fields, glow, grain, geometric shapes, and real typography. Use it whenever the user wants to create / generate / make an "image", poster, cover, wallpaper, banner, thumbnail, album art, story or reel cover, quote card, or any graphic from a description — optionally with words to render and a size or ratio (e.g. 1:1, 4:5, 9:16, 16:9…
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 57 other files (for example `README.md`).
It sits in Media & Creative, covering Image generation, Logo and visual identity and Excel spreadsheets. The repository describes itself as: Connect Claude to image generation with Agent Skills. Three levels: a zero-cost code-based design engine, a Three.js 3D renderer, and a real diffusion model on Cloudflare. Plus… The licence is MIT.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f533831. 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.
Shell commands in SKILL.md call:
pippython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Prompt To Design loads about 3.2k tokens when it runs. Until then it costs about 213 tokens; SKILL.md has 1,357 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 found no risky patterns in SKILL.md.
Automated 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); files beside SKILL.md are not scanned.
The full file from hassancs91/claude-image-generation at commit f533831, republished under its MIT licence (© hassancs91). 1,357 words, ~3,208 tokens.
.claude/skills/prompt-to-design/SKILL.md (or your agent's skills folder). This skill also uses 56 other files; get the full folder from GitHub.Turn a free-form prompt + an aspect ratio into a finished PNG, built entirely from
code. The house style is the level of the four pieces in reference/: posters,
typographic covers, mesh/gradient atmospheres, geometric compositions, soft
product abstractions. Frictionless like an image generator, but bounded to
designed graphics.
Everything is drawn with math and type — no image model. That means:
Accept any prompt and always output a designed PNG. Silently route the prompt to the rendering approach that fits (see Style routing). Only if a prompt truly demands a photo (e.g. "photorealistic portrait of my friend") say so in one sentence and deliver the strongest stylized/typographic interpretation anyway — never refuse, never return a blob that ignores the prompt.
WxH. If unspecified, default 1:1..md notes — PNG only.)Optionally, thinking through a one-paragraph "design philosophy" for the piece before coding measurably improves results — do it as internal reasoning, never as a user-facing file.
Requires Python with Pillow and numpy (install with
pip install pillow numpy --break-system-packages if missing). Fonts are bundled
in fonts/ — no system fonts needed.
Write a script that puts this skill's lib/ on the path, composes, and saves:
import sys
sys.path.insert(0, "SKILL_DIR/lib") # the lib/ folder next to this SKILL.md
from render import Design, NEON, NEON_CYAN, CREAM, INK, CHARCOAL, lerp_stops
d = Design("9:16") # preset, "WxH", or (w, h)
# ... compose with d.<method>(...) ...
d.save("/mnt/user-data/outputs/design.png", grain=6, saturation=1.1)Replace SKILL_DIR with the absolute path to this skill. Then run with
python3 your_script.py and present the saved PNG.
render.Design)Coordinates are fractions: x in [0,1] across width, y in [0,1] down height.
Sizes / radii / widths / font sizes are in final pixels; the engine
supersamples internally and downsamples for crisp edges.
Construct: Design(size="1:1", supersample=None, background=(255,255,255))
Backgrounds (set the whole canvas):
fill(color)linear_gradient(stops, angle=90) — stops=[(pos,(r,g,b)),...]; 90=top→bottom, 0=left→rightradial_gradient(stops, center=(0.5,0.5), radius=0.9)mesh_gradient(points) — points=[(fx,fy,(r,g,b),sigma_frac),...] smooth blended color fieldsoverlay_glow(center,color,radius,strength=0.4,mode="screen"|"add"|"blend") — soft glow onto current canvasvignette(strength=0.4, center=(0.5,0.5), radius=0.75, power=1.6)Shapes (optional glow={"color":(r,g,b)} for neon):
disk(cx,cy,r,color,glow=) · ellipse(cx,cy,rx,ry,color) · ring(cx,cy,r,width,color)pie(cx,cy,r,a0,a1,color) — filled arc/sector; angles: 0=east, CW; top half=180→360, bottom=0→180arc(cx,cy,r,a0,a1,width,color) — open stroke arcrect(x0,y0,x1,y1,color,radius=0) — radius>0 for rounded/pillsline(x0,y0,x1,y1,width,color) · polygon([(x,y),...],color)intersection(shapeA, shapeB, color) — knockout the overlap; shapes are
("disk",cx,cy,r), ("pie",cx,cy,r,a0,a1), ("rect",x0,y0,x1,y1)Soft orb: gradient_sphere(cx,cy,r, colors, light=(-0.34,-0.34), shadow=True, specular=0.16, rim=0.05, glow=None) — colors = 2–3 stops blended diagonally.
Type:
write(x,y,text, role=, weight="regular"|"bold", italic=False, size=, color=, gradient=None, align="left"|"center"|"right", tracking=0, glow=None, shadow=None, stroke=0, stroke_color=None, return_width=False) — one line; y is the baseline.
Pass gradient=[(pos,(r,g,b)),...] for chrome/metal fills; glow={"color":...}
for neon; shadow=True or a dict for legibility on busy backgrounds.text_block(x,y,text, ..., max_frac=0.84, line_height=1.16) — auto-wraps & stacks.fit_size(text, target_frac, role=, weight=) → largest size that fits that width.wrap(text, max_frac, ...) → list of lines. measure(text, ...) → (w,h) in final px.Custom numpy: coords()→(xx,yy) · get_rgb() · set_rgb(arr) · composite_rgba(arr).
Finish: save(path, grain=0, chroma=0, scanlines=0, saturation=1.0, contrast=1.0, brightness=1.0) — post effects are applied after downsample (correct place for grain).
Typical: light designs grain=2; rich/dark designs grain=5–6, chroma=2; add
scanlines=0.03 only for CRT/retro looks.
gradient_sphere or rounded card,
refined type, lots of space. (ref: soft_carousel.py)pie/disk
sun, polygon mountains, layered bands — a stylized designed landscape, not a
photo. Combine gradient + shapes.Most prompts blend two (e.g. a synthwave poster is gradient-atmospheric + typographic). Compose accordingly.
Pick 3–6 colors that carry a clear mood; restraint reads as premium.
display/display_chunky for huge poster words;
grotesque/geometric for clean modern/Apple; serif/serif_display/serif_chic
for editorial/elegant; serif_book italic for a graceful accent word;
mono for kickers/handles/labels; pixel for retro-arcade; techno for sci-fi.fit_size so the longest line fills the
column. Break a phrase into short lines for tall formats.shadow or glow for legibility.After rendering, always check the result. Prefer viewing the PNG. If the image viewer is unavailable or returns nothing, fall back to measuring pixels (this is reliable and catches real bugs):
Example checks:
from PIL import Image; import numpy as np
a = np.array(Image.open(path).convert("RGB")).astype(int)
lum = 0.299*a[...,0]+0.587*a[...,1]+0.114*a[...,2]
band = lum[int(.3*a.shape[0]):int(.7*a.shape[0])] # text band
print("bg lum behind text:", round(band[band<200].mean())) # compare to text lum
mask = (((a-np.array(ACCENT))**2).sum(2) < 1500) # find an element
ys,xs = np.where(mask); print("accent bbox:", xs.min(),xs.max(),ys.min(),ys.max())Common bugs to look for (all seen in practice): a knockout intersection that
swallows a whole shape because one shape sits fully inside the other; text/caption
placed on same-color area so it's invisible; a hero element too small; a gradient
that's so dark/muddy the colors don't read (lift it / boost saturation). Fix and
re-render until it's clean.
| Preset | Pixels | Typical use |
|---|---|---|
| 1:1 | 1500×1500 | square post (default) |
| 4:5 | 1080×1350 | IG portrait |
| 9:16 | 1080×1920 | story / reel / phone wallpaper |
| 16:9 | 1920×1080 | slide / desktop / YouTube |
| 2:3 | 1200×1800 | poster portrait |
| 3:2 | 1800×1200 | poster landscape |
| 1:2 | 1080×2160 | tall poster |
| 3:4, 4:3, 5:4, 2:1 | — | also available |
Or pass WxH (e.g. "1600x1000"), clamped to a 2560 long edge for speed.
No photorealistic depictions of real, named people; no reproductions of brand logos or trademarks; no copyrighted characters or existing artworks; nothing harmful. These are designed original graphics. When a prompt asks for one of these, deliver an abstract/typographic/stylized interpretation instead and say so briefly.
Study reference/ — each is a runnable, gold-standard build for a prompt type:
synthwave_poster.py — gradient sky, striped sun, neon grid, chrome title (1:2)geometric_bauhaus.py — flat fields, arcs, knockouts, dot grid (1:1)quote_card.py — mesh gradient + huge type + italic/gold accents (9:16)soft_carousel.py — light ground, soft orb, refined type, page dots (1:1)When a new prompt resembles one, start from its structure and adapt palette, composition, copy, and ratio.
© hassancs91, MIT. 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 56 other files in .claude/skills/level-1-image-generator of hassancs91/claude-image-generation.
Open the folder on GitHubat commit f533831
Prompt To Design 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 |
|---|---|---|---|---|---|---|
| Prompt To Design this skillhassancs91/claude-image-generation | 102 | — | ~3.2k | Automated safety check: Pass | MIT | |
| Image Prompt ReverseLunarXuan/image-prompt-reverse | 467 | — | ~678 | Automated safety check: Pass | GPL-3.0 | |
| Nous Brandingmagnus919/agent-skills | 115 | — | ~4k | Automated safety check: Pass | MIT | |
| Ideogramsocial-media-skills/skills | 134 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Anthropic Brand Stylinganthropics/skills | 180k | 30 repos | ~559 | Automated safety check: Pass | Apache-2.0 | |
| CarouselsTheCraigHewitt/skills | 159 | — | ~2.3k | Automated safety check: Pass | MIT |
LunarXuan/image-prompt-reverse
Analyze user-provided reference images and reverse-engineer high-fidelity AI image-generation prompts.
magnus919/agent-skills
Generate images and content consistent with the Nous Research brand identity.
social-media-skills/skills
A skill your agent uses to write great prompts for Ideogram (Ideogram 4.0) to generate design-grade images for social media — the image-prompt-craft mini-skill for typography + layout, sibling to…
anthropics/skills
Applies Anthropic's brand colors and fonts to artifacts such as PowerPoint slides, using fixed hex values for text and accents, Poppins headings and Lora body text.
TheCraigHewitt/skills
Turns a piece of Craig's content (an email, a YouTube script, an essay, or pasted text) into a polished image carousel publishable to both LinkedIn and Instagram from one set of 1080x1350 slides.
LiamGvchi/gc-minimal-zine-poster
Creates or analyzes quiet, paper-texture zine posters with big negative space, one color accent and experimental type, returning an image prompt and the generated poster.
hassancs91/claude-image-generation
Generate PNG images by building a real Three.js 3D scene and capturing one frame headlessly — no image model involved.
hassancs91/claude-image-generation
Final step of the AI Storybook pipeline. An agent skill from hassancs91/claude-image-generation.
hassancs91/claude-image-generation
Generate an image from a text description using Cloudflare Workers AI (the flux-1-schnell model).
hassancs91/claude-image-generation
Splits a plain English story into a numbered list of SCENES — each scene being one moment that gets exactly one illustration AND one narration clip downstream.
hassancs91/claude-image-generation
Generates one expressive narration MP3 per scene for an English storybook, using the ElevenLabs MCP (texttospeech).
Categories
Generate a polished PNG graphic from a text prompt and an aspect ratio. Prompt To Design is an agent skill from hassancs91/claude-image-generation. Generate a polished PNG graphic from a text prompt and an aspect ratio.
Prompt To Design fits situations like: the user wants to create / generate / make an image; any graphic from a description — optionally with words to render and a size.
Run `npx skills add hassancs91/claude-image-generation --skill prompt-to-design -a claude-code`. Or copy the skill folder (.claude/skills/level-1-image-generator in hassancs91/claude-image-generation) into .claude/skills/prompt-to-design in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hassancs91/claude-image-generation --skill prompt-to-design -a codex`. Or copy the skill folder (.claude/skills/level-1-image-generator in hassancs91/claude-image-generation) into .agents/skills/prompt-to-design 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 hassancs91/claude-image-generation --skill prompt-to-design -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/prompt-to-design, .gemini/skills/prompt-to-design, .github/skills/prompt-to-design and .opencode/skills/prompt-to-design in your project.
Going by SKILL.md and its folder, Prompt To Design needs the command-line tools its instructions call (pip and python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Prompt To Design is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k 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 Prompt To Design: Image Prompt Reverse (LunarXuan/image-prompt-reverse, 467 stars), Nous Branding (magnus919/agent-skills, 115 stars), Ideogram (social-media-skills/skills, 134 stars) and Anthropic Brand Styling (anthropics/skills, 180k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hassancs91 (a GitHub user) maintains it in hassancs91/claude-image-generation, which has 102 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on August 18, 2026.
Source: hassancs91/claude-image-generation on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.