@impractical-ai/motion 0.1.5 → 0.1.7
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/README.md +19 -0
- package/assets/engine.d.ts +793 -5
- package/assets/impractical/SKILL.md +53 -6
- package/assets/kits/actions.ts +803 -0
- package/assets/kits/ensemble.ts +483 -0
- package/assets/kits/highlight.ts +374 -0
- package/assets/kits/impact.ts +103 -0
- package/assets/kits/kits.ts +343 -0
- package/assets/kits/looks.ts +935 -0
- package/assets/kits/morphkit.ts +438 -0
- package/assets/kits/reveal.ts +1364 -0
- package/assets/kits/sentence.ts +218 -0
- package/assets/kits/streamkit.ts +195 -0
- package/dist/{api-KD6BNKBQ.js → api-DR3NJ7TI.js} +5 -2
- package/dist/chunk-77HVPD4G.js +43 -0
- package/dist/{chunk-DMAQPSA4.js → chunk-M7SHFM25.js} +222 -27
- package/dist/{chunk-7724464Z.js → chunk-MQKW7NFI.js} +65 -14
- package/dist/chunk-Z74SLKEU.js +67 -0
- package/dist/{commands-Y35XPDVH.js → commands-R3LJU2BW.js} +29 -4
- package/dist/index.js +6 -5
- package/dist/main-BEONOBG5.js +2218 -0
- package/dist/{stdio-ZFPBM6Z6.js → stdio-XUVQKDCB.js} +3169 -431
- package/package.json +4 -3
- package/dist/chunk-JDN3QHCX.js +0 -98
|
@@ -51,6 +51,19 @@ Gather from the user (ask only for what's missing):
|
|
|
51
51
|
- **Value prop** (required): one or two sentences on what ships and why it matters.
|
|
52
52
|
- Optional: their product's front-end code, a brand URL, screen recordings.
|
|
53
53
|
|
|
54
|
+
Before `create_video`, write a compact creative contract. This is a planning
|
|
55
|
+
record, not a new scene format:
|
|
56
|
+
|
|
57
|
+
- audience
|
|
58
|
+
- the single idea the viewer should remember
|
|
59
|
+
- the visual moment that proves it without explanatory copy
|
|
60
|
+
- how the reference's hierarchy/pacing will be translated rather than copied
|
|
61
|
+
- the real product source (and whether anything must be reconstructed)
|
|
62
|
+
- opening, proof, and payoff
|
|
63
|
+
|
|
64
|
+
When the local quality-loop experiment is enabled, pass that contract as
|
|
65
|
+
`creativeContract` to `create_video`. The tool will reject an unplanned start.
|
|
66
|
+
|
|
54
67
|
If they gave a brand URL and no kit exists yet:
|
|
55
68
|
|
|
56
69
|
brand_list
|
|
@@ -93,8 +106,8 @@ Craft, briefly — the full language is `guidance.motionDirection` in the
|
|
|
93
106
|
`motion_context` result. That copy is live and versioned; this summary is a
|
|
94
107
|
snapshot, so when the two disagree, the tool result wins.
|
|
95
108
|
|
|
96
|
-
- **Beat it out before writing code.** Every beat needs a time, a
|
|
97
|
-
|
|
109
|
+
- **Beat it out before writing code.** Every beat needs a time, a visible
|
|
110
|
+
subject, and a narrative purpose. An intentional reading hold is valid.
|
|
98
111
|
- **Text enters on `rise`** — `text.reveal(el, 'rise')` on `promo-out`, lines
|
|
99
112
|
~0.2s apart. Do *not* default type to `'blur'`: word-by-word de-blur reads as
|
|
100
113
|
out-of-focus, and across a stagger it turns to mush. Blur is for whole-frame
|
|
@@ -105,9 +118,10 @@ snapshot, so when the two disagree, the tool result wins.
|
|
|
105
118
|
dives only. Never leave an ease unspecified; never put `ease-in-*` on an
|
|
106
119
|
entrance. The promo subset: `promo-out`, `promo-soft`, `promo-inout`,
|
|
107
120
|
`promo-in`, `launch-out`.
|
|
108
|
-
- **
|
|
109
|
-
|
|
110
|
-
-
|
|
121
|
+
- **Decisive**: entrances 0.4–0.6s, exits shorter, staggers ~0.2s apart.
|
|
122
|
+
Longer movement needs a narrative reason; important states may hold still.
|
|
123
|
+
- Budget one primary and at most one supporting motion. Keep backgrounds stable
|
|
124
|
+
unless their movement is explicitly authored.
|
|
111
125
|
- Hold long enough to read. A beat that looks legible scrubbing the timeline is
|
|
112
126
|
usually still too fast on screen.
|
|
113
127
|
- Cut hard between sections; crossfading backgrounds reads as cheap.
|
|
@@ -169,9 +183,42 @@ nearly free.
|
|
|
169
183
|
shows text clipped, an element off-frame, or a blank region, fix it and look
|
|
170
184
|
again. This is the difference between shipping a video and shipping a guess.
|
|
171
185
|
|
|
186
|
+
When the `get_motion` tool is available (the local motion lab experiment),
|
|
187
|
+
prefer it as the first look after every preview build:
|
|
188
|
+
|
|
189
|
+
get_motion { draftId: "..." } // whole scene
|
|
190
|
+
get_motion { draftId: "...", from: 4.8, to: 6.4 } // one weak window
|
|
191
|
+
|
|
192
|
+
Static frames measure composition; `get_motion` measures motion — dense
|
|
193
|
+
contact sheets where the difference between adjacent tiles IS the motion,
|
|
194
|
+
plus measured pixel change per interval, dead-air spans, and the timeline's
|
|
195
|
+
actual tweens with any that run without producing visible change. Fix what it
|
|
196
|
+
flags, then use `get_frames` for composition close-ups.
|
|
197
|
+
|
|
198
|
+
With the quality loop also enabled, the final review is two-part and export
|
|
199
|
+
requires both on the same revision: `get_frames { reviewMode: "final" }` for
|
|
200
|
+
composition and legibility at native resolution, and
|
|
201
|
+
`get_motion { draftId, reviewMode: "final" }` for full-duration motion
|
|
202
|
+
coverage at one frame in five.
|
|
203
|
+
|
|
204
|
+
For a new launch video, build and review the proof beat before completing the
|
|
205
|
+
rest. When the local quality loop is enabled:
|
|
206
|
+
|
|
207
|
+
get_frames { draftId: "...", times: [/* proof beat */], reviewMode: "proof" }
|
|
208
|
+
|
|
209
|
+
For the final pass, review at least eight representative timestamps including
|
|
210
|
+
`t=0` and the settled closing frame:
|
|
211
|
+
|
|
212
|
+
get_frames { draftId: "...", times: [/* whole timeline */], reviewMode: "final" }
|
|
213
|
+
|
|
214
|
+
The final critic scores the visible result—not the code or effort—on narrative
|
|
215
|
+
clarity, visual proof, product authenticity, composition, legibility, pacing,
|
|
216
|
+
reference fidelity, and technical integrity. Use timestamped evidence. A weak
|
|
217
|
+
score is a revision brief, not permission to describe the cut as “clean.”
|
|
218
|
+
|
|
172
219
|
## 5. Export and hand off
|
|
173
220
|
|
|
174
|
-
export_video { draftId: "..." }
|
|
221
|
+
export_video { draftId: "...", qualityReview?: {/* required by local quality loop */} }
|
|
175
222
|
job_status { jobIds: ["<returned job id>"], wait: true }
|
|
176
223
|
studio_link { projectId: "...", slug: "..." }
|
|
177
224
|
|