Create Motion
Produce a MotionProof bundle or return the structured failure. Never describe an uncertified candidate as production-ready.
If the host project does not already have MotionProof, install the current public release before running the commands below:
npm install https://github.com/HowdyDooToYou/lottie-animation-pipeline/releases/download/v2.0.0/motionproof-2.0.0.tgz
Choose the route
- Start without a model or API key: use a built-in recipe.
- When another agent or model created Lottie JSON: certify that candidate.
- When application code owns model access: use the typed provider interface.
- When the host supports MCP: prefer the
create_motion,certify_motion, andlist_motion_recipestools.
Create from a prompt
Run:
npx motionproof create "<motion intent>" --json
Add --recipe <id> only when the user selected a recipe. Add theme flags only
when real design tokens are available:
--primary '#2f70ff' --accent '#ef6545' --background '#11151b'
Certify an existing candidate
Run:
npx motionproof certify ./candidate.json \
--prompt "<intended visual behavior>" \
--json
Do not repair or silently promote a failed candidate. Use its structured issues to revise the source, then certify again.
Integrate the result
Require ok: true and certification.certified: true. Then:
- Copy
animation.jsonto the target app's supported asset location. - Use
poster.pngwhenever reduced motion is requested or JavaScript motion is unavailable. - Keep
manifest.jsonandcertification.jsonwith the release or CI evidence. - Use
preview.htmlfor offline review. - Respect the target repository's runtime, performance, and accessibility constraints. Do not introduce motion into a surface that explicitly excludes it.
Typed provider
Keep credentials and model SDKs in the host application:
import { createMotion, defineMotionProvider } from "motionproof";
const provider = defineMotionProvider("my-agent", async ({ systemPrompt, request }) => {
const text = await callMyModel(systemPrompt, request.prompt);
return text;
});
const result = await createMotion(
{ prompt: "A restrained save confirmation" },
{ provider, outputDirectory: "./public/motion" },
);
The provider may return Lottie JSON, JSON text, or
{ animation, model?, recipe?, notes? }. MotionProof owns validation,
browser rendering, poster capture, hashing, and atomic promotion.
The certified subset is expression-free and vector-only. Do not introduce image/audio layers, remote assets, external fonts, or executable expressions.
Motion-quality evidence
Every successful certification.json includes local, provider-neutral evidence
for easing, timing, multi-element choreography, and property communication.
MotionProof currently uses policy soft-report-v1: that evidence contributes to
the displayed score and gives concrete revision guidance, while the established
85-point structural score stays the mandatory promotion gate. Review
certification.quality.motion.warnings before iterating; do not treat a
provider's self-description as evidence.
Definition of done
Accept only a bundle whose checks all pass:
- strict Lottie schema without auto-repair
- expression-free vector content with no external dependencies
- quality score of at least 85
- every representative frame paints pixels
- meaningful motion across sampled transitions
- payload within the delivery budget
- reduced-motion poster captured
If any check fails, report the failure stage and concrete issues. Do not copy a candidate into production paths.