# watch-skill

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/oxbshw/watch-skill  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/watch-skill

## Description
Watch video and live sessions, keep timestamped evidence, and verify an agent's own work.

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "watch-skill": {
    "command": "npx",
    "args": ["-y","watch-skill"]
  }
}
```

## Documentation & README

<!-- mcp-name: io.github.oxbshw/watch-skill -->
<div align="center">

<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/watch-skill-hero.webp" alt="Watch Skill: a pixel-art scene of the Watch Skill mascot watching a screen. A filmstrip above shows the four stages — watch a source, remember it as OCR and transcript, resolve timestamped evidence, then run THE LOOP to critique and fix. The screen shows a video library, an evidence list with timestamps, and a capture-critique-fix-verify cycle ending in VERIFIED." width="760">

# Watch Skill · DeepWatch

**Give AI agents eyes, ears, and verifiable results.**

**Watch Skill** turns video, audio and screen activity into searchable,
timestamped evidence, and answers *did that actually work?* with a
deterministic contract rather than a model's opinion. Add it to the agent you
already use over MCP.

**DeepWatch** is a ready-made agent workspace — the official DeepSeek Harness
with Watch Skill already composed in — where every tool call leaves a receipt
you can open and every result can be checked by something other than the agent
that produced it.

[![PyPI](https://img.shields.io/pypi/v/watch-skill?label=watch-skill&logo=pypi&logoColor=white)](https://pypi.org/project/watch-skill/)
[![Downloads](https://img.shields.io/pypi/dm/watch-skill?label=pypi%20downloads)](https://pypi.org/project/watch-skill/)
[![Python](https://img.shields.io/pypi/pyversions/watch-skill?logo=python&logoColor=white)](https://pypi.org/project/watch-skill/)
[![npm](https://img.shields.io/npm/v/@deepwatch/cli?label=%40deepwatch%2Fcli&logo=npm&logoColor=white)](https://www.npmjs.com/package/@deepwatch/cli)
[![dsh-bundle](https://img.shields.io/npm/v/@deepwatch/dsh-bundle?label=%40deepwatch%2Fdsh-bundle&logo=npm&logoColor=white)](https://www.npmjs.com/package/@deepwatch/dsh-bundle)
[![DeepWatch release](https://img.shields.io/github/v/release/oxbshw/watch-skill?filter=deepwatch-v*&label=DeepWatch%20release)](https://github.com/oxbshw/watch-skill/releases?q=deepwatch)
[![Node](https://img.shields.io/badge/node-%E2%89%A5%2022.19-339933?logo=node.js&logoColor=white)](workspace/docs/install-and-upgrade.md)
[![Agent Skills](https://www.skills.sh/b/oxbshw/watch-skill)](https://www.skills.sh/oxbshw/watch-skill/watch)
[![MCP](https://img.shields.io/badge/MCP-stdio%20%C2%B7%20HTTP-8A2BE2)](docs/agents/README.md)
[![License](https://img.shields.io/github/license/oxbshw/watch-skill)](LICENSE)

[![CI](https://github.com/oxbshw/watch-skill/actions/workflows/ci.yml/badge.svg)](https://github.com/oxbshw/watch-skill/actions/workflows/ci.yml)
[![Workspace](https://github.com/oxbshw/watch-skill/actions/workflows/workspace-ci.yml/badge.svg)](https://github.com/oxbshw/watch-skill/actions/workflows/workspace-ci.yml)
[![Install](https://github.com/oxbshw/watch-skill/actions/workflows/install.yml/badge.svg)](https://github.com/oxbshw/watch-skill/actions/workflows/install.yml)

[Install](#start-here) ·
[THE LOOP](#the-loop-observe-act-verify) ·
[Workspace](#the-deepwatch-workspace) ·
[Architecture](#how-it-fits-together) ·
[Docs](#documentation) ·
[Community](#community)

</div>

---

## Two capabilities, and they work apart

**Perception.** Video, audio and screen activity become frames, transcripts and
OCR text, each carrying an absolute timestamp. Index a source once and query it
for as long as you keep it; every answer cites a moment you can open.

**Verification.** A frozen contract — file digests, JSON values, SQL results,
HTTP responses, DOM state — is evaluated by a separate process. The verdict is
`VERIFIED`, `FAILED`, `UNVERIFIED` or `INCONCLUSIVE`, and it does not come from
a language model.

Either is useful on its own, and the split is deliberate.

<table>
<tr>
<td width="50%" valign="top">

### Watch Skill — the engine

Index a recording once and ask it questions for as long as you keep it. Answers
cite timestamps you can open. Verification contracts check file digests, JSON
values, SQL results, HTTP responses and DOM state, and report *passed*,
*failed*, *unverified* or *inconclusive* — four answers, because three of them
are not the same as "no".

Any agent can use it: **MCP**, a **CLI**, or a **REST** API.

</td>
<td width="50%" valign="top">

### <img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/workspace/packages/watch/brand/assets/watch-orca-32.png" alt="" width="22" align="absmiddle"> DeepWatch — the workspace

The official [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)
with Watch Skill composed in, installed by one command. You get an agent that
can see and prove, without wiring anything together yourself.

Every tool call leaves a receipt naming what it touched. Every path a tool
declares is checked against one workspace boundary, so a tool cannot quietly
write outside it. Results carry a Core verdict you can open, and the Library
keeps them after a restart.

Runs in your browser. Compare puts two runs of the same contract side by side
and shows where their verdicts diverged.

</td>
</tr>
</table>

**Watch Skill sees and proves. DeepWatch is the workspace it comes built into.**

---

## Start here

Three entry paths. Pick the row that describes you.

| You have | You want | Go to |
| --- | --- | --- |
| An agent already (Claude Code, Cursor, Codex, any MCP client) | Give it eyes, ears and verification | [Watch Skill](#1-add-watch-skill-to-an-agent-you-already-use) |
| Nothing yet | The whole workspace, agent included | [DeepWatch](#2-the-whole-workspace) |
| A DeepSeek Harness you already run | Add Watch to it, keep your setup | [`@deepwatch/dsh-bundle`](#3-into-a-deepseek-harness-you-already-run) |

### 1. Add Watch Skill to an agent you already use

```bash
pip install 'watch-skill[standard]'   # frames, retrieval and the MCP server
watch-skill doctor                    # checks, and repairs what it can
watch-skill watch <video-url-or-file>
watch-skill ask <id> "what changed at 3:12?"
```

**Take the extra seriously.** A bare `pip install watch-skill` gives you the
CLI, the verifier and the Bridge, and it cannot extract a frame: `watch` stops
at `perceive.missing_dependency` on the first video. `[standard]` is frames,
retrieval and MCP; add `[ocr]` to read on-screen text, `[whisper]` for local
transcription when a source has no captions, `[loop]` for the browser, or take
`[all]`. `watch-skill doctor` names the exact command for whatever is missing.

Wire it into any MCP client — `[standard]` includes the server:

```bash
watch-skill serve              # stdio MCP server, 39 tools
```

Or install the skills into 25+ agents at once:

```bash
npx skills add oxbshw/watch-skill -g
```

<div align="center">

[<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/agents/claude-code.webp" width="76" alt="Claude Code">](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/claude-code.md)
[<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/agents/cursor.webp" width="76" alt="Cursor">](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/cursor.md)
[<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/agents/codex-cli.webp" width="76" alt="Codex CLI">](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/codex-cli.md)
[<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/agents/github-copilot-cli.webp" width="76" alt="GitHub Copilot CLI">](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/github-copilot-cli.md)
[<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/agents/gemini-cli.webp" width="76" alt="Gemini CLI">](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/gemini-cli.md)
[<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/agents/cline.webp" width="76" alt="Cline">](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/cline.md)
[<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/agents/zed.webp" width="76" alt="Zed">](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/zed.md)
[<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/agents/windsurf.webp" width="76" alt="Windsurf">](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/windsurf.md)
[<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/agents/opencode.webp" width="76" alt="OpenCode">](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/opencode.md)
[<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/agents/vscode.webp" width="76" alt="VS Code">](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/vscode.md)

**[Every supported client, and how far each is verified →](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/README.md)**

</div>

### 2. The whole workspace

**Prerequisites.** Node **22.19+ or 24+**. Python 3.11+ only if you want the
perception and verification engine — DeepWatch starts without it and reports
every Watch capability as unavailable until it is there.

```bash
# 1. the engine that sees and proves (optional, but it is the point)
pip install 'watch-skill[standard,ocr]'

# 2. the workspace
npm install -g @deepwatch/cli
deepwatch doctor                     # what is present, what is missing, how to fix it
deepwatch setup                      # builds the runtime; shows the download and asks first

# 3. a workspace directory to work in
mkdir my-project
deepwatch web --workspace ./my-project
```

`deepwatch web` prints a local URL and opens the workspace there.

**Without a global install**, the same package through `npx`:

```bash
npx --yes @deepwatch/cli setup
mkdir my-project
npx --yes @deepwatch/cli web --workspace ./my-project
```

`npx` is a way of running `@deepwatch/cli`, not a different package — there is
no unscoped `deepwatch` on npm.

**What `setup` downloads.** The pinned DeepSeek Harness, its exact required
peers, and the DeepWatch packages at this release's version, into a runtime
under your DeepWatch home. It prints the registry, the versions and the
destination and stops for your agreement; `--yes` agrees in advance and
`--offline` refuses outright. Nothing is installed globally except the CLI you
installed yourself. `--artifacts <dir>` installs from verified local tarballs
instead, for an air-gapped machine or a checkout build.

**A model provider is not required to start.** The workspace boots, the Library
works and Watch tools answer without one. Configure a provider in Settings when
you want the agent to reason; `deepwatch doctor` reports what is configured.

### 3. Into a DeepSeek Harness you already run

```bash
dsh plugin --profile web add @deepwatch/dsh-bundle
```

**Compatible Harness.** This release was measured against
`@deepseek-ai/dsh@0.1.1-rc.2`, exactly — it is a pinned peer, not a range, so a
profile on a different Harness is a combination nobody tested. `dsh --version`
tells you which you have.

That is the whole installation. The package declares `dsh.bundle.patch`, so DSH
reconciles it into the profile's layer stack and applies the patch after its
own. Four narrower variants — media, browser, memory, document — are declared
alongside it for a profile that wants one capability rather than all of them.

Add the engine — with the extras, because the bundle's media capabilities are
the engine's:

```bash
pip install 'watch-skill[standard,ocr]'
```

`[standard]` is frames, retrieval and MCP; `[ocr]` reads on-screen text. A bare
`pip install watch-skill` installs a Core that cannot extract a frame, and the
Bridge would connect to it and report `perceive.missing_dependency` on the first
video. The Bridge finds the executable on `PATH` by itself.

Full guide: **[`@deepwatch/dsh-bundle`](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/packages/watch/bundle/README.md)**.

**Requirements.** Node ≥ 22.19 and Python 3.11, 3.12 or 3.13 — the versions CI
runs and the classifiers declare. Windows, macOS and Linux.

---

## THE LOOP: observe, act, verify

Perception is only half of it. THE LOOP is what an agent does with perception
when it is trying to fix something.

<div align="center">
<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/docs/assets/loop_before_after.gif" alt="THE LOOP: an agent finds TOTAL: $NaN on its own checkout page, receives a structured critique naming the timestamp the fault was visible at, the code is fixed, and a re-capture confirms the fault is gone." width="720">
</div>

```bash
pip install 'watch-skill[standard,loop]' && playwright install chromium

