Testrunner
Skill onfire7777/universal-ai-skills-library/skills/testrunner
Router-first AI skill system for Codex, Claude, Cursor, Hermes, Paperclip, OpenCode, and local AI stacks: search, preflight-route, and load 1,812 skills on demand without duplicating the corpus.
npx -y skills add onfire7777/universal-ai-skills-library --skill testrunnerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 13 stars13 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Handle flaky tests, crashing tests, hanging tests, out of memory tests, stack overflow tests, test isolation, test suite stability issues in .NET projects. Use when dotnet test hangs, crashes, produces OOM or stack overflow errors, or when the user has an unstable/flaky test suite. Do NOT use for normal test runs — only when standard dotnet test is insufficient.
The file declares its own license as Unspecified. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.2 KB, 943 tokens by cl100k_base, as published. Nobody here has run it
Prerequisites
This tool requires .NET 10+ SDK (for dnx support).
Check if dnx is available:
dnx --help
If dnx is not available, the user needs .NET 10 SDK or later. dnx ships with the SDK — it does not need separate installation.
About Asynkron.TestRunner
Asynkron.TestRunner is an alternative .NET test runner that wraps dotnet test with added resilience:
- Hang detection — auto-detects stuck tests with per-test timeouts (default 20s)
- Test isolation — automatically isolates hanging/crashing tests by splitting the test tree into branches and running them separately
- History tracking — maintains pass/fail history per project, detects regressions across runs
- Trend visualization — generates bar charts showing test health over time
This is NOT a replacement for dotnet test. Use it only when standard tooling fails — flaky suites, hanging tests, crashes, OOM, stack overflow, or when you need isolation and regression tracking.
Running via dnx (no install needed)
dnx runs .NET tools from source without installing them, similar to npx:
dnx Asynkron.TestRunner [arguments]
On first run, dnx will prompt to download the package. Use --yes to skip the prompt in CI.
Common Usage
Run all tests with hang detection:
dnx Asynkron.TestRunner
Filter by class or namespace:
dnx Asynkron.TestRunner "MyTestClass"
dnx Asynkron.TestRunner "MyNamespace.Integration"
Custom dotnet test command:
dnx Asynkron.TestRunner -- dotnet test ./tests/MyProject
List tests without running:
dnx Asynkron.TestRunner list
View test history and trends:
dnx Asynkron.TestRunner stats
Compare last two runs for regressions:
dnx Asynkron.TestRunner regressions
Manual isolation (find the culprit test):
dnx Asynkron.TestRunner isolate
Clear all history:
dnx Asynkron.TestRunner clear
Timeout & Isolation Options
| Flag | Default | Purpose |
|---|---|---|
-t, --timeout <seconds> | 20 (run), 30 (isolate) | Per-test timeout |
--timeout 0 | — | Disable hang detection |
-p, --parallel [N] | — | Run N test batches concurrently |
--parallel (no value) | — | Auto-detect and use CPU core count |
How Isolation Works
When a hang is detected:
- The test tree is split into branches (max 100 leaf tests per branch)
- Branches are run separately in parallel
- Hanging branches are drilled down sequentially
- The culprit test is identified and reported
This catches tests that hang, crash the process, cause OOM, or stack overflow — scenarios where dotnet test simply dies or never returns.
History & Regression Tracking
History is stored in .testrunner/ directory, indexed by:
- Project (git repo root hash or current directory)
- Command signature (test command + filters)
Different filters and repos maintain independent histories for accurate regression detection.
When to Use This
Use Asynkron.TestRunner instead of dotnet test when:
- Tests hang or never complete
- The test process crashes (OOM, stack overflow, access violation)
- Tests are flaky and you need regression tracking across runs
- You need to isolate which specific test is causing failures
- You want trend visualization of test health over time
For normal, healthy test suites — just use dotnet test.
Guidelines
- Always try
dotnet testfirst — only reach for testrunner when it fails - If tests hang, start with the default 20s timeout before adjusting
- Use
isolateto pinpoint the exact test causing crashes or hangs - Use
statsandregressionsto track flaky test patterns over time - Use
--parallelfor faster isolation on large test suites
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.