@anvpx/motion 0.0.0-stage → 0.1.1
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/CATALOG.md +301 -0
- package/LICENSE +21 -0
- package/README.md +95 -2
- package/assets.json +37 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +46 -0
- package/icons/LICENSE-lucide +43 -0
- package/icons/icons.json +2711 -0
- package/icons/licences.json +1521 -0
- package/luts/LICENSE-CC0.txt +20 -0
- package/luts/cool.cube +520 -0
- package/luts/noir.cube +520 -0
- package/luts/warm.cube +520 -0
- package/music/LICENSE-CC0.txt +32 -0
- package/music/bed-full.wav +0 -0
- package/music/bed.wav +0 -0
- package/package.json +69 -3
- package/packs/INDEX.md +22 -0
- package/packs/painted/checklist.md +30 -0
- package/packs/painted/examples/dry-ink/storyboard.json +88 -0
- package/packs/painted/examples/oil/storyboard.json +89 -0
- package/packs/painted/examples/shape-carry/storyboard.json +112 -0
- package/packs/painted/examples/stacked-beat/storyboard.json +106 -0
- package/packs/painted/examples/staged-read/storyboard.json +105 -0
- package/packs/painted/examples/watercolour/storyboard.json +79 -0
- package/packs/painted/look.md +71 -0
- package/packs/painted/pack.json +46 -0
- package/packs/painted/review.md +12 -0
- package/packs/painted/voice.md +30 -0
- package/plugins/motion-kit/.claude-plugin/plugin.json +5 -0
- package/plugins/motion-kit/README.md +39 -0
- package/plugins/motion-kit/commands/mk-draft.md +13 -0
- package/plugins/motion-kit/commands/mk-new.md +15 -0
- package/plugins/motion-kit/commands/mk-render.md +14 -0
- package/plugins/motion-kit/skills/motion-kit/SKILL.md +81 -0
- package/plugins/motion-kit/skills/motion-kit/references/authoring-scene.md +48 -0
- package/plugins/motion-kit/skills/motion-kit/references/authoring-style.md +19 -0
- package/plugins/motion-kit/skills/motion-kit/references/common-mistakes.md +73 -0
- package/plugins/motion-kit/skills/motion-kit/references/content-pack.md +69 -0
- package/plugins/motion-kit/skills/motion-kit/references/craft-color.md +50 -0
- package/plugins/motion-kit/skills/motion-kit/references/craft-composition.md +52 -0
- package/plugins/motion-kit/skills/motion-kit/references/craft-critique.md +68 -0
- package/plugins/motion-kit/skills/motion-kit/references/craft-motion.md +55 -0
- package/plugins/motion-kit/skills/motion-kit/references/craft-narrative.md +54 -0
- package/plugins/motion-kit/skills/motion-kit/references/craft-sound.md +53 -0
- package/plugins/motion-kit/skills/motion-kit/references/craft-type.md +54 -0
- package/plugins/motion-kit/skills/motion-kit/references/critique-repair.md +46 -0
- package/plugins/motion-kit/skills/motion-kit/references/decision-packet.md +59 -0
- package/plugins/motion-kit/skills/motion-kit/references/direction.md +84 -0
- package/plugins/motion-kit/skills/motion-kit/references/faux-ui.md +39 -0
- package/plugins/motion-kit/skills/motion-kit/references/free-storyboard.md +15 -0
- package/plugins/motion-kit/skills/motion-kit/references/intake.md +44 -0
- package/plugins/motion-kit/skills/motion-kit/references/knowledge-routing.md +58 -0
- package/plugins/motion-kit/skills/motion-kit/references/outline.md +34 -0
- package/plugins/motion-kit/skills/motion-kit/references/patching.md +50 -0
- package/plugins/motion-kit/skills/motion-kit/references/patterns.md +55 -0
- package/plugins/motion-kit/skills/motion-kit/references/quality-bar.md +61 -0
- package/plugins/motion-kit/skills/motion-kit/references/review.md +8 -0
- package/plugins/motion-kit/skills/motion-kit/references/scene-recipes.md +300 -0
- package/plugins/motion-kit/skills/motion-kit/references/setup.md +16 -0
- package/plugins/motion-kit/skills/motion-kit/references/slop.md +40 -0
- package/plugins/motion-kit/skills/motion-kit/references/storyboard-json.md +121 -0
- package/plugins/motion-kit/skills/motion-kit/references/themes.md +15 -0
- package/plugins/motion-kit/skills/motion-kit/references/troubleshooting.md +55 -0
- package/plugins/motion-kit/skills/motion-kit/references/voice.md +61 -0
- package/plugins/motion-kit/skills/motion-kit/references/worked-decisions.md +178 -0
- package/plugins/motion-kit/skills/motion-kit/references/worked-example.md +170 -0
- package/shared/themes/README.md +5 -0
- package/shared/themes/bold-dark.json +362 -0
- package/shared/themes/bold-light.json +362 -0
- package/shared/themes/calm-dark.json +362 -0
- package/shared/themes/calm-light.json +362 -0
- package/shared/themes/data-dark.json +360 -0
- package/shared/themes/data-light.json +360 -0
- package/shared/themes/editorial-dark.json +353 -0
- package/shared/themes/editorial-light.json +353 -0
- package/shared/themes/fjord-dark.json +124 -0
- package/shared/themes/fjord-light.json +124 -0
- package/shared/themes/playful-dark.json +362 -0
- package/shared/themes/playful-light.json +362 -0
- package/shared/themes/pop-dark.json +352 -0
- package/shared/themes/pop-light.json +352 -0
- package/shared/themes/tech-dark.json +360 -0
- package/shared/themes/tech-light.json +360 -0
- package/shared/themes/warm-dark.json +368 -0
- package/shared/themes/warm-light.json +368 -0
- package/skills/motion-kit/SKILL.md +81 -0
- package/skills/motion-kit/references/authoring-scene.md +48 -0
- package/skills/motion-kit/references/authoring-style.md +19 -0
- package/skills/motion-kit/references/common-mistakes.md +73 -0
- package/skills/motion-kit/references/content-pack.md +69 -0
- package/skills/motion-kit/references/craft-color.md +50 -0
- package/skills/motion-kit/references/craft-composition.md +52 -0
- package/skills/motion-kit/references/craft-critique.md +68 -0
- package/skills/motion-kit/references/craft-motion.md +55 -0
- package/skills/motion-kit/references/craft-narrative.md +54 -0
- package/skills/motion-kit/references/craft-sound.md +53 -0
- package/skills/motion-kit/references/craft-type.md +54 -0
- package/skills/motion-kit/references/critique-repair.md +46 -0
- package/skills/motion-kit/references/decision-packet.md +59 -0
- package/skills/motion-kit/references/direction.md +84 -0
- package/skills/motion-kit/references/faux-ui.md +39 -0
- package/skills/motion-kit/references/free-storyboard.md +15 -0
- package/skills/motion-kit/references/intake.md +44 -0
- package/skills/motion-kit/references/knowledge-routing.md +58 -0
- package/skills/motion-kit/references/outline.md +34 -0
- package/skills/motion-kit/references/patching.md +50 -0
- package/skills/motion-kit/references/patterns.md +55 -0
- package/skills/motion-kit/references/quality-bar.md +61 -0
- package/skills/motion-kit/references/review.md +8 -0
- package/skills/motion-kit/references/scene-recipes.md +300 -0
- package/skills/motion-kit/references/setup.md +16 -0
- package/skills/motion-kit/references/slop.md +40 -0
- package/skills/motion-kit/references/storyboard-json.md +121 -0
- package/skills/motion-kit/references/themes.md +15 -0
- package/skills/motion-kit/references/troubleshooting.md +55 -0
- package/skills/motion-kit/references/voice.md +61 -0
- package/skills/motion-kit/references/worked-decisions.md +178 -0
- package/skills/motion-kit/references/worked-example.md +170 -0
- package/stopwords.json +65 -0
- package/templates/compare/blueprints/versus.json +79 -0
- package/templates/compare/copy.md +18 -0
- package/templates/compare/pacing.json +15 -0
- package/templates/compare/previews/versus.png +0 -0
- package/templates/compare/styles/editorial.json +6 -0
- package/templates/compare/styles/punchy.json +6 -0
- package/templates/compare/styles/tidy.json +6 -0
- package/templates/compare/template.json +52 -0
- package/templates/datastory/blueprints/data-story.json +95 -0
- package/templates/datastory/blueprints/infographic.json +106 -0
- package/templates/datastory/blueprints/trend.json +93 -0
- package/templates/datastory/copy.md +16 -0
- package/templates/datastory/pacing.json +17 -0
- package/templates/datastory/previews/data-story.png +0 -0
- package/templates/datastory/previews/infographic.png +0 -0
- package/templates/datastory/previews/trend.png +0 -0
- package/templates/datastory/styles/clear.json +6 -0
- package/templates/datastory/styles/editorial.json +6 -0
- package/templates/datastory/styles/pop.json +7 -0
- package/templates/datastory/template.json +57 -0
- package/templates/event/blueprints/promo.json +71 -0
- package/templates/event/blueprints/save-the-date.json +61 -0
- package/templates/event/copy.md +16 -0
- package/templates/event/pacing.json +15 -0
- package/templates/event/previews/promo.png +0 -0
- package/templates/event/previews/save-the-date.png +0 -0
- package/templates/event/styles/bright.json +6 -0
- package/templates/event/styles/pop.json +6 -0
- package/templates/event/template.json +37 -0
- package/templates/explain/blueprints/architecture.json +76 -0
- package/templates/explain/blueprints/concept.json +89 -0
- package/templates/explain/blueprints/howto.json +56 -0
- package/templates/explain/blueprints/overview.json +126 -0
- package/templates/explain/copy.md +19 -0
- package/templates/explain/pacing.json +19 -0
- package/templates/explain/previews/architecture.png +0 -0
- package/templates/explain/previews/concept.png +0 -0
- package/templates/explain/previews/howto.png +0 -0
- package/templates/explain/previews/overview.png +0 -0
- package/templates/explain/styles/calm.json +6 -0
- package/templates/explain/styles/crisp.json +6 -0
- package/templates/explain/template.json +64 -0
- package/templates/guide/blueprints/lesson.json +173 -0
- package/templates/guide/blueprints/onboarding.json +80 -0
- package/templates/guide/blueprints/tutorial.json +102 -0
- package/templates/guide/copy.md +17 -0
- package/templates/guide/pacing.json +59 -0
- package/templates/guide/previews/lesson.png +0 -0
- package/templates/guide/previews/onboarding.png +0 -0
- package/templates/guide/previews/tutorial.png +0 -0
- package/templates/guide/styles/calm.json +15 -0
- package/templates/guide/styles/friendly.json +15 -0
- package/templates/guide/styles/techdark.json +15 -0
- package/templates/guide/template.json +95 -0
- package/templates/pitch/blueprints/feature.json +134 -0
- package/templates/pitch/blueprints/launch.json +173 -0
- package/templates/pitch/blueprints/pricing.json +141 -0
- package/templates/pitch/copy.md +18 -0
- package/templates/pitch/pacing.json +59 -0
- package/templates/pitch/previews/feature.png +0 -0
- package/templates/pitch/previews/launch.png +0 -0
- package/templates/pitch/previews/pricing.png +0 -0
- package/templates/pitch/styles/polished.json +6 -0
- package/templates/pitch/styles/punchy.json +6 -0
- package/templates/pitch/styles/teaser.json +12 -0
- package/templates/pitch/template.json +45 -0
- package/templates/recap/blueprints/news-recap.json +62 -0
- package/templates/recap/blueprints/timeline-story.json +94 -0
- package/templates/recap/copy.md +16 -0
- package/templates/recap/pacing.json +16 -0
- package/templates/recap/previews/news-recap.png +0 -0
- package/templates/recap/previews/timeline-story.png +0 -0
- package/templates/recap/styles/editorial.json +6 -0
- package/templates/recap/styles/editorialdark.json +6 -0
- package/templates/recap/template.json +50 -0
- package/templates/report/blueprints/kpi-review.json +116 -0
- package/templates/report/blueprints/status.json +78 -0
- package/templates/report/copy.md +17 -0
- package/templates/report/pacing.json +16 -0
- package/templates/report/previews/kpi-review.png +0 -0
- package/templates/report/previews/status.png +0 -0
- package/templates/report/styles/exec.json +6 -0
- package/templates/report/styles/memo.json +6 -0
- package/templates/report/styles/walkthrough.json +6 -0
- package/templates/report/template.json +56 -0
- package/templates/social/blueprints/announce.json +109 -0
- package/templates/social/blueprints/listicle.json +117 -0
- package/templates/social/blueprints/tip.json +114 -0
- package/templates/social/copy.md +18 -0
- package/templates/social/pacing.json +49 -0
- package/templates/social/previews/announce.png +0 -0
- package/templates/social/previews/listicle.png +0 -0
- package/templates/social/previews/tip.png +0 -0
- package/templates/social/styles/captioned.json +18 -0
- package/templates/social/styles/hook-first.json +15 -0
- package/templates/social/styles/techcut.json +15 -0
- package/templates/social/template.json +94 -0
- package/templates/update/blueprints/announcement.json +57 -0
- package/templates/update/blueprints/changelog.json +157 -0
- package/templates/update/blueprints/release-notes.json +151 -0
- package/templates/update/blueprints/weekly-update.json +88 -0
- package/templates/update/copy.md +17 -0
- package/templates/update/pacing.json +64 -0
- package/templates/update/previews/announcement.png +0 -0
- package/templates/update/previews/changelog.png +0 -0
- package/templates/update/previews/release-notes.png +0 -0
- package/templates/update/previews/weekly-update.png +0 -0
- package/templates/update/styles/punchy.json +15 -0
- package/templates/update/styles/techdark.json +6 -0
- package/templates/update/styles/tidy.json +6 -0
- package/templates/update/template.json +67 -0
- package/templates/vista/blueprints/spotlight.json +68 -0
- package/templates/vista/blueprints/tour.json +84 -0
- package/templates/vista/copy.md +18 -0
- package/templates/vista/pacing.json +14 -0
- package/templates/vista/previews/spotlight.png +0 -0
- package/templates/vista/previews/tour.png +0 -0
- package/templates/vista/styles/bright.json +6 -0
- package/templates/vista/styles/cinematic.json +6 -0
- package/templates/vista/template.json +42 -0
- package/templates/walkthrough/blueprints/product-tour.json +107 -0
- package/templates/walkthrough/copy.md +16 -0
- package/templates/walkthrough/pacing.json +16 -0
- package/templates/walkthrough/previews/product-tour.png +0 -0
- package/templates/walkthrough/styles/calm.json +6 -0
- package/templates/walkthrough/styles/deep.json +6 -0
- package/templates/walkthrough/template.json +37 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"atomRefs": [],
|
|
3
|
+
"budgets": {
|
|
4
|
+
"guideBytes": 12000,
|
|
5
|
+
"profile": "utf8-bytes",
|
|
6
|
+
"reviewBytes": 6000,
|
|
7
|
+
"summaryBytes": 1200,
|
|
8
|
+
"voiceBytes": 6000
|
|
9
|
+
},
|
|
10
|
+
"compatibleScenes": ["bullets", "callout", "flow", "steps", "timeline", "title"],
|
|
11
|
+
"freedom": [
|
|
12
|
+
{
|
|
13
|
+
"id": "staging-density",
|
|
14
|
+
"instruction": "Choose sparse single-idea staging or layered staging with protected focus: justify which the brief needs and name what you left out."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "accent-restraint",
|
|
18
|
+
"instruction": "Pick one small conceptual accent per film (warm red, ochre, or blue): justify its single job and keep every other mark in sketch greys."
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"guide": "look.md",
|
|
22
|
+
"id": "painted",
|
|
23
|
+
"qualification": { "review": "review.md", "status": "qualified" },
|
|
24
|
+
"register": ["calm", "warm"],
|
|
25
|
+
"review": "checklist.md",
|
|
26
|
+
"summary": "Warm hand-painted explainer vocabulary in three current-only media reads (watercolour, oil, dry-ink): staged reveals, persistent shapes, paper calm. Maps to existing native scenes; no brush renderer promised.",
|
|
27
|
+
"variants": [
|
|
28
|
+
{
|
|
29
|
+
"example": "examples/watercolour/storyboard.json",
|
|
30
|
+
"id": "watercolour",
|
|
31
|
+
"summary": "Light watercolour read: soft washes behind staged reveals; one idea enters at a time and earlier marks persist on the paper."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"example": "examples/oil/storyboard.json",
|
|
35
|
+
"id": "oil",
|
|
36
|
+
"summary": "Dense oil read: stacked beats with pauses; each beat holds before the next idea is laid down over settled marks."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"example": "examples/dry-ink/storyboard.json",
|
|
40
|
+
"id": "dry-ink",
|
|
41
|
+
"summary": "Dry-ink read: one carried silhouette anchors changing copy and callouts across shots; crisp sketch lines, no wash."
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"version": 1,
|
|
45
|
+
"voice": "voice.md"
|
|
46
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Painted — qualification review
|
|
2
|
+
|
|
3
|
+
Status: **qualified** for discovery and authoring.
|
|
4
|
+
|
|
5
|
+
Three native variety fixtures share one brief and pass validate, build and
|
|
6
|
+
preview with rubric PASS against this pack's review checklist. Copy stays
|
|
7
|
+
constant across the fixtures; composition carries the variety, so the result
|
|
8
|
+
is not a text or colour swap. Unsupported effects (streaming ink, region-mask
|
|
9
|
+
reveal, SRT import, brush rendering) are listed, never faked.
|
|
10
|
+
|
|
11
|
+
Not claimed: a final full render, an audible review, human board sign-off or
|
|
12
|
+
cross-machine determinism.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Painted — voice guide (inbox, authoring only)
|
|
2
|
+
|
|
3
|
+
Calm explainer narration for a hand-drawn read. Short sentences,
|
|
4
|
+
plain words, no hype.
|
|
5
|
+
|
|
6
|
+
## Rules
|
|
7
|
+
|
|
8
|
+
- One message per shot; at most ~8 words visible at once. The
|
|
9
|
+
narration may carry the full sentence; the frame carries the hook.
|
|
10
|
+
- Facts only from the brief/source. Never invent figures, dates, or
|
|
11
|
+
quotes to fill a beat. Mark illustrative copy as illustrative.
|
|
12
|
+
- Order narration by narrative event (setup, subject, change,
|
|
13
|
+
reaction). Screen position never decides what is said first.
|
|
14
|
+
- No scene-text overload: labels live in `callout` copy slots, not
|
|
15
|
+
as baked-in image text.
|
|
16
|
+
|
|
17
|
+
## Delivery
|
|
18
|
+
|
|
19
|
+
- Measured, unhurried read with a beat of silence after each reveal
|
|
20
|
+
so the idea lands before the next mark appears.
|
|
21
|
+
- Music, sfx, and ambience are opt-in only: they need an explicit
|
|
22
|
+
request. Editing pace and visual references never authorize audio.
|
|
23
|
+
- Human-sounding narration quality is NOT proven by this guide;
|
|
24
|
+
voice qualification is a separate packet with its own evidence.
|
|
25
|
+
|
|
26
|
+
## Inbox note
|
|
27
|
+
|
|
28
|
+
Voice treatment here is authoring guidance. Audible review and any
|
|
29
|
+
loudness/quality measurement arrive with PK-04 proofs, not with
|
|
30
|
+
this inbox record.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# motion-kit Claude Code plugin
|
|
2
|
+
|
|
3
|
+
Plugin root: `plugins/motion-kit/` (chosen over a top-level `motion-kit-plugin/`
|
|
4
|
+
folder name used by the plugin packaging convention;
|
|
5
|
+
`npx -y @anvpx/motion@0.1.1 plugin install` copies this exact folder).
|
|
6
|
+
|
|
7
|
+
## Layout
|
|
8
|
+
|
|
9
|
+
- `.claude-plugin/plugin.json` — manifest (`name`, `version`, `description` only;
|
|
10
|
+
version tracks `@anvpx/motion`).
|
|
11
|
+
- `commands/mk-new.md`, `mk-draft.md`, `mk-render.md` — thin wrappers. Every step
|
|
12
|
+
calls `npx -y @anvpx/motion@0.1.1` (pinned; never unpinned `npx`).
|
|
13
|
+
Surface as `/motion-kit:mk-new`, `/motion-kit:mk-draft`, `/motion-kit:mk-render`.
|
|
14
|
+
- `skills/motion-kit/SKILL.md` — generated from the canonical skill by the
|
|
15
|
+
scaffold; do not edit it here.
|
|
16
|
+
- `skills/motion-kit/references/` — generated from the canonical reference set,
|
|
17
|
+
so every `references/*.md` link resolves after install.
|
|
18
|
+
|
|
19
|
+
## Source ownership
|
|
20
|
+
|
|
21
|
+
The plugin's `.claude-plugin/`, `commands/` and this README are hand-maintained.
|
|
22
|
+
The `skills/motion-kit/` tree is generated. Edit the canonical skill and run
|
|
23
|
+
`pnpm scaffold`; `pnpm scaffold:check` fails on drift. The same scaffold
|
|
24
|
+
generates the core package's `skills/` and `plugins/` trees.
|
|
25
|
+
|
|
26
|
+
## Install
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx -y @anvpx/motion@0.1.1 plugin install --out ./motion-kit-plugin
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Verifies `skills/motion-kit/SKILL.md` sha256 matches after copy.
|
|
33
|
+
|
|
34
|
+
## Desktop (separate track)
|
|
35
|
+
|
|
36
|
+
Claude Desktop Extensions are zipped `.mcpb` bundles with a `manifest.json`
|
|
37
|
+
(`mcpServers`), NOT this `skills/` folder. This folder does NOT serve Desktop.
|
|
38
|
+
Desktop track: manually copy `skills/motion-kit/SKILL.md` into a Desktop
|
|
39
|
+
skill import; do not claim one folder covers both hosts.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Preview a motion-kit storyboard (stills, contact sheet, draft clip)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Run the pinned CLI for every step; never use an unpinned invocation.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx -y @anvpx/motion@0.1.1 preview storyboard.json
|
|
9
|
+
npx -y @anvpx/motion@0.1.1 approve storyboard.json --note "<user words>"
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Follow `skills/motion-kit/SKILL.md` stages 7-8 (preview, show + approve).
|
|
13
|
+
Show `contact.png` before asking for approval. Invoked as `/motion-kit:mk-draft`.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Start a motion-kit video (intake, brief, template pick, storyboard)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Run the pinned CLI for every step; never use an unpinned invocation.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx -y @anvpx/motion@0.1.1 template list --for "<one-line brief>"
|
|
9
|
+
npx -y @anvpx/motion@0.1.1 template show <template>/<blueprint>
|
|
10
|
+
npx -y @anvpx/motion@0.1.1 new <template>/<blueprint> --set k=v ... --out storyboard.json
|
|
11
|
+
npx -y @anvpx/motion@0.1.1 validate storyboard.json
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Follow `skills/motion-kit/SKILL.md` stages 1-6 (intake, brief, pick template,
|
|
15
|
+
outline, instantiate, validate). Invoked as `/motion-kit:mk-new`.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Gated render of an approved motion-kit storyboard with verify
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Run the pinned CLI for every step; never use an unpinned invocation.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx -y @anvpx/motion@0.1.1 render storyboard.json --gated --verify
|
|
9
|
+
npx -y @anvpx/motion@0.1.1 verify out/final.mp4 --storyboard storyboard.json
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Follow `skills/motion-kit/SKILL.md` stages 9-10 (patch, render). Exit 4 means
|
|
13
|
+
ask the user (not an error); any edit re-arms the approval gate.
|
|
14
|
+
Invoked as `/motion-kit:mk-render`.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: motion-kit
|
|
3
|
+
description: Design, preview and render a professional animated video, explainer, infographic, product demo, data story or social clip from a brief or source material. Use whenever the user asks for a video, motion graphic, animated diagram, social clip, still deck or storyboard, or wants content turned into something watchable, even if they do not say "video". Shows a short preview and renders only after an explicit yes. Not for changing motion-kit's own code, tests or docs.
|
|
4
|
+
allowed-tools: Bash(mk:*) Bash(npx:*) Read Write
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# motion-kit: brief -> preview -> approved video
|
|
8
|
+
|
|
9
|
+
`mk` = `npx -y @anvpx/motion@0.1.1`; alias it once per shell, or use the npx prefix in its place. The user describes the outcome; you author one storyboard JSON, show a short preview, and render only after an explicit yes.
|
|
10
|
+
|
|
11
|
+
## Start here
|
|
12
|
+
|
|
13
|
+
1. `mk doctor` once; optional voice rows may be missing, required rows are not.
|
|
14
|
+
2. Extract supplied facts and constraints; ask only material gaps (max 3, with defaults). A complete brief is not a questionnaire (`references/intake.md`).
|
|
15
|
+
3. `brief.md`: <= 8 facts, every number sourced. Design `direction.md` before choosing scenes (`references/direction.md`); resolve one craft question at a time (`references/knowledge-routing.md`). Send a <= 200-word outline and wait for "go" (`references/outline.md`).
|
|
16
|
+
4. Pick a route (below), instantiate, then `mk validate` until 0 errors. If `meta.theme` is not built-in (`default`, `dark`, `tech-dark`, `calm-dark`) and `themes/<name>.json` is absent, preview before calling this done. Storyboard-only request: stop here.
|
|
17
|
+
5. `mk preview`; open the printed `pack .../contact.png`; ask. On yes only: `mk approve ...`, then `mk render ... --gated --verify`.
|
|
18
|
+
|
|
19
|
+
## Read when
|
|
20
|
+
|
|
21
|
+
| File | Read when |
|
|
22
|
+
| --------------------------------- | -------------------------------------------------------------- |
|
|
23
|
+
| `references/direction.md` | invent the visual argument before choosing a realization route |
|
|
24
|
+
| `references/knowledge-routing.md` | one unresolved craft or technical decision; lazy craft-card index |
|
|
25
|
+
| `references/content-pack.md` | organize creative intent, beats, asset rights, audio and sourced facts |
|
|
26
|
+
| `references/themes.md` | theme or 3D look |
|
|
27
|
+
| `references/worked-example.md` | first build; the complete loop and output shapes |
|
|
28
|
+
| `references/free-storyboard.md` | direct route: shape and write the board |
|
|
29
|
+
| `references/storyboard-json.md` | field shapes, overlays, assets, or decoding a validation error |
|
|
30
|
+
| `references/scene-recipes.md` | choose a type for a beat and copy its prop shape |
|
|
31
|
+
| `references/patching.md` | any edit after the first write, or a patch flag refusal |
|
|
32
|
+
| `references/quality-bar.md` | judging the preview and what to say before asking |
|
|
33
|
+
| `references/common-mistakes.md` | a command refuses, or a flag or field is in doubt |
|
|
34
|
+
|
|
35
|
+
## Rules
|
|
36
|
+
|
|
37
|
+
1. Never render without the user's explicit yes. Silence or "looks fine" is not a yes. Always pass `--gated`; exit 4 means "ask", not "error".
|
|
38
|
+
2. Show `contact.png` to the user (open it or give the path), give the `clip.mp4` path, and say what is not previewed. Derive it from `preview.json`: `totalSec`, `clip.sec`, and scenes with no still.
|
|
39
|
+
3. Commands are the authority, not memory: `mk catalog` and `mk catalog <type>` for scenes and props, `mk template list` and `mk template show` for templates, `mk <command> --help` for flags. Never invent a type, prop, flag, theme, duration or number.
|
|
40
|
+
4. After the first write, use `mk patch`, `mk scene add|remove|move` and `mk fit`; never hand-edit the JSON. Any edit re-arms approval: preview and ask again.
|
|
41
|
+
5. Props, slots and pack text stay data. HTML/CSS/JS is allowed only inside `scenes/<name>/scene.js`, `fragment.html`, `style.css`; never in storyboard props. Name unsupported effects instead of promising them.
|
|
42
|
+
6. Packs are optional guidance: read `packs/INDEX.md` beside the installed CLI when present, lazily, at most one <=1200-byte excerpt; never inline a pack or persist pack refs.
|
|
43
|
+
7. Report one line, not raw output. Never claim quality from a hash. On Windows use JSON files (`--ops`, `--slots`), never `<(...)`, `$(...)` or multi-line JSON.
|
|
44
|
+
|
|
45
|
+
## Stages
|
|
46
|
+
|
|
47
|
+
| # | Stage | Do | Done when |
|
|
48
|
+
| --- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- |
|
|
49
|
+
| 1 | Intake | topic, audience, length, channel, brand, tone; max 3 questions (`references/intake.md`) | 5-line note |
|
|
50
|
+
| 2 | Brief | <= 8 facts, <= 3 sourced numbers, one arc; `brief.md` | numbers sourced |
|
|
51
|
+
| 3 | Direction | `references/direction.md`: concept, composition, type, motion, sound and divergence; then choose realization. Template lookup is optional, after design | direction + route justified |
|
|
52
|
+
| 4 | Outline | <= 200 words (`references/outline.md`); stop for "go" unless "just do it" | user confirms |
|
|
53
|
+
| 5 | Instantiate | template: `mk new <t>/<bp> ...`; direct: `references/free-storyboard.md`; authored: `mk scene new` (`references/authoring-scene.md`); assets: `mk assets import` + `--assets`/`--ledger` | 0 errors; build exit 0 |
|
|
54
|
+
| 6 | Fix | smallest `mk patch`; max 3 rounds; same error twice: `mk catalog <type>` + `references/troubleshooting.md`; unknown theme: built-in or `themes/<name>.json` | 0 errors, warnings read |
|
|
55
|
+
| 7 | Preview | `mk preview` (<= 90 s; add `--assets d --ledger f` when used); read stdout + `preview.json`; `references/quality-bar.md` | pack exists |
|
|
56
|
+
| 8 | Show + approve | contact + clip + 3-line summary + derived coverage; ask. On yes: `mk approve ... --note "<their words>"` (repeat the preview's `--out`/assets/audio flags) | explicit yes recorded |
|
|
57
|
+
| 9 | Patch | smallest change; back to 6-7; max 3 rounds, then offer options | approval matches file |
|
|
58
|
+
| 10 | Render | mp4: `mk render ... --gated --verify`; webm/mov/gif/png-sequence: `--format ... --gated`, omit `--verify` (mp4-only); add `--assets`/`--ledger`, `--resolution`, `--fps` | mp4: verify 0; other: output exists |
|
|
59
|
+
|
|
60
|
+
## Choosing a route
|
|
61
|
+
|
|
62
|
+
Design first, then choose template (`mk template list` -> `mk new`), direct (`references/free-storyboard.md`) or authored (`mk scene new`, `references/authoring-scene.md`) by fit. Templates help repeat a brand system; direct boards compose catalog components; authored scenes create original layouts and motion. Mix routes when useful. No per-video cap or template-exhaustion prerequisite. The catalog defines supported props, not the visual idea. Name the route and its limitations.
|
|
63
|
+
|
|
64
|
+
## How long should it be
|
|
65
|
+
|
|
66
|
+
Use the user's length, else propose 45 s. Budget orientation, meaningful change and readable rest against real copy/narration; scene count follows the argument. `mk fit --seconds N` adjusts timing, not narrative depth. Add or reshape beats with `mk scene add` when stretching would create dead time.
|
|
67
|
+
|
|
68
|
+
## Voice, music and captions (opt-in)
|
|
69
|
+
|
|
70
|
+
`mk voice` -> `mk captions` -> `mk patch --ops`; same `--audio` for preview, approve and render. Write numbers as words (`01` -> "zero one"). Music is opt-in; use `music/bed-full.wav`, not the silent `music/bed.wav`. Details: `references/voice.md`.
|
|
71
|
+
|
|
72
|
+
## Failures
|
|
73
|
+
|
|
74
|
+
| Symptom | Do |
|
|
75
|
+
| ---------------- | ------------------------------------------------------------------- |
|
|
76
|
+
| exit 4 | not an error: stage 8 |
|
|
77
|
+
| exit 5 | fix the named scene, re-render once, then report |
|
|
78
|
+
| same error twice | stop patching; `mk catalog <type>` and rewrite that scene |
|
|
79
|
+
| anything else | `references/common-mistakes.md`, then `references/troubleshooting.md` |
|
|
80
|
+
|
|
81
|
+
Done = approval hash matches, `mk verify` exit 0 is quoted, and unverified parts are named.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Authoring a scene (type: custom)
|
|
2
|
+
|
|
3
|
+
A first-class route for original composition and motion. Start from the visual argument in `direction.md`, then use code when it expresses that idea well. There is no per-video cap or requirement to exhaust catalog/template options. Native and authored scenes can share a storyboard. Review the emitted files and test deterministic seek; do not promise a supported mechanism until its actual contract is checked.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
`scenes/<name>/scene.js` (exports `createScene`), `fragment.html` (no `<script>`, no `on*=`), `style.css` (optional; `#scene-root` is rewritten). The scaffold also writes `notes.md`; that is documentation, not part of the picture. These three code files are the only place HTML/CSS/JS is authored; storyboard props, template slots and pack instructions stay data.
|
|
8
|
+
|
|
9
|
+
The scaffold's `scene.js` imports `../../runtime/compose.js`; the build supplies that runtime. Replace its markup, CSS and motion with the direction's original composition while keeping the exported `createScene` contract. The starter demonstrates time-driven state, not a required title layout. Older scenes using `../../runtime/mount.js` and `mountTimeline` remain supported. Do not copy runtime implementations into the scene.
|
|
10
|
+
|
|
11
|
+
A relative helper such as `./lib/format.js` is part of the scene: it must stay inside the scene directory (no `../`, no absolute or remote path), and it is emitted beside `scene.js`, linted with the scene and included in the approval hash. A helper-only edit re-arms the gate like any other scene edit.
|
|
12
|
+
|
|
13
|
+
`props.dir` must stay inside the storyboard's directory; absolute paths and `..` are rejected.
|
|
14
|
+
|
|
15
|
+
Entry: `{ "type": "custom", "props": { "dir": "scenes/hero" } }`
|
|
16
|
+
|
|
17
|
+
## Contract
|
|
18
|
+
|
|
19
|
+
`createScene(root, config, ctx)` → `{ seek(t), dispose(), ready }`. `seek(t)` is a pure function of t. Start from `mk scene new hero`.
|
|
20
|
+
|
|
21
|
+
## Small motion vocabulary, open composition
|
|
22
|
+
|
|
23
|
+
Import only the helpers you use from `../../runtime/compose.js`:
|
|
24
|
+
|
|
25
|
+
- `progress(t, start, duration)`: clamped 0..1; duration zero makes a cut at `t >= start`. Inputs must be finite, duration nonnegative.
|
|
26
|
+
- `interpolate(from, to, amount)`: numeric interpolation; an eased amount may overshoot.
|
|
27
|
+
- `stagger(index, step, start = 0)`: onset for a nonnegative integer index; a negative step reverses order.
|
|
28
|
+
- `ease(name, amount)` and `clamp01(amount)`: existing easing vocabulary (`linear`, `in`, `out`, `in-out`, `spring-soft`, `spring-snappy`).
|
|
29
|
+
|
|
30
|
+
Example: `const p = ease('out', progress(t, 0, 0.8));` then set an element's opacity and transform from `p` on every seek. The time values are illustrative, not pacing rules. Author your own layers, grids, masks, type lockups and relationships in HTML/CSS/JS; helpers impose no layout or visual style. Assign every animated property before onset, during action and after settle; never accumulate deltas from a prior seek. Initialize the scene state and release listeners/resources or temporary styles in `dispose`.
|
|
31
|
+
|
|
32
|
+
## Fails lint
|
|
33
|
+
|
|
34
|
+
clocks (`Date.now`, `performance.now`, `new Date()`) · timers · `requestAnimationFrame` · `Math.random` · network/workers · `window.` · CSS `animation`/`transition`/`@keyframes`
|
|
35
|
+
|
|
36
|
+
A CSS animation runs on the browser clock, not `seek(t)`.
|
|
37
|
+
|
|
38
|
+
## Draw with tokens
|
|
39
|
+
|
|
40
|
+
`var(--mk-color-bg)`, `var(--mk-color-fg)`, `var(--mk-color-accent)`, `var(--mk-font-*)`. Theme tokens support consistent art direction; authored geometry and motion remain yours. Hard hexes need deliberate theme-switch review. Inspect actual safe margins and delivery crop in preview rather than assuming a decorative full-bleed element makes text safe.
|
|
41
|
+
|
|
42
|
+
## Loop
|
|
43
|
+
|
|
44
|
+
`mk scene new` → edit → `mk scene lint` → `mk validate` → `mk preview` → ask. Promotion to a catalog type is optional and only after demonstrated reuse; it is not a condition for shipping an authored scene.
|
|
45
|
+
|
|
46
|
+
## Self-check
|
|
47
|
+
|
|
48
|
+
Seek A -> B -> A and compare state/pixels. Then seek in reverse order and outside the action interval. Theme switch safe? Fits the intended aspect, longest copy and busiest beat? Does the composition realize the direction? Could shared helpers reduce repeated mechanics without fixing the design? Static proof does not establish motion or sound quality.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Authoring theme tokens within a direction
|
|
2
|
+
|
|
3
|
+
A theme supplies palette/font tokens, not the whole visual system. Design composition, typography behavior, motion and sound in `direction.md`; use `craft-color.md` and `craft-type.md` for those decisions. A recolor of the same layout is useful brand adaptation, but is not by itself a new art direction.
|
|
4
|
+
|
|
5
|
+
A theme is DTCG JSON. Copy the nearest vendored family from `shared/themes/` inside the installed `@anvpx/motion` package and change values only — renaming tokens breaks scenes.
|
|
6
|
+
|
|
7
|
+
## Tokens that matter
|
|
8
|
+
|
|
9
|
+
`color.bg` and `color.bgEnd` (the page gradient), `color.fg`, `color.accent`, `color.accent2`, `color.card`, `color.divider`, `color.glow`, `font.sans`, `font.mono`, `radius`. Assign roles from the direction and check contrast over every actual background state; token names do not require a gradient, glow or card motif in an authored composition.
|
|
10
|
+
|
|
11
|
+
## Enforced by the build
|
|
12
|
+
|
|
13
|
+
- `fg` on `bg` must clear 4.5:1 contrast; large display type 3:1.
|
|
14
|
+
- Colour tokens reject `url()`, `var()` and `calc()` — values are literals.
|
|
15
|
+
- Fonts must be one of the bundled families; never a CDN.
|
|
16
|
+
|
|
17
|
+
## Check the system
|
|
18
|
+
|
|
19
|
+
Keep hierarchy and semantic roles coherent. One accent or type family can be a strong choice; multiple categories or contrasting roles may need more. State the reason, then preview representative frames at delivery size. Native scene compositions stay fixed unless their props expose controls; use the authored route for original geometry and behavior. Preview, approve and render must resolve the same vendored theme bytes.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Common mistakes on the current surface
|
|
2
|
+
|
|
3
|
+
These are the failures that waste the most time. Each row is wrong -> right -> why. When a row does not cover it, run `mk <command> --help`; never guess a flag.
|
|
4
|
+
|
|
5
|
+
## Workflow
|
|
6
|
+
|
|
7
|
+
| Wrong | Right | Why |
|
|
8
|
+
| ------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------- |
|
|
9
|
+
| `mk render` after "looks good" | `mk preview`, show `contact.png`, hear an explicit yes, then `mk approve` | The gate exists so the user sees the film before paying for it |
|
|
10
|
+
| "They said yes earlier" | Ask again for the current preview | Any edit re-arms approval; an old yes is for an old board |
|
|
11
|
+
| Hand-edit the JSON after the first write | `mk patch`, `mk scene`, `mk fit` | The approval and preview bind to the exact bytes and structure |
|
|
12
|
+
| Approve on the user's silence | Ask again with the contact path | Silence is not consent |
|
|
13
|
+
| Skip preview because the board "looks fine" | Preview every board before asking | JSON is not a frame; lint is not composition |
|
|
14
|
+
| Write a second board as "backup" | Patch the one board | Two files diverge and the approval points at neither |
|
|
15
|
+
| Promise a feature the engine does not have | Name the unsupported effect and choose a native route | The user will see the gap at preview |
|
|
16
|
+
|
|
17
|
+
## Schema and props
|
|
18
|
+
|
|
19
|
+
| Wrong | Right | Why |
|
|
20
|
+
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
|
|
21
|
+
| `"version": 2` or a migration step | `"version": 1`; no migration command exists | There is one live schema discriminator, not a version history |
|
|
22
|
+
| `"meta": { "aspect": "9:16" }` | `"width": 1080, "height": 1920` | The frame is pixels; there is no `aspect` key |
|
|
23
|
+
| Adding a helpful key such as `"note"` or `"layoutHint"` | Only keys from `mk catalog <type>` | Props are strict; unlisted keys are rejected |
|
|
24
|
+
| `"id": "Intro Scene"` | `"id": "intro-scene"` | Ids must be lowercase slugs |
|
|
25
|
+
| Overlay without `over` | `"layer": "overlay", "over": "intro", "duration": 3` | An overlay must know which base scene it covers |
|
|
26
|
+
| Overlay with `transition` | Remove `transition` | Overlays fade themselves; the schema rejects it |
|
|
27
|
+
| `over`/`offset` on a base scene | Put them only on `layer: "overlay"` scenes | Base scenes advance the timeline |
|
|
28
|
+
| `meta.theme: "calm-light"` on a hand-written board | Use a built-in theme or vendor the theme into `themes/` | `mk validate` does not resolve themes; preview does |
|
|
29
|
+
| Copying only `storyboard.json` to a new folder | Copy `themes/` and `.mk/` beside it | Themes and template provenance resolve beside the board |
|
|
30
|
+
| Summing durations to predict the total, or expecting `mk validate` to print it | Read `preview.json` `totalSec`, or the `mk patch`/`mk fit`/`mk scene add`/`mk preview` line | Transitions overlap; `mk validate` reports errors, not duration |
|
|
31
|
+
| `code.highlight: 1` | `"highlight": [1]` (array of line numbers) | The prop is a list, not a scalar |
|
|
32
|
+
| `media-frame.image` is a URL | A local path plus an `assets.json` ledger row | Remote assets fail closed |
|
|
33
|
+
| `"image": "assets/x.png"` while `--assets assets` | `"image": "x.png"`; ledger `assets.json` | Asset refs are relative to the assets dir, not the project |
|
|
34
|
+
| An icon name invented from memory | `mk icon search <word>` | Icon names are a finite set |
|
|
35
|
+
|
|
36
|
+
## CLI
|
|
37
|
+
|
|
38
|
+
| Wrong | Right | Why |
|
|
39
|
+
| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
|
|
40
|
+
| `mk new ... --set items=["A","B"]` | Put arrays and objects in `--slots slots.json`; `--set` lists are pipe-separated | `mk new` does not parse a JSON array in `--set`; `mk scene add` does |
|
|
41
|
+
| `mk new ... --set title.text=...` | `mk patch` after `mk new` | `--set` is top-level only |
|
|
42
|
+
| `mk scene add caption ...` with no `--over` | `--over intro` and `--offset 0` | Overlay types require their base scene |
|
|
43
|
+
| `mk fit --seconds 50` on a 25 s board | Add scenes first, then fit | Fit moves about 1.4x and refuses outside the range; it never distorts |
|
|
44
|
+
| `mk approve` with different flags than `mk preview` | Use the identical `--out`, `--assets`, `--ledger`, `--audio`, `--music` | Approve infers the pack inputs; a mismatch exits 2 |
|
|
45
|
+
| Following the printed `approve:` hint after `preview --out` | Repeat the same `--out` and asset/audio flags | The hint may omit `--out`; approve then looks in the default folder |
|
|
46
|
+
| `mk approve` before `mk preview` | Preview first | There is no pack for the current inputs |
|
|
47
|
+
| `mk render --verify --format webm` | Verify the mp4 master, then convert | `--verify` is mp4-only |
|
|
48
|
+
| `mk captions manifest.json --out ops.json` with no storyboard | Add `--storyboard storyboard.json` | Ops need scene-relative paths |
|
|
49
|
+
| `mk assets import logo.png --dir assets` | Add `--licence MIT --source-url <url>` | Every imported asset needs provenance |
|
|
50
|
+
| `mk voice` on a machine with no venv | `mk doctor`; install Python 3.12 + the voice extras, or ship silent | Voice is opt-in and fails closed |
|
|
51
|
+
| `mk patch` path into a missing parent | Add the parent first, or target an existing path | Patch stops at the first op that cannot apply |
|
|
52
|
+
| `npx -y @anvpx/motion@0.1.1` returns 404 | stop: the pinned package is unpublished; use a local checkout/tarball only if the user has one | no working bootstrap exists until release |
|
|
53
|
+
|
|
54
|
+
## Windows
|
|
55
|
+
|
|
56
|
+
| Wrong | Right | Why |
|
|
57
|
+
| ------------------------------------------------------------- | ----------------------------------------------------- | -------------------------------------------- |
|
|
58
|
+
| `mk patch board.json --op` with inline JSON containing quotes | Put the op in `fixes.json` and use `--ops fixes.json` | Shell quoting mangles nested JSON |
|
|
59
|
+
| `mk new --slots <(echo ...)` | Write `slots.json` and pass `--slots slots.json` | Process substitution is not PowerShell |
|
|
60
|
+
| `$json = @'...'@; mk patch --op $json` | Same file route | Multi-line quoted JSON breaks on some shells |
|
|
61
|
+
|
|
62
|
+
## Quality
|
|
63
|
+
|
|
64
|
+
| Wrong | Right | Why |
|
|
65
|
+
| ------------------------------------------------ | ------------------------------------------------------- | ----------------------------------------------------- |
|
|
66
|
+
| Three static scenes in a row | Give base scenes a `move`, or vary the shot | Lint flags `flat-motion`; the film reads as slides |
|
|
67
|
+
| A paragraph on one slide | One idea, at most six words per line | Viewers read the headline, not the paragraph |
|
|
68
|
+
| All text the same size | One clear hierarchy: headline, support, one hero number | Equal weight means no entry point |
|
|
69
|
+
| Decoration to fill space | Remove an element, enlarge the type, or split the beat | Empty space is not a defect; clutter is |
|
|
70
|
+
| Claiming "premium" or "AAA" from a contact sheet | Describe what the preview proves and what it does not | A still cannot prove motion, voice or the full render |
|
|
71
|
+
| Ignoring a lint warning because exit is 0 | Read every warning; fix or record a deliberate waiver | Warnings are the engine's cheapest review |
|
|
72
|
+
|
|
73
|
+
When the same error appears twice, stop changing flags. Run `mk catalog <type>`, compare the scene to its example, and rewrite that one scene through `mk patch`. Three rounds is the budget; then show the user the options.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Content pack: evidence and creative intent
|
|
2
|
+
|
|
3
|
+
Before a storyboard, separate facts from design choices. Keep five short lists;
|
|
4
|
+
source claims and assets or mark them "placeholder". Develop the direction
|
|
5
|
+
yourself using the brief; ask only questions that change it, within intake's
|
|
6
|
+
three-question limit.
|
|
7
|
+
|
|
8
|
+
## 1. Direction (a design choice, not a fact)
|
|
9
|
+
|
|
10
|
+
Use `direction.md` to invent a visual argument and record composition, type,
|
|
11
|
+
color/material, motion and sound choices with reasons. Explore an alternative
|
|
12
|
+
whose visual mechanism is meaningfully different. A look name is a useful label
|
|
13
|
+
after these decisions, not a menu to choose from. Describe what differs from
|
|
14
|
+
available recent work and what deliberately stays consistent.
|
|
15
|
+
|
|
16
|
+
Teach yourself the next missing decision through `knowledge-routing.md`.
|
|
17
|
+
Templates, patterns and qualified packs are optional references. Borrow a
|
|
18
|
+
principle when useful; build an original system when the brief calls for it.
|
|
19
|
+
Choose template/direct/authored realization after direction. No finished style
|
|
20
|
+
list defines the creative space.
|
|
21
|
+
|
|
22
|
+
## 2. Beats (meaning before components)
|
|
23
|
+
|
|
24
|
+
For each beat, write the message, what changes on screen and why the next beat
|
|
25
|
+
follows. Give attention a clear subject; introduce information at a readable
|
|
26
|
+
pace. A hook can be a question, surprising relationship or sustained observation,
|
|
27
|
+
not necessarily a loud first-second effect.
|
|
28
|
+
|
|
29
|
+
Then map to supported components using `mk catalog`, or to original authored
|
|
30
|
+
HTML/CSS/JS through `authoring-scene.md`. Catalog layouts are components, not a
|
|
31
|
+
mandatory scene sequence. Choose caption treatment for reading conditions;
|
|
32
|
+
caption words/timing come from the voice manifest, shifted to scene-relative
|
|
33
|
+
times. Name unsupported mechanisms and investigate instead of promising them.
|
|
34
|
+
|
|
35
|
+
## 3. Assets and UI (local files with rights)
|
|
36
|
+
|
|
37
|
+
Screenshots and images live inside the project; remote references fail closed
|
|
38
|
+
at preview. Import each file rather than hand-writing the ledger:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
mk assets import src/dashboard.png --dir assets --ledger assets.json --licence CC0-1.0 --source-url <url>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Use the actual license and source. The row contains `path`, `sourceUrl`,
|
|
45
|
+
`licence`, `attribution`, `sha256`; props reference files relative to
|
|
46
|
+
`--assets` (`"image": "dashboard.png"`). The ledger defaults to
|
|
47
|
+
`<dir>/assets.json` when `--ledger` is omitted. Preview, approve and render
|
|
48
|
+
repeat the same `--assets d --ledger f`. With no usable screenshot, build
|
|
49
|
+
truthful faux UI per `faux-ui.md`; do not imply it is a real product capture.
|
|
50
|
+
|
|
51
|
+
## 4. Sound (intent, then verified audio)
|
|
52
|
+
|
|
53
|
+
Choose silence, narration, music and effects for their narrative roles
|
|
54
|
+
(`craft-sound.md`); none is mandatory. For voice, record voice id and approved
|
|
55
|
+
script per base scene before synthesis. Check final audio against that script;
|
|
56
|
+
ASR is useful mismatch evidence, listening checks pronunciation and intent.
|
|
57
|
+
Neither proves the other. Time picture/captions against the actual waveform.
|
|
58
|
+
|
|
59
|
+
For a bed, record local file, actual license, intended level and edit/loop plan.
|
|
60
|
+
Repeat the same `--audio`, `--music`, `--music-volume`,
|
|
61
|
+
`--music-license` on audible preview, approve and render. Use supported CLI
|
|
62
|
+
flags only; a sound-design plan does not add new effect/mix controls.
|
|
63
|
+
See `voice.md` for the concrete audio contract.
|
|
64
|
+
|
|
65
|
+
## 5. Facts (sourced or placeholder)
|
|
66
|
+
|
|
67
|
+
At most eight facts and three numbers, with units and sources. Missing information
|
|
68
|
+
stays "placeholder" in the outline. Style preferences are not evidence for factual
|
|
69
|
+
claims, and an attractive composition cannot repair an unsupported number.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Craft card: color, light and material
|
|
2
|
+
|
|
3
|
+
Load when a theme recolor is being mistaken for a new art direction, accents
|
|
4
|
+
compete or texture obscures evidence. Color choices must serve a relationship.
|
|
5
|
+
|
|
6
|
+
## Start with values and roles
|
|
7
|
+
|
|
8
|
+
Describe the frame in light/dark masses before choosing hue. Establish the field,
|
|
9
|
+
primary subject, supporting information and signal color. Give accents semantic
|
|
10
|
+
jobs; a shared color can connect evidence across shots. Test without color so a
|
|
11
|
+
distinction does not depend only on hue. Several accents may be useful when the
|
|
12
|
+
data needs categories; justify and label them instead of enforcing one accent
|
|
13
|
+
as an aesthetic law. Inspect contrast over the actual background, including its
|
|
14
|
+
brightest and darkest moving regions.
|
|
15
|
+
|
|
16
|
+
Example: a warm signal moving through a cool network marks causality. Recoloring
|
|
17
|
+
every node on every shot erases that meaning. Next action: label each color's
|
|
18
|
+
job; remove or merge roles the viewer cannot explain.
|
|
19
|
+
|
|
20
|
+
## Write a color and light arc
|
|
21
|
+
|
|
22
|
+
Sketch the opening, turning point and ending as simple value/color fields.
|
|
23
|
+
Keep continuity where the argument continues; change the field when a shift
|
|
24
|
+
has meaning. Light can isolate form, reveal surface or connect spaces. Choose
|
|
25
|
+
direction, contrast and softness for that purpose; naming a cinematic light does
|
|
26
|
+
not create renderer support. Map to actual catalog/custom capabilities and test.
|
|
27
|
+
Flat graphic work can have a strong light/value structure without simulating 3D.
|
|
28
|
+
|
|
29
|
+
Example: evidence gradually occupies a quiet field until the final relationship
|
|
30
|
+
is visible. A dramatic dark-to-light change is one possible argument, not an
|
|
31
|
+
ending every film should repeat. Compare those three frames without copy.
|
|
32
|
+
|
|
33
|
+
## Treat texture as material, not repair
|
|
34
|
+
|
|
35
|
+
Choose paper, grain, glass, metal, a clean field or another surface because it
|
|
36
|
+
supports subject and tone. Test at final scale and during motion; fine texture
|
|
37
|
+
can shimmer or interfere with type. Add surface only after hierarchy works.
|
|
38
|
+
Record rights/provenance for actual texture assets; a descriptive reference is
|
|
39
|
+
not permission to ship its pixels. A theme sets tokens; original composition,
|
|
40
|
+
light and material behavior belong in native or authored scene realization.
|
|
41
|
+
|
|
42
|
+
## Applicability, counterexample and provenance
|
|
43
|
+
|
|
44
|
+
Contrast and non-color cues draw on
|
|
45
|
+
[WCAG 2.2](https://www.w3.org/TR/WCAG22/), verified 2026-11-06.
|
|
46
|
+
The value-script, light and material procedure is motion-kit craft synthesis,
|
|
47
|
+
not a licensed visual-style collection or tested quality guarantee. An ambient
|
|
48
|
+
art film may intentionally soften subject/background separation; essential
|
|
49
|
+
information still needs a readable presentation. Check: grayscale hierarchy,
|
|
50
|
+
actual motion, phone-width text and the intended narrative color relationship.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Craft card: composition, grids and depth
|
|
2
|
+
|
|
3
|
+
Load when a frame feels generic, crowded or directionless. A grid is a chosen
|
|
4
|
+
relationship system, not a requirement for a specific column count.
|
|
5
|
+
|
|
6
|
+
## Stage attention
|
|
7
|
+
|
|
8
|
+
Name the first thing the viewer must see, the supporting evidence and what may
|
|
9
|
+
wait. Give the first subject a clear advantage in scale, value, isolation or
|
|
10
|
+
placement; avoid making everything compete through all four. Place elements by
|
|
11
|
+
relationships: common edge, baseline, center, repeated interval, containment or
|
|
12
|
+
intentional asymmetry. Reserve negative space for reading and anticipated motion.
|
|
13
|
+
|
|
14
|
+
Example: an off-center diagram with a narrow explanatory margin lets an argument
|
|
15
|
+
grow along one axis. A centered headline over the same diagram may reduce its
|
|
16
|
+
working area. Sketch both as blocks before decorating. Check at thumbnail size:
|
|
17
|
+
can you point to the main subject immediately, and is that the intended subject?
|
|
18
|
+
|
|
19
|
+
## Design the system and its exceptions
|
|
20
|
+
|
|
21
|
+
Choose margins, alignment anchors, spacing relationships and one dominant scale
|
|
22
|
+
contrast for this film. Carry anchors across shots so change becomes legible.
|
|
23
|
+
Use full-bleed, inset, split, radial or another arrangement because it fits the
|
|
24
|
+
relationship. An exception earns attention because a system exists to depart
|
|
25
|
+
from. One centered composition is valid; centering every unrelated brief is a
|
|
26
|
+
habit to examine. Test longest text and densest evidence, not just a hero frame.
|
|
27
|
+
|
|
28
|
+
Next action: sketch the busiest and emptiest beats using the same anchors.
|
|
29
|
+
If neither fits, revise the system before implementing the remaining scenes.
|
|
30
|
+
|
|
31
|
+
## Use depth as information
|
|
32
|
+
|
|
33
|
+
Foreground/background separation, occlusion, scale and parallax can express
|
|
34
|
+
importance or spatial relation. Establish which plane the viewer should follow.
|
|
35
|
+
Keep essential labels readable when objects cross or crop; decorative depth
|
|
36
|
+
must not conceal evidence. A locked flat composition may communicate a technical
|
|
37
|
+
comparison better than a moving 3D camera. Art direction precedes adding depth.
|
|
38
|
+
|
|
39
|
+
For authored scenes, realize chosen layers and geometry in local HTML/CSS/JS;
|
|
40
|
+
seek-driven transforms can implement parallax. For actual 3D, verify the shipped
|
|
41
|
+
catalog/custom contract rather than promising unsupported model/camera controls.
|
|
42
|
+
Check a mid-transition frame, where occlusion is often worst.
|
|
43
|
+
|
|
44
|
+
## Applicability, counterexample and provenance
|
|
45
|
+
|
|
46
|
+
The attention, alignment and adaptive-layout principles draw on
|
|
47
|
+
[Apple HIG Layout](https://developer.apple.com/design/human-interface-guidelines/layout),
|
|
48
|
+
verified 2026-11-06. The film-specific examples and procedure are motion-kit
|
|
49
|
+
synthesis. UI layout guidance does not mandate a film's grid or cinematic crop.
|
|
50
|
+
An intentionally unstable composition may serve tension; prove orientation and
|
|
51
|
+
readability still meet that brief. Check actual delivery aspect and phone-width
|
|
52
|
+
stills; shrinking a desktop composition is not an adaptation strategy.
|