Skip to content

fix(setup): preserve install scope in the headless reconfigure recipe (18 plugins) - #1411

Merged
kyle-sexton merged 7 commits into
mainfrom
fix/1406-headless-reconfigure-scope
Jul 26, 2026
Merged

fix(setup): preserve install scope in the headless reconfigure recipe (18 plugins)#1411
kyle-sexton merged 7 commits into
mainfrom
fix/1406-headless-reconfigure-scope

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

This was generated by AI during work-loop execution.

Summary

  • Both halves of the headless reconfigure recipe (claude plugin uninstall <p> then claude plugin install <p>@<marketplace> --config ...) defaulted to -s user. When a plugin is actually installed at project or local scope, that combination silently uninstalls a separate user-scope record while the effective project/local install keeps loading, and the reinstall lands at a scope that does not load.
  • Both commands now carry -s <scope>, sourced from what claude plugin list reports per plugin — the same fix already merged for session-flow and rate-limit-guard in fix(setup): close the setup-corpus audit's findings and two falsified reference claims #1393.
  • 18 plugins patched, each with a patch version bump and a CHANGELOG entry: actionlint, bash-format, biome-format, claude-ops, desktop-notification, disk-hygiene, eol-normalizer, go-format, guardrails, knowledge, machine-health, markdown-format, planning, powershell-format, ruff-format, skill-quality, source-control, typos-format.

ai-briefing excluded

#1406 named ai-briefing as one of the 19 remaining plugins, but it carries no reconfigure recipe of this shape at all — no uninstall, --config, headless, reconfigur, or /plugin configure anywhere in the plugin (verified by search across the whole plugin directory). There is nothing to fix there for this defect; its active_profile userConfig having no headless-reconfigure guidance at all is a different, unrelated gap.

Does not add -y to the uninstall — verified against the live CLI

#1406's second claimed defect was that a non-TTY claude plugin uninstall requires -y. I live-tested this against claude 2.1.220 (the exact version #1406 cites) before propagating it to 18 more files:

  • Current fetched docs and live --help both scope -y to skipping the --prune confirmation only.
  • Empirically: created a throwaway local marketplace + dummy plugin, installed at -s local, then ran claude plugin uninstall <plugin> -s local < /dev/null (non-TTY, no --prune, no -y) — exit 0, no prompt. Repeated with a populated ${CLAUDE_PLUGIN_DATA} directory (triggers last-scope data deletion) — same result, silent success as documented.

None of these recipes pass --prune, so -y would be a harmless no-op attached to a false rationale. I filed #1410 to track the existing overbroad claim in converge.md and the two already-merged setup skills (session-flow, rate-limit-guard) rather than silently leaving 18 files disagreeing with 2 + a reference doc.

