Expand the pixel-art skill from 2 presets (arcade, snes) to 14 presets with hardware-accurate palettes (NES, Game Boy, PICO-8, C64, Apple II, MS Paint, CRT mono), plus a procedural video overlay pipeline. Ported from Synero/pixel-art-studio (MIT). Full attribution in ATTRIBUTION.md. What's in: - scripts/palettes.py — 28 named RGB palettes (hardware + artistic) - scripts/pixel_art.py — 14 presets, named palette support, CLI - scripts/pixel_art_video.py — 12 animation scenes (stars, rain, fireflies, snow, embers, lightning, etc.) → MP4/GIF via ffmpeg - references/palettes.md — palette catalog - SKILL.md — clarify-tool workflow (offer style, then optional scene) What's out (intentional): - Wu's quantizer (PIL's built-in quantize suffices) - Sobel edge-aware downsample (scipy dep not worth it) - Atkinson/Bayer dither (would need numpy reimpl) - Pollinations text-to-image (Hermes uses image_generate instead) Video pipeline uses subprocess.run with check=True (replaces os.system) and tempfile.TemporaryDirectory (replaces manual cleanup).
2.2 KiB
Attribution
This skill bundles code ported from a third-party MIT-licensed project. All reuse is credited here.
pixel-art-studio (Synero)
- Source: https://github.com/Synero/pixel-art-studio
- License: MIT
- Copyright: © Synero, MIT-licensed contributors
What was ported
scripts/palettes.py — the PALETTES dict containing 23 named RGB
palettes (hardware and artistic). Values are reproduced verbatim from
scripts/pixelart.py of pixel-art-studio.
scripts/pixel_art_video.py — the 12 procedural animation init/draw pairs
(stars, fireflies, leaves, dust_motes, sparkles, rain,
lightning, bubbles, embers, snowflakes, neon_pulse, heat_shimmer)
and the SCENES → layer mapping. Ported from scripts/pixelart_video.py
with minor refactors:
- Names prefixed with
_for private helpers (_px,_pixel_cross) SCENE_ANIMATIONSrenamed toSCENESand restructured to hold layer names (strings) instead of function-name strings resolved viaglobals()generate_video()split: the Pollinations text-to-image call was removed (Hermes uses its ownimage_generate+pixel_art()pipeline for base frames). Only the overlay + ffmpeg encoding remains.- Frame directory is now a
tempfile.TemporaryDirectoryinstead of hand-managed cleanup. ffmpeginvocation switched fromos.systemtosubprocess.run(check=True)for safety.
What was NOT ported
- Wu's Color Quantization (PIL's built-in
quantizesuffices) - Sobel edge-aware downsampling (requires scipy; not worth the dep)
- Bayer / Atkinson dither (would need numpy reimplementation; kept scope tight)
- Pollinations text-to-image generation (
pixelart_image.py,generate_base()inpixelart_video.py) — Hermes hasimage_generate
License compatibility
pixel-art-studio ships under the MIT License, which permits redistribution with attribution. This skill preserves the original copyright notice here and in the SKILL.md credits block. No code was relicensed.
pixel-art skill itself
- License: MIT (inherits from hermes-agent repo)
- Original author of the skill shell: dodo-reach
- Expansion with palettes + video: Hermes Agent contributors