screencapture
Captures the user's macOS screen, a window, or a region with the built-in `screencapture` CLI, then reads the image so the agent can see what the user sees.
Skill by BretFisher
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/bretfisher-screencapture
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 26, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/screencapture
What's inside
- Skill name
screencapture- Description
- Captures the user's macOS screen, a window, or a region with the built-in `screencapture` CLI, then reads the image so the agent can see what the user sees. Use it when the user asks to check how a native macOS app looks (SwiftUI, AppKit, Electron, Qt, Tk, Java Swing), verify a window rendered correctly after a build or code change, diagnose a visual bug they describe in a desktop app, confirm a menu, dialog, or layout state, or asks "can you see this?" about anything outside a browser, even if they don't say "screenshot". Web pages and web apps belong to a browser automation tool.
- License
- MIT
- Instructions
- 96 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# screencapture
macOS ships `screencapture`, a fast CLI for grabbing the screen. Use it to _see_ what the user sees when working on native GUI software. Web apps belong in a browser-automation tool; this skill is for everything else (SwiftUI/AppKit, Electron, Java/Swing, Qt, Tk, games, system UI, Finder, Xcode, etc.).
## Core workflow
1. **Capture** to the scratch directory with a unique filename. Pick the directory in this order: the session scratch directory when the host names one in its instructions (Claude Code calls it the scratchpad directory), else `$TMPDIR`, else `/tmp`. A session directory is isolated from other sessions and from the user's project, so files there cannot collide or clutter shared space. Set `OUT` to that path and use it in every command below.
2. **Read** the image with the Read tool — Agent is multimodal and will see the PNG inline.
3. **Delete** the file immediately after reading. The user wants temp space kept clean; never leave screenshots lying around.
Filename convention: `$OUT/screencap-$(date +%s).png`. The timestamp prevents collisions if you capture multiple times in one task.
## Picking the right mode
| Goal | Command |
| ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Whole main display, no UI sound | `screencapture -x -m $OUT/screencap-<ts>.png` |
| All displays | `screencapture -x $OUT/screencap-<ts>.png` (one file per screen — macOS appends suffixes) |
| User picks a window or region interactively | `screencapture -x -i $OUT/screencap-<ts>.png` |
| Specific rectangle (x,y,width,height in points, origin top-left) | `screencapture -x -R 100,100,800,600 $OUT/screencap-<ts>.png` |
| Specific window by id | `screencapture -x -l <windowid> $OUT/screencap-<ts>.png` |
| Capture after delay (e.g. to let a menu open) | `screencapture -x -T 3 $OUT/screencap-<ts>.png` |
Always pass `-x` so the shutter sound doesn't startle the user.
`-i` is interactive: it blocks until the user clicks/drags. Only use it when you genuinely need the user to point at something — for autonomous "show me the app's main window" checks, prefer full-screen (`-m`) or a known rect (`-R`).
To find a window id for `-l`, you can run `osascript -e 'tell app "System Events" to get id of windows of process "<AppName>"'` or use `CGWindowListCopyWindowInfo` via a small helper; this is rarely worth it — full-screen capture is usually fine.
## Full flag reference
```text
usage: screencapture [-icMPmwsWxSCUtoa] [files]
-c force screen capture to go to the clipboard
-b capture Touch Bar — non-interactive modes only
-C capture the cursor as well as the screen. only in non-interactive modes
-d display errors to the user graphically
-i capture screen interactively, by selection or window
control key — causes screenshot to go to clipboard
space key — toggle between mouse selection and window selection modes
escape key — cancels interactive screenshot
-m only capture the main monitor, undefined if -i is set
-D<display> screen capture or record from the display specified. -D 1 is main display, -D 2 secondary, etc.
-o in window capture mode, do not capture the shadow of the window
-p screen capture will use the default settings for capture. The files argument will be ignored
-M screen capture output will go to a new Mail message
-P screen capture output will open in Preview or QuickTime Player if video
-B<bundleid> screen capture output will open in app with bundleid
-s only allow mouse selection mode
-S in window capture mode, capture the screen not the window
-J<style> sets the starting of interactive capture
selection - captures screen in selection mode
window - captures screen in window mode
video - records screen in selection mode
-t<format> image format to create, default is png (other options include pdf, jpg, tiff and other formats)
-T<seconds> take the picture after a delay of <seconds>, default is 5
-w only allow window selection mode
-W start interaction in window selection mode
-x do not play sounds
-a do not include windows attached to selected windows
-r do not add dpi meta data to image
-l<windowid> capture this windowsid
-R<x,y,w,h> capture screen rect
-v capture video recording of the screen
-V<seconds> limits video capture to specified seconds
-g captures audio during a video recording using default input.
-G<id> captures audio during a video recording using audio id specified.
-k show clicks in video recording mode
-U Show interactive toolbar in interactive mode
-u present UI after screencapture is complete. files passed to command line will be ignored
-H capture content in HDR
files where to save the screen capture, 1 file per screen
```
## Cleanup is mandatory
The user keeps temp space tidy. After every `Read` of the screenshot, immediately `rm` it in the same logical step. Don't batch — capture, read, delete, one screenshot at a time. If you need a sequence of screenshots, still delete each one as soon as you've consumed it.
Example flow:
```bash
OUT="${SCRATCH_DIR:-${TMPDIR:-/tmp}}" # SCRATCH_DIR = the session scratch path from the host's instructions, if any
screencapture -x -m "$OUT/screencap-1715300000.png"
# → Read tool on $OUT/screencap-1715300000.png
rm "$OUT/screencap-1715300000.png"
```
If a capture fails (e.g. no Screen Recording TCC permission), `screencapture` writes a black or empty image rather than erroring loudly. If the Read shows a black/empty frame, tell the user to grant Screen Recording permission in System Settings → Privacy & Security → Screen Recording for the terminal app running Agent, then retry.
## When NOT to use this skill
- Web pages, web apps, anything in a browser → use the browser automation skill.
- The user asks for a screen _recording_ (video) → `screencapture -v` works but is rarely what's wanted; ask first.
- You just want to know what app is focused → `osascript -e 'tell app "System Events" to name of first process whose frontmost is true'` is faster and doesn't need TCC.From BretFisher/skills, MIT.
More from BretFisher/skills
- 0.649score
github-actions-workflow-pro
BretFisher
Create, edit, audit, and speed up GitHub Actions workflows using Bret Fisher's opinionated DevOps rules.
SkillAFreshness: A★ 21Claude Code +9 - 0.649score
k8s-catch-up
BretFisher
Kubernetes features that reached beta or GA in v1.35 to v1.37 (Dec 2025 to Aug 2026), newer than most models' training data.
SkillAFreshness: A★ 21Claude Code +9 - 0.644score
docker-pro
BretFisher
Create, edit, and modernize Dockerfiles, .dockerignore, Docker Bake files, and Compose files using Bret Fisher's strongly opinionated modern Docker + BuildKit…
SkillAFreshness: A★ 21Claude Code +9 - 0.610score
super-linting
BretFisher
Set up local development linting by picking the right linters for each file type a project uses, then recording them as required pre-commit checks in…
SkillBFreshness: B★ 21Claude Code +9 - 0.568score
gha-audit
BretFisher
Audit the GitHub Actions workflows in this repo for security, speed, and correctness, and report findings with a proposed diff.
SkillBFreshness: B★ 21Claude Code +9 - 0.534score
skill-creator
BretFisher
Create new skills, modify and improve existing skills, and measure skill performance.
SkillCFreshness: C★ 21Claude Code +9
Signals
- Stars
- 21
- Forks
- 0
- Open issues
- 23
- Last commit (this folder)
- Sep 8, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/BretFisher/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from BretFisher
- 0.649score
github-actions-workflow-pro
BretFisher
Create, edit, audit, and speed up GitHub Actions workflows using Bret Fisher's opinionated DevOps rules.
SkillAFreshness: A★ 21Claude Code +9 - 0.649score
k8s-catch-up
BretFisher
Kubernetes features that reached beta or GA in v1.35 to v1.37 (Dec 2025 to Aug 2026), newer than most models' training data.
SkillAFreshness: A★ 21Claude Code +9 - 0.644score
docker-pro
BretFisher
Create, edit, and modernize Dockerfiles, .dockerignore, Docker Bake files, and Compose files using Bret Fisher's strongly opinionated modern Docker + BuildKit…
SkillAFreshness: A★ 21Claude Code +9 - 0.610score
super-linting
BretFisher
Set up local development linting by picking the right linters for each file type a project uses, then recording them as required pre-commit checks in…
SkillBFreshness: B★ 21Claude Code +9 - 0.568score
gha-audit
BretFisher
Audit the GitHub Actions workflows in this repo for security, speed, and correctness, and report findings with a proposed diff.
SkillBFreshness: B★ 21Claude Code +9 - 0.534score
skill-creator
BretFisher
Create new skills, modify and improve existing skills, and measure skill performance.
SkillCFreshness: C★ 21Claude Code +9
Cite this page
screencapture skill. Agent Mart. https://agentmart.dev/skills/bretfisher-screencapture (last updated 2026-10-24)