I gave my coding agent my basketball videos and asked it to be my coach
Description and use
A basketball player in an adult rec league built a CLI called sports-video-coach that turns raw basketball video into a coaching page with clips and narration plus a video with freeze frames, rings, and subtitles. The CLI hands frame sheets to the agent via exit code 3, the agent writes review.json, and the CLI renders the outputs. Basketball is the built-in sport with player tracking; other sports use generic mode without tracking.
Problem
A basketball player in an adult rec league has phone video of shooting drills and game plays but no coach, no film watchers, and no way to turn raw video into a coaching page with clips, narration, and subtitles.
Outcome
The CLI lets the user give their coding agent basketball video and get back a coaching page with clips and narration plus a video with freeze frames, rings, and subtitles. The agent pointed out that 9 of 11 set shots and 7 of 19 jump shots went in, and that all 8 jump shots in the last ten minutes missed, which the user had not noticed.
Workflow
- Run
sports-video-coach run drill.mp4 --sport basketballto split the video into frame sheets and hand them to the agent - Agent opens the contact sheets, writes review.json using the guide
sports-video-coach guide review, and runs the same command again - If the review is too short, the run refuses to build a page and says why; the agent fixes it and reruns
- A rerun skips already-done steps and flags later steps that are now out of date so they can be redone or kept with --accept
Evidence
I play in an adult rec basketball league. Nobody coaches us and nobody watches film. What we do have is a lot of phone video that nobody opens again.
On one session it pointed out that my set shots went 9 of 11, my jump shots 7 of 19, and the 8 jump shots in the last ten minutes all missed. I hadn't noticed that at all.
Video goes in, you get a coaching page with clips and narration, and a video with freeze frames, rings and subtitles.
Exit code 3 means 'your turn'. The agent opens the contact sheets, writes review.json (the guide is sports-video-coach guide review), and runs the same command again. Exit 1 means a step failed and names its log, 0 means done.
If the review is too short, the run refuses to build a page and says why: review.json: needs a moments list with at least 3 entries
Basketball is the sport I built it for. It has player tracking and pulls the league box score, but tracking needs a GPU. Any other sport goes through generic: no tracking, just the agent looking at frame sheets.
- Record date: 2026-10-23T12:11:07.515Z