watch-skill loop start http://localhost:3000/checkout \
  "the total updates when quantity changes, and no NaN appears"
```

1. **Observe** — a real browser records the page to video; frames are extracted
   and OCR'd, each with an absolute timestamp.
2. **Critique** — a vision model is asked whether the capture meets the criteria
   you wrote. It reports issues with the timestamp each was seen at.
3. **Fix** — you change the code.
4. **Verify** — `watch-skill loop iterate` re-captures and diffs against the
   previous run, so "fixed" means the thing that was wrong is gone.

The critique step needs a vision-capable model. Without one, capture, frames,
OCR and verification still work, and the critique says it cannot judge rather
than guessing. See **[THE LOOP](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/guides/the-loop.md)**.

### Corrections become lessons

When an answer is wrong, you correct it. Watch Skill classifies the correction,
stores it as a lesson in the local store, re-asks the question with the lesson
applied where the error class is mechanical, and counts what that saved.

Lessons persist between runs and stay on your machine. Nothing learns on its
own — the correction is yours to give — and nothing is uploaded.
**[Lessons and savings](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/guides/lessons-and-savings.md)**.

---

## The DeepWatch Workspace

Everything above is the engine, and any agent can use it. DeepWatch is the
official DeepSeek Harness with Watch Skill already composed in, so an agent you
run there produces receipts and verdicts without you wiring anything up.

Four screens, in the order you meet them.

<div align="center">
<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/workspace/docs/screenshots/release/05-ordinary-task.png" width="86%" alt="A DeepWatch session titled 'Create totals.json and read sum'. Write, Read and Pwsh tool rows are listed, each naming a workspace-relative path such as owner-test/totals.json, and the reply states the file contents and the total read back from it.">
</div>

**1 · An ordinary task.** Nobody mentioned Watch. Every row is a receipt, every
path is workspace-relative, and the total was read back from the file rather
than remembered.

<div align="center">
<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/workspace/docs/screenshots/release/08-library-receipts.png" width="86%" alt="The Library screen showing thirteen matches, with rows for read and write on owner-test/totals.json and a pwsh call. A notice reads 'Index ready. Answered by this workspace's own host', and the page is marked Local-first.">
</div>

**2 · Evidence, retrieved.** Every source and every receipt this workspace
recorded. The index is built and searched by the workspace's own host, with no
model and no external service in the path — this screen is answered entirely on
your machine.

<div align="center">
<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/workspace/docs/screenshots/release/06-independent-verification.png" width="86%" alt="A VERIFIED result card from watch_verify: two of two checks passed, one confirming the file exists and one confirming its total field equals 60, shown with the contract's sha256 digest.">
</div>

**3 · Independent verification.** `watch_verify` froze a contract and Watch
Core answered. The agent did not grade itself: the contract's SHA-256 is on
screen, and the same contract run from a different directory fails.

<div align="center">
<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/workspace/docs/screenshots/release/09-compare-two-records.png" width="86%" alt="The Compare screen with two verification records selected. The left is a FAILED watch_verify and the right a VERIFIED one from the run that repaired the file; the difference table counts each as present on one side only.">
</div>

**4 · Compare, on real outcomes.** Two runs of one contract — a broken claim
and its repair — carrying the verdicts Core issued for each. A comparison
describes a difference; it never issues a verdict of its own.

Every image is a photograph of a running build, and each caption on
**[the screenshot page](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/docs/screenshots-release.md)** names the build
it came from. The full gallery is there too.

**What "local-first" means here, precisely.** Your sources, receipts, verdicts
and memory are stored on your machine, and Library search runs there. It does
not mean nothing uses the network: `setup` downloads the runtime from npm, some
Watch extras fetch a model the first time they run, and a hosted model provider
you configure receives what you send it. The parts that stay local are the
record and the retrieval over it.

---

## What people use it for

| | |
| --- | --- |
| **Ask a video a question** | Index a recording once, then ask about it. Answers cite timestamps you can open. [`01-watch-and-ask`](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/01-watch-and-ask) |
| **Prove an agent's work** | A deterministic contract Core runs — file digests, JSON values, SQL, HTTP, DOM. [`14-browser-verification`](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/14-browser-verification) |
| **Fix a UI by looking at it** | Capture, critique, fix, re-verify. [`04-ui-loop`](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/04-ui-loop) |
| **Search across everything** | One index over every source you have watched. [`03-cross-video-search`](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/03-cross-video-search) |
| **Work offline** | Local whisper and OCR, no provider, nothing leaves the machine. [`15-private-offline-workflow`](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/15-private-offline-workflow) |
| **Watch something live** | A stream or a browser session, bounded and cursored. [`18-live-watch`](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/18-live-watch) |

Each is a directory you can run, with its prerequisites and expected output
written next to it.

<details>
<summary><b>All 20 examples, by what they teach</b></summary>

<br>

| | |
| --- | --- |
| Learn the core | [01 Watch and ask](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/01-watch-and-ask) · [02 Focused moment](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/02-focused-moment) · [03 Cross-video search](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/03-cross-video-search) |
| Build with agents | [06 MCP and REST](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/06-agent-integration) · [09 Framework adapters](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/09-framework-adapters) · [15 Private offline workflow](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/15-private-offline-workflow) |
| Understand and organise | [05 Multilingual Arabic](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/05-multilingual-arabic) · [10 Structured extraction](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/10-structured-extraction) · [11 Batch mode](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/11-batch-mode) · [12 Library memory](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/12-library-memory) · [16 Shareable viewer](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/16-shareable-viewer) |
| Verify and improve | [04 UI loop](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/04-ui-loop) · [07 Lessons and stats](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/07-lessons-and-stats) · [08 Loop types](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/08-loop-types) · [13 Self-improvement](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/13-self-improvement) · [14 Browser verification](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/14-browser-verification) · [17 Freshness and offline](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/17-freshness-and-offline) · [20 Observer loop](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/20-observer-loop) |
| Watch live | [18 Live watch](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/18-live-watch) · [19 Live browser](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/19-live-browser) |

That is all 20 examples; the index is **[examples/](https://github.com/oxbshw/watch-skill/blob/HEAD/examples/README.md)**.

</details>

---

## How it fits together

```mermaid
flowchart LR
  subgraph W["DeepWatch workspace"]
    H["DeepSeek Harness<br/>agent, tools, UI"]
    P["Watch plugins<br/>tools · library · live · memory"]
    H <--> P
  end
  P <-->|"Bridge (stdio)"| C["Watch Core<br/>Python engine"]
  C --> E[("Evidence store<br/>frames · transcripts · index")]
  C --> V["Verifier<br/>isolated subprocess"]
  V --> R[("Verification records<br/>contract · checks · verdict")]
  P --> J[("Receipt journal<br/>one per tool call")]
  A["Any other agent<br/>MCP · CLI · REST"] <--> C
