Agent skill

Beautify Decoration

by IvanWng97 in IvanWng97/pixtuoid

Iterate on the visual identity of a top-down pixel-art decoration (sprite + layout integration) in pixtuoid.

MITAuto-check passedGame Development

Install Beautify Decoration

skills CLI
$ npx skills add IvanWng97/pixtuoid --skill beautify-decoration -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install IvanWng97/pixtuoid beautify-decoration --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/IvanWng97/pixtuoid.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/beautify-decoration .claude/skills/beautify-decoration && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
beautify-decoration
GitHub stars
491
Token cost
~2.5k tokens
SKILL.md length
1,175 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Iterate on the visual identity of a top-down pixel-art decoration (sprite + layout integration) in pixtuoid.

  • Works in 6 steps: The rebuild trap → Snapshot size gates the large sprite… → Resolution budget → …
  • Redesigning an existing decoration (pantry
  • SKILL.md covers When to use, The visual-iteration loop, Sharp edges and Self-critique checklist —…, plus 1 more section
  • Calls just and cargo

What it does

Beautify Decoration is an agent skill from IvanWng97/pixtuoid. Iterate on the visual identity of a top-down pixel-art decoration (sprite + layout integration) in pixtuoid. Use when redesigning an existing decoration (pantry, lounge, meeting room, cubicle decor) or adding a new one. Captures the rebuild trap, the visual-verification loop, resolution constraints, sprite-format pitfalls, and the layout-integration checklist.

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Game Development, covering Sprites and pixel art and Logo and visual identity. The repository describes itself as: Terminal pixel-art office for AI coding agents. The licence is MIT.

When your agent uses it

  • Redesigning an existing decoration (pantry
  • Adding a new one

Example prompts

  • “/beautify-decoration”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. The rebuild trap
  2. Snapshot size gates the large sprite variants
  3. Resolution budget
  4. Identity mistakes that look identical to each other
  5. Sprite-format pitfalls
  6. Layout integration checklist

What it can do on your machine

Read from SKILL.md and the folder at commit 413c70c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • just
    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Beautify Decoration loads about 2.5k tokens when it runs. Until then it costs about 96 tokens; SKILL.md has 1,175 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~96
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from IvanWng97/pixtuoid at commit 413c70c, republished under its MIT licence (© IvanWng97). 1,175 words, ~2,450 tokens.

Download SKILL.mdSave it as .claude/skills/beautify-decoration/SKILL.md (or your agent's skills folder).
name
beautify-decoration
description
Iterate on the visual identity of a top-down pixel-art decoration (sprite + layout integration) in pixtuoid. Use when redesigning an existing decoration (pantry, lounge, meeting room, cubicle decor) or adding a new one. Captures the rebuild trap, the visual-verification loop, resolution constraints, sprite-format pitfalls, and the layout-integration checklist.
version
1.0.0
metadata.scope
pixtuoid repo only

beautify-decoration

A repo-specific iteration loop for visually redesigning a decoration in pixtuoid. Follow this when the user says "beautify X" or "make Y look better" — it short-circuits several rebuild traps and visual-design dead ends that aren't obvious from the codebase alone.

When to use

  • Redesigning an existing decoration sprite (pantry, lounge, meeting, cubicle decor)
  • Adding a new fixture (pendant lamp, water cooler, chalkboard, etc.)
  • User says "items look too small / don't read like X / blend together"
  • After making sprite edits and "I don't see any change"

The visual-iteration loop

1. Edit sprite OR layout
   ↓
2. cargo build --release --example snapshot
   ↓
3. ./target/release/examples/snapshot /tmp/snap.png
   ↓
4. .venv/bin/python3 scripts/crop-snapshot.py /tmp/snap.png --scale 3 -q <quadrant>
   (its QUADRANTS table is the zone map — or skip the quadrant guessing: snapshot --crop-furniture pantry|couch|vending|
   printer|meeting|sofa|chair|island|snackshelf|desk OR --crop-agent <label> renders a `CROP_WINDOW`
   already centered on the target — no Python step)
   ↓
5. Read the cropped PNG → self-critique → back to step 1
   ↓
6. When the checklist below passes, send the crop to the user with a short caption
   ↓
7. cargo build --release --workspace    ← rebuild the LIVE binary too
   ↓
8. Commit with iteration history (which designs were tried, why rejected)

The user is the final judge of "does it look like a fridge / coffee machine / etc." — send only once your own critique against the checklist below passes.

Step 7 is mandatory. cargo build --release --example snapshot does NOT rebuild the main binary. Users testing with ./target/release/pixtuoid run won't see sprite changes until the workspace is rebuilt. Forgetting this step is how "I changed the sprite but nothing happened in the live TUI" bugs get filed.

Step 8 is mandatory. Commit messages for sprite changes must include the iteration count and a one-line rationale for each rejected attempt. Future editors need to know which alternatives were explored — otherwise they'll re-try the same dead-end designs.

Sharp edges

1. The rebuild trap
  • cargo build --release --workspace does not rebuild examples. Use cargo build --release --example snapshot when iterating on examples/snapshot.
  • crates/pixtuoid-scene/build.rs embeds every .sprite in sprites/default/ at compile time, and a sprite edit, add or remove rebuilds it.
  • If unsure, verify with: strings target/release/examples/snapshot | grep "<some unique string from your sprite>".
2. Snapshot size gates the large sprite variants

examples/snapshot defaults to its COLS×ROWS cells. Several layouts (pantry, corridor appliances) have conditional variants based on room dimensions. Corridor items (vending machine, printer) only appear when the cubicle aisle clears VENDING_MIN_AISLE_* / PRINTER_MIN_AISLE_* (layout/compute.rs). The default size clears every gate — don't shrink it while iterating.

Pantry-specific threshold: the large pantry counter needs the left column to fit PANTRY_COUNTER_LARGE_W plus margin (the pantry_counter_size pick in layout/compute.rs); below that, pantry_small.sprite is used (layout::pantry_counter_anim).

3. Resolution budget
  • A terminal cell shows one pixel column and two pixel rows (half-block ▀): a 1x sprite is as many cells wide as it has pixels, and half as many tall.
  • Subzones smaller than ~5 display cells wide blur into pixel noise — users can't read them.
  • Sub-pixel detail (a 1-cell handle, a 1-cell stripe) is invisible. Iterate on silhouette + color identity, not pixel polish.
  • Budget subzones against the sprite's width in cells: the pantry's 32-wide counter read at three zones (8/10/10), not six. Drop items; don't shrink them.
4. Identity mistakes that look identical to each other

Symptoms of weak identity:

  • Transparent body (.): the wall color shows through, weakening the silhouette. Use a solid fill color for appliances.
  • All-dark appliances: a row of M-bodied items reads as "row of dark boxes." Give each appliance a distinct base color (e.g., w white fridge against M dark coffee machine + M dark microwave with q glass).
  • Symmetric H-frame on a white box → reads as washing machine, not fridge. Use asymmetric handles (single-side handle, or center-French-door pair).
  • Cyan + blue dispenser dots next to each other → reads as cyan-cyan because b is dark and gets dim. Space them out or use c + r.
5. Sprite-format pitfalls
  • Every row in a .sprite file must have exactly the same number of space-separated cells. Off-by-one is the most common bug.
  • Verify with: awk '/^@/{next}/^#/{next}NF{print NR": "NF}' crates/pixtuoid-scene/sprites/default/foo.sprite — all NF values must match.
  • Or visualize packed rows: awk '/^@/{next}/^#/{next}NF{for(i=1;i<=NF;i++)printf "%s",$i;print " ["NF"]"}' foo.sprite.
  • Reuse existing palette keys when possible; new keys go in crates/pixtuoid-scene/sprites/default/pack.toml [palette] section.
  • A sprite whose header carries the provenance line (every foo@Nx.sprite, and the 1x pieces the generator owns) is drawn by scripts/gen-art.py: redraw it there and run just gen-art — just gen-art-check fails on a hand edit.
Show full SKILL.md (548 more words)Show less
6. Layout integration checklist

When a sprite changes size:

  1. Update the decoration's footprint in the furniture_def(Furniture) geometry table in crates/pixtuoid-scene/src/layout/decor.rs — the single source of truth for footprint + visual, read by mask::build_walkable_mask (waypoints via approach::obstacle_footprint), approach.rs, and the z-sort. Do NOT hardcode a (w, h) at the mask stamp site; it would diverge from the table that stand_point/approach and render-centering read.
  2. A non-waypoint obstacle (plant, wall decor, pod decor) is likewise stamped from its FurnitureDef row via furniture_def(kind.furniture()).footprint, not an inline literal — so the same table edit covers it.
  3. Run just test -p pixtuoid-scene — the walkable_is_one_connected_region test (lives in layout/placement_sweep.rs) catches mask/sprite mismatches by sweeping buffer sizes × seeds and asserting every walkable pixel is reachable from the door threshold; narrow_band_connectivity_boundary_scan re-runs the same assert at the step-1 widths that discrete grid skips.
  4. If the connectivity test fails at a small buffer (SWEEP_SIZES starts at the minimum layout size), the sprite is too big for that pantry. Add a _small variant + conditional pick (see PantryRoom::counter_size / SceneLayout::pantry_counter_size() for the pattern).
  5. Register both foo.sprite and foo_small.sprite in crates/pixtuoid-scene/sprites/default/pack.toml if you added a variant (an unregistered sprite fails every_bundled_sprite_is_a_frame_the_pack_loads).
  6. If the piece has a density variant (foo@Nx.sprite, drawn by scripts/gen-art.py), resize it there too, with its 1x where the generator owns that; a variant not exactly N× its base reds the_bundled_pack_passes_its_own_validation.

Self-critique checklist — before sending a render to the user

Run this checklist before each render you send in a beautify loop, and state each row's result (✅/⚠️/❌) in the message. Fix any ❌ first; call out any ⚠️ you ship so the user sees the trade-off.

CheckWhat it means
Stranger-IDIf a stranger saw this with no context, would they identify each new element as the intended thing? Name each element explicitly.
Visually differsDiff is noticeable, not a sub-pixel tweak. If hash-identical to last attempt, you didn't actually rebuild.
Subzone widthEach new sub-element ≥ 5 display cells wide (§3).
Color distinctnessNew elements use colors distinct from immediate neighbours.
AliveThe asset ships what makes it alive — idle frames (frame_ms), a state-driven change, a response to weather or window light, or variety across agents — named in the PR body.
just testThe connectivity tests pass (§6 step 3).
--debug-walkableRendered the overlay and visually checked no narrow / isolated walkable pockets near the new element.

Workflow when adding a NEW decoration

  1. Sketch the design as a list of cells per row (count exactly).
  2. Pick a palette: reuse pack.toml keys; only add new ones if necessary.
  3. Write the .sprite file; verify row widths with the awk command above.
  4. Add a Piece::Foo variant (core sprite::format) and the [animations.foo] block to pack.toml (build.rs embeds the file itself): a pack without it, or a key no piece names, does not load.
  5. Decide where it lives in the layout — add a Point placement in SceneLayout::compute.
  6. Give it a Furniture variant + furniture_def row (§6 step 1). A new plant, wall-decor or pod-decor kind is then stamped by its collection's loop in mask::build_walkable_mask; a one-off piece also needs a MaskObstacles field and its own stamp_ground from that row, like fish_tank (or add a waypoint kind if it's interactive).
  7. Add a DrawableKind::Foo variant + paint_drawable arm if z-sorting matters.
  8. Run the connectivity tests (§6 step 3).
  9. Snapshot + iterate.

© IvanWng97, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/beautify-decoration of IvanWng97/pixtuoid.

Open the folder on GitHubat commit 413c70c

Compare with similar skills

Beautify Decoration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Beautify Decoration compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Beautify Decoration this skillIvanWng97/pixtuoid491—~2.5kAutomated safety check: PassMIT
Mira Img Animatorsandeco/mira-animator218—~1.7kAutomated safety check: PassCustom licence
Make Imagesglifxyz/glif-mcp-server213—~931Automated safety check: PassMIT
Game Asset Generatorhtdt/godogen7.1k—~2.8kAutomated safety check: PassMIT
Code-Drawn 2D Game Art0x0funky/agent-sprite-forge4.4k—~2.5kAutomated safety check: PassMIT
Sprite Genaldegad/sprite-gen2.7k—~4.9kAutomated safety check: PassApache-2.0

Similar skills

  • Mira Img Animator

    sandeco/mira-animator

    Transforma imagens (fotos, logos, diagramas) em animações D3.js interativas e self-contained.

    218 GitHub stars~1.7k tokensUpdated 26 days ago
    Game DevelopmentAuto-check passed
  • Make Images

    glifxyz/glif-mcp-server

    Make new still images from a brief with Glif and save them to a folder: concept art, a series of variations, mockups, posters, illustrations, wallpapers, reference boards or any picture that isn't…

    213 GitHub stars~931 tokensUpdated 2 days ago
    Game DevelopmentAuto-check passed
  • Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.

    7.1k GitHub stars~2.8k tokensUpdated 9 days ago
    Game DevelopmentAuto-check passed
  • Code-Drawn 2D Game Art

    0x0funky/agent-sprite-forge

    Draws 2D game art from code with no image model: pixel sprites, SVG props and icons, rigged characters, FX, autotiles and layouts, only when explicitly asked for.

    4.4k GitHub stars~2.5k tokensUpdated 4 days ago
    Game DevelopmentAuto-check passed
  • Sprite Gen

    aldegad/sprite-gen

    Generates images and game sprites through GPT or Grok with guided provider choices, separate saved defaults, automatic cleanup and optional curation.

    2.7k GitHub stars~4.9k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Pixel Art

    mateaix/mateclaw

    Pixel art w/ era palettes (NES, Game Boy, PICO-8). An agent skill from mateaix/mateclaw.

    1.2k GitHub starsUsed in 5 repos~1.8k tokens
    Game DevelopmentAuto-check passed

More from IvanWng97/pixtuoid

  • Local Review

    IvanWng97/pixtuoid

    Run pixtuoid's review locally at either scope — a DIFF review (one lens per matching REVIEW.md local escalation row; the correctness and design lenses are the automatic CI review's, never re-run…

    491 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Procedural Lofi

    IvanWng97/pixtuoid

    Generate a royalty-free lofi (or rain / typing / chime / any ambient) soundtrack ENTIRELY in code — no sampled audio ships.

    491 GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Add Source

    IvanWng97/pixtuoid

    Wire a new agent-CLI Source adapter into pixtuoid (a new coding CLI whose sessions become office sprites).

    491 GitHub stars~443 tokensUpdated today
    Auto-check passed
  • Add Theme

    IvanWng97/pixtuoid

    Add a new color theme to pixtuoid (a full Theme palette, rendered into the office).

    491 GitHub stars~449 tokensUpdated today
    Auto-check passed

Questions about Beautify Decoration

What does Beautify Decoration do?

Iterate on the visual identity of a top-down pixel-art decoration (sprite + layout integration) in pixtuoid. Beautify Decoration is an agent skill from IvanWng97/pixtuoid. Iterate on the visual identity of a top-down pixel-art decoration (sprite + layout integration) in pixtuoid.

When should I use Beautify Decoration?

Beautify Decoration fits situations like: redesigning an existing decoration (pantry; adding a new one.

How do I install Beautify Decoration in Claude Code?

Run `npx skills add IvanWng97/pixtuoid --skill beautify-decoration -a claude-code`. Or copy the skill folder (.claude/skills/beautify-decoration in IvanWng97/pixtuoid) into .claude/skills/beautify-decoration in your project. Claude Code loads it when a task matches its description.

How do I install Beautify Decoration in Codex?

Run `npx skills add IvanWng97/pixtuoid --skill beautify-decoration -a codex`. Or copy the skill folder (.claude/skills/beautify-decoration in IvanWng97/pixtuoid) into .agents/skills/beautify-decoration in your project. Codex loads it when a task matches its description.

Can I use Beautify Decoration in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add IvanWng97/pixtuoid --skill beautify-decoration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/beautify-decoration, .gemini/skills/beautify-decoration, .github/skills/beautify-decoration and .opencode/skills/beautify-decoration in your project.

What does Beautify Decoration need to run?

Going by SKILL.md and its folder, Beautify Decoration needs the command-line tools its instructions call (just and cargo). Our summary lists: Python 3.

Does Beautify Decoration access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Beautify Decoration safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Beautify Decoration use?

Beautify Decoration is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Beautify Decoration use?

About 2.5k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Beautify Decoration?

Skills that share tags, products or a category with Beautify Decoration: Mira Img Animator (sandeco/mira-animator, 218 stars), Make Images (glifxyz/glif-mcp-server, 213 stars), Game Asset Generator (htdt/godogen, 7.1k stars) and Code-Drawn 2D Game Art (0x0funky/agent-sprite-forge, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Beautify Decoration?

IvanWng97 (a GitHub user) maintains it in IvanWng97/pixtuoid, which has 491 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 11, 2026.

Source: IvanWng97/pixtuoid on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.