CtrlK
BlogDocsLog inGet started
Tessl Logo

gamussa/reels-producer-skill

help quicky produce instagram reels and youtube shorts

94

2.12x
Quality

96%

Does it follow best practices?

Impact

87%

2.12x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

dependencies.mdskills/reel-builder/references/

Dependencies and Degradation

Run the preflight first, every session. It exits non-zero on a missing required tool, and pipeline.py status blocks on the same check.

python3 scripts/check_deps.py --mode music-video   # or --mode talking-head
python3 scripts/check_deps.py --json               # for gating

Required

ToolInstallWithout it
ffmpeg / ffprobebrew install ffmpegnothing runs; every stage shells out to it
.venvpython3 -m venv .venvmacOS refuses system pip (PEP 668)
librosa + soundfile.venv/bin/pip install librosa soundfileno beat detection (music-video only)

Homebrew's ffmpeg ships without drawtext. No recipe here relies on it — text goes through the subtitles filter (libass) or the platform apps.

Optional, and what each actually costs

Never substitute silently. Name the loss and let the user choose.

MissingWhat is lost
auto-editortighten_vo.py uses ffmpeg silencedetect. Measured equivalent (9.80s vs 9.87s from a 13s take) — still report which ran
deepFilterclean_audio.py uses afftdn. Audibly weaker on a noisy room; this is a real quality loss
Node 18+make_cards.py cannot run. Build cards as stills and let normalize_clips.py apply Ken Burns
moviepyno engine A/B; render_reel.py still renders normally
yt-dlpfetch_music.py cannot pull audio from a link
mlx-whisperno local transcription. Talking-head reels are watched muted, so captions are not optional there
Gemini API keyno hook-copy drafts, no stylized thumbnails
official D-Log LUTthe bundled LUT is DJI's whitepaper math, an approximation — not the exact per-model transform

The two fakes to refuse by default

--bpm is not beat detection. It lays a fixed metronome grid and never analyses the audio, so cuts land on clock ticks rather than on the track. detect_beats.py warns, stamps "source": "fixed-grid" into beats.json, and build_cut_plan.py repeats the warning. Never present such a plan as beat-synced; if librosa is missing, install it rather than reaching for --bpm.

A camera-conversion LUT is not a grade. The bundled D-Log LUT applies only to dlog-profile clips. On Rec.709 footage it crushes blacks and pushes colour out of gamut.

Machine-readable provenance

Scripts record what actually ran, so a substitution cannot hide in the output:

  • beats.jsonsource: librosa | fixed-grid | absent (unrecorded)
  • tighten_vo.py, clean_audio.pyengine, engine_requested, substituted

Check these before reporting a result, and tell the user which engine produced the file they are about to approve.

.mcp.json

tile.json