Install
$ agentstack add skill-hdprajwal-agent-skills-screen-capture ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README — it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Screen Capture (Wayland / Hyprland)
grim captures; slurp selects a region interactively; hyprctl + jq give geometry for non-interactive captures. Output goes to a file or to wl-copy.
Requires grim and slurp (both present on this machine). Wayland only — scrot /maim won't work here.
Full screen
grim ~/screenshot.png # focused output (or all, depending on setup)
grim -o "$(hyprctl monitors -j | jq -r '.[] | select(.focused).name')" ~/focused-monitor.png
Interactive region (you draw the box)
grim -g "$(slurp)" ~/region.png
Active window — no interaction
geom=$(hyprctl activewindow -j | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')
grim -g "$geom" ~/active-window.png
Pick a specific window by class — no interaction
geom=$(hyprctl clients -j | jq -r '.[] | select(.class=="firefox") | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | head -1)
grim -g "$geom" ~/firefox.png
To the clipboard (no file)
grim - | wl-copy --type image/png # full screen → clipboard
grim -g "$(slurp)" - | wl-copy --type image/png # region → clipboard
Smaller / compressed (good for feeding to a model)
grim -t jpeg -q 75 ~/shot.jpg # JPEG at quality 75
grim -t png -l 6 ~/shot.png # PNG compression level
Reading it back
After saving, Read the image file to analyze it — that's how the agent "sees" the result. Keep captures in /tmp or a scratch dir and clean up after.
Gotchas
- Scaling:
grimsaves at the output's physical pixel resolution. If a
monitor has scale ≠ 1 (hyprctl monitors -j | jq '.[].scale'), image pixels = logical × scale. To turn a pixel you see in the screenshot into a cursor coordinate, divide by scale. This is the #1 mistake when clicking from a screenshot — see visual-computer-use-loop.
- Multi-monitor: without
-o/-g,grimmay stitch all outputs; pass-o
for one monitor or -g for an exact box.
- Timing: capture after the UI has settled; add a brief wait after launching
or focusing a window before grabbing it.
Pairs with
- hyprland-control — geometry of windows/monitors to capture.
- visual-computer-use-loop — capture → reason → act → re-capture.
- screen-recording — for motion instead of a still (separate skill).
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: hdprajwal
- Source: hdprajwal/agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.