Test Expert
einverne/dotfiles
Testing methodologies, test-driven development (TDD), unit and integration testing, and testing best practices across multiple frameworks.
Move quality earlier in the development lifecycle. An agent skill from petrkindlmann/qa-skills.
$ npx skills add petrkindlmann/qa-skills --skill shift-left-testing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install petrkindlmann/qa-skills shift-left-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/petrkindlmann/qa-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/shift-left-testing .claude/skills/shift-left-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 "shift-left-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/shift-left-testing into .claude/skills/shift-left-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shift-left-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/petrkindlmann/qa-skills/tree/main/skills/shift-left-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 petrkindlmann/qa-skills --skill shift-left-testing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install petrkindlmann/qa-skills shift-left-testing --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/shift-left-testing .agents/skills/shift-left-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 "shift-left-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/shift-left-testing into .agents/skills/shift-left-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shift-left-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 petrkindlmann/qa-skills --skill shift-left-testing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install petrkindlmann/qa-skills shift-left-testing --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/shift-left-testing .cursor/skills/shift-left-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 "shift-left-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/shift-left-testing into .cursor/skills/shift-left-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shift-left-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/petrkindlmann/qa-skills.git --path skills/shift-left-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 petrkindlmann/qa-skills --skill shift-left-testing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install petrkindlmann/qa-skills shift-left-testing --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/shift-left-testing .gemini/skills/shift-left-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 "shift-left-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/shift-left-testing into .gemini/skills/shift-left-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shift-left-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 petrkindlmann/qa-skills shift-left-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 petrkindlmann/qa-skills --skill shift-left-testing -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/shift-left-testing .github/skills/shift-left-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 "shift-left-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/shift-left-testing into .github/skills/shift-left-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shift-left-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 petrkindlmann/qa-skills --skill shift-left-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 petrkindlmann/qa-skills shift-left-testing --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/shift-left-testing .opencode/skills/shift-left-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 "shift-left-testing" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/shift-left-testing into .opencode/skills/shift-left-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shift-left-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.
shift-left-testingMove quality earlier in the development lifecycle. An agent skill from petrkindlmann/qa-skills.
Shift Left Testing is an agent skill from petrkindlmann/qa-skills. Move quality earlier in the development lifecycle. Covers dev/QA pairing patterns, Three Amigos sessions, TDD facilitation (Red-Green-Refactor), PR review checklists for testability, and Definition of Done with quality gates. Includes shift-left maturity model for team assessment. Use when: "shift left," "TDD," "dev-QA pairing," "definition of done," "testability," "quality culture," "QA in sprint planning." Not for: writing the unit tests themselves — use unit-testing; automated PR test-quality review at scale —…
Its SKILL.md is about 6.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/tdd-examples.md` and `references/templates.md`).
It sits in Testing & QA, covering Test-driven development, Unit testing and Sprint planning and agile. 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.
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.
Shift Left Testing loads about 6.7k tokens when it runs, and up to ~8.4k if it reads all its reference files. Until then it costs about 167 tokens; SKILL.md has 3,451 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). 3,451 words, ~6,746 tokens.
.claude/skills/shift-left-testing/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.<objective>
Move quality validation earlier in the development lifecycle where defects are cheaper, faster, and simpler to fix. A missing validation rule caught in refinement is a five-minute conversation; the same bug in production is an incident, a hotfix, and a postmortem. This skill covers the practices, patterns, and cultural shifts that embed quality into every phase — from story refinement to PR merge — plus a maturity model to find the next concrete step.
</objective>
| Situation | Go to |
|---|---|
| QA only sees features after dev is "done" | Dev/QA Pairing → QA in Sprint Planning |
| Need a pre-dev requirements conversation | Dev/QA Pairing → Three Amigos Sessions |
| Deciding whether to TDD this work | TDD Facilitation → When TDD vs. Test-After |
| Reviewing a PR for test quality | PR Review Checklist |
| Reviewing an AI-generated/AI-using PR | PR Review Checklist → When the Change Is AI-Generated |
| "Where is my team and what's next?" | Shift-Left Maturity Model |
Check .agents/qa-project-context.md first — if it exists, use it (team composition, dev/QA workflow, sprint structure, quality goals) and skip anything answered there.
When does QA first see a feature? After PR is raised? After merge to staging? Only when a bug appears? The answer reveals how far right your quality currently sits.
Who writes tests, and when? Developers only? QA only after dev is "done"? Both but on different timelines? Understanding current ownership is essential before changing it.
How are requirements communicated? Written specs? Verbal handoffs? Figma links with no acceptance criteria? Ambiguous requirements are the #1 source of defects that shift-left prevents.
Is there interest in TDD? Has the team tried it before? Did it stick or collapse? Understanding past attempts prevents repeating failed approaches.
What does the PR review process look like? Who reviews? Is testability a review criterion? Are tests required before merge? PR review is the lowest-friction place to introduce quality checks.
What is the team's Definition of Done? Written or unwritten? Does it include testing? Is it enforced or aspirational? The DoD is the contractual boundary between "in progress" and "done."
How does QA participate in sprint planning? Not at all? Consulted on estimates? Actively refining stories? Sprint planning participation determines how early QA thinking enters the cycle.
Quality is not a phase performed by the QA team after development. It is a property of the entire workflow: product managers write testable requirements, developers write tests alongside code, code reviewers check for testability, and QA engineers design the strategy and catch what automation misses. When quality belongs to everyone, defects are caught by whoever encounters them first.
A missing validation rule caught during story refinement is a five-minute conversation. The same defect found in production is an incident, a hotfix, a postmortem, and eroded user trust. The cost of fixing a defect rises sharply the further right it is caught — refinement < design < development < QA < staging < production. That direction is real and well-attested; the exact multipliers are not. The widely cited "1x → 100x" table traces to an undated, unsourced IBM Systems Science Institute training chart with no published methodology, so treat any precise figure as illustrative, not measured. Lead with the concrete cost story above, not invented numbers. Shift-left practices aim to catch defects in the cheap left-hand columns — refinement through development — before QA, staging, or prod ever see them.
Traditional QA acts as a gate at the end of development: code is "thrown over the wall" for testing. Shift-left embeds QA throughout the process. QA contributes to story refinement, pairs with developers on test design, reviews PRs for testability, and validates early through continuous testing. The gate model creates bottlenecks and adversarial dynamics. The embedded model creates collaboration and shared ownership.
Code that is hard to test is usually hard to maintain, hard to debug, and likely to contain defects. Testability should be a first-class design constraint alongside performance, security, and usability. When developers ask "how will we test this?" during design -- before writing a single line of code -- the resulting architecture is cleaner, more modular, and more reliable.
Introducing every shift-left practice simultaneously overwhelms teams. Pick one practice (usually PR review checklists or Three Amigos), prove its value with data (fewer bugs escaping, faster PR cycles), then use that success to justify the next practice. Cultural change happens one demonstrated win at a time.
What it looks like: QA engineers attend sprint planning and actively participate in story refinement. They ask clarifying questions about edge cases, identify missing acceptance criteria, and flag risk areas before development begins.
Concrete actions during planning:
Template: QA questions for each story
Story: [PROJ-1234] Add coupon code to checkout
───────────────────────────────────────────────
QA questions before development starts:
1. What happens if the coupon is expired?
2. What happens if the coupon is already used (single-use)?
3. Can multiple coupons be stacked?
4. What error message does the user see for invalid codes?
5. Does the discount update the total in real-time or on submit?
6. Is there a rate limit on coupon validation attempts?
Test approach:
- Unit: coupon validation logic, discount calculation, expiry check
- Integration: coupon API endpoint, database state after redemption
- E2E: apply coupon in checkout flow, verify discount on confirmation
- Exploratory: edge cases with currency rounding, max discount limitsA structured 15-30 minute conversation between three perspectives before development begins.
The three perspectives:
Optional fourth amigo (AI participant): A coding agent can generate edge cases and counter-scenarios from the acceptance criteria mid-session. Treat AI output as a checklist to validate, not a decision — humans still own the criteria.
Session format (30 minutes max):
When to use: Stories with risk score Medium+, anything touching payments/auth/data integrity, stories with ambiguous requirements, cross-team stories.
When to skip: Simple bug fixes with clear repro steps, copy/text-only changes, dependency updates with no behavioral change.
QA and developer collaborate on test cases before implementation. This is not full TDD -- it is test thinking applied collaboratively.
How it works:
Example output from a pairing session: a set of agreed test signatures spanning unit, integration, and E2E levels, written before implementation. See references/tdd-examples.md for the full coupon-feature pairing output.
QA engineers review pull requests with a focus on testability and test quality, complementing the code review performed by other developers.
Getting started for teams new to QA PR reviews:
TDD follows a strict three-step cycle. Each step has a clear purpose and a clear exit condition.
┌──────────────────────────────────────────────────────┐
│ RED: Write a failing test │
│ - Test describes the desired behavior │
│ - Test MUST fail (if it passes, it tests nothing) │
│ - Write the minimum test to specify one behavior │
│ │
│ GREEN: Make the test pass │
│ - Write the minimum code to pass the test │
│ - No extra features, no premature optimization │
│ - It is OK if the code is ugly │
│ │
│ REFACTOR: Clean up │
│ - Improve code structure without changing behavior │
│ - All tests still pass after refactoring │
│ - Remove duplication, improve naming, simplify │
└──────────────────────────────────────────────────────┘Example: TDD for a password strength validator — first failing test, minimum passing code, then a behavior-preserving refactor into a rules array. See references/tdd-examples.md for the full Red-Green-Refactor walk-through.
TDD is not always the right choice. Use this guide to decide.
| Scenario | Approach | Why |
|---|---|---|
| Pure business logic (validators, calculators, transformers) | TDD | Clear inputs/outputs, fast feedback, tests document behavior |
| Bug fix with known reproduction | TDD | Write failing test first = proof the fix works |
| API endpoint with clear contract | TDD | Request/response is a natural test boundary |
| Exploratory UI prototyping | Test-after | Design is unstable; tests would rewrite constantly |
| Third-party integration | Test-after | Need to understand the API behavior first |
| Complex data migration | Test-after with fixtures | Write sample data first, then test transformation |
| Performance optimization | Test-after with benchmarks | Need baseline before testing improvement |
| AI-generated implementation | TDD (test first) | LLMs happily produce passing-looking code; the failing test is the spec the agent must satisfy. Highest-leverage check on AI output. |
Every bug fix should start with a failing test that reproduces the bug. This practice provides three guarantees:
See references/tdd-examples.md for a worked failing-test-first example (a JPY zero-decimal rounding bug).
Short exercises (30-60 min) to build TDD muscle memory:
| Kata | Difficulty | Key lesson |
|---|---|---|
| FizzBuzz | Beginner | Basic Red-Green-Refactor cycle |
| String Calculator | Beginner | Incremental complexity, edge cases |
| Roman Numerals | Intermediate | Pattern recognition, refactoring |
| Bowling Game | Intermediate | State management, complex rules |
| Gilded Rose | Advanced | Refactoring legacy code under test harness |
Format: Pair programming, 45 minutes, switch driver every 5 minutes. Debrief for 15 minutes: what was hard? What felt natural? What would you do differently?
Use this checklist when reviewing PRs for test quality and testability. Not every item applies to every PR -- use judgment based on the change scope.
rejects expired coupon with clear error message not test coupon validator function line 42.data-testid, getByRole, or getByLabel -- not CSS classes or XPath. See the selector stability scoring in test-reliability.expect(result).toEqual({ status: 'expired', code: 'COUPON_EXPIRED' }) not expect(result).toBeTruthy().Apply these additional checks when a PR contains code authored by an AI agent or introduces an AI-powered feature.
ai-system-testing).The Definition of Done (DoD) is the team's shared agreement on what "done" means. It applies to every story before it moves to "Done" on the board.
A complete DoD groups its checks under Code Complete, Tested, Quality Gates Pass, Documentation, and Deployment Ready. The Tested group requires unit tests for business logic, integration tests for API/service changes, an E2E test for user-facing critical paths, edge cases and error states covered, and manual exploratory testing completed for medium/high risk changes. The Quality Gates group requires a green CI pipeline, no new lint/type errors, and code coverage not decreased from baseline (a baseline number, not an absolute threshold pulled from the air). See references/templates.md for the full copy-paste checklist.
The DoD is only effective if it is enforced. Three enforcement mechanisms:
Assess where your team currently sits and identify the concrete next step to improve.
Symptoms:
Next step: Introduce QA into sprint planning. Start with QA asking clarifying questions on each story before development begins. Measure: count of requirement gaps found in planning vs. found in testing.
Symptoms:
Next step: Introduce Three Amigos for high-risk stories. QA, dev, and product discuss requirements, edge cases, and test approach before development starts. Measure: reduction in bugs found during QA testing (should decrease as upstream quality improves).
Symptoms: QA participates in sprint planning and story refinement. Developers write unit and integration tests during development. PR review includes testability checks. QA and dev pair on test case design. DoD enforced with automated quality gates.
Next step: Introduce test-first practices for bug fixes (every bug fix starts with a failing test). Extend to TDD for pure business logic. Measure: regression rate (should approach zero).
Symptoms: Three Amigos are standard for medium/high risk stories. Developers practice TDD for business logic and bug fixes. QA focuses on exploratory testing, strategy, and risk analysis. Quality metrics tracked and reviewed regularly. Cross-functional ownership of quality.
Next step: Introduce shift-left to architecture and design reviews. QA reviews system design documents for testability before implementation begins. Measure: defect escape rate (consistently below 5%).
Symptoms: Quality is built into every stage. Defect escape rate consistently below 3%. QA engineers focus on strategy, coaching, and systemic improvement. Production issues are rare and trigger root cause analysis. The team cannot imagine working without early quality practices.
Maintaining this level: Quarterly maturity assessments. New team members onboarded with quality practices from day one. Retrospectives include quality metrics.
Score eight practices (QA in planning, Three Amigos, PR review, tests-during-dev, failing-test-first bug fixes, TDD for business logic, enforced DoD, metrics review) on a Never/Sometimes/Usually/Always scale to place the team on Levels 1–5. See references/templates.md for the printable worksheet with scoring bands.
Rebranding "developers write all the tests" as shift-left to justify eliminating QA roles. Shift-left changes WHEN quality happens, not WHO does it. QA engineers bring a testing mindset, risk analysis skills, and exploratory testing capabilities that developers typically do not develop. Removing QA and telling developers to "just test more" results in blind spots, not savings.
Running Three Amigos meetings as a checkbox exercise where nobody asks hard questions. If the session does not produce at least one changed acceptance criterion or one new edge case, it was not a real discussion. Track "gaps found in Three Amigos" as a metric.
Forcing TDD on UI prototyping, exploratory spikes, or experimental features where the design is still fluid. TDD works best when the desired behavior is clear. For uncertain domains, spike first, then write tests around the design that emerges. Use the decision guide above.
Imposing strict quality gates (coverage thresholds, mandatory QA review) without explaining why they exist or involving the team in setting the thresholds. Gates perceived as imposed slow the team and get circumvented. Gates set collaboratively are defended by the team.
Writing E2E tests for business logic that should be validated by unit tests. Writing unit tests for user flows that need E2E validation. Shift-left is not just "test earlier" -- it is "test at the right level, as early as possible." A calculation bug needs a unit test, not a browser test.
Tracking "number of Three Amigos sessions held" instead of "defects found in planning vs. found in production." Activities are inputs; outcomes are outputs. Measure whether shift-left practices actually reduce escaped defects and rework.
Prove the gates actually bite — a gate that never fires proves nothing:
.github/pull_request_template.md (or your platform's equivalent) so reviewers see it on every PR — test -f .github/pull_request_template.md && grep -qi "unit test" .github/pull_request_template.md..github/pull_request_template.md)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 2 other files (references) in skills/shift-left-testing of petrkindlmann/qa-skills.
Open the folder on GitHubat commit b3bb61b
Shift Left 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 |
|---|---|---|---|---|---|---|
| Shift Left Testing this skillpetrkindlmann/qa-skills | 163 | — | ~6.7k | Automated safety check: Pass | MIT | |
| Test Experteinverne/dotfiles | 121 | — | ~2.3k | Automated safety check: Pass | GPL-3.0 | |
| Python Testingaffaan-m/ECC | 274k | 6 repos | ~4.7k | Automated safety check: Pass | MIT | |
| Rust Testingkurealnum/dotfiles | 290 | 6 repos | ~2.9k | Automated safety check: Pass | None | |
| TestingNiceEval/NiceEval | 156 | — | ~2.1k | Automated safety check: Pass | None | |
| cmux Testing Rulesdisler/learning-cmux-with-agents | 115 | — | ~1.2k | Automated safety check: Pass | MIT |
einverne/dotfiles
Testing methodologies, test-driven development (TDD), unit and integration testing, and testing best practices across multiple frameworks.
affaan-m/ECC
Python testing strategies using pytest, TDD methodology, fixtures, mocking, parametrization, and coverage requirements.
kurealnum/dotfiles
Rust testing patterns including unit tests, integration tests, async testing, property-based testing, mocking, and coverage.
NiceEval/NiceEval
Inspect, select, author, modify, or review NiceEval E2E and Unit test owners.
disler/learning-cmux-with-agents
Testing rules for the cmux Swift codebase: Swift Testing as the default framework, a two-commit regression policy, and tests that check runtime behavior, not source text.
jh941213/my-cc-harness
Implement comprehensive testing strategies with pytest, fixtures, mocking, and test-driven development.
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…
Categories
Move quality earlier in the development lifecycle. An agent skill from petrkindlmann/qa-skills. Shift Left Testing is an agent skill from petrkindlmann/qa-skills. Move quality earlier in the development lifecycle.
Shift Left Testing fits situations like: definition of done; quality culture; QA in sprint planning. Not for: writing the unit tests themselves — use unit-testing; automated PR test-quality review at scale — use ai-qa-review.
Run `npx skills add petrkindlmann/qa-skills --skill shift-left-testing -a claude-code`. Or copy the skill folder (skills/shift-left-testing in petrkindlmann/qa-skills) into .claude/skills/shift-left-testing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add petrkindlmann/qa-skills --skill shift-left-testing -a codex`. Or copy the skill folder (skills/shift-left-testing in petrkindlmann/qa-skills) into .agents/skills/shift-left-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 petrkindlmann/qa-skills --skill shift-left-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/shift-left-testing, .gemini/skills/shift-left-testing, .github/skills/shift-left-testing and .opencode/skills/shift-left-testing in your project.
SKILL.md names no scripts, command-line tools or credentials: Shift Left Testing is instructions for the agent only.
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.
Shift Left 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 6.7k tokens (SKILL.md is roughly 27k 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 1.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Shift Left Testing: Test Expert (einverne/dotfiles, 121 stars), Python Testing (affaan-m/ECC, 274k stars), Rust Testing (kurealnum/dotfiles, 290 stars) and Testing (NiceEval/NiceEval, 156 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 163 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.