@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,34 @@
|
|
|
1
|
+
# Outline for the user (stage 4)
|
|
2
|
+
|
|
3
|
+
Send at most 200 words, including divergence, then wait for "go" or edits unless
|
|
4
|
+
the user already authorized proceeding (for example, "just do it"). Use the
|
|
5
|
+
constraints already supplied; the outline is a proposal, not a questionnaire.
|
|
6
|
+
Propose one direction and keep the alternative to one line; do not offer a menu
|
|
7
|
+
of templates, styles or knowledge choices.
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
Plan: <title>
|
|
11
|
+
Audience: <who> | Length: ~<N> s | Aspect: <aspect>
|
|
12
|
+
Idea: <the visual argument and intended viewer effect>
|
|
13
|
+
Visual system: <composition, type, color/material and motion decisions + why>
|
|
14
|
+
Sound: <silence/voice/music/effects and their role>
|
|
15
|
+
Route: <direct/authored/template or mixed; why it realizes this idea>
|
|
16
|
+
Alternative: <a materially different approach + when it would serve better>
|
|
17
|
+
Beats:
|
|
18
|
+
1. <message + what the viewer sees change>
|
|
19
|
+
2. <message + the visual/narrative turn>
|
|
20
|
+
3. <how the idea resolves>
|
|
21
|
+
Divergence: <meaningful differences from available prior work, or justified continuity>
|
|
22
|
+
Assumed/unresolved: <defaults, sourced-number gaps, capability or rights questions>
|
|
23
|
+
Go, or what should change?
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Beat count follows the argument and duration, not this example. Name scene types
|
|
27
|
+
only after capability mapping: `mk catalog <type>` for native components,
|
|
28
|
+
`authoring-scene.md` for original compositions, `mk template show <t>/<bp>` only
|
|
29
|
+
when a template is useful. Show how a design serves the brief rather than naming
|
|
30
|
+
a preset as its explanation. If recent work is unavailable, say so.
|
|
31
|
+
|
|
32
|
+
Direction approval authorizes drafting. Only explicit approval of the actual
|
|
33
|
+
preview authorizes full render, with the same assets/audio/mix inputs. With no
|
|
34
|
+
interactive user, return the outline and chosen route; never self-approve.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Edit by command (stage 9, validation fixes, structure and length)
|
|
2
|
+
|
|
3
|
+
Never rewrite `storyboard.json` by hand. Every edit is a command that validates the result and writes atomically; an invalid result is never written (the pointer errors are printed, exit 2). Any edit changes the approval hash: preview again and ask again.
|
|
4
|
+
|
|
5
|
+
| Need | Command |
|
|
6
|
+
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------ |
|
|
7
|
+
| Change wording, duration, a setting | `mk patch sb.json --ops fixes.json` (portable), or `--op '<json>'` in PowerShell 7 |
|
|
8
|
+
| Several changes at once | `mk patch sb.json --ops fixes.json` (a JSON array of ops; `--op` may follow it) |
|
|
9
|
+
| Add a scene | `mk scene add sb.json bullets --after intro --set title="Three things" --set 'items=["A","B"]' --duration 8` |
|
|
10
|
+
| Remove or reorder a scene | `mk scene remove sb.json <id>`, `mk scene move sb.json <id> --after <id>` (or `--first`) |
|
|
11
|
+
| Make it longer or shorter | `mk fit sb.json --seconds 40` |
|
|
12
|
+
|
|
13
|
+
`--op` with inline JSON works in PowerShell 7 because single quotes preserve it; under `cmd.exe` it is unreliable. Use `--ops fixes.json` for anything portable or multi-line.
|
|
14
|
+
|
|
15
|
+
## mk patch
|
|
16
|
+
|
|
17
|
+
RFC 6902 subset: `add`, `replace`, `remove`, `move` (`from`, `path`), `test`. Paths are JSON Pointers (`/scenes/0/props/title`); `-` appends to an array; `~1` is `/` and `~0` is `~`. Ops apply in order to a copy; the first op that cannot apply stops the patch and is named by index.
|
|
18
|
+
|
|
19
|
+
- A path into a missing parent fails with `parent "/scenes/9" does not exist`; `replace`/`remove` of a missing target fails with `target "..." does not exist`. Use `add` to create a key.
|
|
20
|
+
- `__proto__`, `constructor`, `prototype` and command-shaped keys (`command`, `argv`, `shell`, `filter`, `executable`, `env`) are refused in paths and values.
|
|
21
|
+
- The result goes through the full validator and lint. Output is at most 3 lines: `patch ok | 2 ops | changed /a, /b`, then `scenes 5 | total 25s | 0 errors, 1 warnings`, plus the first warning.
|
|
22
|
+
- Several changes that are only valid together (a longer text and a longer duration) belong in one patch.
|
|
23
|
+
|
|
24
|
+
Feedback to change, smallest first:
|
|
25
|
+
|
|
26
|
+
| Feedback | Change |
|
|
27
|
+
| --------------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
28
|
+
| Wording | `replace` the text under `/scenes/<i>/props/...` |
|
|
29
|
+
| Pacing | `replace` `/scenes/<i>/duration` (seconds; lint enforces reading time and minimum hold), or `mk fit` for the whole |
|
|
30
|
+
| Look | re-run `mk new` with another `--style`, or set `shot`, `move`, `ease`, `transition` on a scene (enums: `mk catalog`) |
|
|
31
|
+
| Structure | `mk scene add`, `remove` or `move`; overlays keep `over` pointing at an existing base scene id |
|
|
32
|
+
| Colours / brand | `themes/brand.json` and `meta.theme` (`free-storyboard.md`, `authoring-style.md`) |
|
|
33
|
+
|
|
34
|
+
## mk scene
|
|
35
|
+
|
|
36
|
+
- `add <type>` inserts a scene built from the catalog's minimal example (`mk catalog <type>` shows it). `--id` (default `<type>-<n>`), `--after <id>` (default: at the end), `--set k=v` (top-level prop; JSON when it parses, so `n=3`, `items=["a","b"]`, otherwise text; repeatable), `--duration <s>` (default: auto from the text).
|
|
37
|
+
- Overlay types (`lower-third`, `bug`, `progress`, `countdown`, `chapter`) need `--over <base scene id>`; `--offset <s>` is seconds into it, and the duration defaults to 3.
|
|
38
|
+
- Nested prop edits, or props the example does not show, go through `mk patch` afterwards.
|
|
39
|
+
- Output is one line: `scene add ok | bullets-1 (bullets) at 3/6 | total 33s | 0 errors, 0 warnings`.
|
|
40
|
+
|
|
41
|
+
## mk fit
|
|
42
|
+
|
|
43
|
+
`mk fit sb.json --seconds N` scales every base scene by one common factor so the total is N. The total is printed by `mk patch`, `mk fit`, `mk scene add` and `mk preview`; `mk validate` reports errors and warnings, not duration. Each scene stays inside its range: from the template's `pacing.json` (smallest to largest seconds for that scene type across short, standard and long), never under its reading time (3 words per second) or the 2 s minimum hold. Overlays scale with the scene they cover. It is deterministic and prints before and after on two lines.
|
|
44
|
+
|
|
45
|
+
- A typical blueprint stretches or shrinks by about 1.4x. From 25 s to 50 s is out of range: add scenes first (about one per 7 s), then `mk fit`.
|
|
46
|
+
- A refusal says why and writes nothing: `N s is over the X s these scenes can stretch to` means add scenes; `N s is under the X s these scenes need; reading time floors: <id> needs >= 8s to read (22 words)` means cut that scene's text or raise N.
|
|
47
|
+
- Without template provenance (`.mk/<name>/template.json`) the range is the floor up to 1.5x the current length.
|
|
48
|
+
- Run it after the structure is final; adding or removing a scene afterwards changes the total again.
|
|
49
|
+
|
|
50
|
+
Re-preview shows the same pack layout; compare against what the user already approved and tell them only what changed. Max 3 feedback rounds, then summarise the options and ask the user to choose.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Patterns — the decisions a strong model makes for you
|
|
2
|
+
|
|
3
|
+
Historical heuristics attributed to 2,462 works / 585 prompts (source-tree learning record, not shipped). That corpus and its quality/correlation claims are not independently qualified here. Load for a relevant design question; test suggestions against `direction.md` and the craft cards.
|
|
4
|
+
|
|
5
|
+
Tags: **[A]** tool diagnostic to review · **[B]** optional hypothesis · **[C]** judgement. Inspect actual validation severity and preserve required native contracts; artistic heuristics are not universal engine rules.
|
|
6
|
+
|
|
7
|
+
## Say values, not adjectives
|
|
8
|
+
|
|
9
|
+
- **[B]** Make implementation decisions concrete: hex for colour, px for spacing, seconds or ms for duration, BPM when tempo matters. Values make a design reproducible; no measured correlation with quality is established here, and rationale still matters.
|
|
10
|
+
- **[B]** Name the habits that would weaken this idea and why. This gives more actionable guidance than praise alone; it is not evidence that prohibition always improves a result.
|
|
11
|
+
- **[B]** Keep the brief focused on decisions. The historical source suggests roughly 1,000 characters; use the length needed to preserve facts and resolve ambiguity rather than a universal quota.
|
|
12
|
+
|
|
13
|
+
## Length
|
|
14
|
+
|
|
15
|
+
- **[B]** A 24 s sketch is one compact starting point. The source reports 53 % under 40 s and 23 % under 20 s in its selected work; those unqualified proportions do not establish the right duration for a new brief.
|
|
16
|
+
- **[B]** Try 3-6 beats with clear jobs for a compact explanation. A long take or a larger sequence can fit a different argument; scene count is not capped by this heuristic.
|
|
17
|
+
|
|
18
|
+
## Six sections, in order
|
|
19
|
+
|
|
20
|
+
`inputs` → `direction` → `structure` → `build` → `gotchas` → `start`
|
|
21
|
+
|
|
22
|
+
This is an optional organization pattern: `inputs` asks for missing audience, length, aspect, brand and source data. `direction` records the visual argument and its reasons, with exclusions where useful. `structure` is the beat map. `build` is `seek(t)` only. `gotchas` names what will look wrong here. `start` shows the outline and stops at the user gate.
|
|
23
|
+
|
|
24
|
+
## Habits to question
|
|
25
|
+
|
|
26
|
+
Full list: `slop.md`.
|
|
27
|
+
|
|
28
|
+
bouncy easing · particle bursts · glows · gradients on chrome · mismatched icon strokes · unchosen dead time · template look · crowded lines · stock-photo hands. Each can be purposeful in context; examine fit instead of applying a blanket visual ban.
|
|
29
|
+
|
|
30
|
+
## Rhythm
|
|
31
|
+
|
|
32
|
+
- **[B]** At 120 BPM in 4/4 a bar is 2 s, so 24 s is 12 bars (`mk fit --bpm 120 --bars 12`). This is an arithmetic example, not a required tempo; speech, silence or slow cinema may need a different rhythm.
|
|
33
|
+
- **[A]** Review `flat-motion` diagnostics against the intended action and hold. Deliberate stillness can be the right beat.
|
|
34
|
+
- **[A]** A run of static scenes can trigger `flat-motion`. Inspect reading load and intent before adding a `move`; gratuitous camera travel does not improve a deliberate rest.
|
|
35
|
+
- **[A]** Review `hold-after-accent` and its suggested ≥ 3 s hold against the actual accent, reading and narration; inspect the validator's real severity rather than treating the number as a taste law.
|
|
36
|
+
|
|
37
|
+
## Motion
|
|
38
|
+
|
|
39
|
+
- **[B]** The source's median 10-frame move (0.33 s) and oversize decelerating entry suggest one energetic vocabulary. Try a slower move or growth from zero when distance, material or emergence calls for it.
|
|
40
|
+
- **[B]** Coherent easing can connect a sequence. Multiple families or springs can express contrasting materials or actions when the direction explains the difference.
|
|
41
|
+
- **[A]** Review `linear-ease` diagnostics. A meter, mechanical action, progress, countdown or chart may warrant constant speed; inspect actual supported props and severity.
|
|
42
|
+
- **[B]** The source suggests motion-led cuts every 0.3-2.3 s and 0.6-1.4 s end holds. Cuts on rest, long holds and other tempos can serve the brief; preview reading and closure rather than adopting these ranges automatically.
|
|
43
|
+
- **[C]** If it loops, the last frame equals the first — cursor included.
|
|
44
|
+
|
|
45
|
+
## Before the full render
|
|
46
|
+
|
|
47
|
+
- **[A]** One still per beat: `mk still storyboard.json --at <beats>`. Fix cramped or off-grid frames there, never after.
|
|
48
|
+
|
|
49
|
+
## Self-check before `mk validate`
|
|
50
|
+
|
|
51
|
+
1. Can a viewer repeat the point after one viewing?
|
|
52
|
+
2. Do the accents establish a clear hierarchy? Multiple accents may encode meaningful groups; one is not a universal limit.
|
|
53
|
+
3. Does every number have a source?
|
|
54
|
+
4. Does anything move without a reason?
|
|
55
|
+
5. Does the last frame land, or just stop?
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Quality bar: what to check before you ask
|
|
2
|
+
|
|
3
|
+
The engine proves structure: schema, props, timing, lint, hashes. It cannot prove that the film is clear or worth watching. Review against `direction.md` and its intended viewer effect, using `craft-critique.md` for the evidence and revision method, and `critique-repair.md` for a time-located finding and its recheck. Look at actual frames rather than trusting the exit code.
|
|
4
|
+
|
|
5
|
+
## Inspect in this order
|
|
6
|
+
|
|
7
|
+
1. Open `<pack>/contact.png` at full size. Use the sheet for sequence and consistency, never for legibility.
|
|
8
|
+
2. Open each still at delivery size (`stills/`). Check the busiest and the emptiest frame, not only the hero.
|
|
9
|
+
3. Inspect a still at the intended small-screen size (about 390 px is one useful phone-width check). If the headline or diagram cannot be read, adapt its grouping/scale for that delivery condition.
|
|
10
|
+
4. Compare the first and last still. The opening must earn attention; the close must land, not merely stop.
|
|
11
|
+
5. Watch available motion at normal speed, then inspect the start, middle and settle of the hardest action and two transitions. Compare their timing with the intended beat table; stills alone cannot prove motion.
|
|
12
|
+
6. Listen to actual audible output when sound is in scope. Read `preview.json` for coverage, scene/still timings, lint and estimate. Record reviewed ranges and unpreviewed scenes, motion or audio. If the clip was skipped, say that only stills are available; never score unheard sound as passing.
|
|
13
|
+
|
|
14
|
+
If you cannot see images, say so. Read `preview.json`, ask the user to open the pack, and do not claim you inspected it.
|
|
15
|
+
|
|
16
|
+
## Ten checks
|
|
17
|
+
|
|
18
|
+
| # | Check | Pass looks like |
|
|
19
|
+
| --- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
20
|
+
| 1 | Visual argument | Each beat advances a clear intention; a continuous authored scene may contain several related beats |
|
|
21
|
+
| 2 | Opening | Attention has a deliberate subject; speed and restraint fit the intended channel and tone |
|
|
22
|
+
| 3 | Hierarchy | The eye knows where to start; information roles have purposeful differences in scale, weight or placement |
|
|
23
|
+
| 4 | Legibility | Essential words and evidence remain readable at delivery size through the actual motion; no clipping/accidental overlap |
|
|
24
|
+
| 5 | Line breaks | Breaks preserve meaning and rhythm; longest real copy fits without squeezing it into an unreadable block |
|
|
25
|
+
| 6 | Contrast | Text survives the theme; AA is the floor, not the target; the accent also survives grayscale/CVD or carries a second channel |
|
|
26
|
+
| 7 | Art direction | Color/material/type choices reinforce the concept; useful complexity is distinguished from decorative habit |
|
|
27
|
+
| 8 | Motion with a purpose | Movement or stillness serves meaning; staging, continuity, overlap and rest make the important change legible |
|
|
28
|
+
| 9 | Rhythm | Orientation, change and reading holds fit the actual message, narration and sound; cuts have narrative reasons |
|
|
29
|
+
| 10 | Truth | Every number has a source; no invented stat, logo, quote or customer |
|
|
30
|
+
|
|
31
|
+
Use measurements as local checks, not universal aesthetic laws. Inspect real reading conditions, aspect/crop and platform overlays. Name the reference principle and purposeful divergence; do not turn a reference film into a layout to copy.
|
|
32
|
+
|
|
33
|
+
## Score the preview
|
|
34
|
+
|
|
35
|
+
Use a 1-5 local rubric; it is a conversation aid, not an industry benchmark.
|
|
36
|
+
|
|
37
|
+
| Score | Meaning |
|
|
38
|
+
| ----- | ------------------------------------------------------------- |
|
|
39
|
+
| 1 | Placeholder: wrong, unreadable, or visibly broken |
|
|
40
|
+
| 2 | Works but generic; the point is present, the craft is not |
|
|
41
|
+
| 3 | Clear and competent; a viewer gets it once |
|
|
42
|
+
| 4 | Deliberate: hierarchy, rhythm and surface reinforce the point |
|
|
43
|
+
| 5 | Distinctive: the treatment is inseparable from the message |
|
|
44
|
+
|
|
45
|
+
Score reviewed dimensions: message, hierarchy, craft, motion, sound. Mark unreviewed or inapplicable dimensions N/A and explain; a still cannot establish a motion score, and unheard audio cannot establish a sound score. Fix every known 1 before asking. Improve the weakest observed dimension rather than adding decoration. Name any 2 and missing review evidence in the ask; the local score is not a professional-quality certification.
|
|
46
|
+
|
|
47
|
+
## Fix in this order
|
|
48
|
+
|
|
49
|
+
1. Broken or untrue: clipping, overlap, invented data, unreadable contrast.
|
|
50
|
+
2. The idea: no clear intention, competing attention, or a relationship the viewer cannot infer.
|
|
51
|
+
3. Structure: the beat order, a missing setup, a close that does not land.
|
|
52
|
+
4. Hierarchy and scale: type too small, too many equal weights, a hero number spent twice.
|
|
53
|
+
5. Timing: dead holds, cuts on rest, a scene that ends before it is read.
|
|
54
|
+
6. Surface: colour, texture, decoration, effects.
|
|
55
|
+
7. Sound: plan it with the direction and review it with picture; fix intelligibility and timing before decorative effects.
|
|
56
|
+
|
|
57
|
+
## When it still looks weak
|
|
58
|
+
|
|
59
|
+
Try one move at a time, then re-preview: shorten the copy, enlarge the headline, remove one element, split the beat, change the theme, or add a purposeful camera move. Do not add glow, particles or gradients to compensate for a weak composition.
|
|
60
|
+
|
|
61
|
+
Never call a preview "final", "premium" or "AAA". Say what the preview shows, what it does not, and what the render will add.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Review before asking (stage 8)
|
|
2
|
+
|
|
3
|
+
- **Continuity table first:** beat | start | length | surface/identity | cue. Flag any surface, palette or identity change you did not choose. A dark closing card from the `outro` type is its own palette, not a theme reset.
|
|
4
|
+
- **Look at the stills at delivery size and at phone width** (390 px or a 9:16 crop). The contact sheet is a map, not a review: dense diagrams are only readable in the still.
|
|
5
|
+
- **Transitions:** sample start, middle and end. A cut is fine; an unexplained morph is not.
|
|
6
|
+
- **Holds:** a settled poster may hold on purpose; a frozen frame may not. Say which one it is.
|
|
7
|
+
- **Record what you did not see** (clip budget, no voice/music, no phone still, no transition sample) in the approval ask.
|
|
8
|
+
- **Never claim what a hash cannot prove:** lint, hashes and exit codes are not quality; a voice-match claim needs approved samples, and a final-render claim needs a final render.
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
# Scene recipes: message first, then props
|
|
2
|
+
|
|
3
|
+
`mk catalog` is the authority: run `mk catalog <type>` before using a type. The snippets below are valid `props` shapes to copy, not limits. Set `duration` and `move` on every base scene; one idea per scene, and two ideas means two scenes. If the catalog does not settle a design question, use `knowledge-routing.md`.
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{ "id": "beat-1", "type": "<type>", "duration": 5, "move": "push-in", "ease": "out", "props": {} }
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Pick by the shape of the message
|
|
10
|
+
|
|
11
|
+
| The beat is | Use | Avoid |
|
|
12
|
+
| ----------------------------------------- | --------------------------------------- | --------------------------------------- |
|
|
13
|
+
| A hook, claim or section opener | `title`, `poster`, `kinetic`, `sticker` | `bullets` for one claim |
|
|
14
|
+
| One number that carries the point | `stat` | `chart` for a single value |
|
|
15
|
+
| Two to six numbers at a glance | `kpi-grid` | a wall of `stat` scenes |
|
|
16
|
+
| Trend, ranking or share | `chart` | `table` when the shape is the message |
|
|
17
|
+
| Exact values, a small ranked list | `table` | `chart` for two rows |
|
|
18
|
+
| An ordered procedure | `steps` | `flow` for a straight sequence |
|
|
19
|
+
| A system, dependencies or a decision path | `flow` | `timeline` when nothing is dated |
|
|
20
|
+
| Before/after, two options | `compare` | two separate `bullets` scenes |
|
|
21
|
+
| Features, benefits or categories | `icon-grid` | `bullets` with invented icons |
|
|
22
|
+
| History, roadmap, now/next | `timeline` | `steps` for dates |
|
|
23
|
+
| A quotation with attribution | `quote` | `callout` with a name |
|
|
24
|
+
| One rule, formula, definition or warning | `callout` | `bullets` for one sentence |
|
|
25
|
+
| A real screenshot or photo | `media-frame` | `scene3d` for a real screenshot |
|
|
26
|
+
| Code, terminal output or a diff | `code` | plain `bullets` |
|
|
27
|
+
| A product or object in 3D | `scene3d` | `media-frame` when the object must turn |
|
|
28
|
+
| An audio shape | `waveform` | `chart` for peaks |
|
|
29
|
+
| A name, logo, chapter, count or progress | an overlay | a whole base scene for a small chip |
|
|
30
|
+
| The close | `outro` | a second `title` at the end |
|
|
31
|
+
|
|
32
|
+
## Openers
|
|
33
|
+
|
|
34
|
+
**`title`**: opening or section card; optional kicker and subtitle.
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"kicker": "Architecture",
|
|
39
|
+
"title": "How a request reaches the data",
|
|
40
|
+
"subtitle": "Four services, one public door"
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**`hero`**: landing-page hero with `[x]` accents, up to 4 glass tiles.
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"kicker": "New",
|
|
49
|
+
"title": "Design at the [speed] of thought",
|
|
50
|
+
"subtitle": "One line of support",
|
|
51
|
+
"layout": "bento"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**`poster`**: 1-3 oversized lines; the last line can be outline type.
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{ "lines": ["Make it", "move"], "outline": true, "foot": "A short foot note" }
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**`kinetic`**: one word or phrase per beat; use for hooks and rules of three. `emphasis` is the 1-based beat to accent.
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{ "words": ["Plan", "Build", "Ship"], "mode": "slam", "emphasis": 3 }
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**`sticker`**: pop-comic slam for myth-vs-fact and punchy shorts.
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{ "words": ["Myth", "Busted"], "burst": true }
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Evidence
|
|
74
|
+
|
|
75
|
+
**`stat`**: one hero number that counts up.
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"value": 120,
|
|
80
|
+
"unit": "ms",
|
|
81
|
+
"label": "median response",
|
|
82
|
+
"delta": "-18%",
|
|
83
|
+
"context": "measured last quarter"
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**`kpi-grid`**: 2-6 headline numbers side by side; `trend` is `up|down|flat`, `good` is `up|down`, `trend` needs `delta`, and `good` needs `trend`.
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"title": "Quarter at a glance",
|
|
92
|
+
"items": [
|
|
93
|
+
{ "value": "$4.2M", "label": "Revenue", "delta": "+12%", "trend": "up" },
|
|
94
|
+
{
|
|
95
|
+
"value": 86,
|
|
96
|
+
"unit": "%",
|
|
97
|
+
"label": "Retention",
|
|
98
|
+
"delta": "-2 pts",
|
|
99
|
+
"trend": "down",
|
|
100
|
+
"good": "down"
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**`chart`**: bar, line or donut for ranking, trend or share. `bar` and `donut` need `data`; `line` needs `x` and `series`; `highlight` is a 0-based data index.
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"kind": "bar",
|
|
111
|
+
"title": "Signups by channel",
|
|
112
|
+
"unit": "signups",
|
|
113
|
+
"data": [
|
|
114
|
+
{ "label": "Search", "value": 420 },
|
|
115
|
+
{ "label": "Referral", "value": 310 },
|
|
116
|
+
{ "label": "Social", "value": 190 }
|
|
117
|
+
],
|
|
118
|
+
"highlight": 0
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**`table`**: 2-5 columns, 2-8 rows, one highlighted row.
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"title": "Top regions",
|
|
127
|
+
"columns": ["Region", "Revenue"],
|
|
128
|
+
"rows": [["North", "$4.2M"], ["South", "$3.1M"]],
|
|
129
|
+
"rank": true,
|
|
130
|
+
"highlight": 0
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Explanation
|
|
135
|
+
|
|
136
|
+
**`bullets`**: 1-6 short points; marker `dot`, `check`, `cross` or `number`.
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"title": "Three rules",
|
|
141
|
+
"items": ["One idea per scene", "Six words per line", "One accent only"],
|
|
142
|
+
"marker": "check"
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**`flow`**: 2-8 nodes and the arrows between them; `direction` is `lr` or `tb`.
|
|
147
|
+
|
|
148
|
+
```json
|
|
149
|
+
{
|
|
150
|
+
"direction": "lr",
|
|
151
|
+
"nodes": [
|
|
152
|
+
{ "id": "client", "label": "Client" },
|
|
153
|
+
{ "id": "api", "label": "API gateway" },
|
|
154
|
+
{ "id": "db", "label": "Database" }
|
|
155
|
+
],
|
|
156
|
+
"edges": [
|
|
157
|
+
{ "from": "client", "to": "api", "label": "request" },
|
|
158
|
+
{ "from": "api", "to": "db", "label": "query" }
|
|
159
|
+
]
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**`steps`**: ordered path, ladder or stairs; use `ladder` for pricing and levels.
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
{
|
|
167
|
+
"title": "How it works",
|
|
168
|
+
"layout": "path",
|
|
169
|
+
"steps": [
|
|
170
|
+
{ "label": "Write", "detail": "One brief" },
|
|
171
|
+
{ "label": "Preview", "detail": "One pack" },
|
|
172
|
+
{ "label": "Render", "detail": "One yes" }
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**`timeline`**: 2-7 dated items with `done`, `now` or `next`; `orient` is `h` or `v`.
|
|
178
|
+
|
|
179
|
+
```json
|
|
180
|
+
{
|
|
181
|
+
"title": "Roadmap",
|
|
182
|
+
"orient": "h",
|
|
183
|
+
"items": [
|
|
184
|
+
{ "when": "Q1", "label": "Beta", "state": "done" },
|
|
185
|
+
{ "when": "Q2", "label": "Launch", "state": "now" },
|
|
186
|
+
{ "when": "Q3", "label": "Scale", "state": "next" }
|
|
187
|
+
]
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**`callout`**: one big statement; `kind` is `formula`, `statement`, `definition`, `warning` or `tip`. Use `formula` for an equation, `statement` for a claim or rule, `definition` for a term, `warning` for a risk, `tip` for advice.
|
|
192
|
+
|
|
193
|
+
```json
|
|
194
|
+
{ "text": "[Profit] = [Revenue] − [Costs]", "kind": "formula", "label": "The rule" }
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**`code`**: up to 14 lines; `+` and `-` prefixes show a diff; `highlight` is an array of 1-based line numbers.
|
|
198
|
+
|
|
199
|
+
```json
|
|
200
|
+
{
|
|
201
|
+
"lang": "js",
|
|
202
|
+
"file": "total.js",
|
|
203
|
+
"lines": ["const total = price * 2", "- old line", "+ new line"],
|
|
204
|
+
"highlight": [1]
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Contrast and voice
|
|
209
|
+
|
|
210
|
+
**`compare`**: two options, 1-5 points each, one winner.
|
|
211
|
+
|
|
212
|
+
```json
|
|
213
|
+
{
|
|
214
|
+
"title": "Before and after",
|
|
215
|
+
"left": { "label": "Before", "points": ["Manual", "Slow"] },
|
|
216
|
+
"right": { "label": "After", "points": ["Automated", "Fast"] },
|
|
217
|
+
"winner": "right",
|
|
218
|
+
"verdict": "Automation wins on repeat work"
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**`quote`**: testimonial with attribution; `rating` is 1-5.
|
|
223
|
+
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"quote": "It explained the whole system in twenty seconds.",
|
|
227
|
+
"name": "Alex Kim",
|
|
228
|
+
"role": "CTO",
|
|
229
|
+
"rating": 5
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Visual
|
|
234
|
+
|
|
235
|
+
**`icon-grid`**: 2-8 icon cards; get names from `mk icon search`.
|
|
236
|
+
|
|
237
|
+
```json
|
|
238
|
+
{
|
|
239
|
+
"title": "Why teams switch",
|
|
240
|
+
"items": [
|
|
241
|
+
{ "icon": "zap", "label": "Fast setup" },
|
|
242
|
+
{ "icon": "shield", "label": "Secure" },
|
|
243
|
+
{ "icon": "globe", "label": "Global" }
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**`media-frame`**: a real local image, bare or in a browser/phone/laptop frame. Import it, then point `image` at the file relative to `--assets`:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
mk assets import src/dashboard.png --dir assets --ledger assets.json --licence CC0-1.0 --source-url <url>
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
```json
|
|
255
|
+
{
|
|
256
|
+
"image": "dashboard.png",
|
|
257
|
+
"device": "browser",
|
|
258
|
+
"title": "The dashboard",
|
|
259
|
+
"callouts": [{ "x": 30, "y": 40, "label": "Start here" }]
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Pass the same `--assets assets --ledger assets.json` to build, preview, approve and render. Up to 3 callouts; `x`/`y` are percentages 0-100; `label` is at most 24 characters.
|
|
264
|
+
|
|
265
|
+
**`scene3d`**: a WebGL diorama; it falls back to flat 2D without WebGL. 3D output is machine/GPU stable, not portable.
|
|
266
|
+
|
|
267
|
+
```json
|
|
268
|
+
{ "title": "Orbit", "post": "cinematic", "light": "studio", "material": "metal", "hdri": "studio" }
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
**`waveform`**: 16-128 precomputed peaks, 0-1; never decode audio into the board.
|
|
272
|
+
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"label": "Intro",
|
|
276
|
+
"peaks": [0.2, 0.4, 0.6, 0.8, 0.6, 0.4, 0.3, 0.5, 0.7, 0.9, 0.7, 0.5, 0.4, 0.3, 0.2, 0.1]
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## Overlays
|
|
281
|
+
|
|
282
|
+
All overlays need `"layer": "overlay"`, `"over": "<base id>"`, `"duration"` and no `transition`.
|
|
283
|
+
|
|
284
|
+
| Type | Props | Use for |
|
|
285
|
+
| ------------- | ------------------------------------------------------ | ----------------------------- |
|
|
286
|
+
| `lower-third` | `{ "name": "Ada Lovelace", "title": "Mathematician" }` | a name plate |
|
|
287
|
+
| `bug` | `{ "text": "ACME", "position": "top-right" }` | a corner word mark or logo |
|
|
288
|
+
| `progress` | `{ "scope": "timeline", "label": "Progress" }` | a thin progress bar |
|
|
289
|
+
| `countdown` | `{ "from": 3, "to": 1 }` | a countdown |
|
|
290
|
+
| `chapter` | `{ "number": 1, "label": "How it works" }` | a numbered chapter chip |
|
|
291
|
+
| `caption` | `{ "text": "Automation wins on repeat work." }` | karaoke or full-text captions |
|
|
292
|
+
|
|
293
|
+
For `caption`, `words` (voice timings) is better than `text`; `mk captions` builds the overlay ops from a voice manifest.
|
|
294
|
+
|
|
295
|
+
## Before you write
|
|
296
|
+
|
|
297
|
+
- `mk catalog <type>` shows the exact fields, limits and a minimal example.
|
|
298
|
+
- `mk catalog` (no type) shows all 28 types and their required fields.
|
|
299
|
+
- One accent per scene, at most six words per line, and preferably no more than two overlays on one base scene; lint warns at three simultaneous overlays.
|
|
300
|
+
- If the message needs two of these shapes, split it into two scenes.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Setup: voice and consumer install
|
|
2
|
+
|
|
3
|
+
## Voice (opt-in)
|
|
4
|
+
|
|
5
|
+
Engine renders silent without voice. For narration, set up the voice venv once:
|
|
6
|
+
|
|
7
|
+
1. Install Python 3.12 from https://www.python.org/downloads/ (check Add to PATH). `py -3.12 --version` must say 3.12.x (3.14 is too new for TTS wheels).
|
|
8
|
+
2. Install espeak-ng from https://github.com/espeak-ng/espeak-ng/releases (.msi), then `setx PHONEMIZER_ESPEAK_LIBRARY "C:\Program Files\eSpeak NG\libespeak-ng.dll"`.
|
|
9
|
+
3. `py -3.12 -m venv .venv-voice`, then `.venv-voice\Scripts\activate`, then `pip install kokoro==0.9.4 soundfile==0.14.0 faster-whisper==1.2.1`.
|
|
10
|
+
4. `mk doctor` shows `python-venv`/`espeak`/`kokoro`/`faster-whisper` as ok (voice-only rows; they never fail the exit code).
|
|
11
|
+
|
|
12
|
+
## Consumer install + doctor
|
|
13
|
+
|
|
14
|
+
Run the installed package; no checkout is needed. Fixes: hyperframes pin 0.8.212; icons `icons.json`; templates `import.meta.url`; fonts woff2 + OFL; bin `dist/main.js`.
|
|
15
|
+
|
|
16
|
+
`mk doctor` has 18 rows: node, pnpm, ffmpeg, ffprobe, hyperframes, chrome-headless-shell, gpu, python, python-venv, espeak, kokoro, faster-whisper, fonts, icons, templates, bin, catalog, skills. The trailing line counts statuses (for example `17 ok, 1 usable`), not rows. Vendored hint `reinstall @anvpx/motion`. `--fix` only `npx hyperframes browser ensure`; rest hint-only, exits unchanged.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# What never ships
|
|
2
|
+
|
|
3
|
+
Historical style heuristics attributed to a skill built on 53 frame-measured moments and rejected AI films. The underlying corpus and measurements are not qualified by this package. Use the observations to question an unchosen habit, not to define a permissible style.
|
|
4
|
+
|
|
5
|
+
These are style defaults and judgement calls, not engine rules: when the brief earns one of these deliberately, it is allowed — name the exception and its reason in the outline instead of following the list mechanically.
|
|
6
|
+
|
|
7
|
+
## Examine unchosen defaults
|
|
8
|
+
|
|
9
|
+
1. **Page chrome:** a name in a corner, counters ("02 / 05"), timecodes, progress bars, corner brackets.
|
|
10
|
+
2. **Deck layouts:** a held left headline, a kicker above a headline, headline-left/device-right.
|
|
11
|
+
3. **Generic UI:** a rounded card with a status dot and "label . value", skeleton bars, invented numbers.
|
|
12
|
+
4. **The name's first association:** stars for a star, a rocket for "launch".
|
|
13
|
+
5. **Invented stats**, stat walls, on-screen disclaimers.
|
|
14
|
+
6. **Slogan copy:** "Not just X. It's Y.", "Unlock", "Meet X", "the future of".
|
|
15
|
+
7. **The house style as default:** a giant cropped word, a colour-flood wipe, a dot becoming the logo.
|
|
16
|
+
8. **A flat swatch ground per scene**, or a small card on a void.
|
|
17
|
+
9. **A pinned object** at the same coordinates through three shots.
|
|
18
|
+
10. **A web-footer ending:** logo + tagline + button + URL.
|
|
19
|
+
11. **Self-certification:** claiming a gate passed without quoting its number.
|
|
20
|
+
12. **A film you did not look at.**
|
|
21
|
+
|
|
22
|
+
## Historical motion hypotheses
|
|
23
|
+
|
|
24
|
+
These source-specific observations are starting points for a short, energetic treatment, not measured laws of animation. Their counts and ranges have not been independently reproduced here; preview alternatives against the direction.
|
|
25
|
+
|
|
26
|
+
- The source reports a median move of **10 frames (0.33 s)** and travel concentrated in the first 4-8 frames. Longer movement may be necessary for distance, weight or reading.
|
|
27
|
+
- Decelerating arrivals and accelerating exits can make a hand-off decisive. Spring count follows material and meaning rather than a per-film quota.
|
|
28
|
+
- The source reports **3,392 transform entries against 584 opacity fades**. That ratio does not disqualify a dissolve, atmospheric fade or a film built around opacity.
|
|
29
|
+
- An oversize arrival (the source's logo example starts around 3.5x) can express force. Growth from zero can instead communicate emergence when that is the intended idea.
|
|
30
|
+
- A living detail can sustain a held frame. Complete stillness and rest can also give information or emotion time to land.
|
|
31
|
+
- The source's **0.3-2.3 s cuts on motion** suit one pacing vocabulary. Cuts on rest, long takes and slow cinema remain valid choices.
|
|
32
|
+
- The source's **0.6-1.4 s end hold** and shrinking ending are options. Reading load, sound and narrative closure determine the actual hold and scale.
|
|
33
|
+
|
|
34
|
+
## Type sizes, as a fraction of frame height
|
|
35
|
+
|
|
36
|
+
Optional source examples: headline 7-11 % (9 typical) · support 5-7 % · hero number 22-29 % · wordmark 0.22-0.38 of width. They are not engine limits; choose and preview a hierarchy for the actual words, aspect and viewing conditions.
|
|
37
|
+
|
|
38
|
+
## Fix order when it looks wrong
|
|
39
|
+
|
|
40
|
+
broken or untrue → the idea → connections between beats → hierarchy and scale → timing → surface → sound.
|