Model Showdown
charlie947/motion-graphics-skills
Give the same motion brief to three AI models, keep each first try, render all three the same way and stack them into one comparison video with model names and logos.
Final QC gate for a rendered 9:16 video ad, run before it is published.
$ npx skills add gooseworks-ai/goose-skills --skill review-finished-ad -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gooseworks-ai/goose-skills review-finished-ad --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ads/capabilities/review-finished-ad .claude/skills/review-finished-ad && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "review-finished-ad" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/review-finished-ad into .claude/skills/review-finished-ad/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-finished-ad", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/review-finished-adType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add gooseworks-ai/goose-skills --skill review-finished-ad -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gooseworks-ai/goose-skills review-finished-ad --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ads/capabilities/review-finished-ad .agents/skills/review-finished-ad && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "review-finished-ad" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/review-finished-ad into .agents/skills/review-finished-ad/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-finished-ad", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gooseworks-ai/goose-skills --skill review-finished-ad -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gooseworks-ai/goose-skills review-finished-ad --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ads/capabilities/review-finished-ad .cursor/skills/review-finished-ad && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "review-finished-ad" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/review-finished-ad into .cursor/skills/review-finished-ad/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-finished-ad", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/gooseworks-ai/goose-skills.git --path skills/ads/capabilities/review-finished-ad--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add gooseworks-ai/goose-skills --skill review-finished-ad -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gooseworks-ai/goose-skills review-finished-ad --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ads/capabilities/review-finished-ad .gemini/skills/review-finished-ad && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "review-finished-ad" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/review-finished-ad into .gemini/skills/review-finished-ad/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-finished-ad", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gooseworks-ai/goose-skills review-finished-adInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gooseworks-ai/goose-skills --skill review-finished-ad -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ads/capabilities/review-finished-ad .github/skills/review-finished-ad && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "review-finished-ad" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/review-finished-ad into .github/skills/review-finished-ad/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-finished-ad", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gooseworks-ai/goose-skills --skill review-finished-ad -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gooseworks-ai/goose-skills review-finished-ad --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ads/capabilities/review-finished-ad .opencode/skills/review-finished-ad && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "review-finished-ad" agent skill from https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/review-finished-ad into .opencode/skills/review-finished-ad/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "review-finished-ad", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
review-finished-adFinal QC gate for a rendered 9:16 video ad, run before it is published.
Review Finished Ad is an agent skill from gooseworks-ai/goose-skills. Final QC gate for a rendered 9:16 video ad, run before it is published. One script checks what a machine can decide — exact 1080x1920 size, a hook that moves and speaks in the first second, no frozen stretches, no dead air, no black frames, the brand's real logo on the end card (never a favicon, never a redrawn or wrong logo), end-card colours near the brand palette — and builds one contact sheet (frames with the TikTok/Reels UI safe zones shaded, beside the logo, product images and a font specimen) for the…
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts (for example `scripts/review_finished_ad.py`, `skill.meta.json` and `tests/test_review_finished_ad.py`).
It sits in Media & Creative, covering Logo and visual identity. It works with TikTok. The repository describes itself as: Library of Growth & GTM skills + data APIs for Claude Code, Codex, Cursor to run ads, social, content, lead gen, seo and data scraping. The licence is MIT.
Read from SKILL.md and the folder at commit c650c6d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3pipFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Review Finished Ad loads about 2.3k tokens when it runs. Until then it costs about 222 tokens; SKILL.md has 1,231 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from gooseworks-ai/goose-skills at commit c650c6d, republished under its MIT licence (© gooseworks-ai). 1,231 words, ~2,251 tokens.
.claude/skills/review-finished-ad/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Superseded: the video kit now does this with the check-layer part, version 1.1.1, in the parts folder of this repository. It runs the machine checks every finished video gets: it plays, length, size, sound level, captions, black and frozen frames and the end card. This atom stays, unchanged in behaviour, for skills outside the kit until they move; its scripts still run.
The gate between a rendered master and the user. A finished ad has to look like the brand's ad and play like an ad, not like a pile of clips. This skill checks both, fixes are made by the caller, and the gate is re-run until it passes.
Needs ffmpeg + ffprobe on PATH and pip install --quiet numpy pillow.
python3 scripts/review_finished_ad.py \
--video working/final.mp4 \
--json working/review/finished-ad.json \
--sheet working/review/finished-ad-sheet.png \
--logo working/brand/logo.png \
--palette "#0b3d2e,#f4efe6" \
--product-images working/brand/product-1.png,working/brand/product-2.png \
--font working/brand/font.ttf --brand-name "Acme"--logo is the logo file the video actually composites: the kit's logoUrl /
logos[0], or the wordmark file the recipe's end card uses. PNG, JPEG or SVG (an SVG is
rasterised with cairosvg or rsvg-convert). Never a generated logo.--logo, and judge the text wordmark on the sheet.--endcard-s is the end card's length (default 3.0). Set it to the real length: a longer
silent or static end card would otherwise read as dead air or a freeze.--logo-at 3.2 (repeatable) adds a timestamp where the logo also appears
mid-video; the end card (last ~1.6s) is always checked.--no-speech for formats with no voiceover or dialogue (music-only), so
silence is not judged.--format-profile silent-text for a declared silent, text-led format (kinetic text).
Use it only when the recipe names it. It implies --no-speech and changes three checks
(see "Silent-text profile" below); every other check stays the same.--expect-size defaults to 1080x1920. Video ads are always 9:16.Exit 0 → PASS. Still read the sheet (below) before publishing.
Exit 2 → FAIL. failed lists the checks; each note says what to fix.
Exit 3 → ERROR. The check could not run (missing file, no ffmpeg); fix and
re-run. Never publish blind.
| Check | Fails when | Typical fix |
|---|---|---|
ratio | output is not exactly 1080x1920 | scale + pad every clip to 1080x1920 BEFORE the concat |
hook | no sound in the first 1.0s, or the opening frame is still for > 1.5s | start the VO/music at 0s; open on motion or a cut, not a held title |
pacing | the picture is frozen for > 2.5s before the end card | add motion (push-in, b-roll, a cut) or trim the hold |
dead_air | silence > 1.0s mid-video (skipped with --no-speech) | tighten the VO timing or run the music bed under the gap |
black_frames | a black stretch > 0.3s | fix the concat / transition |
logo_asset | the logo file is favicon-sized (long side < 256px, or under 40,000 px²) | do not upscale it: ask for a real logo, or set the wordmark as text in the brand font (then drop --logo) |
logo | the kit logo is not found on the end card (below the fail line for its mode) | composite the uploaded logo file onto the end card; never regenerate or retype it |
palette | (warn only) no kit colour among the end card's main colours | use a kit colour for the end-card background or text |
For a format that is silent by design and made of text beats on a solid colour. The
default profile wrongly fails it: "no audio track", dark text frames or dark beats between
text beats read as black frames, and a first beat held for reading reads as a still
opening. The profile replaces three checks. The blank-beat bounds are fixed (no option
widens them), and --max-freeze-s may not exceed 10s here (exit 3), the longest text beat:
| Check | Default profile | --format-profile silent-text |
|---|---|---|
hook | sound in the first 1.0s, and an opening that moves | no audio track needed. The first beat must arrive with motion (a still first frame held > 1.5s fails), and the opening may then hold no longer than a planned beat: max(1.5s, --max-freeze-s). An audible track must start in the first 1.0s, counting a track muxed with a delay |
dead_air | silence > 1.0s mid-video fails | not applicable with no audio or an inaudible track (peak below -45 dB). An audible track (a supplied music bed) fails if it drops out > 1.0s or stops > 1.0s before the picture ends, CTA included (--endcard-s excuses nothing here, the CTA is a beat), even with --no-speech |
black_frames | a dark stretch > 0.3s fails | judges blank frames (black, or one flat colour with no text): a blank beat between two text beats may last up to 1.0s; a blank opening or ending keeps the 0.3s limit; all blank beats together stay under 25% of the video; a fully blank video fails |
pacing is unchanged, so a frozen picture still fails. Set --max-freeze-s to the longest
planned text beat in seconds when one holds longer than 2.5s, never more (CTA excluded, it is
the --endcard-s window).
Missing text fails as blank frames on any solid background colour; on a busy or gradient
background, judge it on the sheet. The sheet adds one eye check: every text beat is
complete, spelled as approved and readable. Speech checks (review-ugc-render) do not apply.
logo is grayscale correlation with a fine size search, so the right logo scores
0.9+ at any size:
Between the two lines it is a warn: look at the sheet for a warped, cropped or redrawn
logo.
finished-ad-sheet.png shows samples spread across the body plus useful shot midpoints
and the end card, with the
platform UI areas shaded red, and the brand references underneath. Open it and
confirm each line in the verdict's judge_on_sheet:
Any of these failing is a FAIL, the same as a machine check.
Continuous formats need early, middle and late coverage even when there are no cuts. A body of at least 1.5 seconds gets at least six time samples, within the existing 17-body-frame cap. Read the actual timestamps recorded in the result; inspect additional frames when a fast event or small qualification needs a closer look.
Fix only the failing window (re-composite the end card, regenerate one shot, re-time one line), re-render, and re-run this script. Up to 2 repair rounds. If it still fails, do not present the video as finished: the caller reports it as blocked with the failed checks, so the user sees a clear warning.
--json writes { verdict, failed[], format_profile, video{width,height,duration,has_audio,cuts}, checks{<name>: {status, note, data}}, sheet, judge_on_sheet[] }. Status is one of
pass, fail, warn, not_applicable.
© gooseworks-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (scripts) in skills/ads/capabilities/review-finished-ad of gooseworks-ai/goose-skills.
Open the folder on GitHubat commit c650c6d
Review Finished Ad next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Review Finished Ad this skillgooseworks-ai/goose-skills | 1.2k | — | ~2.3k | Automated safety check: Pass | MIT | |
| Model Showdowncharlie947/motion-graphics-skills | 180 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Scenario Video Adsscenario-labs/skills | 946 | — | ~1.7k | Automated safety check: Pass | MIT | |
| DesignOhh-889/skyroc | 795 | 9 repos | ~3.1k | Automated safety check: Pass | MIT | |
| Brand and Design Toolkitnextlevelbuilder/ui-ux-pro-max-skill | 135k | 1 repos | ~3.5k | Automated safety check: Pass | MIT | |
| Anthropic Brand Stylinganthropics/skills | 180k | 30 repos | ~559 | Automated safety check: Pass | Apache-2.0 |
charlie947/motion-graphics-skills
Give the same motion brief to three AI models, keep each first try, render all three the same way and stack them into one comparison video with model names and logos.
scenario-labs/skills
A skill your agent uses when producing a video ad with Scenario from a product shot or brand assets: a mobile 9:16 or landscape 16:9 commercial, a TikTok, Reels, Shorts, YouTube, or CTV spot, or…
Ohh-889/skyroc
Comprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations…
nextlevelbuilder/ui-ux-pro-max-skill
Bundles design tasks behind one skill: brand identity, tokens, UI styling, logos, corporate identity mockups, slides, banners, icons and social images.
anthropics/skills
Applies Anthropic's brand colors and fonts to artifacts such as PowerPoint slides, using fixed hex values for text and accents, Poppins headings and Lora body text.
kaankiziltug/logo-design-skill
Professional logo and brand-mark design, from brief to production files.
gooseworks-ai/goose-skills
Scrape and search Reddit posts using Apify. An agent skill from gooseworks-ai/goose-skills.
gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent.
gooseworks-ai/goose-skills
Replace an existing video's opening with a supplied clip or free kinetic text hook while retaining and verifying every original body frame, audio, captions and ending.
gooseworks-ai/goose-skills
Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.
gooseworks-ai/goose-skills
Find leads by scraping engagers from a competitor's top LinkedIn posts.
gooseworks-ai/goose-skills
Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard…
Works with
Categories
Final QC gate for a rendered 9:16 video ad, run before it is published. Review Finished Ad is an agent skill from gooseworks-ai/goose-skills. Final QC gate for a rendered 9:16 video ad, run before it is published.
Review Finished Ad fits situations like: tasks that involve Logo and visual identity.
Run `npx skills add gooseworks-ai/goose-skills --skill review-finished-ad -a claude-code`. Or copy the skill folder (skills/ads/capabilities/review-finished-ad in gooseworks-ai/goose-skills) into .claude/skills/review-finished-ad in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gooseworks-ai/goose-skills --skill review-finished-ad -a codex`. Or copy the skill folder (skills/ads/capabilities/review-finished-ad in gooseworks-ai/goose-skills) into .agents/skills/review-finished-ad in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gooseworks-ai/goose-skills --skill review-finished-ad -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/review-finished-ad, .gemini/skills/review-finished-ad, .github/skills/review-finished-ad and .opencode/skills/review-finished-ad in your project.
Going by SKILL.md and its folder, Review Finished Ad needs Python for the scripts in its folder and the command-line tools its instructions call (python3 and pip). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Review Finished Ad is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Review Finished Ad: Model Showdown (charlie947/motion-graphics-skills, 180 stars), Scenario Video Ads (scenario-labs/skills, 946 stars), Design (Ohh-889/skyroc, 795 stars) and Brand and Design Toolkit (nextlevelbuilder/ui-ux-pro-max-skill, 135k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gooseworks-ai (a GitHub organization) maintains it in gooseworks-ai/goose-skills, which has 1,240 GitHub stars. The repository holds 273 skills in this directory. The repository was last updated on October 8, 2026.
Source: gooseworks-ai/goose-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.