video-decompose — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited video-decompose (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Convert screen recordings into structured frames + aligned transcript for LLM analysis.
Verify before proceeding:
python3 -c "import cv2, skimage; print('OK')"
# If missing: pip install opencv-python scikit-image numpy
# For URL downloads: which yt-dlp (install with: brew install yt-dlp)Ask the user for:
Execute the script from this skill's scripts/ directory:
# From URL
python3 scripts/video_decompose.py --url <URL> --output ./output/<name> --json
# From local files
python3 scripts/video_decompose.py --video <path.mp4> --transcript <path.vtt> --output ./output/<name> --jsonTuning (adjust if frame count is too high/low):
--threshold 0.80 — Lower (0.70) = fewer frames, higher (0.90) = more frames--min-gap 3.0 — Increase to 5+ if too many rapid-transition frames--sample-rate 1 — Raise to 2 for fast-paced demosRead output/<name>/summary.md and spot-check 2-3 frame images. If frame count is off, re-run with adjusted flags.
Expected output:
output/<name>/
├── frames/ # PNG keyframes
├── summary.md # Markdown mapping frames to transcript
└── product-requirements.md # (if step 4 is performed)When the user wants structured product requirements, read references/requirements-extraction-prompt.md for the extraction template. Read summary.md, view all frame images, and produce a requirements document following that template. Save as product-requirements.md in the output directory.
With --json, stdout contains structured data (progress on stderr):
{
"status": "success",
"video": { "filename": "...", "duration_seconds": 529.0 },
"extraction": { "total_frames": 14 },
"frames": [
{
"index": 1,
"filename": "frame_001_00m00s.png",
"file_path": "./output/frames/frame_001_00m00s.png",
"timestamp_start": 0.0,
"timestamp_end": 171.0,
"transcript": "..."
}
]
}Add --base64 to embed frame images as base64 in JSON (self-contained, no file references).
| Exit code | Meaning | Action |
|---|---|---|
| 0 | Success | Proceed |
| 1 | Input error (missing file, bad URL) | Check paths/URL, retry |
| 2 | Processing error (no frames) | Lower threshold or check video format |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.