Skip to content

Skill playbooks, renderer-free simulation code, and examples as integration tests - #56

Merged
SandroMaglione merged 5 commits into
mainfrom
refactor/integration-tests-and-skill-playbooks
Oct 19, 2026
Merged

SandroMaglione merged 5 commits into
mainfrom
refactor/integration-tests-and-skill-playbooks

Conversation

@SandroMaglione

@SandroMaglione SandroMaglione commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Skill: playbooks per kind of change

skills/ritmo/SKILL.md now routes each change to a playbook and keeps the six principles plus the self-check. There are six playbooks:

  • mechanic
  • content
  • ui-and-render
  • bug-fix
  • refactor
  • state-and-upgrades

Each is a short numbered list of steps that names the Ritmo API to use and ends with a Done when check. The total is 112 lines. The structure follows pstack: a router plus playbooks loaded on demand. The new lessons come from inkline-town#30:

  • keep the simulation in one folder with one glob;
  • project the world once into plain view data for UIs and renderers;
  • bots and tests send the same intents as the UI;
  • lint the import direction between folders.

ritmo/keep-simulation-headless (breaking)

  • Type-only imports: the rule now reports type-only renderer imports (import type { Container } from "pixi.js"), so neither the schema nor the simulation can name a renderer type. Renderer services live in render code, and services are not registered in the schema.
  • Subpath imports: the rule also catches @typeonce/ritmo-render/* and @typeonce/ritmo-pixi/*, which used to slip past it.
  • Docs: the README and the rule message say the same thing. The changeset carries the fix as a diff.

examples/ → integration/

  • Top-down: integration/top-down is the headless simulation, debug.ts and the test. It names no renderer or page type, and ritmo-devtools lint on it reports no lints and no uncovered modules.
  • Algorithms: integration/algorithms keeps its test.
  • Concepts: concepts.ts moved next to Concepts.test.ts.
  • Deleted: the untested pixi, platformer and genetics examples, vite.config.ts, the example:* scripts, and matter-js.
  • Linting: one glob, integration/*/**, covers all integration simulations.
  • README: links Inkline Town and Spirit Call under "Games built with Ritmo".

Repo cleanup

  • Deleted: RELEASING.md and ARCHITECTURE.md.
    • RELEASING.md was a completed one-time rebrand checklist. Its still-useful release and add-a-package steps are now in .changeset/README.md.
    • From ARCHITECTURE.md, the extension rule moved into AGENTS.md. The rest restated the code or AGENTS.md.
  • Removed: the orphan assets/spr_player.png, vitest.shared.ts (folded into vitest.config.ts), and stale docs/** and output/** lint ignores.
  • AGENTS.md: 112 to 50 lines, keeping only rules that change a decision and aren't enforced by tooling.

Verification

pnpm run check passes (77 files, 568 tests), and so does pnpm pack:check, which now also asserts the playbooks ship.

🤖 Generated with Claude Code

SandroMaglione and others added 5 commits October 19, 2026 12:17
…ion code, and turn examples into integration tests

- The ritmo skill gets one playbook per kind of change (mechanic, content,
  UI and rendering, bug fix, refactor, state and upgrades); SKILL.md routes
  to them and keeps the principles.
- ritmo/keep-simulation-headless reports type-only renderer imports and
  ritmo-render / ritmo-pixi subpath imports.
- examples/ is replaced by integration/top-down and integration/algorithms:
  headless simulations with their tests, renderer-free, covered by one lint
  glob. The browser-only examples and vite setup are removed.
- The root README links the games built with Ritmo.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Release steps move to .changeset/README.md. AGENTS.md keeps only rules that
change a decision and are not enforced by tooling (112 to 50 lines).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@SandroMaglione
SandroMaglione merged commit 6b38ef6 into main Oct 19, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant