verify-bookendslisted
Install: claude install-skill jperrello/C0BALT_CUT
# verify-bookends
Last-line defense before a short is committed to fit-vertical. Checks
three things in one Claude call:
1. **Cleanliness** — partial words, breath cutoffs, co-speaker
interjections, off-shot frames at either end.
2. **Opening-hook strength (VVSA gate)** — the first ~3s is where a
scrolling stranger swipes away. If the opening is pure setup /
throat-clearing and a stronger hook line exists within the first 3s,
snap t0 inward to that line. Hook-weakness alone is never a drop —
only an inward-trim suggestion.
3. **Payoff landing** — if the tail contains a clear payoff word
followed by trailing filler ("yeah", "so anyway") or silence, snap
t1 to ~80ms past the payoff word rather than the sentence boundary.
Dead air after the payoff costs retention.
Output remains a single `keep`/`trim`/`drop` decision — same I/O
contract, same caller logic in `shorts.sh`.
## Invoke
```
.claude/skills/verify-bookends/verify-bookends.sh <input_clip> <input_trimmed_transcript> <out_decision_json> [VERIFY_BOOKENDS=0 to skip]
```
- `input_clip` — post tighten-pace clip
- `input_trimmed_transcript` — post tighten-pace re-timed transcript
- `out_decision_json` — written JSON: `{"action":"keep"}`, `{"action":"trim","t0":<sec>,"t1":<sec>,"reason":...}`, or `{"action":"drop","reason":...}`
Env: `VERIFY_BOOKENDS=0` makes the skill emit `{"action":"keep","reason":"disabled"}` without calling Claude.
## How
1. ffprobe the clip duration.
2. Slice the trimmed tr