mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
feat(pixel-art): add hardware palettes and video animation (#12725)
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).
This commit is contained in:
parent
abfc1847b7
commit
d40a828a8b
7 changed files with 955 additions and 131 deletions
54
skills/creative/pixel-art/ATTRIBUTION.md
Normal file
54
skills/creative/pixel-art/ATTRIBUTION.md
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# 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_ANIMATIONS` renamed to `SCENES` and restructured to hold layer
|
||||
names (strings) instead of function-name strings resolved via `globals()`
|
||||
- `generate_video()` split: the Pollinations text-to-image call was removed
|
||||
(Hermes uses its own `image_generate` + `pixel_art()` pipeline for base
|
||||
frames). Only the overlay + ffmpeg encoding remains.
|
||||
- Frame directory is now a `tempfile.TemporaryDirectory` instead of
|
||||
hand-managed cleanup.
|
||||
- `ffmpeg` invocation switched from `os.system` to `subprocess.run(check=True)`
|
||||
for safety.
|
||||
|
||||
### What was NOT ported
|
||||
|
||||
- Wu's Color Quantization (PIL's built-in `quantize` suffices)
|
||||
- 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()` in `pixelart_video.py`) — Hermes has `image_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
|
||||
Loading…
Add table
Add a link
Reference in a new issue