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

GPL-3.0Auto-check passed

Install Catalog

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

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

GitHub CLI
$ gh skill install LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator catalog --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/catalog .claude/skills/catalog && 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
catalog
GitHub stars
1.8k
Token cost
~1.3k tokens
SKILL.md length
537 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
GPL-3.0

At a glance

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

  • Editing a component
  • SKILL.md covers Production, Importing generated metadata, Tests and Emitted vs expanded ItemLite, plus 1 more section
  • Calls npm
  • Sources/state/ code

What it does

Catalog is an agent skill from LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator. Thread CatalogReader and State through Mithril attrs, never a hidden global. Handle Result/LoadError, seed test catalogs, and keep URL hashes stable. Use when adding or editing a component, a browser spec, or sources/state/ code, or when the user mentions catalog, state, hash, or aliases.

Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: Character Generator based on Universal-LPC-Spritesheet. The licence is GPL-3.0.

When your agent uses it

  • Editing a component
  • Sources/state/ code
  • The user mentions catalog

Example prompts

  • “/catalog”

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

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

  • Network

    No URLs in SKILL.md. Its commands use npm, 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

Catalog loads about 1.3k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 537 words of instructions outside code blocks.

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

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). 537 words, ~1,320 tokens.

Download SKILL.mdSave it as .claude/skills/catalog/SKILL.md (or your agent's skills folder).
name
catalog
description
Thread CatalogReader and State through Mithril attrs, never a hidden global. Handle Result/LoadError, seed test catalogs, and keep URL hashes stable. Use when adding or editing a component, a browser spec, or sources/state/ code, or when the user mentions catalog, state, hash, or aliases.

Catalog, state, and URL hash

Production

Thread catalog: CatalogReader and state: State from bootstrap to a UI composition boundary. Prefer passing a narrow model below that boundary when one exists; CurrentSelections is the first example. Build those models in main.ts, then have components forward or consume their assigned slices rather than constructing dependencies themselves. Do not read a hidden global. Views must not receive CatalogWriter (register*Metadata, loadCatalogFromFixtures).

Getters return Result<T, LoadError> (neverthrow). LoadError is { kind: "loading"; chunk } or { kind: "not-found"; id }.

Use typed getters (getItemLite, getItemLayers, getCategoryTree, …).

Readiness is staged: isIndexReady(), isLiteReady(), isCreditsReady(), isPaletteReady(), isLayersReady(), plus catalog.ready.on*. UI already branches on these (e.g. preview-canvas-loading.ts).

Only sources/main.ts calls configureStateCatalog. That binds the catalog for sources/state/ so those modules do not take a catalog argument on every call. It is not a hidden global for UI — components still receive catalog and state as attrs. createCatalog() returns separate { reader, writer } runtime objects backed by the same private stores. sources/install-item-metadata.ts starts registration with the writer and returns only the reader to production bootstrap.

Importing generated metadata

Source code imports the five chunks as ../<name>-metadata.js, not as a dist/ path. itemMetadataResolveAliases() in vite/wiring.ts installs a resolve.alias regex that rewrites any specifier ending in a metadata basename to dist/. So install-item-metadata.ts and browser-catalog-fixture.js both write ../index-metadata.js and get dist/index-metadata.js. Copy the existing specifier shape; do not "fix" it to a real path, and do not expect the file to exist next to the importer. If it fails to resolve, dist/ was never built — run npm run dev or npm run build. Stale .cache/ or a missing dist/ after a definition change: generated-metadata.

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

Tests

Destructure { reader, writer } = createCatalog() and create a fresh createState(). Never use the production reader or bootstrap state instance. Create a new catalog rather than re-seeding: loadCatalogFromFixtures and register*Metadata overwrite the stores but cannot move a resolved stage back to unresolved. A spec that re-seeds expecting a fresh "loading" catalog will silently see resolved stages instead.

Call configureStateCatalog(catalog) when the spec exercises sources/state/ effects. Override individual effects with setStateDeps and restore them with resetStateDeps.

  • seedCatalog — pass the writer to seed explicit fixtures; pass the paired reader to consumers
  • seedCatalogWithGeneratedContext — keeps generated palette/alias/tree/index context; needs generated metadata, so run npm run dev or npm run build first
  • register*Metadata — one readiness stage

A new spec has to actually hit the lines it covers: coverage.

Emitted vs expanded ItemLite

dist/item-metadata.js may intern variant strings and recolor palette maps. registerItemMetadata / registerIndexMetadata expand those into the runtime shapes getters return. Do not read v / r / p off getItemLite.

FieldEmitted (interned)Expanded (runtime ItemLite)
variantsomitted; v indexes variantArraysstring[]
recolors[0].variantsomitted; r indexes recolorVariantArraysstring[]
recolors[].palettesomitted; p indexes paletteArraysPaletteMap
licenses / tags / prioritynot on lite (credits chunk / sheet JSON / generator sort)not on lite

MetadataIndexes may include variantArrays, recolorVariantArrays, and paletteArrays. Expansion keeps those tables on the index store. Palette restore (hasInternedPalettes) does not require v / r. Until the index chunk arrives, getPaletteOptions treats missing palettes as {}.

URL hash

Shape: type_name=Item_variant (e.g. expression=Neutral_light). Old hashes must keep working. Put aliases on the destination definition. Do not rewrite or delete old hash keys. Discuss renames in an issue first.

Details: Catalog and state, URL hash.

© 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/catalog of LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator.

Open the folder on GitHubat commit 58ce1aa

Compare with similar skills

Catalog 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.

Catalog compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Catalog this skillLiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator1.8k—~1.3kAutomated safety check: PassGPL-3.0
Turn This Into A Threadsickn33/agentic-awesome-skills47k1 repos~1.4kAutomated safety check: PassMIT
Aria Hidden Bodythedaviddias/Front-End-Checklist74k—~444Automated safety check: PassMIT
Aria Hidden Focusthedaviddias/Front-End-Checklist74k—~468Automated safety check: PassMIT
Thread Listget-bb/bb4.2k—~902Automated safety check: PassMIT
Android Hidden API and R8 Checkgkd-kit/gkd43k—~1.5kAutomated safety check: PassGPL-3.0

Similar skills

  • Turn This Into A Thread

    sickn33/agentic-awesome-skills

    Turn a long idea, transcript, article or draft into a Twitter/X thread where every tweet stands alone.

    47k GitHub starsUsed in 1 repo~1.4k tokens
    Writing & ContentAuto-check passed
  • Aria Hidden Body

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Do not use aria-hidden on the document body.

    74k GitHub stars~444 tokensUpdated 3 days ago
    Frontend & DesignAuto-check passed
  • Aria Hidden Focus

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Remove focusable elements from aria-hidden containers.

    74k GitHub stars~468 tokensUpdated 3 days ago
    Frontend & DesignAuto-check passed
  • Thread List

    get-bb/bb

    Inspect or change the sidebar thread list's layout preferences: organization mode, sort, section order, hidden groups, collapsed groups, and thread row actions.

    4.2k GitHub stars~902 tokensUpdated today
    Auto-check passed
  • Checks whether Android hidden-API implementations and system callbacks survive R8 minification, and diagnoses Release-only failures such as AbstractMethodError.

    43k GitHub stars~1.5k tokensUpdated yesterday
    MobileAuto-check passed
  • Aria Allowed Attr

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Use only allowed ARIA attributes for each role.

    74k GitHub stars~450 tokensUpdated 3 days ago
    Frontend & DesignAuto-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 yesterday
    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 yesterday
    Auto-check passed
  • Performance Profiling

    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.

    1.8k GitHub stars~1.8k tokensUpdated yesterday
    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 yesterday
    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 yesterday
    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 yesterday
    Auto-check passed

Questions about Catalog

What does Catalog do?

Thread CatalogReader and State through Mithril attrs, never a hidden global. Catalog is an agent skill from LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator. Thread CatalogReader and State through Mithril attrs, never a hidden global.

When should I use Catalog?

Catalog fits situations like: editing a component; sources/state/ code; the user mentions catalog.

How do I install Catalog in Claude Code?

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

How do I install Catalog in Codex?

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

Can I use Catalog 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 catalog -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/catalog, .gemini/skills/catalog, .github/skills/catalog and .opencode/skills/catalog in your project.

What does Catalog need to run?

Going by SKILL.md and its folder, Catalog needs the command-line tools its instructions call (npm).

Does Catalog access the network?

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

Is Catalog 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 Catalog use?

Catalog 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 Catalog use?

About 1.3k tokens (SKILL.md is roughly 5.3k 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 Catalog?

Skills that share tags, products or a category with Catalog: Turn This Into A Thread (sickn33/agentic-awesome-skills, 47k stars), Aria Hidden Body (thedaviddias/Front-End-Checklist, 74k stars), Aria Hidden Focus (thedaviddias/Front-End-Checklist, 74k stars) and Thread List (get-bb/bb, 4.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Catalog?

LiberatedPixelCup (a GitHub organization) maintains it in LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator, which has 1,834 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.