/test-analysis-extensions
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
Claude Code
$ npx -y skills add dotnet/skills --skill test-analysis-extensions --agent claude-code
Codex
$ npx skills add dotnet/skills --skill test-analysis-extensions -a codex -y
Cursor
$ npx skills add dotnet/skills --skill test-analysis-extensions -a cursor -y
Gemini CLI
$ npx skills add dotnet/skills --skill test-analysis-extensions -a gemini-cli -y
GitHub Copilot
$ npx skills add dotnet/skills --skill test-analysis-extensions -a github-copilot -y
OpenCode
$ npx skills add dotnet/skills --skill test-analysis-extensions -a opencode -y
Windsurf
$ npx skills add dotnet/skills --skill test-analysis-extensions -a windsurf -y
SKILL.md
test-analysis-extensions.SKILL.mdname: 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.
Read more
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.
This repository contains the .NET team's curated set of portable skills and host-specific custom agents for coding agents. For information about the Agent Skills standard, see agentskills.io.
Other skills on skills.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about test-analysis-extensions.
- Which coding agents can use test-analysis-extensions?
- test-analysis-extensions installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

