Individual skill
watch
Watch a video (URL or local path) like an editor. Extracts scene-change frames, pacing metrics (cuts/min, shot length), and a dense 0-10s hook microscope; pulls transcript from captions or Whisper. Produces an ingest-ready `report.md` and, after answering the user, optionally auto-ingests the analysis into your Obsidian vault (configurable via `$WATCH_VAULT_DIR`) — tied to *why* the user watched it.
SKILL.md
Source commit 7711231e4c47e5d4e06bcf5326c4abf5b70ab4a9
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- No
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Not checked yet
- Last checked
- Nov 10, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 1,154
- Repository last updated
- Jul 24, 2026
- License
- MIT
Observed agent integration: claude-code
- engineering Derived category
- productivity Derived category
- productivity-notes Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
.claude-plugin/marketplace.jsonasset · 761 bytes.claude-plugin/plugin.jsonasset · 696 bytes.codex-plugin/plugin.jsonasset · 332 bytes.gitattributesasset · 1,069 bytes.github/workflows/release.ymlasset · 589 bytes.gitignoreasset · 215 bytesAUTHORS.mddoc · 630 bytesCHANGELOG.mddoc · 4,356 bytesLICENSEasset · 1,072 bytesREADME.mddoc · 14,549 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytesSKILL.mdcore · 23,397 bytescommands/watch.mddoc · 699 byteshooks/hooks.jsonasset · 279 byteshooks/scripts/check-setup.shruns · 1,996 bytesscripts/build-skill.shruns · 1,745 bytesscripts/download.pyruns · 4,078 bytesscripts/frames.pyruns · 13,773 bytesscripts/hook.pyruns · 3,037 bytesscripts/pacing.pyruns · 3,311 bytesscripts/report.pyruns · 6,599 bytesscripts/setup.pyruns · 10,552 bytesscripts/tests/__init__.pyruns · 0 bytesscripts/tests/test_frames_scene.pyruns · 2,616 bytesscripts/tests/test_pacing.pyruns · 2,128 bytesscripts/tests/test_report.pyruns · 2,679 bytesscripts/transcribe.pyruns · 2,897 bytesscripts/watch.pyruns · 12,144 bytesscripts/whisper.pyruns · 13,165 bytes
Read excerpt
# /watch — Claude watches a video
You don't have a video input; this skill gives you one. A Python script downloads the video, extracts frames as JPEGs (one per detected shot via scene-change), gets a timestamped transcript (native captions first, then Whisper API as fallback), runs editorial pacing metrics, and microscopes the first 10 seconds at higher density. You then `Read` each frame path to see the images, combine them with the transcript to answer the user, fill the structured `report.md`, and offer to ingest the analysis into Taoufik's Second Brain.
## What v2 does differently
- **Scene-change frame sampling** — one frame per detected shot instead of uniform ticks. Cuts the frame budget on long videos while capturing every transition.
- **Editorial pacing metrics** — cuts/min, mean shot length, motion (when available). Lets you reason about pacing the way an editor does.
- **Hook microscope** — first 10s auto-runs at 2 fps + word-level Whisper. The single most leveraged 10 seconds of any video deserves dense treatment.
- **Structured `report.md`** — every watch emits an ingest-shaped report at `<workdir>/report.md` with TL;DR, key moments, hook breakdown, editorial profile, quotable moments, entities, concepts, and transcript. Narrative sections are emitted as `<!-- pending Claude fill: ... -->` markers — you fill them in before offering ingest.
- **Step 4.5 — Ingest gate** — after answering the user, you ask once: "Want to ingest this into your Obsidian vault?" If yes, and a vault is detected, you read `$VAULT_DIR/CLAUDE.md` (if it exists) and run that vault's Ingest op against the report.
None of the above add new dependencies — pure ffmpeg + stdlib + the existing Whisper backend.