From 26cfa5ca342c66d2ed14bbf396c48af3ba425f32 Mon Sep 17 00:00:00 2001 From: bradautomates Date: Fri, 24 Apr 2026 14:54:54 +1000 Subject: [PATCH] Add commands/watch.md so /watch is callable via Claude Code plugin Claude Code plugins expose slash commands from commands/*.md; the root SKILL.md alone isn't discovered. Thin shim delegates to the existing skill contract. Strip commands/ from the claude.ai .skill bundle since that surface uses SKILL.md directly. Bumped to 0.1.1. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude-plugin/plugin.json | 2 +- CHANGELOG.md | 6 ++++++ commands/watch.md | 9 +++++++++ scripts/build-skill.sh | 8 +++++--- 4 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 commands/watch.md diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index af75ab6..72ed32f 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "watch", - "version": "0.1.0", + "version": "0.1.1", "description": "Let Claude watch a video. Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls captions or falls back to Whisper, and hands frames + transcript to Claude so it can answer questions about the video.", "author": { "name": "Bradley Bonanno" diff --git a/CHANGELOG.md b/CHANGELOG.md index 36228b6..1b79b5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to `/watch` are documented here. +## [0.1.1] — 2026-04-24 + +### Fixed +- Added `commands/watch.md` shim so `/watch` is callable when installed as a Claude Code plugin. Without it, the plugin loaded but the skill wasn't exposed as a slash command. +- `scripts/build-skill.sh` now strips `commands/` from the claude.ai `.skill` bundle alongside `hooks/` and `.claude-plugin/`. + ## [0.1.0] — 2026-04-24 Initial marketplace release. diff --git a/commands/watch.md b/commands/watch.md new file mode 100644 index 0000000..3f437e9 --- /dev/null +++ b/commands/watch.md @@ -0,0 +1,9 @@ +--- +description: Watch a video (URL or local path). Downloads with yt-dlp, extracts frames with ffmpeg, transcribes from captions or Whisper, and answers questions about what's in the video. +argument-hint: [question] +allowed-tools: [Bash, Read, AskUserQuestion] +--- + +Invoke the `watch` skill (defined in SKILL.md) with the user's arguments: $ARGUMENTS + +Follow the skill's full pipeline: preflight setup check → download via yt-dlp → extract frames at auto-scaled fps → pull captions or Whisper transcript → Read each frame → answer the user grounded in frames and transcript. If the user provided no arguments, ask them for a video URL or local path before proceeding. diff --git a/scripts/build-skill.sh b/scripts/build-skill.sh index 7a6582f..6ca9a6a 100755 --- a/scripts/build-skill.sh +++ b/scripts/build-skill.sh @@ -21,11 +21,13 @@ OUT="dist/watch.skill" git archive --format=zip --prefix=watch/ --output="$OUT" HEAD # claude.ai's .skill bundle needs only SKILL.md + scripts/ runtime. Claude Code -# needs hooks/ and .claude-plugin/ in the git archive (that's why they are NOT -# in .gitattributes export-ignore), but the .skill bundle should strip them to -# keep a single canonical SKILL.md and stay well under the 200-file cap. +# needs hooks/, commands/, and .claude-plugin/ in the git archive (that's why +# they are NOT in .gitattributes export-ignore), but the .skill bundle should +# strip them to keep a single canonical SKILL.md and stay well under the +# 200-file cap. zip -d "$OUT" \ "watch/hooks/*" \ + "watch/commands/*" \ "watch/.claude-plugin/*" \ > /dev/null 2>&1 || true