goose-ads
Edit, resize, animate and study image ads with GooseWorks in this chat. New static or image ads go to the make-static-ads skill…
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.
Claude Code
$ npx -y skills add gooseworks-ai/goose-skills --skill create-imessage-mockup --agent claude-code
Codex
$ npx skills add gooseworks-ai/goose-skills --skill create-imessage-mockup -a codex -y
Cursor
$ npx skills add gooseworks-ai/goose-skills --skill create-imessage-mockup -a cursor -y
Gemini CLI
$ npx skills add gooseworks-ai/goose-skills --skill create-imessage-mockup -a gemini-cli -y
GitHub Copilot
$ npx skills add gooseworks-ai/goose-skills --skill create-imessage-mockup -a github-copilot -y
OpenCode
$ npx skills add gooseworks-ai/goose-skills --skill create-imessage-mockup -a opencode -y
Windsurf
$ npx skills add gooseworks-ai/goose-skills --skill create-imessage-mockup -a windsurf -y
name: create-imessage-mockup description: 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. status: superseded superseded_by: phone-chat@1.2.0
> **Superseded:** the video kit now does this with the phone-chat part, version 1.2.0, in the parts folder of this repository. Every phone-chat style is a style file that draws the same screen frame by frame from the plan's scenes, with the original sounds, in the kit's browser. This atom stays, unchanged in behaviour, for skills outside the kit until they move; its scripts still run.
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:
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 the `goose-graphics` skill 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" }
],
"messages": [
{ "type": "timestamp", "label": "iMessage\nToday 9:41 AM" },
{ "type": "timestamp", "bold": "Sat, Jan 2", "light": "11:07" },
{ "type": "text", "from": "sarah", "text": "Did we crash it?" },
{ "type": "text", "from": "me", "text": "Couldn't withstand our friendship", "delivered": true, "read": false },
{ "type": "typing", "from": "sarah" }
],
"keyboard": { "leftIcon": "plus" }
}node render.js --thread examples/group-with-frame.json --with-iphone-frame node render.js --thread examples/dm-with-keyboard.json --with-keyboard node render.js --thread examples/dm-minimal.json --minimal node render.js --thread my-thread.json --with-keyboard --output ./my-exports/ --name nightout
| Flag | Effect | |---|---| | `--thread <path>` | (required) JSON file matching the schema above | | `--prompt "<brief>"` | prints the schema and exits — agent must compose a thread.json and re-invoke | | `--minimal` | bubbles + timestamps only (no header, no keyboard, no frame) | | `--with-keyboard` | bubbles + iOS keyboard chrome (default) | | `--with-iphone-frame` | full iPhone 15 Pro bezel + Dynamic Island + status bar + soft gradient backdrop | | `--dm` / `--group` | force chat mode (otherwise auto-detected from participants) | | `--name <slug>` | override the output folder slug | | `--output <dir>` | parent dir for the dated output folder; default `./imessage-mockup-exports/` |
Frame flags are mutually exclusive.
<output>/<YYYY-MM-DD>-<slug>/ index.html # full standalone HTML screenshot.png # rendered PNG (DPR 3, "Retina") thread.json # copy of the input for reproducibility
Default `<output>` is `./imessage-mockup-exports/` in the cwd.
1. Receive a prompt or existing thread JSON. 2. If only a prompt was given: compose a thread.json matching the schema, save it
Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.
Edit, resize, animate and study image ads with GooseWorks in this chat. New static or image ads go to the make-static-ads skill…
Make product photos (studio, lifestyle or on a model) of a brand's real products with GooseWorks in this chat. Start brand work…
Make an approved GooseWorks video when an answer's next_step gives its command.
Make a video ad in this chat from a real reference ad, found or theirs; styles are the fallback. Follow every answer's next_step.
GooseWorks growth coworker and router for markets, competitors, audiences, creators, campaigns, ads, photos, graphics, video,…
Create a custom video with sourced product accuracy, explicit sound routing and exact-final audiovisual review.
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use…
Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…
Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…
Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…