"Verify claude-ops's personal path configuration for this repository — where the known-issues registry and the skill-usage log resolve — and explain how to change them through Claude Code. Use when: 'set up claude-ops', 'configure claude-ops', 'claude-ops setup', 'where does the known-issues registry live', or 'where is skill usage logged'. Actions: check (read-only verification, default) | apply (route a reconfiguration once you've chosen a destination). Re-runnable and safe."
Resources
1Install
npx skillscat add melodic-software/claude-code-plugins/plugins-claude-ops-skills-setup Install via the SkillsCat registry.
We need to produce a 2-3 sentence plain-text summary, objective, factual, no marketing, no bullet points, no headings, no markdown. At most 60 words. Must explain what skill does, what problem it solves, when to use. No quotes. Just the summary text. We need to ensure 2-3 sentences, plain text, no formatting. Let's craft about 45-55 words. Possible summary: "This skill checks and optionally reconfigures the personal paths used by claude‑ops for the known‑issues registry and skill‑usage log. It resolves where those directories are defined and provides a way to change them via Claude Code.
Purpose
Thin check-centric setup per the uniform contract: check inspects and reports the effective personal
path options, apply resolves what it found. registry_dir and skill_usage_dir are personaluserConfig scalars owned by Claude Code's native configuration surface — Claude Code prompts for them
when the plugin is enabled, stores non-sensitive options in user settings, and ignores pluginConfigs
entries in project and local settings on current releases (≥ 2.1.207). This skill never writes them;apply verifies and routes.
Official contract (verified 2026-07-18):
https://code.claude.com/docs/en/plugins-reference#user-configuration.
Action routing: no argument or check runs the check; apply runs the check first, then the
reconfiguration guidance below. Both are non-interactive — never prompt when the action is given.
check (read-only)
Read the rendered ${user_config.registry_dir} and ${user_config.skill_usage_dir} values from this
skill — never inspect or edit settings files or pluginConfigs directly. Report a PASS/FAIL/INFO
table, one remediation line per FAIL. Do not modify anything.
registry_dir— report the effective known-issues-registry destination:- empty or unexpanded: INFO — the registry uses
${CLAUDE_PLUGIN_DATA}(the zero-config default). - a configured value: validate containment (below). PASS when contained — it resolves from the
project root. FAIL when uncontained.
- empty or unexpanded: INFO — the registry uses
skill_usage_dir+skill_usage_scope— report the effective skill-usage-log destination:- scope empty, unexpanded, or
repo: the store resolves under the project root; emptyskill_usage_diris INFO — the log uses.claude/observability(the zero-config default), kept
out ofgit statusby a machine-local.git/info/excludeentry unless${user_config.skill_usage_git_exclude}rendersfalse. - scope
user: INFO — the same contained subpath resolves under$HOME(default~/.claude/observability), one cross-repo store. - scope
data-dir: INFO — the store is plugin-owned at${CLAUDE_PLUGIN_DATA}/skill-usage/<repo-slug>;skill_usage_diris ignored. - any other scope value: FAIL — the hooks fall back to
repowith a one-time advisory; remediate
to a valid value (repo|user|data-dir). - a configured
skill_usage_dir(repo/user scopes): validate containment under the scope root.
PASS when contained; FAIL when uncontained.
- scope empty, unexpanded, or
- Containment — a configured value must be a contained relative path under its base (the project
root forregistry_dirand repo-scopeskill_usage_dir;$HOMEfor user-scopeskill_usage_dir). FAIL any
POSIX/rooted path, Windows drive-qualified or drive-relative path, UNC path, any..segment with
either separator, and any existing symlink path that resolves outside that base. Do not normalize
an invalid value into acceptance, and do not run any operation that would use an invalid destination. - Personal-vs-project — INFO: both options are personal, user-scoped preferences, not tracked team
policy. Note the per-machine-vs-repository-resident tradeoff so the reader can choose inapply.
apply (idempotent)
Run check, then resolve what it found. This skill has no legitimate write of its own — the two
options live in Claude Code's native config surface, which setup must not hand-edit — so apply is
verify-and-route:
- Uncontained value (FAIL): the destination is invalid; do not use it. Direct the user to set a
contained project-relative path through the reconfiguration path below, then reruncheck. - Choosing a destination: if the reader wants the registry per-machine, leave
registry_dirunset
(default${CLAUDE_PLUGIN_DATA}); if repository-resident, recommend a portable contained path,
inspecting the consumer's declared artifact conventions. Same forskill_usage_dir(default.claude/observability). State the tradeoff and let the reader pick — do not prompt. - Reconfiguring a personal option:
/plugin configure claude-ops@<marketplace>(interactive, any time).
Headless:--configonly applies on a fresh install (ignored once installed), so reconfigure viaclaude plugin uninstall claude-ops -s <scope>thenclaude plugin install claude-ops@<marketplace> -s <scope> --config registry_dir=<path>; this
skill never writes user settings orpluginConfigs. Both commands default to-s user— pass
the scopeclaude plugin listreports for this plugin, and run from that project's directory
for aproject/localscope. Defaulting instead uninstalls a separate user-scope record while
the effective install stays in place, so the reinstall lands at a scope that does not load.
Uninstalling also drops the storedpluginConfigsentry, so the reinstall must re-supply
every key whose value should stay non-default — this plugin declares fourteen, and a
reinstall that passes onlyregistry_dirsilently resets the other thirteen (the seven*_audit_enabledtoggles,instructions_loaded_audit_log_session_start,install_new,skill_usage_dir,skill_usage_git_exclude,skill_usage_scope,stdin_read_timeout) to
their manifest defaults. Record the current values before uninstalling; afterwards there is
nothing left to read them from.
After any reconfiguration, rerun check and report both observed effective destinations — never claim
an unobserved change. Re-running apply when both destinations are contained (or defaulted) changes
nothing and reports "already configured".
What this skill does NOT do
- Run known-issues, registry, or observability operations — those are the other claude-ops skills and
have their own documented controls. - Write Claude Code user settings,
pluginConfigs, or the plugin cache. - Invent organization-specific configuration.