Restructure as a self-contained Agent Skills package (fix Codex install)

Move the skill into skills/watch/ so SKILL.md and its scripts/ runtime are
siblings inside one folder. `npx skills add` (Codex/Cursor/Copilot/agents) now
copies a working skill as a unit; previously it grabbed the root SKILL.md alone
and left scripts/ behind, so the skill was dead on arrival on every non-Claude
host. Mirrors the layout last30days-skill adopted for the same reason.

- skills/watch/{SKILL.md,scripts/}: self-contained skill folder
- SKILL.md: resolve a harness-agnostic $SKILL_DIR (the dir it was Read from)
  instead of the Claude-Code-only ${CLAUDE_SKILL_DIR}; guard + 19 call sites
- drop commands/watch.md: /watch derives from frontmatter (name + user-invocable)
- .codex-plugin/plugin.json: full manifest with "skills": "./skills/" + interface
- add .agents/plugins/marketplace.json, AGENTS.md, CLAUDE.md, .skillignore
- build-skill.sh: archive the skills/watch subtree (one SKILL.md, no zip -d)
- fix paths in tests, hooks hint, .gitattributes, release.yml
- relocate dev-sync.sh to repo root and fix REPO_ROOT
- README: content-ideas structure, npx skills install, star history

Verified: 37/37 tests pass; npx skills add bundles the full scripts/ runtime;
manifests valid; versions synced at 0.1.3.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
bradautomates
2026-06-29 22:12:54 +10:00
parent c333c2289e
commit 429f3143e5
33 changed files with 2360 additions and 783 deletions
+41 -1
View File
@@ -1,3 +1,43 @@
{
"name": "watch"
"name": "watch",
"version": "0.1.3",
"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"
},
"homepage": "https://github.com/bradautomates/claude-video",
"repository": "https://github.com/bradautomates/claude-video",
"license": "MIT",
"keywords": [
"video",
"watch",
"youtube",
"vimeo",
"tiktok",
"transcription",
"whisper",
"yt-dlp",
"ffmpeg",
"multimodal",
"frames"
],
"skills": "./skills/",
"interface": {
"displayName": "watch",
"shortDescription": "Give Claude a video input — paste a URL or path and ask about it.",
"longDescription": "watch adds a skill that lets the agent watch any video: it downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls a timestamped transcript from native captions (or the Whisper API as a fallback), and hands frames + transcript to the model so it can answer questions grounded in what's actually on screen and in the audio.",
"developerName": "Bradley Bonanno",
"category": "Productivity",
"capabilities": [
"Interactive",
"Read"
],
"websiteURL": "https://github.com/bradautomates/claude-video",
"defaultPrompt": [
"/watch https://youtu.be/dQw4w9WgXcQ what happens at the 30 second mark?",
"/watch ~/Movies/screen-recording.mp4 when does the UI break?",
"/watch https://youtu.be/<long-talk> summarize this"
],
"brandColor": "#E11D48"
}
}