Source-faithful output profiles, automated cut-boundary QA stills, and SKILL.md rule-maintenance procedure
Problem Statement
Three related gaps, found while using the skill on vertical/screen-recording footage:
Hardcoded output format fights the source.
render.pyscales every segment to a 1920 long edge and forces-r 24. Smaller sources get upscaled, and 30/60fps screen recordings get resampled to 24fps (visible judder). #29 fixed portrait orientation but the long-edge/fps hardcoding remains. There are also a few doc-code drifts: SKILL.md still showsMarginV=35while the code shipsMarginV=90(the safe-zone value from #5), SKILL.md's Output spec mentions a--filterflag thatrender.pydoesn't have (it belongs tograde.py), andconcat_segmentswrites a fixed_concat.txtso two concurrent renders in the same edit dir clobber each other.Self-eval step 7 is instruction-only. "Check every cut boundary" relies on the model actually looping over all boundaries — a skipped boundary is invisible. Meanwhile
timeline_view.py's docstring forbids calling it in a scan loop, so the instruction and the tool contradict each other.No procedure for evolving the rules. Hard Rules and anti-patterns carry no dates, no triggering incidents, and no supersession markers, so future edits can only append — the failure mode that bloats skill docs over time.
Proposed Solution
Source-faithful output profile (
render.py): probe the source withffprobeonce per render; default to the source's resolution capped at a 1080p-class long edge (no upscaling, vertical stays 1080×1920) and the source fps halved while above 30 (60→30, 59.94→29.97). Add an optionaloutputfield to the EDL —{width, height, fps}or a"shorts"/"landscape"preset — for explicit targets. Fix the doc drifts and make the concat list name unique per output in the same change.helpers/boundary_stills.py: from the EDL + rendered output, generate one horizontal 3-frame strip (t−0.5 / t / t+0.5) per cut boundary plus 2s start/end strips intoedit/verify/boundaries/, each with a ±0.5s waveform ribbon (reusingtimeline_view.py's envelope rendering) so audio spikes are visible. Rewrite SKILL.md step 7 around it: run the script, read every image, report the four checks (visual jump / waveform spike / hidden subtitle / clean ending).timeline_view.pystays as the on-demand drill-down tool — the docstring conflict goes away.Three-line rule-maintenance procedure in SKILL.md: new rules get a one-line date + triggering incident; replacements say "supersedes X" and delete the old body; past 400 lines, split details into
references/with SKILL.md body taking precedence on conflict.
Additional Context
Keeps the skill's design philosophy intact: hard rules only for silent-failure territory, everything else stays artistic freedom.
Source: browser-use/video-use