Install any skill in seconds. Free to start, no credit card required.
Get Started Free →gooseworks-ai/create-imessage-mockup
Render pixel-accurate iMessage screenshot mockups (DM or group) from a thread JSON. Supports minimal, with-keyboard, and full iPhone 15 Pro frame variants. Outputs HTML + PNG.
Passed 16 of 19 test cases with the skill, and 8 of 19 without it.
and 10 more in the full report
10 fixed9 passed either way3 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 10 test cases the skill fixed. Same model, same prompt, with and without the skill.
I need to run the chat screenshot renderer and save the output files inside a custom directory `/tmp/social-assets` with a custom folder name slug `campaign-frame-1` instead of default names. Which CLI flags accomplish this?
| Checked | Without skill | With skill |
|---|---|---|
| Specifies using the --output flag for output directory | Missed | Passed |
| Specifies using the --name flag for output folder slug | Passed | Passed |
The instructions your model reads when the skill loads.
Generate iMessage screenshots that look like real iOS captures — correct bubbles with tails, typing indicators, timestamps, "Delivered" captions, group avatars + sender names, keyboard chrome, and an optional iPhone 15 Pro bezel with Dynamic Island and status bar.
Turn a structured thread JSON into a believable iMessage screenshot — first as standalone HTML (generate.js + templates/chat.css), then rasterized to PNG with headless Chromium (screenshot.js/render.js via Playwright). It is the atom you reach for when an ad, social post, or video scene needs a fake-but-convincing iOS message capture.
What it gets right, grounded in the renderer:
sent bubbles (right) and gray received bubbles (left), with a curved tear-drop tail drawn only on the last bubble of each consecutive sender run (isLastOfRun in generate.js).theme: "dark" flips the page to the iOS dark conversation look; the status bar, Dynamic Island, and keyboard match iPhone 15 Pro.mode: "group") add per-sender colored avatar circles, sender names above the first bubble of a run, and a 4-tile group-header badge.timestamp pills, a static-but-mid-animation typing three-dot bubble, attachment cards, and "Delivered"/"Read" captions let you stage individual frames of a conversation.--minimal (bubbles only), --with-keyboard (header + iOS keyboard), and --with-iphone-frame (full bezel + Dynamic Island + status bar over a gradient backdrop).The atom embeds no LLM — it is deterministic. The orchestrating agent is responsible for composing the thread JSON; the renderer only draws exactly what the JSON says.
If you're rendering programmatic graphic frames more broadly (cards, posters, infographics), use create-goose-graphics instead.
The skill is deterministic — it does not embed an LLM. To translate a free-form prompt into a thread, the orchestrating agent (you) composes a JSON file matching the schema below, then invokes the renderer.
{
"mode": "dm" | "group",
"title": "Karaoke Crew",
"participants": [
{ "id": "me", "name": "Me", "self": true },
{ "id": "sarah", "name": "Sarah", "color": "#FF9500", "initials": "S" }
],
test cases passed, vs 8 / 19 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.