SkipWatch

Paste a video.
Claude knows kung fu.

A Claude Code plugin that turns a tutorial video into an installed Agent Skill, with every step traced to the moment in the video it came from.

Inside Claude Code
› /plugin marketplace add robert-botto/skipwatch
› /plugin install skipwatch@skipwatch
› /skipwatch <video link>

Free and open source (MIT). Needs Claude Code and uv.

scroll

You pause. You rewind. You squint at a terminal and type the command by hand. Next month you watch it again.

SkipWatch watches it once for you. It reads the captions or transcribes the audio, looks at the frames, and writes a skill Claude can use from then on.

A real run

Every step says where it came from.

Every step ends with exactly one tag. The check matches each quote against the transcript, the frame notes or the post. What the video never shows is marked, not made up.

From a skill made from a TypeScript tip Matt Pocock posted on X. Excerpt.

  1. Add the three DeepPartial types to the file.

    export type DeepPartial<Thing> = Thing extends Function
      ? Thing
      : Thing extends Array<infer InferredArrayMember>
      ? DeepPartialArray<InferredArrayMember>
      : Thing extends object
      ? DeepPartialObject<Thing>
      : Thing | undefined;

    Expected: the types compile and sit above the Post interface.

    [on-screen 00:33]
  2. Annotate the mock with DeepPartial<Post> instead of Post (the annotation line is not in any frame that was read).

    Expected: the missing meta error goes away.

    [inferred]
  3. Provide only the fields the test needs, at any depth.

    So a deep partial, as we've got there, it actually goes and makes everything inside it partial, too.

    Expected: nested fields such as meta.name and comments[].value are optional too.

    [spoken 00:58]

The four source tags

[spoken mm:ss]
The creator said it at that time. The quote must match the transcript.
[on-screen mm:ss]
It was on screen at that time. A frame-reader agent copied it exactly.
[written]
It came from the post, its thread or a page it links to.
[inferred]
Claude filled a gap. The review screen and the skill list it under Unverified.

Under the hood

An engine does the mechanical work.
Claude does the reading.

  1. 01Your linkYouTube, X, TikTok, Instagram, Facebook, or a recording
  2. 02Ingestdownload through yt-dlp
  3. 03Transcribe + framescaptions first, then local Whisper; a frame a second, stills collapsed
  4. 04frame-readeragents copy commands, code and settings exactly as shown
  5. 05DistillClaude writes the skill from transcript and notes
  6. 06skill-criticreviews the draft against the source
  7. 07Checkprovenance, redaction, safety, style, structure
  8. 08Reviewyou see everything before it lands
  9. 09Installonly after your yes

Claude itself never looks at a frame image, so untrusted pixels stay out of the session that can run commands.

The review screen

Nothing installs until you say yes.

Counts, gaps, safety flags, confidence and the source, on one screen. Pick an answer to see what it does.

Screen from a real run, which used --yes. The prompt line is what you see without it. --yes skips the prompt only when safety flags, gaps and name collisions are all zero.

claude
> /skipwatch https://x.com/mattpocockuk/status/1505892984658743300

Skill ready for review: g2-skill
  Triggers: "add a DeepPartial type", "make every nested field optional in my test fixture", "Partial only goes one level deep, how do I mock a nested object"
  Steps: 4 (1 spoken, 2 on-screen, 0 written, 1 inferred), 0 gaps
  Unverified: step 3 (DeepPartial<Post> annotation on the mock not in any read frame)
  Unread frames: none
  Safety flags: none
  Confidence: medium (critic not run)
  Source: "Matt Pocock - 🔥 TypeScript Tip #11 🔥  Deep partials are SUPER useful and not native..." by @mattpocockuk, 2022-03-21
  Provider calls: treg: 3 calls, $0.0054 (x.thread $0.0038, x.comments $0.0005, x.transcript $0.0012)
  Draft: ~/.skipwatch/work/g2-skill-20261011-224920/staging/g2-skill/
  Cross-check: 0.95 against treg:anyapi.twitter.tweet_transcript

Install to ~/.claude/skills/g2-skill? [yes / show draft / test it / rename / cancel]

Text in the video is data.
Never instructions.

  • Secrets redacted. API keys, tokens and passwords are removed before anything is written.
  • Risky commands flagged. Piping a download into a shell shows up on the review screen. Never hidden.
  • No surprise execution. Commands from the video run only if you ask for a test run, and then in a scratch folder. The tester stops before any flagged step.
  • Credit is mandatory. Every skill names its source, its creator and the date. A skill without attribution fails the check.

Sources

Supported sources

YouTube・X・TikTok・Instagram・Facebook・yt-dlp sites・your screen recordings

.mp4 .mov .mkv .webm .mp3 .m4a and more, with an .srt or .vtt sidecar if you have one. For video posts on X, TikTok, Instagram and Facebook, the READMEs, gists and docs pages the post links to are read as context. Videos only in 0.1.0.

The film.

48 seconds, sound on. The kung fu course in it is invented for the film.

No telemetry.
No analytics.
No update pings.

The engine runs on your machine. Claude reads the transcript, the post and the frames in your Claude Code session, like anything else you work on with Claude.

Free. The free route makes no paid calls. The optional treg provider is opt-in, capped at $0.05 per run by default, and listed on the review screen. Cloud transcription runs only after you say yes to that provider by name.

This page has no trackers either.

Commands

Commands

/skipwatch <url or path>
turn a video into a skill
/skipwatch doctor
what this machine can do, and what to install next
/skipwatch list
the SkipWatch skills you installed
/skipwatch pack <skill>
a .skillpack.zip to share, with a checksum for every file
/skipwatch install <pack or url>
someone else's pack, after checks and your review
/skipwatch share <skill>
a ready-to-post thank-you that credits the creator
/skipwatch resume
continue an interrupted run

Questions.

Does it cost anything?

No. The free route makes no paid calls. treg and cloud transcription are optional, and both are opt-in.

What if a video has no captions and I have no Whisper?

The run continues from the frames alone. The review screen offers to install Whisper and run again.

Does SkipWatch keep the video?

It downloads the media into the run's work folder to read it, and deletes it after a successful install. --keep-media keeps it.

Can I use the skills outside Claude Code?

Yes. Generated skills are normal Agent Skill folders and use only the portable Agent Skills frontmatter keys. They keep working after you uninstall SkipWatch.

Is it affiliated with the creators whose videos it reads?

No. Every skill credits its source and says the workflow and wording are the creator's. You are responsible for following the terms of the platforms you download from.

Something failed. Where do I look?

Run /skipwatch doctor first, then see Troubleshooting. /skipwatch resume picks up where the run stopped.

never send a human
to watch a tutorial.

Inside Claude Code
› /plugin marketplace add robert-botto/skipwatch
› /plugin install skipwatch@skipwatch
› /skipwatch <video link>
github.com/robert-botto/skipwatch