Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "motionspec",
"description": "Verified web motion for AI-built sites: write a MotionSpec JSON spec, validate it against a strict schema, and compile deterministic GSAP/CSS with reduced-motion support and performance budgets enforced by construction (WCAG 2.2.2/2.3.3). Includes a motion-accessibility audit for any URL.",
"version": "1.2.6",
"description": "Verified web motion for AI-built sites: write a MotionSpec JSON spec, validate it against a strict schema, and compile deterministic GSAP/CSS with reduced-motion support and performance budgets enforced by construction. Reports WCAG 2.2.2 pause-path candidates (reduced-motion guard = 2.3.3, AAA). Includes a motion-accessibility audit for any URL.",
"version": "1.2.7",
"author": {
"name": "Kevin Fröba",
"email": "security@motionspec.dev",
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
![MCP Registry](https://img.shields.io/badge/MCP%20Registry-io.github.MasterPlayspots%2Fmotionspec-6f42c1)
[![smithery badge](https://smithery.ai/badge/kevin-froeba/motionspec)](https://smithery.ai/servers/kevin-froeba/motionspec)

**MotionSpec is an open-core trust layer that verifies and compiles reduced-motion-safe, on-budget UI animation for AI-generated web apps.** An LLM authors a **schema-validated JSON spec**; a **deterministic compiler** emits vanilla-GSAP JavaScript + CSS — injection-proof and catalog-validated *by construction*, with an enforced `prefers-reduced-motion` fallback and a performance budget, checked against WCAG 2.2.2 (Pause, Stop, Hide) and WCAG 2.3.3 (Animation from Interactions).
**MotionSpec is an open-core trust layer that checks and compiles reduced-motion-safe, on-budget UI animation for AI-generated web apps.** An LLM authors a **schema-validated JSON spec**; a **deterministic compiler** emits vanilla-GSAP JavaScript + CSS — injection-proof and catalog-validated *by construction*, with an enforced `prefers-reduced-motion` fallback and a performance budget, with WCAG 2.2.2 (Pause, Stop, Hide) pause-path candidates reported — reduced-motion guards map to WCAG 2.3.3 (Animation from Interactions), Level AAA.

Run it two ways: as a keyless **MCP server** any LLM host can call (`npx motionspec`), or as a **CLI compiler** in your build (`motion compile spec.json`). Either way you keep plain files — a GSAP build or a dependency-free WAAPI/CSS lowering. MIT core. Docs: https://motionspec.dev

Expand All @@ -32,7 +32,7 @@ request ──> Routing (small model, Stage A) ──> MotionSpec (JSON)

### Not to be confused with

> **Not to be confused with:** the Android Material Components `MotionSpec` class, the iOS material-motion `MotionSpec`, Motion.dev / Framer Motion, the usemotion.com calendar app, the Motion Specialties mobility brand, or text-to-video generators (Runway/Sora/Kling/Viggle). MotionSpec verifies the *UI animation inside web apps* — it does not generate video.
> **Not to be confused with:** the Android Material Components `MotionSpec` class, the iOS material-motion `MotionSpec`, Motion.dev / Framer Motion, the usemotion.com calendar app, the Motion Specialties mobility brand, or text-to-video generators (Runway/Sora/Kling/Viggle). MotionSpec checks the *UI animation inside web apps* — it does not generate video.

## 60-second start

Expand All @@ -59,7 +59,7 @@ This repo is also a Claude Code plugin: it bundles the MCP server (`npx motionsp

| | |
|---|---|
| Version | **v1.2.6** · schema frozen at spec v1 (ADR-0001, signed) |
| Version | **v1.2.7** · schema frozen at spec v1 (ADR-0001, signed) |
| Published | **npm `motionspec`** (82 kB packed, 67 files, nothing dev-only ships) · MCP Registry |
| Tests | **295 green** — injection attacks, 6000-spec fuzz, golden determinism, schema parity, pause-controls, motion-a11y audit · CI on Node 18/20/22 + x86 Playwright e2e |
| Catalog | **40 primitives**, every one device-verified, reduced-motion-fallback mandatory; the 18 continuous loops also carry a WCAG-2.2.2 pause path |
Expand Down
2 changes: 1 addition & 1 deletion llms.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# motionspec (npm package / GitHub repo)

> MotionSpec is an open-core trust layer that verifies and compiles reduced-motion-safe, on-budget UI animation for AI-generated web apps. It is NOT the Android Material Components MotionSpec class, NOT the iOS material-motion MotionSpec, NOT Motion.dev / Framer Motion, NOT the usemotion.com calendar app, and NOT a text-to-video generator.
> MotionSpec is an open-core trust layer that checks and compiles reduced-motion-safe, on-budget UI animation for AI-generated web apps. It is NOT the Android Material Components MotionSpec class, NOT the iOS material-motion MotionSpec, NOT Motion.dev / Framer Motion, NOT the usemotion.com calendar app, and NOT a text-to-video generator.

- Docs & product: https://motionspec.dev (full content: https://motionspec.dev/llms-full.txt)
- MCP setup: https://motionspec.dev/docs — keyless remote: https://api.motionspec.dev/mcp (motion_catalog, motion_validate); local: `npx motionspec` (stdio)
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "motionspec",
"version": "1.2.6",
"version": "1.2.7",
"mcpName": "io.github.MasterPlayspots/motionspec",
"description": "Open-core trust layer for web motion: verifies and compiles reduced-motion-safe, on-budget UI animation for AI-generated web apps (WCAG 2.2.2/2.3.3). Deterministic compiler + MCP server.",
"description": "Open-core motion layer for the web: deterministic compiler + MCP server. Validates motion specs fail-closed, reports WCAG 2.2.2 pause-path candidates, and flags missing reduced-motion guards (2.3.3, an AAA best practice).",
"license": "MIT",
"author": "Kevin Fröba <security@motionspec.dev>",
"keywords": [
Expand Down
6 changes: 3 additions & 3 deletions server.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.MasterPlayspots/motionspec",
"title": "MotionSpec — verified web motion (reduced-motion / WCAG)",
"description": "Verifies web animation vs WCAG 2.2.2/2.3.3: validated specs, deterministic reduced-motion-safe CSS.",
"description": "Deterministic motion compiler + validator: reports WCAG 2.2.2 pause-path candidates, fail-closed.",
"repository": {
"url": "https://github.com/MasterPlayspots/motionspec",
"source": "github"
},
"websiteUrl": "https://motionspec.dev",
"version": "1.2.6",
"version": "1.2.7",
"packages": [
{
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"identifier": "motionspec",
"version": "1.2.6",
"version": "1.2.7",
"runtimeHint": "npx",
"transport": {
"type": "stdio"
Expand Down
2 changes: 1 addition & 1 deletion src/mcp/register-tools.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ function registerMotionspecTools(server, deps) {
{
title: "MotionSpec catalog & authoring rules",
description:
"Returns the catalog of verified motion primitives (names, purpose, parameter schemas, defaults) plus the authoring rules for writing a MotionSpec. Call this FIRST, then write the spec yourself and pass it to motion_compile.",
"Returns the catalog of verified motion primitives (names, purpose, parameter schemas, defaults) plus the authoring rules for writing a MotionSpec. Call this FIRST, then write the spec yourself and validate it with motion_validate (motion_compile runs in the CLI or with a key on the hosted endpoint).",
inputSchema: {},
annotations: { readOnlyHint: true, openWorldHint: false },
},
Expand Down