Scout UI Testing
elastic/kibana
A skill your agent uses when creating, updating, debugging, or reviewing Scout UI tests in Kibana (Playwright + Scout fixtures), including page objects, browser authentication, parallel UI tests…
Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.
$ npx skills add Community-Access/accessibility-agents --skill kb-playwright-testing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Community-Access/accessibility-agents kb-playwright-testing --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/Community-Access/accessibility-agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/kb-playwright-testing .claude/skills/kb-playwright-testing && 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 "kb-playwright-testing" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-playwright-testing into .claude/skills/kb-playwright-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-playwright-testing", 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/Community-Access/accessibility-agents/tree/main/skills/kb-playwright-testingType 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 Community-Access/accessibility-agents --skill kb-playwright-testing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Community-Access/accessibility-agents kb-playwright-testing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/kb-playwright-testing .agents/skills/kb-playwright-testing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "kb-playwright-testing" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-playwright-testing into .agents/skills/kb-playwright-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-playwright-testing", 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 Community-Access/accessibility-agents --skill kb-playwright-testing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Community-Access/accessibility-agents kb-playwright-testing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/kb-playwright-testing .cursor/skills/kb-playwright-testing && 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 "kb-playwright-testing" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-playwright-testing into .cursor/skills/kb-playwright-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-playwright-testing", 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/Community-Access/accessibility-agents.git --path skills/kb-playwright-testing--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 Community-Access/accessibility-agents --skill kb-playwright-testing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Community-Access/accessibility-agents kb-playwright-testing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/kb-playwright-testing .gemini/skills/kb-playwright-testing && 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 "kb-playwright-testing" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-playwright-testing into .gemini/skills/kb-playwright-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-playwright-testing", 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 Community-Access/accessibility-agents kb-playwright-testingInstalls 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 Community-Access/accessibility-agents --skill kb-playwright-testing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/kb-playwright-testing .github/skills/kb-playwright-testing && 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 "kb-playwright-testing" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-playwright-testing into .github/skills/kb-playwright-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-playwright-testing", 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 Community-Access/accessibility-agents --skill kb-playwright-testing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Community-Access/accessibility-agents kb-playwright-testing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/kb-playwright-testing .opencode/skills/kb-playwright-testing && 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 "kb-playwright-testing" agent skill from https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-playwright-testing into .opencode/skills/kb-playwright-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kb-playwright-testing", 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.
kb-playwright-testingReference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.
Kb Playwright Testing is an agent skill from Community-Access/accessibility-agents. Reference data, not a reviewer. Browser accessibility testing using Playwright and @axe-core/playwright. Keyboard scans, contrast verification, and accessibility tree snapshots.
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Frontend & Design, covering Accessibility and Browser testing. It works with Playwright. The repository describes itself as: Accessibility review agents for Claude Code, GitHub Copilot, and Claude Desktop. Eleven specialists that enforce WCAG 2.2 AA compliance so AI coding tools stop generating… The licence is MIT.
Read from SKILL.md and the folder at commit decf6ba. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript and yaml).
From 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.
Kb Playwright Testing loads about 2k tokens when it runs. Until then it costs about 50 tokens; SKILL.md has 265 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 Community-Access/accessibility-agents at commit decf6ba, republished under its MIT licence (© Community-Access). 265 words, ~1,965 tokens.
.claude/skills/kb-playwright-testing/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Reusable knowledge module for browser-based accessibility testing using Playwright and @axe-core/playwright.
Each tool, with its purpose and requires @axe-core or playwright.
| Tool | Purpose | Requires @axe-core/playwright |
|---|---|---|
run_playwright_keyboard_scan | Tab-order traversal, keyboard trap detection | No |
run_playwright_state_scan | Click triggers, scan revealed content with axe-core | Yes |
run_playwright_viewport_scan | Multi-viewport axe-core + touch target measurement | Yes |
run_playwright_contrast_scan | Computed-style contrast ratio after CSS cascade | No |
run_playwright_a11y_tree | Browser accessibility tree snapshot | No |
import AxeBuilder from '@axe-core/playwright';
const results = await new AxeBuilder({ page })
.withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22aa'])
.analyze();const results = await new AxeBuilder({ page })
.include('.modal-content')
.withTags(['wcag2a', 'wcag2aa'])
.analyze();const results = await new AxeBuilder({ page })
.include('#hero-image')
.withRules(['image-alt'])
.analyze();
expect(results.violations).toEqual([]);await page.click('[aria-expanded="false"]');
await page.waitForSelector('.accordion-content', { state: 'visible' });
const results = await new AxeBuilder({ page })
.include('.accordion-content')
.analyze();const tabStops = [];
for (let i = 0; i < maxTabs; i++) {
await page.keyboard.press('Tab');
const info = await page.evaluate(() => {
const el = document.activeElement;
return {
tagName: el?.tagName,
role: el?.getAttribute('role'),
name: el?.getAttribute('aria-label') || el?.textContent?.trim().slice(0, 50),
id: el?.id,
tabIndex: el?.tabIndex
};
});
tabStops.push(info);
}A keyboard trap is detected when the same element receives focus after consecutive Tab presses:
let trapCount = 0;
let lastSelector = '';
for (const stop of tabStops) {
const currentSelector = `${stop.tagName}#${stop.id}`;
if (currentSelector === lastSelector) {
trapCount++;
if (trapCount >= 3) { /* TRAP DETECTED */ }
} else {
trapCount = 0;
}
lastSelector = currentSelector;
}await page.click('[data-modal-trigger]');
await page.waitForSelector('[role="dialog"]', { state: 'visible' });
const focusedRole = await page.evaluate(() =>
document.activeElement?.closest('[role="dialog"]') ? 'inside-dialog' : 'outside-dialog'
);
// focusedRole should be 'inside-dialog'test('modal traps focus correctly', async ({ page }) => {
await page.goto(url);
await page.click('[data-open-modal]');
await page.waitForSelector('[role="dialog"]', { state: 'visible' });
// Focus should be inside the dialog
const inDialog = await page.evaluate(() =>
document.activeElement?.closest('[role="dialog"]') !== null
);
expect(inDialog).toBe(true);
// Tab through dialog — should not escape
for (let i = 0; i < 20; i++) {
await page.keyboard.press('Tab');
const stillInDialog = await page.evaluate(() =>
document.activeElement?.closest('[role="dialog"]') !== null
);
expect(stillInDialog).toBe(true);
}
// Escape should close and return focus to trigger
await page.keyboard.press('Escape');
const focusedId = await page.evaluate(() => document.activeElement?.id);
expect(focusedId).toBe('modal-trigger-id');
});test('skip link moves focus to main content', async ({ page }) => {
await page.goto(url);
await page.keyboard.press('Tab'); // Focus skip link
await page.keyboard.press('Enter'); // Activate it
const focusedId = await page.evaluate(() => document.activeElement?.id);
expect(focusedId).toBe('main-content');
});name: Accessibility Tests
on: [push, pull_request]
jobs:
a11y:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npx playwright install --with-deps chromium
- name: Start dev server
run: npm run dev &
env:
CI: true
- name: Wait for server
run: npx wait-on http://localhost:3000 --timeout 30000
- name: Run accessibility tests
run: npx playwright test tests/a11y/
- uses: actions/upload-artifact@v4
if: failure()
with:
name: a11y-test-results
path: test-results/// playwright.config.js (a11y section)
export default {
testDir: './tests/a11y',
use: {
baseURL: process.env.BASE_URL || 'http://localhost:3000',
// Use Chromium only — @axe-core/playwright is Chromium-validated
browserName: 'chromium',
},
webServer: {
command: 'npm run dev',
url: 'http://localhost:3000',
reuseExistingServer: !process.env.CI,
},
};let _playwrightAvailable = null;
async function isPlaywrightAvailable() {
if (_playwrightAvailable !== null) return _playwrightAvailable;
try {
await import('playwright');
_playwrightAvailable = true;
} catch {
_playwrightAvailable = false;
}
return _playwrightAvailable;
}Each playwright, with its @axe-core or playwright and available scans.
| Playwright | @axe-core/playwright | Available Scans |
|---|---|---|
| Yes | Yes | All 5 tools (keyboard, state, viewport, contrast, tree) |
| Yes | No | 3 tools (keyboard, contrast, tree) |
| No | — | None — fall back to code review + axe-core CLI |
When unavailable:
Playwright not installed. Behavioral testing (keyboard traversal, dynamic states,
responsive viewport, rendered contrast) is unavailable.
Install: npm install -D playwright @axe-core/playwright && npx playwright install chromiumWhen partially available:
@axe-core/playwright not installed. State scanning and viewport scanning are
unavailable. Keyboard, contrast, and accessibility tree scans will proceed.
Install: npm install -D @axe-core/playwrightEach WCAG SC, with its description and playwright tool.
| WCAG SC | Description | Playwright Tool |
|---|---|---|
| 1.3.1 | Info and Relationships | a11y tree, state scan |
| 1.4.3 | Contrast (Minimum) | contrast scan |
| 1.4.6 | Contrast (Enhanced) | contrast scan |
| 1.4.10 | Reflow | viewport scan |
| 2.1.1 | Keyboard | keyboard scan |
| 2.1.2 | No Keyboard Trap | keyboard scan |
| 2.4.3 | Focus Order | keyboard scan |
| 2.4.7 | Focus Visible | keyboard scan |
| 2.5.5 | Target Size (Enhanced) | viewport scan |
| 2.5.8 | Target Size (Minimum) | viewport scan |
| 4.1.2 | Name, Role, Value | a11y tree, state scan |
© Community-Access, MIT. 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 1 other file in skills/kb-playwright-testing of Community-Access/accessibility-agents.
Open the folder on GitHubat commit decf6ba
Kb Playwright Testing 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 |
|---|---|---|---|---|---|---|
| Kb Playwright Testing this skillCommunity-Access/accessibility-agents | 422 | — | ~2k | Automated safety check: Pass | MIT | |
| Scout UI Testingelastic/kibana | 21k | — | ~3.1k | Automated safety check: Pass | Custom licence | |
| Common Web Visual TestingHoangNguyen0403/agent-skills-standard | 571 | — | ~760 | Automated safety check: Pass | MIT | |
| Reactmagnus919/agent-skills | 113 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Vitemagnus919/agent-skills | 113 | — | ~1.5k | Automated safety check: Notes | MIT | |
| E2E Testingericrisco/rsc-harness | 167 | — | ~3.2k | Automated safety check: Pass | MIT |
elastic/kibana
A skill your agent uses when creating, updating, debugging, or reviewing Scout UI tests in Kibana (Playwright + Scout fixtures), including page objects, browser authentication, parallel UI tests…
HoangNguyen0403/agent-skills-standard
Standardizes visual audits, responsive design, and behavioral testing for web apps.
magnus919/agent-skills
Operate React applications as a named tool: inspect and diagnose React/Vite projects, design component boundaries and state flow, implement accessible responsive UI, and verify behavior with the…
magnus919/agent-skills
Operate Vite projects: inspect versions and configuration, run bounded development and production builds, diagnose dependency and asset failures, and configure environment-aware frontend delivery.
ericrisco/rsc-harness
A skill your agent uses when writing or stabilizing Playwright tests that drive a real browser through multi-step journeys — durable locators, web-first assertions, storageState auth, trace/retries…
elvisun/newsjack
Turn an eval study's numbers into on-brand, publish-ready figures using the Newsjack chart room (the eval design system), then validate them with Playwright.
Community-Access/accessibility-agents
Shared contract for the Accessibility Agents skills - dispatch, findings schema, report rules.
Community-Access/accessibility-agents
Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.
Community-Access/accessibility-agents
Web UI accessibility lead. An agent skill from Community-Access/accessibility-agents.
Community-Access/accessibility-agents
Alt text, SVGs, figures, charts, heading order, page titles and landmarks.
Community-Access/accessibility-agents
ARIA roles, states and properties for custom widgets and dynamic content.
Community-Access/accessibility-agents
Plain language, WCAG 2.2 cognitive criteria, COGA guidance and auth UX.
Works with
Categories
Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents. Kb Playwright Testing is an agent skill from Community-Access/accessibility-agents. Reference data, not a reviewer.
Kb Playwright Testing fits situations like: tasks that involve Accessibility; tasks that involve Browser testing.
Run `npx skills add Community-Access/accessibility-agents --skill kb-playwright-testing -a claude-code`. Or copy the skill folder (skills/kb-playwright-testing in Community-Access/accessibility-agents) into .claude/skills/kb-playwright-testing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Community-Access/accessibility-agents --skill kb-playwright-testing -a codex`. Or copy the skill folder (skills/kb-playwright-testing in Community-Access/accessibility-agents) into .agents/skills/kb-playwright-testing 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 Community-Access/accessibility-agents --skill kb-playwright-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/kb-playwright-testing, .gemini/skills/kb-playwright-testing, .github/skills/kb-playwright-testing and .opencode/skills/kb-playwright-testing in your project.
SKILL.md names no scripts, command-line tools or credentials: Kb Playwright Testing is instructions for the agent only. Our summary lists: Node.js.
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. Review the folder before installing.
Kb Playwright Testing is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 7.9k 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 Kb Playwright Testing: Scout UI Testing (elastic/kibana, 21k stars), Common Web Visual Testing (HoangNguyen0403/agent-skills-standard, 571 stars), React (magnus919/agent-skills, 113 stars) and Vite (magnus919/agent-skills, 113 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Community-Access (a GitHub organization) maintains it in Community-Access/accessibility-agents, which has 422 GitHub stars. The repository holds 108 skills in this directory. The repository was last updated on September 23, 2026.
Source: Community-Access/accessibility-agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.