AGENTS.md
August 29, 2026 · View on GitHub
A Vite + Mithril app that composites LPC
character layers into a spritesheet ZIP plus attribution. The shareable
selection is the URL hash. Source of truth: sheet_definitions/,
palette_definitions/, and spritesheets/ — Vite generates the dist/
metadata modules, and the app reads them only through CatalogReader.
The skill listed against a topic owns the procedure; load it before
acting. Canonical skills live in .agents/skills/. Claude Code loads
.claude/skills/, which npm ci / npm run skills:link generates as
local links. Walkthroughs are in ARCHITECTURE.md and
CONTRIBUTING.md.
Never
- Add a new
.js— new code is.ts(typescript) - Reach for a global instead of the
catalog/stateattrs (catalog) - Hand-edit
dist/, or add a second metadata module (generated-metadata) - Ship a new or derived PNG without a
creditsentry (sheet-definition) - Rewrite or delete an old hash key —
aliasesgo on the destination, and renames need an issue first (catalog) - Start with
npm test, or runnpm installafter a lockfile conflict (npm run lockfile:fix) - Hand-edit
cls-budgets.jsonorcls-budgets-delayed.jsonwithout the matching CIcls-profileartifact (delayCssMs0 vs 3000) (cls, CLS.md)
After you edit
Match the check to what you touched, and confirm locally rather than waiting for CI.
| Touched | Load |
|---|---|
sheet_definitions/, palette_definitions/ | sheet-definition |
sources/, scripts/, vite/, tests/ | typescript, then run-one-spec and coverage |
sources/canvas/, palette recolor, z-positions | canvas-render — needs the user; you cannot check both paths |
sources/canvas/, load-image, renderCharacter, ZIP export drawing | performance-profiling — do not ask the user to open DevTools |
install-item-metadata.ts, loadAllMetadata, catalog bootstrap | performance-profiling — profile:load, not profile:app |
scripts/generateSources/ | generated-metadata — npm run metadata:size:check |
| First-paint CSS, layout shift, loading shells | cls |
| Layout, PurgeCSS safelist, Playwright / Argos | visual-test |
Update whatever doc the change makes stale (Doc ownership).