sheetfit
Strictly normalize an AI-generated animation sprite sheet so every grid cell is the SAME size and center-anchored, output as one engine-ready sheet.
Skill by gmlxo76
Chalk Labs
Need help deploying sheetfit?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/gmlxo76-sheetfit
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: spreadsheets
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/sheetfit
Tools it pre-approves 1
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash(node:*)
What's inside
- Skill name
sheetfit- Description
- Strictly normalize an AI-generated animation sprite sheet so every grid cell is the SAME size and center-anchored, output as one engine-ready sheet. Auto-runs after any sprite-sheet/animation-sheet generation.
- License
- Apache-2.0
- Allowed tools
- Bash(node:*)
- Instructions
- 83 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
Agent Skills spec issues
- name: missing
- files: referenced but missing: scripts/sheetfit.py
Files (1)
- SKILL.md
SKILL.md (first lines)
# Sheetfit — Animation Sprite Sheet Normalizer (Codex Image)
AI image generators draw each frame of a sprite sheet independently, so frames end
up at slightly different positions and sizes. If you slice such a sheet on a fixed
grid, the animation **jumps/jitters**. `sheetfit` is the **mandatory strict gate** that
fixes this: it verifies every cell shares the same content size + center anchor,
and if not, normalizes (size + position) and recomposes the frames into **one
corrected sheet** — then strictly re-verifies.
Output is a single **engine-ready sheet** (NOT per-cell files), so in Unity you set
**Sprite Mode = Multiple → Slice → Grid by Cell Count (cols × rows)** and every row
(one animation) plays registered with no jump.
## When to use — ALWAYS for sprite/animation sheets
**This is not optional.** Run `sheetfit` on the result of ANY sprite-sheet or
animation-sheet generation, every time, before the sheet is considered done:
- right after `/codex-image:generate` or `/codex-image:style-gen` produces a sheet
whose content is a grid of animation frames,
- on every sprite-sheet / animation-sheet item produced by `/codex-image:asset-pipeline`.
If `sheetfit` reports `status: "rework"`, the sheet is NOT acceptable — **regenerate
the source sheet** (label-free, transparent gutters between every cell, strict even
grid, same character scale per cell) and run `sheetfit` again. Repeat until
`status` is `"fixed"` or `"pass"`.
## Source sheet requirements (so the gate can pass)
- **No text/labels inside the image** (labels break grid division).
- **Transparent gutters** between every row and column; content never touches a cell edge.
- **Strict even grid**, same character scale and baseline in every cell.
- Transparent background (chroma-keyed).
## Arguments
```
/codex-image:sheetfit <sheet.png> <grid spec>
```
- `<sheet.png>`: the generated sheet (quote if path has spaces).
- `<grid spec>`: free-form; the agent parses cols × rows. `"4x9"` → cols=4, rows=9.
- Optional: `--anchor bottom|center` (default `bottom` — feet planted, best for
ground creatures), `--pad N` (transparent padding inside each cell, default 4),
`--output <path>`, `--check` (verify only, write nothing).
## Run it
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/codex-image.mjs" sheetfit "<sheet.png>" --grid <CxR> [--anchor bottom|center] [--pad 4] [--output <path>]
```
How it works: detects the TRUE frame grid via transparent GUTTERS (robust to uneven
AI spacing — NOT a naive even split), tightly trims each frame, sizes every cell to
the max frame extent + padding, re-anchors each frame consistently, and recomposes
into one corrected sheet. STRICT: it requires exactly `cols` column bands and `rows`
row bands with uniform column widths; labels, touching frames, or an uneven grid make
detection fail → `status: "rework"`. By default the fixed sheet is written next to the
input as `<name>_fixed.png` with a `<name>_fixed.sheet.json` sidecar.
## Result contract
The dispatcher prints one machine-readable line:
```
SHEETFIT {"status":"pass|fixed|rework","input":"...","output":"...","grid":"4x9","cellWidth":N,"cellHeight":M,...}
```
- `pass` — source was already uniform/aligned (exit 0). Use `output` as-is.
- `fixed` — normalized + recomposed into `output` (exit 0). Use `output`. Slice in
Unity with Grid by Cell Count = grid, or Grid by Cell Size = `cellWidth × cellHeight`.
- `rework` — could not be made uniform (exit 1). **Do NOT ship it.** Regenerate the
source sheet per the requirements above and re-run. This is the strict, adversarial
behavior: when in doubt, fail and rework.
## Notes
- Implemented by `scripts/sheetfit.py` (Pillow + numpy).
- `--check` only verifies and reports (writes nothing) — exit 1 if not normalizable.
- Bottom-center anchor keeps the character grounded across frames; for frames that
change shape a lot (e.g. an attack lunge) the top may move while the base stays
fixed — usually what you want. Use `--anchor center` for symmetric content.From gmlxo76/codex-image-in-cc, Apache-2.0.
More from gmlxo76/codex-image-in-cc
- 0.493score
measure-first
gmlxo76
When the user gives a reference/mockup they want replicated and asks to turn its on-screen elements into game resources, MEASURE every element's real pixel…
SkillCFreshness: C★ 1Claude Code +9 - 0.487score
style-gen
gmlxo76
Generate a new image whose visual style matches an attached reference image, via Codex CLI's built-in imagegen skill
SkillCFreshness: C★ 1Claude Code +9 - 0.487score
generate
gmlxo76
Generate one or more images through Codex CLI's built-in imagegen skill
SkillCFreshness: C★ 1Claude Code +9 - 0.483score
slice
gmlxo76
Slice an atlas-style sheet into per-cell PNGs plus an atlas.json sidecar
SkillCFreshness: C★ 1Claude Code +9 - 0.483score
organize
gmlxo76
Reorganize an asset-pipeline manifest into a kind-first engine folder layout
SkillCFreshness: C★ 1Claude Code +9 - 0.482score
status
gmlxo76
Report Codex CLI prerequisites and login status for image generation
SkillCFreshness: C★ 1Claude Code +9 - 0.474score
asset-pipeline
gmlxo76
Plan and batch-generate a project's asset set in a locked visual style, by orchestrating /codex-image:style-gen
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jun 3, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/gmlxo76/codex-image-in-cc
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from gmlxo76
- 0.493score
measure-first
gmlxo76
When the user gives a reference/mockup they want replicated and asks to turn its on-screen elements into game resources, MEASURE every element's real pixel…
SkillCFreshness: C★ 1Claude Code +9 - 0.487score
style-gen
gmlxo76
Generate a new image whose visual style matches an attached reference image, via Codex CLI's built-in imagegen skill
SkillCFreshness: C★ 1Claude Code +9 - 0.487score
generate
gmlxo76
Generate one or more images through Codex CLI's built-in imagegen skill
SkillCFreshness: C★ 1Claude Code +9 - 0.483score
slice
gmlxo76
Slice an atlas-style sheet into per-cell PNGs plus an atlas.json sidecar
SkillCFreshness: C★ 1Claude Code +9 - 0.483score
organize
gmlxo76
Reorganize an asset-pipeline manifest into a kind-first engine folder layout
SkillCFreshness: C★ 1Claude Code +9 - 0.482score
status
gmlxo76
Report Codex CLI prerequisites and login status for image generation
SkillCFreshness: C★ 1Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get sheetfit running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
sheetfit skill. Agent Mart. https://agentmart.dev/skills/gmlxo76-sheetfit (last updated 2026-10-24)