Catch bad animations before they ship. Deterministic motion audit + vision-LLM design review for your terminal and Claude Code.
claude mcp add motionlint -- npx -y motionlint{
"mcpServers": {
"motionlint": {
"command": "npx",
"args": ["-y", "motionlint"],
"env": {
"ANTHROPIC_API_KEY": "<anthropic_api_key>",
"OPENAI_API_KEY": "<openai_api_key>",
"GOOGLE_API_KEY": "<google_api_key>"
}
}
}
}ANTHROPIC_API_KEYOPENAI_API_KEYGOOGLE_API_KEYResumen de MCP Servers
# MotionLint [](https://www.npmjs.com/package/motionlint) [](LICENSE) [](https://github.com/bobaba99/motionlint/actions/workflows/ci.yml) **Score any page's animation quality in one command. No API key, no config.** ```bash npx motionlint audit http://localhost:3000 --open ``` <p align="center"> <img src="docs/media/cli-audit.gif" width="800" alt="motionlint audit running in a terminal: the demo app's /loading route scores 64/100 with findings across duration, easing and accessibility"> </p> <p align="center"><sub>Deterministic — measured from the live page, no LLM involved. One-time prerequisite: <code>npx playwright install chromium</code>.</sub></p> MotionLint measures the motion your app actually ships — durations, easing curves, stagger intervals, exit timing, reduced-motion support — and scores it against a published set of [animation standards](docs/STANDARDS.md). Ease-in on a dropdown, a 600ms modal, a card that scales from 0, hover motion that fires on touch: all caught, all with the measured value and a concrete fix. The audit is free and offline. Add an API key and MotionLint also does **vision-LLM design review** — multi-viewport screenshots and 50ms frame bursts of real user journeys, judged by a model and handed back to your coding agent as ranked findings. It runs as an MCP server inside Claude Code and Cursor. ## Why this exists AI coding agents read JSX, HTML, and CSS — they're blind to what the user actually sees, clicks, and watches animate. Rules in a prompt tell the agent what *should* happen; nothing checks what *did*. Modals that should slide in just pop; loading states get omitted; focus rings disappear. Code review can't catch any of this before merge, because none of it is visible in the diff. MotionLint closes that loop: it measures the running app and feeds the verdict back. ## How it's different | | MotionLint | Visual regression tools (Percy, Chromatic, Playwright snapshots) | AI design generators (v0, Galileo, Claude Design, Stitch) | | --- | --- | --- | --- | | **Deterministic motion audit** | **13 checks, measured from the live page — no API key, $0** | ✗ | ✗ | | Multi-viewport UX review | ranked findings across 12 dimensions | pixel diffs only | generates new layouts from prompts | | **Animation review** | **50ms frame bursts via CDP screencast → contact sheet → LLM** | ✗ | ✗ | | **Live animation tuning** | **Shadow-DOM previews + sliders + Claude Code export** | ✗ | generates new motion, doesn't tune what's there | | Native MCP server | ✓ stdio MCP for Claude Code / Cursor | ✗ | varies | | CI gate | ✓ SARIF + exit codes for code scanning | ✓ image diff thresholds | ✗ | | Validated quality | **100% recall on a 24-fixture stress test, across 5 frontier models** | n/a | n/a | The conceptual gap MotionLint closes: visual-regression tools catch what *changed* but not whether the new pixels are *good*; AI design tools generate from scratch but don't review what's already running. MotionLint reviews live behavior with a vision LLM and feeds the verdict back into the coding loop. ## Start here — no API key needed ```bash npx playwright install chromium # one-time per machine (~300MB) npx motionlint audit http://localhost:3000 --open ``` That's the whole setup for the audit. It's deterministic, runs offline, costs nothing, and works on any URL you can load — your dev server, a staging deploy, or someone else's site. Requires Node 18+. The rules it checks are published in [docs/STANDARDS.md](docs/STANDARDS.md) — read them before you install anything. ## Then: LLM design review Set one API key (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, or `GOOGLE_API_KEY` — or run Ollama locally for free) and three more commands unlock: ```bash npm install -g motionlint # Multi-viewport UX review of a page → ranked findings across 12 dimensions. motionlint review http://localhost:3000 # Animation review of a scripted user journey → frame contact sheet + report. motionlint flow --spec flows/signup.json # Interactive HTML tuner — every animation on the page, with live sliders. motionlint tune http://localhost:3000 ``` ### Inside Claude Code / Cursor ```bash claude mcp add motionlint -- npx -y motionlint mcp ``` <details> <summary><b>Full flag surface</b> — CI gates, route discovery, Storybook, dark mode, baselines</summary> ```bash # CI mode — non-zero exit on critical issues, SARIF output for code scanning. motionlint review https://staging.acme.dev --ci --threshold critical --format sarif -o ux.sarif # Polished, shareable HTML review with embedded screenshots + before/after fixes. motionlint review http://localhost:3000 --format html -o review.html # Review every route the site knows about (sitemap.xml + Next.js app/ directory). motionlint review http://localhost:3000 --discover-routes # Storybook mode — discover stories from /index.json, review each story iframe as its own route. motionlint review http://localhost:6006 --storybook # Color-scheme sweep — light and dark modes, plus Windows High Contrast. motionlint review http://localhost:3000 --schemes --forced-colors --format html -o review.html # Interaction affordances — grid each element's default/hover/focus/active states. motionlint review http://localhost:3000 --state-grid # Agent focus — keep only the top 5 findings, and only ones not seen in prior runs. motionlint review http://localhost:3000 --max-findings 5 --new-only # Before/after comparison — PR preview vs. production baseline. motionlint review https://pr-123.preview.example.com --against https://prod.example.com # Reviewer focus — cap the SARIF upload at 10 annotations per report. motionlint review https://staging.acme.dev --format sarif -o ux.sarif --max-pr-annotations 10 # Pick a provider explicitly (auto-detect picks the first reachable one). motionlint review http://localhost:3000 --provider anthropic --model claude-sonnet-5 # Track provider quality across runs + teach the reviewer from eval misses. motionlint eval --provider anthropic --evolve ``` </details> Package on npm: [motionlint](https://www.npmjs.com/package/motionlint). Sample terminal output for a flow review: ```text $ motionlint flow --spec flows/signup.json --provider anthropic → Running flow "signup-happy-path" against http://localhost:3000/signup (11 steps, 50ms intervals × 750ms window) provider: anthropic (claude-sonnet-5) capturing flow… ✓ step 1: 16 frames ✓ step 2: 16 frames ✓ step 3: 16 frames … captured 176 frames in 31s contact sheet → .motionlint/flows/signup-happy-path-…png analyzing flow… report → .motionlint/flows/signup-happy-path.md Score: 4/10 · 3 critical findings [critical] interaction — input focus rings missing across steps 2/4/6 [critical] interaction — submit button has no pressed state [critical] loading_state — 1.4s wait with no spinner during submit ``` ## Try the demo A multi-route TS animation showcase ships in [demo/](demo/) — covering Motion One, GSAP, anime.js, @formkit/auto-animate, and lottie-web — including a cat-themed one-pager that exercises every MotionLint capability in a single URL: ```bash node demo/server.mjs # http://localhost:4173 motionlint review http://localhost:4173/cat --record --embed motionlint flow --spec flows/signup.json motionlint tune http://localhost:4173/dashboard ``` Routes available: `/`, `/pricing`, `/signup`, `/dashboard`, `/loading`, `/cat`. Reports go to `.motionlint/reports/`, screenshots to `.motionlint/screenshots/`, videos to `.motionlint/videos/`. ## Setup ### API keys MotionLint auto-loads a `.env` file from the working directory at startup: ```bash # .env (gitignored) ANTHROPIC_API_KEY=sk-ant-... # or OPENAI_API_KEY=sk-... # or GOOGLE_API_KEY=... # or run a local Ollama (no key needed) — auto-detected on http://localhost:11434 ``` Real environment variables take precedence over `.env`. With no key set and no Ollama running, MotionLint falls back to a deterministic **mock provider** so the full pipeline (capture → analysis → report) still runs end-to-end for smoke tests. ### Provider auto-detect MotionLint auto-detects in this order: **Ollama (local) → Anthropic → OpenAI → Google**. The first one with a working API key (or running service) wins. Override with `--provider <name>` and `--model <id>`. See [Providers in depth](#providers-in-depth) for the per-provider quality scorecard and how to pick. --- > *Everything below is for readers who want to understand how MotionLint works under the hood, pick the right provider for their workflow, or wire it into CI.* ## Validated quality across providers The flow-review pipeline was stress-tested across **12 popular web-app animation patterns × 2 variants** (24 fixtures total) — staggered entrances, hover/press/focus, modal entrances, loading skeletons, form errors, toasts, counter ramps, multi-animation dashboards, modal-with-content stagger, rich form feedback (focus + press + spinner + success), and scroll-driven animations (progress bar + IntersectionObserver reveal + parallax). Run on **2026-07-27** against the current flagship from each major provider: | Provider · model | Recall (broken caught) | FPR (clean flagged) | Score gap | Wall time | | --- | --- | --- | --- | --- | | **OpenAI · gpt-5.6-sol** | **100%** (12/12) | 0% (0/12) | +3.3 | 10.9 min | | **OpenAI · gpt-5.5** | **100%** (12/12) | 0% (0/12) | +3.3 | 11.5 min | | **Anthropic · claude-opus-5** | **100%** (12/12) | 8% (1/12) | +4.1 | 21.0 min | | **Google · gemini-3.6-flash** | **100%** (12/12) | 17% (2/12) | +5.1 | 4.9 min | | **Anthropic · claude-sonnet-5** | **100%** (12/12) | 33% (4/12) | +3.1 | 10.8 min | **Read this as: recall is no longer a differentiator.** Every current flagship catches all 12 seeded faults. Tha
Lo que la gente pregunta sobre motionlint
¿Qué es bobaba99/motionlint?
+
bobaba99/motionlint es mcp servers para el ecosistema de Claude AI. Catch bad animations before they ship. Deterministic motion audit + vision-LLM design review for your terminal and Claude Code. Tiene 0 estrellas en GitHub y se actualizó por última vez today.
¿Cómo se instala motionlint?
+
Puedes instalar motionlint clonando el repositorio (https://github.com/bobaba99/motionlint) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar bobaba99/motionlint?
+
bobaba99/motionlint aún no ha sido auditado por nuestro agente de seguridad. Revisa el repositorio original en GitHub antes de usarlo en producción.
¿Quién mantiene bobaba99/motionlint?
+
bobaba99/motionlint es mantenido por bobaba99. La última actividad registrada en GitHub es de today, con 0 issues abiertos.
¿Hay alternativas a motionlint?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega motionlint en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/bobaba99-motionlint)<a href="https://claudewave.com/repo/bobaba99-motionlint"><img src="https://claudewave.com/api/badge/bobaba99-motionlint" alt="Featured on ClaudeWave: bobaba99/motionlint" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!