claude-video/AGENTS.md
bradautomates e90ef44c32 Implement v0.3.0 reliability fixes and managed WhisperX transcription
Add opt-in local transcription with managed installation, cache warm-up,
and a one-time backend choice while preserving native-caption priority.

Correct frame timing and coverage, caption provenance and download
ownership, configuration parsing, provider pairing, and partial reports.
Update cross-host instructions, packaging, and test-gated release CI.

Validate 198 isolated tests, real local English and Spanish inference,
network-denied warm-cache inference, live captions/media, and packaging.
Record platform and account-dependent acceptance limits separately.
2026-09-12 22:09:43 +10:00

3.6 KiB

claude-video / watch skill

Agent Skills package that gives an agent a video input. Installable across Claude Code (most common host), Codex, Cursor, GitHub Copilot, and 50+ other Agent Skills hosts. Pure-stdlib Python that orchestrates yt-dlp + ffmpeg and an optional Whisper API or separately managed local WhisperX process.

Structure

  • skills/watch/SKILL.md — canonical skill contract the model reads when /watch fires. Source of truth for behavior across every host.
  • skills/watch/scripts/watch.py — entry point; orchestrates download → frames → transcript.
  • skills/watch/scripts/{download,frames,transcribe,whisper,local_whisperx,setup,config,runtime}.py — yt-dlp wrapper, ffmpeg frame extraction + auto-fps, caption/Whisper transcription, preflight/installer, shared config.
  • skills/watch/scripts/build-skill.sh — builds dist/watch.skill for claude.ai upload (dev-only).
  • hooks/ — Claude Code SessionStart setup-status hook (Claude Code only).
  • .claude-plugin/ — plugin.json + marketplace.json (Claude Code plugin + local marketplace).
  • .codex-plugin/plugin.json — Codex/agents manifest; "skills": "./skills/" points the Agent Skills CLI at the self-contained skill folder.
  • .agents/plugins/marketplace.json — agents marketplace listing pointing at the repo-root plugin.
  • CLAUDE.md → @AGENTS.md — generic-agent entry point.
  • tests/ — pytest suite (ffmpeg-synthesized clips; no network).

Orientation

  • The product is the slash-command-invoked skill (/watch <url-or-path> [question]), not a CLI. scripts/watch.py is implementation. Features must work across every harness the skill installs into, not just Claude Code.
  • The skill is one self-contained folder: skills/watch/. SKILL.md and scripts/ are siblings inside it. This is what lets npx skills add copy a working skill as a unit — do NOT move SKILL.md or scripts/ back to the repo root, or non-Claude installers will copy SKILL.md without the scripts.
  • Path resolution is harness-agnostic. SKILL.md resolves SKILL_DIR as the directory of the SKILL.md the model just Read, then runs ${SKILL_DIR}/scripts/.... Do NOT reintroduce ${CLAUDE_SKILL_DIR} (Claude-Code-only) — it is unset on Codex/Cursor/agents and breaks every script call there.
  • No commands/ wrapper. /watch is derived from SKILL.md frontmatter (name: watch + user-invocable: true). A separate command file creates a duplicate slash command.

Install surfaces

Surface Install
Claude Code /plugin marketplace add bradautomates/claude-video then /plugin install watch@claude-video
Codex / Cursor / Copilot / +50 npx skills add bradautomates/claude-video -g
claude.ai (web) upload dist/watch.skill (built by skills/watch/scripts/build-skill.sh)

Commands

# Tests (stdlib + pytest; ffmpeg required for frame tests)
.venv/bin/pytest -q                # or: python3 -m pytest -q

# Build the claude.ai upload bundle (archives skills/watch/ as the bundle root)
bash skills/watch/scripts/build-skill.sh   # → dist/watch.skill

# Dev: mirror the working tree into the installed Claude Code plugin cache
./dev-sync.sh                       # --dry-run to preview

Rules

  • Keep the version in sync across skills/watch/SKILL.md (frontmatter), .claude-plugin/plugin.json, and .codex-plugin/plugin.json when cutting a release.
  • Releasing: tag vX.Y.Z and push the tag; .github/workflows/release.yml builds dist/watch.skill and attaches it to the GitHub release.
  • Never commit real API keys or .env contents; keys live in ~/.config/watch/.env (mode 0600) at runtime.