Skip to content

Remove inert skills/ copy of query-plan-analysis#386

Merged
erikdarlingdata merged 1 commit into
devfrom
chore/remove-inert-skill-copy
Jul 10, 2026
Merged

Remove inert skills/ copy of query-plan-analysis#386
erikdarlingdata merged 1 commit into
devfrom
chore/remove-inert-skill-copy

Conversation

@erikdarlingdata

@erikdarlingdata erikdarlingdata commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Reverts the file addition from #385. The skill itself is not going away — it moved somewhere it actually works.

Why this directory did nothing

Claude Code discovers skills from exactly three places: ~/.claude/skills/, .claude/skills/, and plugin bundles. A bare skills/ directory at a repo root is not one of them. So skills/query-plan-analysis/ was nine files of documentation that no agent could load. Merging it looked like shipping a skill; it shipped a folder.

It had also already drifted. Its SKILL.md tells the agent to resolve scripts/extract.py against a repo path — which is wrong the moment the skill is installed as a plugin, because the install location is unguessable.

Where it went

erikdarlingdata/claude-plugins, as a proper Claude Code plugin in a marketplace repo:

/plugin marketplace add erikdarlingdata/claude-plugins
/plugin install query-plan-analysis@erikdarling

Verified end to end against the real remote, not a local directory: marketplace added, plugin installed and enabled, extractor runs from the installed cache.

Why not just promote it to main here

/plugin marketplace add owner/repo fetches the repo's default branch. Reaching main in this repo means a dev -> main PR, and:

  • check-version-bump.yml requires a version bump on any such PR
  • release.yml fires on that PR closing, building installers and Velopack packages

So hosting the marketplace here would have forced a v1.15.1 release and pushed an auto-update to every 1.15.0 user for a change containing zero application code. skills/ is referenced by no .csproj, no installer, and no workflow.

No coupling left behind

The commit message on this branch claims the skill's references/timing.md is coupled to PlanAnalyzer.Timing.cs and will silently drift. That overstates it, and the claim is withdrawn.

timing.md was checked against that file while being written, but it does not depend on it. Both independently encode SQL Server showplan semantics — row-mode operator times cumulative, batch-mode standalone, exchange operators accumulating downstream wait time, thread 0 as coordinator, the cardinality estimator's fixed guess selectivities. Those are properties of SQL Server, not of this codebase, and they have been stable for the better part of two decades. Nothing here needs to track anything there.

Test plan

  • grep for skills/query-plan-analysis across the repo: the only match was inside the deleted directory itself.
  • No .csproj, .props, installer, or workflow references skills/.
  • Build is unaffected; nothing was compiled from this path. CI green (build-and-test, check-branches).

🤖 Generated with Claude Code

Claude Code never discovered this directory. Skills are only loaded from
~/.claude/skills/, .claude/skills/, or a plugin bundle -- a bare skills/ path at
a repo root does nothing. The copy added in #385 was therefore nine files of
documentation that no agent could load, and it had already drifted: its SKILL.md
still resolves scripts/extract.py against a repo path, which is wrong once the
skill is installed as a plugin and its directory is unguessable.

The skill now ships from erikdarlingdata/claude-plugins as a Claude Code plugin:

    /plugin marketplace add erikdarlingdata/claude-plugins
    /plugin install query-plan-analysis@erikdarling

It was moved out rather than promoted here because reaching this repo's default
branch requires a dev -> main PR, which auto-fires release.yml and demands a
version bump -- shipping a Velopack auto-update to every user for a change
containing no application code.

One coupling to keep in mind: the skill's references/timing.md is transcribed
from src/PlanViewer.Core/Services/PlanAnalyzer.Timing.cs and NodeTimeAttribution.cs
(row-mode cumulative vs batch-mode standalone times, exchange operators
accumulating downstream waits, per-thread rather than cross-thread subtraction).
If those semantics change, update the skill repo; nothing will catch the drift.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 46a474a into dev Jul 10, 2026
3 checks passed
@erikdarlingdata erikdarlingdata deleted the chore/remove-inert-skill-copy branch July 10, 2026 02:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant