Watch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.
63
76%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
High
Do not use without reviewing
Fix and improve this skill with Tessl
tessl review fix ./skills/watch/SKILL.mdSecurity
1 high severity finding. You should review these findings carefully before considering using this skill.
The skill handles credentials insecurely by requiring the agent to include secret values verbatim in its generated output. This exposes credentials in the agent’s context and conversation history, creating a risk of data exfiltration.
The prompt explicitly tells the agent to AskUserQuestion for Groq/OpenAI API keys and then write lines like GROQ_API_KEY=... or OPENAI_API_KEY=... into ~/.config/watch/.env, which requires the LLM to accept and embed secret values verbatim (high exfiltration risk).
Low
Low-risk findings.
1 low severity finding. Worth noting, but not necessarily harmful.
The skill exposes the agent to untrusted, user-generated content from public third-party sources, creating a risk of indirect prompt injection. This includes browsing arbitrary URLs, reading social media posts or forum comments, and analyzing content from unknown websites.
Yes: the required runtime flow downloads captions from a user-supplied public URL via `yt-dlp` (outsider-origin text) and then parses/prints that caption text into the LLM context (`scripts/watch.py` → `scripts/download.py` writes `.vtt` → `scripts/transcribe.py` reads VTT and constructs `transcript_text`, which `watch.py` embeds in its stdout under “## Transcript”).
83da59f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.