Agent skill

Review Finished Ad

by gooseworks-ai in gooseworks-ai/goose-skills

Final QC gate for a rendered 9:16 video ad, run before it is published.

MITAuto-check passedMedia & Creative

Install Review Finished Ad

skills CLI
$ npx skills add gooseworks-ai/goose-skills --skill review-finished-ad -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install gooseworks-ai/goose-skills review-finished-ad --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
review-finished-ad
GitHub stars
1.2k
Token cost
~2.3k tokens
SKILL.md length
1,231 words
Files
6 (incl. scripts)
Skills in repo
273
Repo updated
First seen
Licence
MIT

At a glance

Final QC gate for a rendered 9:16 video ad, run before it is published.

  • Tasks that involve Logo and visual identity
  • SKILL.md covers Run it, Machine checks, Eye checks — read the sheet… and Fix loop, plus 1 more section
  • Runs Python scripts from its folder; calls python3 and pip

What it does

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.

When your agent uses it

  • Tasks that involve Logo and visual identity

Example prompts

  • “/review-finished-ad”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit c650c6d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~222
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from gooseworks-ai/goose-skills at commit c650c6d, republished under its MIT licence (© gooseworks-ai). 1,231 words, ~2,251 tokens.

Download SKILL.mdSave it as .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.
name
review-finished-ad
description
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 checks that need eyes — font, product likeness, product consistency across scenes, safe zones. A declared silent-text profile covers silent, text-led formats such as kinetic text (no audio track needed, short blank beats between text beats allowed within fixed bounds). Exit 0 PASS / 2 FAIL / 3 ERROR. Use on every finished video master before pinning it.
status
superseded
superseded_by
check-layer@1.1.1

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.

review-finished-ad

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.

Run it

Needs ffmpeg + ffprobe on PATH and pip install --quiet numpy pillow.

bash
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.
  • No logo image in the video (the brand name set as text in the brand font, because the kit only has a favicon or no logo): omit --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.

Machine checks

CheckFails whenTypical fix
ratiooutput is not exactly 1080x1920scale + pad every clip to 1080x1920 BEFORE the concat
hookno sound in the first 1.0s, or the opening frame is still for > 1.5sstart the VO/music at 0s; open on motion or a cut, not a held title
pacingthe picture is frozen for > 2.5s before the end cardadd motion (push-in, b-roll, a cut) or trim the hold
dead_airsilence > 1.0s mid-video (skipped with --no-speech)tighten the VO timing or run the music bed under the gap
black_framesa black stretch > 0.3sfix the concat / transition
logo_assetthe 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)
logothe 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 coloursuse a kit colour for the end-card background or text
Silent-text profile

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:

CheckDefault profile--format-profile silent-text
hooksound in the first 1.0s, and an opening that movesno 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_airsilence > 1.0s mid-video failsnot 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_framesa dark stretch > 0.3s failsjudges 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
Show full SKILL.md (445 more words)Show less

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:

  • Transparent mark (PNG/SVG wordmark or symbol): matched in either polarity, so a white version on a dark card counts. Pass ≥ 0.85, fail < 0.75. Another brand's wordmark scores about 0.6-0.7; a same-font near-copy about 0.8 (warn).
  • Opaque logo (a JPEG, a mascot photo, a square app icon): matched as the whole image. Pass ≥ 0.85, fail < 0.70. A different mascot on a similar background scores about 0.5.

Between the two lines it is a warn: look at the sheet for a warped, cropped or redrawn logo.

Eye checks — read the sheet every time

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:

  • Safe zones: no caption, CTA, price, logo or product name inside a red band (top 220px, bottom 400px, right 140px at 1080x1920).
  • Font: on-screen text uses the brand font shown in the specimen.
  • Product likeness: every product shot matches the reference product images (shape, label, colour). A stand-in, a catalogue image of another product, or a mascot is a fail.
  • Product consistency: the product looks the same in every scene.
  • Logo unaltered: not stretched, recoloured, cropped or redrawn.

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 loop

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.

Output

--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

Files

SKILL.md and 5 other files (scripts) in skills/ads/capabilities/review-finished-ad of gooseworks-ai/goose-skills.

  • SKILL.md
  • scripts/review_finished_ad.py
  • skill.meta.json
  • tests/test_review_finished_ad.py
  • tests/test_sampling.py
  • tests/test_silent_text_profile.py

Open the folder on GitHubat commit c650c6d

Compare with similar skills

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.

Review Finished Ad compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Review Finished Ad this skillgooseworks-ai/goose-skills1.2k—~2.3kAutomated safety check: PassMIT
Model Showdowncharlie947/motion-graphics-skills180—~1.1kAutomated safety check: PassMIT
Scenario Video Adsscenario-labs/skills946—~1.7kAutomated safety check: PassMIT
DesignOhh-889/skyroc7959 repos~3.1kAutomated safety check: PassMIT
Brand and Design Toolkitnextlevelbuilder/ui-ux-pro-max-skill135k1 repos~3.5kAutomated safety check: PassMIT
Anthropic Brand Stylinganthropics/skills180k30 repos~559Automated safety check: PassApache-2.0

Similar skills

  • 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.

    180 GitHub stars~1.1k tokensUpdated today
    Media & CreativeAuto-check passed
  • Scenario Video Ads

    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…

    946 GitHub stars~1.7k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Design

    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…

    795 GitHub starsUsed in 9 repos~3.1k tokens
    Frontend & DesignAuto-check passed
  • Brand and Design Toolkit

    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.

    135k GitHub starsUsed in 1 repo~3.5k tokens
    Media & CreativeAuto-check passed
  • Anthropic Brand Styling

    anthropics/skills

    Official

    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.

    180k GitHub starsUsed in 30 repos~559 tokens
    Media & CreativeAuto-check passed
  • Logo Design

    kaankiziltug/logo-design-skill

    Professional logo and brand-mark design, from brief to production files.

    2.5k GitHub stars~4.4k tokensUpdated 10 days ago
    Media & CreativeAuto-check passed

More from gooseworks-ai/goose-skills

All 273 skills in this repo
  • Reddit Post Finder

    gooseworks-ai/goose-skills

    Scrape and search Reddit posts using Apify. An agent skill from gooseworks-ai/goose-skills.

    1.2k GitHub starsUsed in 1 repo~1.2k tokens
    Auto-check passed
  • Create Image Fal

    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.

    1.2k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Render Hook Replacement

    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.

    1.2k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Blog Feed Monitor

    gooseworks-ai/goose-skills

    Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.

    1.2k GitHub starsUsed in 1 repo~578 tokens
    Auto-check passed
  • Competitor Post Engagers

    gooseworks-ai/goose-skills

    Find leads by scraping engagers from a competitor's top LinkedIn posts.

    1.2k GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check: notes
  • Render Chatgpt Chat

    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…

    1.2k GitHub stars~2.3k tokensUpdated today
    Auto-check passed

Works with

Questions about Review Finished Ad

What does Review Finished Ad do?

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.

When should I use Review Finished Ad?

Review Finished Ad fits situations like: tasks that involve Logo and visual identity.

How do I install Review Finished Ad in Claude Code?

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.

How do I install Review Finished Ad in Codex?

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.

Can I use Review Finished Ad in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Review Finished Ad need to run?

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.

Does Review Finished Ad access the network?

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.

Is Review Finished Ad safe to install?

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.

What licence does Review Finished Ad use?

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.

How many tokens does Review Finished Ad use?

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.

What are the alternatives to Review Finished Ad?

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.

Who maintains Review Finished Ad?

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.