@leotang92/dsh-claude-motion 0.0.0-stage → 0.1.0

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.
Files changed (33) hide show
  1. package/LICENSE +27 -0
  2. package/NOTICE.md +25 -0
  3. package/README.md +21 -2
  4. package/cordis.patch.yml +7 -0
  5. package/docs/DETAIL.md +32 -0
  6. package/docs/DETAIL.zh.md +17 -0
  7. package/icon.svg +8 -0
  8. package/lib/client.js +1800 -0
  9. package/lib/index.js +878 -0
  10. package/locale/en.json +7 -0
  11. package/locale/zh.json +7 -0
  12. package/package.json +69 -4
  13. package/skills/claude-motion/SKILL.md +689 -0
  14. package/skills/claude-motion/artifact-type/reference/by-hand.md +84 -0
  15. package/skills/claude-motion/artifact-type/reference/film-api.md +278 -0
  16. package/skills/claude-motion/artifact-type/reference/finalize.md +213 -0
  17. package/skills/claude-motion/artifact-type/reference/motion.md +260 -0
  18. package/skills/claude-motion/artifact-type/reference/plan.md +239 -0
  19. package/skills/claude-motion/artifact-type/reference/questions.md +240 -0
  20. package/skills/claude-motion/artifact-type/reference/recreate-ui.md +140 -0
  21. package/skills/claude-motion/artifact-type/reference/render-offline.md +126 -0
  22. package/skills/claude-motion/artifact-type/reference/rough-cut.md +251 -0
  23. package/skills/claude-motion/artifact-type/reference/sound.md +106 -0
  24. package/skills/claude-motion/artifact-type/reference/styles.md +230 -0
  25. package/skills/claude-motion/artifact-type/reference/walkthrough.md +83 -0
  26. package/skills/claude-motion/scripts/artifact.mjs +8390 -0
  27. package/skills/claude-motion/scripts/editor/artifact-type/anthropicons-fizzy-lake-DtzHkSJH.woff2 +0 -0
  28. package/skills/claude-motion/scripts/editor/artifact-type/app.css +1 -0
  29. package/skills/claude-motion/scripts/editor/artifact-type/app.js +17230 -0
  30. package/skills/claude-motion/scripts/editor/index.html +145 -0
  31. package/skills/claude-motion/scripts/editor/local-host.js +12 -0
  32. package/skills/claude-motion/scripts/editor/share-ui.js +208 -0
  33. package/skills/claude-motion/scripts/editor/third-party-licenses.txt +970 -0
