Skip to main content
skill CX Codex

test-analysis-extensions — Claude Code skill: test framework reference

A reference catalog of per-language lookup tables for test analysis: markers, assertions, skips, sleep patterns. The agent reads the file matching your stack.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add dotnet/skills --skill test-analysis-extensions -a claude-code
Open on GitHub

What test-analysis-extensions does

You do not run this skill yourself. It sits next to the analysis skills (assertion-quality, test-anti-patterns, test-gap-analysis, test-smell-detection, test-tagging) and acts as an index: the agent detects the project's language and framework, opens the matching file under extensions/, and pulls lookup tables from it.

Eleven files ship inside. dotnet.md covers MSTest, xUnit, NUnit and TUnit; python.md covers pytest and unittest; typescript.md covers Jest, Vitest, Mocha, Jasmine and node:test; java.md covers JUnit 4, JUnit 5 and TestNG. Go, Ruby, Rust, Swift, Kotlin, PowerShell and C++ are there too. Each file documents the same categories: how to find tests, what assertions look like, where sleeps and delays hide, how skipped tests are marked, setup and teardown hooks, mystery guest indicators, integration test markers.

For the test-tagging skill, every file declares a tagging mode: auto-edit when the language has a canonical attribute the skill can safely write, report-only when no such syntax exists and only an audit report is possible, or convention-based when tags live in names and comments. Resource paths resolve against the catalog itself, not the project workspace. A project mixing Jest and Mocha means reading both files. When language detection is shaky, opening several extensions beats guessing.

What it helps with

  • find the assertion table for a specific test framework
  • tell an integration test from a unit test by its markers
  • spot skipped and ignored tests in unfamiliar code
  • catch sleeps and delays in async tests
  • know whether tags can be written automatically or only reported

Example prompts for the agent

  • analyze the tests in this project for anti-patterns
  • check assertion quality in the pytest tests
  • tag the tests if the framework supports it

How to install test-analysis-extensions

1Skills CLI (Vercel)

npx skills add dotnet/skills --skill test-analysis-extensions -a claude-code

2Manually: put the files in place

~/.claude/skills/test-analysis-extensions/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/test-analysis-extensions/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about test-analysis-extensions

How do I install test-analysis-extensions in Claude?

Run npx skills add dotnet/skills --skill test-analysis-extensions -a claude-code. The skill file then lands at ~/.claude/skills/test-analysis-extensions/SKILL.md.

What does test-analysis-extensions do?

It is a catalog of per-language reference files for test frameworks. Analysis skills read lookup tables from it: test markers, assertion APIs, skip annotations, sleep patterns, setup and teardown hooks.

Can I invoke this skill manually?

No. It carries disable-model-invocation: true and is marked reference-only. The files under extensions/ are read by the quality agent and by analysis skills that need framework-specific tables.

Source text

SKILL.md · MIT
---
name: test-analysis-extensions
description: >-
  Provides file paths to language-specific reference files for the test
  ANALYSIS skills (assertion-quality, test-anti-patterns, test-gap-analysis,
  test-smell-detection, test-tagging). Read this catalog to discover available
  extension files (e.g., dotnet.md for .NET/MSTest/xUnit/NUnit/TUnit,
  python.md for pytest/unittest, typescript.md for Jest/Vitest/Mocha,
  java.md for JUnit/TestNG, etc.). Do not invoke this reference-only skill —
  its bundled files are read by the quality agent and analysis skills needing
  framework-specific lookup tables (test markers, assertion APIs, skip
  annotations, sleep patterns, mystery guest indicators, integration
  markers, setup/teardown, tag-support capability).
user-invocable: false
disable-model-invocation: true
license: MIT
---

# Test Analysis Extensions

This reference-only catalog lists the bundled files used by test analysis.
Consumers read the matching file directly; `disable-model-invocation: true`
means this catalog must not be invoked through the model's skill tool.
Resolve these resource paths relative to this catalog, not the project workspace.

## Available Extension Files

