by oxbshw
Give any AI agent the ability to watch video — and to watch its own work and fix it. MCP + CLI + REST; scene-aware frames, OCR, local-first transcription, persistent index, and THE LOOP.
# Add to your Claude Code skills
git clone https://github.com/oxbshw/watch-skillwatch-skill is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by oxbshw. Give any AI agent the ability to watch video — and to watch its own work and fix it. MCP + CLI + REST; scene-aware frames, OCR, local-first transcription, persistent index, and THE LOOP. It has 63 GitHub stars.
watch-skill's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/oxbshw/watch-skill" and add it to your Claude Code skills directory (see the Installation section above).
watch-skill is primarily written in Python. It is open-source under oxbshw on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh watch-skill against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Give any AI agent the ability to actually watch video.
Watch Skill turns any video — a URL from 1800+ sites, a live HLS/DASH stream, a local file, or a recording of the agent's own output — into a persistent, searchable index of frames, on-screen text, and transcript. Agents ask questions in seconds, get answers with auditable confidence and timestamp citations, and learn from their own mistakes. One engine, three surfaces: MCP (13 tools), CLI, and REST.
THE LOOP, live: iteration 0 flags TOTAL: $NaN as critical with a suggested
fix → the agent fixes the code → iteration 1 verifies FIXED and renders this
GIF.
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/oxbshw/watch-skill/main/scripts/install.sh | sh
# Windows
powershell -ExecutionPolicy Bypass -c "irm https://raw.githubusercontent.com/oxbshw/watch-skill/main/scripts/install.ps1 | iex"
The installer bootstraps uv/Python if missing, self-heals the binary deps
(ffmpeg, yt-dlp, deno via watch-skill doctor), and watch-skill setup
writes the MCP config into every agent it finds — Claude Code, Claude
Desktop, Cursor, Codex CLI, Windsurf, Gemini CLI — backing up anything it
touches. Then:
watch-skill watch "https://youtu.be/..." "what happens in this video?"
watch-skill ask <video_id> "when exactly does the demo crash?"
watch-skill serve # MCP stdio (--http for streamable HTTP)
Or skip the CLI entirely: restart your agent and say "watch this video:
<any URL> — what happens at 0:10?". Manual per-agent config lives in
docs/agents/.
--start/--end windows.search_videos spans
every video ever watched. Vector scoring is numpy-batched: 122 ms over
10k×384 vectors vs 5.46 s pure-Python (45×).report_mistake turns a
correction into a classified lesson in ~/.watch-skill/lessons.db —
local, never uploaded — injected into future similar questions across
every agent on the machine. Every mistake becomes a replayable eval:
watch-skill evals run reports the pass-rate over time.cached: true), a per-question token budget
the ladder respects, and a savings meter. On this machine, 9 answers
served ≈ 86,647 tokens saved vs raw-frame injection (watch-skill stats).Statuses are honestly graded — machine-tested ✅ (full end-to-end run in
the agent), machine-configured ◐ (watch-skill setup wrote the config
on a real machine and the server answered an MCP initialize; no in-app
chat run), doc-verified ☑ (matches the agent's official docs, not
executed here).
| Agent | Surface | Status |
|---|---|---|
| Claude Code | MCP (stdio) | machine-tested ✅ |
| Claude Desktop | MCP (stdio) | machine-configured ◐ |
| Cursor | MCP (stdio) | machine-configured ◐ |
| Codex CLI | MCP (stdio) | machine-configured ◐ |
| Cline | MCP (stdio) | doc-verified ☑ |
| Windsurf | MCP (stdio) | doc-verified ☑ |
| Gemini CLI | MCP (stdio) | doc-verified ☑ |
| VS Code (Copilot agent) | MCP (stdio) | doc-verified ☑ |
| Claude Code / claude.ai skills | watch-skill.skill bundle |
machine-tested ✅ |
| Anything with HTTP | REST + OpenAPI (watch-skill api) |
machine-tested ✅ |
| Any MCP client (remote) | MCP streamable HTTP (watch-skill serve --http) |
machine-tested ✅ |
Full matrix with per-agent install, config, and 3-step smoke tests: docs/agents/README.md. An AGENTS.md adapter covers agents that read repo-level instructions.
| Example | What it shows |
|---|---|
| 01-watch-and-ask | Watch a URL, ask follow-ups from the index — the core loop |
| 02-focused-moment | Dense sampling of a --start/--end window, get_moment around a timestamp |
| 03-cross-video-search | One query across every video ever watched |
| 04-ui-loop | THE LOOP: capture your own UI → critique → fix → re-verify with proof |
| 05-multilingual-arabic | Arabic in, Arabic out: script-aware OCR, folded search, cross-lingual ask |
| 06-agent-integration | Wiring the MCP server / REST API into an agent |
| 07-lessons-and-stats | report_mistake → lesson → replayable eval; the savings meter |
Thin surfaces, one core. src/watch_skill holds all logic; MCP, CLI, and
REST are wrappers that never diverge.
flowchart LR
subgraph agents["any agent"]
CC[Claude Code] & CU[Cursor] & CX[Codex] & GA["...via REST"]
end
subgraph surfaces["surfaces (thin)"]
MCP["MCP stdio/HTTP<br/>13 tools"] --- CLI[CLI] --- API[REST + OpenAPI]
end
subgraph core["src/watch_skill — all logic"]
AC[acquire<br/>yt-dlp→fallbacks<br/>+ LRU cache] --> PE[perceive<br/>scenes · phash dedup · OCR]
PE --> TR[transcribe<br/>captions → local whisper]
TR --> IX[(index<br/>SQLite FTS5 + vectors<br/>+ answer cache)]
PE --> VI[vision<br/>cheap/strong tiers<br/>5 providers]
VI --> IX
IX --> AN[answer<br/>confidence · escalation<br/>honest floor]
LS[(lessons<br/>~/.watch-skill/lessons.db)] --> AN
AN --> LS
LP[THE LOOP<br/>capture → critic → diff] --> VI
end
agents --> surfaces --> core
Deep dive: docs/architecture.md — including "add a vision provider in ~20 lines" and "add a new Loop type".
Watch Skill began as an attempt to surpass claude-video — the skill that first gave Claude a video input, and the source of ideas we kept (token-aware frame budgets, captions-first transcription, focused mode). Credit where due: it is simpler to adopt for Claude-only workflows and has no engine to install. What's different:
| | claude-video | Watch Ski