Web Visuals
glifxyz/glif-mcp-server
Make images, textures, illustrations and background video for a website or app you are building, with Glif, and wire them into the code.
Turns a concept, feature or blog post into one on-brand illustration by matching it to a real unDraw SVG in a local library and recoloring it to the brand accent.
$ npx skills add codeswithroh/tastemaker --skill ideagram -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install codeswithroh/tastemaker ideagram --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/codeswithroh/tastemaker.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/tastemaker/ideagram .claude/skills/ideagram && 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 "ideagram" agent skill from https://github.com/codeswithroh/tastemaker/tree/main/skills/tastemaker/ideagram into .claude/skills/ideagram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ideagram", 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/codeswithroh/tastemaker/tree/main/skills/tastemaker/ideagramType 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 codeswithroh/tastemaker --skill ideagram -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install codeswithroh/tastemaker ideagram --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/codeswithroh/tastemaker.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/tastemaker/ideagram .agents/skills/ideagram && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ideagram" agent skill from https://github.com/codeswithroh/tastemaker/tree/main/skills/tastemaker/ideagram into .agents/skills/ideagram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ideagram", 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 codeswithroh/tastemaker --skill ideagram -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install codeswithroh/tastemaker ideagram --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/codeswithroh/tastemaker.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/tastemaker/ideagram .cursor/skills/ideagram && 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 "ideagram" agent skill from https://github.com/codeswithroh/tastemaker/tree/main/skills/tastemaker/ideagram into .cursor/skills/ideagram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ideagram", 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/codeswithroh/tastemaker.git --path skills/tastemaker/ideagram--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 codeswithroh/tastemaker --skill ideagram -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install codeswithroh/tastemaker ideagram --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/codeswithroh/tastemaker.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/tastemaker/ideagram .gemini/skills/ideagram && 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 "ideagram" agent skill from https://github.com/codeswithroh/tastemaker/tree/main/skills/tastemaker/ideagram into .gemini/skills/ideagram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ideagram", 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 codeswithroh/tastemaker ideagramInstalls 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 codeswithroh/tastemaker --skill ideagram -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/codeswithroh/tastemaker.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/tastemaker/ideagram .github/skills/ideagram && 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 "ideagram" agent skill from https://github.com/codeswithroh/tastemaker/tree/main/skills/tastemaker/ideagram into .github/skills/ideagram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ideagram", 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 codeswithroh/tastemaker --skill ideagram -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install codeswithroh/tastemaker ideagram --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/codeswithroh/tastemaker.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/tastemaker/ideagram .opencode/skills/ideagram && 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 "ideagram" agent skill from https://github.com/codeswithroh/tastemaker/tree/main/skills/tastemaker/ideagram into .opencode/skills/ideagram/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ideagram", 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.
ideagramTurns a concept, feature or blog post into one on-brand illustration by matching it to a real unDraw SVG in a local library and recoloring it to the brand accent.
Drawing paths by hand gives crude pictograms, so this skill reuses real unDraw illustrations instead. It distills the idea into one sentence and a few keywords, matches it to the best illustration in a local library folder (by default ~/.ideagram/undraw/), recolors it to the brand accent and composes it if needed before delivery. Two separate ideas get two illustrations rather than one crowded one.
You build the library yourself by downloading illustrations from undraw.co, because the skill neither bundles nor redistributes unDraw's files, and 20 to 30 illustrations on common themes cover most requests. scripts/build_library_index.py writes index.md and index.json, which the agent reads before matching. If no library exists, the agent says so and points you to unDraw, and falls back to generated primitives such as figures and props only with a clear warning about the quality drop. Reference notes cover composition, metaphors, a prompt template and a QA checklist.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e39b4bf. 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/, which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
undraw.coFrom 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.
Ideagram unDraw Illustrations loads about 2.2k tokens when it runs, and up to ~9.5k if it reads all its reference files. Until then it costs about 162 tokens; SKILL.md has 1,091 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); the scripts in this folder are not scanned.
The full file from codeswithroh/tastemaker at commit e39b4bf, republished under its MIT licence (© codeswithroh). 1,091 words, ~2,173 tokens.
.claude/skills/ideagram/SKILL.md (or your agent's skills folder). This skill also uses 26 other files; get the full folder from GitHub.Produce one beautiful, on-brand illustration for a concept by matching it to a real unDraw illustration and recoloring it to the brand — never by hand-drawing. unDraw's figures are dozens of hand-placed bezier anchors from a professional illustrator; freehand-generating path coordinates produces crude pictograms, not art. The quality lives in the real path data, so this skill reuses it: match → recolor → (compose, if needed) → deliver. The output is genuinely illustrator-grade because it is the illustrator's work, just made on-brand.
Read references/undraw-anatomy.md once — it's the dissection of how these files are built and why this reuse approach works.
This skill reads real unDraw SVGs from a local library folder — it does not bundle or redistribute unDraw's files (their license bars compiling their assets into a redistributed collection; downloading them for your own use is free and needs no attribution).
~/.ideagram/undraw/.python3 scripts/build_library_index.py. This writes index.md (human-scannable) and index.json (machine-readable) into the library folder — read index.md first for matching instead of guessing from filenames cold.references/style-contract.md) if they genuinely can't, and be upfront that it's a large quality drop from real unDraw art.Reduce the input to one sentence — "this is fundamentally about ___" — plus a few keywords. If the content genuinely holds two ideas, that's two illustrations, not one crowded brief.
Read ~/.ideagram/undraw/index.md (run scripts/build_library_index.py first if it doesn't exist or the library changed). Match the concept's keywords against each entry's keyword list — prefer a match on the scene, not just a loose word overlap: a dashboard/analytics concept wants an illustration with a screen or chart; a teamwork concept wants one with multiple figures. If several are close, pick the one whose scene most literally embodies the concept (see the worked example below). If nothing in the library is a real fit, say so and either ask the user to grab a closer one from undraw.co or fall back (Step 5) — don't force a bad match.
Worked example: "an AI creative director composing a whole design system from one prompt" → not literally "AI" or "design system" in any filename, but mobile-site-builder (a person actively laying out screen components) is the closest scene match — the visual metaphor matters more than exact keyword overlap.
python3 scripts/recolor_undraw.py <matched>.svg --accent "#<brand-hex>" --out design/<name>.svgThis swaps only unDraw's #6c63ff accent family for the brand color, leaving every skin tone, hair, clothing, and neutral exactly as drawn — verified on real multi-figure scenes. Check the matched illustration's index.md row for a flagged secondary accent (green/pink); if present and it should also change, add --also "#8ed16f:#<hex>". If the user gives no brand color, unDraw's default purple is a fine, deliberate choice — don't invent one.
If you need to redo a color (the user asks for a different one), re-copy the original unDraw source into the output path first, then recolor — recolor_undraw.py only remaps #6c63ff outward, so recoloring an already-recolored file does nothing (the purple it looks for is gone). Never edit a previously-branded file's colors by hand to "fix" this.
Only when no single library illustration fits and a custom scene is worth the extra effort:
scripts/extract_component.py source.svg --list, then lift one with --match "translate(...)" --out part.svg.<svg> as a real scene — a background element, the concept's midground device, then the figure interacting with it, plus a ground shadow — not a floating figure. This is what separates a designed illustration from a subject stranded on white.<g transform="translate() scale()">; render and read getBBox() to size/position accurately rather than guessing coordinates from nested transforms.If the user genuinely has no unDraw library and won't create one, references/style-contract.md + assets/primitives/ still exist — but they produce simple flat pictograms, not illustrator-grade art. Use only as a last resort, and say plainly that a couple of real unDraw SVGs would look dramatically better for the same effort.
python3 scripts/validate_assets.py <final>.svg — catches malformed SVG (e.g. a -- inside a comment) that renders as a broken image in strict browsers, invisible unless actually parsed.scripts/export_png.py <final>.svg --out design/export/ (needs cairosvg + system cairo; degrades honestly if either is missing, and the SVG stays fully usable regardless).| File | Read when |
|---|---|
references/undraw-anatomy.md | Always, first — the palette, structure, and the reuse technique this skill is built on |
~/.ideagram/undraw/index.md | Step 2 — matching a concept to the right illustration |
references/style-contract.md, references/metaphor-library.md | Only for the Step 5 fallback (no library, generated primitives) |
| Script | Purpose |
|---|---|
scripts/build_library_index.py | Index a local unDraw library into index.md/index.json for fast, accurate matching. Run after adding new SVGs. |
scripts/recolor_undraw.py | Recolor a real unDraw illustration's accent to a brand color, preserving skin/ink/clothing/neutrals. The workhorse. |
scripts/extract_component.py | Lift a whole figure/device/panel out of a source unDraw SVG for composing a new scene. |
scripts/validate_assets.py | Verify the finished SVG is well-formed before delivering. |
scripts/export_png.py | Export flattened PNGs at standard social/presentation sizes (needs cairosvg + system cairo). |
Say what actually happened: which illustration was matched and why, whether it was recolored, and if you fell back to generated primitives because there was no library, say that plainly and note the quality gap rather than presenting it as equal. Respect the sourcing model — reuse real unDraw art from the user's local library for their own sites; never redistribute unDraw's files into a public repo.
An alternative, higher-ceiling approach exists — generating an original illustration with an image model, steered by a rigorous style system (references/style-dna.md, composition-patterns.md, prompt-template.md, qa-checklist.md) — for the rare case a session has a genuine image-generation tool available and the library has no good match. Most Claude sessions don't have one, so this isn't part of the default workflow above; only reach for it if such a tool is actually present, and say so.
© codeswithroh, 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 26 other files (scripts, references, assets) in skills/tastemaker/ideagram of codeswithroh/tastemaker.
Open the folder on GitHubat commit e39b4bf
Ideagram unDraw Illustrations 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 |
|---|---|---|---|---|---|---|
| Ideagram unDraw Illustrations this skillcodeswithroh/tastemaker | 437 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Web Visualsglifxyz/glif-mcp-server | 212 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Imagegennexu-io/open-design | 100k | — | ~300 | Automated safety check: Pass | Apache-2.0 | |
| Processing Imagesoaustegard/claude-skills | 150 | — | ~2k | Automated safety check: Pass | MIT | |
| Unified Design Routerassafkip/kipi-system | 112 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Omd Mediakwakseongjae/oh-my-design | 531 | — | ~1.1k | Automated safety check: Pass | MIT |
glifxyz/glif-mcp-server
Make images, textures, illustrations and background video for a website or app you are building, with Glif, and wire them into the code.
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.
oaustegard/claude-skills
Image processing toolkit awareness. An agent skill from oaustegard/claude-skills.
assafkip/kipi-system
Routes visual design requests to built-in logo, corporate identity, slide, banner, social photo and icon workflows, backed by style data and AI image generation.
kwakseongjae/oh-my-design
Brand-consistent asset sets from DESIGN.md — hero, section illustrations, icon sets, OG image — generated through whichever channel the user actually has (grok build imagegen, Codex $imagegen…
op7418/guizang-social-card-skill
Produces social card sets for Xiaohongshu and WeChat: carousels, Live Photo motion cards and puzzle layouts, and WeChat cover pairs, rendered from single-file HTML.
codeswithroh/tastemaker
Grounds AI-built interfaces in real reference images and a saved personal taste profile, so UI work avoids the generic defaults of typical generated apps.
Categories
Turns a concept, feature or blog post into one on-brand illustration by matching it to a real unDraw SVG in a local library and recoloring it to the brand accent. Drawing paths by hand gives crude pictograms, so this skill reuses real unDraw illustrations instead.ideagram/undraw/), recolors it to the brand accent and composes it if needed before delivery.
Ideagram unDraw Illustrations fits situations like: needing a hero, feature or blog illustration for an idea; visualizing a concept for a tweet or an article; producing an unDraw-style graphic in your brand color.
Run `npx skills add codeswithroh/tastemaker --skill ideagram -a claude-code`. Or copy the skill folder (skills/tastemaker/ideagram in codeswithroh/tastemaker) into .claude/skills/ideagram in your project. Claude Code loads it when a task matches its description.
Run `npx skills add codeswithroh/tastemaker --skill ideagram -a codex`. Or copy the skill folder (skills/tastemaker/ideagram in codeswithroh/tastemaker) into .agents/skills/ideagram 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 codeswithroh/tastemaker --skill ideagram -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ideagram, .gemini/skills/ideagram, .github/skills/ideagram and .opencode/skills/ideagram in your project.
Going by SKILL.md and its folder, Ideagram unDraw Illustrations needs the command-line tools its instructions call (python3). Our summary lists: A local folder of downloaded unDraw SVGs, by default ~/.ideagram/undraw/; Python 3, to build the library index.
SKILL.md names 1 domain. As links in the text: undraw.co. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Ideagram unDraw Illustrations is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Ideagram unDraw Illustrations: Web Visuals (glifxyz/glif-mcp-server, 212 stars), Imagegen (nexu-io/open-design, 100k stars), Processing Images (oaustegard/claude-skills, 150 stars) and Unified Design Router (assafkip/kipi-system, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
codeswithroh (a GitHub user) maintains it in codeswithroh/tastemaker, which has 437 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on September 29, 2026.
Source: codeswithroh/tastemaker on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.