Skip to main content
AIDiveForge AIDiveForge
🎞️

B-Roll Gap Finder

Image & Video · by AIDiveForge · Apr 20, 2026 · Intermediate

Annotate a timed video outline with evidence-linked b-roll opportunities.

Get an edit-decision list with purpose, interval and asset requirements.

Free · 2 KB · SKILL.md, instructions and example files. Provide a transcript or shot list with timestamps; visual verification requires video access.

A worked example

A small example to try before using your own data.

Input

{
  "timeline": "00:00–00:40 speaker explains how a checkpoint file restores state; one static talking-head shot.",
  "goal": "Show the recovery process visually."
}

Expected result

00:12–00:24: overlay a simple checkpoint → interruption → recovered-state diagram while the explanation covers those stages. Asset needed: a newly created or authorized diagram. Confirm timing against the actual narration before editing.

What to check: The suggested visual explains the topic and is labeled as an asset to obtain, not an existing clip.

Limits: A transcript does not reveal every on-screen change. Final timing and visual quality require watching the video.

Worked example included. Model-specific performance and vendor compatibility have not been benchmarked.

Installation options and other formats

Install this skill

An agent skill starts with SKILL.md. The ZIP also includes its examples and any helper scripts. Drop the file into your tool of choice — or pick a different format if you use Cursor, Windsurf, Copilot, or something else.

Download SKILL.md
python3 - <<'ADF_SKILL_INSTALL'
import hashlib, io, os, stat, tempfile, urllib.request, zipfile
from pathlib import Path, PurePosixPath
folder = "b-roll-gap-finder"
root = Path(os.environ.get('ADF_SKILL_ROOT', str(Path.home() / '.claude' / 'skills'))).expanduser()
destination = root / folder
if destination.exists() or destination.is_symlink():
    raise SystemExit('An installation already exists. Back it up and merge the ZIP deliberately.')
root.mkdir(parents=True, exist_ok=True)
request = urllib.request.Request("https://aidiveforge.com/skill/b-roll-gap-finder.zip", headers={'User-Agent': 'AIDiveForge-Resource-Installer/1.0 (+https://aidiveforge.com/skills/)'})
with urllib.request.urlopen(request, timeout=30) as response:
    data = response.read(8 * 1024 * 1024 + 1)
if len(data) > 8 * 1024 * 1024 or hashlib.sha256(data).hexdigest() != "2e4dd92c901cb8c8b76e31534e99a3ff533faf64fe2c2a7c09d79cec3dc96346":
    raise SystemExit('The download did not match this reviewed bundle. No files were installed.')
with zipfile.ZipFile(io.BytesIO(data)) as archive, tempfile.TemporaryDirectory(prefix='.adf-skill-', dir=root) as temporary:
    members = archive.infolist()
    if len(members) > 100 or sum(m.file_size for m in members) > 16 * 1024 * 1024:
        raise SystemExit('Unexpected archive size')
    for member in members:
        name = PurePosixPath(member.filename)
        if name.is_absolute() or '..' in name.parts or not name.parts or name.parts[0] != folder or '\\' in member.filename or stat.S_ISLNK(member.external_attr >> 16):
            raise SystemExit('Unsafe archive entry; nothing was installed')
        target = Path(temporary).joinpath(*name.parts)
        if member.is_dir():
            target.mkdir(parents=True, exist_ok=True)
        else:
            target.parent.mkdir(parents=True, exist_ok=True)
            with target.open('xb') as stream:
                stream.write(archive.read(member))
    staged = Path(temporary) / folder
    if not (staged / 'SKILL.md').is_file() or destination.exists() or destination.is_symlink():
        raise SystemExit('The skill could not be installed without replacing existing data')
    os.rename(staged, destination)
print('Installed the complete skill folder:', destination)
ADF_SKILL_INSTALL

Claude Code: ~/.claude/skills/b-roll-gap-finder/SKILL.md. Codex: ~/.codex/skills/b-roll-gap-finder/SKILL.md. Keep the complete ZIP folder when helper scripts are included.

🧠 Why it works

The suggested visual explains the topic and is labeled as an asset to obtain, not an existing clip.

⚙️ How it works

  1. Identify the actual subject and visual state of each interval from the supplied timeline or video.
  1. Flag long static stretches only against the user’s pacing goal, not a universal cutoff.
  1. Suggest an illustrative asset that supports the spoken point and specify where it enters and exits.
  1. Keep factual visuals, decorative footage and unavailable assets distinct; record rights and sourcing needs.
  1. Review transitions for continuity and do not describe proposed footage as footage already present.

Description

Get an edit-decision list with purpose, interval and asset requirements.

Provide a transcript or shot list with timestamps; visual verification requires video access.

Limits: A transcript does not reveal every on-screen change. Final timing and visual quality require watching the video.

Recommended Use

Tools and workflow packs this skill pairs well with. Forge picks are auto-generated from category + capability signals; Community picks are added by people who've used the pairing.

No matches yet. Be the first to suggest a pairing, or the Forge will populate suggestions as signals align.