Motion forensics for the animated web. A Claude Code & Codex plugin that reverse-engineers a live URL into React + Tailwind — pulling real CSS + animation params from JS bundles (GSAP/Framer Motion/Webflow IX2) and verifying with AE/SSIM diff, not screenshots.
Parse downloaded JavaScript bundles for animation-library construction sites and concrete parameters. Invoked at Phase 5d when bundle-map.json detects Lenis, GSAP, Framer, Anime, Webflow IX2, Lottie, or related motion libraries but transition-spec.json is empty or under-populated. Writes bundle-extraction.json for…
Enrich generation-plan.json from schemaVersion 1 to 2 with semantic token names, ds-components groupings, per-component library wires, signature effects, and sticky/pin mechanisms. Invoked at Phase 6 7-pre after scripts/extract/generation-plan.sh has produced the deterministic base. Reads the operational contract from…
Diagnose Phase 4 gate failures (post-implement, boundary, font-parity, section-compare) by reading the failed sidecar JSON + impl source + ref artifact and returning ONE root-cause hypothesis from the A-R class catalog. Returns structured JSON — does NOT apply fixes. Reads the catalog + diagnostic workflow from…
Inspect large raw reference HTML/CSS/JS sources in an isolated context when compact artifacts cannot explain persistent section, sticky, transition, or forensic-preservation failures. Writes source-forensics.json for the main clone loop.
Iterate Phase 7 visual-fix cycles in a separate context with vision-free hard rule (no PNG/JPG/WebP reads). Invoked after section-compare.sh or tree-diff.sh reports FAIL. Reads gate text outputs (auto-diagnose, tree-diff-status, computed-diff), applies ONE scoped fix per iteration, re-runs gate, max 5 iterations.…
Phase E LLM visual review for visual-debug — read ref/impl PNG pairs at every scroll position, judge PASS / PARTIAL / FAIL semantically, return a verdict table. Used after AE + SSIM + auto-diagnose agree. Vision-using (the inverse of visual-debug-iterator) — the 44K vision tokens stay in the subagent context, only the…