Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion plugins/testing/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "testing",
"version": "0.2.0",
"version": "0.2.1",
"description": "Test-stage discipline across all ecosystems: coverage-gap analysis and test planning (`/testing:plan`), TDD test authoring and placement (`/testing:write`), live E2E plus non-UI smoke verification (`/testing:run-e2e`), and failing-test root-cause diagnosis with the reproduce → isolate → fix → retest loop (`/testing:diagnose`).",
"author": {
"name": "Melodic Software",
Expand Down
12 changes: 12 additions & 0 deletions plugins/testing/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,18 @@
All notable changes to the `testing` plugin are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning.

## [0.2.1]

### Changed

- Cross-plugin marketplace-skill references brought under the presence-gated guard and reframed as
stack-specific. The unguarded inline `dotnet-test:*` parenthetical in `write` (per-cycle checklist)
is removed; its detection-layer skills moved under `write`'s now-guarded
`## Marketplace plugin skills (invoke only when installed)` list. The all-.NET enrichment lists in
`write`, `organize`, `plan`, `run-e2e`, and `diagnose` now state the `dotnet-*` skills apply only
when your stack is .NET, so a non-.NET consumer is not handed a dead list as the universal path.
No hard dependencies; every reference stays optional and installed-gated.

## [0.2.0]

### Changed
Expand Down
2 changes: 2 additions & 0 deletions plugins/testing/skills/diagnose/context/investigate.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,7 @@ Most test runners parallelize across test classes / assemblies / modules. Proces

## Marketplace plugin skills (invoke only when installed)

These are .NET-ecosystem plugin skills — applicable when your stack is .NET:

- **`dotnet-diag:analyzing-dotnet-performance`** — scan for ~50 performance anti-patterns (async deadlocks, memory pressure, GC stalls) when tests timeout or run intermittently slow
- **`dotnet-msbuild:binlog-failure-analysis`** — replay MSBuild binary logs to diagnose build infrastructure failures masquerading as test failures (missing references, wrong TFM, analyzer conflicts)
2 changes: 2 additions & 0 deletions plugins/testing/skills/diagnose/context/loop.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,5 +109,7 @@ When the loop is invoked standalone (outside `/implementation:implement`):

## Marketplace plugin skills (invoke only when installed)

These are .NET-ecosystem plugin skills — applicable when your stack is .NET:

- **`dotnet-test:mtp-hot-reload`** — enable MTP hot reload for rapid test iteration without rebuilding. Requires `Microsoft.Testing.Extensions.HotReload` package + `TESTINGPLATFORM_HOTRELOAD_ENABLED=1`. Use `dotnet run --project` (not `dotnet test`) for hot reload mode
- **`dotnet-diag:analyzing-dotnet-performance`** — scan for async deadlocks, timing races, and GC pressure when intermittent failures suggest performance-related root causes
2 changes: 2 additions & 0 deletions plugins/testing/skills/plan/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,5 +104,7 @@ Present the test plan to the user. Then suggest:

## Marketplace plugin skills (invoke only when installed)

These enrichment skills are ecosystem-specific — the `dotnet-test` skill applies when your stack is .NET; `document-skills:webapp-testing` is stack-agnostic:

- **`dotnet-test:code-testing-agent`** — multi-agent pipeline for comprehensive gap analysis and structured test generation. Use when the test plan reveals significant coverage gaps requiring many new tests
- **`document-skills:webapp-testing`** — Playwright patterns for E2E test planning. Use when the test plan includes UI or API verification scenarios that need end-to-end coverage
2 changes: 2 additions & 0 deletions plugins/testing/skills/run-e2e/context/e2e.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,5 +133,7 @@ When a test element can't be found:

## Marketplace plugin skills (invoke only when installed)

These enrichment skills are tool-specific — invoke each only when it matches your stack and tooling:

- **`cloudflare:web-perf`** — measure Core Web Vitals (FCP, LCP, TBT, CLS, Speed Index) via Chrome DevTools MCP. Use for performance verification baselines during E2E testing
- **`document-skills:webapp-testing`** — Playwright-based test automation patterns including semantic locators, accessibility-first selectors, and multi-step workflow scripting
2 changes: 2 additions & 0 deletions plugins/testing/skills/write/context/organize.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,7 @@ Track per-repo via the repo's own testing-conventions documentation — architec

## Marketplace plugin skills (invoke only when installed)

These are .NET-ecosystem plugin skills — applicable when your stack is .NET:

- **`dotnet-test:crap-score`** — calculate CRAP (Change Risk Anti-Patterns) scores to prioritize which untested code is riskiest. Combines cyclomatic complexity with coverage data to identify methods where tests would have the highest impact
- **`dotnet-test:test-anti-patterns`** — scan existing test projects for anti-patterns (flakiness indicators, over-mocking, missing assertions, shared static state). Use when assessing test quality during reorganization
8 changes: 5 additions & 3 deletions plugins/testing/skills/write/context/write.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ After each Red→Green→Refactor cycle, verify:
- [ ] Test uses public interface only
- [ ] Test would survive internal refactor
- [ ] One logical assertion per test — one behavioral concept, not one `Assert` statement
- [ ] No tautological assertions — expected values are independently sourced (literal, hand-computed, known fixture), never recomputed the same way the code under test computes them; a round-trip/identity check of output against input proves nothing (detection layer: `dotnet-test:test-anti-patterns` + `dotnet-test:assertion-quality` plugins)
- [ ] No tautological assertions — expected values are independently sourced (literal, hand-computed, known fixture), never recomputed the same way the code under test computes them; a round-trip/identity check of output against input proves nothing
- [ ] Code is minimal for this test
- [ ] No speculative features added

Expand Down Expand Up @@ -135,8 +135,10 @@ No tests needed for:
- **Fix + green test committed together** — the fix and its proof are atomic
- **Commit before refactoring** — separate structural from behavioral commits

## Marketplace plugin skills
## Marketplace plugin skills (invoke only when installed)

When writing tests, consider loading these marketplace plugin skills for guidance:
These are .NET-ecosystem plugin skills — applicable when your stack is .NET:

- **`dotnet-test:code-testing-agent`** — multi-agent pipeline for comprehensive test generation (researcher → planner → implementer → builder → tester → fixer → linter). Invoke for complex test scenarios requiring gap analysis and structured implementation
- **`dotnet-test:test-anti-patterns`** — scan existing test projects for anti-patterns (flakiness indicators, over-mocking, missing assertions, shared static state) as a detection layer for the per-cycle checklist above
- **`dotnet-test:assertion-quality`** — flag tautological and weak assertions where expected values are recomputed the same way the code under test computes them
Loading