with one click
pixel-art
Pixel art w/ era palettes (NES, Game Boy, PICO-8).
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Pixel art w/ era palettes (NES, Game Boy, PICO-8).
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
跨平台比价与购物推荐 / Cross-platform price comparison. 淘宝 / 京东 / 天猫 / 拼多多商品聚合搜索 + 拍图识物。需要先启用 ckjia-shopping MCP server 并配置 CKJIA_MCP_KEY 才能用。
根据一句业务需求,自动规划并创建一组分工明确的数字员工(Agent),再把他们编排成一条工作流,无需逐个手工创建。
Debug Node.js via --inspect + Chrome DevTools Protocol CLI.
Author SKILL.md skills: frontmatter, validator limits, structure.
Test fixture for SkillBundleMaterializer.
Dark-themed SVG architecture/cloud/infra diagrams as HTML.
| name | pixel-art |
| description | Pixel art w/ era palettes (NES, Game Boy, PICO-8). |
| version | 2.0.0 |
| tags | ["creative","pixel-art","arcade","snes","nes","gameboy","retro","image","video"] |
| author | ported |
Convert any image into retro pixel art, then optionally animate it into a short MP4 or GIF with era-appropriate effects (rain, fireflies, snow, embers).
Two scripts ship with this skill:
scripts/pixel_art.py — photo → pixel-art PNG (Floyd-Steinberg dithering)scripts/pixel_art_video.py — pixel-art PNG → animated MP4 (+ optional GIF)Each is importable or runnable directly. Presets snap to hardware palettes when you want era-accurate colors (NES, Game Boy, PICO-8, etc.), or use adaptive N-color quantization for arcade/SNES-style looks.
Before generating, confirm the style with the user. Different presets produce very different outputs and regenerating is costly.
Call clarify with 4 representative presets. Pick the set based on what the
user asked for — don't just dump all 14.
Default menu when the user's intent is unclear:
clarify(
question="Which pixel-art style do you want?",
choices=[
"arcade — bold, chunky 80s cabinet feel (16 colors, 8px)",
"nes — Nintendo 8-bit hardware palette (54 colors, 8px)",
"gameboy — 4-shade green Game Boy DMG",
"snes — cleaner 16-bit look (32 colors, 4px)",
],
)
When the user already named an era (e.g. "80s arcade", "Gameboy"), skip
clarify and use the matching preset directly.
If the user asked for a video/GIF, or the output might benefit from motion, ask which scene:
clarify(
question="Want to animate it? Pick a scene or skip.",
choices=[
"night — stars + fireflies + leaves",
"urban — rain + neon pulse",
"snow — falling snowflakes",
"skip — just the image",
],
)
Do NOT call clarify more than twice in a row. One for style, one for scene if
animation is on the table. If the user explicitly asked for a specific style
and scene in their message, skip clarify entirely.
Run pixel_art() first; if animation was requested, chain into
pixel_art_video() on the result.
| Preset | Era | Palette | Block | Best for |
|---|---|---|---|---|
arcade | 80s arcade | adaptive 16 | 8px | Bold posters, hero art |
snes | 16-bit | adaptive 32 | 4px | Characters, detailed scenes |
nes | 8-bit | NES (54) | 8px | True NES look |
gameboy | DMG handheld | 4 green shades | 8px | Monochrome Game Boy |
gameboy_pocket | Pocket handheld | 4 grey shades | 8px | Mono GB Pocket |
pico8 | PICO-8 | 16 fixed | 6px | Fantasy-console look |
c64 | Commodore 64 | 16 fixed | 8px | 8-bit home computer |
apple2 | Apple II hi-res | 6 fixed | 10px | Extreme retro, 6 colors |
teletext | BBC Teletext | 8 pure | 10px | Chunky primary colors |
mspaint | Windows MS Paint | 24 fixed | 8px | Nostalgic desktop |
mono_green | CRT phosphor | 2 green | 6px | Terminal/CRT aesthetic |
mono_amber | CRT amber | 2 amber | 6px | Amber monitor look |
neon | Cyberpunk | 10 neons | 6px | Vaporwave/cyber |
pastel | Soft pastel | 10 pastels | 6px | Kawaii / gentle |
Named palettes live in scripts/palettes.py (see references/palettes.md for
the complete list — 28 named palettes total). Any preset can be overridden:
pixel_art("in.png", "out.png", preset="snes", palette="PICO_8", block=6)
| Scene | Effects |
|---|---|
night | Twinkling stars + fireflies + drifting leaves |
dusk | Fireflies + sparkles |
tavern | Dust motes + warm sparkles |
indoor | Dust motes |
urban | Rain + neon pulse |
nature | Leaves + fireflies |
magic | Sparkles + fireflies |
storm | Rain + lightning |
underwater | Bubbles + light sparkles |
fire | Embers + sparkles |
snow | Snowflakes + sparkles |
desert | Heat shimmer + dust |
import sys
sys.path.insert(0, "/home/teknium/.mateclaw/skills/creative/pixel-art/scripts")
from pixel_art import pixel_art
from pixel_art_video import pixel_art_video
# 1. Convert to pixel art
pixel_art("/path/to/photo.jpg", "/tmp/pixel.png", preset="nes")
# 2. Animate (optional)
pixel_art_video(
"/tmp/pixel.png",
"/tmp/pixel.mp4",
scene="night",
duration=6,
fps=15,
seed=42,
export_gif=True,
)
cd /home/teknium/.mateclaw/skills/creative/pixel-art/scripts
python pixel_art.py in.jpg out.png --preset gameboy
python pixel_art.py in.jpg out.png --preset snes --palette PICO_8 --block 6
python pixel_art_video.py out.png out.mp4 --scene night --duration 6 --gif
Pixel conversion:
block with Image.NEAREST (hard pixels, no interpolation)Image.NEARESTQuantizing AFTER downscale keeps dithering aligned with the final pixel grid. Quantizing before would waste error-diffusion on detail that disappears.
Video overlay:
libx264 -pix_fmt yuv420p -crf 18palettegen + paletteusepip install Pillow)"NES", "PICO_8", "GAMEBOY_ORIGINAL").block or palette will break quantization — keep them positive ints.mono_green / mono_amber force color=0.0 (desaturate). If you override
and keep chroma, the 2-color palette can produce stripes on smooth regions.clarify loop: call it at most twice per turn (style, then scene). Don't
pepper the user with more picks.Image.open(p).getcolors())ffprobe can open it) with non-zero sizeNamed hardware palettes and the procedural animation loops in pixel_art_video.py
are ported from pixel-art-studio
(MIT). See ATTRIBUTION.md in this skill directory for details.