motionloom 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/motionloom/SKILL.md +14 -0
- package/.claude/skills/motionloom.md +5 -0
- package/.codex/skills/motionloom.md +11 -0
- package/AGENTS.md +17 -0
- package/CHANGELOG.md +68 -0
- package/CODE_OF_CONDUCT.md +19 -0
- package/CONTRIBUTING.md +65 -0
- package/README.md +193 -134
- package/ROADMAP.md +36 -0
- package/SECURITY.md +28 -0
- package/SKILL.md +57 -9
- package/SUPPORT.md +23 -0
- package/agent-card.json +42 -6
- package/agent-surfaces.json +79 -0
- package/bin/motionloom.mjs +33 -5
- package/docs/AGENT-INTEGRATION.md +47 -0
- package/docs/CHECKLIST.md +2 -1
- package/docs/STATUS.md +33 -0
- package/docs/audits/2.1.0-deep-stress-evaluation.md +97 -0
- package/docs/audits/ci-replay-remediation-2026-08-13.md +33 -0
- package/docs/audits/data/2.1.0-deep-stress-6900.json +329 -0
- package/docs/audits/data/deep-stress-latest.json +329 -0
- package/docs/audits/external-project-corpus-2026-08-13.md +26 -0
- package/docs/releases/2.1.0.md +23 -0
- package/docs/releases/2.2.0.md +35 -0
- package/docs/releases/npm-publish-from-workstation.md +6 -6
- package/examples/agent-consumer/README.md +18 -0
- package/examples/agent-consumer/fixture-manifest.json +82 -0
- package/package.json +69 -28
- package/references/agent-interoperability.md +29 -0
- package/references/intelligence-core.md +5 -1
- package/schemas/agent-surfaces.schema.json +78 -0
- package/schemas/project-memory.schema.json +180 -0
- package/schemas/remediation-history.schema.json +23 -0
- package/schemas/scene-manifest.schema.json +1 -0
- package/schemas/visual-truth.schema.json +80 -0
- package/scripts/analyze.py +56 -0
- package/scripts/capture-runtime-telemetry.py +119 -0
- package/scripts/devlab.py +126 -0
- package/scripts/discovery.py +257 -0
- package/scripts/docs-audit.py +112 -0
- package/scripts/eval-intelligence.py +23 -0
- package/scripts/eval-projects.py +156 -0
- package/scripts/intelligence.py +106 -6
- package/scripts/pr.py +151 -0
- package/scripts/prepack-clean.mjs +37 -0
- package/scripts/project-memory.py +483 -0
- package/scripts/project_memory_loader.py +31 -0
- package/scripts/quality-gate.py +43 -3
- package/scripts/release-verify.py +52 -0
- package/scripts/remediation-learning.py +326 -0
- package/scripts/render.py +65 -0
- package/scripts/report.py +60 -2
- package/scripts/review-hook.py +13 -2
- package/scripts/skill-doctor.py +12 -2
- package/scripts/to-dotlottie.mjs +26 -20
- package/scripts/visual-truth.py +310 -0
- package/src/core/analyzer.py +174 -25
- package/src/output/browser-review-smoke/manifest.json +1 -0
- package/src/output/browser-review-smoke/visual-truth.json +68 -0
- package/tests/evals/intelligence-cases.json +10 -0
- package/tests/evals/project-corpus.json +51 -0
- package/tests/scripts/run_tests.py +111 -1
- package/tests/scripts/test_project_memory.py +129 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: motionloom
|
|
3
|
+
description: Load the canonical MotionLoom Skill from the repository root for project-aware animation production, runtime evidence, Dev Lab review and review-first PR handoff.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# MotionLoom Agent Skills surface
|
|
7
|
+
|
|
8
|
+
This is a **portable discovery alias**, not a second copy of the Skill. Load the canonical [`SKILL.md`](../../../SKILL.md) from the repository root and use [`agent-card.json`](../../../agent-card.json) for machine-readable capabilities. Before using the Skill, run:
|
|
9
|
+
|
|
10
|
+
```text
|
|
11
|
+
motionloom discovery check --root <motionloom-checkout> --json
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Keep the review boundary intact: a candidate may be rendered and reviewed, but approval is never inferred and a PR is never opened without explicit user confirmation.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# MotionLoom for Claude Code
|
|
2
|
+
|
|
3
|
+
Use MotionLoom when the task creates, fixes, validates, renders or hands off animation inside an existing project. Load the repository-root [`SKILL.md`](../../SKILL.md) as the canonical instruction source and [`agent-card.json`](../../agent-card.json) for capability discovery. Do not copy or fork the workflow into this file.
|
|
4
|
+
|
|
5
|
+
Start with `motionloom discovery check --root <motionloom-checkout> --json`, then follow the required lifecycle: project context → source binding → runtime evidence → Dev Lab browser review → user-confirmed handoff. `approval` remains `false` until the user explicitly approves.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# MotionLoom for Codex
|
|
2
|
+
|
|
3
|
+
Use MotionLoom for project-aware animation work, including Lottie/dotLottie, Rive, GSAP, Framer Motion, body rigs and runtime-backed review. Load the canonical repository-root [`SKILL.md`](../../SKILL.md) and use [`agent-card.json`](../../agent-card.json) rather than duplicating instructions.
|
|
4
|
+
|
|
5
|
+
Verify discovery first:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
motionloom discovery check --root <motionloom-checkout> --json
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Always produce task-bound artifacts and runtime evidence, suggest/open the internal Dev Lab after rendering, report unresolved issues, and stop before commit/push/PR unless the user explicitly confirms.
|
package/AGENTS.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# MotionLoom Agent Router
|
|
2
|
+
|
|
3
|
+
This repository exposes one canonical Agent Skill: [`SKILL.md`](SKILL.md). Load it when the task concerns animation production, motion design, asset binding, runtime rendering, Dev Lab review or PR handoff. Use [`agent-card.json`](agent-card.json) for machine-readable capabilities and [`agent-surfaces.json`](agent-surfaces.json) for installation/discovery compatibility.
|
|
4
|
+
|
|
5
|
+
## First action
|
|
6
|
+
|
|
7
|
+
Run the offline discovery check from the checkout root:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
motionloom discovery check --root . --json
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Then follow the lifecycle in `SKILL.md`. The repository may coordinate Lottie, dotLottie, Rive, GSAP and Framer Motion, but it does not replace those runtimes. Render evidence, provenance, semantic checks and browser review are separate states. **Do not infer user approval from a passing heuristic, signature, screenshot or quality gate.**
|
|
14
|
+
|
|
15
|
+
## Source of truth
|
|
16
|
+
|
|
17
|
+
Do not duplicate or edit Agent-specific copies of the workflow. If this router conflicts with `SKILL.md`, the canonical root Skill and machine-readable schemas win. Use `references/agent-interoperability.md` for discovery details and `docs/AGENT-INTEGRATION.md` for installation examples.
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable MotionLoom changes are documented here. The project follows semantic versioning for the npm package and keeps major contract changes in dedicated release notes under [`docs/releases/`](docs/releases/).
|
|
4
|
+
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
- No unreleased changes are currently tracked.
|
|
8
|
+
|
|
9
|
+
## [2.2.0] - 2026-08-13
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Canonical Agent interoperability surfaces for `.agents/skills`, `.claude`, `.codex`, source discovery and cross-platform installation checks.
|
|
14
|
+
- Consumer fixtures for Lottie/dotLottie, Rive, GSAP, Framer Motion, body rigs and multi-scene continuity.
|
|
15
|
+
- Visual Truth Contract with frame hashes, runtime/source provenance, deterministic perceptual signals, region explanations and review-required semantics.
|
|
16
|
+
- Append-only, hash-chained Remediation Learning ledger for user-confirmed outcomes, correction counts, first-pass acceptance, issue-class outliers and benchmark provenance.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Quality CI now rebuilds the context-bound replay bundle after runtime, report and attestation artifacts are generated, preventing stale replay hashes from rejecting an otherwise valid changed-scene gate.
|
|
21
|
+
|
|
22
|
+
### Verified
|
|
23
|
+
|
|
24
|
+
- Mainline Quality, Documentation and Package Hygiene, and Security workflows pass on the replay-remediation commit.
|
|
25
|
+
- The local release candidate passes the full regression, docs/Skill validation, runtime adapter, discovery, installation matrix, Visual Truth, Remediation Learning, attestation and npm tarball checks.
|
|
26
|
+
|
|
27
|
+
### Boundary
|
|
28
|
+
|
|
29
|
+
- This is a release candidate prepared from the green mainline. Remote tag creation, GitHub Release creation and npm publication remain explicit maintainer actions; evidence and heuristics never grant user approval.
|
|
30
|
+
|
|
31
|
+
## [2.1.0] - 2026-08-13
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
|
|
35
|
+
- Durable, relocatable Project Memory with schema validation, atomic writes, canonical integrity and stable lifecycle exit codes.
|
|
36
|
+
- Cross-platform npm CLI routing for Ubuntu, macOS and Windows without Bash-only user commands or system `zip`/`unzip` dependencies.
|
|
37
|
+
- Memory loader integration for project analysis, reports, review hooks, handoff and downstream Agent continuity.
|
|
38
|
+
- Ubuntu/macOS/Windows CI matrix for Project Memory recovery, CLI routing and npm tarball inspection.
|
|
39
|
+
- Public repository governance documents, contribution workflow, security policy, support guide, roadmap, issue forms and pull-request template.
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- Rebinding a relocated checkout no longer invalidates integrity merely because `project.root_path` changed.
|
|
44
|
+
- Recovery atomically refreshes runtime path, repository and package metadata while preserving the durable project identity contract.
|
|
45
|
+
|
|
46
|
+
### Verified
|
|
47
|
+
|
|
48
|
+
- Full regression, Intelligence Core evaluation, Skill Doctor, strict quality gate, npm package dry-run and Dev Lab production build pass.
|
|
49
|
+
- Relocation coverage includes Git remote identity, Unicode paths, spaces in paths, stale context and user-confirmed outcome invariants.
|
|
50
|
+
|
|
51
|
+
See the [2.1.0 release note](docs/releases/2.1.0.md) for scope, trust boundaries and remaining work.
|
|
52
|
+
|
|
53
|
+
## [2.0.0] - 2026-08-12
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
|
|
57
|
+
- DSSE-compatible Ed25519 signed attestation and fail-closed trust policy verification.
|
|
58
|
+
- External verifier, attestation report contract and Dev Lab attestation rail.
|
|
59
|
+
|
|
60
|
+
See the [2.0.0 release note](docs/releases/2.0.0.md).
|
|
61
|
+
|
|
62
|
+
## Earlier releases
|
|
63
|
+
|
|
64
|
+
The 1.5.0–1.9.0 milestones established runtime evidence, browser review, Intelligence Core, semantic lint, continuity, telemetry and trust-boundary hardening. Their detailed notes are available in [`docs/releases/`](docs/releases/).
|
|
65
|
+
|
|
66
|
+
[2.2.0]: docs/releases/2.2.0.md
|
|
67
|
+
[2.1.0]: docs/releases/2.1.0.md
|
|
68
|
+
[2.0.0]: docs/releases/2.0.0.md
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our commitment
|
|
4
|
+
|
|
5
|
+
We want MotionLoom to be a respectful, technically rigorous and welcoming project for people working on animation, developer tooling and Agent interoperability. Contributors are expected to participate constructively, assume good faith while examining evidence, and make room for different levels of experience.
|
|
6
|
+
|
|
7
|
+
## Expected behavior
|
|
8
|
+
|
|
9
|
+
Use clear and respectful language. Focus criticism on code, contracts, evidence and decisions rather than people. Explain disagreement with reproducible reasoning. Protect private project data, credentials and source assets. Give credit to upstream runtimes, asset authors and contributors.
|
|
10
|
+
|
|
11
|
+
## Unacceptable behavior
|
|
12
|
+
|
|
13
|
+
Harassment, discrimination, personal attacks, threats, doxxing, sexualized conduct, deliberate exposure of private data, spam, bad-faith manipulation of review evidence or attempts to bypass user authorization are not acceptable.
|
|
14
|
+
|
|
15
|
+
## Enforcement
|
|
16
|
+
|
|
17
|
+
Report a conduct concern privately through the repository's maintainer contact or a GitHub private vulnerability report when the concern involves safety or security. Do not include sensitive details in a public issue. Maintainers may remove content, request corrections, restrict participation or close contributions when necessary to protect the community.
|
|
18
|
+
|
|
19
|
+
This code of conduct is adapted for MotionLoom from the [Contributor Covenant](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Contributing to MotionLoom
|
|
2
|
+
|
|
3
|
+
Thank you for helping make animation workflows more reliable for coding agents. Contributions are welcome in code, schemas, tests, runtime adapters, documentation, fixtures and reproducible bug reports. Please read the [Code of Conduct](CODE_OF_CONDUCT.md) and [Security Policy](SECURITY.md) before contributing.
|
|
4
|
+
|
|
5
|
+
## Before opening an issue or pull request
|
|
6
|
+
|
|
7
|
+
Search existing issues and documentation first. For a bug, include the operating system, Node/Python versions, exact command, minimal fixture or artifact bundle, expected behavior and observed output. Never attach private project context, credentials, private source assets or trust-policy private keys.
|
|
8
|
+
|
|
9
|
+
For a feature, explain which Agent failure mode it addresses, which contract or schema changes, what evidence would demonstrate correctness, and how the change preserves explicit user approval. A template without a runtime or validation path is not sufficient for a production capability.
|
|
10
|
+
|
|
11
|
+
## Local setup
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
git clone https://github.com/lenhonbp/MotionLoom.git
|
|
15
|
+
cd MotionLoom
|
|
16
|
+
npm install
|
|
17
|
+
python3 -m pip install --requirement requirements.txt
|
|
18
|
+
python3 scripts/skill-doctor.py --json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Node.js 18+ and Python 3.11+ are required. On Windows, use `python` if `python3` is not available or set `MOTIONLOOM_PYTHON` for the npm wrapper. Runtime adapter tests may require the Playwright browser installation described by the CI workflow.
|
|
22
|
+
|
|
23
|
+
## Validation commands
|
|
24
|
+
|
|
25
|
+
Run the smallest relevant checks while iterating, then run the complete suite before opening a pull request:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
python3 -m py_compile scripts/*.py tests/scripts/*.py
|
|
29
|
+
python3 tests/scripts/test_project_memory.py
|
|
30
|
+
python3 tests/scripts/run_tests.py
|
|
31
|
+
python3 scripts/eval-intelligence.py
|
|
32
|
+
python3 scripts/skill-doctor.py --json
|
|
33
|
+
npm run runtime:test
|
|
34
|
+
npm publish --dry-run --access public
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
For changes to a scene or evidence contract, also run the appropriate report contract, browser-review validation, quality gate and `npm run audit:deep`. Keep generated local runtime state and temporary project memory out of the commit.
|
|
38
|
+
|
|
39
|
+
## GitHub Actions and release environments
|
|
40
|
+
|
|
41
|
+
Every pull request should pass the quality and documentation workflows. Security analysis may be skipped for an untrusted fork when GitHub cannot grant security-event permissions; the maintainer must review the resulting status before merge. Dev Lab changes produce a retained build artifact for inspection.
|
|
42
|
+
|
|
43
|
+
The `release.yml` workflow is deliberately `workflow_dispatch`-only. Maintainers must configure the protected `npm-release` environment and its required reviewers before using it. The workflow accepts either an `NPM_TOKEN` environment secret or npm trusted publishing through GitHub OIDC (`id-token: write`). Never put an npm token in repository variables, source files or pull-request logs. Creating a GitHub release is an explicit dispatch input.
|
|
44
|
+
|
|
45
|
+
## Pull request expectations
|
|
46
|
+
|
|
47
|
+
Use a focused branch and a conventional commit-style title such as `feat(memory): ...`, `fix(runtime): ...` or `docs: ...`. A pull request should explain the user-visible change, list changed contracts, identify platform coverage, link tests and state limitations or remaining warnings. Schema changes must include fixtures and backward/forward compatibility notes where relevant.
|
|
48
|
+
|
|
49
|
+
Do not claim a runtime is verified unless real adapter evidence exists. Do not convert a heuristic, benchmark, valid signature or successful build into an approval statement. Do not change `approval` to `true` in fixtures or bypass the user-review gate to make a test pass.
|
|
50
|
+
|
|
51
|
+
## Review and merge policy
|
|
52
|
+
|
|
53
|
+
CI must pass before merge. Changes that affect `SKILL.md`, `agent-card.json`, schemas, quality gates, evidence verification, attestations, runtime adapters or Git side effects require explicit contract review. Maintainers may request a focused adversarial fixture when a change can affect stale evidence, cross-task contamination, path safety or approval invariants.
|
|
54
|
+
|
|
55
|
+
The repository's PR template is a checklist, not a substitute for evidence. Maintainers merge only after the behavior, documentation and trust boundary are clear.
|
|
56
|
+
|
|
57
|
+
## Release process
|
|
58
|
+
|
|
59
|
+
1. Update `CHANGELOG.md` and a dedicated `docs/releases/<version>.md` note.
|
|
60
|
+
2. Update `package.json`, `SKILL.md`, `agent-card.json` and relevant schema/reference versions.
|
|
61
|
+
3. Run the full validation suite and `npm publish --dry-run --access public`.
|
|
62
|
+
4. Create a local commit and obtain explicit maintainer confirmation before pushing.
|
|
63
|
+
5. Publish from the authenticated maintainer workstation, then verify the npm version and GitHub release state.
|
|
64
|
+
|
|
65
|
+
See [ROADMAP.md](ROADMAP.md) for future work and [SUPPORT.md](SUPPORT.md) for help with setup or usage.
|
package/README.md
CHANGED
|
@@ -1,179 +1,238 @@
|
|
|
1
1
|
# MotionLoom
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://github.com/lenhonbp/MotionLoom/actions/workflows/quality.yml)
|
|
4
|
+
[](https://www.npmjs.com/package/motionloom)
|
|
5
|
+
[](https://www.npmjs.com/package/motionloom)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[](https://nodejs.org/)
|
|
8
|
+
[](https://www.python.org/)
|
|
9
|
+
[](https://agentskills.io/specification)
|
|
10
|
+
|
|
11
|
+
**Project-aware animation production and runtime verification for coding agents.**
|
|
12
|
+
|
|
13
|
+
MotionLoom is an independent open-source Agent Skill for building UI motion, Lottie and dotLottie scenes, Rive/GSAP/Framer Motion experiences, character body rigs and traceable animation assets inside an existing project. It does not treat animation as an isolated prompt: it binds the work to the host project's context, records decisions and provenance, renders through a real runtime, hands the exact candidate to an internal Dev Lab, and stops before Git side effects until the user approves.
|
|
14
|
+
|
|
15
|
+
> **MotionLoom is not an auto-approval layer.** A valid signature, a passing heuristic, or a successful render proves only the contract it checks. Visual quality, intent, accessibility and PR authorization remain reviewable human decisions.
|
|
16
|
+
|
|
17
|
+
> **Release posture:** the repository source and `package.json` are at **2.1.0**. The public npm registry currently serves **2.0.0** and no GitHub tag/Release for 2.1.0 exists yet; a maintainer must perform the protected manual release before the registry and GitHub release state change.
|
|
18
|
+
|
|
19
|
+
## Why MotionLoom
|
|
20
|
+
|
|
21
|
+
Most animation helpers optimize for generating one asset quickly. That breaks down when an Agent has to work in a real product: it can lose the project's motion language, select an untraceable asset, render a placeholder instead of the target runtime, mix evidence from another task, or open a PR before the user has inspected the result.
|
|
22
|
+
|
|
23
|
+
MotionLoom turns that fragile sequence into a bounded production system. Its durable Project Memory survives long gaps between animation tasks and project relocation; its Intelligence Core keeps context, provenance, capability selection and Motion IR connected; its runtime adapters produce evidence instead of prose claims; and its Dev Lab is a mandatory review handoff rather than a separate Agent or a static demo catalog.
|
|
24
|
+
|
|
25
|
+
## What it provides
|
|
26
|
+
|
|
27
|
+
| Capability | What the Agent gets | What MotionLoom refuses to do |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| **Project binding** | Project context, package/design-token discovery and durable `.motionloom/project-memory.json` | Reuse memory across projects or silently continue through missing context |
|
|
30
|
+
| **Motion planning** | Framework-aware Motion Spec, timing/easing/accessibility budgets and framework selection | Present a template as a project-integrated result |
|
|
31
|
+
| **Asset provenance** | Required `source_binding`, authority, license and SHA-256 traceability | Promote unknown, unlicensed or placeholder production assets |
|
|
32
|
+
| **Runtime truth** | Lottie/dotLottie, SVG cutout rig, Rive, GSAP and Framer Motion evidence from real runtime paths | Call scaffold, static validation or a heuristic score visual approval |
|
|
33
|
+
| **Agent intelligence** | Project graph, provenance, Motion IR, replay, semantic lint, continuity and fix plan | Convert confidence, benchmark output or warnings into approval |
|
|
34
|
+
| **Human review** | Exact candidate URL, frame checkpoints, checklist, review artifact and handoff report in Dev Lab | Confirm, push or open a PR without explicit user authorization |
|
|
35
|
+
|
|
36
|
+
## The production contract
|
|
37
|
+
|
|
38
|
+
```mermaid
|
|
39
|
+
flowchart LR
|
|
40
|
+
A[Host project] --> B[Analyze + Project Memory]
|
|
41
|
+
B --> C[Context-bound Motion Spec]
|
|
42
|
+
C --> D[Source binding + asset provenance]
|
|
43
|
+
D --> E[Generate / rig / adapt]
|
|
44
|
+
E --> F[Real runtime render]
|
|
45
|
+
F --> G[Intelligence Core + evidence]
|
|
46
|
+
G --> H[Dev Lab browser review]
|
|
47
|
+
H --> I{User approved?}
|
|
48
|
+
I -- changes requested --> D
|
|
49
|
+
I -- no --> J[Report blocked / needs fix]
|
|
50
|
+
I -- yes --> K[Quality gate + attestation]
|
|
51
|
+
K --> L[PR preflight; side effects still explicit]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Every handoff is machine-readable. The typical bundle under `artifacts/<task-id>/` includes the task ledger, context hash, motion spec, manifest, runtime snapshots, telemetry, project graph, provenance, lint and continuity reports, fix plan, browser-review candidate, review decision, execution report and next-Agent handoff.
|
|
4
55
|
|
|
5
|
-
##
|
|
56
|
+
## Quick start
|
|
6
57
|
|
|
7
|
-
|
|
58
|
+
### Install the public CLI
|
|
8
59
|
|
|
9
60
|
```bash
|
|
10
61
|
npm install --global motionloom
|
|
11
|
-
motionloom doctor
|
|
62
|
+
motionloom doctor --json
|
|
12
63
|
motionloom --help
|
|
13
64
|
```
|
|
14
65
|
|
|
15
|
-
|
|
66
|
+
MotionLoom supports **Node.js 18+** and **Python 3.11+** on Ubuntu, macOS and Windows. The npm wrapper is the cross-platform surface: it discovers the platform Python executable and delegates to the same canonical contracts used by a repository checkout.
|
|
16
67
|
|
|
17
|
-
|
|
68
|
+
### Start from a real project
|
|
69
|
+
|
|
70
|
+
Run the first commands from the project that owns the animation. Do not copy the example context into production; generate a fresh context from the host project.
|
|
18
71
|
|
|
19
72
|
```bash
|
|
20
|
-
|
|
21
|
-
bash scripts/analyze.sh /path/to/your/project
|
|
22
|
-
|
|
23
|
-
# 1b. Start a transparent task ledger for Agent/human handoff
|
|
24
|
-
python3 scripts/report.py init --task-id onboarding-wave \
|
|
25
|
-
--scene my-scene --intent "Character wave in onboarding" \
|
|
26
|
-
--project-name your-project
|
|
27
|
-
|
|
28
|
-
# 2. Plan & sign a spec (example: a loading animation)
|
|
29
|
-
python3 src/core/spec.py generate loading --context /path/to/your/project/project-context.json \
|
|
30
|
-
--output motion-spec.json --loop
|
|
31
|
-
|
|
32
|
-
# 3. Generate a body rig, then pose it
|
|
33
|
-
python3 src/rig/cutout_rig.py build \
|
|
34
|
-
--input assets/library/avatar-base.svg --output rigged.svg
|
|
35
|
-
python3 src/rig/cutout_rig.py pose rigged.svg --pose walk \
|
|
36
|
-
--duration 1.2 --fps 30 --out walk.json
|
|
37
|
-
|
|
38
|
-
# 3b. Bind the scene source to an authoritative provenance record
|
|
39
|
-
python3 scripts/manifest.py bind-source --scene my-scene \
|
|
40
|
-
--source animation.json --kind project \
|
|
41
|
-
--authority "host project manifest" --license MIT
|
|
42
|
-
|
|
43
|
-
# 4. Render runtime verification snapshots (0/50/100%; placeholders fail)
|
|
44
|
-
bash scripts/render.sh my-scene
|
|
45
|
-
|
|
46
|
-
# 4b. Package the Lottie source as a dotLottie v2 archive when required
|
|
47
|
-
bash scripts/to-dotlottie.sh my-scene
|
|
48
|
-
|
|
49
|
-
# 4c. Verify Rive, GSAP and Framer Motion through the real browser harness
|
|
50
|
-
node scripts/runtime-adapters.mjs
|
|
51
|
-
|
|
52
|
-
# 4d. Capture runtime telemetry and verify evidence bindings externally
|
|
53
|
-
bash scripts/capture-runtime-telemetry.sh my-scene artifacts/onboarding-wave
|
|
54
|
-
|
|
55
|
-
# 4e. Derive and verify a signed task-bound statement against a managed trust policy
|
|
56
|
-
python3 scripts/attestation.py statement --scene-dir src/output/my-scene \
|
|
57
|
-
--task-dir artifacts/onboarding-wave --context /path/to/your/project/project-context.json \
|
|
58
|
-
--output artifacts/onboarding-wave/attestation-statement.json
|
|
59
|
-
python3 scripts/attestation.py build --statement artifacts/onboarding-wave/attestation-statement.json \
|
|
60
|
-
--private-key <managed-ed25519-key> --key-id <key-id> \
|
|
61
|
-
--output artifacts/onboarding-wave/attestation.json
|
|
62
|
-
python3 scripts/attestation-verifier.py --attestation artifacts/onboarding-wave/attestation.json \
|
|
63
|
-
--trust-policy artifacts/onboarding-wave/trust-policy.json \
|
|
64
|
-
--expected-task-id onboarding-wave --expected-scene my-scene
|
|
65
|
-
|
|
66
|
-
# 5. Boot the Dev Lab to test & fix interactively
|
|
67
|
-
bash scripts/devlab.sh my-scene
|
|
68
|
-
|
|
69
|
-
# 6. Run the acceptance gate, then confirm and ship
|
|
70
|
-
python3 scripts/quality-gate.py --scene my-scene \
|
|
71
|
-
--context /path/to/your/project/project-context.json \
|
|
72
|
-
--task-dir artifacts/onboarding-wave --require-telemetry --require-attestation
|
|
73
|
-
|
|
74
|
-
# 6. Collect evidence and render the user-facing report
|
|
75
|
-
python3 scripts/report.py collect --task-dir artifacts/onboarding-wave
|
|
76
|
-
python3 scripts/report.py render --task-dir artifacts/onboarding-wave
|
|
77
|
-
|
|
78
|
-
# 7. Confirm and ship only after review
|
|
79
|
-
bash scripts/pr.sh my-scene
|
|
80
|
-
```
|
|
73
|
+
cd /path/to/your/project
|
|
81
74
|
|
|
82
|
-
|
|
75
|
+
# Understand the project and bootstrap/recover durable memory.
|
|
76
|
+
motionloom analyze . --init-memory
|
|
77
|
+
motionloom memory inspect --project-root . --json
|
|
83
78
|
|
|
84
|
-
|
|
79
|
+
# Bound traversal when the host project is large; truncation is reported, never hidden.
|
|
80
|
+
motionloom analyze . --max-files 2500 --max-bytes 25000000 --max-seconds 10
|
|
85
81
|
|
|
86
|
-
|
|
82
|
+
# Plan and generate the scene using the selected framework.
|
|
83
|
+
python3 /path/to/MotionLoom/src/core/spec.py generate loading \
|
|
84
|
+
--context project-context.json --output motion-spec.json --loop
|
|
87
85
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
86
|
+
# Render real runtime evidence and prepare the Dev Lab review handoff.
|
|
87
|
+
motionloom render loading
|
|
88
|
+
motionloom devlab loading
|
|
89
|
+
|
|
90
|
+
# Validate the exact task bundle before any Git side effect.
|
|
91
|
+
motionloom quality-gate --scene loading \
|
|
92
|
+
--context project-context.json \
|
|
93
|
+
--task-dir artifacts/loading-task \
|
|
94
|
+
--require-browser-review --require-intelligence --require-p1 \
|
|
95
|
+
--require-benchmark --require-telemetry --require-attestation
|
|
96
|
+
|
|
97
|
+
# Local-only by default. A user must review and explicitly authorize side effects.
|
|
98
|
+
motionloom pr loading --task-dir artifacts/loading-task
|
|
93
99
|
```
|
|
94
100
|
|
|
95
|
-
|
|
101
|
+
For a source checkout, use `git clone https://github.com/lenhonbp/MotionLoom.git`, run `npm install`, and replace the global command with `node bin/motionloom.mjs` or the corresponding Python/Node script shown in the [development guide](CONTRIBUTING.md).
|
|
96
102
|
|
|
97
|
-
|
|
103
|
+
## Durable Project Memory
|
|
98
104
|
|
|
99
|
-
|
|
105
|
+
Project Memory is the continuity layer for Agents that return to animation after many unrelated tasks or a new context window. It stores project identity, motion principles, asset and runtime policy, accepted/rejected decisions, user-confirmed outcomes and freshness/invalidation state in `.motionloom/project-memory.json`.
|
|
100
106
|
|
|
101
107
|
```bash
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
python3 scripts/intelligence.py semantic-lint benchmark --task-dir artifacts/onboarding-wave \
|
|
108
|
-
--iterations 25 --threshold-ms 500
|
|
109
|
-
bash scripts/capture-runtime-telemetry.sh my-scene artifacts/onboarding-wave
|
|
110
|
-
python3 scripts/intelligence.py continuity build --task-dirs artifacts/onboarding-wave
|
|
111
|
-
python3 scripts/intelligence.py fix-plan build --task-dir artifacts/onboarding-wave \
|
|
112
|
-
--reports semantic-lint-report.json continuity-report.json
|
|
113
|
-
python3 scripts/quality-gate.py --scene my-scene \
|
|
114
|
-
--context /path/to/your/project/project-context.json \
|
|
115
|
-
--task-dir artifacts/onboarding-wave \
|
|
116
|
-
--require-browser-review --require-intelligence --require-p1 --require-benchmark --require-telemetry --require-attestation
|
|
117
|
-
python3 scripts/eval-intelligence.py
|
|
108
|
+
motionloom memory init --project-root <project>
|
|
109
|
+
motionloom memory inspect --project-root <project> --json
|
|
110
|
+
motionloom memory refresh --project-root <project> --json
|
|
111
|
+
motionloom memory recover --project-root <project> --json
|
|
112
|
+
motionloom memory validate --project-root <project> --json
|
|
118
113
|
```
|
|
119
114
|
|
|
120
|
-
|
|
115
|
+
The memory integrity hash excludes only the mutable checkout path; Git remote or package identity remains the project binding. Direct edits to durable content fail closed. A stale, invalid, missing or cross-project memory produces a machine-readable recovery state and cannot silently influence generation or approval. Durable decisions and outcomes require `--user-confirmed`.
|
|
121
116
|
|
|
122
|
-
|
|
117
|
+
Read the [Project Memory schema](schemas/project-memory.schema.json), [2.1.0 release note](docs/releases/2.1.0.md) and [Skill instructions](SKILL.md) for the full lifecycle.
|
|
123
118
|
|
|
124
|
-
|
|
125
|
-
|------|--------|--------------|
|
|
126
|
-
| 01 · Understand | `src/core/analyzer.py` | Reads package.json, design tokens and existing motion language; emits `project-context.json` inside the target project |
|
|
127
|
-
| 02 · Plan | `src/core/spec.py` | Generates & validates the motion spec against the framework matrix, easing canon and performance budget |
|
|
128
|
-
| 03 · Source | `assets/library/` | Vetted, traceable source assets with an attribution table — the authoritative geometry |
|
|
129
|
-
| 04 · Generate | `src/rig/cutout_rig.py`, `templates/` | Canonical templates per framework; 20-bone cutout body rigs with parent-first order |
|
|
130
|
-
| 05 · Dev Lab | `dev-lab/` | Self-contained static workbench: preview rendered evidence, scrub, quality checklist, fix notes, review export |
|
|
131
|
-
| 06 · Confirm → PR | `scripts/pr.sh` | Commits scene + spec + snapshots, opens the PR with an evidence body |
|
|
119
|
+
## Verified runtime matrix
|
|
132
120
|
|
|
133
|
-
|
|
121
|
+
| Runtime or format | Capability level | Evidence path |
|
|
122
|
+
|---|---:|---|
|
|
123
|
+
| Lottie JSON | Contract verified | Runtime snapshot renderer and manifest validation in repository fixtures |
|
|
124
|
+
| dotLottie v2 | Contract verified | Node/`fflate` packaging, manifest entry and checksum validation |
|
|
125
|
+
| SVG cutout body rig | Contract verified | Parent-first hierarchy, named anatomy and pose evidence in repository fixtures |
|
|
126
|
+
| Rive Canvas | Fixture verified | Browser adapter, state-machine/input binding and representative snapshots |
|
|
127
|
+
| GSAP | Fixture verified | Browser adapter, deterministic timeline scrub and representative snapshots |
|
|
128
|
+
| Framer Motion | Fixture verified | Browser adapter, reduced-motion checks and representative snapshots |
|
|
129
|
+
| Spine | Scaffold only | Requires a framework-specific runtime adapter and evidence |
|
|
130
|
+
| Three.js | Scaffold only | Requires a framework-specific runtime adapter and evidence |
|
|
134
131
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
| `templates/` | Canonical Lottie / Rive / GSAP / Framer Motion templates |
|
|
141
|
-
| `assets/library/` | Vetted source assets + attribution, including the MIT Rive adapter fixture |
|
|
142
|
-
| `scripts/` | Pipeline CLI plus Intelligence Core (`analyze`, `render`, `devlab`, `pr`, `quality-gate`, `validate-lottie`, `to-dotlottie`, `runtime-adapters`, `capture-runtime-telemetry`, `evidence-verifier`, `attestation`, `attestation-verifier`, `attestation-keygen`, `skill-doctor`, `report`, `report-contract`, `intelligence`, `eval-intelligence`) |
|
|
143
|
-
| `dev-lab/` | Self-contained static Dev Lab + Playwright snapshot harness |
|
|
144
|
-
| `agent-card.json` | Capability discovery, runtime levels and side-effect policy for other Agents |
|
|
145
|
-
| `schemas/` | Task, report, artifact-manifest, scene-manifest, handoff, Intelligence Core, signed-attestation and trust-policy JSON Schemas |
|
|
146
|
-
| `references/` | Progressive-disclosure contracts for reporting, runtime capability, dotLottie packaging and Intelligence Core |
|
|
147
|
-
| `artifacts/<task-id>/` | Per-task ledger, evidence, review, issue register and handoff bundle |
|
|
148
|
-
| `tests/` | Deterministic engine tests |
|
|
149
|
-
| `.github/workflows/quality.yml` | CI that re-runs the quality gate on every PR |
|
|
132
|
+
Capability selection uses `agent-card.json` and the capability registry. A runtime is not promoted from `scaffold_only` to `verified` because a template exists; its adapter evidence and CI contract must pass.
|
|
133
|
+
|
|
134
|
+
## Evidence, trust and review
|
|
135
|
+
|
|
136
|
+
MotionLoom keeps distinct layers distinct:
|
|
150
137
|
|
|
151
|
-
|
|
138
|
+
| Layer | It proves | It does not prove |
|
|
139
|
+
|---|---|---|
|
|
140
|
+
| Runtime evidence | The selected runtime produced the declared snapshots and observed state | That the motion is aesthetically correct or user-approved |
|
|
141
|
+
| Visual Truth Contract | Baseline/candidate frame identity, dimensions, provenance and review-required regions are bound to the scene | That a changed frame is acceptable or user-approved |
|
|
142
|
+
| Remediation Learning | User-confirmed correction outcomes and deterministic benchmark history with first-pass metrics | That aggregate history can approve a new animation or replace review |
|
|
143
|
+
| Provenance | Which source/material/product bytes were used and how they hash | That the source is appropriate beyond the declared authority/license contract |
|
|
144
|
+
| Semantic lint and benchmark | Bounded rule findings, risk signals and performance measurements | Human visual quality or intent acceptance |
|
|
145
|
+
| Signed attestation | A trusted signer signed the same task-bound hashes under the policy | Reviewer consent, accessibility approval or PR authorization |
|
|
146
|
+
| Dev Lab review | The user saw the exact candidate and recorded a decision | A future candidate is automatically approved |
|
|
152
147
|
|
|
153
|
-
|
|
148
|
+
`approval` remains `false` in attestation and verifier artifacts. The default PR mode is local-only (`OPEN_PR=0`); commit, push and pull-request operations remain explicit side effects.
|
|
154
149
|
|
|
155
|
-
##
|
|
150
|
+
## How an Agent uses the Skill
|
|
156
151
|
|
|
157
|
-
The
|
|
152
|
+
The public integration surfaces are intentionally small and inspectable:
|
|
158
153
|
|
|
159
|
-
|
|
154
|
+
1. `SKILL.md` gives the Agent the imperative workflow, progressive-disclosure references and non-negotiable contracts.
|
|
155
|
+
2. `agent-card.json` advertises inputs, outputs, verified capabilities, recommended integrations and side-effect policy.
|
|
156
|
+
3. `motionloom` exposes a cross-platform command surface for analysis, memory, rendering, Dev Lab, evidence, quality and PR preflight.
|
|
157
|
+
4. `artifacts/<task-id>/` provides a durable, machine-readable handoff instead of requiring another Agent to infer state from chat.
|
|
160
158
|
|
|
161
|
-
|
|
159
|
+
The Skill can trigger or suggest an internal browser-capable Agent to open the Dev Lab after rendering. Dev Lab is post-render review infrastructure, not a competing Skill. The user can request changes, receive a structured fix plan and rerender selectively, or explicitly confirm the PR path.
|
|
162
160
|
|
|
163
|
-
##
|
|
161
|
+
## Repository map
|
|
162
|
+
|
|
163
|
+
| Path | Purpose |
|
|
164
|
+
|---|---|
|
|
165
|
+
| `SKILL.md` | Installable Agent Skill contract |
|
|
166
|
+
| `agent-card.json` | Capability discovery and side-effect policy |
|
|
167
|
+
| `agent-surfaces.json`, `.agents/`, `.claude/`, `.codex/` | Cross-Agent discovery aliases and portability contract |
|
|
168
|
+
| `bin/motionloom.mjs` | Cross-platform npm CLI entrypoint |
|
|
169
|
+
| `src/core/` | Analyzer, Motion Spec and runtime snapshot engine |
|
|
170
|
+
| `src/rig/` | Character body rig and pose engine |
|
|
171
|
+
| `templates/` | Lottie, Rive, GSAP and Framer Motion templates |
|
|
172
|
+
| `scripts/` | Analysis, rendering, evidence, memory, intelligence, reports and PR preflight |
|
|
173
|
+
| `schemas/` | Versioned machine-readable contracts |
|
|
174
|
+
| `references/` | Progressive-disclosure implementation references |
|
|
175
|
+
| `docs/` | Framework selection, checklists, audits and release notes |
|
|
176
|
+
| `dev-lab/` | Self-contained browser review workbench and harness |
|
|
177
|
+
| `artifacts/<task-id>/` | Per-task evidence, report and handoff bundle |
|
|
178
|
+
| `schemas/visual-truth.schema.json`, `scripts/visual-truth.py` | Provenance-bound visual comparison and review explanation contract |
|
|
179
|
+
| `schemas/remediation-history.schema.json`, `scripts/remediation-learning.py` | Append-only remediation/benchmark ledger and aggregate learning metrics |
|
|
180
|
+
| `tests/` | Regression, adversarial and deep-stress evaluation harnesses |
|
|
181
|
+
|
|
182
|
+
## Documentation map
|
|
183
|
+
|
|
184
|
+
| Need | Start here |
|
|
185
|
+
|---|---|
|
|
186
|
+
| Install or understand the full lifecycle | [SKILL.md](SKILL.md) |
|
|
187
|
+
| Choose a runtime | [Framework selection](docs/FRAMEWORK-SELECTION.md) and [runtime capability reference](references/runtime-capability.md) |
|
|
188
|
+
| Run a review-ready scene | [Production checklist](docs/CHECKLIST.md) and [browser review contract](references/browser-review-contract.md) |
|
|
189
|
+
| Understand Agent intelligence | [Intelligence Core](references/intelligence-core.md) and [roadmap](ROADMAP.md) |
|
|
190
|
+
| Run labeled project evaluation | [Project corpus manifest](tests/evals/project-corpus.json) and `python3 scripts/eval-projects.py --allow-insufficient` |
|
|
191
|
+
| Understand trust boundaries | [Signed attestation](references/signed-attestation.md) and [2.0.0 release note](docs/releases/2.0.0.md) |
|
|
192
|
+
| Validate visual truth before review/PR | `motionloom visual-truth build|validate` and [production checklist](docs/CHECKLIST.md) |
|
|
193
|
+
| Check current evidence posture | [Current status](docs/STATUS.md), [external corpus evidence](docs/audits/external-project-corpus-2026-08-13.md) and [historical audit snapshot](AUDIT-REPORT.md) |
|
|
194
|
+
| Contribute code or docs | [CONTRIBUTING.md](CONTRIBUTING.md) |
|
|
195
|
+
| Report a vulnerability or request help | [SECURITY.md](SECURITY.md) and [SUPPORT.md](SUPPORT.md) |
|
|
196
|
+
| See version history | [CHANGELOG.md](CHANGELOG.md) and [release notes](docs/releases/) |
|
|
197
|
+
|
|
198
|
+
## Development and release checks
|
|
164
199
|
|
|
165
|
-
|
|
200
|
+
```bash
|
|
201
|
+
npm install
|
|
202
|
+
python3 scripts/skill-doctor.py --json
|
|
203
|
+
python3 tests/scripts/run_tests.py
|
|
204
|
+
python3 scripts/eval-intelligence.py
|
|
205
|
+
python3 scripts/eval-projects.py --allow-insufficient
|
|
206
|
+
npm run release:verify
|
|
207
|
+
npm run runtime:test
|
|
208
|
+
npm run audit:deep
|
|
209
|
+
npm publish --dry-run --access public
|
|
210
|
+
```
|
|
166
211
|
|
|
167
|
-
The
|
|
212
|
+
The GitHub Actions workflow is designed to run the Project Memory and CLI contract on Ubuntu, macOS and Windows, then run the full evidence-aware quality suite on Ubuntu. Read the latest GitHub Actions run rather than treating this README or a historical audit as proof that the current checkout is green. A package dry-run is part of release preparation. See [CONTRIBUTING.md](CONTRIBUTING.md) for the clean-checkout procedure and [CHANGELOG.md](CHANGELOG.md) for release discipline.
|
|
168
213
|
|
|
169
|
-
|
|
214
|
+
## Automated CI/CD
|
|
170
215
|
|
|
171
|
-
|
|
216
|
+
MotionLoom separates verification from publication. Pull requests and pushes to `main` trigger the quality, documentation, security and relevant Dev Lab workflows when their path filters match. A weekly Dependabot job proposes dependency updates for the root package, Dev Lab and GitHub Actions. The npm release workflow is manual only, protected by the `npm-release` environment, and requires the maintainer to choose the distribution tag; GitHub release creation is an explicit input rather than an automatic side effect.
|
|
172
217
|
|
|
173
|
-
|
|
218
|
+
| Workflow | Trigger | Responsibility |
|
|
219
|
+
|---|---|---|
|
|
220
|
+
| `quality.yml` | Pull request, `main`, manual | Cross-platform memory/CLI matrix and full evidence-aware quality suite |
|
|
221
|
+
| `docs.yml` | Documentation/package changes, `main`, manual | Internal links, metadata, workflow safety, Skill Doctor and npm tarball inspection |
|
|
222
|
+
| `security.yml` | Pull request, `main`, weekly schedule, manual | Dependency review and CodeQL for JavaScript/Python |
|
|
223
|
+
| `devlab.yml` | `dev-lab/**` changes, `main`, manual | Build and retain the browser review workbench artifact |
|
|
224
|
+
| `release.yml` | Manual dispatch only | Regression, npm publish with provenance and optional GitHub release |
|
|
174
225
|
|
|
175
|
-
|
|
226
|
+
To enable npm publication, configure a protected GitHub environment named `npm-release` and either add the `NPM_TOKEN` environment secret or configure npm trusted publishing for this repository. Each manual run must provide `release_version`; the workflow verifies package/changelog/release-note alignment before publishing. The workflow never runs on a pull request and never changes MotionLoom's user-review or approval contract.
|
|
176
227
|
|
|
177
228
|
## License
|
|
178
229
|
|
|
179
|
-
MIT
|
|
230
|
+
MotionLoom is released under the [MIT License](LICENSE). Third-party runtime packages and source assets retain their own licenses and attribution requirements.
|
|
231
|
+
|
|
232
|
+
## References
|
|
233
|
+
|
|
234
|
+
[1]: https://agentskills.io/specification "Agent Skills specification"
|
|
235
|
+
[2]: https://docs.lottiefiles.com/en/runtimes "LottieFiles runtimes"
|
|
236
|
+
[3]: https://dotlottie.io/spec/2.0/ "dotLottie v2 specification"
|
|
237
|
+
[4]: https://rive.app/docs/runtimes/web/web-js "Rive Web runtime"
|
|
238
|
+
[5]: https://gsap.com/resources/a11y/ "GSAP accessibility guidance"
|