Install any skill in seconds. Free to start, no credit card required.
Get Started Free →gooseworks-ai/ugc-fixloop
the UGC fix-loop toolkit — surgically re-render a bad window/beat of a single-take UGC master (stitch_replacement.py, pure FFmpeg) and GPT cross-model review a Seedance prompt before render (vet_seedance_prompt.py, routed through the openai-proxy). Fetch it into a one-shot UGC recipe so both scripts resolve on any machine and the vet call bills the Ads agent.
Passed 16 of 19 test cases with the skill, and 5 of 19 without it.
and 11 more in the full report
13 fixed6 passed either way3 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 13 test cases the skill fixed. Same model, same prompt, with and without the skill.
Is the `--replace-beat` flag in `stitch_replacement.py` 0-indexed or 1-indexed when selecting scene segments?
| Checked | Without skill | With skill |
|---|---|---|
| Uses 1-indexed numbering for selecting scene beats | Missed | Passed |
The instructions your model reads when the skill loads.
The UGC fix-loop toolkit. The one-shot UGC video recipes (create-ugc-*-video-from-refs)
render a single continuous Seedance 2.0 reference-to-video master with native lip-synced
audio. This capability ships the two scripts those recipes run, so they exist on the remote
machine (fetched into /tmp/gooseworks-scripts/ugc-fixloop/).
Any re-render of a replacement clip goes through the same proxy path the recipe uses for the take (
create-video-fal/ fal-proxy), NEVER a directfal.runcall.
stitch_replacement.py — no API key, no network. Needs ffmpeg + ffprobe on PATH (all local FFmpeg).vet_seedance_prompt.py — routes through the GooseWorks openai-proxy (<api_base>/api/internal/openai-proxy/v1/chat/completions), reading creds from ~/.gooseworks/credentials.json — no direct OpenAI call, no local key; the call bills the Ads agent. Exits 3 if the proxy/creds are unavailable so the recipe can fall back to an inline self-review (the vet is advisory, not a gate).A deliberately NON-Claude second opinion on the Seedance prompt before you spend the render (Claude reviewing its own prompt is a weaker signal). Takes the prompt as an argument:
vet_seedance_prompt.py --prompt-file working/seedance-prompt.txt \
[--brief "one-line intent"] [--refs "@Image1=avatar; @Image2=product; @Image3=env"] \
[--words 28] [--out working/seedance-review.md]
Prints + saves the structured review (verdict, line edits, word budget, consistency risk).
Replaces one segment of the master on the VIDEO track only; the master's audio (VO + ambience) plays straight through, so lip-sync on talking beats is never touched. Output is re-encoded H.264 / yuv420p at the master's fps + resolution.
Required: --master M.mp4 --replacement R.mp4 --output O.mp4. Pick the window ONE of two ways:
# By beat (1-indexed segment between auto-detected scene cuts):
stitch_replacement.py --master M.mp4 --replacement R.mp4 --output O.mp4 --replace-beat 2
# By explicit window (seconds):
stitch_replacement.py --master M.mp4 --replacement R.mp4 --output O.mp4 \
--window-start 4.21 --window-end 8.75 --fit stretch
All args:
--master (required) — the single-take master mp4.test cases passed, vs 5 / 19 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.