Curated Category 10 hand-picked skills Updated

Testing and TDD Skills

This category exists because agents cheat at testing. They claim suites pass without running them, write tests that recompute the code's own output, and delete failing tests to get to green. The two skills at the top of this page, with 412K and 161K installs, are direct countermeasures, and the eight around them cover the browser, the frameworks, and the audits that prove a suite actually works.

Every pick was chosen by reading its SKILL.md and weighing install counts from the skills.sh registry. Reading mattered again this time: a promising coverage skill turned out to measure fuzzing coverage rather than test coverage, and two picks are shared with our browser automation guide because they genuinely anchor both categories.

Illustration of a traffic light showing red and green, with a checkmark flag

How this list was picked

  • Read at the source. We pulled each skill's SKILL.md from its repository and wrote every description from what the skill actually instructs an agent to do.
  • Adoption-weighted. Install counts are a July 2026 snapshot from the skills.sh registry, the same registry the LazySkills TUI searches.
  • Reading changed the list. Trail of Bits' coverage-analysis (3.7K installs) looked like a natural pick until its SKILL.md revealed it measures fuzzing harness coverage, a different job. GitHub's pytest-coverage took the slot.
  • Overlap acknowledged. webapp-testing and playwright-best-practices also appear on the browser automation guide. Both anchor this category too, and pretending otherwise would leave the list dishonest.

The ten skills at a glance

A comparative index of the top picks. Click any card to navigate directly to its detailed review.

Install counts from the skills.sh registry, snapshot taken July 2026.

The TDD Loop

The two flagship TDD skills attack the same agent failure from opposite directions: one is a reference on what makes a test worth keeping, the other is an enforcement regime that treats untested code as deletable.

GitHub repository card for mattpocock/skills

tdd

412.0K installs Matt Pocock

Best for: TDD that produces tests worth keeping, not just green ones

The most installed testing skill in the registry treats TDD as more than a loop: it is a reference for what the loop should produce. Its central idea is the seam, the public boundary where a test observes behavior without reaching inside. Before writing any test, the agent must write down the seams under test and confirm them with you, which is how testing effort lands on critical paths instead of every imaginable edge case.

The anti-patterns section names the three ways agent-written tests go bad: implementation-coupled tests that break on refactor, tautological tests that recompute the expected value the way the code does, and horizontal slicing, writing all tests up front against imagined behavior. The prescribed alternative is vertical slices, one tracer-bullet test per cycle. Refactoring is deliberately not part of the loop; it belongs to the sibling code-review skill.

  • 412K installs, the registry's top testing skill
  • Seams agreed with you before any test is written
  • Names the tautological and implementation-coupled traps
  • Tracer-bullet vertical slices, never bulk test-first
Install this skill
$npx skills add mattpocock/skills --skill tdd
GitHub repository card for obra/superpowers

test-driven-development

161.5K installs obra (Jesse Vincent)

Best for: Agents that rationalize their way out of writing tests first

The superpowers suite's TDD skill is written like a legal code because agents argue like lawyers. Its Iron Law sits in a code block in capital letters: no production code without a failing test first. Wrote code before the test? Delete it and start over, and the skill pre-empts the workarounds by name: do not keep it as reference, do not adapt it while writing tests, do not look at it.

Half the document is a rationalizations table that answers every excuse an agent (or a human) produces, from too simple to test through deleting X hours of work is wasteful, each with a one-line rebuttal. Both the red and green phases carry a mandatory verify step, because a test you never watched fail proves nothing. It slots into the same suite as writing-plans, whose plans embed this skill's cycle into every task.

  • Iron Law: failing test first, no exceptions
  • Code written before its test gets deleted, not adapted
  • Rationalizations table rebuts eleven named excuses
  • Mandatory verify-red and verify-green steps every cycle
Install this skill
$npx skills add obra/superpowers --skill test-driven-development

End-to-End and UI Testing

Three takes on testing through the browser: Anthropic's script-first toolkit, the deepest Playwright reference in the registry, and the patterns that keep end-to-end suites from rotting into flakiness.

GitHub repository card for anthropics/skills

webapp-testing

113.4K installs Anthropic

Best for: Verifying frontend behavior in a real browser

Anthropic's official web testing skill has the agent write native Python Playwright scripts instead of driving a browser through chat. It ships a with_server.py helper that starts your dev servers, waits for their ports, runs the automation, and tears everything down, including multi-server setups like a backend plus a frontend. The instructions are emphatic that helpers are black boxes: run them with --help, never read their source into context.

For dynamic apps it prescribes reconnaissance-then-action: navigate, wait for networkidle, inspect the rendered DOM, and only then pick selectors, which addresses the most common way agent browser tests fail. It also appears on our browser automation guide; it earns both spots because the same toolkit is the testing half of that category.

  • Official Anthropic skill at 113K installs
  • with_server.py manages dev servers around each run
  • Helper scripts stay out of context by design
  • Waits for networkidle before trusting the DOM
Install this skill
$npx skills add anthropics/skills --skill webapp-testing
GitHub repository card for currents-dev/playwright-best-practices-skill

playwright-best-practices

59.6K installs Currents

Best for: Teams whose Playwright suite is a codebase of its own

From Currents, the test observability company, and structured like a library rather than a lecture. The SKILL.md is a routing table: writing E2E tests loads the locators and assertions references, flaky test debugging loads another set, and dozens of reference files sit behind topics from OAuth flows and clock mocking to canvas, service workers, Electron apps, and browser extensions.

Its trigger description is a spectacle in itself, enumerating roughly forty situations from fixing flaky tests to performance budgets, which is why it fires reliably across so many Playwright tasks. The same progressive-disclosure design keeps each session lean: the agent loads only the two or three reference files the current activity needs. It also features on our browser automation guide; here it earns the spot as the deepest test-authoring reference in the registry.

  • Routing table sends each activity to specific references
  • Covers auth, mocking, a11y, Electron, and extensions
  • Trigger description enumerates about forty use cases
  • From Currents, who debug flaky suites for a living
Install this skill
$npx skills add currents-dev/playwright-best-practices-skill
GitHub repository card for wshobson/agents

e2e-testing-patterns

19.2K installs wshobson

Best for: Deciding what deserves an E2E test at all

Where the Playwright reference answers how, this skill answers whether. It opens with the testing pyramid and a blunt pair of lists: E2E tests are for critical user journeys, complex interactions, and real integrations, and explicitly not for unit-level logic, API contracts, or edge cases, which are too slow at this layer. Agents left unsupervised tend to write E2E tests for everything; this is the counterweight.

The patterns cover both Playwright and Cypress: data-testid selectors over CSS classes and nth-child chains, independent tests with their own data setup and cleanup, page objects, and proper waits instead of fixed timeouts, the number one flakiness cause. A debugging section walks through headed mode, trace viewer, test.step annotations, and page.pause() for interactive inspection.

  • Explicit list of what E2E should never be used for
  • Covers Playwright and Cypress with shared principles
  • data-testid selectors as the stability baseline
  • Flakiness treated as a waits problem, not a retry problem
Install this skill
$npx skills add wshobson/agents --skill e2e-testing-patterns

Per-Stack Patterns

Framework-specific depth for the two ecosystems agents test most: a generated-from-source Vitest reference, pytest patterns with fixtures and time control, and a mechanical loop for driving coverage up.

GitHub repository card for antfu/skills

vitest

26.7K installs Anthony Fu

Best for: Accurate Vitest 5 API answers instead of Jest habits

Anthony Fu is on the Vitest core team, and his skill takes an approach nobody else on this page uses: it is generated from the Vitest repository itself by scripts he publishes, stamped with a generation date and the version it tracks, currently the Vitest 5 beta. When the framework moves, the skill regenerates, which makes it the closest thing to shipping the docs inside the agent.

