joangeldelarosa/pxlkit/icon
Claude Code and agent skill by joangeldelarosa/pxlkit
- community
Checking that the SKILL.md file is still in the repository.
Use when creating a pixel-art icon in pxlkit's PxlKitData format (16x16 grid plus palette), static or animated. Validates against both pxlkit icon validators before writing.
Install
npx vskill@latest install joangeldelarosa/pxlkit/iconSKILL.md
Authoring a pxlkit icon
pxlkit icons are not SVG files. The source of truth is a TypeScript object holding a character grid and a palette; @pxlkit/core generates the SVG at runtime. You are writing that object.
The full contract is in ${CLAUDE_PLUGIN_ROOT}/references/icon-spec.generated.md, transcribed from both validators. Read it before designing.
Which mode you are in
Standalone — the default. The user is working in their own project. Write the icon to src/icons/<name>.ts there and validate it. This is the common case; do not assume otherwise.
Contributor. Only when you detect the pxlkit monorepo itself — validate-icons.js at the root and a packages/core directory. Then there are three extra steps, and the third is the one people forget.
Step 0 — Context
Hold the output for the end.
Step 1 — Check the concept is not already covered
${CLAUDE_PLUGIN_ROOT}/references/icon-shapes.generated.json carries the name, tags and silhouette of all 226 shipped icons. Search it by tag before designing anything.
If something close already exists, say so and show it. Reaching for an existing icon is a better outcome than a near-duplicate that fragments the set.
Step 2 — Design the grid
Sixteen strings of exactly sixteen characters. . is transparent; every other character needs a palette entry.
Default palette, unless the user asks otherwise — these are the dark-theme --retro-* values, which is what makes a new icon sit naturally beside the existing packs:
What works at this size, in order of how often it goes wrong:
- Silhouette before detail. At 16×16 the outline carries the meaning. If it is unreadable in one colour it will not be saved by shading.
- Two or three colours. A base, a shadow, and one highlight. More reads as noise.
- Anchor to the grid. Centre the mass; leave a one-pixel margin so the icon does not collide with its neighbours.
- No anti-aliasing. Every pixel is on or off. Diagonal edges are staircases, and that is the aesthetic, not a compromise.
Show the ASCII grid in your reply as you iterate. The grid is the preview.
Step 3 — Look at it
Prints an ASCII block preview and writes an 8× SVG. Actually look at the result and ask whether the shape reads at 16 pixels. Character grids lie: shapes that look fine as text frequently do not resolve as images.
Step 4 — Validate before writing anything final
Exit 0 is required. This is a strict superset of both validators the project runs, so passing here means passing CI.
How to read what it reports:
- Errors must be fixed. Row length, palette coverage, kebab-case name, hex format, zero-opacity entries, a name already used in the same pack.
- A duplicate error — high silhouette overlap and a shared semantic tag — means it is the same icon with a different name. Change the concept or the shape.
- A duplicate warning — high overlap, no shared tags — is usually a legitimate family member. Arrows and faces overlap by design. Confirm it reads differently at 16px and move on.
- Density warnings mean the grid is nearly empty or nearly solid. Both read badly at this size.
Step 5 — Write it
Standalone: src/icons/<name>.ts, exporting export const <PascalName>: PxlKitData. File and name are kebab-case; the export is PascalCase. Show the usage snippet:
With appearance="solid" you must pass an explicit color. The icon renders as a data-URI <img> so it can force nearest-neighbour scaling, which cuts it off from the CSS context — currentColor never reaches it.
Contributor: all three steps, then verify each.
packages/<pack>/src/icons/<name>.ts- Re-export from
packages/<pack>/src/index.ts - Add it to the `icons` array of that pack's `IconPack` export (
UiPack,FeedbackPack, …). Skip this and the icon exists but never appears in the pack — the failure is invisible until someone asks why their icon is missing.
Then, from the repo root:
Exit 0, and the reported file count must be one higher than before.
Animated and parallax
Animated icons swap grid for frames, plus frameDuration in milliseconds and a trigger of loop, once, hover, appear or ping-pong. Every frame is validated independently. A per-frame palette merges over the base.
Parallax icons are layered compositions: layers ordered back to front, depth: 0 anchoring, positive behind, negative popping out.
Licensing — get this right
An icon the user creates in their own project is theirs. LICENSE-ASSETS covers the icon packs that ship with pxlkit, and CONTRIBUTOR_LICENSE applies only if they contribute the icon to the repository.
What does require visible attribution — "Icons by Pxlkit", linking to pxlkit.xyz — is using pxlkit's existing icons. Say that when it applies, and do not imply the user owes anything for an icon they drew.
Put any update-check line at the very end.
Security
- Security scanPassed, 93 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/pxlkit/skills/icon/SKILL.md
Popularity
- Repository stars
- 91
- Repository forks
- 1
- 7-day trend score
- 23
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/joangeldelarosa/pxlkit/icon)