Skip to content
Productivity
Skill

/pair-programmer

AI pair programming with real-time screen and audio context. Use when the user wants to record their screen, start/stop recording, or get context from what they're doing.

BOOST
From plugin
pair-programmer
1311 skill
Install
$ npx -y skills add video-db/pair-programmer --skill pair-programmer --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/pair-programmer

Context preview

The summary Claude sees to decide when to auto-load this skill.

AI pair programming with real-time screen and audio context. Use when the user wants to record their screen, start/stop recording, or get context from what they're doing.

SKILL.md

pair-programmer.SKILL.md
name: pair-programmer
description: AI pair programming with real-time screen and audio context. Use when the user wants to record their screen, start/stop recording, or get context from what they're doing.

VideoDB Pair Programmer

AI pair programming with real-time screen and audio context. Record your screen and audio, with AI-powered indexing that logs visual and audio events in real-time.

Commands

When user asks for a command, read the corresponding file for instructions:

| Command | Description | Reference | |---------|-------------|-----------| | `/pair-programmer record` | Start screen/audio recording | See [commands/record.md](commands/record.md) | | `/pair-programmer stop` | Stop the running recording | See [commands/stop.md](commands/stop.md) | | `/pair-programmer search` | Search recording context (screen, mic, audio) | See [commands/search.md](commands/search.md) | | `/pair-programmer act` | Act on a spoken instruction from the mic | See [commands/act.md](commands/act.md) | | `/pair-programmer what-happened` | Summarize recent activity | See [commands/what-happened.md](commands/what-happened.md) | | `/pair-programmer setup` | Install deps and configure API key | See [commands/setup.md](commands/setup.md) | | `/pair-programmer config` | Change indexing and other settings | See [commands/config.md](commands/config.md) |

How It Works

1. User runs `/pair-programmer setup` to install dependencies and set `VIDEO_DB_API_KEY` environment variable 2. User runs `/pair-programmer record` to start recording 3. A picker UI appears to select screen and audio sources 4. Recording starts and events are logged to `/tmp/videodb_pp_events.jsonl` 5. User can stop recording from the tray icon (🔴 PP → Stop Recording)

Output Files

| Path | Content | |------|---------| | `/tmp/videodb_pp_pid` | Process ID of the recorder | | `/tmp/videodb_pp_events.jsonl` | All WebSocket events (JSONL format) | | `/tmp/videodb_pp_info.json` | Current session info (session_id, rtstream_ids) |

Event File Format

Events are written as JSONL (one JSON object per line):

{"ts": "2026-03-05T10:15:30.123Z", "unix_ts": 1709374530.12, "channel": "visual_index", "data": {"text": "User is viewing VS Code with auth.ts open"}}
{"ts": "2026-03-05T10:15:31.456Z", "unix_ts": 1709374531.45, "channel": "transcript", "data": {"text": "Let me check the login flow", "is_final": true}}

Environment Variables

The recorder reads these from environment variables:

| Variable | Required | Description | |----------|----------|-------------| | `VIDEO_DB_API_KEY` | Yes | VideoDB API key | | `VIDEO_DB_BASE_URL` | No | API endpoint (default: https://api.videodb.io) |

Reading Context

Events are in `/tmp/videodb_pp_events.jsonl`. Use CLI tools to filter — never read the whole file.

| Channel | Content | Density | |---------|---------|---------| | `visual_index` | Screen descriptions | Dense (~1 every 2s) | | `transcript` | Mic speech | Sparse (sentences) | | `audio_index` | System audio summaries | Sparse (sentences) |

**Channel filter** — use grep to filter by channel, pipe to `tail` for recent events:

grep '"channel":"visual_index"' /tmp/videodb_pp_events.jsonl | tail -10

**Keyword search** — grep across all channels:

grep -i 'keyword' /tmp/videodb_pp_events.jsonl

**Time-window filter** — filter events from the last N minutes: 1. Get current epoch: `$(date +%s)` 2. Compute cutoff: `epoch - N*60` 3. Filter lines where the `unix_ts` JSON field exceeds the cutoff 4. Pipe through `grep` to narrow by channel

Generate the appropriate filtering command (grep, awk, python3, jq) based on complexity.

For semantic search across indexed content, use `search-rtstream.js`:

node search-rtstream.js --query="your query" --cwd=<PROJECT_ROOT>

> `<PROJECT_ROOT>` is the absolute path to the user's project directory. This is NOT the skill directory — resolve it before running the command.

See [commands/search.md](commands/search.md) for the full search strategy and CLI patterns.

Read more
Ships withpair-programmer

Pair Programmer for Claude Code, Codex and Cursor

Get the whole plugin
Stats
131
Stars
22
Forks
Quiet
Maintenance
JavaScript
Language
6mo ago
Last commit
8mo ago
Created
9h ago
Added

Repo: video-db/pair-programmer