Skip to content

rustmotion skills install distributes only 30 of 47 rules, none of the ones CLAUDE.md cites by name #165

Description

@LeadcodeDev

Found while re-scoring the Remotion differential, and verified directly.

Fixed by PR #168. Kept for the record; the reasoning below is what shaped that fix.

The finding

rustmotion skills install is the channel through which an agent receives the generation rules. SKILL_FILES (crates/rustmotion-cli/src/skills.rs:16) embedded 30 of them. There are 47 on disk.

$ ls .claude/skills/rustmotion/rules/*.md | wc -l
47
$ grep -o 'rules/[a-z0-9_-]*\.md' crates/rustmotion-cli/src/skills.rs | sort -u | wc -l
30

The 17 missing ones were not a harmless sample:

Missing rule Why it matters
geometry-safety.md Cited by name in CLAUDE.md:14. The rule explaining white-space, auto_scroll and overflow — the core of viewport safety.
world-view.md Cited by name in CLAUDE.md:40. Coordinate model of the world view, including the world-position = camera waypoint trap.
audio-reactive.md Cited by name in CLAUDE.md:100.
html-css-mental-model.md Corrected by PR #156 because it taught margin-top and padding: [32, 48] — forms CssStyle rejects, which drop the whole component from the video.
component-field-placement.md, time-remapping.md, animation-completion-budget.md, typography-readability.md, scene-pacing.md, … + 12 more

Why this was worse than "17 forgotten files"

The chantier repaired the content without repairing the pipe. PR #156 corrected html-css-mental-model.md precisely because it taught LLMs to produce JSON that deletes components. But that file had never been in SKILL_FILES, before or after. An agent with only rustmotion skills install saw neither the broken version nor the corrected one — the fix did not reach it.

And CLAUDE.md explicitly points readers at three rules they will not receive. The entry document links to pages the distribution channel does not deliver.

Root cause

SKILL_FILES was a hand-maintained literal list with no guard. No test asserted that it covered .claude/skills/rustmotion/rules/. Any rule added since was invisible by default, and would have stayed so silently.

Resolution

PR #168 deleted the literal list rather than completing it: a build.rs walks the skills tree at build time, so "every rule is embedded" holds by construction. Verified by running the installed binary into an empty directory — 49 files written, 47 of them rules — and by a test comparing what is embedded against the directory, which fails naming any file that drifts out.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions