create-image-fal
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. image_urls…
Render pixel-accurate Apple Notes (iPhone, light mode) screenshot mockups from a JSON note spec. Outputs HTML + PNG at the iPhone 16/15 Pro native 1180×2556. Supports paragraphs, images, checklists, dividers, autocorrect underline, smart quotes, and an optional iOS keyboard
$ npx -y skills add gooseworks-ai/goose-skills --skill create-apple-notes-mockup --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/create-apple-notes-mockupContext preview
The summary Claude sees to decide when to auto-load this skill.
Render pixel-accurate Apple Notes (iPhone, light mode) screenshot mockups from a JSON note spec. Outputs HTML + PNG at the iPhone 16/15 Pro native 1180×2556. Supports paragraphs, images, checklists, dividers, autocorrect underline, smart quotes, and an optional iOS keyboard
name: create-apple-notes-mockup description: Render pixel-accurate Apple Notes (iPhone, light mode) screenshot mockups from a JSON note spec. Outputs HTML + PNG at the iPhone 16/15 Pro native 1180×2556. Supports paragraphs, images, checklists, dividers, autocorrect underline, smart quotes, and an optional iOS keyboard chrome overlay used by the parent video-ad molecule.
Generate Apple Notes screens that look like real iPhone screenshots — correct status bar, floating toolbar pill, bold title, body text with paragraph spacing, yellow text cursor, autocorrect underline, optional embedded images and checklists, and an optional iOS keyboard.
Turn a JSON note spec into a pixel-accurate Apple Notes (iPhone, light mode) screenshot — HTML + PNG at the native 1180×2556 (DPR 2). It is the deterministic, no-LLM renderer that the `create-apple-notes-video-ad` molecule drives frame-by-frame to fake a typing animation, and a standalone tool for one-off "noted to self" beats in ads, social posts, and storyboards. The orchestrating agent owns the copy; this atom owns the fidelity (status bar, smart punctuation, cursor, autocorrect underline, toolbar, keyboard chrome).
If you're rendering an iMessage thread, use `skills/atoms/messaging/create-imessage-mockup` instead.
The skill is deterministic — it does not embed an LLM. The orchestrating agent composes a note JSON matching the schema below, then invokes the renderer.
{
"title": "Hello",
"body": [
{ "type": "paragraph", "text": "This is a screen recording of me typing on apple notes app." },
{ "type": "paragraph", "text": "Let's see how this feels." }
],
"cursor": "end",
"autocorrect_underline": ["this", "how"],
"status_bar": {
"time": "9:41",
"battery_pct": 87,
"battery_low": false,
"show_focus_glyph": false
},
"show_keyboard": false,
"keyboard_state": {
"suggestions": ["see", "go", "do"],
"shift": "lower",
"letters_row1": "qwertyuiop",
"letters_row2": "asdfghjkl",
"letters_row3": "zxcvbnm"
},
"with_iphone_frame": false
}node render.js --note examples/mid.json node render.js --note examples/long.json --output ./my-exports/ --name todays-note node render.js --note my-note.json --with-keyboard node render.js --note my-note.json --viewport 1080x1920 # 9:16 ad delivery size
| Flag | Effect | |---|---| | `--note <path>` | (required) JSON file matching the schema above | | `--with-keyboard` | force-enables `show_keyboard` (overrides spec) | | `--with-iphone-frame` | force-enables hardware bezel | | `--no-frame` | force-disables hardware bezel | | `--output <dir>` | parent dir for the dated output folder; default `./apple-notes-mockup-exports/` | | `--name <slug>` | override the output folder slug | | `--out-html <path>` / `--out-png <path>` | write directly to explicit paths (skip dated folder) | | `--viewport WxH` | override the render viewport (default `1180x2556`) | | `--dpr N` | device-pixel ratio (default `2`) |
<output>/<YYYY-MM-DD>-<slug>/ index.html # full standalone HTML (images inlined as data URIs) screenshot.png # rendered PNG at the chosen viewport × DPR spec.json # copy of the input for reproducibility
Default `<output>` is `./apple-notes-mockup-exports/` in the cwd.
1. Receive a prompt or existing note JSON. 2. If only a prompt was given: compose a `note.json` matching the schema, save it. 3. Run `node render.js --note <path> [--with-keyboard]`. 4. Open the resulting PNG to verify the layout. If something looks wrong (wrong wrap, wrong cursor position, wrong battery color), edit the JSON and re-render.
cd create-apple-notes-mockup npm install npx playwright install chromium
A symlink to `create-imessage-mockup/node_modules` ships with the repo, so on a fresh clone `npm install` is only needed if you want this skill to be self-contained.
| File | Purpose | |---|---| | `render.js` | CLI entry — parses flags, resolves image paths, generates HTML, takes screenshot | | `generate.js` | Note JSON → standalone HTML page (smart-punctuation + autocorrect underline applied here) | | `screenshot.js` | HTML → PNG via Playwright (chromium he
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.
Repo: 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. image_urls…
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's…
Generate an instrumental music bed via ElevenLabs Music, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Trims any sparse intro, loudnorm, fades…
Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent. The…
Generate a voiceover (VO) clip via ElevenLabs text-to-speech, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Voice id + script text come from…
Scrape competitor ads from Google Ads by domain. Returns ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.