$npx -y skills add calesthio/OpenMontage --skill motion-graphicsUse when the user wants a short, design-led motion graphic where motion is the message: kinetic typography, stat or number count-up, chart/data-viz hit, logo sting, brand lockup, lower-third, callout, social overlay, animated headline/tweet/news item, motion poster, or quick capt
| 1 | # motion-graphics — dispatch entry |
| 2 | |
| 3 | > **Confirm the route before Step 0.** This skill makes a **short, design-led, unnarrated motion graphic** (motion is the message; ~under 10s, no voice-over). A **longer, multi-scene, or narrated** treatment → `/general-video`; a **narrated video of a website** → `/website-to-video`; a **topic explainer** → `/faceless-explainer`; a **product promo** → `/product-launch-video`; **captions on existing footage** → `/embedded-captions`. **Out of scope**: live / at-render-time data, or footage it can't capture. Unsure motion-first-vs-narrated? **Read `/hyperframes` first.** |
| 4 | |
| 5 | A short design-led motion graphic. **Asset-first**: decide the asset strategy and source real material _before_ designing the shot, then design the shot around what you have, then compose by reusing catalog capabilities. All artifacts go to `PROJECT_DIR = videos/<project-name>/` (created in Step 0); all paths below are relative to it. |
| 6 | |
| 7 | | Phase | Execution | Primary artifact | Detailed flow | |
| 8 | | -------- | --------------------------------------------------------------------- | ---------------------------------------------------------------- | ----------------------------- | |
| 9 | | init | Bash | `hyperframes.json` | Step 0 | |
| 10 | | plan | subagent — **decide search?** + classify + asset strategy | `shot-plan.json` (draft: category, `asset_needs` queries, brief) | `agents/director.md` (Part 1) | |
| 11 | | source ◇ | Bash — media-use resolve (**skip if `asset_needs` is empty**) | `assets/` + `assets/index.md` | `phases/source/guide.md` | |
| 12 | | design | subagent — shot design around resolved assets | `shot-plan.json` (final: block(s) + layout + motion + positions) | `agents/director.md` (Part 2) | |
| 13 | | build | subagent — reuse-first composition | `compositions/index.html` | `agents/builder.md` | |
| 14 | | render | Bash — `hyperframes render` (MP4, or `--format webm/mov` for overlay) | `renders/video.mp4` | Step 5 | |
| 15 | | verify | Bash — `lint` / `inspect` -> repair subagent on failure | (fixes in place) | `agents/finalize.md` | |
| 16 | |
| 17 | `◇ source` runs only when the chosen category declares assets. Pure code/text categories (e.g. `kinetic-type`, most `charts`/`stat`) have `asset_needs: []` and skip straight from plan to design. |
| 18 | |
| 19 | ## Categories — split by the search decision |
| 20 | |
| 21 | `plan`'s **first decision is: does this need a search?** That fork splits the categories into two groups; then the specific category is picked — for search-driven, **by the type of content the search returns**. Each category is one `categories/<id>/module.md` (its planning + build rules); the shared motion vocabulary lives in `references/motion-vocabulary.md` (→ `hyperframes-animation` rules/blueprints + registry blocks). |
| 22 | |
| 23 | **Form categories — no search; the user supplies the content:** |
| 24 | |
| 25 | | Category | Intent | Leans on | |
| 26 | | -------------- | ---------------------------------------------- | --------------------------------------------------------------------------- | |
| 27 | | `kinetic-type` | punchy line / quote / title, motion-first text | `caption-*` blocks + animation rules | |
| 28 | | `stat` | single hero number / count-up + ring | `apple-money-count` / `rules/{counting-dynamic-scale, stat-bars-and-fills}` | |
| 29 | | |