UI Visual Debugging
NangoHQ/nango
A skill your agent uses when modifying or visually debugging Nango frontend UI, including packages/webapp, packages/connect-ui, browser interactions, screenshots, and visual regressions.
Annotate UI screenshots with documentation callouts in Fellyph's established visual style — uniform-width orange arrows with white halos, double-stroke target outlines, numbered callout cards, dim…
$ npx skills add WordPress/wordpress-playground --skill doc-screenshots -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install WordPress/wordpress-playground doc-screenshots --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/WordPress/wordpress-playground.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/doc-screenshots .claude/skills/doc-screenshots && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "doc-screenshots" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/doc-screenshots into .claude/skills/doc-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-screenshots", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/doc-screenshotsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add WordPress/wordpress-playground --skill doc-screenshots -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install WordPress/wordpress-playground doc-screenshots --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WordPress/wordpress-playground.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/doc-screenshots .agents/skills/doc-screenshots && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "doc-screenshots" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/doc-screenshots into .agents/skills/doc-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-screenshots", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add WordPress/wordpress-playground --skill doc-screenshots -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install WordPress/wordpress-playground doc-screenshots --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WordPress/wordpress-playground.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/doc-screenshots .cursor/skills/doc-screenshots && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "doc-screenshots" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/doc-screenshots into .cursor/skills/doc-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-screenshots", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/WordPress/wordpress-playground.git --path .agents/skills/doc-screenshots--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add WordPress/wordpress-playground --skill doc-screenshots -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install WordPress/wordpress-playground doc-screenshots --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WordPress/wordpress-playground.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/doc-screenshots .gemini/skills/doc-screenshots && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "doc-screenshots" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/doc-screenshots into .gemini/skills/doc-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-screenshots", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install WordPress/wordpress-playground doc-screenshotsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add WordPress/wordpress-playground --skill doc-screenshots -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/WordPress/wordpress-playground.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/doc-screenshots .github/skills/doc-screenshots && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "doc-screenshots" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/doc-screenshots into .github/skills/doc-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-screenshots", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add WordPress/wordpress-playground --skill doc-screenshots -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install WordPress/wordpress-playground doc-screenshots --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/WordPress/wordpress-playground.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/doc-screenshots .opencode/skills/doc-screenshots && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "doc-screenshots" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/doc-screenshots into .opencode/skills/doc-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "doc-screenshots", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
doc-screenshotsAnnotate UI screenshots with documentation callouts in Fellyph's established visual style — uniform-width orange arrows with white halos, double-stroke target outlines, numbered callout cards, dim…
Doc Screenshots is an agent skill from WordPress/wordpress-playground. Annotate UI screenshots with documentation callouts in Fellyph's established visual style — uniform-width orange arrows with white halos, double-stroke target outlines, numbered callout cards, dim overlays and a framed canvas. Use this whenever the user asks to annotate a screenshot, add arrows or callouts to a screenshot, create documentation images, highlight UI controls in a capture, or produce docs/tutorial visuals for Playground, Studio or any web UI — even if they just say "add arrows to this" or "make a…
Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts (for example `evals/evals.json`, `evals/files/boxes.json` and `evals/files/broken-config.json`).
It sits in Testing & QA, covering Frontend development. It works with WordPress, WebAssembly and Playwright. The repository describes itself as: Run WordPress in the browser via WebAssembly PHP. The licence is GPL-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 48cd2db. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Doc Screenshots loads about 1.8k tokens when it runs. Until then it costs about 137 tokens; SKILL.md has 961 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from WordPress/wordpress-playground at commit 48cd2db, republished under its GPL-2.0 licence (© WordPress). 961 words, ~1,823 tokens.
.claude/skills/doc-screenshots/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Produce annotated UI screenshots in one specific house style: uniform-width orange (#e8590c) arrows with white halos, double-stroke blue outlines around targets, and (for overviews) a row of numbered callout cards over a dimmed screenshot. Never use stock arrow shapes, stroked polylines, or ad-hoc styles.
The geometry engine lives in scripts/annotate.py. Your job is to produce accurate coordinates and a config JSON; the script renders everything (supersampling, Bézier ribbons, halos, cards, shadows, WEBP export) exactly to spec. Do not reimplement the drawing by hand.
Capture. Take screenshots at deviceScaleFactor: 2. Never eyeball coordinates: record every target's bounding box programmatically and save the boxes to JSON — including regions (panels, sidebars, block trees), not just buttons; eyeballed region outlines are the most common quality-gate failure. With Playwright:
const viewport = { width: 1440, height: 900 };
const page = await browser.newPage({ viewport, deviceScaleFactor: 2 });
// ... navigate, prepare UI state ...
const box = await page.locator('button:has-text("Export")').boundingBox();
await page.screenshot({ path: 'shot.png' }); Iframes: Playwright's locator(...).boundingBox() already returns main-viewport coordinates, even inside nested iframes (Playground nests main page → remote.html wrapper → the WordPress scope frame) — use the boxes as-is, no offsets. Only raw getBoundingClientRect() inside a frame's own evaluate() (or the Chrome DevTools MCP tools) needs the enclosing iframe's box offset added.
WordPress modals: Editor screens open welcome guides ("Edit your site" → Get started) whose overlay swallows clicks; some have no aria-label="Close" button. Dismiss with an Escape loop — while .components-modal__screen-overlay exists, press Escape on the frame's body, wait ~1s — and retry the blocked click between attempts. The modal can appear after the page looks loaded, so dismiss lazily around the click, not once up front.
Prefer driving the browser from Node with the repo's own node_modules/playwright; otherwise run python3 -m pip install playwright && python3 -m playwright install chromium, or use the Chrome DevTools MCP capture tools.
Before capturing, clean up dev-environment artifacts such as update nags, debug badges, and plugin notices. They must not appear in docs imagery.
Author the config. All geometry is in CSS px relative to the screenshot's top-left. Write a config JSON using the schema in the script's docstring; read it first. Runnable examples of both modes are in examples/ and share the bundled sample-shot.webp. Then run:
python .agents/skills/doc-screenshots/scripts/annotate.py config.json --crops crops/ The script needs Python with Pillow. If no suitable interpreter is active, create a virtual environment in the session scratchpad with python3 -m venv <scratchpad>/venv && <scratchpad>/venv/bin/python -m pip install Pillow, then call that interpreter directly. The script validates the config up front and exits with a readable config error: message on bad input; output must be a .webp path.
Quality gate — actually look. Read the rendered WEBP at full size, plus the zoomed crops the script saves of every arrowhead and outline (named <output-stem>-NN-<spot>.png, so one crops directory can serve every config in a batch). Check that tip gaps are even (5–7px short of each outline), halos are unbroken, no arrow crosses another arrow or a sibling annotation, stderr has no card-text overflow warnings, and artifacts are removed. Also sanity-check legibility at docs width (~860px) and mobile (~343px); if labels become unreadable, simplify rather than shrink. Fix and re-render until clean.
outlines + free arrows. No dim, no cards. One arrow per target, tail starting from empty space, arriving straight onto the outline.cards + outlines + dim. Cards get target indexes and the script auto-draws vertical arrows from each card's bottom edge onto its outline. Set dim.region to the area holding the documented controls so they stay at full brightness while the rest dims 24% toward #28313b.chrome_bar (44px bar, traffic lights, URL pill) only when browser context matters to the reader.to accordingly). Both tangents are axis-parallel — pick axis so the arrow leaves and arrives straight, giving the calm S-curve.Arrows are orange #e8590c on pure white halos; outlines, badges and cards stay blue #3858e9. The shaft is a uniform 9px line (constant top to bottom, round caps) ending in an open chevron head — two 16px diagonal strokes of the same width sweeping back from the tip at ±35°; halo expanded 3.2px per side. Outline = white width 9 on the bbox expanded 2.5px, blue width 4 on the exact bbox. Canvas #f6f7f7, 36px margins, rounded frame with 1px #dcdcde border and soft shadow. Cards: white, radius 16, 1px #ccced0 border, double shadow, blue badge r22, Helvetica Neue (27px bold title #101517 / 19px subtitle #2c3338). Export is WEBP quality ~89 after a single LANCZOS downsample from the supersampled canvas.
Reference outputs in this style: an action walkthrough (free arrows onto dialog controls) and an overview legend (three cards over a dimmed page) — match their look, spacing and restraint.
The source of truth is .agents/skills/doc-screenshots/. .claude/skills is a committed symlink to ../.agents/skills, so Claude Code loads the same files — edit only under .agents/skills/ and never create a separate copy.
© WordPress, GPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts) in .agents/skills/doc-screenshots of WordPress/wordpress-playground.
Open the folder on GitHubat commit 48cd2db
Doc Screenshots next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Doc Screenshots this skillWordPress/wordpress-playground | 2k | — | ~1.8k | Automated safety check: Pass | GPL-2.0 | |
| UI Visual DebuggingNangoHQ/nango | 13k | — | ~1.3k | Automated safety check: Pass | Custom licence | |
| Verify Debbie Codesdebs-obrien/debbie.codes | 142 | — | ~1.9k | Automated safety check: Pass | None | |
| UI QA SweepLanternOps/breeze | 132 | — | ~3k | Automated safety check: Notes | AGPL-3.0 | |
| Shogun Screenshotyohey-w/multi-agent-shogun | 1.4k | — | ~901 | Automated safety check: Notes | MIT | |
| Playwright CLIbitsocialnet/5chan | 135 | — | ~1.1k | Automated safety check: Notes | GPL-3.0 |
NangoHQ/nango
A skill your agent uses when modifying or visually debugging Nango frontend UI, including packages/webapp, packages/connect-ui, browser interactions, screenshots, and visual regressions.
debs-obrien/debbie.codes
Drive the live debbie.codes Nuxt site (web UI) the way a user does via Playwright — launch the dev server, doctor health, exercise mapped features, capture screenshots/ARIA evidence, and clean up.
LanternOps/breeze
Broad regression QA of the Breeze RMM web UI via Playwright — exercising everyday MSP workflows and setup tasks like a human QA tester, logging functional PASS/FAIL plus UI/UX observations, and…
yohey-w/multi-agent-shogun
スクリーンショットの取得・加工を行う。ローカルスクショから最新画像を取得、 PlaywrightでWebページをキャプチャ、画像のトリミング・リサイズ、機微情報を黒塗りマスキング。
bitsocialnet/5chan
Verify browser behavior or reproduce a web UI issue with the installed Playwright CLI.
LeastBit/Claude_skills_zh-CN
使用 Playwright 与本地 Web 应用程序交互及进行测试的工具包。支持验证前端功能、调试 UI 行为、捕获浏览器截图以及查看浏览器日志。
WordPress/wordpress-playground
Compile PHP.wasm main modules and side modules (dynamic extensions) for Node.js and web platforms.
WordPress/wordpress-playground
Debug PHP.wasm main module crashes including Asyncify errors (unreachable, memory access out of bounds), JSPI errors (SuspendError, trying to suspend JS frames), WASM memory growth bugs, and runtime…
WordPress/wordpress-playground
Debug WASM side modules (dynamic PHP extensions) including dlopen failures, SIDEMODULE loading, JSPI suspension crashes in extensions, C++ weak symbol issues, and extension runtime errors.
WordPress/wordpress-playground
Debug the WordPress Playground website by running the dev server from source and interacting with it via Playwright MCP.
Works with
Categories
Annotate UI screenshots with documentation callouts in Fellyph's established visual style — uniform-width orange arrows with white halos, double-stroke target outlines, numbered callout cards, dim…. Doc Screenshots is an agent skill from WordPress/wordpress-playground. Annotate UI screenshots with documentation callouts in Fellyph's established visual style — uniform-width orange arrows with white halos, double-stroke target outlines, numbered callout cards, dim overlays and a framed canvas.
Doc Screenshots fits situations like: asks to annotate a screenshot; callouts to a screenshot; create documentation images; highlight UI controls in a capture.
Run `npx skills add WordPress/wordpress-playground --skill doc-screenshots -a claude-code`. Or copy the skill folder (.agents/skills/doc-screenshots in WordPress/wordpress-playground) into .claude/skills/doc-screenshots in your project. Claude Code loads it when a task matches its description.
Run `npx skills add WordPress/wordpress-playground --skill doc-screenshots -a codex`. Or copy the skill folder (.agents/skills/doc-screenshots in WordPress/wordpress-playground) into .agents/skills/doc-screenshots in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add WordPress/wordpress-playground --skill doc-screenshots -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/doc-screenshots, .gemini/skills/doc-screenshots, .github/skills/doc-screenshots and .opencode/skills/doc-screenshots in your project.
Going by SKILL.md and its folder, Doc Screenshots needs Python for the scripts in its folder and the command-line tools its instructions call (python3 and python). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Doc Screenshots is published under the GPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Doc Screenshots: UI Visual Debugging (NangoHQ/nango, 13k stars), Verify Debbie Codes (debs-obrien/debbie.codes, 142 stars), UI QA Sweep (LanternOps/breeze, 132 stars) and Shogun Screenshot (yohey-w/multi-agent-shogun, 1.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
WordPress (a GitHub organization) maintains it in WordPress/wordpress-playground, which has 1,973 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.
Source: WordPress/wordpress-playground on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.