$npx -y skills add calesthio/OpenMontage --skill character-riggingBuild data-driven 2D character rigs for local animation: parts, pivots, layers, constraints, views, and reusable rig packages.
| 1 | # Character Rigging |
| 2 | |
| 3 | Use this skill when building OpenMontage `rig_plan` artifacts or renderer input |
| 4 | for local 2D character animation. |
| 5 | |
| 6 | ## Proven Patterns |
| 7 | |
| 8 | - Keep runtime code generic; make each character a data package. |
| 9 | - Split characters into independently transformable parts. |
| 10 | - Define pivots in the same coordinate space as the artwork. |
| 11 | - Store constraints on moving parts to prevent impossible rotations. |
| 12 | - Keep layer order explicit; do not rely on SVG source order after generation. |
| 13 | - Start with one view and add views only when the shot list requires them. |
| 14 | |
| 15 | ## Rig Package |
| 16 | |
| 17 | ```json |
| 18 | { |
| 19 | "character_id": "mouse", |
| 20 | "rig_type": "svg_rig", |
| 21 | "parts": [ |
| 22 | { "id": "body", "kind": "torso", "layer": 10 }, |
| 23 | { "id": "head", "kind": "head", "layer": 30, "parent": "body" }, |
| 24 | { "id": "arm_right", "kind": "limb", "layer": 40, "parent": "body" } |
| 25 | ], |
| 26 | "joints": { |
| 27 | "head": { "pivot": [320, 180], "rotation": [-20, 20] }, |
| 28 | "arm_right": { "pivot": [390, 310], "rotation": [-70, 95] } |
| 29 | } |
| 30 | } |
| 31 | ``` |
| 32 | |
| 33 | ## Quality Checklist |
| 34 | |
| 35 | - Every moving part has a pivot. |
| 36 | - Every child part has a parent where hierarchy matters. |
| 37 | - Mouth shapes are separate assets or separate path groups. |
| 38 | - Eyes and pupils are separate when gaze needs to change. |
| 39 | - Props are separate if the character touches or carries them. |
| 40 | |
| 41 | ## Sources |
| 42 | |
| 43 | - SVG transform-origin behavior is browser-defined and can be sensitive to |
| 44 | coordinate space; prefer explicit SVG-coordinate pivots when using GSAP |
| 45 | `svgOrigin`: https://gsap.com/docs/v3/GSAP/CorePlugins/CSS/ |
| 46 | - Remotion animations must be frame-driven and deterministic via current frame: |
| 47 | https://www.remotion.dev/docs/use-current-frame |