verify-coherence
Belt-and-suspenders coherence check that runs AFTER pick-segments. Claude
re-reads each span's own transcript slice and verdicts keep or tighten. On
tighten, the span's [t0, t1] is replaced with a trimmed range covering only
the dominant topic; if the trimmed range falls below dmin, the span is
dropped silently.
Invoke
.claude/skills/verify-coherence/verify-coherence.sh <segments.json> <transcript.json> <out.json> [dmin=20]
segments: output ofpick-segmentstranscript: full-source transcript JSONout: validated segments.json (same shape as input, possibly with tightened or dropped spans)dmin: minimum surviving span duration; spans tightened shorter are dropped
Output
Same schema as pick-segments output, with two possible per-span additions:
coherence_verdict:keep|tightenedcoherence_note: short reason
Dropped spans are simply absent from the output shorts[].
How
For each span, build a span-local transcript (lines whose midpoint falls in
[t0, t1]) and ask Claude:
Does this span cover ONE topic, or does it pivot to a second unrelated topic partway through? If it pivots, return the trimmed
[t0', t1']that contains only the dominant (longer / hookier) topic. Otherwise returnkeep.
A single claude -p call handles all spans in one batch to keep latency low.