@@ -0,0 +1,83 @@
1
+ # Walkthrough films — the slower, explanatory flavor
2
+
3
+ For "show me how this flow works" pieces (a single flow 35–50 s; a
4
+ multi-flow story up to 3–4 min) the tone is focused:
5
+ deliberate, one speed, generous holds, an eased camera with a
6
+ spotlight, an honest cursor, caption chips, chapters. Same cut contract,
7
+ same kit, same rules — only the tempo and a few extra devices change.
8
+
9
+ ## Story first: chapters → beats
10
+
11
+ Write it before any code. Per flow: who wants what (a fictional persona
12
+ and a one-line need, first person, ≤12 words), the 4–8 UI beats that
13
+ show it — each beat = ONE region of interest + ONE action + at most one
14
+ caption or mark — the line worth saying afterwards, and a closing recap.
15
+ A beat you can't caption in four words is two beats; anything that
16
+ doesn't move the story goes. Chapters become `window.CUT.chapters`
17
+ (their titles are verbs: "Start from an app", "Share it").
18
+
19
+ ## House numbers (defaults; every one was tuned in review)
20
+
21
+ - Camera moves 0.55–1.2 s, eased `cubic-bezier(.22,.7,.24,1)` for
22
+ arrivals and `(.45,0,.2,1)` for repositioning. **Hold 1.4–2.2 s** on
23
+ every point of interest before anything else happens; if in doubt add
24
+ 0.4 s. The window rests at ~92 % of the stage but rests rarely:
25
+ **every beat zooms 1.6–2.4×** onto its region; never sit on the full
26
+ window longer than ~1.2 s. Drift 1–2 % on holds.
27
+ - Cursor travel 0.5–0.9 s on arced paths, a visible 200–300 ms settle
28
+ on the target, then the click; hover tint from arrival. Cross-fades
29
+ 350–600 ms; menus 160–200 ms from their anchor. Nothing snaps, nothing
30
+ teleports.
31
+ - **Spotlight**: a mask on `kit.fx` that dims everything outside a
32
+ rounded region to ~55 % — `kit.spotlight(rect, amount, {pad: 24,
33
+ radius: 28})` inside `render`, with `amount` eased from t (0.5–0.8
34
+ for context beats, 1.0 for "look exactly here"; lerp the rect to glide
35
+ between nearby regions, fade-jump-fade between distant ones). Off
36
+ during typing and streaming beats.
37
+ - **Caption chips**: `kit.chip(text, {x, y, anchor: [ax, ay]})` in
38
+ `init` → a 26 px white pill (pass `style: 'font-family:…'` for your
39
+ font asset) with a 1.5 px leader line and anchor
40
+ dot to the thing it names; `kit.show(chip, t, tIn, tOut)` in
41
+ `render`. Place it in the dimmed area — never over the region — on
42
+ screen ≥1.2–1.6 s. Labels, not sentences ("Pinned for you"), ≤6
43
+ words, never "successfully". A tooltip and a caption never say the
44
+ same thing.
45
+ - **Chapter title slide**: a breathing cut-paper number quad in the
46
+ accent, a 96 px display headline fading from the right (60 ms word
47
+ stagger, 34 px drift), a 40 px subhead; 2.4–3.2 s. Then the quad **morphs into
48
+ the UI window** (1.1–1.2 s) while the screen fades up inside it — no
49
+ hard cuts from slides into UI.
50
+ - **Personas** (multi-flow only): a 220 px flat smiley in ONE secondary
51
+ color (never touching the accent) whose eyes and smile are ink marks
52
+ that draw on and boil; name 40 px semibold, role 30 px, their need as a
53
+ 44 px display line from the right; ~3.5 s;
54
+ then it flies down to a 72 px badge bottom-left and rides there
55
+ through that flow's beats.
56
+ - **No speech bubbles over UI.** When the person has something to say
57
+ mid-flow, use an interstitial text card: the UI eases to scale 0.96 /
58
+ opacity 0.25, one 72 px display line (and the small smiley) scales
59
+ 0.92 → 1 over 1.4 s, holds 1.6 s, the UI eases back.
60
+ - **Closing card**: a 72 px display line from the right, one accent
61
+ recap chip per flow tumbling in (2.5D is allowed for shapes), a tiny grey
62
+ "Concept mock · Month YYYY". The player ends paused on it.
63
+ - Type: the product's own body face inside mocks; everything the
64
+ viewer must read ≥ ~26 px on screen after zoom.
65
+
66
+ ## Don'ts (each was real feedback)
67
+
68
+ Tiny text · resting zoomed out · speech bubbles over UI · a cursor that
69
+ jumps · yellow-highlighter rectangles (use marks) · "Made with X"
70
+ overlays · a speed toggle · player chrome cluttered with tickers · toasts
71
+ firing off-frame while the camera is elsewhere (pan to them or skip
72
+ them) · frozen holds · tooltip + caption duplication · hard cuts from
73
+ slides into UI · real customer names or data.
74
+
75
+ ## QA for long films
76
+
77
+ `frames.ts --every 1 --sheet` reads as a storyboard: two or more
78
+ consecutive cells at each point of interest, no cell where nothing
79
+ readable is on screen, the cursor never jumps between consecutive cells
80
+ without a fade, captions never overlap their region, at most one
81
+ secondary color per scene. Check click targets by eye on the stills at
82
+ each click time (`frames.ts --at` those times); `check.ts` does not
83
+ hit-test clicks yet.