Verification

  • markdownlint-cli2 (repo config): 0 issues across all 36 touched markdown files.
  • skill-quality:check (check-skill.sh) on all 18 touched skills/setup: 18/18 PASS — no new FAILs, no new WARNs (pre-existing WARNs unrelated to this change: missing Gotchas surface on several, source-control's pre-existing soft line-count target).
  • All 18 plugin.json files validated as parseable JSON post-bump.
  • Grep-verified: every touched file's uninstall/install --config pair now carries -s <scope>; no unscoped recipe remains among the 18.

Related

Test plan

  • markdownlint-cli2 clean on all touched files
  • skill-quality:check PASS on all 18 touched setup skills
  • JSON-valid plugin.json for all 18 bumps
  • Manual grep sweep confirms no unscoped recipe remains
  • CI green (pending)

🤖 Generated with Claude Code

… (18 plugins)

Both halves of the uninstall-then-install recipe defaulted to `-s user`. When a
plugin is installed at project or local scope, that combination silently
uninstalled a separate user-scope record while the effective project/local
install kept loading, so the reinstall landed at a scope that does not load.
Both commands now carry `-s <scope>`, sourced from what `claude plugin list`
reports for the plugin — the same fix already applied to session-flow and
rate-limit-guard in #1393.

actionlint, bash-format, biome-format, claude-ops, desktop-notification,
disk-hygiene, eol-normalizer, go-format, guardrails, knowledge, machine-health,
markdown-format, planning, powershell-format, ruff-format, skill-quality,
source-control, typos-format each get a patch bump and CHANGELOG entry.

Does not add `-y` to the uninstall: live-verified against `claude` 2.1.220 (the
version #1406 itself cites) that a non-TTY `claude plugin uninstall` with no
`--prune` completes with exit 0 and no confirmation prompt, even against a
plugin with a populated data directory that triggers last-scope data deletion.
`-y`'s only documented and observed effect is skipping the `--prune`
confirmation, which none of these recipes pass — adding it here would attach a
false non-TTY-requirement rationale to 18 more files. ai-briefing is excluded:
it carries no reconfigure recipe of this shape at all (verified by search), so
there is nothing in it to fix for this defect.

Closes #1406

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dabebf30d4

ℹ️ 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".

Comment thread plugins/source-control/skills/setup/SKILL.md
@claude

claude Bot commented Jul 25, 2026

Copy link
Copy Markdown

Claude encountered an error after 2s —— View job


I'll analyze this and get back to you.

@claude

claude Bot commented Jul 25, 2026

Copy link
Copy Markdown

Claude encountered an error after 2s —— View job


I'll analyze this and get back to you.

@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown

Warning

Automated review did not complete — this is an infrastructure failure, not a review verdict.

Treat any Claude comment on this PR (including a placeholder like "I'll analyze this and get back to you") as incomplete, not "no findings."

Re-running the job, or pushing a new commit, will retry the review.

@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown

Warning

Automated security review did not complete — this is an infrastructure failure, not a review verdict.

Treat any Claude comment on this PR (including a placeholder like "I'll analyze this and get back to you") as incomplete, not "no findings."

Re-running the job, or pushing a new commit, will retry the review.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9913c8795c

ℹ️ 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".

Comment thread plugins/actionlint/skills/setup/SKILL.md
@claude

claude Bot commented Jul 25, 2026

Copy link
Copy Markdown

Claude encountered an error after 2s —— View job


I'll analyze this and get back to you.

@claude

claude Bot commented Jul 25, 2026

Copy link
Copy Markdown

Claude encountered an error after 2s —— View job


I'll analyze this and get back to you.

…onfigure-scope

# Conflicts:
#	plugins/claude-ops/.claude-plugin/plugin.json
#	plugins/claude-ops/CHANGELOG.md
#	plugins/markdown-format/CHANGELOG.md
#	plugins/planning/.claude-plugin/plugin.json
#	plugins/planning/CHANGELOG.md
#	plugins/source-control/.claude-plugin/plugin.json
#	plugins/source-control/CHANGELOG.md
…onfigure-scope

# Conflicts:
#	plugins/source-control/.claude-plugin/plugin.json
#	plugins/source-control/CHANGELOG.md
A scoped reinstall drops the stored pluginConfigs entry, so passing only the
changed key silently resets every omitted option to its manifest default.
The six multi-option plugins' recipes now require capturing the current
values and replaying all of them.

ai-briefing's headless reconfigure recipe was missed by the original sweep
and still defaulted both halves to -s user.
…onfigure-scope

# Conflicts:
#	plugins/claude-ops/.claude-plugin/plugin.json
#	plugins/claude-ops/CHANGELOG.md
@claude

claude Bot commented Jul 26, 2026

Copy link
Copy Markdown

Claude encountered an error after 2s —— View job


I'll analyze this and get back to you.

@claude

claude Bot commented Jul 26, 2026

Copy link
Copy Markdown

Claude encountered an error after 2s —— View job


I'll analyze this and get back to you.

@kyle-sexton
kyle-sexton merged commit 41f95da into main Jul 26, 2026
27 checks passed
@kyle-sexton
kyle-sexton deleted the fix/1406-headless-reconfigure-scope branch July 26, 2026 01:19
kyle-sexton added a commit that referenced this pull request Jul 26, 2026
…sion-flow, rate-limit-guard) (#1443)

*This was generated by AI during work-loop execution.*

## Summary

- The headless-uninstall recipes in three places claimed `-y` is
CLI-required for any `claude plugin uninstall` whose stdin/stdout isn't
a TTY. That claim is overbroad.
- Verified against `claude` 2.1.220 (the version #1406/#1410 both cite):
current fetched docs, live `--help`, and an empirical uninstall test
(throwaway local marketplace + dummy plugin, non-TTY, no `--prune`, no
`-y` → exit 0, no prompt) all agree `-y` only skips `uninstall`'s
`--prune` confirmation.
- None of the three recipes touched here pass `--prune`, so `-y` was a
no-op attached to a false rationale. Removed it and reworded the claim
to the narrower, verified scope in all three sites:
- `plugins/claude-ops/skills/plugins/context/converge.md` (`converge`'s
non-interactive-execution note)
- `plugins/session-flow/skills/setup/SKILL.md` (headless reconfigure
recipe, merged in #1393)
- `plugins/rate-limit-guard/skills/setup/SKILL.md` (headless reconfigure
recipe, merged in #1393)
- Patch version bump + CHANGELOG entry for each of the three touched
plugins (`claude-ops` 0.21.1 → 0.21.2, `session-flow` 0.17.1 → 0.17.2,
`rate-limit-guard` 0.3.0 → 0.3.1).

## Why this is safe

`-y`'s only documented and observed effect is skipping a confirmation
prompt these recipes never trigger (none pass `--prune`), so dropping it
changes no runtime behavior — this is a pure doc-accuracy correction,
consistent with #1406's sibling fix (#1411), which deliberately did not
propagate `-y` or this rationale into the 18 other plugins it touched.

## Verification

- `markdownlint-cli2` (repo config): 0 issues across all 6 touched
markdown files.
- `skill-quality:check` (`check-skill.sh`) on both touched
`skills/setup`: 2/2 PASS — no new FAILs, no new WARNs
(`rate-limit-guard`'s pre-existing "no Gotchas surface" WARN is
unrelated to this change).
- All 3 `plugin.json` files validated as parseable JSON post-bump.
- Grep-verified: no remaining `-y`/TTY reference in any of the three
touched files beyond the corrected sentences.

## Related

- Closes #1410
- #1406 / #1411 — the sibling fix this follow-up completes (18 plugins,
deliberately excluding this claim)
- #1393 — the original merge point for the
`session-flow`/`rate-limit-guard` recipes this corrects

## Test plan

- [x] `markdownlint-cli2` clean on all touched files
- [x] `skill-quality:check` PASS on both touched setup skills
- [x] JSON-valid `plugin.json` for all 3 bumps
- [x] Manual grep sweep confirms no stray `-y`/TTY claim remains
- [ ] CI green (pending)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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.

fix(setup): the headless reconfigure recipe drops install scope and the non-TTY uninstall confirmation in 19 plugins

1 participant