From b7b8a9f80e01ef4950e51bc3f980bbe3b9feab5c Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Sun, 19 Jul 2026 22:13:22 -0400 Subject: [PATCH 1/2] fix(toolchain): replace stale dotnet-msbuild plugin-skill refs in dotnet.md with capability descriptions (#412) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `.NET` check context (`plugins/toolchain/skills/check/context/dotnet.md`) listed `dotnet-msbuild:*` plugin skills under an "invoke only when installed" gate. No `dotnet-*` plugin ships in this marketplace and none is registered in `.claude-plugin/marketplace.json`, so the presence gate could never open for any consumer — the refs pointed at skills nobody can install. Replace the tool-specific `plugin:skill` names with ecosystem-neutral capability descriptions (build-performance diagnosis, binlog failure analysis, MSBuild anti-pattern scanning, bin/obj output-path clash detection) that resolve against whatever diagnostics plugin a consumer actually has installed, and reword the gate so it no longer presumes a named plugin. The .NET-flavored capability signal and the fallback-to-prose convention are kept intact. Bumps `toolchain` 0.4.2 -> 0.4.3 (patch) and adds the CHANGELOG entry. Co-authored-by: Claude Opus 4.8 (1M context) --- plugins/toolchain/.claude-plugin/plugin.json | 2 +- plugins/toolchain/CHANGELOG.md | 15 +++++++++++++++ plugins/toolchain/skills/check/context/dotnet.md | 10 ++++++---- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/plugins/toolchain/.claude-plugin/plugin.json b/plugins/toolchain/.claude-plugin/plugin.json index ad2f5dea..47f4636b 100644 --- a/plugins/toolchain/.claude-plugin/plugin.json +++ b/plugins/toolchain/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "toolchain", - "version": "0.4.2", + "version": "0.4.3", "description": "Repo-agnostic polyglot verification toolchain: build + test + lint for changed files across .NET, Python, TypeScript, Bash, PowerShell, Markdown, YAML, and cross-cutting surfaces (`/toolchain:check`, `/toolchain:lint`), plus a re-runnable `/toolchain:setup` with check (report the configured ecosystems and their command surface) and apply (interview, infer, and write the tracked per-ecosystem command config those skills resolve first).", "author": { "name": "Melodic Software", diff --git a/plugins/toolchain/CHANGELOG.md b/plugins/toolchain/CHANGELOG.md index 465a85a1..60b18425 100644 --- a/plugins/toolchain/CHANGELOG.md +++ b/plugins/toolchain/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to the `toolchain` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.4.3] + +### Fixed + +- **Stale cross-plugin coupling removed from `dotnet.md` build-diagnostics section.** The `.NET` + check context (`context/dotnet.md`) listed `dotnet-msbuild:*` plugin skills (`build-perf-diagnostics`, + `binlog-failure-analysis`, `msbuild-antipatterns`, and others) under a "invoke only when installed" + gate. No `dotnet-*` plugin ships in this marketplace and none is registered in `marketplace.json`, so + the presence gate could never open for any consumer of this marketplace — the references pointed at + skills nobody can install. The tool-specific `plugin:skill` names are replaced with ecosystem-neutral + capability descriptions (build-performance diagnosis, binlog failure analysis, MSBuild anti-pattern + scanning, bin/obj output-path clash detection) that resolve against whatever diagnostics plugin a + consumer actually has installed, keeping the presence-gated fallback-to-prose convention intact. + Addresses #412; the sibling `implementation` finding (#405) tracks the same pattern separately. + ## [0.4.2] ### Fixed diff --git a/plugins/toolchain/skills/check/context/dotnet.md b/plugins/toolchain/skills/check/context/dotnet.md index 0d19aa34..234b9723 100644 --- a/plugins/toolchain/skills/check/context/dotnet.md +++ b/plugins/toolchain/skills/check/context/dotnet.md @@ -69,8 +69,10 @@ Checks repos often gate in CI that plain build/test/format don't catch locally - **Locked-mode NuGet restore** (`dotnet restore --locked-mode`) — local `dotnet restore` is permissive; only locked-mode catches `packages.lock.json` drift. Remediation: `dotnet restore --force-evaluate`, commit the regenerated lockfiles. Cross-platform caveat: lockfiles generated on one OS can miss another OS's runtime transitives; regenerate on the CI OS (container/WSL) rather than forcing `-r `, which pollutes lockfiles with RID blocks - **Generated-artifact freshness** (e.g. a build-time OpenAPI spec) — build the producing project, then `git diff --exit-code` on the generated file; stage the regenerated artifact alongside the source change -## Marketplace plugin skills for build diagnostics (invoke only when installed) +## Build-diagnostic capabilities (invoke when an installed plugin provides them) -- **Slow builds** — `dotnet-msbuild:build-perf-diagnostics` for bottleneck analysis via binary logs, `dotnet-msbuild:build-perf-baseline` for before/after measurement -- **Build failures** — `dotnet-msbuild:binlog-failure-analysis` to diagnose opaque MSBuild errors, `dotnet-msbuild:binlog-generation` for binary log capture (`dotnet build /bl:{}`) -- **Build config issues** — `dotnet-msbuild:msbuild-antipatterns` for AP-01 through AP-21, `dotnet-msbuild:check-bin-obj-clash` for OutputPath conflicts +These are .NET build-diagnostic capabilities a marketplace plugin may supply. When your stack is .NET and an installed plugin exposes the matching skill, invoke it; otherwise fall back to the prose remediation and the binlog gotcha above: + +- **Slow builds** — build-performance diagnosis (bottleneck analysis via binary logs) and build-performance baselining (before/after measurement) +- **Build failures** — binlog failure analysis (diagnose opaque MSBuild errors from a binary log) and binlog capture (`dotnet build -bl`) +- **Build config issues** — MSBuild anti-pattern scanning and bin/obj output-path clash detection From 67571b332397d5f4e3895e6dd57bc901e6d8bf28 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Mon, 20 Jul 2026 02:24:24 -0400 Subject: [PATCH 2/2] fix(toolchain): rework dotnet.md refs to keep tool names as .NET forward references (#412) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverses this branch's earlier genericized approach, which implemented the OPPOSITE of the ratified #412 disposition. Per the maintainer ruling (relayed 2026-07-20): the `dotnet-msbuild:*` build-diagnostics skills in `plugins/toolchain/skills/check/context/dotnet.md` are optional FORWARD references to the maintainer's planned `dotnet-*` plugin family — keep the tool names, presence-gate them, add stack framing, and never remove a reference. Restore every `dotnet-msbuild:*` skill name and the `## Marketplace plugin skills for build diagnostics (invoke only when installed)` heading, and add a lead-in that frames the list as .NET-ecosystem skills applicable when the stack is .NET and as forward references to the planned family — invoked only when the plugin is installed, otherwise falling back to the section's own prose remediation and binlog gotcha (the generic path stays first-class). This matches the presence-gated forward-reference convention the merged `testing` (#491) and `verification` (#526) siblings adopted. Framing only: no skill reference is removed, renamed, or genericized, and no command string is altered. The CHANGELOG entry is rewritten to a `### Changed` note describing the reframing; version stays at the 0.4.3 bump. Co-authored-by: Claude Opus 4.8 (1M context) --- plugins/toolchain/CHANGELOG.md | 22 +++++++++---------- .../toolchain/skills/check/context/dotnet.md | 10 ++++----- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/plugins/toolchain/CHANGELOG.md b/plugins/toolchain/CHANGELOG.md index 60b18425..b62d4cf9 100644 --- a/plugins/toolchain/CHANGELOG.md +++ b/plugins/toolchain/CHANGELOG.md @@ -5,18 +5,18 @@ All notable changes to the `toolchain` plugin are documented here. Format follow ## [0.4.3] -### Fixed +### Changed -- **Stale cross-plugin coupling removed from `dotnet.md` build-diagnostics section.** The `.NET` - check context (`context/dotnet.md`) listed `dotnet-msbuild:*` plugin skills (`build-perf-diagnostics`, - `binlog-failure-analysis`, `msbuild-antipatterns`, and others) under a "invoke only when installed" - gate. No `dotnet-*` plugin ships in this marketplace and none is registered in `marketplace.json`, so - the presence gate could never open for any consumer of this marketplace — the references pointed at - skills nobody can install. The tool-specific `plugin:skill` names are replaced with ecosystem-neutral - capability descriptions (build-performance diagnosis, binlog failure analysis, MSBuild anti-pattern - scanning, bin/obj output-path clash detection) that resolve against whatever diagnostics plugin a - consumer actually has installed, keeping the presence-gated fallback-to-prose convention intact. - Addresses #412; the sibling `implementation` finding (#405) tracks the same pattern separately. +- **Presence-gated `dotnet-msbuild:*` build-diagnostics references in `context/dotnet.md` reframed as + .NET-ecosystem forward references.** The `## Marketplace plugin skills for build diagnostics (invoke + only when installed)` list gains a lead-in that frames its `dotnet-msbuild:*` skills as applicable + when your stack is .NET and as forward references to the planned `dotnet-*` plugin family — invoked + only when the plugin is installed, otherwise falling back to the section's own prose remediation and + binlog gotcha (the generic path stays first-class). Framing only: no skill reference was removed, + renamed, or genericized, and no command string was altered. Aligns this file with the presence-gated + forward-reference convention the merged `testing` (#491) and `verification` (#526) siblings adopted, + per the ratified #412 disposition. Addresses #412; the sibling `implementation` finding (#405) tracks + the same pattern separately. ## [0.4.2] diff --git a/plugins/toolchain/skills/check/context/dotnet.md b/plugins/toolchain/skills/check/context/dotnet.md index 234b9723..7fdc85af 100644 --- a/plugins/toolchain/skills/check/context/dotnet.md +++ b/plugins/toolchain/skills/check/context/dotnet.md @@ -69,10 +69,10 @@ Checks repos often gate in CI that plain build/test/format don't catch locally - **Locked-mode NuGet restore** (`dotnet restore --locked-mode`) — local `dotnet restore` is permissive; only locked-mode catches `packages.lock.json` drift. Remediation: `dotnet restore --force-evaluate`, commit the regenerated lockfiles. Cross-platform caveat: lockfiles generated on one OS can miss another OS's runtime transitives; regenerate on the CI OS (container/WSL) rather than forcing `-r `, which pollutes lockfiles with RID blocks - **Generated-artifact freshness** (e.g. a build-time OpenAPI spec) — build the producing project, then `git diff --exit-code` on the generated file; stage the regenerated artifact alongside the source change -## Build-diagnostic capabilities (invoke when an installed plugin provides them) +## Marketplace plugin skills for build diagnostics (invoke only when installed) -These are .NET build-diagnostic capabilities a marketplace plugin may supply. When your stack is .NET and an installed plugin exposes the matching skill, invoke it; otherwise fall back to the prose remediation and the binlog gotcha above: +These are .NET-ecosystem plugin skills — applicable when your stack is .NET — and forward references to the planned `dotnet-*` plugin family: invoke each only when its plugin is installed, otherwise fall back to the prose remediation and the binlog gotcha above. -- **Slow builds** — build-performance diagnosis (bottleneck analysis via binary logs) and build-performance baselining (before/after measurement) -- **Build failures** — binlog failure analysis (diagnose opaque MSBuild errors from a binary log) and binlog capture (`dotnet build -bl`) -- **Build config issues** — MSBuild anti-pattern scanning and bin/obj output-path clash detection +- **Slow builds** — `dotnet-msbuild:build-perf-diagnostics` for bottleneck analysis via binary logs, `dotnet-msbuild:build-perf-baseline` for before/after measurement +- **Build failures** — `dotnet-msbuild:binlog-failure-analysis` to diagnose opaque MSBuild errors, `dotnet-msbuild:binlog-generation` for binary log capture (`dotnet build /bl:{}`) +- **Build config issues** — `dotnet-msbuild:msbuild-antipatterns` for AP-01 through AP-21, `dotnet-msbuild:check-bin-obj-clash` for OutputPath conflicts