canvas-performance-optimization — Claude Code skill: setup
Helps eliminate frame drops in isometric Canvas games by culling off-screen tiles, batching draw calls, and removing render-loop allocations.
npx skills add 0xheycat/isometric-game-skills --skill canvas-performance-optimization -a claude-codeWhat canvas-performance-optimization does
Isometric Canvas renderers easily choke on excessive draw calls and frequent garbage collection pauses during map panning. This skill enforces a structured optimization workflow: measure frame time first, cull sprites outside the viewport, batch draws from a shared atlas, and isolate static ground layers onto an offscreen canvas.
It also forces integer pixel snapping to avoid sub-pixel blit overhead and bans creating temporary objects or arrays within the animation loop. Guessing bottlenecks before taking actual frame measurements will waste effort on the wrong code paths.
What it helps with
- stop frame rate drops when panning large isometric maps
- cut redundant draw calls by batching sprites from a texture atlas
- cache static ground layers onto an offscreen canvas
- remove per-frame allocations that trigger garbage collector pauses
Example prompts for the agent
- Profile and optimize the render loop for my isometric Canvas game to hit steady 60fps.
- Set up off-screen tile culling and cache the static terrain to an offscreen canvas.
- Identify allocations inside the game animation frame and convert them to reusable objects.
How to install canvas-performance-optimization
1Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill canvas-performance-optimization -a claude-code2Manually: put the files in place
~/.claude/skills/canvas-performance-optimization/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/canvas-performance-optimization/
1Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill canvas-performance-optimization -a codex2Manually: put the files in place
.agents/skills/canvas-performance-optimization/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill canvas-performance-optimization -a cursor2Manually: put the files in place
.cursor/skills/canvas-performance-optimization/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install 0xheycat/isometric-game-skills canvas-performance-optimization2Manually: put the files in place
.github/skills/canvas-performance-optimization/SKILL.md1Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill canvas-performance-optimization -a gemini-cli2Platform CLI
gemini skills install https://github.com/0xheycat/isometric-game-skills --path skills/canvas-performance-optimizationManually: put the files in place
.devin/skills/canvas-performance-optimization/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill canvas-performance-optimization -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 canvas-performance-optimization
How do I install canvas-performance-optimization in Claude Code?
Run npx skills add 0xheycat/isometric-game-skills --skill canvas-performance-optimization -a claude-code in your terminal.
What does canvas-performance-optimization do?
It guides coding agents through profiling frame times, culling hidden tiles, batching texture atlas draws, and removing memory allocations from the main loop.
Why does the skill enforce caching static layers?
Drawing unchanged background tiles on every single frame wastes render budget, so the skill moves them to an offscreen canvas updated only on actual map changes.
Source text
SKILL.md · MIT
--- name: canvas-performance-optimization description: Use when an isometric Canvas game drops frames, to cut draw calls and allocations and hold a steady 60fps. license: MIT --- # Canvas Performance Optimization ## Overview Isometric games die by a thousand draw calls. This skill profiles the frame, culls off-screen tiles, batches from the atlas, and removes per-frame allocations to hit a stable 60fps. ## When to Use - Frame rate drops or stutters. - Large maps lag when panning. - You suspect GC pauses or overdraw. ## Process 1. Profile first - measure where the frame time actually goes. 2. Cull: only draw tiles/objects inside the viewport. 3. Batch draws from one atlas to minimize texture binds. 4. Cache static layers (ground) to an offscreen canvas; redraw only when it changes. 5. Eliminate per-frame allocations (reuse arrays/objects). 6. Avoid sub-pixel blits; snap to integer pixels. 7. Re-profile to confirm the fix, do not assume. ```text Profile -> Cull -> Batch -> Cache static layer -> Kill allocations -> Re-profile ``` ## Rationalizations (Stop Lying to Yourself) | Excuse | Reality | |---|---| | "I know what is slow without profiling" | Guessing wastes hours on the wrong thing. Profile first. | | "Redrawing the ground every frame is fine" | Static ground should be cached. Redraw only on change. | ## Red Flags - STOP if you catch yourself: - Optimizing before profiling. - Redrawing static layers every frame. - Allocating inside the render loop. ## Verification You are NOT done until every box is checked: - [ ] Frame time was profiled before and after. - [ ] Off-screen content is culled and static layers cached. - [ ] No allocations occur inside the render loop; 60fps holds.
© 0xheycat · MIT · 0xheycat/isometric-game-skills