From 7dcfe6aaf8b6a988dee39f5998a5fe72d7ff70a0 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Sun, 19 Jul 2026 12:03:04 -0400 Subject: [PATCH 1/2] fix(verification): neutralize .NET/PowerShell-flavored examples in agnostic skills The confirm/measure skills are sold as ecosystem-agnostic, but their illustrative examples leaned .NET/C#/PowerShell and one assumed a Unix shell (`wc -l`) against the cross-platform "never assume Bash" contract. Neutralize them so a non-.NET consumer isn't handed a stack-specific illustration as the universal path: generic reproduction-test name and failure, import/dependency-declaration counting instead of `using`/`ProjectReference`, "your test runner"/"your benchmark harness" instead of `dotnet test`/BenchmarkDotNet, and shell-neutral line counting (`wc -l` on POSIX/Git Bash, `Measure-Object -Line` in PowerShell). The named marketplace-plugin evidence pointers (`dotnet-*`) are unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_011V31qpAHP3jfs76B9d5Rfo --- plugins/verification/.claude-plugin/plugin.json | 2 +- plugins/verification/CHANGELOG.md | 15 +++++++++++++++ .../verification/skills/confirm/context/fix.md | 4 ++-- .../skills/measure/context/metrics.md | 8 ++++---- .../skills/measure/context/performance.md | 8 ++++---- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/plugins/verification/.claude-plugin/plugin.json b/plugins/verification/.claude-plugin/plugin.json index b994adb53..2d656e5c6 100644 --- a/plugins/verification/.claude-plugin/plugin.json +++ b/plugins/verification/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "verification", - "version": "0.2.2", + "version": "0.2.3", "description": "Outcome-verification stage: prove a change achieved its intended outcome (`/verification:confirm` \u2014 a mechanical build/test/lint prerequisite gate, then intent-match + evidence + verdict with the criterion auto-detected by change type), and verify measurable-improvement claims against a planning-time baseline (`/verification:measure`), never fabricating numbers.", "author": { "name": "Melodic Software", diff --git a/plugins/verification/CHANGELOG.md b/plugins/verification/CHANGELOG.md index d03bfd40e..bdb173433 100644 --- a/plugins/verification/CHANGELOG.md +++ b/plugins/verification/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to the `verification` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.2.3] + +### Changed + +- Neutralized the .NET/C#/PowerShell-flavored illustrative examples in the + stack-agnostic `confirm` and `measure` skills so a non-.NET consumer isn't + handed a stack-specific illustration as the universal path: the reproduction-test + example uses a generic descriptive name and failure, and the metric/perf + "how to check" cells count import/dependency declarations and point to "your + test runner"/"your benchmark harness" instead of `using`/`ProjectReference`/ + `dotnet test`/BenchmarkDotNet. The Unix-shell `wc -l` line-count assumption is + now stated shell-neutrally (`wc -l` on POSIX/Git Bash, `Measure-Object -Line` + in PowerShell), honoring the cross-platform "never assume Bash" contract. The + named marketplace-plugin evidence pointers (`dotnet-*`) are unchanged. + ## [0.2.2] ### Changed diff --git a/plugins/verification/skills/confirm/context/fix.md b/plugins/verification/skills/confirm/context/fix.md index 3531e30fb..d46e83432 100644 --- a/plugins/verification/skills/confirm/context/fix.md +++ b/plugins/verification/skills/confirm/context/fix.md @@ -49,8 +49,8 @@ Gold standard for fix confirmation is a test that: If `/testing:diagnose` was used, this test should already exist. Reference it by name: ``` -Reproduction test: UserService_ShouldReturnNull_WhenUserIsDeleted -- Fails on commit abc1234 (pre-fix): NullReferenceException +Reproduction test: returns_null_when_user_is_deleted (name it per your framework's convention) +- Fails on commit abc1234 (pre-fix): the reported failure (e.g. a null-dereference crash) - Passes on commit def5678 (post-fix): returns null as expected ``` diff --git a/plugins/verification/skills/measure/context/metrics.md b/plugins/verification/skills/measure/context/metrics.md index 363699fa1..ba284e3f8 100644 --- a/plugins/verification/skills/measure/context/metrics.md +++ b/plugins/verification/skills/measure/context/metrics.md @@ -11,17 +11,17 @@ Quality is partly subjective, but some aspects ARE measurable: | Quality aspect | Measurable proxy | How to check | |---------------|-----------------|--------------| | Complexity | Cyclomatic complexity, nesting depth | Count conditionals, measure max nesting | -| Size | Lines of code, file count, method length | `wc -l`, `git diff --stat` | -| Coupling | Dependency count, import count | Count `using`/`import`, `ProjectReference` count | +| Size | Lines of code, file count, method length | Line counter (`wc -l` on POSIX/Git Bash, `Measure-Object -Line` in PowerShell), `git diff --stat` | +| Coupling | Dependency count, import count | Count import/dependency declarations (`import`/`require`/`using`, package or project references) | | Cohesion | Methods per class, related functionality | Inspect class responsibility | | Duplication | Repeated code blocks | Grep for similar patterns | -| Test coverage | Test count, assertion count | `dotnet test` output, test inventory | +| Test coverage | Test count, assertion count | Your test runner's output, test inventory | | API surface | Public member count | Count `public` declarations | ## `baseline` phase (at planning time) 1. **Map the claim to a proxy** — "simpler" → fewer lines / lower complexity / less nesting; "cleaner" → better naming / less duplication; "more maintainable" → fewer deps / better cohesion / more tests; "better organized" → feature-aligned structure / reduced coupling. -2. **Capture pre-change metrics** for the chosen proxies (`git show : | wc -l`, complexity count, dependency count). Store in the topic's memory-tier baselines directory (SKILL.md "Two-phase model" — machine-bound, never committed) and record in the plan. +2. **Capture pre-change metrics** for the chosen proxies (line count from `git show :` piped to a line counter — `wc -l` on POSIX/Git Bash, `Measure-Object -Line` in PowerShell; complexity count, dependency count). Store in the topic's memory-tier baselines directory (SKILL.md "Two-phase model" — machine-bound, never committed) and record in the plan. ## `compare` phase (at `/verification:measure metrics`) diff --git a/plugins/verification/skills/measure/context/performance.md b/plugins/verification/skills/measure/context/performance.md index 62ab0613d..2b4511790 100644 --- a/plugins/verification/skills/measure/context/performance.md +++ b/plugins/verification/skills/measure/context/performance.md @@ -11,10 +11,10 @@ When a plan claims a perf improvement: | Claim type | Metrics | How to measure | |-----------|---------|---------------| - | Faster execution | Wall time, CPU time | `dotnet test` timing, `Measure-Command`, `time` | - | Faster build | Build time | `dotnet build` timing, CI run durations | - | Less memory | Peak RSS, allocation count | `dotnet-counters`, `dotnet-trace`, profiler | - | Fewer allocations | Allocation rate, GC pressure | BenchmarkDotNet, `dotnet-counters` | + | Faster execution | Wall time, CPU time | Your test runner's timing output, a shell timer (`time` on POSIX/Git Bash, `Measure-Command` in PowerShell) | + | Faster build | Build time | Your build tool's timing output, CI run durations | + | Less memory | Peak RSS, allocation count | Your platform's profiler or memory-counter tooling | + | Fewer allocations | Allocation rate, GC pressure | Your benchmark harness, allocation profiler | | Better throughput | Requests/sec, items/sec | Load test, benchmark harness | | Reduced latency | P50, P95, P99 | Tracing dashboard, load tests | From 8c06888a6aa47eeb56d43155f16ead8aca504eb8 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Sun, 19 Jul 2026 12:24:03 -0400 Subject: [PATCH 2/2] docs(verification): disambiguate reproduction-test meta-note from test name Address claude[bot] review nit: the "(name it per your framework's convention)" parenthetical inside the code fence could be misread as part of the test name. Move it to a trailing `#` comment delimiter so the meta-note is unambiguously commentary, not the identifier. Co-Authored-By: Claude Opus 4.8 (1M context) --- plugins/verification/skills/confirm/context/fix.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/verification/skills/confirm/context/fix.md b/plugins/verification/skills/confirm/context/fix.md index d46e83432..35d4d3988 100644 --- a/plugins/verification/skills/confirm/context/fix.md +++ b/plugins/verification/skills/confirm/context/fix.md @@ -49,7 +49,7 @@ Gold standard for fix confirmation is a test that: If `/testing:diagnose` was used, this test should already exist. Reference it by name: ``` -Reproduction test: returns_null_when_user_is_deleted (name it per your framework's convention) +Reproduction test: returns_null_when_user_is_deleted # name it per your framework's convention - Fails on commit abc1234 (pre-fix): the reported failure (e.g. a null-dereference crash) - Passes on commit def5678 (post-fix): returns null as expected ```