Files
hermes-agent/optional-skills/creative/pixel-art/ATTRIBUTION.md
Teknium 38d3c49aaf refactor(skills): clean up bundled skill set + add environments: relevance gate (#39028)
* refactor(skills): clean up bundled skill set + add environments: relevance gate

Bundled skills cleanup pass plus a new offer-time relevance gate.

Removals (redundant / dead):
- spotify (covered by the spotify plugin's 7 native tools)
- linear (covered by `hermes mcp install linear`)
- kanban-codex-lane, debugging-hermes-tui-commands
- empty category markers: diagramming, gifs, inference-sh,
  mlops/training, mlops/vector-databases
- domain (stale orphan dup of optional/research/domain-intel)

Bundled -> optional:
- baoyu-article-illustrator, baoyu-comic, creative-ideation, pixel-art
- dspy, subagent-driven-development
- minecraft-modpack-server, pokemon-player
- hermes-s6-container-supervision (-> optional/devops)

Consolidation:
- webhook-subscriptions + native-mcp folded into the hermes-agent skill
  as references/webhooks.md + references/native-mcp.md with SKILL.md pointers
- writing-plans merged into plan (v2.0.0); related_skills + prose refs updated

New: environments: frontmatter gate (agent/skill_utils.skill_matches_environment)
- Offer-time relevance filter (kanban / docker / s6), parallel to platforms:.
- Wired into the 3 OFFER surfaces only (prompt_builder skills index,
  skills_tool.list_skills, skill_commands slash discovery).
- Explicit loads (skill_view, --skills preload) intentionally BYPASS it, so
  load-bearing force-loads like the kanban dispatcher's `--skills kanban-worker`
  always resolve. Verified via E2E.
- kanban-orchestrator/kanban-worker tagged environments: [kanban];
  hermes-s6-container-supervision tagged environments: [s6] + platforms: [linux].

Validation: 8/8 E2E gating assertions (incl force-load invariant);
442 targeted tests green (agent, skills_tool, skill_commands, kanban worker).

* docs: regenerate skill catalogs + pages for the bundled cleanup

Regenerated per-skill doc pages, catalogs, and sidebar to match the skill
moves/removals in the parent commit. Moved skills' pages relocate
bundled -> optional (history preserved); removed skills' pages deleted;
edited skills' pages refreshed (hermes-agent now embeds the webhook +
native-mcp reference pointers). zh-Hans i18n mirror: stale bundled pages
and catalog rows for moved/removed skills pruned (new optional translations
land via the translation pipeline).

* test: drop regression test for removed kanban-codex-lane skill

The kanban-codex-lane skill was removed in the bundled-skills cleanup;
its dedicated regression test read the now-deleted SKILL.md and failed
with FileNotFoundError on CI shard 6.
2026-06-04 06:11:22 -07:00

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)

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