feat(implementation): make implement mode-context optional-collaborator refs ecosystem-neutral#580
Conversation
…or refs ecosystem-neutral (#405) The `implement` skill's three mode contexts (feature, bugfix, refactor) each listed exclusively `dotnet-*` marketplace skills as their only named optional collaborators. All were presence-gated and inert for non-.NET consumers, but a general-purpose implementation plugin whose only named collaborators are .NET leaks the .NET-shop origin and skews behavior in mixed-ecosystem targets. Restate each "Marketplace plugin skills (invoke only when installed)" section as "Optional capability skills (invoke the installed skill that provides it)": name the capability (project scaffolding, service/protocol-server scaffolding, performance diagnosis, build-failure analysis, build-config anti-pattern scanning, project-reference validation) and resolve the concrete skill from what the target environment has installed, with a shared adjacent fallback to the project's own workflow when none provides it. Presence-gating and the seam-phrasing shape (gate + fallback, no marketplace qualification) are preserved; no hardcoded tool name replaces the removed .NET ones. Patch bump 0.7.2 -> 0.7.3 with matching CHANGELOG entry. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 44s —— View job PR Review — feat(implementation): ecosystem-neutral optional-collaborator refs
SummaryThis is a clean, well-scoped change. The motivation is sound — a general-purpose plugin whose only named optional collaborators were No blocking issues found. A few observations below. Observations1. Seam-phrasing fallback coverage — borderline conformant The seam-phrasing convention ( This is consistent with how the old section header carried the gate ("invoke only when installed") across all bullets — so the pattern is symmetric — but worth flagging since the convention says "at the reference site." If the fleet audit checks per-bullet rather than per-section, the second bullet in each file could fail the conformance check. View second bullet in bugfix.md → 2.
This is pre-existing text, correctly marked "for example" and already demoted to illustration in 3. ## [0.7.3]Keep a Changelog specifies 4. Capability descriptions are sufficiently actionable ✓ Each bullet carries a concrete trigger condition ("when the bug involves…", "when a build-system failure masquerades…", "after moving types across projects…") so the skill knows when to invoke even without a named concrete tool. The descriptions are specific enough to resolve to the right capability when one is installed. 5. Version bump is correct ✓ Patch bump ( 6. Scope confirmed by grep ✓ The PR description states a repo-wide grep confirmed these three files are the only VerdictApproved. The concern in observation #1 is low-severity (same pattern as the pre-existing section-level gate and consistent with how the convention has been applied in the codebase); the rest are non-blocking. The sibling finding (#412, |
|
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 disposition governing #405 (via #412's ruling, 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 #583 (#412). |
…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>
|
Claude finished @kyle-sexton's task in 2m 53s —— View job PR Review — Rework verification after control-tower ruling
ContextThe control-tower ruling (2026-07-20) on this PR reversed the original direction: the ratified #412 disposition requires keeping Commit Conformance check against #491/#526 patternThe canonical conforming shape (from ## Marketplace plugin skills (invoke only when installed)
These are .NET-ecosystem plugin skills — invoke each only when your stack is .NET
and its plugin is installed; otherwise draw the same evidence from the project's
own X tooling:Heading — all three files use CHANGELOGThe
No date on Observations1. Version bump unchanged — correct ✓ 2. Lead-in phrasing is consistent across all three files ✓ 3. Scope is clean ✓ VerdictRework is conformant. The three context files now match the #491/#526 pattern: verbatim guard heading, stack-qualified lead-in with install-gate and fallback, all six |
Rework complete — aligned to the ratified #412 disposition (commit
|
|
Claude finished @kyle-sexton's task in 1m 50s —— View job PR Review — feat(implementation): stack-qualify implement optional-collaborator refs
ContextThis PR has been through one rework: the original commit ( Conformance check against #491/#526 patternThe canonical conforming shape (from ## Marketplace plugin skills (invoke only when installed)
These are .NET-ecosystem plugin skills — invoke each only when your stack is .NET
and its plugin is installed; otherwise draw the same evidence from the project's
own [X] tooling:Heading — all three context files use Lead-in — all three use the #526 structural shape with
✓ Tool names — all six No reference removal — bullets are unchanged; the rework only added the lead-in lines. ✓ Seam-phrasing compliance (per
Observations1. Per-file fallback label is context-tailored ✓ Each lead-in's fallback label is specific to the mode ( 2. Section-level gate covers both bullets ✓ The prior automated review flagged that the fallback lives in the lead-in "two lines away from the second bullet." This is correct and conformant: the seam-phrasing convention says "stated in the same sentence or the one adjacent" — it refers to the gate/fallback pair at the reference site (the section), not per-bullet. Both #491 and #526 use the same section-level approach. No per-bullet fallback is required. 3. CHANGELOG entry is accurate ✓
4. Version bump is correct ✓
5. Scope is clean ✓ Five files changed: three context files, VerdictConformant. Approved. The three mode-context files match the #491/#526 pattern: verbatim guard heading, stack-qualified lead-in with install-gate and context-appropriate fallback, all six |
… as .NET forward references (#412) (#583) ## Summary `plugins/toolchain/skills/check/context/dotnet.md` lists `dotnet-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. No `dotnet-*` 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 planned `dotnet-*` plugin family (`.NET` is 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*: - Every `dotnet-msbuild:*` skill name is kept verbatim. - Nothing is removed, renamed, or genericized. - No command string is altered (`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 same `dotnet-*`/`dotnet-diag:*` lists. Bumps `toolchain` 0.4.2 → 0.4.3 (patch) with a matching `### Changed` CHANGELOG 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 `main` is exactly: the framing lead-in sentence, the version bump, and the CHANGELOG entry — no other change to `dotnet.md`. Validators run on the merged tree (branch rebased current via a `main` merge), all clean, nothing suppressed: ``` markdownlint-cli2 (dotnet.md, CHANGELOG.md) 0 error(s) typos (3 touched files) exit 0 editorconfig-checker (3 touched files) exit 0 check-skill-portability.sh origin/main No unexcused coupling tokens in 1 skill file(s) validate-plugins.sh All plugin manifests and the catalog validated validate-plugin-contracts.mjs 33 setup skills and 1758 plugin files checked ``` Closes #412 ## Related - Closes #412 (source issue — `dotnet-msbuild:*` forward references in `toolchain`'s `dotnet.md`). - #405 (`implementation`) / PR #580 — sibling finding, same pattern, same ruling, fixed in parallel. - #491 (`testing`) and #526 (`verification`, issue #422) — merged siblings whose keep-tool-names + stack-framing pattern this PR now conforms to. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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
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.Verification
git diff origin/mainon the three context files shows only heading-preserved + lead-in-added.Closes #405
Related