The structure is a reference index across core, features, and advanced tiers: config, the test and expect APIs, mocking with vi utilities, fake timers, snapshots, coverage providers, fixtures via test.extend, concurrency, and type testing with expectTypeOf. For agents that keep writing Jest idioms into Vitest projects, an authoritative per-version reference beats a general testing skill.

  • Generated from Vitest source, dated and versioned
  • Maintained by a Vitest core team member
  • Covers vi mocking, fixtures, sharding, and type tests
  • Tracks Vitest 5 beta ahead of most written docs
Install this skill
$npx skills add antfu/skills --skill vitest
GitHub repository card for wshobson/agents

python-testing-patterns

27.0K installs wshobson

Best for: Python suites that go past assert equals

The pytest companion to the E2E skill from the same collection. It sets the structure first, arrange-act-assert, a tests directory split into unit, integration, and end-to-end, and a naming convention of test, unit, scenario, expected outcome, then gets into the patterns that separate real suites from tutorials: mock side effects that fail twice and then succeed for retry logic, freezegun for freezing and moving time, and markers for slow, integration, and expected-failure tests.

The worked examples are chosen for the things agents reliably get wrong, like verifying that a permanent error is not retried while a transient one is, or testing token expiry without sleeping. Deeper material sits in a references file the agent loads on demand, the same progressive-disclosure layout as the rest of the wshobson collection.

  • AAA structure and a strict test naming convention
  • Retry-logic testing via mock side effect sequences
  • freezegun patterns for time-dependent behavior
  • Details file loads only when the summary is not enough
Install this skill
$npx skills add wshobson/agents --skill python-testing-patterns
GitHub repository card for github/awesome-copilot

pytest-coverage

11.5K installs GitHub

Best for: Driving a module to full line coverage mechanically

The narrowest skill on this page, and that is its virtue. It teaches one loop: run pytest with the annotate coverage report, open the generated cov_annotate directory, find lines prefixed with an exclamation mark, write tests that cover them, and repeat until no marked lines remain. The annotated-source format matters because it gives an agent exact uncovered lines to target instead of a percentage to feel bad about.

Worth pairing with the mutation-testing skill below as a corrective, since line coverage proves execution rather than verification. As a mechanical gap-closer on a module you are hardening, it turns a vague raise the coverage request into a terminating procedure.

  • One job: find uncovered lines and cover them
  • Annotated reports mark each uncovered line with a !
  • Gives agents exact targets, not just a percentage
  • From GitHub's official awesome-copilot collection
Install this skill
$npx skills add github/awesome-copilot --skill pytest-coverage

Strategy and Test Quality

The layer above and below the tests themselves: deciding what to test before writing anything, and injecting faults to prove the suite catches real bugs.

GitHub repository card for anthropics/knowledge-work-plugins

testing-strategy

4.4K installs Anthropic

Best for: Answering how should we test this before writing tests

A compact planning skill from Anthropic's knowledge-work plugins that triggers on questions like how should we test this and what tests do we need. It maps strategy to component type: API endpoints get unit tests for logic plus integration and contract tests, data pipelines get idempotency and transformation checks, frontends get component, interaction, visual regression, and accessibility tests, and infrastructure gets smoke and load tests.

Just as useful is its skip list: trivial getters and setters, framework code, and one-off scripts do not deserve tests, which is exactly the busywork agents produce when told to add tests without a strategy. The output is a concrete test plan with types, targets, and example cases, plus the gaps in whatever coverage already exists.

  • Strategy mapped per component type, not one-size
  • Names what to skip, the antidote to test busywork
  • Produces a test plan with coverage targets
  • Pairs with the TDD skills that then execute the plan
Install this skill
$npx skills add anthropics/knowledge-work-plugins --skill testing-strategy
GitHub repository card for trailofbits/skills

mutation-testing

2.3K installs Trail of Bits

Best for: Proving your green suite would actually catch a bug

From security firm Trail of Bits, this skill configures mutation testing campaigns with their mewt tool (and muton, its sibling for TON smart contracts): the tool mutates your code, and every mutant your tests fail to catch is a bug the suite would have missed. It is the strongest available answer to the doubt that hangs over agent-written tests, since a tautological test passes coverage checks but kills no mutants.

