fix(toolchain): frame dotnet.md dotnet-msbuild build-diagnostics refs as .NET forward references (#412)#583
Conversation
…net.md with capability descriptions (#412) 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) <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 21s —— View job PR Review #583 — fix(toolchain): replace stale dotnet-msbuild plugin-skill refsTasks
SummaryThe fix is correct and the premise is verified. No
|
|
Control-tower ruling relay (2026-07-20) — REWORK REQUIRED before ready-flip. This draft implements the genericized style, which is the OPPOSITE of the ratified #412 disposition (maintainer + relay, 7/19): KEEP tool names + stack framing, presence-gate forward references per the #491/#526 conforming pattern, no reference removal. Rework the diff to that pattern, then proceed with the normal post-green flow. Same ruling governs sibling PR #580 (#405). |
…efs, keep tool names (#405) Rework per the control-tower ruling relay (2026-07-20) on this PR: the ratified #412 disposition governing #405 requires KEEPING the dotnet-* tool names and the presence gate, presence-gating the forward references, and adding stack-qualified framing — not genericizing the references away. The prior commit on this branch genericized the three mode-context marketplace sections into ecosystem-neutral capability descriptions, which is the OPPOSITE of the disposition. Restore each context file's `## Marketplace plugin skills (invoke only when installed)` heading and its exact dotnet-* bullets, and add a lead-in that frames those skills as .NET-ecosystem forward references — invoked only when your stack is .NET and the plugin is installed — with an explicit fallback to the project's own tooling so the generic path stays first-class. This matches the conforming testing (#491) and verification (#526) pattern. No reference removal; every reference stays optional and installed-gated. CHANGELOG 0.7.3 entry rewritten to describe the stack-qualification rework; version bump 0.7.2 -> 0.7.3 (from current origin/main) unchanged. Sibling PR #583 (toolchain, issue #412) is reworked in parallel under the same ruling. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ard references (#412) 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) <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 3m 4s —— View job PR #583 — Rework complete: conforming pattern appliedTasks
The rework was completed in commit What was done
All
Pattern conformance check
The PR is aligned with the ratified #412 disposition and ready for the normal post-green flow. |
|
Rework complete — now conforms to the ratified #412 disposition. (Kept DRAFT for the owning lane's post-green ready-flip.) What changed vs the flagged revision. The prior diff genericized the Compliance with the ruling (keep tool names + stack framing, presence-gate forward references, no reference removal):
Diff shape. Cumulative vs Base + CI. Branch merged up to current Commits. Sibling PR #580 (#405, |
|
Claude finished @kyle-sexton's task in 1m 31s —— View job PR Review #583 — fix(toolchain): frame dotnet.md dotnet-msbuild build-diagnostics refs as .NET forward referencesTasks
SummaryThe fix is correct and properly implements the ratified #412 disposition (keep tool names + stack framing + forward reference language, no removal). Three-file change: 2 lines added to
|
| File | Heading | Lead-in |
|---|---|---|
testing/…/investigate.md |
(invoke only when installed) |
"These are .NET-ecosystem plugin skills — applicable when your stack is .NET:" |
verification/…/performance.md |
(invoke only when installed) |
"These enrichment skills are stack-specific — the dotnet-* skills apply when your stack is .NET…" |
verification/…/metrics.md |
(invoke only when installed) |
"These are .NET-ecosystem plugin skills — invoke each only when your stack is .NET and its plugin is installed…" |
This PR toolchain/…/dotnet.md |
for build diagnostics (invoke only when installed) |
"These are .NET-ecosystem plugin skills — applicable when your stack is .NET — and forward references…" |
The lead-in here is the longest and adds the "forward references to the planned dotnet-* plugin family" phrase. Given that this file's skill names have no backing plugin yet (confirmed: no dotnet-msbuild or dotnet-* manifest exists in the repo), the explicit forward-reference framing is the right call and distinguishes this from the siblings where the skills may be installable.
plugins/toolchain/.claude-plugin/plugin.json
Version 0.4.2 → 0.4.3 is correct: patch bump for a content-only context file change. No structural manifest change. ✓
plugins/toolchain/CHANGELOG.md
Entry at [0.4.3] ### Changed (lines 6–19) follows Keep a Changelog format. ### Changed is the correct category (framing addition, not a defect fix). The description accurately conveys "framing only — no skill reference removed, renamed, or genericized." The entry is verbose but matches the existing style of prior entries in this file.
CLAUDE.md alignment
| Criterion | Status |
|---|---|
| Repo-agnostic — no hardcoded paths or repo names | ✓ |
Plugin-form-safe — no ../ reach-outs or state outside ${CLAUDE_PLUGIN_ROOT} |
✓ |
| Versioned — explicit semver bump present | ✓ |
| PR title follows Conventional Commits | ✓ |
| Squash-merge safe — history collapses cleanly | ✓ |
Verdict
No blocking issues. The diff is minimal and correct: 2 lines added to dotnet.md, a version bump, and a CHANGELOG entry. The forward-reference framing accurately describes the situation and conforms to the ratified disposition. Ready for the normal post-green flow.
…or refs ecosystem-neutral (#580) ## Summary Reworked per the ratified #412 disposition (which governs #405): the implementation plugin's mode-context files KEEP their `dotnet-*` marketplace-skill names and the `## Marketplace plugin skills (invoke only when installed)` presence gate, and gain a stack-qualified lead-in with a generic-path fallback — the #491/#526 conforming pattern. An earlier revision of this branch genericized/renamed those references; that approach was rejected by the maintainer ruling and has been fully reverted (commit 08f8e2c). ## Fix - feature.md / bugfix.md / refactor.md: all six `dotnet-*` skill references retained verbatim under the intact presence-gated heading; a .NET-ecosystem forward-reference lead-in added ("stack-qualified, invoke only when installed, otherwise the generic path applies"). No reference removal, no renames, no command-string changes. - CHANGELOG [0.7.3]: describes the stack-qualification accurately ("retain their dotnet-* names… No reference removal"). - plugin.json 0.7.2 → 0.7.3 (patch, from current main). ## Verification - CI green (all checks incl. portability-lint); the review bot independently re-reviewed the reworked diff and confirmed conformance to the #491/#526 pattern and the #412 disposition. - Zero review threads; `git diff origin/main` on the three context files shows only heading-preserved + lead-in-added. Closes #405 ## Related - #412 (the governing maintainer disposition; sibling PR #583 applies the same ruling to toolchain/dotnet.md) - #491 / #526 (merged precedent pattern for presence-gated stack-qualified references) --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
plugins/toolchain/skills/check/context/dotnet.mdlistsdotnet-msbuild:*build-diagnostics plugin skills (build-perf-diagnostics,binlog-failure-analysis,msbuild-antipatterns, and others) under a## Marketplace plugin skills for build diagnostics (invoke only when installed)presence gate. Nodotnet-*plugin ships in this marketplace today — but per the ratified #412 disposition (maintainer answer 2026-07-19, control-tower relay 2026-07-20) these are optional FORWARD references to the maintainer's planneddotnet-*plugin family (.NETis the primary application stack), not stale references to remove.Fix
Add a lead-in to the presence-gated list that frames it as .NET-ecosystem skills — applicable when the stack is .NET — and as forward references to the planned
dotnet-*family: invoke each only when its plugin is installed, otherwise fall back to the section's own prose remediation and binlog gotcha (the generic path stays first-class).Framing only — the ratified disposition is keep tool names + stack framing, presence-gate forward references, no reference removal:
dotnet-msbuild:*skill name is kept verbatim.dotnet build /bl:{}unchanged).This matches the presence-gated forward-reference convention the merged siblings #491 (
testing) and #526 (verification, issue #422) adopted — each added a ".NET-ecosystem plugin skills — applicable when your stack is .NET" framing line over the samedotnet-*/dotnet-diag:*lists.Bumps
toolchain0.4.2 → 0.4.3 (patch) with a matching### ChangedCHANGELOG entry.Rework note
An earlier revision of this branch took the OPPOSITE approach — it genericized the
dotnet-msbuild:*names into ecosystem-neutral capability descriptions, reading #412's original "replace with capability descriptions" fix-direction literally. The control-tower ruling relayed on this PR (2026-07-20) identified that as the inverse of the ratified disposition and required rework to the #491/#526 keep-tool-names pattern. This revision implements that rework. Sibling PR #580 (issue #405,implementation) is governed by the same ruling.Verification
Cumulative branch diff vs
mainis exactly: the framing lead-in sentence, the version bump, and the CHANGELOG entry — no other change todotnet.md.Validators run on the merged tree (branch rebased current via a
mainmerge), all clean, nothing suppressed:Closes #412
Related
dotnet-msbuild:*forward references intoolchain'sdotnet.md).implementation) / PR feat(implementation): make implement mode-context optional-collaborator refs ecosystem-neutral #580 — sibling finding, same pattern, same ruling, fixed in parallel.testing) and fix(verification): presence-gate dotnet/cloudflare cross-plugin refs in measure contexts #526 (verification, issue verification: bare unguarded cross-plugin references to dotnet-*/cloudflare plugins in measure contexts #422) — merged siblings whose keep-tool-names + stack-framing pattern this PR now conforms to.🤖 Generated with Claude Code