Run the headless app, catalog-load, and ZIP profilers and interpret the JSON the way a human would from window.profiler.report(), profile:load, and the ZIP console table.

GPL-3.0Auto-check passedDevelopment

Install Performance Profiling

skills CLI
$ npx skills add LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator --skill performance-profiling -a claude-code

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

GitHub CLI
$ gh skill install LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator performance-profiling --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/LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/performance-profiling .claude/skills/performance-profiling && 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
performance-profiling
GitHub stars
1.8k
Token cost
~1.8k tokens
SKILL.md length
744 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
GPL-3.0

At a glance

Run the headless app, catalog-load, and ZIP profilers and interpret the JSON the way a human would from window.profiler.report(), profile:load, and the ZIP console table.

  • Editing sources/canvas/
  • SKILL.md covers Which command, Workflow, Interpreting and Still ask the user
  • Calls npm and npx
  • Performance-profiler

What it does

Performance Profiling is an agent skill from LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator. Run the headless app, catalog-load, and ZIP profilers and interpret the JSON the way a human would from window.profiler.report(), profile:load, and the ZIP console table. Use when editing sources/canvas/, load-image, renderer, zip export, zip-helpers, performance-profiler, install-item-metadata, loadAllMetadata, or when the user mentions performance, profiling, slow render, FPS, catalog load, or ZIP export timing.

Its SKILL.md is about 1.8k 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 Development, covering Performance optimization. It works with npm, Vite and Playwright. The repository describes itself as: Character Generator based on Universal-LPC-Spritesheet. The licence is GPL-3.0.

When your agent uses it

  • Editing sources/canvas/
  • Performance-profiler
  • Install-item-metadata
  • LoadAllMetadata

Example prompts

  • “/performance-profiling”

Requirements

  • Node.js

What it can do on your machine

Read from SKILL.md and the folder at commit 58ce1aa. 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:

    • npm
    • npx

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

  • Network

    No URLs in SKILL.md. Its commands use npm and npx, which can reach the network depending on how they are called.

    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

Performance Profiling loads about 1.8k tokens when it runs. Until then it costs about 110 tokens; SKILL.md has 744 words of instructions outside code blocks.

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

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 LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator at commit 58ce1aa, republished under its GPL-3.0 licence (© LiberatedPixelCup). 744 words, ~1,769 tokens.

