Agent skill

Render Hook Replacement

by gooseworks-ai in 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.

MITAuto-check passedMedia & Creative

Install Render Hook Replacement

skills CLI
$ npx skills add gooseworks-ai/goose-skills --skill render-hook-replacement -a claude-code

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

GitHub CLI
$ gh skill install gooseworks-ai/goose-skills render-hook-replacement --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/render-hook-replacement .claude/skills/render-hook-replacement && 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
render-hook-replacement
GitHub stars
1.2k
Token cost
~2.3k tokens
SKILL.md length
1,075 words
Files
9 (incl. scripts, references)
Skills in repo
273
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 5 steps: Watch the exact original and confirm… → Probe source/hook, validate SHA256,… → Run python3 scripts/replace_hook.py… → …
  • Surgical hook tests rather than regenerating the complete ad
  • SKILL.md covers Purpose, Inputs, Workflow and Free demonstration, plus 4 more sections
  • Runs Python scripts from its folder; calls python3

What it does

Render Hook Replacement is an agent skill from 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. Use for surgical hook tests rather than regenerating the complete ad.

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including scripts and reference files (for example `config.example.json`, `references/hook-replacement.md` and `scripts/make_demo.py`).

It sits in Media & Creative. 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

  • Surgical hook tests rather than regenerating the complete ad

Example prompts

  • “/render-hook-replacement”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Watch the exact original and confirm source identity, hook boundary and selected
  2. Probe source/hook, validate SHA256, measured words and captions before encoding.
  3. Run python3 scripts/replace_hook.py --config /path/to/config.json.
  4. Examine the manifest. All four required preservation booleans must be true.
  5. Watch the actual complete output, especially the join and final frame; listen

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 3 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

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

  • Network

    No URLs in SKILL.md.

    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

Render Hook Replacement loads about 2.3k tokens when it runs, and up to ~3.5k if it reads all its reference files. Until then it costs about 65 tokens; SKILL.md has 1,075 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~65
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.5k

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,075 words, ~2,261 tokens.

Download SKILL.mdSave it as .claude/skills/render-hook-replacement/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.
name
render-hook-replacement
description
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. Use for surgical hook tests rather than regenerating the complete ad.
owner
team
status
active
version
1.0.1
created
2026-10-05
updated
2026-10-05
level
atom
category
editing
tags
video, editing, hooks

Human version

Replace only the opening of a selected video. The rest comes from the original, including its ending and burned captions. A supplied hook uses free local assembly; short text can become a free animated card. Generated footage or voice is optional and requires a separate estimate and approval.

The output is a complete MP4 and an edit manifest identifying the exact original, cut, duration change and preservation checks. It stays needs review until the finished video has been watched and its sound checked.


Agent version

Purpose

Perform one hard-cut opening replacement with immutable source identity and decoded retained-body verification. There is no fixed three-second boundary, mandatory creator, new music, body regeneration, whole-video caption pass or automatic final selection. Read the editing guide.

Inputs

  • Python 3.10+, working ffmpeg/ffprobe with libx264 and AAC. Test the binaries themselves before any paid step. Supplied-clip execution uses only Python stdlib.
  • Config JSON following config.example.json. Paths resolve relative to that config, so a fetched package works outside the author's checkout.
  • source.path: exact selected original, never a template sample. Optional source.sha256 refuses changed bytes; project_id/render_id are opaque caller identifiers preserved in the manifest. Compute and freeze the hash at intake.
  • hook_end_sec: positive opening boundary leaving a body. If speech crosses it, choose a measured word/silence boundary. No silent correction of that boundary.
  • hook.path: supplied video, any dimensions/frame rate, normalized to the original. Or hook.text, duration_sec, font_path and optional #RRGGBB colors. Text needs Pillow (part of the video toolchain) and an explicitly supplied licensed font.
  • Optional words:[{start,end,word}] measured on this source, or word_times JSON containing source_sha256 and words. A cut through a measured word fails.
  • Optional captions:{path,output_path}: original separate SRT or timed JSON cues. Complete retained cues shift by the measured duration delta. A cue crossing the cut requires measured words, so removed opening copy does not linger over the body.
  • output:{path,manifest_path?}: a new .mp4 path. Existing outputs and every input are protected from overwrite. The default manifest is <output>.manifest.json.

The original must be CFR, unrotated square-pixel 8-bit yuv420p with zero video start time. Other sources fail before assembly. If normalization is necessary, make it a separately approved source version and freeze that version; do not quietly remaster the selected original. Audio is optional. An original audio/container tail more than 2ms beyond the last video frame also blocks; make a reviewed source version with a final-frame hold before editing. The renderer never trims that narration/music tail and calls it preserved.

