
qa-project-context
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 step). Related: qa-start, risk-based-testing, test-strategy, qa-metrics, playwright-automation.
- Installs
- 1.4K
- Last 24h
- +11
- Trending rank
- #8178
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/petrkindlmann/qa-skills --skill qa-project-context- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads qa-project-context automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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.
Discovery Questions
First, check whether .agents/qa-project-context.md already exists — if it does, read it and
use the existing sections as context. Check their provenance and whether relevant config
has changed. Scan the repo for config files (see Codebase Detection), record observed
values with their source, and ask only about gaps or conflicts that affect the work.
Walk the remaining questions section by section, never all at once.
Product
- What is the product called, and what does it do in one sentence?
- What type is it? (SaaS, e-commerce, media, mobile app, API service, internal tool) — changes which flows matter.
- What are the production, staging, and development URLs?
- What are the 5–10 most critical user journeys? ("If this breaks, we get paged at 2am.") This list drives every other skill's coverage priorities.
Tech Stack
- Frontend framework and language? Backend framework, language, and API style (REST, GraphQL, tRPC, gRPC)?
- Database, cache layer, ORM? Hosting, CDN, monitoring?
- Monorepo? If yes, list each app separately (see Monorepo note) — sharding and detection differ.
Test Stack
- E2E tests today? Framework, config location, test directory. Same for unit, API, visual, performance.
- If a framework is detected, record its name, config path, and resolved version from the
lockfile or installed package. Label a manifest constraint such as
^1.62.0as a range, not an installed version. Config presence does not establish that tests can execute. - Zero test infrastructure? That's a valid answer; record "None selected yet" and note a default (see Core Principle 3).
CI/CD
- Platform? When do tests run (every push, PR only, nightly, manual)? Sharding/parallelism?
- What blocks a deploy, and what artifacts are saved (screenshots, reports, coverage)?
Environments
- How many environments, with URLs? How close is staging to production (infra, data shape, third-party integrations)?
- Mock services or real APIs in development? — environment parity drives test reliability.
Quality Goals
- Coverage targets today? Flake tolerance? Suite-duration budgets? Metrics tracked or wanted?
- No targets yet? Suggest realistic ones by maturity (see Quality Goals section).
Risk Areas
- Which parts cause the most production incidents? Which integrations are flakiest (payment, email, third-party APIs)?
- Where is churn high and coverage low? Score everything with Impact × Likelihood (see Risk Areas section).
Team
- How many QA engineers, and their specializations? Developer-to-QA ratio? Methodology (Scrum, Kanban, Shape Up)?
- When does QA engage (shift-left during spec, or after dev)? — sets the automation ownership model.
Conventions
- Test file naming pattern? Co-located or separate? Branching strategy and PR requirements?
- Selector strategy for E2E? Test-data strategy (factories, fixtures, seeded DB, API-per-test)?
Core Principles
-
One file is the source of truth for the whole library. Every skill reads
.agents/qa-project-context.mdfirst. 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, lockfiles, and config files first and cite 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 toplaywright-automation/unit-testing. This is the single carve-out to the "no recommendations" rule; everywhere else, just record. -
Risk Areas needs evidence. It is input to
risk-based-testingandtest-strategy. Capture known risks and label proposed risks or scores as assumptions. If incident history, likelihood, or business impact is unavailable, record that gap. Do not invent three risks or a precise score solely to fill a table.
Codebase Detection
Scan for these before asking about the stack. Cite detected values and their files; when a test config is found, record the framework and whether its version and execution are known.
| 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 |
Workflow: Creating the Context File
- Check for existing context. Look for
.agents/qa-project-context.mdin the project root. - If absent: create
.agents/if needed, scaffold the section structure, run the Discovery Questions starting with Product, and write the file once filled. - If present with placeholders: read it, list which sections are complete vs. unfilled, ask only about the unfilled sections, then update — preserve completed sections untouched.
- If present and complete: summarize the current context, ask what changed (new tools, team changes, shifted goals), and update only the deltas.
- After completion: confirm the file path, run Verification (below), and suggest the next
skill from the context (no E2E →
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)
Section Guidance
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:
- Critical (test first): high impact + high likelihood (payment flow with known edge cases).
- Important: high impact + low likelihood (auth — catastrophic if broken, rarely changes).
- Monitor: low impact + high likelihood (notification formatting — breaks often, low severity).
- Backlog: low impact + low likelihood (admin settings — stable, rarely used).
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.
Anti-Patterns
1. Asking all questions at once
Dumping 30 questions is overwhelming and gets shallow answers. Walk section by section, Product first.
2. Leaving [brackets] in the final file
If the user confirms there is no framework, record "None selected yet." If no evidence is available, record "Unknown; not inspected" or the specific missing input. Those states are different. Ordinary Markdown links, task checkboxes, and selectors with brackets are valid content; square brackets alone do not identify a template placeholder.
3. Inventing information
Detect the stack from manifests, lockfiles, and config files, citing the source. Don't guess a database, hosting provider, installed version, team size, or agreed quality target.
4. Skipping Risk Areas
Keep the section even if evidence is missing. Mark candidate risks as proposals and unknown scores as unknown; do not present a hypothetical incident as project history.
5. Recommending tools beyond the zero-infra default
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).
Verification
Read the produced file and compare each section with its sources. A grep for square brackets rejects valid Markdown links and selectors, while counting nine arbitrary headings can accept the wrong sections. Neither proves completeness or factual accuracy.
Check the nine named sections below outside code fences, each with substantive content or an explicit unknown. Compare template fields with their replacements, preserving legitimate bracket syntax. Check framework versions against lockfiles, separate current state from recommendations, and retain provenance for detected values. Report unresolved gaps and the next useful action; a missing optional detail does not block every downstream skill.
Done When
.agents/qa-project-context.mdexists and its template fields contain evidenced values or explicit unknowns. Valid Markdown links and bracketed selectors remain intact.- All nine sections are present: Product, Tech Stack, Test Stack, CI/CD, Environments, Quality Goals, Risk Areas, Team, Conventions.
- Product lists the known, specific user flows; missing flow evidence is called out.
- Test Stack distinguishes configured frameworks, manifest ranges, resolved versions, observed execution, and explicitly absent or unknown tooling.
- Risk Areas separates evidenced risks from proposals and identifies unknown scores.
- Quality Goals distinguishes agreed numeric targets from proposed or unknown targets.
- Team contains supplied headcount and ratio, or explicitly says they are unknown.
Related Skills
- qa-start — bootstraps QA on a brand-new project end-to-end and calls this skill as its first step. Use qa-start when no QA exists yet; use this skill directly to (re)fill context.
- risk-based-testing — turns the Risk Areas section into a prioritized risk matrix. Run it after this skill when the question is "where do we focus testing?"
- test-strategy — consumes Risk Areas, Quality Goals, and Team to set multi-quarter direction.
- qa-metrics — tracks the Quality Goals defined here; both reference the same targets.
- playwright-automation / unit-testing — set up E2E / unit frameworks after the Test Stack section is filled; they read Conventions for selector and naming strategy.
- ci-cd-integration — wires the pipeline described in the CI/CD section.
Reference Files (in references/)
- examples.md — two complete filled-in context files (SaaS and a multi-site publisher) plus the monorepo Tech/Test Stack layout.
FAQ
What does the qa-project-context skill do?
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 step). Related: qa-start, risk-based-testing, test-strategy, qa-metrics, playwright-automation.
How do I install qa-project-context?
Run npx skills add https://github.com/petrkindlmann/qa-skills --skill qa-project-context in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/qa-project-context/ (personal) or .claude/skills/qa-project-context/ (project).
Which AI agents can use qa-project-context?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is qa-project-context safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains qa-project-context?
It is published by petrkindlmann in petrkindlmann/qa-skills. It has 1,450 recorded installs.
More from petrkindlmann/qa-skills
playwright-automation
petrkindlmann/qa-skills
Write production-grade Playwright tests in TypeScript: Page Object Model, fixtures, auto-waiting, user-facing locators, parallel execution, CI integration, sharding, and installed-version checks. Includes an explicit "do not" list for AI agents. Use when: "Playwright," "write E2E test," "page object," "new Playwright suite," "Playwright config." Not for: fixing one flaky test at runtime — use test-reliability. Not for: bulk regenerating selectors after a UI refactor — use selector-drift-recovery. Not for: visual baseline creation/management — use visual-testing. Not for: deep WCAG/axe audits — use accessibility-testing. Related: visual-testing, ci-cd-integration, api-testing, test-reliability, selector-drift-recovery, accessibility-testing.
exploratory-testing
petrkindlmann/qa-skills
Design and execute structured exploratory testing sessions. Covers Session-Based Test Management (SBTM), charter writing, heuristic-based exploration (HICCUPS, FEW HICCUPS), bug discovery patterns, note-taking templates, and conversion of findings to automated tests. Use when: "exploratory testing," "SBTM," "manual testing," "bug hunting," "test charter," "heuristic testing." Not for: an AI browser agent autonomously exploring the app from a natural-language goal — use agentic-browser-testing. Not for: testing your product's own AI/LLM features — use ai-system-testing. Related: test-planning, ai-bug-triage, risk-based-testing, agentic-browser-testing.
test-strategy
petrkindlmann/qa-skills
Produce a multi-quarter QA strategy document. Covers scope, risk-based prioritization, test levels (unit/integration/E2E), pyramid analysis, entry/exit criteria, quality KPIs, tool selection rationale, CI scaling levers, and timeline planning. Output is an actionable strategy document, not a shelf document. Use when: "test strategy," "QA strategy doc," "testing approach," "QA roadmap," "multi-quarter QA direction." Not for: a single-sprint or single-release plan — use test-planning. Not for: identifying which areas carry the most risk — use risk-based-testing first. Related: risk-based-testing, qa-metrics, release-readiness, test-planning, test-reliability.
test-planning
petrkindlmann/qa-skills
Build a single sprint or release test plan. Covers feature decomposition into testable scenarios, requirements-to-test coverage mapping, effort estimation by test type, prioritization matrices (risk × effort), resource allocation, and scheduling with buffers. Use when: "sprint test plan," "release test plan," "what to test this sprint," "test estimation," "coverage mapping." Not for: multi-quarter strategy — use test-strategy. Not for: ranking areas by risk — use risk-based-testing. Not for: the go/no-go decision itself — use release-readiness. Related: test-strategy, risk-based-testing, release-readiness.
risk-based-testing
petrkindlmann/qa-skills
Produce a risk matrix or heatmap that quantifies what could break by business impact × probability, runs failure mode analysis on the top items, and maps test coverage to risk zones. Includes stakeholder interview frameworks and continuous reassessment. Run this BEFORE test-strategy or test-planning. Use when: "risk assessment," "risk matrix," "risk heatmap," "what could break," "critical paths," "failure modes," "where to focus testing." Not for: multi-quarter QA direction — use test-strategy. Not for: a single sprint/release test plan — use test-planning. Not for: hands-on session-based bug hunting — use exploratory-testing. Related: test-strategy, test-planning, release-readiness, qa-metrics.
bug-reproduction
petrkindlmann/qa-skills
Turn a vague bug report into a VERIFIED minimal reproduction and then a failing regression test, agent-driven end to end. Covers extracting the implicit repro from a thin report (env, build, steps, data), the reproduce-minimize-isolate-capture loop, git bisect to find the introducing commit, building a deterministic minimal repro (fixed seeds, frozen time, stubbed network), writing the failing regression test BEFORE the fix (red) and confirming the fix flips it green, and writing repro evidence back into the ticket. Distinguishes flaky-not-reproducible from environment-specific. Use when: "reproduce this bug," "minimal reproduction," "repro steps," "find the commit that broke it," "git bisect," "make the repro deterministic," "write a failing test for this bug," "regression test for a defect," "can't reproduce this bug." Not for: Classifying/deduplicating/severity-routing existing failures without reproducing them — that is ai-bug-triage. Generating tests from specs rather than from a
Popular testing & qa skills
tdd
mattpocock/skills
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
grilling
mattpocock/skills
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
migrate-to-shoehorn
mattpocock/skills
Migrate test files from as type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace as in tests, or needs partial test data.
run-train
lllllllama/rigorpilot-skills
Rigor Train skill for deep learning research repositories. Use when a documented or selected training command should be run conservatively for startup verification, short-run verification, full kickoff, or resume, with command, config, seed, log, checkpoint, status, and metric evidence written to standardized trainoutputs/. Do not use for environment setup, exploratory sweeps, speculative idea implementation, or end-to-end orchestration.
test-driven-development
obra/superpowers
Use when implementing any feature or bugfix, before writing implementation code
finishing-a-development-branch
obra/superpowers
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work