setup
Verify and configure the improvement plugin for this repository. check (default) inspects the .claude/improvement.md config cascade read-only across all three layers, user-global, team, personal override, and reports the effective evidence-source configuration: which layers exist, what churn window and exclusion patterns resolve, and which Tier 2 MCP telemetry sources are declared. apply interviews the user and writes the team file. Zero config is a valid state. Tier 0 evidence needs nothing configured. Use when: 'set up improvement', 'configure improvement', 'is improvement configured', 'improvement setup', 'declare a telemetry source for the improvement finder', 'tune churn exclusions', or /improvement:find reports Tier 2 as an evidence gap to close. Re-runnable. Safe to invoke again to reconfigure.
- License 许可
- MIT
- 最近更新
- 2026-11-15
- Stars
- ★ 30
- Forks
- 7
01 前言 Front Matter
- description
- Verify and configure the improvement plugin for this repository. check (default) inspects the .claude/improvement.md config cascade read-only across all three layers, user-global, team, personal override, and reports the effective evidence-source configuration: which layers exist, what churn window and exclusion patterns resolve, and which Tier 2 MCP telemetry sources are declared. apply interviews the user and writes the team file. Zero config is a valid state. Tier 0 evidence needs nothing configured. Use when: 'set up improvement', 'configure improvement', 'is improvement configured', 'improvement setup', 'declare a telemetry source for the improvement finder', 'tune churn exclusions', or /improvement:find reports Tier 2 as an evidence gap to close. Re-runnable. Safe to invoke again to reconfigure.
- argument-hint
- [check|apply]
- user-invocable
- true
- disable-model-invocation
- true
03 SKILL.md 正文
Purpose
Verify and manage the consuming repo's tracked evidence-source config at
.claude/improvement.md, so /improvement:find resolves Tier 2 telemetry sources and churn
tuning from a declared contract instead of having nothing to consult.
The config is optional in every layer: with none, the finder runs fully on Tier 0 repo-native
evidence with the bundled churn defaults, and Tier 2 is a recorded evidence gap, so total
absence is a reported INFO, never a FAIL. The key contract, layer paths, and merge semantics
live in ${CLAUDE_PLUGIN_ROOT}/reference/config.md (the single home. This skill implements
that contract and does not restate it).
Actions
Two actions only. No argument or check runs the read-only check; apply runs the check first,
then the interview-and-write flow. Any other argument is an error naming these two actions.
The config cascade
Three layers, resolved user-global (~/.claude/improvement.md) → team
(.claude/improvement.md, tracked) → personal override (.claude/improvement.local.md,
gitignored), merged per the semantics declared in
${CLAUDE_PLUGIN_ROOT}/reference/config.md: per-key override for scalars, union for
churn_exclude, per-source-name merge for evidence_sources with an empty-body opt-out. This
skill writes only the team file; changes to the user-global layer or the personal override are the
user's to make. Anchor every repo-relative read at the repo root (${CLAUDE_PROJECT_DIR} when
set, otherwise git rev-parse --show-toplevel), never at the CWD.
check (read-only)
Inspect the effective merged config and report a PASS/FAIL/INFO table with one remediation line
per FAIL. Modify nothing, and do NOT run a scan. That is /improvement:find.
- Layer presence. Load every layer you can access and report which exist. Look up the user-global layer with one Read of the literal path
~/.claude/improvement.md,~kept; never Glob for it, spell out a home directory, or search the home tree. A Read that finds no file means the layer is absent. All absent → INFO: the finder uses bundled defaults and records Tier 2 as an evidence gap;applywrites.claude/improvement.mdto declare sources. When a layer outside the repo (the user-global base) cannot be read, WARN it was not considered rather than presenting the readable layers as the whole effective config. - Effective configuration. Report the merged result and which layer supplied each value:
the effective
churn_window, whether bundled exclusion defaults are on, declaredchurn_excludeadditions, and everyevidence_sourcesentry (name,mcp_server,kind, scope), including entries a later layer opted out, reported as removed, not broken. A malformed layer degrades soft: name it, resolve as if absent, report the parse error. - Key validity. Each
evidence_sourcesentry names anmcp_server; an entry missing it is FAIL, naming the entry. Where the session can enumerate available MCP servers, note (INFO) any declared server not currently available. At find-time that source becomes an evidence-gap line, which may be expected on this machine. - Tracked, not ignored. A present team file must be committed to be team-shared, and
"not ignored" is not "tracked". Probe both:
git check-ignore -v .claude/improvement.md(non-empty result is FAIL with the matching pattern) ANDgit ls-files --error-unmatch .claude/improvement.md(non-zero exit is FAIL: the file is present but untracked, the state immediately afterapplywrites it, so teammates will not receive it until it is committed; report "untracked, commit it" and, if it is staged but uncommitted, say that instead viagit diff --cached --name-only). The.local.mdpersonal override is expected to be gitignored, a personal override that is tracked or staged is FAIL (a personal deviation can reach team history); an ignored personal override is INFO. - Other-layer divergence. INFO: when the personal override or user-global layer changes the team file's
effect (a different window, extra exclusions, an added or opted-out source), say so
explicitly, since
applywrites only the team file.
apply (idempotent)
Run check, then interview and write the team file. Proceed non-interactively where the
invocation and the repo make values unambiguous; ask only where a value genuinely needs the
user.
- Read the effective config first, across all layers, and present the merged baseline with
per-layer provenance. Exactly as
checkstep 2 reports it. When a higher layer's opt-out or override shapes the effective result, warn that editing the team file alone will not change what this machine resolves, and point at the owning layer. Nothing is dropped without the user confirming. - Draft defaults from the repo. Before asking: propose
churn_excludeadditions from what actually exists (generated/build output trees, snapshot or designer files not covered by the bundled defaults, theexcludesERE in${CLAUDE_PLUGIN_ROOT}/skills/find/context/hotspots.md: one Read of that file, never Glob or Grep the plugin directory); keepchurn_windowat the bundled default unless the repo's history is young or the user says otherwise; and draftevidence_sourcescandidates from the MCP servers the consumer has configured that plausibly carry telemetry, a candidate is a proposal for the user to confirm, never an assumption. No plausible source and none volunteered is a fine outcome: write the churn keys only, and say Tier 2 stays a declared gap. - Interview, one decision at a time: window, exclusions, then each telemetry source (name,
mcp_server,kind, scope, hints) with a recommendation the user accepts, edits, or declines. - Write the team file in the file format defined by
${CLAUDE_PLUGIN_ROOT}/reference/config.md, a fenced YAML block holding only the keys the user confirmed. Never write a vendor-specific default the user did not declare. - Verify after writing. Re-run the
checkprobes on the written file. BOTHgit check-ignore -v .claude/improvement.md(surface a matching pattern and offer a.gitignorefix) ANDgit ls-files --error-unmatch .claude/improvement.md(non-zero exit means the file is un-ignored but still untracked, the guaranteed state right after this step writes it, so report "written but untracked: commit it to share with the team", never success). Then offer the personal override convention: personal overrides go in.claude/improvement.local.md; recommend the consumer add the recursive.claude/**/*.local.*line to.gitignoreif not already covered. But never edit their.gitignoreyourself.
Re-running apply after everything passes changes nothing and reports "already configured".
Output
check: the PASS/FAIL/INFO table plus the effective evidence-source configuration with
per-layer provenance. apply: a tracked .claude/improvement.md, the re-run check result, and
one paragraph on what was written and how to re-run this setup to reconfigure.
What this skill does NOT do
- Run an improvement scan. That is
/improvement:find;checkonly inspects config. - Install or configure MCP servers. It declares which configured server carries telemetry; provisioning the server is the consumer's own MCP setup.
- Write the user-global layer, the
.local.mdpersonal override, or the consumer's.gitignore. Team file only; everything else is recommended, not written. - Write machine-local state. Configuration lives in the consumer's tracked file, never in the plugin directory or the plugin data directory.
Gotchas
- All layers absent is healthy. Tier 0 evidence needs no config; do not manufacture a FAIL (or a config file) for a repo that has not opted into Tier 2 or churn tuning.
- CWD is not the repo root. Invoked from a subdirectory, a CWD-relative read finds a
nonexistent
<subdir>/.claude/improvement.mdand silently reports an absent config. Anchor at the root in every self-contained shell call. - The team file is the only thing
applywrites. An effective value contributed by the personal override or user-global layer cannot be changed here; say which layer owns it instead of writing a team value that the higher layer will keep overriding. - No git verdict on the user-global layer.
git check-ignoreagainst a path outside the worktree is meaningless (or confidently wrong when the home directory is itself a repo); the tracked/ignored probes apply to the two in-repo layers only.
04 同仓库更多 Skills
track
Backlog reads through the bound tracker: search open and closed items, view one item with its comments and state history. Use when another skill searches or reads tracker items.
reviewer-media
Reviewer media for one pull request: decides whether it needs a narrated walkthrough, builds the storyboard from /review:explain-change's digest, has /explainer-video:produce render it and hands the manifest to /source-control:pull-request media. Use when asked for 'reviewer media', 'a walkthrough video for this PR', 'a produced video of this change', or when pull-request ready or monitor hands a PR over.
route
Model and effort per agent role (orchestrator, worker, verifier, retrieval) for a multi-agent run, resolved through the bundled defaults and the user, team and personal override config layers into fenced JSON with single-agent and fan-out variants and the layer behind each value. Use when asked 'which model for the subagents', 'route the roles' or 'model routing', or before a skill passes a role's model on a spawn.
route
Model and effort per agent role (orchestrator, worker, verifier, retrieval) for a multi-agent run, resolved through the bundled defaults and the user, team and personal override config layers into fenced JSON with single-agent and fan-out variants and the layer behind each value. Use when asked 'which model for the subagents', 'route the roles' or 'model routing', or before a skill passes a role's model on a spawn.
principles
Module-design vocabulary for architecture findings, and the checks built on it. Use when: 'what is a deep module', 'what is a seam', 'deep vs shallow module', 'what is the deletion test', 'leverage and locality', 'module design vocabulary', 'which word do we use for X in architecture findings'. Scanning a codebase for friction is /architecture:improve.
write
Structured five-field bug report (title, steps to reproduce, expected vs actual, justified severity, suggested fix location) from an informal description, read-only. Use when the user names a defect they observed, or asks for one written up ('report a bug', 'file a bug', 'write this up as a bug').