Skip to content

docs: describe the six capabilities shipped since the differential was re-scored - #180

Merged
LeadcodeDev merged 1 commit into
mainfrom
docs/new-capabilities
Aug 12, 2026
Merged

docs: describe the six capabilities shipped since the differential was re-scored#180
LeadcodeDev merged 1 commit into
mainfrom
docs/new-capabilities

Conversation

@LeadcodeDev

Copy link
Copy Markdown
Owner

Six features landed in #168#178 that neither CLAUDE.md nor any rule mentions. For a tool whose scenarios are generated, a capability the rules do not describe may as well not exist — issue #165 was this exact failure one level down, where the distribution channel silently dropped 17 rules.

What is now documented

Two new rules

  • templates-and-iteration.mdcomponents / for-each / use. The largest new vocabulary, aimed at the failure mode the original audit called dominant: a generator duplicating a repeated structure by hand.
  • motion-path.md — the effect, its SVG path syntax (the same one shape: {"type":"path"} already uses), and why the coordinates are deltas from the layout position rather than absolute.

Two extended

  • geometry-safety.md gains text-autofit as a fourth viewport control alongside white-space, auto_scroll and overflow — including the floor, and the fact that a violation is still reported when shrinking is not enough. It also says plainly that only text and gradient_text implement it, so declaring it on a caption is inert.
  • timeline-sequencing.md gains what style.transition actually smooths: the four interpolated properties, and the three distinct reasons a property snaps instead — layout, discrete, unsupported-paint — since validate now names them. With the practical consequence: animate transform, not width.

CLAUDE.md picks up the same, plus --frames / rustmotion concat, --hardware-acceleration, and the --fix refusal rules.

Running the examples found a real trap

The docs' own examples were executed, not just written. One failed:

Warning: Unresolved variable reference '$accent' after substitution
Error: color '$accent' is not a recognized CSS color

A for-each item that omits a field, forwarded through a use's props, passes the literal $name through instead of falling back to the component's default. A params default applies when props omits the key — not when it forwards an unresolved binding.

Nothing is silent about it: an unresolved-variable warning fires, then the consumer rejects the value. But it is the natural way to write "optional field with a default", so it now has its own section in the rule, with the working form. The example is corrected and validates.

This is the argument for running documentation rather than reviewing it.

The distribution pipe works

The two new rules ship without touching skills.rs:

$ rustmotion skills install
Installed 51 file(s) to .claude/skills/rustmotion/   (was 49)

49 rules on disk, 49 embedded, exhaustiveness test green. That is PR #168's build script doing exactly what it was written for — the fix for #165 proving itself on the first real addition since.

Verification

Still undocumented

The spring's duration / rest_threshold (#168) and rustmotion info's Media assets section (#178) are mentioned nowhere yet. Both are CLI-facing rather than scenario vocabulary, so they matter less to a generator, but they are gaps.

…s re-scored

Six features landed in #168-#178 that neither CLAUDE.md nor any rule
mentions. For a tool whose scenarios are generated, a capability the rules
do not describe may as well not exist — issue #165 was exactly this failure
one level down, where the distribution channel dropped 17 rules.

Two new rules:

- `templates-and-iteration.md` — `components` / `for-each` / `use`, the
  largest new vocabulary, aimed at the failure mode the audit called
  dominant.
- `motion-path.md` — the effect, its SVG path syntax, and why coordinates
  are deltas from the layout position.

Two extended:

- `geometry-safety.md` gains `text-autofit` as a fourth viewport control,
  next to `white-space`, `auto_scroll` and `overflow` — with the floor and
  the fact that a violation is still reported when shrinking is not enough.
- `timeline-sequencing.md` gains what `style.transition` actually smooths:
  the four interpolated properties, and the three reasons a property snaps
  instead, since `validate` now names them.

CLAUDE.md picks up the same, plus `--frames` / `concat`,
`--hardware-acceleration`, and the `--fix` refusals.

Writing the docs found a real trap, which is why the examples were run
rather than only written. A `for-each` item that omits a field, forwarded
through a `use`'s `props`, passes the literal `$name` instead of falling
back to the component's `default` — a `params` default applies when `props`
omits the key, not when it forwards an unresolved binding. Nothing is silent
about it (an unresolved-variable warning, then the consumer rejects the
value) but it is the natural way to write "optional field", so it now has
its own section. The example that exposed it is corrected and validates.

The two new rules ship without touching `skills.rs`: `skills install` goes
from 49 files to 51, and the exhaustiveness test stays green. That is PR
#168's build script doing what it was written for.
@LeadcodeDev LeadcodeDev added the documentation Improvements or additions to documentation label Aug 12, 2026
@LeadcodeDev LeadcodeDev self-assigned this Aug 12, 2026
@LeadcodeDev
LeadcodeDev merged commit 8dcfe6b into main Aug 12, 2026
3 checks passed
@LeadcodeDev
LeadcodeDev deleted the docs/new-capabilities branch August 12, 2026 09:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant