QA Find Bugs Dashboard
bex-co/beancount-io
Exercise the running Beancount.io dashboard with headless Playwright, use QAEMAIL and QAPASSWORD for login, reproduce bugs, trace fixes to source, and deduplicate findings.
Debug the WordPress Playground website by running the dev server from source and interacting with it via Playwright MCP.
$ npx skills add WordPress/wordpress-playground --skill playground-website-debugging -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install WordPress/wordpress-playground playground-website-debugging --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/playground-website-debugging .claude/skills/playground-website-debugging && 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 "playground-website-debugging" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/playground-website-debugging into .claude/skills/playground-website-debugging/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "playground-website-debugging", 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/playground-website-debuggingType 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 playground-website-debugging -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install WordPress/wordpress-playground playground-website-debugging --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/playground-website-debugging .agents/skills/playground-website-debugging && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "playground-website-debugging" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/playground-website-debugging into .agents/skills/playground-website-debugging/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "playground-website-debugging", 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 playground-website-debugging -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install WordPress/wordpress-playground playground-website-debugging --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/playground-website-debugging .cursor/skills/playground-website-debugging && 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 "playground-website-debugging" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/playground-website-debugging into .cursor/skills/playground-website-debugging/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "playground-website-debugging", 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/playground-website-debugging--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 playground-website-debugging -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install WordPress/wordpress-playground playground-website-debugging --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/playground-website-debugging .gemini/skills/playground-website-debugging && 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 "playground-website-debugging" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/playground-website-debugging into .gemini/skills/playground-website-debugging/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "playground-website-debugging", 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 playground-website-debuggingInstalls 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 playground-website-debugging -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/playground-website-debugging .github/skills/playground-website-debugging && 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 "playground-website-debugging" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/playground-website-debugging into .github/skills/playground-website-debugging/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "playground-website-debugging", 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 playground-website-debugging -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 playground-website-debugging --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/playground-website-debugging .opencode/skills/playground-website-debugging && 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 "playground-website-debugging" agent skill from https://github.com/WordPress/wordpress-playground/tree/trunk/.agents/skills/playground-website-debugging into .opencode/skills/playground-website-debugging/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "playground-website-debugging", 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.
playground-website-debuggingDebug the WordPress Playground website by running the dev server from source and interacting with it via Playwright MCP.
Playground Website Debugging is an agent skill from WordPress/wordpress-playground. Debug the WordPress Playground website by running the dev server from source and interacting with it via Playwright MCP. Use when investigating UI bugs, testing website features, checking for JavaScript errors, debugging hanging requests, or verifying WordPress behavior in the browser-based Playground.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Debugging and Browser testing. It works with WordPress, Playwright, Model Context Protocol and JavaScript. The repository describes itself as: Run WordPress in the browser via WebAssembly PHP. The licence is GPL-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4d39322. 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.
Shell commands in SKILL.md call:
npmnvmnxphpFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
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.
Playground Website Debugging loads about 1.9k tokens when it runs. Until then it costs about 83 tokens; SKILL.md has 426 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); files beside SKILL.md are not scanned.
The full file from WordPress/wordpress-playground at commit 4d39322, republished under its GPL-2.0 licence (© WordPress). 426 words, ~1,938 tokens.
.claude/skills/playground-website-debugging/SKILL.md (or your agent's skills folder).Debug the WordPress Playground website by running the dev server from source and interacting with it via Playwright MCP.
Requires: Node.js, Playwright MCP server
# Ensure the correct Node.js version is active as per .nvmrc
nvm use
# Kill any leftover dev server from a previous run
lsof -ti:5400 -ti:5263 -ti:6400 | xargs kill 2>/dev/null; sleep 1
# Start dev server in background
npm run dev > /tmp/playground-dev.log 2>&1 &
# Wait for server to respond (up to ~120s for first build)
until curl -s -o /dev/null http://127.0.0.1:5400/website-server/ 2>/dev/null; do
sleep 2
done
echo "Ready!"Then use Playwright MCP to interact:
browser_navigate → http://127.0.0.1:5400/website-server/
browser_snapshot → inspect the page structure
browser_take_screenshot → visual stateThe Playground website has a three-layer structure that's critical to understand:
┌───────────────────────────────────────────────────┐
│ Parent page (Playground chrome / React app) │
│ ┌───────────────────────────────────────────────┐ │
│ │ URL bar │ Save │ Settings │ Site Mgr │ │
│ ├───────────────────────────────────────────────┤ │
│ │ │ │
│ │ <iframe class="playground-viewport"> │ │
│ │ Loads remote.html │ │
│ │ (Service Worker, Web Worker, PHP runtime) │ │
│ │ ┌─────────────────────────────────────────┐ │ │
│ │ │ <iframe id="wp"> │ │ │
│ │ │ WordPress runs here │ │ │
│ │ │ (wp-admin, front-end, editor, etc.) │ │ │
│ │ └─────────────────────────────────────────┘ │ │
│ │ │ │
│ └───────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────┘Parent page contains: URL bar, Save button, Saved Playgrounds, Site Manager, Settings gear.
Outer iframe (playground-viewport) loads remote.html, which registers the Service Worker, spawns a Web Worker for the PHP runtime, and exposes the Playground API via Comlink.
Inner iframe (#wp, nested inside the outer iframe) contains the actual WordPress site — dashboard, posts, pages, plugins, themes, block editor, front-end.
Playwright's browser_snapshot traverses both iframes automatically, so you'll see all three layers in one snapshot. When clicking elements inside WordPress, Playwright handles the iframe targeting.
Important: WordPress admin CSS positions sidebar submenu items off-screen (e.g. top: -12387px) until their parent menu is hovered. These elements appear in browser_snapshot but browser_click will fail with "element is outside of the viewport." Two workarounds:
async (page) => {
const frame = page.frameLocator('iframe').first().frameLocator('iframe').first();
await frame.locator('#menu-tools').hover();
await frame.locator('a[href="site-health.php"]').click();
};async (page) => {
const frame = page.frameLocator('iframe').first().frameLocator('iframe').first();
await frame.locator('a[href="site-health.php"]').evaluate((el) => el.click());
};Understanding how HTTP requests flow through Playground is critical for debugging performance and hanging issues:
Browser request (navigation, AJAX, etc.)
↓
Service Worker intercepts fetch event
↓
broadcastMessageExpectReply() → broadcasts to all window clients
↓
remote.html window receives message (filtered by scope) → proxies to Web Worker
↓
PHPProcessManager.acquirePHPInstance() → Semaphore (max 2 instances, 30s timeout)
↓
PHP-WASM executes the PHP script
↓
If PHP calls wp_remote_get(): Wp_Http_Fetch → post_message_to_js() → JS fetch()
↓
fetch() for loopback URLs → goes BACK through Service Worker → needs another PHP instance!Timeout mismatch: The Service Worker times out waiting for a response after 25s (DEFAULT_RESPONSE_TIMEOUT), but the PHP semaphore waits up to 30s. If PHP is stuck, the Service Worker returns ERR_FAILED while the process manager is still waiting — useful to know when diagnosing hanging requests.
| Setting | Value |
|---|---|
| Command | npm run dev (runs nx dev playground-website) |
| Main URL | http://127.0.0.1:5400/website-server/ |
| Ready signal | HTTP 200 from http://127.0.0.1:5400/website-server/ |
| Auto-login | Yes (logged in as admin by default) |
| HMR | Enabled — code changes hot-reload |
Note: npm run dev also starts a PHP CORS proxy (php -S 127.0.0.1:5263). If system PHP isn't installed, that subprocess fails — the website still loads but features relying on the CORS proxy (e.g., fetching external resources) won't work.
npm run dev
# Wait for "Local: http://127.0.0.1:5400/website-server/" in outputbrowser_navigate → http://127.0.0.1:5400/website-server/
browser_snapshot → see full page tree including iframe content
browser_take_screenshot → capture visual stateTo visit WordPress pages (e.g., wp-admin), use the Playground URL bar:
browser_click → click the URL bar textbox (labeled "URL to visit in the WordPress site")
browser_type → type "/wp-admin/"
browser_press_key → press "Enter"
browser_snapshot → verify the page loadedCheck for JavaScript errors:
browser_console_messages (level: "error") → see JS errors and warningsCheck for stuck/failed network requests:
browser_network_requests (includeStatic: false) → see all XHR/fetch requests and their statusRequests showing no status code are still pending. Requests with [FAILED] net::ERR_FAILED typically indicate a service worker timeout (25s) — a sign of PHP-WASM deadlock (see "PHP-WASM Request Pipeline" above).
Time a navigation:
// Use browser_run_code to measure how long a navigation takes
async (page) => {
const frame = page.frameLocator('iframe').first().frameLocator('iframe').first();
const start = Date.now();
await frame.locator('a[href="site-health.php"]').evaluate((el) => el.click());
await frame.getByRole('heading', { name: 'Site Health', level: 1 }).waitFor({ timeout: 60000 });
return `Navigation took ${Date.now() - start}ms`;
};Inspect the block editor:
browser_click → URL bar
browser_type → /wp-admin/post-new.php
browser_press_key → Enter
browser_snapshot → see block editor structure inside iframeTest plugin/theme UI:
browser_click → URL bar
browser_type → /wp-admin/plugins.php
browser_press_key → Enter
browser_snapshot → verify plugin listScreenshot a specific state:
browser_take_screenshot → capture current visual state for comparisonKill the npm run dev process (Ctrl+C in the terminal, or lsof -ti:5400 | xargs kill).
© 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
Just SKILL.md in .agents/skills/playground-website-debugging of WordPress/wordpress-playground.
Open the folder on GitHubat commit 4d39322
Playground Website Debugging 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 |
|---|---|---|---|---|---|---|
| Playground Website Debugging this skillWordPress/wordpress-playground | 2k | — | ~1.9k | Automated safety check: Pass | GPL-2.0 | |
| QA Find Bugs Dashboardbex-co/beancount-io | 295 | — | ~2.3k | Automated safety check: Notes | MIT | |
| Chrome Devtools MCPmanagedcode/dotnet-skills | 486 | — | ~2.2k | Automated safety check: Pass | MIT | |
| QABuilderIO/agent-native | 7.1k | — | ~3k | Automated safety check: Notes | None | |
| Playwright Debugvoicetreelab/voicetree | 923 | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Playwright Coretestdino-hq/playwright-skill | 386 | 1 repos | ~1.4k | Automated safety check: Pass | MIT |
bex-co/beancount-io
Exercise the running Beancount.io dashboard with headless Playwright, use QAEMAIL and QAPASSWORD for login, reproduce bugs, trace fixes to source, and deduplicate findings.
managedcode/dotnet-skills
Use Chrome DevTools MCP from .NET agents and .NET-focused repos to inspect, debug, and automate Chrome through an MCP client.
BuilderIO/agent-native
Autonomous multi-app QA sweep that drives template apps with Playwright MCP.
voicetreelab/voicetree
This skill should be used when the user asks to "debug the electron app", "connect playwright to VoiceTree", "take screenshots of the running app", "interact with the live UI", "inspect the running…
testdino-hq/playwright-skill
Battle-tested Playwright patterns for writing and debugging reliable E2E, API, component, visual, accessibility, and security tests.
antibrow/anti-detect-browser-skills
Drive Chromium from standard Playwright APIs with a real-device fingerprint applied in the kernel, one persistent isolated profile per identity, and a per-profile proxy whose exit IP sets timezone…
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…
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.
Categories
Debug the WordPress Playground website by running the dev server from source and interacting with it via Playwright MCP. Playground Website Debugging is an agent skill from WordPress/wordpress-playground. Debug the WordPress Playground website by running the dev server from source and interacting with it via Playwright MCP.
Playground Website Debugging fits situations like: investigating UI bugs; testing website features; checking for JavaScript errors; debugging hanging requests.
Run `npx skills add WordPress/wordpress-playground --skill playground-website-debugging -a claude-code`. Or copy the skill folder (.agents/skills/playground-website-debugging in WordPress/wordpress-playground) into .claude/skills/playground-website-debugging in your project. Claude Code loads it when a task matches its description.
Run `npx skills add WordPress/wordpress-playground --skill playground-website-debugging -a codex`. Or copy the skill folder (.agents/skills/playground-website-debugging in WordPress/wordpress-playground) into .agents/skills/playground-website-debugging 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 playground-website-debugging -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/playground-website-debugging, .gemini/skills/playground-website-debugging, .github/skills/playground-website-debugging and .opencode/skills/playground-website-debugging in your project.
Going by SKILL.md and its folder, Playground Website Debugging needs the command-line tools its instructions call (npm, nvm, nx and php). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. 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. Review the folder before installing.
Playground Website Debugging 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.9k tokens (SKILL.md is roughly 7.8k 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 Playground Website Debugging: QA Find Bugs Dashboard (bex-co/beancount-io, 295 stars), Chrome Devtools MCP (managedcode/dotnet-skills, 486 stars), QA (BuilderIO/agent-native, 7.1k stars) and Playwright Debug (voicetreelab/voicetree, 923 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 7, 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.