← All skills
render-imessage-chat
92 / 100 · Low risk
Fine to try. Some of what it can do is expected: a media skill usually calls an AI service over the internet.
By gooseworks-ai/goose-skills (GitHub) · media · 1,319 stars · scanned at commit df82981
Render a configurable iMessage conversation inside a properly framed phone, then a brand end card. Uses the original send/receive sounds and a shared frame timeline for text, typing, scrolling and sound. Free local Playwright + ffmpeg assembly; optional image/music generation belongs to separate gated capabilities.
Works with any agent that supports SKILL.md skills.
What this skill can do
Runs commands on your computer
This is disclosed by the author in the skill's SKILL.md or README.
Found in 15 places.
Show 12 more
- skills/video/render-imessage-chat/scripts/record-chat.js, line 7
const { spawn } = require('node:child_process'); - skills/video/render-imessage-chat/scripts/render-end-card.js, line 33
const { execSync } = require('child_process'); - skills/video/render-imessage-chat/scripts/render-end-card.js, line 234
execSync( - skills/video/render-imessage-chat/scripts/stitch.sh, line 114
raw = subprocess.run(['ffmpeg', '-v', 'error', '-i', file, '-ac', '1', '-ar', '48000', '-f', 's16le', '-'], capture_output=True, check=True).stdout - skills/video/render-imessage-chat/scripts/stitch.sh, line 179
r = subprocess.run(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.PIPE, text=True) - skills/video/render-imessage-chat/tests/test_safe_area.js, line 9
const { spawnSync } = require('node:child_process'); - skills/video/render-imessage-chat/tests/test_safe_area.js, line 159
const check = file => spawnSync('python3', [CHECK_RENDER, '--safe-area', file], { encoding: 'utf8' }); - skills/video/render-imessage-chat/tests/test_stitch.py, line 51
subprocess.run(["ffmpeg", "-y", "-hide_banner", "-loglevel", "error", *args], check=True) - skills/video/render-imessage-chat/tests/test_stitch.py, line 86
return subprocess.run( - skills/video/render-imessage-chat/tests/test_stitch.py, line 93
err = subprocess.run(["ffmpeg", "-hide_banner", "-nostats", "-i", str(path), "-af", - skills/video/render-imessage-chat/tests/test_stitch.py, line 100
err = subprocess.run(["ffmpeg", "-hide_banner", "-ss", str(start), "-t", str(dur), "-i", str(path), - skills/video/render-imessage-chat/tests/test_stitch.py, line 168
err = subprocess.run(["ffmpeg", "-hide_banner", "-nostats", "-ss", str(start), "-t", "2", "-i", str(out),
Connects to the internet
The author does not mention this. Expected for a media skill.
Found in 2 places.
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'render-imessage-chat' ] || [ -L ~/.agents/skills/'render-imessage-chat' ]; then echo 'A skill folder named render-imessage-chat already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/gooseworks-ai/goose-skills' "$d" && git -C "$d" checkout --quiet 'df8298140d434a6363de0c265eb6af2e571d97a5' -- 'skills/video/render-imessage-chat' && mkdir -p ~/.agents/skills && cp -R "$d"/'skills/video/render-imessage-chat' ~/.agents/skills/'render-imessage-chat' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'render-imessage-chat' ~/.claude/skills/'render-imessage-chat' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for gooseworks-ai/goose-skills shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/gooseworks-ai/goose-skills/)
Score history
| Date | Version | Score |
|---|
| 2026-11-08 | df82981 | 92 |
| 2026-11-06 | df82981 | 77 |