screenshot
Capture screenshots of live websites with the iris CLI — full page, single CSS element, desktop/iPhone/iPad presets, dark mode, concurrent batch, JSON output. Use when the user asks to screenshot or c
SKILL.mdplugins/iris/skills/screenshot/SKILL.md
GitHubScreenshot — website camera powered by iris
iris renders a page in a real Chrome via the DevTools Protocol, waits for
fonts, images, entrance animations (and lazy-loaded content on --full), then
captures a trustworthy image at retina @2x by default. It is a camera, not a
driver: it captures, it does not click, type, or script-scroll.
Preflight (once per session, before the first capture)
Paths like scripts/ and references/ below are relative to THIS skill's
directory — run them from there, or prefix them with the skill's absolute path.
bash scripts/doctor.sh
- Exits 0 and prints the resolved Chrome path only when a smoke capture succeeded.
- If anything is missing, run
bash scripts/install.shand re-run doctor. - If
$CHROMEis not set in your environment, add--chrome <path printed by doctor>to iris invocations (or export CHROME for the session). - If
irisis not on your PATH, use the absolute path doctor printed.
Choosing a command
| Goal | Command |
|---|---|
| Desktop shot (1440×900 @2x) | iris <url> |
| Full page height | iris --full <url> |
| Full page, dark mode | iris --full --dark <url> |
| One element (first CSS match, auto-scroll, tight framing) | iris --selector '#hero' --padding 24 <url> |
| iPhone (390×844 @3x, mobile UA) | iris -s iphone <url> |
| iPad (1024×1366 @2x) | iris -s ipad <url> |
| Custom viewport | iris -s 1280x800 <url> |
| Local dev server | iris http://localhost:3000 -o shots/home.png (bare localhost uses HTTP automatically) |
| Wait for an element before capturing | iris --wait-for 'h1' <url> |
| Concurrent batch | iris -o shots/ a.com b.com c.com or cat urls.txt | iris - -o shots/ |
| Machine-readable results | add --json (one JSON object per capture on stdout) |
Conventions
- Save captures to
shots/in the working directory unless the user specifies a path. - Single URL →
-o file.png; multiple URLs →-o dir/(filenames derive from the URL, collisions get-2,-3suffixes). - Use
--jsonfor batches and verify each result; exit code 1 if any URL failed. - Pages taller than ~16k px at @2x fall back to @1x automatically — check the JSON
scalefield and mention it if it happens. - Formats:
png(default),jpg,webp— picked by the-oextension or--format.
Limitations (do not fight these)
--selectorcaptures the FIRST matching element in document order only. It conflicts with--full;--paddingrequires--selector.- Cross-origin iframe content is not captured.
- No interaction (clicks, typing, scripted scroll). For interactive checks, use a browser automation tool instead.
References (read only when needed)
references/flags.md— complete flag reference, presets, JSON schema, tuning tips.references/mcp-setup.md— registeriris mcpso the agent gets acapturetool (stdio MCP server built into the same binary).references/troubleshooting.md— failure modes and fixes (missing browser, headless libs, timeouts, batch failures, MCP tool not appearing).
MCP (optional)
If the user wants iris available as an agent tool rather than just a CLI, read
references/mcp-setup.md and register the server
(command: iris, args: ["mcp"]).