# How to Use the /watch Command with Codex, Cursor, Copilot, and Claude Code

> Master the /watch command with Codex Cursor Copilot and Claude Code. Learn how this versatile tool streamlines your workflow across AI platforms using a universal installation method.

- Repository: [bradautomates/claude-video](https://github.com/bradautomates/claude-video)
- Tags: how-to-guide
- Published: 2026-07-26

---

**The `/watch` command works identically across Codex, Cursor, Copilot, and Claude Code through a host-agnostic skill design that uses relative paths and universal installation via `npx skills add`.**

The `/watch` command from the `bradautomates/claude-video` repository allows AI agents to download YouTube videos, extract frames, and generate transcripts using a single slash command. Because the skill avoids host-specific environment variables like `CLAUDE_SKILL_DIR` and relies only on relative paths resolved from [`SKILL.md`](https://github.com/bradautomates/claude-video/blob/main/SKILL.md), the same installation and invocation pattern works across all major AI hosts without modification.

## Installing the /watch Skill Across Different AI Hosts

The skill supports two installation paths depending on which AI host you are using. Both methods preserve the critical directory structure required by the scripts.

### Universal Installation for Codex, Cursor, and Copilot

For hosts that support the Agent Skills CLI (including Codex, Cursor, and Copilot), install the skill globally using **npm**:

```bash
npx skills add bradautomates/claude-video -g

```

This command copies the entire `skills/watch/` folder into the host’s plugin cache while maintaining the relative layout required by [`watch.py`](https://github.com/bradautomates/claude-video/blob/main/watch.py). The installation references the manifest in [`.codex-plugin/plugin.json`](https://github.com/bradautomates/claude-video/blob/main/.codex-plugin/plugin.json) to expose the `/watch` command.

### Claude Code Installation

For Claude Code users, use the native marketplace commands:

```bash
/plugin marketplace add bradautomates/claude-video
/plugin install watch@claude-video

```

According to the installation table in [`AGENTS.md`](https://github.com/bradautomates/claude-video/blob/main/AGENTS.md), this registers the skill using the manifest located at [`.claude-plugin/plugin.json`](https://github.com/bradautomates/claude-video/blob/main/.claude-plugin/plugin.json).

## How the /watch Command Works Under the Hood

When you invoke `/watch`, the entry point [`skills/watch/scripts/watch.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/watch.py) orchestrates a three-stage pipeline:

1. **Download**: [`skills/watch/scripts/download.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/download.py) wraps **yt-dlp** to fetch video/audio streams
2. **Frame Extraction**: [`skills/watch/scripts/frames.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/frames.py) calls **ffmpeg** to extract frames at auto-detected fps
3. **Transcription**: [`skills/watch/scripts/transcribe.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/transcribe.py) and [`skills/watch/scripts/whisper.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/whisper.py) handle local or API-based Whisper transcription

This architecture is deliberately host-agnostic. As implemented in [`skills/watch/SKILL.md`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/SKILL.md), all script invocations use paths relative to the skill directory itself, never relying on environment variables that might differ between Codex, Cursor, or Copilot.

## Configuring API Keys and Runtime Options

Optional configuration lives in [`skills/watch/scripts/config.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/config.py), which reads host-agnostic settings from a local environment file. To use a custom **Whisper API key** instead of local inference, create the following file:

```bash
mkdir -p ~/.config/watch
echo "WHISPER_API_KEY=your_key_here" > ~/.config/watch/.env

```

This configuration is loaded at runtime and is not version-controlled, keeping secrets out of the repository regardless of which AI host you use.

## Using the /watch Command After Installation

Once installed, the command syntax is identical across all supported hosts. Provide a URL (or local file path) followed by an optional analysis question.

**On Codex, Cursor, or Copilot:**

```text
/watch https://www.youtube.com/watch?v=dQw4w9WgXcQ "Summarize the main points about AI automation"

```

**On Claude Code:**

```text
/watch https://youtu.be/dQw4w9WgXcQ "What is the speaker's argument regarding privacy?"

```

The skill processes the video independently and returns the transcript or summary as a chat message in the host interface.

## Key Source Files in the Repository

Understanding these files helps with debugging or extending the functionality:

- **[`skills/watch/SKILL.md`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/SKILL.md)** – Defines the canonical skill contract and `/watch` command metadata
- **[`skills/watch/scripts/watch.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/watch.py)** – Main entry point that orchestrates the download → frame extraction → transcription pipeline
- **[`skills/watch/scripts/download.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/download.py)** – Wrapper around yt-dlp for reliable video fetching
- **[`skills/watch/scripts/frames.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/frames.py)** – FFmpeg integration for frame extraction
- **[`skills/watch/scripts/transcribe.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/transcribe.py)** and **[`whisper.py`](https://github.com/bradautomates/claude-video/blob/main/whisper.py)** – Handles Whisper-based transcription (local or API)
- **[`skills/watch/scripts/config.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/config.py)** – Loads runtime configuration from `~/.config/watch/.env`

## Summary

- The `/watch` command works across **Codex, Cursor, Copilot, and Claude Code** without host-specific modifications
- Install via `npx skills add bradautomates/claude-video -g` for universal hosts, or `/plugin install` for Claude Code
- The skill uses **relative paths** from [`SKILL.md`](https://github.com/bradautomates/claude-video/blob/main/SKILL.md) rather than environment variables like `CLAUDE_SKILL_DIR`
- Core pipeline runs through [`watch.py`](https://github.com/bradautomates/claude-video/blob/main/watch.py), utilizing [`download.py`](https://github.com/bradautomates/claude-video/blob/main/download.py), [`frames.py`](https://github.com/bradautomates/claude-video/blob/main/frames.py), and [`transcribe.py`](https://github.com/bradautomates/claude-video/blob/main/transcribe.py)
- Configure API keys in `~/.config/watch/.env` as read by [`config.py`](https://github.com/bradautomates/claude-video/blob/main/config.py)

## Frequently Asked Questions

### Is the /watch command available on all AI hosts that support Agent Skills?

Yes. Because the repository avoids host-specific environment variables and uses only relative path resolution from [`SKILL.md`](https://github.com/bradautomates/claude-video/blob/main/SKILL.md), any AI host implementing the Agent Skills specification—including Codex, Cursor, Copilot, and Claude Code—can run the `/watch` command without modification.

### Where does the skill store temporary files and configuration?

The skill creates working directories relative to its installation path during execution. Permanent configuration, such as the `WHISPER_API_KEY`, is read from `~/.config/watch/.env` as handled by [`skills/watch/scripts/config.py`](https://github.com/bradautomates/claude-video/blob/main/skills/watch/scripts/config.py), keeping sensitive data outside the repository.

### Can I use a custom Whisper API key instead of local transcription?

Yes. Create a file at `~/.config/watch/.env` containing `WHISPER_API_KEY=your_key`. The [`config.py`](https://github.com/bradautomates/claude-video/blob/main/config.py) module loads this at runtime, allowing [`transcribe.py`](https://github.com/bradautomates/claude-video/blob/main/transcribe.py) to switch from local Whisper inference to API-based transcription automatically.

### Does the /watch skill require external dependencies like ffmpeg and yt-dlp?

Yes. The scripts in `skills/watch/scripts/` require **yt-dlp** for video downloading and **ffmpeg** for frame extraction. These must be installed on your system and available in your PATH before invoking `/watch`, as the Python scripts call them via subprocess from [`download.py`](https://github.com/bradautomates/claude-video/blob/main/download.py) and [`frames.py`](https://github.com/bradautomates/claude-video/blob/main/frames.py) respectively.