Download SKILL.mdSave it as .claude/skills/performance-profiling/SKILL.md (or your agent's skills folder).
name
performance-profiling
description
Run the headless app, catalog-load, and ZIP profilers and interpret the JSON the way a human would from window.profiler.report(), profile:load, and the ZIP console table. Use when editing sources/canvas/, load-image, renderer, zip export, zip-helpers, performance-profiler, install-item-metadata, loadAllMetadata, or when the user mentions performance, profiling, slow render, FPS, catalog load, or ZIP export timing.

Performance profiling

Do not ask the user to open DevTools. Run the matching script, then read the JSON or the diff. Phase names and console commands: PERFORMANCE_PROFILING.md.

Which command

What changedCommandNotes
loadImage(), renderCharacter(), hash hydration, preview, palette recolornpm run profile:appLive app, ?debug=true. Default --recolor both (WebGL + ?recolor=cpu). Headless Playwright Chromium is SwiftShader; real GPU: --headed --channel chrome.
loadAllMetadata, metadata chunks, catalog bootstrapnpm run profile:loadProduction vite preview, not Vite serve. Median of 5 navigations. Port 4178 (APP_LOAD_PROFILE_PORT).
Generated metadata payload bytesnpm run metadata:size / metadata:size:checkGenerator output, not Vite chunks. CI gates 500 KiB item / 600 KiB pair.
Drawing, slicing, or PNG encodenpm run profile:zip:quickFake JSZip. Ignore generateZip.
Real zip packaging (generateAsync, zip-helpers)npm run profile:zipReal JSZip. Slower.

These are not interchangeable. Match the command to the change. The ZIP pair is not a substitute for profile:app, and profile:load is not a substitute for either (Vite serve pretty-prints metadata; window.profiler starts after catalog import). Layout shift during load is cls, not a row on this table.

Before any of them: npx playwright install once. ZIP scripts need dist/*-metadata.js (npm run dev or npm run build once) and use npx serve. profile:app starts Vite serve on 127.0.0.1:5178 (override APP_PROFILE_PORT) unless you pass --url http://127.0.0.1:5173. profile:load runs vite build then vite preview on 127.0.0.1:4178 unless you pass --url.

A full ZIP run can take several minutes (up to 10). App profile with both recolor modes is usually 2–4 minutes. profile:load is a production build plus five homepage navigations. Request full permissions; Playwright needs a real browser. If PLAYWRIGHT_BROWSERS_PATH points at a Cursor sandbox cache, the script unsets it.

Workflow

If the change is not yet made, take a baseline first. Use the matching pair (:quick with :quick, profile:app with profile:app).

bash
npm run profile:app:baseline
# …make the change…
npm run profile:app
npm run diff:app-profile -- tmp/baseline-app-profile.json tmp/app-profile.json

Catalog bootstrap / metadata payload:

bash
npm run profile:load:baseline
# …make the change…
npm run profile:load
npm run diff:app-load-profile -- tmp/baseline-app-load-profile.json tmp/app-load-profile.json

A few milliseconds on indexReadyMs / liteReadyMs is noise; 50 ms+ median is worth a second look (first-paint gates). A 50 ms+ move on catalogReadyMs alone can be the credits/palette tail. diff:app-load-profile always exits 0.

diff:app-profile prints two sections when both files contain both modes: ======== webgl ======== and ======== cpu ========. Compare like-with-like. One mode only: --recolor webgl or --recolor cpu.

bash
npm run profile:zip:baseline:quick
npm run profile:zip:quick
npm run diff:zip-profile -- tmp/baseline-zip-export-profile-quick.json tmp/zip-export-profile-quick.json

If the change is already made and tmp/baseline-*.json exists from this machine, diff against it. If there is no baseline, report the absolute numbers and flag outliers. Do not invent a baseline after the fact.

JSON lands under tmp/ (gitignored) and is also printed on stdout.

Show full SKILL.md (341 more words)Show less

Interpreting

A positive Δ means the after run was slower. Compare on the same machine. A few milliseconds is noise. renderCharacter can swing tens of ms between two runs; repeat once if a single Δ is the only evidence.

Confirm activeMode and recolorStats in each section: CPU must show activeMode: cpu and cpu > 0 if the outfit recolours. WebGL should show webgl > 0 (or cpu if this Chromium has no GL). Confirm renderer (unmaskedRenderer): SwiftShader / llvmpipe is software GL, not the user's GPU. Hardware looks like ANGLE (Apple, … Metal …) or an NVIDIA/AMD name. --headed --channel chrome fails the run if the renderer is still software.

App profile (profiler.snapshot(), same buckets as profiler.report()):

  • renderCharacter — compositing only (not dynamic-import wait)
  • snapshot().renderCharacter.calls[] — per-step phasesMs / counters for each completed render (mithrilRedrawStart, buildDrawCalls, sizeCanvas, loadImages, recolor, draw, customLoad, customRecolor, customDraw, mithrilRedrawEnd)
  • image-load:<path> — one span per network load
  • hash-loadSelectionsFromHash — URL hash hydration
  • Category totals: imageLoads, draws, previews, domUpdates
  • Slow-operation threshold is 50ms (slowThresholdMs)
  • diff:app-profile prints ── renderCharacter phases ── (call 0 vs call 0, call 1 vs call 1)

Catalog load profile (profile:load, production vite preview):

  • indexReadyMs — navigation time origin to __LPC_waitCatalogIndexReady()
  • liteReadyMs — navigation time origin to __LPC_waitCatalogLiteReady() (hash / initCanvas wait on index+lite)
  • catalogReadyMs — navigation time origin to __LPC_waitCatalogAllReady() (credits, palette, layers too)
  • catalog-load / catalog-chunk:* — User Timing around each metadata import
  • metadata *-metadata* resources — transferSize, decodedBodySize, duration
  • A few milliseconds is noise; 50 ms+ on indexReadyMs or liteReadyMs median is worth a second look

ZIP profile (phasesMs / metadata):

  • render_imageLoadDecode_* / render_composite_*
  • drawAndSlice, pngEncode, zipFile, staticFiles
  • generateZip — only meaningful on the real-JSZip run

The default character is the full outfit in zip-profile-default-hash.ts, not whatever was last open in a browser. profile:app then deselects the layered gear (body + head + expression only).

Limit one ZIP export: npm run profile:zip -- --only splitAnimations (also splitItemSheets, splitItemAnimations, individualFrames). Custom app hashes: npm run profile:app -- --hash '…' --hash2 '…'. Real GPU: npm run profile:app -- --headed --channel chrome (and the same flags on profile:app:baseline). Compare GPU baselines only to GPU runs.

Still ask the user

WebGL vs CPU visual correctness is not this skill: canvas-render. Timing both recolor paths is.

© LiberatedPixelCup, GPL-3.0. 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 .agents/skills/performance-profiling of LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator.

Open the folder on GitHubat commit 58ce1aa

Compare with similar skills

Performance Profiling 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.

Performance Profiling compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Performance Profiling this skillLiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator1.8k—~1.8kAutomated safety check: PassGPL-3.0
Redis Insight Pluginredis/RedisInsight8.9k—~3.5kAutomated safety check: PassMIT
Run Dozzle Dev Instanceamir20/dozzle15k—~747Automated safety check: PassMIT
Qwen Code Memory Leak DebuggerQwenLM/qwen-code28k—~1.3kAutomated safety check: PassApache-2.0
Upgrade Starter Kitworkadventure/map-starter-kit156—~1.3kAutomated safety check: NotesCustom licence
Pixijs Createpixijs/pixijs-skills346—~3.1kAutomated safety check: PassMIT

Similar skills

  • Redis Insight Plugin

    redis/RedisInsight

    Official

    A skill your agent uses when creating, modifying, debugging, deploying, or testing Redis Insight Workbench visualization plugins, plugin manifests, package.json visualizations, activationMethod…

    8.9k GitHub stars~3.5k tokensUpdated 3 days ago
    DatabasesAuto-check passed
  • Starts a Dozzle dev server on a port derived from the current worktree so you can test by hand in a browser, without disturbing instances started elsewhere.

    15k GitHub stars~747 tokensUpdated today
    DevelopmentAuto-check passed
  • Walks through capturing and comparing V8 heap snapshots to find memory leaks in the Qwen Code Node.js CLI, using tmux and the chrome-devtools CLI.

    28k GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Upgrade Starter Kit

    workadventure/map-starter-kit

    Upgrade a WorkAdventure map repository to the latest version of the map-starter-kit (github.com/workadventure/map-starter-kit) - refreshes package.json dependencies, vite/tsconfig/build config, CI…

    156 GitHub stars~1.3k tokensUpdated 5 days ago
    DevelopmentAuto-check: notes
  • Pixijs Create

    pixijs/pixijs-skills

    A skill your agent uses when scaffolding a new PixiJS v8 project with the create-pixi CLI or adding PixiJS to an existing project.

    346 GitHub stars~3.1k tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Version Bump and Release

    escapeWu/perplexity-ai

    Bumps a project version, updates both changelogs, builds the frontend, then commits, tags and pushes the release.

    169 GitHub stars~528 tokensUpdated 10 days ago
    DevelopmentAuto-check passed

More from LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator

All 11 skills in this repo
  • Cls

    LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator

    Measure lab CLS with profile:cls, debug layout shift from loading shells and first-paint jump, and keep budgets tied to a CI artifact.

    1.8k GitHub stars~822 tokensUpdated today
    Auto-check passed
  • Coverage

    LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator

    Run and read unit-test coverage for this repo and satisfy the codecov/patch and codecov/changes gates.

    1.8k GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Run One Spec

    LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator

    Run a single Node, browser, or Playwright spec instead of the full suite.

    1.8k GitHub stars~746 tokensUpdated today
    Auto-check passed
  • Typescript

    LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator

    Write TypeScript that satisfies this repo's lint and tsconfig rules, and convert an existing .js file to .ts without breaking its call sites.

    1.8k GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Generated Metadata

    LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator

    Diagnose missing or stale dist/-metadata.js, the Vite metadata plugin cache, and the ../name-metadata.js import alias.

    1.8k GitHub stars~597 tokensUpdated today
    Auto-check passed
  • Catalog

    LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator

    Thread CatalogReader and State through Mithril attrs, never a hidden global.

    1.8k GitHub stars~1.3k tokensUpdated today
    Auto-check passed

Categories

Questions about Performance Profiling

What does Performance Profiling do?

Run the headless app, catalog-load, and ZIP profilers and interpret the JSON the way a human would from window.profiler.report(), profile:load, and the ZIP console table. Performance Profiling is an agent skill from LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator.report(), profile:load, and the ZIP console table.

When should I use Performance Profiling?

Performance Profiling fits situations like: editing sources/canvas/; performance-profiler; install-item-metadata; loadAllMetadata.

How do I install Performance Profiling in Claude Code?

Run `npx skills add LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator --skill performance-profiling -a claude-code`. Or copy the skill folder (.agents/skills/performance-profiling in LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator) into .claude/skills/performance-profiling in your project. Claude Code loads it when a task matches its description.

How do I install Performance Profiling in Codex?

Run `npx skills add LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator --skill performance-profiling -a codex`. Or copy the skill folder (.agents/skills/performance-profiling in LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator) into .agents/skills/performance-profiling in your project. Codex loads it when a task matches its description.

Can I use Performance Profiling 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 LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator --skill performance-profiling -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/performance-profiling, .gemini/skills/performance-profiling, .github/skills/performance-profiling and .opencode/skills/performance-profiling in your project.

What does Performance Profiling need to run?

Going by SKILL.md and its folder, Performance Profiling needs the command-line tools its instructions call (npm and npx). Our summary lists: Node.js.

Does Performance Profiling access the network?

SKILL.md contains no URLs. Its commands use npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Performance Profiling 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 Performance Profiling use?

Performance Profiling is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Performance Profiling use?

About 1.8k tokens (SKILL.md is roughly 7.1k 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 Performance Profiling?

Skills that share tags, products or a category with Performance Profiling: Redis Insight Plugin (redis/RedisInsight, 8.9k stars), Run Dozzle Dev Instance (amir20/dozzle, 15k stars), Qwen Code Memory Leak Debugger (QwenLM/qwen-code, 28k stars) and Upgrade Starter Kit (workadventure/map-starter-kit, 156 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Performance Profiling?

LiberatedPixelCup (a GitHub organization) maintains it in LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator, which has 1,829 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 7, 2026.

Source: LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.