Skip to main content
skill CX Codex

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.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add 0xheycat/isometric-game-skills --skill canvas-performance-optimization -a claude-code
Open on GitHub

What 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-code

2Manually: put the files in place

~/.claude/skills/canvas-performance-optimization/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/canvas-performance-optimization/

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

Similar skills

All skills for Game dev and 3D: Unity, Unreal, Godot, Blender →

From the same set21

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor