Create a skill from a timeline
A skill is a playbook another agent can follow with no prior context. Superficial notes ("add captions", "make it vertical") fail. Capture exact values and editorial judgment — what was chosen, cut, kept, and why.
Success criteria
A good skill must support both:
- Same footage, zero context — another agent rebuilds this video from the original media using only the skill.
- New footage, same style — another agent produces the same kind of edit on different sources with only light adaptation notes.
If either fails, the skill is incomplete.
Workflow checklist
- [ ] 1. Confirm scope with the user (which timeline / version)
- [ ] 2. Gather history — chat + tool trail that produced the edit
- [ ] 3. Inventory the finished timeline (get_timeline, tracks, nesting)
- [ ] 4. Inventory raw library media (get_media, inspect_media)
- [ ] 5. Diff source vs timeline — selection criteria
- [ ] 6. Read the spoken arc (get_transcript) — keep/cut rules
- [ ] 7. Capture hard numbers — layout, text, color, keyframes, cams
- [ ] 8. Infer structure + pacing + tool path
- [ ] 9. Draft SKILL.md (frontmatter + exact procedure)
- [ ] 10. Self-test: could a stranger recreate this from the skill alone?
Step 1: Confirm scope
Ask only if unclear:
- Which timeline? (active vs a named alternate / 9:16 version)
- Skill goal: recreate this piece, generalize a style, or both?
- Anything off-limits (brand assets, one-off jokes, temp VO)?
Then lock that timeline with set_active_timeline if needed and re-read get_timeline.
Step 2: Recover how it was built
Prefer evidence over invention:
- Chat / tool history in this session — layouts chosen, caption styles, cut passes, model prompts, rejected alternatives.
- User intent statements — "tighter", "speaker cam only", "hook first" — these become rules, not vibes.
- If history is missing, reconstruct from the timeline alone and say so in the skill under Assumptions.
Record the tool path that should be reused:
| Pattern in the edit |
Prefer in the skill |
| Vertical / aspect reframe, PIP, split, grid |
apply_layout (+ anchors) — never hand set_clip_properties transforms |
| Multicam angle program |
manage_multicam → change_cam |
| Dead air / fillers |
remove_silence then remove_words |
| Spoken captions |
add_captions + exact update_text style block |
| Authored titles / logos |
add_texts with exact transform + style |
| Grade / FX |
apply_color / apply_effect with exact params |
| Nested versions |
create_timeline / sequence clips |
Step 3: Inventory the finished piece
get_timeline()
inspect_timeline({ startFrame, endFrame, maxFrames }) // key beats
Extract and write down:
- Canvas: fps, width, height, aspect
- Track stack (bottom → top), names, types, what's on each
- Clip order with
[start, end), mediaRefs, speeds, trims, links
- Nested sequences (
mediaType: 'sequence') and what they contain
- Multicam groups + angle program over time
- Text / caption groups: content samples,
captionGroupId, shared style
- Color / effects / keyframes present on hero clips
- Music / VO / SFX placement
inspect_timeline at the hook, mid-body, and end — verify what the viewer actually sees.
Step 4–5: Raw media vs timeline selection
get_media()
inspect_media({ mediaRef, overview: true })
inspect_media({ mediaRef, wordTimestamps: true }) // when speech drives the cut
Compare library assets to timeline clips and answer:
- What was selected vs left unused?
- Within a long take, which source spans were kept? (
source seconds / trims)
- Any B-roll / stills / generated assets inserted — on which spoken beats?
- Sync relationship (multicam, dual-system, linked A/V)?
Write a Selection section: concrete rules ("keep first clean take of each claim", "drop second explanation of pricing", "B-roll on every proper noun after the hook").
Step 6: Spoken arc and cut rules
get_transcript()
Read it as prose. Document:
- Structure — hook → body → CTA? cold open? summary then proof? straight into action?
- Keep — sentences / claims that define the piece
- Cut — fillers, false starts, repeated explanations, throat-clearing, long pauses
- Join style — soft landings at sentence ends vs tight mid-thought joins
- Silence policy —
remove_silence defaults or explicit minimumPauseSeconds / speechPaddingSeconds
- Word policy — filler list, retake handling, whether "like"/"you know" stay when intentional
After describing cuts, the remaining transcript must still read as continuous sense. Put that as an explicit verification step in the skill.
Step 7: Hard-code visual and timing details
Guessable adjectives are useless. Paste numbers.
Layout / framing
- Exact
apply_layout layout id, slot → clip mapping, fit, anchor / anchorX / anchorY
- Track order after layout (what sits on top)
- For alternate aspect ratios:
set_project_settings / duplicate-via-create_timeline then layout — write that sequence
Text and captions
- Font PostScript name, size, weight traits, tracking, lineSpacing, alignment, case
- Colors (hex), outline / shadow / background blocks exactly
fillMode (color / footage / inverted), style.blur, widthScale / heightScale
- Transform: alignment-relative
x, y, rotation, rotationX, rotationY
- Animation preset + highlightColor when used
- Caption placement relative to speech (lower-third, center punch-ins, one-word vs phrases)
- Prefer a known caption-templates preset verbatim when it matches; otherwise paste the full style object
Motion / cams / grade
- Keyframe tracks: which properties, at which transcript beats or frame offsets
- Multicam: when to cut (speaker change, mid-sentence, reaction) — and what not to do (e.g. never cut only on sentence ends)
- Color: full
apply_color objects worth copying; LUT / effect params
Brand / logos / lower thirds
Exact position, size via layout or text transform, duration, entrance timing relative to speech. No "put the logo top-right".
Step 8: Structure the skill document
Write SKILL.md with:
---
name: <hyphenated-id-style-title>
description: <when to use; include trigger phrases; one dense paragraph>
---
# <Title>
## When to use
…
## Inputs required
- Media roles (A-cam, B-roll, mic, music, logos) — not filenames
## Editorial rules
- Structure, keep/cut, pacing, cam cadence, text landing rules
## Exact look (copy these values)
- Layout / caption / text / color blocks with numbers
## Procedure
1. Tool calls in order…
2. Verification: get_timeline + inspect_timeline + transcript sense-check
## Adapting to new footage
- What stays fixed vs what to re-derive from the new transcript
Writing rules
- Imperative, tool-named steps —
apply_layout({...}), not "reframe nicely"
- One source of truth for each value — don't restate conflicting sizes
- Reuse existing skills when they already encode a sub-procedure (
caption-templates, multi-cam-editing, color-grading, ugc-editing) — call read_skill then specialize
- No marketing language — match Palmier's terse editor voice
- Frontmatter
description must list trigger phrases so the agent selects this skill later
Step 9: Self-test before handing off
Ask yourself:
- Could someone rebuild this with only the skill + the original media refs / roles?
- Are logo / caption / layout numbers exact enough to match
inspect_timeline?
- Are cut rules specific enough that two agents would remove the same retakes?
- Does the procedure use
apply_layout (and other preferred tools) instead of fragile manual transforms?
- Is there an adaptation section for new footage that doesn't undo the hard-coded look?
If any answer is no, dig deeper — usually selection criteria, cam cadence, or numeric text/layout values are missing.
Deliverable
Return the full SKILL.md contents (frontmatter + body) ready to paste into Settings → Skills, or into skills/<id>/SKILL.md for the community catalog. Keep commentary to one short sentence; the skill file is the product.
1---2name: create-skill-from-timeline3description: Reverse-engineer a finished Palmier Pro timeline into a reusable SKILL.md that recreates the same edit from the same footage with no prior context, or applies the same style to new footage with minimal tweaks. Use when the user asks to create a skill, save a template, distill this edit into a playbook, document how this video was built, or turn a timeline / chat session into a reusable workflow.4---56# Create a skill from a timeline78A skill is a playbook another agent can follow with **no prior context**. Superficial notes ("add captions", "make it vertical") fail. Capture exact values **and** editorial judgment — what was chosen, cut, kept, and why.910## Success criteria1112A good skill must support both:13141. **Same footage, zero context** — another agent rebuilds this video from the original media using only the skill.152. **New footage, same style** — another agent produces the same kind of edit on different sources with only light adaptation notes.1617If either fails, the skill is incomplete.1819## Workflow checklist2021```22- [ ] 1. Confirm scope with the user (which timeline / version)23- [ ] 2. Gather history — chat + tool trail that produced the edit24- [ ] 3. Inventory the finished timeline (get_timeline, tracks, nesting)25- [ ] 4. Inventory raw library media (get_media, inspect_media)26- [ ] 5. Diff source vs timeline — selection criteria27- [ ] 6. Read the spoken arc (get_transcript) — keep/cut rules28- [ ] 7. Capture hard numbers — layout, text, color, keyframes, cams29- [ ] 8. Infer structure + pacing + tool path30- [ ] 9. Draft SKILL.md (frontmatter + exact procedure)31- [ ] 10. Self-test: could a stranger recreate this from the skill alone?32```3334---3536## Step 1: Confirm scope3738Ask only if unclear:3940- Which timeline? (active vs a named alternate / 9:16 version)41- Skill goal: recreate this piece, generalize a style, or both?42- Anything off-limits (brand assets, one-off jokes, temp VO)?4344Then lock that timeline with `set_active_timeline` if needed and re-read `get_timeline`.4546---4748## Step 2: Recover how it was built4950Prefer evidence over invention:51521. **Chat / tool history** in this session — layouts chosen, caption styles, cut passes, model prompts, rejected alternatives.532. **User intent statements** — "tighter", "speaker cam only", "hook first" — these become rules, not vibes.543. If history is missing, reconstruct from the timeline alone and say so in the skill under **Assumptions**.5556Record the **tool path** that should be reused:5758| Pattern in the edit | Prefer in the skill |59|---|---|60| Vertical / aspect reframe, PIP, split, grid | `apply_layout` (+ anchors) — never hand `set_clip_properties` transforms |61| Multicam angle program | `manage_multicam` → `change_cam` |62| Dead air / fillers | `remove_silence` then `remove_words` |63| Spoken captions | `add_captions` + exact `update_text` style block |64| Authored titles / logos | `add_texts` with exact transform + style |65| Grade / FX | `apply_color` / `apply_effect` with exact params |66| Nested versions | `create_timeline` / sequence clips |6768---6970## Step 3: Inventory the finished piece7172```73get_timeline()74inspect_timeline({ startFrame, endFrame, maxFrames }) // key beats75```7677Extract and write down:7879- Canvas: fps, width, height, aspect80- Track stack (bottom → top), names, types, what's on each81- Clip order with `[start, end)`, mediaRefs, speeds, trims, links82- Nested sequences (`mediaType: 'sequence'`) and what they contain83- Multicam groups + angle program over time84- Text / caption groups: content samples, `captionGroupId`, shared style85- Color / effects / keyframes present on hero clips86- Music / VO / SFX placement8788`inspect_timeline` at the hook, mid-body, and end — verify what the viewer actually sees.8990---9192## Step 4–5: Raw media vs timeline selection9394```95get_media()96inspect_media({ mediaRef, overview: true })97inspect_media({ mediaRef, wordTimestamps: true }) // when speech drives the cut98```99100Compare library assets to timeline clips and answer:101102- What was **selected** vs left unused?103- Within a long take, which **source spans** were kept? (`source` seconds / trims)104- Any B-roll / stills / generated assets inserted — on which spoken beats?105- Sync relationship (multicam, dual-system, linked A/V)?106107Write a **Selection** section: concrete rules ("keep first clean take of each claim", "drop second explanation of pricing", "B-roll on every proper noun after the hook").108109---110111## Step 6: Spoken arc and cut rules112113```114get_transcript()115```116117Read it as prose. Document:118119- **Structure** — hook → body → CTA? cold open? summary then proof? straight into action?120- **Keep** — sentences / claims that define the piece121- **Cut** — fillers, false starts, repeated explanations, throat-clearing, long pauses122- **Join style** — soft landings at sentence ends vs tight mid-thought joins123- **Silence policy** — `remove_silence` defaults or explicit `minimumPauseSeconds` / `speechPaddingSeconds`124- **Word policy** — filler list, retake handling, whether "like"/"you know" stay when intentional125126After describing cuts, the remaining transcript must still read as continuous sense. Put that as an explicit verification step in the skill.127128---129130## Step 7: Hard-code visual and timing details131132Guessable adjectives are useless. Paste numbers.133134### Layout / framing135136- Exact `apply_layout` layout id, slot → clip mapping, `fit`, `anchor` / `anchorX` / `anchorY`137- Track order after layout (what sits on top)138- For alternate aspect ratios: `set_project_settings` / duplicate-via-`create_timeline` then layout — write that sequence139140### Text and captions141142- Font PostScript name, size, weight traits, tracking, lineSpacing, alignment, case143- Colors (hex), outline / shadow / background blocks exactly144- `fillMode` (`color` / `footage` / `inverted`), `style.blur`, widthScale / heightScale145- Transform: alignment-relative `x`, `y`, `rotation`, `rotationX`, `rotationY`146- Animation preset + highlightColor when used147- Caption placement relative to speech (lower-third, center punch-ins, one-word vs phrases)148- Prefer a known caption-templates preset **verbatim** when it matches; otherwise paste the full style object149150### Motion / cams / grade151152- Keyframe tracks: which properties, at which transcript beats or frame offsets153- Multicam: when to cut (speaker change, mid-sentence, reaction) — and what **not** to do (e.g. never cut only on sentence ends)154- Color: full `apply_color` objects worth copying; LUT / effect params155156### Brand / logos / lower thirds157158Exact position, size via layout or text transform, duration, entrance timing relative to speech. No "put the logo top-right".159160---161162## Step 8: Structure the skill document163164Write `SKILL.md` with:165166```markdown167---168name: <hyphenated-id-style-title>169description: <when to use; include trigger phrases; one dense paragraph>170---171172# <Title>173174## When to use175…176177## Inputs required178- Media roles (A-cam, B-roll, mic, music, logos) — not filenames179180## Editorial rules181- Structure, keep/cut, pacing, cam cadence, text landing rules182183## Exact look (copy these values)184- Layout / caption / text / color blocks with numbers185186## Procedure1871. Tool calls in order…1882. Verification: get_timeline + inspect_timeline + transcript sense-check189190## Adapting to new footage191- What stays fixed vs what to re-derive from the new transcript192```193194### Writing rules195196- **Imperative, tool-named steps** — `apply_layout({...})`, not "reframe nicely"197- **One source of truth** for each value — don't restate conflicting sizes198- **Reuse existing skills** when they already encode a sub-procedure (`caption-templates`, `multi-cam-editing`, `color-grading`, `ugc-editing`) — call `read_skill` then specialize199- **No marketing language** — match Palmier's terse editor voice200- Frontmatter `description` must list trigger phrases so the agent selects this skill later201202---203204## Step 9: Self-test before handing off205206Ask yourself:2072081. Could someone rebuild this with **only** the skill + the original media refs / roles?2092. Are logo / caption / layout numbers exact enough to match `inspect_timeline`?2103. Are cut rules specific enough that two agents would remove the same retakes?2114. Does the procedure use `apply_layout` (and other preferred tools) instead of fragile manual transforms?2125. Is there an adaptation section for new footage that doesn't undo the hard-coded look?213214If any answer is no, dig deeper — usually selection criteria, cam cadence, or numeric text/layout values are missing.215216## Deliverable217218Return the full `SKILL.md` contents (frontmatter + body) ready to paste into Settings → Skills, or into `skills/<id>/SKILL.md` for the community catalog. Keep commentary to one short sentence; the skill file is the product.