chore(claude-ops): add re-runnable setup action for the registry_dir seam - #114
Conversation
…seam
claude-ops exposes the registry_dir userConfig seam but shipped no
setup/configure action, violating the extensibility contract's
"Setup action — every configurable plugin ships one".
Add skills/setup/SKILL.md: an idempotent, re-runnable setup skill that
presents the binary registry-location choice (per-machine
${CLAUDE_PLUGIN_DATA} default vs in-repo git-tracked registry_dir) and
persists the decision to project-scope .claude/settings.json under
pluginConfigs["claude-ops@melodic-software"].options.registry_dir,
following the convention-resolution ladder and the knowledge/setup
exemplar. Bump plugin version 0.2.0 -> 0.3.0 (new skill = minor) and
list setup in the README skills table + Configuration section.
The #1391 telemetry-sink seam is not present in claude-ops's plugin.json
yet; when it lands, this same setup action should be extended to cover it.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_d2a39290-0a68-4330-8ac1-a1d661d02397) |
|
Claude finished @kyle-sexton's task in 1m 53s —— View job PR Review
SummarySolid addition that closes the extensibility-contract gap cleanly. The binary-choice interview design is well-reasoned (since Bug —
|
There was a problem hiding this comment.
Stale comment
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 662a9e229e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
… all scopes Codex PR review (P2): choosing per-machine mode while only removing the project-scope registry_dir leaves a User- or Local-scope value as the effective config, so claude-troubleshooting keeps using the in-repo registry. Step 3 now requires the effective value to be unset across all scopes: remove project scope, and if another scope still supplies a value, name it and guide removal there (the skill only writes project scope) — never report per-machine until no scope supplies a value.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_9cd887bb-f7fd-4683-9008-534aebad9c0d) |
|
Claude finished @kyle-sexton's task in 1m 30s —— View job PR Review
SummaryThe One concrete bug from the first-round review is still open. Bug —
|
There was a problem hiding this comment.
Stale comment
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" (usage limit reached) and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_4dba27da-4db9-40f3-93f6-3168e54bae25) |
|
Claude finished @kyle-sexton's task in 1m 27s —— View job PR Review
One remaining gate (flagged in both prior reviews, still unresolved)File: The
Neither - "description": "Claude Code operations toolkit of three skills: claude-observability (...), claude-troubleshooting (...), and claude-code-changelog (...).",
+ "description": "Claude Code operations toolkit of four skills: claude-observability (...), claude-troubleshooting (...), claude-code-changelog (...), and setup (interactive, idempotent configuration of the registry_dir seam).",Everything else is in good shapeThe Residual minor notes (no action required before merge):
The |
There was a problem hiding this comment.
Stale comment
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" (usage limit reached) and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1730515e6f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…ne opt-out
Codex PR review (P2, follow-up): the prior fix banned an empty project-scope
registry_dir, which made "per-machine for this repo only" impossible when a
User-scope global default exists — the only path offered was deleting the User
value, changing every other repo. claude-troubleshooting already treats an empty
value as unset and falls back to ${CLAUDE_PLUGIN_DATA} (its SKILL.md registry-
location rule), so step 3 now writes an empty string ("") at project scope as the
repo-local opt-out when a higher-scope value is in effect (project precedence
shadows the global without disturbing it), and only removes the project key when
no higher scope supplies a value. Removing the User value is reserved for opting
out globally.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_6fe5dc88-25b4-43c9-b7ba-a7f83371776f) |
|
Claude finished @kyle-sexton's task in 2m 26s —— View job PR Review
|
There was a problem hiding this comment.
Stale comment
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" (usage limit reached) and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a0c179b611
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…ll scopes Codex PR review (P2, follow-up): with Local > Project > User precedence, an empty project-scope value cannot override a Local-scope registry_dir. Step 3 now branches on WHICH scope supplies the effective value: User-only -> project "" shadows it; Project -> remove (or "" to also suppress a surfacing User value); Local -> the opt-out must happen in the local overlay itself (Local outranks Project), edited with consent or guided. Never write an empty value at a scope outranked by a scope still holding a value.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_d0a23704-0a4e-4a1f-b8ef-45ade4c98358) |
|
Claude finished @kyle-sexton's task in 1m 31s —— View job PR Review
|
There was a problem hiding this comment.
Stale comment
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_847383ec-d11b-4ad1-9e69-364c14df16aa) |
|
Claude finished @kyle-sexton's task in 2m 4s —— View job PR Review
One remaining gate —
|
There was a problem hiding this comment.
Stale comment
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 89b47cd334
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Codex PR review (P2, follow-up): the "does NOT do" section blanket-forbade writing machine-local state, contradicting step 3's Local-scope branch and step 4, which legitimately clear a local registry_dir override. Reworded the prohibition to its real intent — never hide config inside the plugin install or data directory — and made explicit that editing .claude/settings.local.json is allowed only to clear a local override, only with the consumer's consent.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_c5f35d14-ed73-4510-b2df-d0f9608fa52f) |
Codex PR review (two P2s): the in-repo branch only wrote the project value. (1) A Local-scope registry_dir (incl. an empty per-machine override) outranks it under Local > Project > User, so the shared location would not take effect — step 3 now prompts to update/clear the shadowing override with consent, or states in the summary that the effective location is unchanged. (2) If the chosen path is gitignored the registry never becomes team-shared despite the "git-tracked" framing — step 3 now runs `git check-ignore -v` on the target and offers to fix the ignore rule or pick a tracked directory before reporting success.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_a6aa5e61-a563-41fd-9db2-6d30c42e5263) |
|
Claude finished @kyle-sexton's task in 2m 25s —— View job PR Review
|
There was a problem hiding this comment.
Stale comment
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" (usage limit reached) and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4f16211c45
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
… User scope Codex PR review (P2): the "highest scope holding a value" primitive contradicted the User-only branch — for a User-only value the highest scope is the global User setting, and blanking it changes every other repo. Restated the primitive to write "" at the Local scope if present, otherwise Project: a repo-local empty value shadows any lower scope (incl. the User default) and reads as the fallback without ever touching the shared User setting.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_a7bdebd0-d0ae-47ee-9123-9c49462ea2b5) |
|
Claude finished @kyle-sexton's task in 1m 27s —— View job PR Review
|
There was a problem hiding this comment.
Stale comment
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" (usage limit reached) and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
The setup skill had grown an exhaustive scope-precedence decision tree plus a gitignore check — beyond the issue's scope and beyond the knowledge/setup exemplar it models, which handles the same project-relative-dir userConfig seam in one delegating paragraph. Collapse persistence back to a single paragraph that states the Local > Project > User precedence and delegates the judgment to the runtime agent (write project scope; if a higher-precedence override shadows it, say so and offer to clear it with consent). Trim the does-NOT-do section to match.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_627bc7d7-9f8e-4f81-8686-3dfb33eae7b7) |
|
Claude finished @kyle-sexton's task in 2m 38s —— View job PR Review
|
There was a problem hiding this comment.
Stale comment
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" (usage limit reached) and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_a3f6f44d-1bdf-4e9e-813f-d75da2e04e87) |
|
Claude finished @kyle-sexton's task in 3m 7s —— View job PR Review
Two changes needed before mergeBoth are confirmed at 1. Bug —
|
There was a problem hiding this comment.
Stale comment
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" (usage limit reached) and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 43a762c711
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_24e47fd7-8a55-4ac6-91a0-0a8ecc45efe8) |
|
Claude finished @kyle-sexton's task in 3m 38s —— View job PR Review
One remaining gate —
|
There was a problem hiding this comment.
Stale comment
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" (usage limit reached) and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_aa06984b-902a-45cc-adad-b5815a7f18cb) |
|
Claude finished @kyle-sexton's task in 2m 5s —— View job PR Review
One change needed before merge —
|
There was a problem hiding this comment.
Risk: low. Not approving: Cursor Bugbot completed with status "skipping" and did not produce a clean review comment. Human review is needed before merge; no reviewers were assigned because the PR author is the sole human repository contributor.
Sent by Cursor Approval Agent: Pull Request Router and Approver
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e72546702e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -0,0 +1,82 @@ | |||
| --- | |||
| name: setup | |||
There was a problem hiding this comment.
Bump the plugin version for setup delivery
This commit adds a new user-invocable /claude-ops:setup skill, but plugins/claude-ops/.claude-plugin/plugin.json remains at 0.3.0, the same version already present in the parent commit. The repo playbook states that plugin.json version is the marketplace update cache key (docs/MIGRATION-PLAYBOOK.md:206-208), so consumers who already have claude-ops 0.3.0 will not receive this new setup action via /plugin marketplace update; bump the plugin version with the new shipped skill.
Useful? React with 👍 / 👎.


