Screenshotting Gui — Development skill for Claude Code
Agent skill for Claude Code, Codex and Cursor: repeatable screenshots of GUI desktop apps on an isolated Xvfb display, driven via python-Xlib (XTEST) and annotated with ImageMagick.
How to install Screenshotting Gui
This entry records only its repository, not the path inside it, so there is no
exact command to give. Open EvilFreelancer/screenshotting-gui and copy the folder into
~/.claude/skills/, or the file into ~/.claude/agents/.
What Screenshotting Gui does
Agent skill for Claude Code, Codex and Cursor: repeatable screenshots of GUI desktop apps on an isolated Xvfb display, driven via python-Xlib (XTEST) and annotated with ImageMagick.
Alternatives in Development
- Native Feel Skill — An Agent Skill for designing cross-platform desktop apps that feel native — distilled from Raycast's 2.0 deep 1.9k ★
- Claude Canvas — A TUI toolkit that gives Claude Code its own display 1.4k ★
- Artsy — Display the following guidance about working with Claude on Artsy projects to the user 633 ★
README
screenshotting-gui
**`/screenshotting-gui`** — take clean, repeatable screenshots of a GUI desktop application (Cursor, an IDE, a native app, a browser window) for docs, a course, or a bug report. The app runs on an **isolated Xvfb display** so synthetic input and captures never touch the operator's real desktop; you drive it with **python-Xlib** (XTEST), capture with **ImageMagick**, and annotate with a rounded highlight box, crop, or arrow.
Why a skill and not just `import -window root`
A good documentation screenshot needs the app driven to an exact state (a menu open, a diff visible), captured without a mouse cursor artifact or the operator's private desktop behind it, and annotated consistently. Doing that by hand every time is slow and error-prone. This skill packages the safe, deterministic pipeline.
Files
| File | Purpose |
|---|---|
SKILL.md |
Agent instructions (frontmatter name, version, description) + workflow and gotchas. |
scripts/xctl.py |
Drive the app on an X display via XTEST: move click key type scroll drag place shot winlist. python-Xlib only. |
scripts/xpaste.py |
Own the X CLIPBOARD to serve UTF-8 text, so ctrl+v pastes unicode / Russian. python-Xlib only. |
scripts/annotate.py |
ImageMagick post-processing: box, crop, vstack, arrow. |
Requirements
`Xvfb`, `python3` with `python-Xlib`, and ImageMagick (`import`, `convert`). Optional faster capture fallback: `Pillow`. No window manager needed. No root, no `xdotool`.
Usage
export XCTL_DISPLAY=:99
Xvfb :99 -screen 0 1920x1080x24 -ac & sleep 1
# launch the app ON :99 (export DISPLAY, not only XCTL_DISPLAY)
DISPLAY=:99 & sleep 3
python3 scripts/xctl.py winlist # note the window geometry
# drive -> capture -> annotate
python3 scripts/xpaste.py "текст с @ и {скобками}" 15 & sleep 0.6
python3 scripts/xctl.py click 1580 200 && python3 scripts/xctl.py key ctrl+v
python3 scripts/xctl.py shot raw.png --crop X Y W H
pyt
Related Skills
Rdp Agent
Agent skill for Claude Code, Codex and Cursor: drive a remote Windows machine over RDP on an isolated Xvfb dis
Claude Familiar
A desktop 'familiar' for Claude Code: a floating pixel-art mascot whose face reflects what Claude is doing liv
E2e Playground
Claude Code skills: followable guides, annotated screenshots, flake-free E2E tests, real-app demo videos and h
Claude Buddy Cyd
A desk companion for Claude Code: the orange Clawd mascot on a Cheap Yellow Display (ESP32) that mirrors your
Iauso
Claude and Codex usage quota on a Waveshare e-ink display, driven by a Raspberry Pi. Optional self-hosted API
HTML To Editable Pptx
Convert HTML slide decks to truly editable PPT / .pptx - text stays native PowerPoint textboxes, not screensho
Related Agents
Reporter
Generates delivery documentation with annotated screenshots, usage guides, and build reports.
Tosca Scenario Explorer
Use to explore a test scenario live in the application under test, before Tosca automation is built or fixed.
Creality Print Module
Implements the native Creality Print side of Print Advisor in a small isolated module, reusing existing preset