Workflow

  1. Watch the exact original and confirm source identity, hook boundary and selected replacement. Keep the original file read-only. Ask only for missing choices.
  2. Probe source/hook, validate SHA256, measured words and captions before encoding. Before creating any new hook, run python3 scripts/replace_hook.py --preflight --config /path/to/source-config.json. This needs only source/cut and optional words/captions, verifies runtime encoders and supported source shape, and writes no media or paid job. Generated hooks are separate work: read the chosen generation capability, quote only the required new opening, obtain approval, then bind its finished clip here.
  3. Run python3 scripts/replace_hook.py --config /path/to/config.json. The script normalizes only the hook geometry/fps; joins original body at normal speed; uses browser-compatible High-profile libx264 CRF 12; retains original body audio with AAC 256k; shifts separate captions; and checks source integrity before publishing files.
  4. Examine the manifest. All four required preservation booleans must be true. Every retained decoded video frame is compared with PSNR ≥45dB and identical frame count/order. Audio is compared at identical sample positions with normalized RMS error ≤0.08 and correlation ≥0.99 (silence uses absolute RMS error ≤0.0001). These are encode tolerances, not a listening verdict.
  5. Watch the actual complete output, especially the join and final frame; listen to the hook/body join, narration/music and ending. Check the new hook copy and brand facts. Fix only the opening and re-run to a new path. Keep the result awaiting review until the review report names this output hash and source. Only after actual watch/audio/caption review, record review:{status:'passed',source_sha256:<original hash>,output_sha256:<finished hash>,checked_at:<ISO datetime>} alongside the passing quality report. Never recycle another output's review.
Show full SKILL.md (409 more words)Show less

Free demonstration

From a fresh package folder:

bash
python3 scripts/make_demo.py --out-dir demo
python3 scripts/replace_hook.py --config demo/config.json
python3 -m unittest discover -s tests -v

The neutral fixture replaces 2.4s with 1.5s and retains the original body/end. --font /path/to/licensed.ttf adds burned captions to the fixture. Set HOOK_TEST_FONT=/path/to/licensed.ttf to test the optional kinetic text route too. The demo makes no network requests or paid calls. It is a timing fixture, not a customer ad or catalog upload. High-quality retained-body encoding can produce large files.

For a local pack, use python3 scripts/replace_pack.py --config pack.json with the same source, hook_end_sec, optional words/captions, output_dir and variants:[{label,hook:{path}}]. The wrapper freezes one source hash and writes one complete MP4/manifest per label plus pack-manifest.json. Successful siblings remain available if one fails; retry the failed target with the single renderer.

Output

  • Complete MP4; original untouched.
  • Version 1 manifest with source.{sha256,project_id,render_id}, hook_end_sec, body_start_sec, replacement_duration_sec, new_body_start_sec, duration_delta_sec, output.{path,sha256,duration_sec}, caption artifacts and verification.{source_unchanged,body_video_preserved,body_audio_preserved,caption_timing_preserved}.
  • Separate shifted captions if supplied. Existing burned captions stay in the original body frames; no whole-ad reburning or redesign.
  • status/review.status: needs_review. No project storage behavior is embedded in this generic renderer; the caller saves candidates and performs final review.

Quality Checks

  • Frozen source/hash matches the selected version; old source and hook bytes remain intact.
  • No body frame is missing, duplicated, reordered, graded or cropped.
  • Original body audio stays at normal speed/gain, with no crossfade or added bed.
  • Original ending survives; shifted captions follow the measured duration delta.
  • Subframe boundaries preserve the requested cut; the manifest discloses the first selected original video frame and its offset (less than one source frame).
  • Invalid inputs fail clearly; no paid work occurs inside this capability.

Failure Modes

ProblemAction
Wrong source hash or stale word fileRefetch the selected version and remeasure; never switch versions silently.
Cut clips speech or a separate captionChoose a safe boundary; supply measured words for a partial caption.
VFR, HDR/10-bit, rotated or nonzero-start originalCreate an explicitly reviewed normalized source version first.
Original audio outlasts videoMake a reviewed source version with a final-frame hold, then freeze that version; never drop the audio tail.
Missing/corrupt media or LFS pointerResolve real media before rendering or generation.
Existing output pathUse a fresh version path; never overwrite the original.
Local ffmpeg has no drawtextText uses Pillow PNG + fade/slide overlay; drawtext is not required.
Retained-body verification failsCandidate is not published; inspect the failed video/audio metric and original remains available.
Needed generated creator/voice unavailableKeep supplied footage/text options; show missing provider and new estimate before a paid retry.

[[used-by::create-hook-variant-pack]], [[references::preflight-concat]], [[references::trim-video-clips]], [[references::retime-captions-to-words]], [[references::watch]].

