Debug Playwright
quay/quay
Debug Playwright E2E test failures from GitHub Actions CI runs.
Create and fill .agents/qa-project-context.md with the project's tech stack, test frameworks, CI/CD pipeline, environments, quality goals, risk areas, team structure, and conventions.
$ npx skills add petrkindlmann/qa-skills --skill qa-project-context -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install petrkindlmann/qa-skills qa-project-context --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/petrkindlmann/qa-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/qa-project-context .claude/skills/qa-project-context && 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 "qa-project-context" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-project-context into .claude/skills/qa-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-project-context", 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/petrkindlmann/qa-skills/tree/main/skills/qa-project-contextType 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 petrkindlmann/qa-skills --skill qa-project-context -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install petrkindlmann/qa-skills qa-project-context --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/qa-project-context .agents/skills/qa-project-context && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "qa-project-context" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-project-context into .agents/skills/qa-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-project-context", 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 petrkindlmann/qa-skills --skill qa-project-context -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install petrkindlmann/qa-skills qa-project-context --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/qa-project-context .cursor/skills/qa-project-context && 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 "qa-project-context" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-project-context into .cursor/skills/qa-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-project-context", 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/petrkindlmann/qa-skills.git --path skills/qa-project-context--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 petrkindlmann/qa-skills --skill qa-project-context -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install petrkindlmann/qa-skills qa-project-context --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/qa-project-context .gemini/skills/qa-project-context && 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 "qa-project-context" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-project-context into .gemini/skills/qa-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-project-context", 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 petrkindlmann/qa-skills qa-project-contextInstalls 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 petrkindlmann/qa-skills --skill qa-project-context -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/qa-project-context .github/skills/qa-project-context && 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 "qa-project-context" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-project-context into .github/skills/qa-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-project-context", 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 petrkindlmann/qa-skills --skill qa-project-context -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install petrkindlmann/qa-skills qa-project-context --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/qa-project-context .opencode/skills/qa-project-context && 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 "qa-project-context" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-project-context into .opencode/skills/qa-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-project-context", 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.
qa-project-contextCreate and fill .agents/qa-project-context.md with the project's tech stack, test frameworks, CI/CD pipeline, environments, quality goals, risk areas, team structure, and conventions.
QA Project Context is an agent skill from petrkindlmann/qa-skills. Create and fill .agents/qa-project-context.md with the project's tech stack, test frameworks, CI/CD pipeline, environments, quality goals, risk areas, team structure, and conventions. This is the one file every other QA skill reads first, so they skip redundant discovery and give context-aware advice. Use when: "set up QA context," "configure testing," "initialize project," first use of any QA skill. Not for: bootstrapping a brand-new project's QA end-to-end — use qa-start (which calls this skill as its first…
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/examples.md`).
It sits in Testing & QA, covering CI/CD, Test strategy and End-to-end testing. It works with Playwright. The repository describes itself as: 50 QA and test-automation skills for Claude Code, Codex, Cursor, and any Agent Skills Standard runtime. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b3bb61b. 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 bash and markdown).
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.
QA Project Context loads about 3.9k tokens when it runs, and up to ~6.1k if it reads all its reference files. Until then it costs about 157 tokens; SKILL.md has 1,927 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 petrkindlmann/qa-skills at commit b3bb61b, republished under its MIT licence (© petrkindlmann). 1,927 words, ~3,916 tokens.
.claude/skills/qa-project-context/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.<objective>
This skill writes the single file every other QA skill reads. Without it, each skill
re-asks "what framework? what CI? where do tests live?" from scratch and gives generic
advice. It produces `.agents/qa-project-context.md` in the project root, capturing product,
tech stack, test stack, CI/CD, environments, quality goals, risk areas, team, and
conventions — with no `[bracketed placeholders]` left behind.
</objective>
Downstream skills consume specific sections: Risk Areas feeds risk-based-testing and
test-strategy; Conventions → Selectors feeds playwright-automation and test-reliability;
Quality Goals feeds qa-metrics; Tech Stack feeds every automation skill. Fill those sections
well and the rest of the library gets sharper for free.
First, check whether .agents/qa-project-context.md already exists — if it does, read it and
skip every section already filled (no [brackets]). Then scan the repo for config files (see
Codebase Detection) and present detected values for confirmation rather than asking blind.
Walk the remaining questions section by section, never all at once.
One file is the source of truth for the whole library. Every skill reads
.agents/qa-project-context.md first. Duplicating its facts into other docs guarantees
drift — keep stack, goals, and risks here and let other skills reference them.
Capture the real state, not the aspiration. If there are no E2E tests, write "None selected yet," not a wish. Downstream skills route on what's true: a missing framework triggers a setup suggestion; a fake one sends them building on sand.
Detect before you ask; recommend a default only when there's nothing to detect.
Read package.json and config files first and confirm what you find. Tool recommendations
belong to the specialized skills — the one exception is a project with zero test
infrastructure, where you note Playwright (E2E) and Vitest (unit) as defaults in the
Test Stack and hand off to playwright-automation / unit-testing. This is the single
carve-out to the "no recommendations" rule; everywhere else, just record.
Risk Areas is the highest-leverage section — never skip it. It is the direct input to
risk-based-testing and test-strategy. Push for at least 3–4 entries scored by impact and
likelihood even when the user says "everything's fine."
Scan for these before asking about the stack. Present detected values for confirmation; when a test config is found, write the framework name into Test Stack rather than re-asking.
| File | Indicates |
|---|---|
package.json | Node.js project — check dependencies for the framework |
next.config.* | Next.js |
nuxt.config.* | Nuxt/Vue |
angular.json | Angular |
astro.config.* | Astro |
react-router.config.ts | React Router 7 / Remix |
requirements.txt / pyproject.toml | Python project |
go.mod | Go project |
playwright.config.* | Playwright is set up → populate Test Stack E2E |
cypress.config.* | Cypress is set up → populate Test Stack E2E |
vitest.config.* / jest.config.* | Unit test framework → populate Test Stack Unit |
.github/workflows/ | GitHub Actions CI |
.gitlab-ci.yml | GitLab CI |
Jenkinsfile | Jenkins |
docker-compose.* | Docker-based environments |
wrangler.* | Cloudflare Workers |
vercel.json | Vercel hosting |
bun.lock / bun.lockb | Bun runtime |
pnpm-workspace.yaml / turbo.json / nx.json | Monorepo — handle per the Monorepo note |
src-tauri/tauri.conf.json | Tauri desktop app |
.claude/ | Project uses Claude Code skills/agents |
.claude-plugin/plugin.json | Project ships a Claude Code plugin |
AGENTS.md | Codex / multi-agent workflow conventions |
.agents/qa-project-context.md in the project root..agents/ if needed, scaffold the section structure, run the Discovery
Questions starting with Product, and write the file once filled.playwright-automation; no strategy → test-strategy;
no unit tests → unit-testing).For two full filled-in files (SaaS and a multi-site publisher) plus the monorepo layout, see
references/examples.md. One short illustrative snippet:
## Test Stack
### E2E / Integration
- **Framework:** Playwright 1.60
- **Config Location:** playwright.config.ts
- **Test Directory:** tests/e2e/
### Unit / Component
- **Framework:** None selected yet — Vitest recommended (see unit-testing)What makes a good entry in each section. The blank template ships at
.agents/qa-project-context.md in the qaskills repo.
Product. Key user flows must be specific and testable: "Buyer searches products, adds to cart, checks out with Stripe, receives confirmation email" — not "user uses the app." This list is what every test skill uses to prioritize. Aim for 5–10.
Tech Stack. Record frontend, backend, database, hosting separately. Pin versions only when
they change the testing approach (App Router vs. Pages Router differ materially). Don't copy a
version just because an example shows one — read it from package.json.
Test Stack. For each tool: framework name + version, config location, test directory. No infrastructure yet is valid — write "None selected yet" and the recommended default (Principle 3).
Monorepo. List each frontend app as its own Tech Stack and Test Stack entry; keep the
shared API/backend as one entry. Shard E2E per app (a change in apps/admin shouldn't run
apps/storefront E2E), and note in CI/CD which path filters gate which app's suite. Detection
hint: turbo.json / pnpm-workspace.yaml / nx.json. See references/examples.md.
CI/CD. Answer what other skills need: what blocks a deploy, how fast feedback is, what evidence is preserved.
Environments. Note how staging diverges from production — a different DB engine in staging means staging-green tests can still fail in prod.
Quality Goals. Concrete and measurable only. Pick starting targets by maturity:
| Maturity | Unit coverage | E2E | Flakiness | Suite duration |
|---|---|---|---|---|
| Early-stage startup | 60% on business logic | Top 5 critical flows | <2% | Unit <3 min, E2E <15 min |
| Growth-stage | 80% | All critical paths | <2% | Unit <3 min, E2E <15 min |
| Enterprise | 90%+ | Comprehensive + perf budgets | <1% | Unit <3 min, E2E <15 min |
Write them as numbers: "80% line coverage measured by Istanbul," "flake rate <2% over a rolling 30-day window," "full E2E under 15 min with 4 shards." Never "we want great quality."
Risk Areas. Use the table — columns Area, Risk Level, Business Impact, Notes — and score with Impact × Likelihood:
At least 3 entries, never vague ("everything breaks").
Team. Record actual headcount and the dev:QA ratio — it sets the automation ownership model:
| Dev:QA ratio | Ownership model |
|---|---|
| Solo / zero QA (effectively infinite) | Devs own all tests. No manual regression suite; lean on low-barrier automation (Playwright + Vitest) and CI gates. QA "role" = strategy + critical-path E2E, done by the dev. |
| High (8:1+) | Developers write tests; QA focuses on strategy, critical-path automation, exploratory testing. |
| Balanced (4:1) | QA owns E2E, devs own unit, integration shared. |
| QA-heavy (<3:1) | Dedicated automation engineers, comprehensive regression suites, scheduled exploratory cadence. |
Conventions. Selector strategy especially — playwright-automation and test-reliability
read it to generate matching selectors. Default to data-testid for stability
(data-testid="invoice-create-button", kebab-case). If the team prefers semantic/ARIA selectors
for accessibility-aware testing, record concrete tokens — role="button", role="heading",
getByRole('link', { name: ... }) — and the tradeoff: ARIA roles double as a11y assertions and
survive markup churn, but are less stable than data-testid when copy or roles change, so pin a
name/level to keep them unambiguous.
Dumping 30 questions is overwhelming and gets shallow answers. Walk section by section, Product first.
[brackets] in the final fileIf the user has no answer, record the actual state ("None — no E2E framework selected yet"), not a placeholder. Placeholders left in the file silently break every downstream skill that parses it.
Detect the stack from package.json, requirements.txt, or config files — then confirm with the
user before writing. Don't guess a database or hosting provider.
The single most valuable section for downstream skills. Push for at least 3–4 scored entries even when the user insists everything is fine.
This skill records current state; tool selection belongs to playwright-automation,
unit-testing, and the other specialized skills. The only recommendation you make here is the
Playwright + Vitest default when there is no test infrastructure at all (Principle 3).
Prove the produced file is complete, smallest check first. From the project root:
test -f .agents/qa-project-context.md \
&& ! grep -q '\[.*\]' .agents/qa-project-context.md \
&& echo "context complete: file exists, no placeholders"Exit 0 with the message means the file exists and every [bracketed placeholder] is gone. A
non-zero exit means either the file is missing or placeholders remain — fix those before handing
off to any other skill. Then eyeball that all nine section headers are present:
grep -c '^## ' .agents/qa-project-context.md # expect >= 9.agents/qa-project-context.md exists in the project root and grep -q '\[.*\]' returns
non-zero (no bracketed placeholders remain).references/)© petrkindlmann, 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 (references) in skills/qa-project-context of petrkindlmann/qa-skills.
Open the folder on GitHubat commit b3bb61b
QA Project Context 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 |
|---|---|---|---|---|---|---|
| QA Project Context this skillpetrkindlmann/qa-skills | 168 | — | ~3.9k | Automated safety check: Pass | MIT | |
| Debug Playwrightquay/quay | 2.8k | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| E2E Testingaffaan-m/ECC | 276k | 3 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Web Testing with Playwright and Vitestwithkynam/vibecode-pro-max-kit | 1.1k | — | ~892 | Automated safety check: Pass | Apache-2.0 | |
| Dotnet Testingnovotnyllc/dotnet-artisan | 233 | — | ~972 | Automated safety check: Pass | MIT | |
| Test Standardsidavidov13/agentic-playwright | 225 | — | ~3.9k | Automated safety check: Pass | MIT |
quay/quay
Debug Playwright E2E test failures from GitHub Actions CI runs.
affaan-m/ECC
Playwright E2E 测试模式、页面对象模型、配置、CI/CD 集成、工件管理和不稳定测试策略. An agent skill from affaan-m/ECC.
withkynam/vibecode-pro-max-kit
Covers web testing from unit to E2E, load, visual, accessibility and security checks, with Playwright, Vitest and k6 guides plus a Playwright setup script.
novotnyllc/dotnet-artisan
Defines .NET test strategy and implementation patterns across xUnit v3 (Facts, Theories, fixtures, IAsyncLifetime), integration testing (WebApplicationFactory, Testcontainers), Aspire testing…
idavidov13/agentic-playwright
Spec file conventions for the Playwright scaffold — imports from test-options.ts, test file structure (describe / beforeEach / test / test.step), single-tag rule, functional vs E2E vs API vs setup…
alirezarezvani/claude-skills
Generates unit tests, integration tests, and E2E tests for React/Next.js applications.
petrkindlmann/qa-skills
Test for WCAG 2.2 AA compliance with axe-core + Playwright, keyboard navigation audits, screen reader testing, ARIA pattern validation, and legal compliance mapping (ADA, EAA, Section 508).
petrkindlmann/qa-skills
Goal-driven E2E testing where a browser agent (Playwright MCP / computer-use) reads a natural-language goal and explores the app via the accessibility tree to assert outcomes — no pre-written script.
petrkindlmann/qa-skills
Use AI to write NEW test code from specs, PRDs, user stories, code diffs, bug reports, or OpenAPI specs.
petrkindlmann/qa-skills
Test REST and GraphQL APIs with Playwright APIRequestContext, Supertest, or standalone HTTP clients.
petrkindlmann/qa-skills
Design CI/CD pipelines that run test suites. An agent skill from petrkindlmann/qa-skills.
petrkindlmann/qa-skills
Test for regulatory compliance: GDPR/CMP consent verification, Google Consent Mode v2, Global Privacy Control (GPC), CCPA/US state opt-out, EU AI Act Article 50 transparency, Better Ads Standards…
Works with
Categories
Create and fill .agents/qa-project-context.md with the project's tech stack, test frameworks, CI/CD pipeline, environments, quality goals, risk areas, team structure, and conventions. QA Project Context is an agent skill from petrkindlmann/qa-skills.md with the project's tech stack, test frameworks, CI/CD pipeline, environments, quality goals, risk areas, team structure, and conventions.
QA Project Context fits situations like: : set up QA context; configure testing; initialize project; first use of any QA skill.
Run `npx skills add petrkindlmann/qa-skills --skill qa-project-context -a claude-code`. Or copy the skill folder (skills/qa-project-context in petrkindlmann/qa-skills) into .claude/skills/qa-project-context in your project. Claude Code loads it when a task matches its description.
Run `npx skills add petrkindlmann/qa-skills --skill qa-project-context -a codex`. Or copy the skill folder (skills/qa-project-context in petrkindlmann/qa-skills) into .agents/skills/qa-project-context 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 petrkindlmann/qa-skills --skill qa-project-context -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/qa-project-context, .gemini/skills/qa-project-context, .github/skills/qa-project-context and .opencode/skills/qa-project-context in your project.
SKILL.md names no scripts, command-line tools or credentials: QA Project Context is instructions for the agent only. Our summary lists: Python 3; Node.js; Docker.
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.
QA Project Context is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with QA Project Context: Debug Playwright (quay/quay, 2.8k stars), E2E Testing (affaan-m/ECC, 276k stars), Web Testing with Playwright and Vitest (withkynam/vibecode-pro-max-kit, 1.1k stars) and Dotnet Testing (novotnyllc/dotnet-artisan, 233 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
petrkindlmann (a GitHub user) maintains it in petrkindlmann/qa-skills, which has 168 GitHub stars. The repository holds 45 skills in this directory. The repository was last updated on June 10, 2026.
Source: petrkindlmann/qa-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.