edit-pipeline
Skill6 starsChanged 19 days agoMITView on GitHub
Run an edit of the user's footage as fixed stages, with a project record (standing decisions, approvals, the pace, a locked meaning map, every version), resume from the first stage not done, and the gate rules every check follows. Use when a use case cuts footage in stages, resumes an edit, or checks a draft against what was agreed.
In this repository67 other files it gives its agents.
- ai-presenterSkill
- animate-designSkill
- app-ui-animationSkill
- asset-auditSkill
- assetsSkill
- background-musicSkill
- caption-decorationsSkill
- character-riggingSkill
- custom-transitionsSkill
- design-layer-importSkill
- drama-series-writingSkill
- edit-footageSkill
- edit-on-your-computerSkill
- face-hidingSkill
- figma-storyboard-animationSkill
- film-animaticSkill
- film-cast-designSkill
- film-cuttingSkill
- film-finishingSkill
- film-shot-generationSkill
- film-story-writingSkill
- footage-analysisSkill
- footage-reframingSkill
- generate-mediaSkill
- get-startedSkill
- large-scene-assemblySkill
- linked-element-motionSkill
- make-characterSkill
- make-comicsSkill
- make-screen-videosSkill
- make-short-dramaSkill
- motion-design-craftSkill
- motion-intentSkill
- motion-pattern-librarySkill
- motion-reviewSkill
- motion-scene-continuitySkill
- motion-tracking-from-videoSkill
- movie-producerSkill
- open-picsart-appSkill
- photo-slideshowSkill
- picsart-add-mediaSkill
- picsart-video-rulesSkill
- quality-reviewSkill
- quick-merge-and-exportSkill
- realistic-color-gradeSkill
- recastSkill
- recreate-videoSkill
- reel-structureSkill
- reference-fragment-matchingSkill
- resting-frame-rulesSkill
- retention-hooksSkill
- scene-3d-authoringSkill
- scene-animation-referenceSkill
- scene-building-basicsSkill
- scene-template-remixSkill
- screen-recording-analysisSkill
- screen-recording-layoutsSkill
- screen-recording-zoomSkill
- screen-ui-redesignSkill
- sd25-peSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 1 is distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 51
Start it with the use case, the job and the job's stages.
- Very specific: line 83
When a rule or a source changes in a way the record cannot see, mark that stage and everything after it stale (python3 scripts/record.py …
- Very specific: line 88
Standing decisions: Add every note that holds everywhere to standing, with the user's own words (python3 scripts/record.py add …
- Very specific: line 97
Never record one without them.
- Very specific: line 143
Before every build, check the plan against locked: a plan that drops a locked row or changes its job fails, and so does one whose layout or …
- Very specific: line 148
Before every review, check the scene's colours against the brand's by reading them: every colour it sets is in the record's brand.palette …
- Very specific: line 164
The ledger: After every version the user sees, add to keepers what worked in it: each word and its picture (kind: "pair", with phrase and …
- Very specific: line 186
Every draft the user sees is a version in versions: its name, parent, scene, render, changed and gates (python3 scripts/record.py version …
- Distinctive: line 193
Every check in the pipeline, measured or by eye, follows these:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
The edit pipeline
An edit runs as fixed stages. Each stage leaves an artifact and is marked done in the project record. A use case picks which stages its job runs and sets their defaults; this skill holds what every job shares: the stages, the record, resume and the gate rules.
The stages
| Stage | What it leaves |
intake | the brief (said, read and assumed kept apart), the standing decisions, the finish path |
reference | the reference's pace: shot length, cuts per 10 s, caption style, colour, the first-second hook, the ending |
proxies | small copies of footage on the user's computer, as the edit-on-your-computer skill says. Only for footage on that computer; originals are never uploaded. |
log | per source: what happens, speech with word times, lips moving, focus, steadiness per window, legible text, what each shot can mean |
takes | the best take of each line, when someone speaks |
look | colour and sound: grade toward the reference or the brand, the voice placed, loudness |
story | the beats and the meaning map: for each phrase or beat, the picture's job |
plan | the cut: every shot, its range, the phrase it serves |
build | the scene, validated, and free draft exports |
qc | an independent check of the render, as quality-review says |
critics | the critic panel on the first full draft |
review | the user's approval of a named version |
finish | the final file: a full-quality export, or a full-resolution conform from originals on the user's computer |
deliver | the files, a cut list (order, source, in, out, phrase) and a short note |
A job leaves stages out; it never reorders them.
The project record
The record outranks your memory of the edit. It is the same JSON wherever the footage is, and no stage needs a script to keep it. Keep it, in this order of preference:
- a JSON file in the project folder, when you can run commands there:
scripts/record.pykeeps and checks it; - otherwise a JSON file in the project's Drive folder, saved with
picsart_drive_uploadas adata:URI named after the use case, and saved again at every gate; - otherwise in the conversation, as
picsart-video-rulessays. Then tell the user once that the record is not saved anywhere.
Its keys and what goes in each are in references/record.md. Every use case that runs this pipeline keeps its own record file name and adds these keys.
Start it with the use case, the job and the job's stages. After each stage, mark it done: its
status done, at, and reads, a copy of the record keys that stage reads and of those the
stages it builds on wrote (record.md lists them). Where commands run, python3 scripts/record.py init edit-footage.json --use-case
edit-footage --job <job> --stages <the job's stages> starts it, and python3 scripts/record.py
done edit-footage.json <stage> --artifact <file> marks a stage done with a fingerprint instead.
Two stages are gates, for every job, by hand as by record.py done, which refuses them:
reference, when a reference reel was given: done only with its sheet passing the reel-structure skill'ssheet.py validate, and itsformatwith no feasibility row open.deliver: done only oncestory,qc,criticsandrevieware done and the map was approved: its rows inlocked, or an approval withscopemap,momentsormapping. Record that approval when the user gives it.
Never skip the check, the critics or the review on your own, for any job. Only the user may
skip one, and only when they ask for that one by name: say its risk in one line (what nobody will
then catch), and on their yes record it with record.py skip <record> <stage> --by user --risk
"<that line>". Delivery then accepts it. A user in a hurry who asks only to be quick hears that
they are free and quick, and they run.
Resume
Read the record first, and find which stages are done, which are stale and which is next, by
the rules below. Where commands run, python3 scripts/record.py status edit-footage.json says it.
- A stage is done when it was marked done, the stages before it are done, and nothing it builds
on has changed since: the record keys it reads (compare them with its
reads), and the artifacts of the stages before it. Change the pace, or add a standing decision at review, and the plan and everything after it are stale; the log and the story are not, so nothing already logged is read again. - Say where you resume in one line: "Resuming at the cut plan: the pace changed."
- Redo only stale stages. A stage whose artifact exists and is still current is never redone.
- When a rule or a source changes in a way the record cannot see, mark that stage and everything
after it stale (
python3 scripts/record.py invalidate edit-footage.json <stage>).
Decisions that hold
- Standing decisions. Add every note that holds everywhere to
standing, with the user's ownwords(python3 scripts/record.py add edit-footage.json standing '{"text": ..., "words": ...}'). Put the standing decisions word for word into every brief you give a checker or another agent. Never summarise them. - The user's material is cleared. Footage the user supplied, their own or a client's, is theirs to show, unless the user says otherwise. Never hold a shot back for legal or compliance reasons of your own.
- Approvals land once. A relayed yes names its source, as
picsart-video-rulessays: the person's words quoted and who relayed them. A yes in a session's own words is not an approval. A relayed approval goes intoapprovalswith itssessionand the person'swords, and Never record one without them;scripts/record.pyrefuses it. It holds for exactly thewhatandscopeit names: never ask for that again, and ask for anything wider. An approval never covers a SPEND; consent stays per quote inpendingSpends. - What the user turned down goes into
rejected. Never propose it again. - The cut pace (
cutPace:minHold,densityin cuts per 10 s,wordAnchor,length; neverpace, which picsart-video-rules keeps for unattended mode) comes from the reference and the job, before the first build. The plan keeps every shot at or aboveminHold, and its cuts per 10 s neardensity: a hold underminHoldfails the plan, and cuts per 10 s more than a quarter offdensityare said to the user before the build, unless they already chose that pace (an approval scopedformat:pace, or a standing note on the pace). Where commands run,lock-checkchecks both on a plan whose rows carrysceneStartandsceneEnd(the density comes backopen, a short hold as a problem); otherwise check them by reading the plan's holds. A cut lands about 0.1 s before the word its picture illustrates, and only on key words: a shot holds through minor words. When the reference and the job's default disagree, the reference wins, with one split: a reference lends its devices (caption style, sound leading the picture, the ending) apart from its tempo. When the brief names its register in words ("cinematic", "atmospheric", "slow"), the tempo follows those words and the job's holds; a fast reel then lends its devices only. Say the split back in one line. - The rhythm (
cutPace.rhythm) is the cut's shape, beyond its average:medianHold(s),fastHoldandmaxFastRun(more shots underfastHoldin a row than this reads as eventy; 1.2 s and 3 by default),holdPerSection(one shot at least this long in each section, from the brief's order, as each plan row'ssection) andbreaths(between sections, a shot with picture and the shots' own sound and no voice: a row with nophrase, orvoice: falseon a row whose phrase names a silent beat).registerquotes the brief's style words when they ask for it.lock-checkreports a broken rhythmopen, said before the build, and fails the plan only whenregisteris set; a shape the user chose instead is an approval scopedformat:rhythm. The rhythm is set withcutPace, before the first build. - Every cut has a reason. In the plan, each shot after the first carries
why: one line on why the cut comes there, from the first of Walter Murch's reasons that holds: feeling (the viewer's feeling turns), story (the viewer learns something new), rhythm, then the eye (it lands where the next shot's interest is). A cut whose only reason is the word under it is not made: the shot before holds through it.
The meaning map
At story, each phrase or beat gets the picture's job ("precision" → hands on a keyboard,
close). Write the job as what the viewer gets from the picture, never only what it shows: a picture
that only repeats the word under it (the letterhead on "Firm") gives the viewer nothing the voice
has not. The map locks only after the first draft's cold watch (Gate rules), so a job the strangers
did not get changes before the user approves it. Once the user approves the map, its rows go into
locked, and they hold:
- A later fix may swap a shot only for one with the same job.
- A change of job needs a rendered A/B the user saw. Record their choice in
approvalswithscope: "meaning:<phrase>"and thejobthey chose; it allows that job only. Then update the locked row to it. - Before every build, check the plan against
locked: a plan that drops a locked row or changes its job fails, and so does one whose layout or caption position differs from the record'sformatwithout an approval scopedformat:layoutorformat:captions. Say every same-meaning swap in the version's note. Where commands run,python3 scripts/record.py lock-check edit-footage.json shot-plan.jsondoes it. - Before every review, check the scene's colours against the brand's by reading them: every colour it sets is in
the record's
brand.palette(or the own-brand format's colours), and text only in a colour the guide allows on text. Away from text, pure black and white and any see-through colour (a fade, a scrim) pass, unless the guide forbids them (brand.neutrals: false). Where commands run,python3 scripts/record.py palette-check edit-footage.json scene.jsondoes it; with no palette in the record it isopen, never a pass. Both checks live inscripts/match_check.py, whichrecord.pyimports; never run it on its own. - The job is the contract, not a caption. It comes from the map and is never rewritten to fit
whatever shot ends up there. A new job for a locked phrase needs the user's approval of that
job;
record.py addrefuses it without one.
Keepers
A good idea dropped silently costs more than a bad one kept. In one edit the keyboard on "precision", liked in the first two cuts, was lost in a rebuild from zero, then swapped twice more, each swap rewriting the shot's job to justify itself, until the user caught it five versions on.
- The ledger. After every version the user sees, add to
keeperswhat worked in it: each word and its picture (kind: "pair", withphraseandshot), each moment ("moment"), and anything the user praised ("praise", in theirwords), each with itsversionand why it works. Rebuilds and new plans start from the ledger, never from zero. - The meaning diff, before every shown draft. Compare the last shown plan with the new one,
phrase by phrase, against
lockedandkeepers. Where commands run,python3 scripts/meaning_diff.py <last shown plan> <new plan> --record edit-footage.jsondoes it (--linesmaps line ids to their words). Put itslinesin the message, one line per change ("precision: keyboard -> Family Code, because of shake"). A dropped keeper always appears there. Exit 1 means something blocks: a keeper dropped, a meaning changed or unsaid, or a job rewritten, without the user's approval of exactly that (meaning:<phrase>with thejobthey chose;keeper:<phrase>naming the keeper'sshotorwhat). Show it as a rendered A/B, or put it back. - Fix scope. A fix for a constraint (shake, lips, focus, timing) may change a range, or swap in a shot with the same job. When no such shot exists, flag it to the user as an A/B; never give the phrase a new meaning.
- Critics and the challenger propose. A shot they would swap goes to the user as an A/B, never into the plan silently.
- The QC inspector gets the ledger and the meaning diff, and fails a draft that drops a keeper without a line the user sees.
Versions
Every draft the user sees is a version in versions: its name, parent, scene, render,
changed and gates (python3 scripts/record.py version edit-footage.json '{"name": "v3", ...}').
Its first line in the message names it: "v3 - calmer cut, 9 shots". When the user asks which
version, answer from this list.
Gate rules
Every check in the pipeline, measured or by eye, follows these:
- Check the render and every range the cut uses, never only the source clip or the plan.
- Measure steadiness on a fixed detail with texture, with captions and overlays left out. A tracker on a caption or on plain paper reads still when the camera moves.
- Every verdict says its method and its confidence. What could not be measured, seen or
heard is
open, never a pass. An open finding goes to the user as an A/B, or for a look. - A check flags and offers an alternative. It never drops a shot the user approved.
- A fix never changes a locked row. It reports the clash instead.
- Fix rounds are capped as
picsart-video-rulessays. Then show what is left, as an A/B. - A taste choice goes to the user as a rendered A/B, never as a question in words. A
side-by-side is a scene with the two drafts next to each other, exported for free with
picsart_scene_export. - Review what the viewer gets: transcribe the exported render with
picsart_media_transcribeand compare it with the script (a repeated or clipped line shows there), and look at stills at every used range withpicsart_scene_contact_sheet, the render passed asmedia. Both are free. Write each check's result into the version'sgates. - A stranger watches before the user does. Each draft the user will see first gets a cold
watch, as the quality-review skill says, with
cuts: true, its calls quoted first and a SPEND (quote it in one line, then get the yes with your host's own question tool, such as AskUserQuestion, "Yes, go ahead" / "Yes, up to N credits for this task" / "No", never as a typed question; only where the host has no such tool, those options numbered in one message; unless a spend limit the user stated covers it: N credits or an explicit no-limit ("as much as needed"), never inferred from words like "go ahead". Within it, ask nothing: quote it in one line ("About 8 credits; 12 of 20 left after this"), call it, then say what it spent and what remains, keeping a running total that includes failed calls, and stop to ask before the first call that would cross it. A money amount is asked once to restate it in credits; in unattended pace, never ask: call only with a consent or a stated spend limit already recorded, otherwise write the quote to pendingSpends and stop, as picsart-video-rules says) before round 1 unless every call is quoted at 0 credits: each moment also asks where a cut felt like a jump or too fast, and why. Each jump it lists is fixed, or kept with its reason in the version'sgates. Nobody who knows the brief judges whether a stranger follows the cut.
Who does what
The stages that make the edit run in this conversation, with the skills the use case names.
Checking runs apart from the maker: the QC check and the critics are agents that get only the
render, the record's standing, locked, keepers and cutPace, the meaning diff, and their checklist, never your reasoning.
Each runs fresh each round. A background agent may log several sources at once. Its brief is
"load the skill, read the record, write this file", never a role to play.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

