Adds a Section B rule to the review-architecture skill: a new node kind or
geometry change that exposes paintable parts must carry overrides in a
schema `slots` record resolved via def.capabilities.paint (and thread it
through clone/duplicate/preset paths), and texturable def.geometry must
emit UVs in metres (1 unit = 1 m) so catalog finishes tile. Surfaced in the
skill description too.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two invariants weren't captured by the wiki or the review-architecture
skill, so a PR could break them and pass review:
- node-schemas.md documented no backward-compat rule, even though
migrateNodes() runs at load. Add a Schema Evolution section (new
fields need a Zod default; renames/removals/retypes need a
migrateNodes entry) plus a Rules bullet.
- review-architecture skill only checked the narrow host-children
case for migrations and had no editor-layer check at all. Add a
general schema-migration item (§B) and an editor-overlay-layer
item (§E, overlay meshes must set EDITOR_LAYER or they leak into
thumbnails/snapshots and the ink/SSGI buffers).
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Add bullets to §4.B for surfaces that landed after the 2026-05-20
skill update:
- def.capabilities.paint (PaintCapability dispatch for paint mode)
- def.capabilities.floorPlaced (generic FloorElevationSystem)
- def.surfaceRole (Solid/Rendered/Clay render-mode pipeline)
Also add a verb-not-host-kind rule and mark capabilities.roofAccessory
as documented tech debt — extending the *Accessory / *Hosted shape is
now a blocker rather than a precedent.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Phase 6 of the node-registry plan landed the @pascal-app/nodes package,
the three-checkbox composition model (def.geometry / def.renderer /
def.system), capability-driven move dispatch, and the deletion of
per-kind dispatch / per-kind files across viewer + editor. Update the
review skill so it catches reintroductions of those legacy patterns
and reviews registry-driven additions against the new contract.
- Add packages/nodes as the 4th layer in the package-boundary pass.
- Add a "Node registry & composition" checklist section.
- Require reviewers to read node-definitions.md and plugin-authoring.md.
- Flag new `case '<kind>':` clauses, kind-specific files in legacy
locations, framework imports of @pascal-app/nodes, force-routing
bespoke-move kinds through MoveRegistryNodeTool, useLiveTransforms-
driven drag motion, builders that import useScene, missing
`__fromGeometry` markers, and v1-plugin-surface overreach.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace per-tool rule trees (.cursor/rules, .claude/rules, .codex/rules)
with a single wiki/architecture/ source — 11 pages + README — readable
as plain markdown by any agent. Canonical skills live in .agents/skills/;
.claude/skills, .cursor/skills, .codex/skills are directory symlinks.
AGENTS.md is the entrypoint (rewritten as a lean overview, no per-tool
path lists). CLAUDE.md, GEMINI.md, and .github/copilot-instructions.md
all point to it.
Add open-pr skill (uses .github/pull_request_template.md as the source
of truth for the PR body) and remove the dangling .claude/CLAUDE.md
relative symlink.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>