Skip to main content

Motion Recipes

Four tools for the register-neutral DS motion-token layer. Distinct from the cinematography primitives in Primitives & Reference: motion recipes are catalogued in catalog/motion-recipes.json and apply across all personalities, scoped by the camera-guardrails spring_physics constraint.


get_motion_recipe

Get a single motion recipe by ID from the motion-tokens catalog. Returns the full record: tokens, interrupt contract, reduced-motion fallback, runtime scope.

  • Name
    recipe_id
    Type
    string
    Description

    Required. Recipe ID, e.g. enter.fade-up, attention.pulse. Use search_motion_recipes to discover IDs.

Returns: Full recipe record with tokens, interrupt contract, reduced-motion fallback, and runtime scope.

Try asking your AI:

"Get the enter.fade-up motion recipe"


search_motion_recipes

Search the motion-recipe catalog by intent, context, and personality. Motion recipes are register-neutral, so personality applies the camera-guardrails spring_physics constraint. A montage query excludes spring/framer-only recipes, and excluded recipes are reported rather than silently dropped.

  • Name
    intent
    Type
    string
    Description

    Free-text intent, e.g. "element appearing on scroll".

  • Name
    context
    Type
    string
    Description

    Surface/context the motion applies to, e.g. card, modal-body, toast, nav-item.

  • Name
    personality
    Type
    string
    Description

    Optional personality. Applies the spring_physics guardrail (montage and any custom personality whose derived boundaries forbid spring exclude spring/framer-only recipes).

Returns: Ranked matches with reasons, plus any recipes excluded by the personality guardrail.

Try asking your AI:

"Find motion recipes for an element appearing on scroll, in a card surface, montage personality"


validate_motion_token

Validate a motion usage against the motion-token rules. Reports only, never mutates. Rule vocabulary: raw_duration and raw_easing (literal values instead of var(--duration-*) / var(--ease-*) tokens), and recipe_match (the usage matches a catalogued recipe). Same rule names the ANI-135 source scanner reuses.

  • Name
    usage
    Type
    object
    Description

    Required. A motion usage: { duration?, easing?, properties? } — e.g. { "duration": "0.3s", "easing": "ease-out", "properties": ["opacity", "transform"] }.

Returns: Per-rule findings on the supplied usage, with matched recipe (if any).

Try asking your AI:

"Validate this motion usage: 0.3s ease-out on opacity and transform"


audit_motion_coverage

Scan a directory or file and report motion-token coverage. Returns total motion usages, how many use recipes/tokens vs raw durations/easings, a coverage percentage, and a per-file breakdown. Stopgap in-repo scanner (the full source scanner is ANI-135 in the Preset repo); the output flags this.

  • Name
    path
    Type
    string
    Description

    Required. Directory or file path to scan. Skips node_modules/.git/dist/build; scans .css/.scss/.ts/.tsx/.js/.jsx.

Returns: Coverage summary and per-file breakdown. Skips node_modules / .git / dist / build; scans .css/.scss/.ts/.tsx/.js/.jsx.

Try asking your AI:

"Audit motion coverage in apps/animatic-docs/src"

Was this page helpful?

Built on Preset · © 2026 fndd, LLC