© 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 8 other files (scripts, references) in skills/ads/capabilities/render-hook-replacement of gooseworks-ai/goose-skills.

  • SKILL.md
  • config.example.json
  • references/hook-replacement.md
  • scripts/make_demo.py
  • scripts/replace_hook.py
  • scripts/replace_pack.py
  • skill.meta.json
  • tests/smoke-test.md
  • tests/test_replace_hook.py

Open the folder on GitHubat commit c650c6d

Compare with similar skills

Render Hook Replacement 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.

Render Hook Replacement compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Render Hook Replacement this skillgooseworks-ai/goose-skills1.2k—~2.3kAutomated safety check: PassMIT
Guizang Social Cardsop7418/guizang-social-card-skill7.4k1 repos~7.8kAutomated safety check: PassAGPL-3.0
Weekly Changelog Videoheygen-com/hyperframes59k—~3.3kAutomated safety check: PassApache-2.0
Anthropic Brand Stylinganthropics/skills180k30 repos~559Automated safety check: PassApache-2.0
MoneyPrinterTurbo Video Generatorharry0703/MoneyPrinterTurbo129k—~2.1kAutomated safety check: WarnMIT
Brag Slim Launch Video Makerlatent-spaces/brag14k1 repos~1.9kAutomated safety check: PassMIT

Similar skills

  • Guizang Social Cards

    op7418/guizang-social-card-skill

    Produces social card sets for Xiaohongshu and WeChat: carousels, Live Photo motion cards and puzzle layouts, and WeChat cover pairs, rendered from single-file HTML.

    7.4k GitHub starsUsed in 1 repo~7.8k tokens
    Media & CreativeAuto-check passed
  • Weekly Changelog Video

    heygen-com/hyperframes

    Turns a weekly changelog markdown file into a branded HyperFrames video with voiceover, animated mock-UI scenes and captions, using fonts, background and scripts bundled in the skill.

    59k GitHub stars~3.3k tokensUpdated today
    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
  • MoneyPrinterTurbo Video Generator

    harry0703/MoneyPrinterTurbo

    Installs and runs MoneyPrinterTurbo to turn a topic or script into a finished short video with voice-over, subtitles, stock footage and music.

    129k GitHub stars~2.1k tokensUpdated today
    Media & CreativeAuto-check: warnings
  • Builds a short, shareable launch video with music and motion from a project directory or a website URL, using only tools already on the machine.

    14k GitHub starsUsed in 1 repo~1.9k tokens
    Media & CreativeAuto-check passed
  • HyperFrames Media Use

    heygen-com/hyperframes

    Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.

    59k GitHub stars~2.4k tokensUpdated today
    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
  • 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
  • Conference Speaker Scraper

    gooseworks-ai/goose-skills

    Extract speaker names, titles, companies, and bios from conference websites.

    1.2k GitHub starsUsed in 1 repo~846 tokens
    Auto-check passed

Questions about Render Hook Replacement

What does Render Hook Replacement do?

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. Render Hook Replacement is an agent skill from 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.

When should I use Render Hook Replacement?

Render Hook Replacement fits situations like: surgical hook tests rather than regenerating the complete ad.

How do I install Render Hook Replacement in Claude Code?

Run `npx skills add gooseworks-ai/goose-skills --skill render-hook-replacement -a claude-code`. Or copy the skill folder (skills/ads/capabilities/render-hook-replacement in gooseworks-ai/goose-skills) into .claude/skills/render-hook-replacement in your project. Claude Code loads it when a task matches its description.

How do I install Render Hook Replacement in Codex?

Run `npx skills add gooseworks-ai/goose-skills --skill render-hook-replacement -a codex`. Or copy the skill folder (skills/ads/capabilities/render-hook-replacement in gooseworks-ai/goose-skills) into .agents/skills/render-hook-replacement in your project. Codex loads it when a task matches its description.

Can I use Render Hook Replacement 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 render-hook-replacement -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/render-hook-replacement, .gemini/skills/render-hook-replacement, .github/skills/render-hook-replacement and .opencode/skills/render-hook-replacement in your project.

What does Render Hook Replacement need to run?

Going by SKILL.md and its folder, Render Hook Replacement needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Render Hook Replacement access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Render Hook Replacement 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 Render Hook Replacement use?

Render Hook Replacement 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 Render Hook Replacement 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. Its references folder adds about 1.3k tokens, read only when the agent opens those files.

What are the alternatives to Render Hook Replacement?

Skills that share tags, products or a category with Render Hook Replacement: Guizang Social Cards (op7418/guizang-social-card-skill, 7.4k stars), Weekly Changelog Video (heygen-com/hyperframes, 59k stars), Anthropic Brand Styling (anthropics/skills, 180k stars) and MoneyPrinterTurbo Video Generator (harry0703/MoneyPrinterTurbo, 129k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Render Hook Replacement?

gooseworks-ai (a GitHub organization) maintains it in gooseworks-ai/goose-skills, which has 1,239 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.