Skip to content

Commit 96c3e42

Browse files
wkoutreclaude
andauthored
fix(skill-management): remove broken agent refs and widen audit recall (#570)
* fix(skill-management): Opus 5 migration fixes for skill-doctor and migrate-config-to-opus-5 Remove three phantom agent references, make the trigger-quality subagent dispatch conditional, make the analysis pass coverage-first, and add deliverable-length lines to both output sections. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(skill-management): balance the analysis rubric's precision guard analysis-rubric.md opened with "don't invent problems" and nothing on the other side. The intent is right, but in an auditing prompt an unbalanced precision instruction reads to Opus 5 as license to drop anything it is uncertain about -- which is a recall filter applied at discovery time. Added the coverage counterweight: the guard constrains what you assert, not what you look at. Report every issue found, mark the uncertainty, and let the reader filter. A silently omitted real finding fails the same way a fabricated one does, and is harder to notice. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(skill-management): drop PROACTIVELY from skill-doctor's description audit-patterns.md lists "PROACTIVELY in agent descriptions" as a Delta 2 smell to search for, and skill-doctor's own description used it. Shipping the pattern the plugin tells users to flag undercuts the guidance. The trigger itself is kept -- skill-doctor still applies after a repeatable multi-step workflow, especially right after a PR. Only the nudge word is gone. The PR-time prompt is delivered by hooks/pr-skill-doctor-prompt.cjs, not by this description, so nothing is lost by removing it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1 parent a4555f2 commit 96c3e42

6 files changed

Lines changed: 42 additions & 22 deletions

File tree

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ All plugins follow semantic versioning (semver). Key versioning rules:
228228
| development-planning | 2.0.7 |
229229
| development-pr-workflow | 2.4.0 |
230230
| development-productivity | 2.4.1 |
231-
| skill-management | 1.2.0 |
231+
| skill-management | 1.3.0 |
232232
| spec-workflow | 2.1.0 |
233233
| uniswap-integrations | 2.6.1 |
234234

packages/plugins/skill-management/.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "skill-management",
3-
"version": "1.2.0",
3+
"version": "1.3.0",
44
"description": "Audit, map, mine, and improve your Claude Code skills, agents, and slash commands. Inventories your whole customization surface, flags overlaps/gaps/weak triggering descriptions, and mines sessions for workflows worth codifying into new skills or agents. Also migrates full Claude Code configs (CLAUDE.md, rules, settings, hooks, CI scripts) for new model generations like Opus 5.",
55
"author": {
66
"name": "Uniswap Labs",

packages/plugins/skill-management/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ The hook is a dependency-free Node script invoked via `node ${CLAUDE_PLUGIN_ROOT
4646

4747
`/skill-map`, `/skill-mine`, and `/skill-new` are thin prompts that invoke the **skill-doctor** skill
4848
in a specific run mode. The skill does the _finding_ — what to add, merge, fix, or codify — then hands
49-
the deep work to the tools that own it (`skill-creator` for drafting/evals, `agent-optimizer` /
50-
`prompt-engineer` for agent tuning). It never auto-applies a change: it proposes a prioritized menu and
49+
the deep work to the tools that own it (`skill-creator` for drafting/evals,
50+
`development-productivity:prompt-engineer-agent` for agent tuning). It never auto-applies a change: it proposes a prioritized menu and
5151
lets you pick. Personal config under `~/.claude/{skills,agents,commands}` is edited in place; skill /
5252
agent / command files that live inside a git repo are delivered as a **draft PR** off the repo's
5353
default branch.

packages/plugins/skill-management/skills/migrate-config-to-opus-5/SKILL.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,5 @@ Present the "user decision" findings via AskUserQuestion (batch related ones; re
7171
## Output
7272

7373
End with: scope migrated, a per-commit list of what changed and why, findings deliberately left alone (with the policy reason), anything out of reach (other machines, external repos), and the checkpoint date.
74+
75+
Keep it to what the user has to act on — one line per commit, one line per left-alone finding. No restated summary of the audit, no filler sections.

packages/plugins/skill-management/skills/skill-doctor/SKILL.md

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ description: >
88
skills do I have", "suggest skill improvements", "are any of my skills
99
redundant", "clean up my skills", "turn this into a skill", "should this be a
1010
skill or an agent", "codify this workflow", or invokes /skill-map, /skill-mine,
11-
or /skill-new. Also use PROACTIVELY after finishing a multi-step workflow that
12-
the user is likely to repeat (especially right after opening a PR) to ask
13-
whether it should become a skill or agent. It inventories every
11+
or /skill-new. Also applies after finishing a multi-step workflow the user is
12+
likely to repeat (especially right after opening a PR), to ask whether it
13+
should become a skill or agent. It inventories every
1414
skill/agent/command across the user's own dirs AND all installed marketplaces,
1515
flags overlaps / gaps / weak triggering descriptions, and — when there's real
1616
prior work in the session — proposes new or edited skills/agents grounded in
@@ -26,11 +26,11 @@ the deep work to the tools that already own it. **Reuse, don't reinvent:**
2626
- **Creating or iterating a skill (drafting, evals, description optimization, packaging)** → invoke the `skill-creator` skill if it's
2727
installed (it ships in Anthropic's agent-skills marketplace and bundles
2828
`improve_description.py`, `run_loop.py`, `package_skill.py`, `quick_validate.py`).
29-
- **Tuning an agent's prompt** → delegate to the `agent-optimizer` or `prompt-engineer` agents.
30-
- **Scoring an agent's capabilities / team fit** → the `agent-capability-analyst` agent.
31-
- **Cataloging agents**the `claude-agent-discovery` agent.
29+
- **Tuning an agent's prompt** → delegate to the
30+
`development-productivity:prompt-engineer-agent` agent. Verify the name resolves
31+
before dispatching; if that plugin isn't installed, do the tuning inline.
3232
- **"This is really a standing rule, not a skill"** → write it into the relevant
33-
`CLAUDE.md` (e.g. via an `update-claude-md` skill) or the project's memory store.
33+
`CLAUDE.md` (e.g. via the `/update-claude-md` command) or the project's memory store.
3434
- **Auditing / cleaning up the memory store itself** (orphans vs `MEMORY.md`, stale
3535
memories, dedupe, "scope memories into skills") → the `memory-doctor` skill if
3636
installed, the sibling of this one for the memory surface. skill-doctor _reads_
@@ -108,21 +108,29 @@ Reason over the map (not the raw files). Produce a **prioritized, numbered list*
108108
of suggested improvements. For each: target file, problem, proposed change, and
109109
whether it's `writable`. Cover:
110110

111-
- **Overlaps / duplicates.** Use the `duplicate_names` and
111+
The script's flags are a starting point, not the boundary of the audit. Read the
112+
whole map and report every genuine issue you see, including ones the script did
113+
not flag — the flags are keyword and threshold heuristics, so a real overlap or a
114+
weak description can sit in an unflagged row. Rank at the end; do not filter
115+
during discovery.
116+
117+
- **Overlaps / duplicates.** Start from the `duplicate_names` and
112118
`near_duplicate_descriptions` flags. Ignore `mirror-only` duplicates
113119
(marketplace↔plugin-cache are just install mirrors of the same upstream item).
114120
Focus on `[editable]` collisions and genuinely distinct skills doing the same
115121
job. Recommend a canonical one + merge/deprecate the rest.
116122
- **Gaps.** Recurring needs with no skill. Cross-reference the project's memory
117123
store if one exists — many feedback memories encode repeated corrections that
118124
may deserve a skill.
119-
- **Trigger-quality.** Use `weak_or_missing_description` and
120-
`no_trigger_language`. For the handful of **writable** items you'll actually
121-
propose changing, deep-read them **via a subagent** (Explore or general-purpose)
122-
so main context stays bounded — ask the subagent to return the current
123-
description + body summary + a tightened description proposal. For rigorous
124-
triggering work, hand the item to skill-creator's `improve_description.py` /
125-
`run_loop.py` loop.
125+
- **Trigger-quality.** Start from `weak_or_missing_description` and
126+
`no_trigger_language`, and flag any other description that reads weak on the
127+
rubric. Deep-read the **writable** items you'll actually propose changing. Read
128+
them directly when there are only a few (a handful of reads is cheaper inline
129+
than a dispatch); delegate to a single Explore or general-purpose subagent only
130+
when the set is large enough that reading it inline would crowd out main
131+
context — ask that subagent to return the current description + body summary +
132+
a tightened description proposal per item. For rigorous triggering work, hand
133+
the item to skill-creator's `improve_description.py` / `run_loop.py` loop.
126134
- **Oversized bodies.** `oversized_body` items (>500 lines) are candidates for
127135
progressive disclosure (move detail into `references/`).
128136

@@ -153,11 +161,14 @@ turn that motivates it. Vague "you could add a skill for X" proposals aren't use
153161
### Step 5 — Present & apply (all modes)
154162

155163
Show the consolidated, prioritized menu. Mark each item `[editable]` or
156-
`[read-only]`. Let the user choose. Then, for accepted items only:
164+
`[read-only]`. Keep each entry to a line or two — target, problem, proposed change
165+
— so the menu stays scannable; detail belongs in the follow-up on the items the
166+
user picks. Let the user choose. Then, for accepted items only:
157167

158168
- New/iterated skill → `skill-creator` skill.
159-
- Agent prompt tuning → `agent-optimizer` / `prompt-engineer` agents.
160-
- Standing rule → an `update-claude-md` skill or a memory file.
169+
- Agent prompt tuning → the `development-productivity:prompt-engineer-agent` agent
170+
(inline if that plugin isn't installed).
171+
- Standing rule → the `/update-claude-md` command or a memory file.
161172
- Direct small edits (e.g. a tightened description):
162173
- under `~/.claude/…` (non-git) → edit in place; show the before/after first.
163174
- inside a git repo → open a **draft PR** per "Delivering changes once

packages/plugins/skill-management/skills/skill-doctor/references/analysis-rubric.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
Heuristics for the analysis + mining passes. Keep judgments concrete and tied to
44
the inventory data; don't invent problems.
55

6+
Precision and coverage are both required, and they pull against each other.
7+
"Don't invent problems" constrains what you _assert_, not what you _look at_
8+
report every issue you actually found, including ones you are unsure about or
9+
judge low-severity, and mark that uncertainty rather than dropping the finding.
10+
An audit that silently omits a real issue fails the same way as one that
11+
fabricates a fake one, and the omission is harder to notice.
12+
613
## What a good triggering description looks like
714

815
The `description` is the _only_ thing Claude sees when deciding whether to

0 commit comments

Comments
 (0)