verify-coherencelisted
Install: claude install-skill jperrello/C0BALT_CUT
# 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 of `pick-segments`
- `transcript`: full-source transcript JSON
- `out`: 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` | `tightened`
- `coherence_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 return `keep`.
A single `claude -p` call handles all spans in one batch to keep latency low.