Skip to content
cccskills
FreePublished on GitHub

render-model-comparison-grid

Create a comparison video that shows the same prompt alongside two to four labeled model outputs. Configure image or muted video cells, timing, and an end card; the renderer assembles frames deterministically and keeps prompt text crisp.

OriginalShow the original description

Render a 'model comparison grid' video from a config — a fal-style "same prompt, N contenders" showcase — a dark real-DOM stage where per beat a monospace prompt fades in centered, docks to a small top strip, then a labeled 2-4 panel grid (static images OR muted video clips, mixable per cell) staggers in and holds for comparison, plus a minimal end card — frame-stepped via Playwright (video cells are frame-seeked deterministically) and encoded with FFmpeg. Deterministic assembly, FREE (cell media comes from create-image-fal / create-video-fal, music from create-music-elevenlabs), text stays pixel-crisp. Use for the model-comparison-grid format.

gooseworks-ai/goose-skills1,272 stars(GitHub 1,272 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Comparing multiple models on the same prompt
  • Showing image and video outputs side by side
  • Making a repeatable model comparison video from a config

Files included (6)

  • SKILL.md3.7 KB
  • scripts/build_composition.py10.3 KB
  • scripts/config.example.json4.0 KB
  • scripts/render_seekable_hyperframe.py2.5 KB
  • skill.meta.json223 B
  • tests/smoke-test.md1.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

render-model-comparison-grid

Render the 'model comparison grid' format from a config. The signature of this format is a "Same prompt. N models." gauntlet: a dark stage where, per beat, a PROMPT eyebrow + the (condensed) prompt fades in centered in monospace and holds readable ~0.8s, then docks to a small top strip while a grid of 2-4 labeled panels staggers in (0.15s apart) and holds for side-by-side comparison. A persistent model/variant label sits under each panel; column order is identical on every beat. Ends on a minimal end card (headline + column names only — no meta-stats line).

The grid is media-agnostic per cell: any cell is a static image or a muted video clip (i2v outputs, screen recordings), mixable within one beat. Video cells loop during the hold and are frame-seeked deterministically (the renderer awaits each seek), so the render never depends on wall-clock playback timing.

The renderer itself is FREE/deterministic (Playwright frame-step + FFmpeg). The paid inputs are separate capabilities: the cell images come from create-image-fal, the cell clips from create-video-fal, and the music bed from create-music-elevenlabs. Prompt text and labels are real DOM — never AI-rendered.

Default shape: 5 beats × 4.5s + 2.5s end card = 25.0s @ 1280×720/30fps, all configurable from one config.json.

Run

build_composition.py --config config.json --output hyperframe.html ; render_seekable_hyperframe.py hyperframe.html master-silent.mp4 <duration> --fps 30 --width 1280 --height 720 — dark stage, staggered grid, deterministic, no paid calls. The config schema is documented at the top of scripts/build_composition.py; scripts/config.example.json IS the shipped worked example (re-point the cell paths at your own media; its contenders, beat axes, prompts, end-card copy and music prompt are the demo's — the recipe's user choices supply yours, never copy them as defaults).

build_composition.py validates every cell path and the column count (2-4), infers each cell's media type from its extension (.png/.jpg/.jpeg/.webp → image; .mp4/.mov/.webm/.m4v → muted video), and emits a self-contained HTML that exposes window.mediaReady() + window.renderAt(t). render_seekable_hyperframe.py awaits both, so <video> cells seek to the right frame before each screenshot — never a frozen first frame.

Contract

  • Deterministic + FREE (Playwright frame-step + FFmpeg); no paid calls in this capability.
  • Columns = panels-per-beat (2-4); every beat supplies exactly that many cells, same order.
  • The template recipe (DB) supplies the config; cell images/clips + music are separate capabilities.
  • State is computed entirely in renderAt(t) — never CSS animation-delay/transitions (Playwright scrubbing traps delayed animations in pre-state).
  • Video cells must decode in the render Chromium (H.264 yes, ProRes no — transcode .mov ProRes to H.264 first). An images-only grid has no decode dependency.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

<slug>

FreeSummary

The supplied material contains only placeholder text for the skill’s purpose, inputs, steps, and completion criteria. It does not provide enough information to describe a task or result reliably.

  • No use case can be identified from the supplied material
  • Purpose is unspecified
  • Inputs and expected results are unspecified
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

ad-angle-miner

FreeSummary

Research supported advertising angles using buyer context, current product facts, customer language, and observed ads. Turn the evidence into static ad, video, or copy ideas, matching video concepts to available recipes. Scores rank ideas for testing; they do not predict results.

  • Finding evidence-backed angles for a product campaign
  • Developing static ad or video concepts from customer research
  • Writing headline and primary-text options for ads
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Analyze campaign data from Google, Meta, and LinkedIn to find strong and wasteful spend. The skill checks funnel performance and test results, then recommends which campaigns to pause, scale, or test and how to shift budget across channels.

  • Finding campaigns and ads that waste budget
  • Comparing performance across Google, Meta, and LinkedIn
  • Planning specific budget shifts and follow-up tests
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Compare ad spend and signups with downstream outcomes to calculate the cost of each qualified lead. The skill checks tracking coverage, accounts for how long leads need to mature, and groups creatives into actionable categories with confidence notes.

  • Compare true qualified-lead costs across creatives
  • Find low-CPA ads that bring poor-quality leads
  • Check whether signups can be linked to downstream outcomes
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Prepare the intake for a Meta ad campaign by reviewing available brand information first, stating reasonable assumptions, and asking only questions whose answers could affect budget, claims, or legal exposure. It records stable brand facts, a campaign brief, and what was asked versus assumed.

  • Prepare a Meta ad campaign when brand facts are missing
  • Clarify budget and timing before campaign planning
  • Record approved claims and audience restrictions
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

ad-policy-check

FreeSummary

Review ad copy, image text, visuals, and people against platform and brand category rules. It suggests honest fixes and needed disclosures, then flags issues requiring human or legal review, with a separate result for each ad and platform.

  • Checking ad copy and visuals before launch
  • Reviewing creator ads for required disclosures
  • Fixing a platform disapproval and recording the issue
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

See all skills by gooseworks-ai

Report a problem with this skill