Skip to content

Skills audit fixes: BOMs, mojibake, merge contradiction, retire jgengine-procedural, unify skill lists - #883

Merged
Noisemaker111 merged 3 commits into
mainfrom
claude/skills-audit-fixes
Jul 16, 2026
Merged

Noisemaker111 merged 3 commits into
mainfrom
claude/skills-audit-fixes

Conversation

@Noisemaker111

Copy link
Copy Markdown
Owner

Fixes everything surfaced by the skills/CLAUDE.md audit:

  • UTF-8 BOMs stripped from 9 SKILL/reference files + check-skill-sync.ts + packages/jgengine/src/skills.ts. The BOM pushed frontmatter off byte 0, so five domain skills (world, procedural, combat, gameplay, multiplayer) rendered --- empty descriptions in every session listing, and the sync gate's frontmatter checks silently skipped them. check-skill-sync now hard-fails on any BOM'd SKILL.md.
  • Mojibake re-encoded (236 â€" em-dashes, arrows, ellipses) across game, harvest-game, harvest-full-game, and four skill reference files.
  • Merge contradiction fixed: harvest/SKILL.md instructed "squash-merge immediately" and game/SKILL.md ended its loop with "merge" — both now match CLAUDE.md's never-merge/user-owns-merging rule.
  • jgengine-procedural retired: its api surface was survival-only (34 lines of decay meters) while its description promised terrain/voxels/buildings — all of which live in jgengine-world; its reference.md was a verbatim duplicate of world's. survival now routes to jgengine-gameplay; router tables in jgengine/SKILL.md and CLAUDE.md updated (also removes the duplicate "Terrain" routing row).
  • Skill lists unified: stage-skills.ts, check-skill-sync.ts, and gen-skill-api-safe.ts now derive from skillRouting.SKILL_DIRS instead of three divergent hard-coded lists; jgengine-editor is now included in the CLI skills bundle (GAME_SKILLS), which previously omitted it.
  • Dedupe pass: whole-world persist prose was near-identical in three skills — jgengine-gameplay is now the single authoring guide, jgengine/jgengine-multiplayer carry pointers; duplicate "Race sessions" section inside gameplay removed; assets' Kenney blockquote shortened to a pointer at CLAUDE.md.
  • api.md regenerated (survival domain now under gameplay); 32 pre-existing undocumented exports on main seeded into api-doc-baseline.json as tracked debt.

Full local gate green.


Generated by Claude Code

claude added 2 commits July 16, 2026 16:51
…ine-procedural, unify skill lists

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JuehpjvwcXpPYqy9yM9Hza
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JuehpjvwcXpPYqy9yM9Hza
@vercel

vercel Bot commented Jul 16, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
jgengine-web Ignored Ignored Preview Jul 16, 2026 7:23pm

Resolve conflicts: keep skills-audit intent (retire jgengine-procedural,
keep decay-meter capability), take main writeFileSync + baseline entry.
@Noisemaker111
Noisemaker111 merged commit 6b52033 into main Jul 16, 2026
8 checks passed
@Noisemaker111
Noisemaker111 deleted the claude/skills-audit-fixes branch July 16, 2026 19:23
Noisemaker111 pushed a commit that referenced this pull request Jul 16, 2026
…arrel

- gen-barrels/barrels.test still referenced jgengine-procedural after #883
  retired the skill dir, crashing the sync tests (ENOENT); procedural.ts
  stays as a frozen compat barrel.
- Regen gameplay barrel: survival symbols now route there, and document the
  four survival types the barrel newly surfaces.

These test failures were invisible for the same reason as the orphan gate:
main's CI dies at check-types before tests run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjYn1uP6nf8maGvAvHFNjB
Noisemaker111 added a commit that referenced this pull request Jul 16, 2026
…on, surface red main (#945)

* Fix orphan gate false positives, un-red main CI, surface red main as an issue

- Orphan check now unions skill tokens across all skills: a primitive surfaced
  in any SKILL.md or adopted anywhere passes everywhere. Kills the 31 false
  orphans created when curated core barrels re-listed deep symbols under the
  main jgengine skill (whose docs never name them) — the failure that has kept
  main's checks job red and could not be baselined (ratchet is shrink-only).
- gen-skill-api hard-fails when any extracted package lacks dist instead of
  silently dropping modules and corrupting api.md/baselines.
- Gen mode exits 2 on gate failures so the safe wrapper keeps valid generated
  files instead of rolling back legitimate regeneration.
- PR quick job now builds and runs check-skill-api so this failure class can
  no longer merge unseen; red main auto-files/updates a 'CI red on main' issue.
- tsconfig.build excludes cover .test.tsx (first .tsx test broke builds).
- Prune 97 orphan-baseline entries resolved by the union fix; regen stale
  capabilities.md; resync AGENTS.md with CLAUDE.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjYn1uP6nf8maGvAvHFNjB

* Fix barrel generator's retired-skill reference and drifted gameplay barrel

- gen-barrels/barrels.test still referenced jgengine-procedural after #883
  retired the skill dir, crashing the sync tests (ENOENT); procedural.ts
  stays as a frozen compat barrel.
- Regen gameplay barrel: survival symbols now route there, and document the
  four survival types the barrel newly surfaces.

These test failures were invisible for the same reason as the orphan gate:
main's CI dies at check-types before tests run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjYn1uP6nf8maGvAvHFNjB

* Regen main-skill capabilities.md for barrel-surfaced survival primitives

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjYn1uP6nf8maGvAvHFNjB

* Fix compile breakage merged into main today (#899/#900/#904/#942 interactions)

Upstream PRs merged red-on-red and never compiled together — invisible for
the same reason this PR exists (PR CI runs no build; main CI red, unseen):
- core: EditorDocument lacked the catalogs field and the ParamSchema import
  its own editor code referenced; three document constructors updated.
- shell: AuthoredScene lost the placeObjects prop/render in the liveDocument
  refactor but kept its consts; defineGame loop hooks now satisfy the
  Required<GameLoop> shape from #942.
- editor: missing seedEditorCatalogs/EditorCatalogDefinition/CatalogsPanel
  imports, undefined catalogById map, readonly-array push, frozen editor
  loop missing onReset/onDispose.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjYn1uP6nf8maGvAvHFNjB

* Fix compile breakage merged into main today (#899/#900/#904/#942 interactions)

Upstream PRs merged red-on-red and never compiled together — invisible for
the same reason this PR exists (PR CI runs no build; main CI red, unseen):
- core: EditorDocument lacked the catalogs field and the ParamSchema import
  its own editor code referenced; three document constructors updated.
- shell: AuthoredScene lost the placeObjects prop/render in the liveDocument
  refactor but kept its consts; defineGame loop hooks now satisfy the
  Required<GameLoop> shape from #942.
- editor: missing seedEditorCatalogs/EditorCatalogDefinition/CatalogsPanel
  imports, undefined catalogById map, readonly-array push, frozen editor
  loop missing onReset/onDispose; new CLI/RPC plumbing exports marked
  @internal (no external adopters).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjYn1uP6nf8maGvAvHFNjB

* Trim jgengine-gameplay SKILL.md back under the size ratchet

The systems paragraph from #942 grew it 2 lines past baseline — another
red-main-invisible failure; merged into the barrel-import paragraph.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjYn1uP6nf8maGvAvHFNjB

* Move tower-guard editorCatalogs under src/game/ per game-shape gate

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjYn1uP6nf8maGvAvHFNjB

* Fix consumers of the #942 Required loop contract and the game-shape move

apps/dev demos and the-robots/tower-guard were never updated for today's
upstream contract changes (required onReset/onDispose, EditorDocument
catalogs) — same red-main blindness; all 29 workspaces typecheck again.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjYn1uP6nf8maGvAvHFNjB

* Regen stale export manifest; drive claudecraft headless tests via composed loop

Both pre-existing on merged main: #942 moved claudecraft combat into
systems but its headless harness still ticked the raw loop export, and
the export manifest was never regenerated for today's new modules.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjYn1uP6nf8maGvAvHFNjB

* Wire rpcPayload into the editor CLI; restore editorCatalogs convention

More half-landed upstream: cli.ts referenced an undefined options var and
never used parseEditorCliArgs/loadRpcPayload, so --rpc-file and stdin
paths (and their tests) were dead. The catalog loader convention is
src/editorCatalogs.ts — check-game-shape now allows that skeleton file
instead of forcing it under src/game/ where the loader can't find it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjYn1uP6nf8maGvAvHFNjB

---------

Co-authored-by: Claude <noreply@anthropic.com>
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.

2 participants