{
  "slug": "anymove-creature-mocap",
  "skill": "anymove",
  "upstream": "patch-gg/anymove@7a82a0a8fadffddd5c24fabf0697d9b6c814ce6e",
  "upstreamSha": "7a82a0a8fadffddd5c24fabf0697d9b6c814ce6e",
  "date": "2026-10-29",
  "engine": "Blender 5.2.3",
  "env": [
    "Node v22.11.0",
    "Python 3.11 venv with the CPU build of torch 2.11.0 and numpy 2.4.6 (set AM_PY to its python); no NVIDIA GPU",
    "Blender 5.2.3 (set BLENDER); Pillow from the system Python for the page image",
    "No fal key, no downloads: the release's Tripo meshes, MiniMax clips, trained readers and LoRA are not used",
    "Not run: rigging a new mesh, filming, training a reader, reading a clip, the LoRA (they need CUDA or fal)"
  ],
  "trigger": "static",
  "passed": 23,
  "total": 23,
  "commands": [
    "(cd examples && sh -c python3 tests/run_anymove_hands_on.py)",
    "(cd examples && sh -c python3 tests/run_anymove_hands_on.py)"
  ],
  "checks": [
    {
      "criterion": "trigger",
      "name": "every skill in the pack says when to use it (6 skills)",
      "pass": true,
      "detail": "6/6"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Animate my dragon creature from an AI video and export the animation as a GLB\"",
      "pass": true,
      "detail": "rank 1/118, overlap 6, via anymove"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Motion capture a non-human monster from one generated clip onto its rig\"",
      "pass": true,
      "detail": "rank 1/118, overlap 7, via anymove"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Train a joint reader for my spider creature so I can capture its moves\"",
      "pass": true,
      "detail": "rank 1/118, overlap 6, via anymove"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Slice this sprite sheet into transparent frames\"",
      "pass": true,
      "detail": "rank 6/118, overlap 1, via anymove-rig"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Write a Steam launch checklist for release day\"",
      "pass": true,
      "detail": "rank 5/118, overlap 1, via anymove-film"
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: mocap.solve fits the dragon's roar on the CPU (no GPU, no downloads)",
      "pass": true,
      "detail": "24 s"
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: the two views agree (reprojection under 10 px front, 12 px side; paw agreement score at least 0.85)",
      "pass": true,
      "detail": "front 5.93 px, side 7.99 px, paw 0.93"
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: motion.json covers every bone of the rig on every frame",
      "pass": true,
      "detail": "124 frames x 42 bones at 24.0 fps"
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: every rotation is finite and every root quaternion has unit length",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: the solved Euler angles stay inside the rig's joint limits (1 degree slack)",
      "pass": true,
      "detail": "0 values outside of 15252"
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: a stand-in armature rebuilt from rig_info.json matches its rest matrices",
      "pass": true,
      "detail": "STANDIN max_matrix_err=6.96161e-07 bones=42 verts=336"
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: blender/apply_motion.py keys the motion and writes animation.glb",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: Blender's joint positions match the solver's (under 2% of the creature's height)",
      "pass": true,
      "detail": "max 0.1 mm, creature 1.84 m"
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: animation.glb",
      "pass": true,
      "detail": "one skin with every bone, and an animation: 42 joints, animations ['rigAction']"
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: the clip keys every bone's rotation on every solved frame and lasts (T-1)/fps",
      "pass": true,
      "detail": "42 rotation channels x [124] keys, 1 moving translation (the root), 5.12 s"
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: Workbench renders of frames 0, 60 and 110 in both views exist",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "hands-on: CPU fit of the bundled dragon roar, the repo's apply_motion.py on a stand-in rig, GLB checks: exits 0 with no script errors",
      "pass": true,
      "detail": "exit 0"
    },
    {
      "criterion": "output",
      "name": "screenshot screenshot.png rendered",
      "pass": true
    },
    {
      "criterion": "output",
      "name": "self-check list has at least 3 items",
      "pass": true,
      "detail": "6 items"
    },
    {
      "criterion": "single",
      "name": "one job per skill (reviewed)",
      "pass": true,
      "detail": "One job split into steps: creature motion capture from an AI video. The router hands each step (rig, film, reader, capture, LoRA) to its own skill."
    },
    {
      "criterion": "bilingual",
      "name": "English SKILL.md from upstream",
      "pass": true
    },
    {
      "criterion": "bilingual",
      "name": "Chinese guide written",
      "pass": true,
      "detail": "1925 chars"
    }
  ]
}
