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 / state attrs (catalog)
  • Hand-edit dist/, or add a second metadata module (generated-metadata)
  • Ship a new or derived PNG without a credits entry (sheet-definition)
  • Rewrite or delete an old hash key — aliases go on the destination, and renames need an issue first (catalog)
  • Start with npm test, or run npm install after a lockfile conflict (npm run lockfile:fix)
  • Hand-edit cls-budgets.json or cls-budgets-delayed.json without the matching CI cls-profile artifact (delayCssMs 0 vs 3000) (cls, CLS.md)

After you edit

Match the check to what you touched, and confirm locally rather than waiting for CI.

TouchedLoad
sheet_definitions/, palette_definitions/sheet-definition
sources/, scripts/, vite/, tests/typescript, then run-one-spec and coverage
sources/canvas/, palette recolor, z-positionscanvas-render — needs the user; you cannot check both paths
sources/canvas/, load-image, renderCharacter, ZIP export drawingperformance-profiling — do not ask the user to open DevTools
install-item-metadata.ts, loadAllMetadata, catalog bootstrapperformance-profilingprofile:load, not profile:app
scripts/generateSources/generated-metadatanpm run metadata:size:check
First-paint CSS, layout shift, loading shellscls
Layout, PurgeCSS safelist, Playwright / Argosvisual-test

Update whatever doc the change makes stale (Doc ownership).