creator-editing-studio 1.2.4 → 1.2.6
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/package.json +1 -1
- package/template/CLAUDE.md +86 -0
package/package.json
CHANGED
package/template/CLAUDE.md
CHANGED
|
@@ -48,6 +48,92 @@ Everything else in `src/design/` is the system and should be left alone. If a vi
|
|
|
48
48
|
a colour or a size that is not in tokens.ts, the answer is to add it to tokens.ts, never to
|
|
49
49
|
type it into a component.
|
|
50
50
|
|
|
51
|
+
## The order of work — the plan is approved before anything is cut
|
|
52
|
+
|
|
53
|
+
**Never render an edit the owner has not agreed to in writing first.** A render is the last
|
|
54
|
+
step, not the first. Rebuilding a rejected edit costs more than every minute the plan takes.
|
|
55
|
+
|
|
56
|
+
Every edit runs in this order. Do not skip a step, and do not collapse two into one.
|
|
57
|
+
|
|
58
|
+
**1. Watch and probe.** `npm run prep -- <name>`. Get the real duration, fps and resolution
|
|
59
|
+
of every clip. Never assume them.
|
|
60
|
+
|
|
61
|
+
**2. Transcribe with word-level timings.** The transcript is the truth — not the script, not
|
|
62
|
+
what the owner remembers saying. Every beat you place later is anchored to a word index, and
|
|
63
|
+
every word index comes from this file.
|
|
64
|
+
|
|
65
|
+
**3. Read the owner's style first, in this order:** `STYLE.md` §9 Rejected, then §8 Approved,
|
|
66
|
+
then `references/references.md` and the contact sheets in `work/refs/`. Rejected comes first
|
|
67
|
+
because removing options is faster than adding them. A reference beats a default wherever
|
|
68
|
+
they disagree.
|
|
69
|
+
|
|
70
|
+
**4. Write the plan, and hand it over.** Two documents, both in `work/<name>/`:
|
|
71
|
+
|
|
72
|
+
`PLAN.md` — the edit, as a table, one row per beat:
|
|
73
|
+
|
|
74
|
+
| # | In | Out | Dur | Trigger word (frame) | What is on screen | Audio under it |
|
|
75
|
+
|---|---|---|---|---|---|---|
|
|
76
|
+
|
|
77
|
+
and under it: total runtime, the full caption script line by line, and a short list of what
|
|
78
|
+
you chose *not* to do and why.
|
|
79
|
+
|
|
80
|
+
`MOTION.md` — the motion design sheet, one entry per graphic:
|
|
81
|
+
|
|
82
|
+
- **What it is** in one sentence a non-editor understands.
|
|
83
|
+
- **Which approved beat it is** — by name, from `STYLE.md` §8 or `references/references.md`.
|
|
84
|
+
A graphic that cannot name its beat is not approved and does not go in the plan.
|
|
85
|
+
- **In / out / hold** in frames, and the easing used.
|
|
86
|
+
- **What is behind it** — footage, solid, or nothing.
|
|
87
|
+
|
|
88
|
+
Then stop and ask. Say plainly: *here is the plan, change anything that is off, say go ahead
|
|
89
|
+
and I will cut it.* **Wait for a yes.** "Go ahead", "approved", "ship it" is a yes. Silence is
|
|
90
|
+
not, and neither is a reply about something else.
|
|
91
|
+
|
|
92
|
+
**5. Only then cut, render, and verify.** Verification is not optional and is not a claim —
|
|
93
|
+
see below.
|
|
94
|
+
|
|
95
|
+
If the owner says "just edit it" and skips the plan, write the plan anyway, in one short
|
|
96
|
+
message, and cut immediately after. It costs thirty seconds and it is the only record of
|
|
97
|
+
what was intended.
|
|
98
|
+
|
|
99
|
+
## Verify the render before you call it done
|
|
100
|
+
|
|
101
|
+
You have not seen the video. The timeline in your head is not evidence. Before you say an
|
|
102
|
+
edit is finished, pull real frames out of the **rendered file** and look at them:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
npm run stills -- --file out/<name>.mp4 --at 2,5,8,11,14,17,20
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Put a still on **both sides of every cut** in the plan, and on any beat you are unsure of.
|
|
109
|
+
Then say what you saw. Never write "this is fixed" about something you have not looked at.
|
|
110
|
+
|
|
111
|
+
## Faults that keep recurring — check for these every time
|
|
112
|
+
|
|
113
|
+
**Slivers of footage between graphics.** When two full-screen graphics run back to back, the
|
|
114
|
+
second must start on the exact frame the first ends — `out` of one *is* `in` of the next.
|
|
115
|
+
A gap of even one frame flashes the talking head for 30ms and reads as a broken edit, not a
|
|
116
|
+
cut. Assert it in code: walk the beat list and fail if any `in` is greater than the previous
|
|
117
|
+
`out`.
|
|
118
|
+
|
|
119
|
+
**A caption word left alone on screen.** A word-by-word caption holds until the next word
|
|
120
|
+
arrives. If the speaker pauses for a second mid-phrase, one word sits there alone and the
|
|
121
|
+
viewer reads it as a stutter or a repeat. Cap any single word's hold at about 0.5s — after
|
|
122
|
+
that, show the rest of the line greyed ahead, or drop the line and start the next one.
|
|
123
|
+
|
|
124
|
+
**A graphic that renders invisible.** `zIndex` on one child creates a stacking context and can
|
|
125
|
+
hide every sibling painted after it. Prefer paint order to `zIndex`. If a beat is in the plan
|
|
126
|
+
and not in the stills, it did not render — find out why before shipping.
|
|
127
|
+
|
|
128
|
+
**A nested video restarting.** Inside a `Sequence`, `useCurrentFrame()` is local. An
|
|
129
|
+
`OffthreadVideo` placed in one starts from its own frame 0 and plays its own audio over the
|
|
130
|
+
live line. Pass an explicit `startFrom`, and mute it unless its sound is wanted.
|
|
131
|
+
|
|
132
|
+
**Repetition the owner can hear but you cannot.** If the owner says a line repeats, transcribe
|
|
133
|
+
the rendered output over that exact window before arguing. If the audio is clean, the repeat
|
|
134
|
+
is visual — a held caption, a reused graphic, or a duplicated framing — and that is still a
|
|
135
|
+
real fault worth fixing, not a misunderstanding to explain away.
|
|
136
|
+
|
|
51
137
|
## Non-negotiables
|
|
52
138
|
|
|
53
139
|
1. **No magic numbers.** Durations, curves, springs, staggers, blur come from `src/design/motion.ts`.
|