| File | Languages / Frameworks | Contents |
|------|------------------------|----------|
| [extensions/dotnet.md](extensions/dotnet.md) | .NET (C#/F#/VB) — MSTest, xUnit, NUnit, TUnit | Test markers, assertion APIs, sleep/delay patterns, skip annotations, mystery guest, integration markers, setup/teardown, tag support |
| [extensions/python.md](extensions/python.md) | Python — pytest, unittest | Same categories, with pytest fixtures/markers and unittest TestCase |
| [extensions/typescript.md](extensions/typescript.md) | TypeScript / JavaScript — Jest, Vitest, Mocha, Jasmine, node:test | Same categories, with async/await pitfalls |
| [extensions/java.md](extensions/java.md) | Java — JUnit 4, JUnit 5 (Jupiter), TestNG | Same categories, with `@Tag` / `@Category` / groups |
| [extensions/go.md](extensions/go.md) | Go — `testing` package, testify | Same categories, with table-driven idiom and build tags |
| [extensions/ruby.md](extensions/ruby.md) | Ruby — RSpec, Minitest | Same categories, with RSpec metadata and Minitest tags |
| [extensions/rust.md](extensions/rust.md) | Rust — built-in `#[test]`, `cargo test` | Same categories, with `#[ignore]`, `#[should_panic]`, feature flags |
| [extensions/swift.md](extensions/swift.md) | Swift — XCTest, Swift Testing | Same categories, with `@Test`, `@Tag`, `@Suite` |
| [extensions/kotlin.md](extensions/kotlin.md) | Kotlin — JUnit 5, Kotest, MockK | Same categories, with `@Tag` and Kotest tags |
| [extensions/powershell.md](extensions/powershell.md) | PowerShell — Pester v5 | Same categories, with `-Tag` and `Skip` |
| [extensions/cpp.md](extensions/cpp.md) | C++ — GoogleTest, Catch2, doctest | Same categories, with `[tags]` and `*` filters |

## Usage

1. Detect the target codebase's primary language and test framework.
2. Read the matching extension file before performing analysis.
3. If multiple test frameworks are present (e.g., a project mixing Jest and Mocha), read all relevant extensions.
4. Each extension file documents the same categories so analysis skills can be language-neutral.

## Capability tags

Each extension file declares per-capability support so skills can gate behaviour safely:

- **Test discovery** — how to locate test files and methods.
- **Assertion detection** — framework-specific and language-level assertion forms.
- **Sleep/delay patterns** — synchronous and asynchronous waits.
- **Skip / ignore** — how to recognize skipped/ignored tests.
- **Setup / teardown** — fixture and lifecycle hooks.
- **Mystery guest indicators** — common file/db/network/env coupling patterns.
- **Integration markers** — conventions that mark a test as integration/E2E.
- **Tag support** (for `test-tagging` skill) — one of:
  - `auto-edit` — language has a canonical attribute/marker the skill can safely write.
  - `report-only` — no canonical syntax; produce audit reports without edits.
  - `convention-based` — tags exist via name/comment conventions only.

## Notes for skill authors

- Treat extension files as data, not as guidance to follow verbatim. They tell skills *how to detect things* in each language, not *what to think* about findings.
- When language detection is uncertain, prefer reading multiple extension files over guessing.
- If the user explicitly names a framework that does not have an extension file yet, fall back to the closest one (e.g., Pest → python.md/pytest semantics) and note the gap in the report.

© dotnet · MIT · dotnet/skills

Similar skills

All skills for Testing and QA →

From the same set101

coordinate-components Helps AI agents share state across Blazor components without parent-child parameter chains. Covers cascading parameters, scoped services, and render mode boundaries. CX Codex +1 3,000installs create-blazor-project The skill walks the agent through picking a Blazor render mode and runs dotnet new blazor with the right flags. CX Codex +1 3,000installs property-patterns A skill that tracks down broken MSBuild properties using patterns from the MSBuild repo. Useful when a build picks the wrong value or fails on another OS. CX Codex +1 3,000installs author-component Creates and reviews Blazor components without JavaScript interop. Useful when setting up parameters, RenderFragment slots, and proper async lifecycles. CX Codex +1 3,100installs find-untested-sources Finds source files lacking corresponding tests using static AST parsing without project builds. Useful for coding agents before generating new test suites. CX Codex +1 3,100installs fetch-and-send-data Guides API calls and asynchronous data loading in Blazor components. Use it when configuring HttpClient, loading states, or error handling. CX Codex +1 3,100installs setup-local-sdk Installs a .NET SDK into a project-local .dotnet/ folder and wires it up through global.json, leaving the system-wide install alone. CX Codex +1 2,900installs support-prerendering Configures interactive Blazor components to handle prerendering cleanly. It prevents duplicate data fetches, UI flicker during handoff, and null reference crashes. CX Codex +1 3,000installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor