Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
ar9av avatar

Palette Enforcer

  • 1 installs
  • 1 repo stars
  • Updated August 3, 2026
  • ar9av/game-exa

palette-enforcer is a game-build pipeline skill that quantizes all generated PNG assets to a single named 8-bit palette so a game's sprites, tiles, and background share one coherent color set.

About

This skill quantizes every generated PNG asset (sprites, tiles, background) to a single named 8-bit color palette so a game's art looks coherent. A developer runs it after the art-generation stages and before code generation. It preserves transparent pixels and the magenta chroma-key background, auto-selects a palette by genre, and writes the chosen palette to game-state.json for downstream skills.

  • Quantizes all generated PNGs to one named 8-bit palette for visual coherence
  • Preserves transparency and the magenta chroma-key background
  • Auto-selects a palette by genre and records state.style.palette

Palette Enforcer by the numbers

  • 1 all-time installs (skills.sh)
  • Ranked #218 of 247 Game Development skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
At a glance

palette-enforcer capabilities & compatibility

Free; local image processing with no API calls.

Capabilities
tile artist · manifest auditor · palette quantization
Use cases
image generation · ui design
Pricing
Free
From the docs

What palette-enforcer says it does

Quantizes all generated PNG assets (sprites, tiles, background) to a named 8-bit color palette to achieve visual coherence.
SKILL.md
Transparent pixels (alpha < 128) are preserved; only opaque pixels are quantized.
SKILL.md
npx skills add https://github.com/ar9av/game-exa --skill palette-enforcer

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1
repo stars1
Last updatedAugust 3, 2026
Repositoryar9av/game-exa

What it does

Unify all generated game art to one 8-bit palette for visual coherence before code generation.

Who is it for?

Making AI-generated game art cohesive by enforcing a shared palette.

Skip if: Non-game or non-pixel-art image work.

When should I use this skill?

After art generation and before codesmith, or when the user says 'make the art more cohesive' or 'unify the palette'.

What you get

All PNGs quantized to one palette in-place, with state.style.palette recorded for downstream skills.

  • Palette-quantized PNGs in-place
  • state.style.palette in game-state.json

By the numbers

  • 5 named palettes (sweetie-16, pico8, endesga-32, gameboy, nes)
  • gameboy palette has 4 colors

Files

SKILL.mdMarkdownGitHub ↗

Palette Enforcer — Visual Coherence

Applies color palette constraints to all generated PNG assets so every sprite, tile, and background shares the same enumerated color set. Without this, GPT Image 2 returns arbitrary colors and assets from the same game look like they came from different games.

When to use

After all art generation (sprite-artist, tile-artist, bg-artist) and before codesmith. Also run if the user says "make the art more cohesive" or "unify the palette."

Palettes available

IDColorsBest for
sweetie-1616Default — friendly, any genre
pico816Bold retro, shoot-em-ups, platformers
endesga-3232RPGs, dungeon crawlers, rich detail
gameboy4Maximum constraint, mono-theme games
nes16Classic NES aesthetic

Output contract

  • All PNGs in public/assets/ are overwritten in-place with palette-quantized versions.
  • game-state.json gains state.style.palette with the chosen palette ID.
  • Transparent pixels (alpha < 128) are preserved; only opaque pixels are quantized.
  • The magenta chroma-key background (#FF00FF) is kept as-is — it's stripped later at runtime.
// game-state.json after running
{
  "style": {
    "palette": "sweetie-16"
  }
}

Process

1. Choose palette: use --palette <id> arg, or auto-select based on genre:

  • platformer / action-platformerpico8
  • top-down-rpg / dungeon-crawlerendesga-32
  • shoot-em-uppico8
  • default → sweetie-16

2. Run scripts/enforce_palette.mjs <project-dir> [--palette <id>] 3. Script processes all PNGs found in public/assets/ and writes them back. 4. Writes state.style.palette to game-state.json.

Scripts

  • scripts/enforce_palette.mjs <project-dir> [--palette <id>] — quantize all assets.

References

  • references/palettes.json — all palette definitions with hex color arrays.

Related skills

FAQ

Which palettes are available?

sweetie-16, pico8, endesga-32, gameboy, and nes, with auto-selection by genre.

Does it preserve transparency?

Yes, transparent pixels (alpha < 128) are preserved and only opaque pixels are quantized.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.