Repository navigation
feat(b-roll): add video-add-b-roll skill - #18
Merged
Merged
Conversation
What changed: - Add `video-add-b-roll` to the skills table and shared protocol section, including the canonical `cut -> color-grade -> b-roll -> content-cards -> captions` order and its plan path. - Document the runnable test suites and `check_*` regression harnesses, with single-test invocations and the known pre-existing `check_review_ui.py` failures. - Record the skill-local `.env` rule for `PEXELS_API_KEY`. - Note that CLAUDE.md and AGENTS.md are no longer hardlinked and must be edited together; gitignore `.env`. Why it changed: The b-roll skill shipped without being registered in the agent playbook, and the commands section understated what is actually runnable, so agents rebuilt that knowledge each session. How it was checked: Ran every documented command and recorded the real results. The protected Git section is byte-for-byte unchanged; CLAUDE.md and AGENTS.md verified identical with cmp.
What changed: - Drop the required `comparison` argument from `check_broll.complete_visual_review()` and stop binding the source-time comparison in the receipt, report, and compiler artifact contract in `projectlib`. - Update `pexels.py` to the supported `api.pexels.com/v1/videos/search` path (the unversioned path is deprecated) and send an explicit User-Agent on search and download. - Refresh the SKILL.md playbook and the affected tests and fixtures. Why it changed: The playbook no longer runs `video-edit-compare` before the b-roll visual review, but the code still demanded a fifth positional argument. Any agent following SKILL.md hit `TypeError: complete_visual_review() missing 1 required positional argument: 'comparison'`, and the compiler rejected receipts whose artifact set omitted it. SKILL.md is the spec, so the code moved to match. How it was checked: - `python -m unittest skills/video-add-b-roll/tests/test_broll.py` — 154 tests, OK - `skills/video-cut/tests/test_inspect_bounds.py` — 6 tests, OK - `skills/video-edit-compare/tests/test_make_compare.py` — 1 test, OK - `check_protocol_extensions.py`, plus the cut and captions protocol checkers — all passed - Verified both Pexels routes return identical live payloads before switching - `check_review_ui.py` has 2 failures that reproduce identically with these changes stashed; pre-existing and out of scope
What changed: - Add a B-roll feature bullet and a `/video-add-b-roll` row to the skills table, following the existing wording and ordering. - Name the skill in the Quick Start example prompt and note that stock footage needs `PEXELS_API_KEY` in `skills/video-add-b-roll/.env`, with local import as the no-key path. - Add `review/03-b-roll/` and `work/b-roll/` to the project layout. Why it changed: This branch ships the b-roll skill, but the README still described the stack without it. How it was checked: Cross-checked every documented path against the paths the scripts actually write. Skill name matches the SKILL.md frontmatter `name`, which is the published slug and slash-command trigger. Known issue, not changed here: `video-add-b-roll` and `video-add-content-cards` both publish under `review/03-`. The layout now reflects that real behaviour rather than hiding it. Renumbering is not a docs change — b-roll has 54 hash-bound references to `review/03-b-roll`, so it needs its own commit.
What changed: Trim the Pexels key note to the essential instruction and label the example prompt as an example. Why it changed: The previous phrasing carried detail that belongs in the skill's own SKILL.md. How it was checked: Read the rendered paragraph; no dangling text left behind.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Adds
video-add-b-roll, a new skill that places selective, transcript-timed visual cutaways into an understood Project Protocol V1 sequence.SKILL.mdplaybook,reference/broll-rules.md, an example plan, the local candidate review page, and five scripts:broll_plan.py,pexels.py,build_review_page.py,normalize_broll.py,check_broll.py, with a 154-test suite.import-localfor your own or externally generated footage. Every candidate is frozen with a real probe, byte count, SHA-256, and provenance; downloads validate redirects, hosts, size, and media before atomic publication, and.partrecovery is owned by the downloader.projectlib.pygained b-roll plan and receipt validation, dependency-revision coverage, and image-sequence overlay checks. The operation adds ab-rolltrack and changes video pixels only, leaving timeline, geometry, and audio untouched.CLAUDE.md/AGENTS.mdand the README, and documented the repo's runnable test suites andcheck_*harnesses, which were previously undocumented.video-rough-cut→video-cutrename and the ClawHub publish workflow.Why it changed
Talking-head, interview, and explanatory videos need a small number of evidence-backed cutaways. Doing that by hand means unverifiable provenance and no record of who approved which shot. This makes the shot list a reviewable, diffable plan and refuses to guess: missing, weak, or downloader-rejected media becomes
skipped, and an approved all-skipped plan is a valid no-op rather than an excuse to drop in generic filler.How it was checked
python -m unittest skills/video-add-b-roll/tests/test_broll.py— 154 tests, OKskills/video-cut/tests/test_inspect_bounds.py— 6 tests, OKskills/video-edit-compare/tests/test_make_compare.py— 1 test, OKcheck_protocol_extensions.pyplus the cut and captions protocol checkers — all passedapi.pexels.com/v1/videos/search(the unversioned path is deprecated) and that both routes returned identical live payloads before switchingcomplete_visual_review()required a fifthcomparisonargument that the playbook no longer passes, which raisedTypeErrorfor anyone followingSKILL.md. SinceSKILL.mdis the spec, the code, compiler contract, and fixtures moved to match.Notes for review
Two known issues, both pre-existing and deliberately left out of scope:
skills/video-to-shorts/scripts/check_review_ui.pyhas 2 failures (fake_render()missingvideo_preset). They reproduce identically with this branch's changes stashed.video-add-b-rollandvideo-add-content-cardsboth publish underreview/03-. The README now reflects that real behaviour rather than hiding it. Renumbering isn't a docs change — b-roll has 54 references toreview/03-b-roll, and those paths are SHA-256-bound in review receipts, so it needs its own commit.The branch is named
docs/but the diff is mostlyfeat; the branch predates the feature work landing on it.