isometric-grid-math — Claude Code skill for isometric coordinates
This skill guides an agent through grid-to-screen and screen-to-grid math for a 2:1 isometric projection. Use it to place tiles or pick a tile with the mouse.
npx skills add 0xheycat/isometric-game-skills --skill isometric-grid-math -a claude-codeWhat isometric-grid-math does
The skill provides the transform from a tile’s column and row to screen coordinates, plus the inverse needed to identify the tile beneath a cursor. It also accounts for a world-origin offset, which lets the grid start at a chosen screen position.
Set the tile width and height first, then round inverse-transform results to integer tile coordinates. The skill calls for a round-trip check and a documented anchor convention: tile top or tile center. Keep that convention consistent; otherwise, rendered placement and mouse picking can disagree.
What it helps with
- calculate screen positions from tile coordinates
- identify the tile beneath a mouse cursor
- check inverse grid and screen transforms
- keep tile anchor conventions consistent
Example prompts for the agent
- Calculate screen positions from a tile's column and row using a 2:1 projection.
- Add the inverse transform so a mouse click identifies its grid tile.
- Check that converting an integer tile to screen coordinates and back returns the same tile.
How to install isometric-grid-math
1Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill isometric-grid-math -a claude-code2Manually: put the files in place
~/.claude/skills/isometric-grid-math/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/isometric-grid-math/
1Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill isometric-grid-math -a codex2Manually: put the files in place
.agents/skills/isometric-grid-math/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill isometric-grid-math -a cursor2Manually: put the files in place
.cursor/skills/isometric-grid-math/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install 0xheycat/isometric-game-skills isometric-grid-math2Manually: put the files in place
.github/skills/isometric-grid-math/SKILL.md1Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill isometric-grid-math -a gemini-cli2Platform CLI
gemini skills install https://github.com/0xheycat/isometric-game-skills --path skills/isometric-grid-mathManually: put the files in place
.devin/skills/isometric-grid-math/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill isometric-grid-math -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about isometric-grid-math
How do I install isometric-grid-math in Claude Code?
Run npx skills add 0xheycat/isometric-game-skills --skill isometric-grid-math -a claude-code. The skill file is at ~/.claude/skills/isometric-grid-math/SKILL.md.
What does isometric-grid-math do?
It guides an agent through both directions of coordinate conversion for a 2:1 isometric grid, including the inverse used for mouse picking.
How should I verify the coordinate transforms?
Convert integer grid coordinates to screen coordinates and back, then check that the original tile is recovered. Choose either the tile top or its center as the anchor and use it consistently.
Source text
SKILL.md · MIT
--- name: isometric-grid-math description: Use when converting between grid coordinates and screen pixels in a 2:1 isometric projection, including screen-to-grid for mouse picking. license: MIT --- # Isometric Grid Math ## Overview Every isometric bug eventually traces back to the coordinate transform. This skill gives the exact, tested grid<->screen formulas for a 2:1 projection so placement and picking are pixel-correct. ## When to Use - Tiles render in the wrong place or overlap. - Mouse clicks select the wrong tile. - You are starting a renderer and need the core transform. ## Process 1. Fix tile width W and height H (2:1 means W = 2*H). 2. grid->screen: screenX = (col - row) * (W/2); screenY = (col + row) * (H/2). 3. Add the world origin offset so (0,0) is where you want it on screen. 4. screen->grid (for picking): invert the transform using W and H. 5. Round screen->grid results to integer tile coords. 6. Validate round-trip: grid -> screen -> grid returns the original tile. 7. Document the anchor (tile top vs tile center) and stay consistent. ```js const screenX = (col - row) * (W / 2); const screenY = (col + row) * (H / 2); // inverse const col = ((screenX / (W/2)) + (screenY / (H/2))) / 2; const row = ((screenY / (H/2)) - (screenX / (W/2))) / 2; ``` ## Rationalizations (Stop Lying to Yourself) | Excuse | Reality | |---|---| | "I will tweak offsets until it looks right" | Magic offsets break on resize/zoom. Derive the transform. | | "Rounding does not matter" | Unrounded screen->grid selects the wrong tile near edges. Round it. | ## Red Flags - STOP if you catch yourself: - Hard-coded pixel offsets instead of a derived transform. - No screen->grid inverse for picking. - Round-trip grid->screen->grid does not return the same tile. ## Verification You are NOT done until every box is checked: - [ ] grid->screen and screen->grid are both implemented. - [ ] Round-trip conversion is exact for integer tiles. - [ ] Anchor convention is documented and consistent.
© 0xheycat · MIT · 0xheycat/isometric-game-skills