What
Adds a re-runnable
setup/configureskill to theclaude-opsplugin, closing its extensibility-contract gap: it exposed theregistry_diruserConfigseam but shipped no setup action.Changes
plugins/claude-ops/skills/setup/SKILL.md— new idempotent setup skill. Presents the registry-location decision as a binary (per-machine${CLAUDE_PLUGIN_DATA}default vs. in-repo git-trackedregistry_dir), reads the effective value narrowly across scopes first (secret-safejqon the single key), and persists the choice to project-scope.claude/settings.jsonunderpluginConfigs["claude-ops@melodic-software"].options.registry_dir. Follows the convention-resolution ladder and models on the shippedknowledge/setupexemplar.plugins/claude-ops/.claude-plugin/plugin.json— version0.2.0→0.3.0(new skill = minor).plugins/claude-ops/README.md— listsetupin the skills table + intro, and point the Configuration section at/claude-ops:setup.Design notes
registry_dirunset is a legitimate default (per-machine fallback), so the interview leads with the binary choice rather than mechanically inferring a path — only the in-repo branch asks for a directory.claude-ops'splugin.jsonyet; per the issue's coordination note, when it lands this same setup action should be extended to cover it (one setup action per plugin).Verification
claude plugin validate plugins/claude-ops→ passedscripts/validate-plugins.sh(all manifests + catalog,--strict) → passedscripts/run-plugin-tests.shscope unaffected (no*.test.shadded)Refs melodic-software/medley#1432
Note
Low Risk
Documentation-only skill and README changes; no runtime scripts or registry logic modified in this diff.
Overview
Adds
/claude-ops:setup, closing the gap whereregistry_dirwas documented inuserConfigbut had no guided way to set it.The new
skills/setup/SKILL.mddefines an idempotent, interactive flow: read the effectiveregistry_diracross Local → Project → User settings (narrowjqon that key only, avoiding secrets in.claude/settings.local.json), interview per-machine (unset →${CLAUDE_PLUGIN_DATA}) vs in-repo (project-relative path), then persist to project.claude/settings.jsonunderpluginConfigs["claude-ops@melodic-software"].options.registry_dirwhile calling out when a local override still shadows the team value.README updates introduce setup in the plugin blurb, add a skills-table row, rename the section to Skills, and point the Configuration section at
/claude-ops:setupfor re-runnable configuration.Reviewed by Cursor Bugbot for commit e725467. Bugbot is set up for automated code reviews on this repo. Configure here.