```

**Watch Core is the only thing that issues a verdict.** The Host may notice,
correlate, freeze a contract and ask — it may not decide the answer. That is
[ADR-002](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/docs/adr/), and a build gate fails if anything under
`packages/` starts producing verdicts.

A receipt records what a tool call *did*; a verdict records what Core *checked*.
They are written by different processes and the Library shows them as different
columns, because an agent that ran a command successfully and an agent that did
the right thing are not the same claim.

More: **[architecture](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/architecture.md)** ·
**[verification](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/verification.md)** ·
**[the 39 tools](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/tools/README.md)**.

---

## What works, and what it needs

| Capability | Out of the box | Needs |
| --- | --- | --- |
| Start the app, browse, read diagnostics | ✅ | nothing |
| Verification contracts, containment, receipts | ✅ | nothing |
| Video frames and scenes | with `[standard]` | `ffmpeg` ≥ 5.1 — `watch-skill doctor` installs it |
| Reading on-screen text | with `[ocr]` | a first-use model download (~80 MB) |
| Speech to text | with `[whisper]` | a first-use model download; captions are used first when a source has them |
| Chat with an agent | — | a provider you add and bind |
| Visual scene description | — | a model that can see images |
| Browser capture / THE LOOP | with `[loop]` | `playwright install chromium` |
| Memory | off | enable in Settings; the store is plaintext and says so |
| Desktop app | not distributed — [no installer exists](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/docs/known-limitations.md) | run `deepwatch web` |

DeepWatch starts, and stays useful, with no provider configured: verification,
containment, the Library and local perception are all local. What needs a
provider is the *agent* — chat, tool use, and the critique step of THE LOOP.

**Three ways a capability arrives, and they are not interchangeable.** A **local
dependency** (`ffmpeg`, `yt-dlp`, a JS runtime) runs on your machine and
`watch-skill doctor` will fetch and repair it. A **downloaded model** (OCR
weights, whisper) also runs on your machine, is a large one-time download, and
nothing about your files leaves it. A **hosted provider** — the agent's model,
and any vision model you bind — is somebody else's service, with their latency,
price and terms, and it sees what you send it. An OpenAI-compatible server you
run yourself (Ollama, vLLM, LM Studio, llama.cpp) is the hosted route pointed at
your own hardware: the data stays local, and whether a given model supports tool
calls or images is a property of that model, which DeepWatch reports rather than
works around.

Nothing reaches a provider until you add one, and holding a provider credential
is not permission to upload a frame or a transcript — that is a separate
consent.

**What repairs itself.** `watch-skill doctor` repairs *dependencies*: it
downloads `yt-dlp` and keeps it current, bootstraps a JS runtime, installs OCR
language data, and fetches `ffmpeg` where it can, reporting every repair. That
is the only thing here that acts without being asked. There is no automatic task
resumption, no autonomous learning, and no encryption at rest in this release.
**[Known limitations](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/docs/known-limitations.md)** is the full list.

---

## Measured, not asserted

Against a leading video-understanding API, same files, same scorer:

| | Watch Skill | Baseline |
| --- | --- | --- |
| Written-analysis groundedness | **89.7%** | 27.9% |
| Citations per 100 words | **13.23** | 0.12 |
| Frame delivery on real footage | **96.9%** | 31.2% |
| Cue starts within half a second | **100%** | 25% |

Method and fixtures: **[benchmarks/video_backends/](https://github.com/oxbshw/watch-skill/blob/HEAD/benchmarks/video_backends/README.md)**.
Trade-offs against the alternatives: **[comparison](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/comparison.md)**.

---

## Documentation

| | |
| --- | --- |
| [Getting started](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/getting-started.md) | Install, first watch, first agent connection |
| [Install and upgrade](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/docs/install-and-upgrade.md) | Both products, optional extras, compatibility policy |
| [Configuration](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/configuration.md) | Settings, providers, storage locations |
| [Tool reference](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/tools/README.md) | All 39 MCP tools and their REST/CLI counterparts |
| [Verification](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/verification.md) | Contracts, the fourteen check types, assurance levels |
| [Architecture](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/architecture.md) | Boundaries, data flow, extension points |
| [Agent matrix](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/agents/README.md) | Per-client setup and how far each is verified |
| [Troubleshooting](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/troubleshooting.md) | Dependency repair and common runtime errors |
| [Cost](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/cost.md) | What runs free, what a provider charges for |
| [Known limitations](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/docs/known-limitations.md) | What this release does not do |

**DeepWatch:** [workspace README](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/README.md) ·
[setup](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/docs/setup.md) ·
[the twenty packages](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/docs/packages.md) ·
[releasing](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/docs/releasing.md) ·
[platform support](https://github.com/oxbshw/watch-skill/blob/HEAD/workspace/docs/platform-support.md)

Three tool counts, because they answer different questions: **39** MCP tools
from `watch-skill serve`, **22** `watch_*` tools added to an agent inside
DeepWatch, **47** tools that agent is offered in total.

---

## Community

Written by other people, about using this:

- [Watch Skill 使用教程：让 Codex 看懂视频和录屏](https://www.opcchina.ai/?p=4329) — step-by-step tutorial for wiring Watch Skill into Codex (Chinese)
- [Watch Skill: AI video analysis and video correction](https://en.aistacknav.com/watch-skill-ai-video-analysis-video-correction/) — setup and operation guide with its own use cases and troubleshooting (English)
- [Video walkthrough](https://www.bilibili.com/video/BV1XnNK6DEdr/) · [second part](https://www.bilibili.com/video/BV1eBKp6TEKh/) — Bilibili (Chinese)
- [Skills.sh](https://www.skills.sh/oxbshw/watch-skill/watch) · [SkillsMP](https://skillsmp.com/creators/oxbshw/watch-skill) — install directly from a skills directory

The full collection, separated into tutorials, video, integrations and
directory listings: **[docs/ecosystem.md](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/ecosystem.md)**.

---

## Contributing

Issues and pull requests welcome. **[CONTRIBUTING.md](https://github.com/oxbshw/watch-skill/blob/HEAD/CONTRIBUTING.md)** has the
twenty-minute path: what to install, which gate to run, and how the commit
messages are shaped. Security policy: **[SECURITY.md](https://github.com/oxbshw/watch-skill/blob/HEAD/SECURITY.md)**. Design
decisions and their reasons: **[DECISIONS.md](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/DECISIONS.md)** and
**[ROADMAP.md](https://github.com/oxbshw/watch-skill/blob/HEAD/docs/ROADMAP.md)**.

<div align="center">
<br>
<img src="https://raw.githubusercontent.com/oxbshw/watch-skill/HEAD/workspace/packages/watch/brand/assets/watch-orca-64.png" alt="" width="44">

Built on DeepSeek Harness · Powered by Watch Skill

DeepWatch and Watch Skill are independent projects and are not affiliated with
or endorsed by DeepSeek.

</div>

