Install
openclaw skills install @vargai/varg-mockupsMock up a video before paying for it: one self-contained HTML board (storyboard board, moodboard, reference board, look test, plan page, contact sheet) with numbered frames, shot specs, prompts, approve / needs-fix / reject and a note per frame, side-by-side variants and feedback copied as Markdown; stills made on varg (Nano Banana 2.1, GPT Image 2.5) that do not look like AI slop and stay consistent (character sheets, environment master first, same lens and light); device and app UI mockups (iMessage chat, Apple Notes, iPhone fold, phone stamp carousel, terminals, code editors). Use for "mock up", "mock up a look", "mockup", "storyboard board", "moodboard", "reference board", "look test", "stills for approval", "key frames to approve", "shot board", "phone mockup", "app UI mockup", "screen mockup", or stills that look like AI slop or drift between shots. Not for final video clips (varg-video-prompting) or 3D camera blocking (threejs-animatic).
openclaw skills install @vargai/varg-mockupsA mockup is anything the reviewer can react to in a minute instead of after a render. In our sessions it was three things, in this order of how often we used them:
The board is the core. Stills feed it; device mockups appear on it as stills before they are rendered as video.
seedance_2_5 clip at 720p costs about 210 credits. A nano_banana_2_1 still costs about 6-8 credits
and a gpt_image_2_5 high-quality still about 23 (prices: the varg-ai skill, references/models.md). One
wasted clip pays for 9-35 stills.estimate_cost, or plan_batch for many stills) and say the total in credits.gpt_image_2_5) for the hero stills.plan_batch for the whole set (prices it, charges
nothing), then run_batch after the go. Make two variants only for shots that are genuinely open; label
them A and B and show them side by side.templates/board.html: copy it, fill only the JSON block (frames, spec, refs,
variants with model, credits and prompt, your QA note and suggested status). Embed thumbnails, link full-res
(see Gotchas for sizes)."/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --headless=new --hide-scrollbars --screenshot=board.png --window-size=1400,1000 --virtual-time-budget=3000 "file:///abs/path/board.html?theme=light"
then read the PNG. Also try ?theme=dark and ?view=list. Headless Chrome will not go narrower than 500 px;
check phone width by loading the board in a 390 px wide iframe.round, regenerate just those frames, keep replaced stills in
a retired/ folder (never delete paid images), and say which frames changed.If the person asks to see the plan without spending ("show me the set of refs you will pass and write the prompt, don't generate"), make the same board with the planned refs and prompts per shot and no new images.
Per frame (the template does all of this):
01: The hook), the time range, the act.ref A1 sheet, ref L1 master). Reviewers check these: "does image3 even
appear in these scenes?" caught a wrong reference.Per page: a strip of all frames at the top (the film in N frames), the look line and palette with a Copy button,
the anchor cards, filters by status, a guides toggle (thirds and an 8% safe area, for checking room for titles),
Copy feedback (Markdown the reviewer pastes back into the chat), Print (a clean three-up contact sheet with
statuses and notes), light and dark themes, phone layout. Optional: an audio file gives a player and a "Play
from here" button per frame, which reviewers used to judge stills against the music.
Board rules from the reviews:
More layouts (reference board, look-fix plan, asset pack, shot log with music, UI mockup page):
references/board-patterns.md.
Without a specific reference an agent picks the safe, middle version of everything: "most AI videos look cheap because nobody gives the AI a real film reference" (post). People often cannot name the look they want either (post), so bring frames, not adjectives.
Where to look:
How to search and pick:
What the reviewers called slop: a character that came out as a generic stock man ("make him a bit younger, he came out AI slop"), a stretch of shots that did not match each other, glossy renders, and meme packaging. What fixed it was the brief, not the grade: a grade-only test (lower saturation, cooler balance, grain, vignette) helped about 10%; changing what we asked for did the rest.
Prompt templates and filled examples: references/still-prompts.md.
threejs-animatic and varg-previz.Deeper material: varg-consistent-characters (cast and location cards, composites approved as stills),
varg-character-design (memorable characters), varg-previz (references/character-sheets.md: anchor table
and the still QA checklist).
All of these render locally with no credits. Each has a still mode: show the still on the board first, render the video after the go.
| The person wants | Use | Still first |
|---|---|---|
| A text conversation as an iPhone iMessage screen recording | imessage-video | bun render.ts chat.json --still last |
| Any text typed live in iPhone Notes | apple-notes-video | render a short note first |
| Their app screens on a foldable iPhone, 3D fold | iphone-duo-fold | bun render.ts --screen app.png --still 2.4 |
| Posters or covers swiping in a phone as perforated stamps | stamp-carousel | python3 engine/render.py images --still 31 -o frame.png |
| Chat thread, team chat, terminal, coding-agent session, code editor, notification, 3D code slab, exploded UI | app-ui-mockups | preset preview frame |
| How a catalog, registry or marketplace works | card-catalog-explainer | config preview |
| CTA pills, stickers, comment and review cards over footage | social-overlays | |
| Lower thirds, title cards, show opens | title-design |
imessage-video, apple-notes-video, iphone-duo-fold, stamp-carousel and card-catalog-explainer are templates in
github.com/vargHQ/code2video-templates, one folder each with its own
SKILL.md; clone the repo and the agent picks the template from its AGENTS.md.
Rules for device mockups:
UI design mockups as pages (a product screen or a widget, not a video): build a live HTML emulation of the
host it will run in, with a switcher that re-themes every mockup on the page; mark sample numbers as examples;
use real previews where they exist; build it as a separate page and never edit the real app for a mockup.
Details: references/board-patterns.md.
get_job_cost.aspect_ratio;
the same request without extra provider options came back right.ffmpeg -i in.png -vf scale=480:-2 -q:v 5 thumb.jpg, then base64) and link the full-resolution file. A 36-frame board with embedded thumbnails was
2.7 MB and opened instantly.curl. Python's default urllib user agent got 403 from the file host.ffmpeg -i in.mp4 -an -c:v copy out.mp4).varg-video-prompting (prompting the video step), threejs-animatic and varg-previz (3D blocking and
camera approval), varg-consistent-characters, varg-character-design, varg-ai (models, prices, MCP and
API), app-ui-mockups, imessage-video, apple-notes-video, iphone-duo-fold, stamp-carousel,
title-design, social-overlays.