The skill's actual work is campaign engineering: scoping targets file by file, tuning timeouts, filtering mutation types, and structuring two-phase runs so a large campaign finishes in hours instead of days. Results read simply, caught means your tests work, uncaught means untested logic with an exact location. The smallest install count on this page, and the pick we would defend hardest.

  • Uncaught mutants are bugs your suite would miss
  • Campaign scoping and timeouts, not just run it
  • mewt covers Rust, Go, Solidity, TypeScript, and JS
  • The quality check tautological tests cannot pass
Install this skill
$npx skills add trailofbits/skills --skill mutation-testing

Which ones should you actually install?

Pick by failure mode. If your agent writes tests that pass without proving anything, tdd teaches it what a good test is. If it skips testing altogether or rationalizes exceptions, test-driven-development is the enforcement regime. Add the reference for your stack: vitest for the Vite ecosystem, python-testing-patterns for pytest.

For the browser, webapp-testing runs the verification and playwright-best-practices answers the hard authoring questions, with e2e-testing-patterns deciding what deserves a browser test at all. Before a big testing push, testing-strategy writes the plan; afterwards, pytest-coverage closes the line-coverage gaps and mutation-testing audits whether any of it would catch a real bug.

Keep them under control with LazySkills

A testing setup is a TDD skill, a framework reference, and a browser toolkit from three different repos, and whether each agent on your machine can see them is exactly the kind of thing that fails silently. LazySkills is a terminal UI that scans your machine, shows per-agent visibility, diagnoses broken configurations, and searches the same registry this page is built on.

curl -fsSL https://lazyskills.sh/install | sh
More about LazySkills

Frequently asked questions

My agent claims tests pass without running them. Which skill fixes that?

This complaint shows up constantly, and it is why both TDD picks make their verification steps mandatory rather than assumed. obra's test-driven-development requires watching the test fail and watching it pass, with the output pristine, before a cycle counts. mattpocock's tdd enforces red before green on every slice. Neither skill can physically stop a determined agent from lying, but they change claims of passing into checkable steps, and pairing them with hooks that actually run the suite closes the loop.

What stops an agent from just editing the test until it goes green?

obra's skill confronts this head on: if the test fails, fix the code, not the test, and code written before its test gets deleted rather than adapted. mattpocock's tdd attacks the subtler version, where the test is rewritten to recompute whatever the code produces; its tautological anti-pattern requires expected values to come from an independent source of truth like a spec or a worked example. Mutation testing is the after-the-fact audit: a suite that was edited into passing kills very few mutants.

mattpocock's tdd or obra's test-driven-development, or both?

They overlap on the loop and differ in emphasis. mattpocock's is a reference about test quality: seams, anti-patterns, and where testing effort should land, with refactoring routed to a separate review skill. obra's is about compliance: the Iron Law, delete-and-restart, and rebuttals to every excuse. If your agent writes bad tests, start with mattpocock's; if it skips tests, start with obra's. Running both is redundant, so pick the failure mode you actually have.

Does TDD actually work for UI code with agents?

Less well than for isolated logic, and developers say so openly. UI behavior is hard to specify as a failing test up front, which is where the strict loop drags. The workable split: TDD for logic and bug fixes, where a reproducing test is natural, and browser-level verification through webapp-testing or the Playwright skills for UI, where the test is behavioral. e2e-testing-patterns' pyramid keeps the proportions honest.

Do I need a framework skill like vitest if I already have a TDD skill?

They solve different failures. A TDD skill governs process and says nothing about vi.mock hoisting or fixture design; a framework skill knows the API cold and imposes no discipline. The classic symptom the vitest skill fixes is an agent writing Jest idioms into a Vitest project, which no amount of process fixes. Discipline skill plus the reference for your stack is the standard pairing.

Is mutation testing overkill for a normal project?

For every module, yes. For code where a silent bug is expensive, it is the only tool here that measures whether tests detect faults rather than merely execute lines. A pragmatic cadence: use pytest-coverage-style loops to close gaps continuously, and run a scoped mutation campaign on critical modules before a release or after a large batch of agent-written tests, exactly the situation where plausible-but-toothless tests accumulate.

More curated guides

by Alvin