From dabebf30d419c190dc100485ea082494b902f0f3 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Sat, 25 Jul 2026 18:57:42 -0400 Subject: [PATCH 1/2] fix(setup): preserve install scope in the headless reconfigure recipe (18 plugins) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 `, 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 --- plugins/actionlint/.claude-plugin/plugin.json | 2 +- plugins/actionlint/CHANGELOG.md | 12 ++++++++++++ plugins/actionlint/skills/setup/SKILL.md | 10 +++++++--- plugins/bash-format/.claude-plugin/plugin.json | 2 +- plugins/bash-format/CHANGELOG.md | 12 ++++++++++++ plugins/bash-format/skills/setup/SKILL.md | 11 ++++++++--- plugins/biome-format/.claude-plugin/plugin.json | 2 +- plugins/biome-format/CHANGELOG.md | 12 ++++++++++++ plugins/biome-format/skills/setup/SKILL.md | 11 ++++++++--- plugins/claude-ops/.claude-plugin/plugin.json | 2 +- plugins/claude-ops/CHANGELOG.md | 12 ++++++++++++ plugins/claude-ops/skills/setup/SKILL.md | 9 ++++++--- .../desktop-notification/.claude-plugin/plugin.json | 2 +- plugins/desktop-notification/CHANGELOG.md | 12 ++++++++++++ plugins/desktop-notification/skills/setup/SKILL.md | 10 +++++++--- plugins/disk-hygiene/.claude-plugin/plugin.json | 2 +- plugins/disk-hygiene/CHANGELOG.md | 12 ++++++++++++ plugins/disk-hygiene/skills/setup/SKILL.md | 10 +++++++--- plugins/eol-normalizer/.claude-plugin/plugin.json | 2 +- plugins/eol-normalizer/CHANGELOG.md | 12 ++++++++++++ plugins/eol-normalizer/skills/setup/SKILL.md | 11 ++++++++--- plugins/go-format/.claude-plugin/plugin.json | 2 +- plugins/go-format/CHANGELOG.md | 12 ++++++++++++ plugins/go-format/skills/setup/SKILL.md | 10 +++++++--- plugins/guardrails/.claude-plugin/plugin.json | 2 +- plugins/guardrails/CHANGELOG.md | 12 ++++++++++++ plugins/guardrails/skills/setup/SKILL.md | 10 +++++++--- plugins/knowledge/.claude-plugin/plugin.json | 2 +- plugins/knowledge/CHANGELOG.md | 12 ++++++++++++ plugins/knowledge/skills/setup/SKILL.md | 13 +++++++++---- plugins/machine-health/.claude-plugin/plugin.json | 2 +- plugins/machine-health/CHANGELOG.md | 12 ++++++++++++ plugins/machine-health/skills/setup/SKILL.md | 10 +++++++--- plugins/markdown-format/.claude-plugin/plugin.json | 2 +- plugins/markdown-format/CHANGELOG.md | 12 ++++++++++++ plugins/markdown-format/skills/setup/SKILL.md | 11 ++++++++--- plugins/planning/.claude-plugin/plugin.json | 2 +- plugins/planning/CHANGELOG.md | 12 ++++++++++++ plugins/planning/skills/setup/SKILL.md | 9 ++++++--- .../powershell-format/.claude-plugin/plugin.json | 2 +- plugins/powershell-format/CHANGELOG.md | 12 ++++++++++++ plugins/powershell-format/skills/setup/SKILL.md | 11 ++++++++--- plugins/ruff-format/.claude-plugin/plugin.json | 2 +- plugins/ruff-format/CHANGELOG.md | 12 ++++++++++++ plugins/ruff-format/skills/setup/SKILL.md | 11 ++++++++--- plugins/skill-quality/.claude-plugin/plugin.json | 2 +- plugins/skill-quality/CHANGELOG.md | 12 ++++++++++++ plugins/skill-quality/skills/setup/SKILL.md | 9 ++++++--- plugins/source-control/.claude-plugin/plugin.json | 2 +- plugins/source-control/CHANGELOG.md | 12 ++++++++++++ plugins/source-control/skills/setup/SKILL.md | 13 +++++++++---- plugins/typos-format/.claude-plugin/plugin.json | 2 +- plugins/typos-format/CHANGELOG.md | 12 ++++++++++++ plugins/typos-format/skills/setup/SKILL.md | 10 +++++++--- 54 files changed, 367 insertions(+), 74 deletions(-) diff --git a/plugins/actionlint/.claude-plugin/plugin.json b/plugins/actionlint/.claude-plugin/plugin.json index 2ed1588cb..a52503bad 100644 --- a/plugins/actionlint/.claude-plugin/plugin.json +++ b/plugins/actionlint/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "actionlint", - "version": "0.7.0", + "version": "0.7.1", "description": "Lint GitHub Actions workflow files on edit via actionlint, surfacing findings as advisory context.", "author": { "name": "Melodic Software", diff --git a/plugins/actionlint/CHANGELOG.md b/plugins/actionlint/CHANGELOG.md index daaa4c83a..d56389aca 100644 --- a/plugins/actionlint/CHANGELOG.md +++ b/plugins/actionlint/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `actionlint` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.7.1] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.7.0] ### Added diff --git a/plugins/actionlint/skills/setup/SKILL.md b/plugins/actionlint/skills/setup/SKILL.md index fe28789e1..cfec09b38 100644 --- a/plugins/actionlint/skills/setup/SKILL.md +++ b/plugins/actionlint/skills/setup/SKILL.md @@ -62,9 +62,13 @@ Run `check`, then for each FAIL point at the resolution — this skill installs time). Headless: current official docs document `--config` only as a `claude plugin install` flag that sets manifest-declared options; its behavior against an already-installed plugin is undocumented, and in - practice the reliable headless path is `claude plugin uninstall actionlint` - then `claude plugin install actionlint@ --config actionlint_enabled=true`; - this skill never writes user settings or `pluginConfigs`. + practice the reliable headless path is `claude plugin uninstall actionlint -s ` + then `claude plugin install actionlint@ -s --config actionlint_enabled=true`; + this skill never writes user settings or `pluginConfigs`. Both commands default to + `-s user` — pass the scope `claude plugin list` reports for this plugin (`user`, `project`, + or `local`), and run from that project's directory for a `project`/`local` scope. 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. After pointing at a remediation, re-run the relevant `check` probe and report its actual result — never claim resolved on the reader's report that they installed something. diff --git a/plugins/bash-format/.claude-plugin/plugin.json b/plugins/bash-format/.claude-plugin/plugin.json index b4c9b57e4..d55a73d02 100644 --- a/plugins/bash-format/.claude-plugin/plugin.json +++ b/plugins/bash-format/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "bash-format", - "version": "0.6.2", + "version": "0.6.3", "description": "Auto-format and lint shell scripts on edit via shfmt + ShellCheck, using the consuming repo's own .editorconfig and .shellcheckrc.", "author": { "name": "Melodic Software", diff --git a/plugins/bash-format/CHANGELOG.md b/plugins/bash-format/CHANGELOG.md index 03c4e3c57..39f76f5c3 100644 --- a/plugins/bash-format/CHANGELOG.md +++ b/plugins/bash-format/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `bash-format` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.6.3] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.6.2] ### Changed diff --git a/plugins/bash-format/skills/setup/SKILL.md b/plugins/bash-format/skills/setup/SKILL.md index f711136a9..ca98fd819 100644 --- a/plugins/bash-format/skills/setup/SKILL.md +++ b/plugins/bash-format/skills/setup/SKILL.md @@ -90,9 +90,14 @@ Run `check`, then for each FAIL point at the resolution — this skill installs the repo in — but this skill does not write it. `.editorconfig` is cross-cutting (it governs every editor and tool in the repo), so the choice and the edit belong to the consumer. - toggle off: direct to `/plugin configure bash-format` (interactive, any - time). Headless: `--config` only applies on a fresh install (ignored once installed), so reconfigure via `claude plugin uninstall bash-format` then - `claude plugin install bash-format@ --config bash_format_enabled=true`; - this skill never writes user settings or `pluginConfigs`. + time). Headless: `--config` only applies on a fresh install (ignored once installed), so + reconfigure via `claude plugin uninstall bash-format -s ` then + `claude plugin install bash-format@ -s --config bash_format_enabled=true`; + this skill never writes user settings or `pluginConfigs`. Both commands default to `-s user` — + pass the scope `claude plugin list` reports for this plugin, and run from that project's + directory for a `project`/`local` scope. 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. After pointing at a remediation, re-run the relevant `check` probe and report its actual result — never claim resolved on the reader's report that they installed something. diff --git a/plugins/biome-format/.claude-plugin/plugin.json b/plugins/biome-format/.claude-plugin/plugin.json index 5944a25fa..a7d24f54c 100644 --- a/plugins/biome-format/.claude-plugin/plugin.json +++ b/plugins/biome-format/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "biome-format", - "version": "0.5.1", + "version": "0.5.2", "description": "Auto-format and lint JS/TS/JSX/JSON on edit via Biome, only when a biome.json governs the repo — using the consuming repo's own Biome config.", "author": { "name": "Melodic Software", diff --git a/plugins/biome-format/CHANGELOG.md b/plugins/biome-format/CHANGELOG.md index 3304b1d4f..d3c88f9aa 100644 --- a/plugins/biome-format/CHANGELOG.md +++ b/plugins/biome-format/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `biome-format` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.5.2] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.5.1] ### Changed diff --git a/plugins/biome-format/skills/setup/SKILL.md b/plugins/biome-format/skills/setup/SKILL.md index 1b2855f3a..044e6c5cf 100644 --- a/plugins/biome-format/skills/setup/SKILL.md +++ b/plugins/biome-format/skills/setup/SKILL.md @@ -77,9 +77,14 @@ command's exit code alone. For everything else `apply` only points: - missing `jq` / Bash: platform install instructions from the README Requirements section; this skill never installs system packages. - toggle off: direct to `/plugin configure biome-format` (interactive, any - time). Headless: `--config` only applies on a fresh install (ignored once installed), so reconfigure via `claude plugin uninstall biome-format` then - `claude plugin install biome-format@ --config biome_format_enabled=true`; - this skill never writes user settings or `pluginConfigs`. + time). Headless: `--config` only applies on a fresh install (ignored once installed), so + reconfigure via `claude plugin uninstall biome-format -s ` then + `claude plugin install biome-format@ -s --config biome_format_enabled=true`; + this skill never writes user settings or `pluginConfigs`. Both commands default to `-s user` — + pass the scope `claude plugin list` reports for this plugin, and run from that project's + directory for a `project`/`local` scope. 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. - no Biome config: offer to create a minimal `biome.json` in the repository root only when explicitly asked — the plugin imposes no rules of its own. diff --git a/plugins/claude-ops/.claude-plugin/plugin.json b/plugins/claude-ops/.claude-plugin/plugin.json index 5296d84b9..8b15a12be 100644 --- a/plugins/claude-ops/.claude-plugin/plugin.json +++ b/plugins/claude-ops/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "claude-ops", - "version": "0.19.3", + "version": "0.19.4", "description": "Claude Code operations toolkit. Seven skills: observability (read locally captured telemetry — OTEL store, collector, hook-event JSONL, ccusage — with trend reports and store pruning), known-issues (search known Claude product GitHub bugs, check service health, maintain a persistent tracked-issue registry), changelog (ingest Claude Code changelog entries and integrate them into the current repo), plugins (bring a machine's plugin fleet current on demand — marketplace refresh, effective-scope updates including in-repo project/local installs, new-plugin install per policy, scope-divergence detection and explicit convergence), morning-brief (read-only gh-based operator morning view — queue-label counts, merge-ready PRs, parked decisions with their RECOMMENDED lines, and loop-lane telemetry freshness), lanes (start/restart/stop/status loop lanes as named background Claude Code sessions seeded from canonical prompt files, with per-lane model/effort and a repo-pull + marketplace-refresh launch step), and a re-runnable setup action that settles where the known-issues registry lives. Plus a family of seven advisory *-audit telemetry-emitter hooks (API errors, config changes, instruction loads, permission denials, pre-compaction, skill usage, tool failures) that emit the shared hook-telemetry envelope, and a reference sink that maps envelopes into the hook-events.jsonl the observability skill reads.", "author": { "name": "Melodic Software", diff --git a/plugins/claude-ops/CHANGELOG.md b/plugins/claude-ops/CHANGELOG.md index 7954cecbf..5617b3734 100644 --- a/plugins/claude-ops/CHANGELOG.md +++ b/plugins/claude-ops/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `claude-ops` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.19.4] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.19.3] ### Fixed diff --git a/plugins/claude-ops/skills/setup/SKILL.md b/plugins/claude-ops/skills/setup/SKILL.md index 5500720da..b7b0bb747 100644 --- a/plugins/claude-ops/skills/setup/SKILL.md +++ b/plugins/claude-ops/skills/setup/SKILL.md @@ -67,9 +67,12 @@ verify-and-route: `.claude/observability`). State the tradeoff and let the reader pick — do not prompt. - **Reconfiguring a personal option:** `/plugin configure claude-ops` (interactive, any time). Headless: `--config` only applies on a fresh install (ignored once installed), so reconfigure via - `claude plugin uninstall claude-ops` then - `claude plugin install claude-ops@ --config registry_dir=`; this skill never - writes user settings or `pluginConfigs`. + `claude plugin uninstall claude-ops -s ` then + `claude plugin install claude-ops@ -s --config registry_dir=`; this + skill never writes user settings or `pluginConfigs`. Both commands default to `-s user` — pass + the scope `claude plugin list` reports for this plugin, and run from that project's directory + for a `project`/`local` scope. 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. 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 diff --git a/plugins/desktop-notification/.claude-plugin/plugin.json b/plugins/desktop-notification/.claude-plugin/plugin.json index cc08d7ced..4b6ff36cf 100644 --- a/plugins/desktop-notification/.claude-plugin/plugin.json +++ b/plugins/desktop-notification/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "desktop-notification", - "version": "0.5.1", + "version": "0.5.2", "description": "Alert you when Claude Code needs input — an audible terminal bell, an OSC 9 terminal notification, and an OS-native toast (macOS/Linux) on permission and idle prompts.", "author": { "name": "Melodic Software", diff --git a/plugins/desktop-notification/CHANGELOG.md b/plugins/desktop-notification/CHANGELOG.md index 3b817c119..71dd53ce9 100644 --- a/plugins/desktop-notification/CHANGELOG.md +++ b/plugins/desktop-notification/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `desktop-notification` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.5.2] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.5.1] ### Changed diff --git a/plugins/desktop-notification/skills/setup/SKILL.md b/plugins/desktop-notification/skills/setup/SKILL.md index 13b4c2822..36ac1972a 100644 --- a/plugins/desktop-notification/skills/setup/SKILL.md +++ b/plugins/desktop-notification/skills/setup/SKILL.md @@ -71,9 +71,13 @@ nothing and writes nothing, so every remediation is a pointer the user acts on: Guidance only — the user runs it. - **a toggle is off** — direct to `/plugin configure desktop-notification` (interactive, any time). Headless: `--config` only applies on a fresh install (ignored once - installed), so reconfigure via `claude plugin uninstall desktop-notification` then - `claude plugin install desktop-notification@ --config =true`; these - options are user-scoped, so this skill never writes user settings or `pluginConfigs`. + installed), so reconfigure via `claude plugin uninstall desktop-notification -s ` then + `claude plugin install desktop-notification@ -s --config =true`. + Both commands default to `-s user` — pass the install scope `claude plugin list` reports for + this plugin, and run from that project's directory for a `project`/`local` scope. 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. These options are personal `userConfig` + values, so this skill never writes user settings or `pluginConfigs`. After the user reports acting on any system-tool remediation, re-run the relevant `check` probe and report its actual result — never claim resolved on the user's say-so alone. diff --git a/plugins/disk-hygiene/.claude-plugin/plugin.json b/plugins/disk-hygiene/.claude-plugin/plugin.json index 4696a88bf..afb0a7379 100644 --- a/plugins/disk-hygiene/.claude-plugin/plugin.json +++ b/plugins/disk-hygiene/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "disk-hygiene", - "version": "0.9.2", + "version": "0.9.3", "description": "Context-aware disk hygiene for arbitrary directory trees: inventories orphaned and temporary artifacts, classifies evidence into review tiers, and offers exact-path cleanup only after a fresh safety preview and explicit per-tier approval. The target is read-only by default; OS-managed paths, links and mount points, VCS-tracked content, changed entries, and live-handle uncertainty fail closed.", "author": { "name": "Melodic Software", diff --git a/plugins/disk-hygiene/CHANGELOG.md b/plugins/disk-hygiene/CHANGELOG.md index 4b86b5697..bd17c8bc3 100644 --- a/plugins/disk-hygiene/CHANGELOG.md +++ b/plugins/disk-hygiene/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `disk-hygiene` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.9.3] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.9.2] ### Fixed diff --git a/plugins/disk-hygiene/skills/setup/SKILL.md b/plugins/disk-hygiene/skills/setup/SKILL.md index fe859bece..d60b702e9 100644 --- a/plugins/disk-hygiene/skills/setup/SKILL.md +++ b/plugins/disk-hygiene/skills/setup/SKILL.md @@ -75,9 +75,13 @@ tool or an OS capability, so `apply` installs nothing and writes nothing — it - missing git (worktree targets): platform install instructions. - toggle off: direct to `/plugin configure disk-hygiene` (interactive, any time). Headless: `--config` only applies on a fresh install (ignored once installed), so - reconfigure via `claude plugin uninstall disk-hygiene` then - `claude plugin install disk-hygiene@ --config disk_hygiene_enabled=true`; - this skill never writes user settings or `pluginConfigs`. + reconfigure via `claude plugin uninstall disk-hygiene -s ` then + `claude plugin install disk-hygiene@ -s --config disk_hygiene_enabled=true`; + this skill never writes user settings or `pluginConfigs`. Both commands default to `-s user` — + pass the scope `claude plugin list` reports for this plugin, and run from that project's + directory for a `project`/`local` scope. 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. Re-running `apply` after everything passes changes nothing and reports "already configured". diff --git a/plugins/eol-normalizer/.claude-plugin/plugin.json b/plugins/eol-normalizer/.claude-plugin/plugin.json index 188b90b89..919af5848 100644 --- a/plugins/eol-normalizer/.claude-plugin/plugin.json +++ b/plugins/eol-normalizer/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "eol-normalizer", - "version": "0.5.1", + "version": "0.5.2", "description": "Normalize a written file's working-tree line endings to its .gitattributes eol value on edit — symmetric CRLF/LF driven by git check-attr, advisory and never blocking.", "author": { "name": "Melodic Software", diff --git a/plugins/eol-normalizer/CHANGELOG.md b/plugins/eol-normalizer/CHANGELOG.md index 03634a6c8..a82284a91 100644 --- a/plugins/eol-normalizer/CHANGELOG.md +++ b/plugins/eol-normalizer/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `eol-normalizer` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.5.2] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.5.1] ### Changed diff --git a/plugins/eol-normalizer/skills/setup/SKILL.md b/plugins/eol-normalizer/skills/setup/SKILL.md index 4a9aaedd3..c1ca5247a 100644 --- a/plugins/eol-normalizer/skills/setup/SKILL.md +++ b/plugins/eol-normalizer/skills/setup/SKILL.md @@ -65,9 +65,14 @@ tool, so `apply` installs nothing and writes nothing — it only points: - missing `jq` / Bash / git: platform install instructions from the README Requirements section; this skill never installs system packages. - toggle off: direct to `/plugin configure eol-normalizer` (interactive, any - time). Headless: `--config` only applies on a fresh install (ignored once installed), so reconfigure via `claude plugin uninstall eol-normalizer` then - `claude plugin install eol-normalizer@ --config eol_normalizer_enabled=true`; - this skill never writes user settings or `pluginConfigs`. + time). Headless: `--config` only applies on a fresh install (ignored once installed), so + reconfigure via `claude plugin uninstall eol-normalizer -s ` then + `claude plugin install eol-normalizer@ -s --config eol_normalizer_enabled=true`; + this skill never writes user settings or `pluginConfigs`. Both commands default to `-s user` — + pass the scope `claude plugin list` reports for this plugin, and run from that project's + directory for a `project`/`local` scope. 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. - no `eol=` policy: this is the opt-out, not a defect. Point at the repository's own `.gitattributes` as the place to declare policy; this skill never writes `.gitattributes`, because that would impose a repo-wide line-ending policy the plugin has no mandate to diff --git a/plugins/go-format/.claude-plugin/plugin.json b/plugins/go-format/.claude-plugin/plugin.json index 78cd5a57e..48d32886e 100644 --- a/plugins/go-format/.claude-plugin/plugin.json +++ b/plugins/go-format/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "go-format", - "version": "0.2.1", + "version": "0.2.2", "description": "Auto-fix Go formatting and import management on edit via goimports — runs unconditionally (no consumer-config gate), skipping generated files.", "author": { "name": "Melodic Software", diff --git a/plugins/go-format/CHANGELOG.md b/plugins/go-format/CHANGELOG.md index 240ec9dd9..a2e41dae8 100644 --- a/plugins/go-format/CHANGELOG.md +++ b/plugins/go-format/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `go-format` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.2.2] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.2.1] ### Changed diff --git a/plugins/go-format/skills/setup/SKILL.md b/plugins/go-format/skills/setup/SKILL.md index 511e98511..406d3195c 100644 --- a/plugins/go-format/skills/setup/SKILL.md +++ b/plugins/go-format/skills/setup/SKILL.md @@ -66,9 +66,13 @@ result — never claim resolved without re-verifying. For everything else `apply this skill never installs system packages. - toggle off: direct to `/plugin configure go-format` (interactive, any time). Headless: `--config` only applies on a fresh install (ignored once installed), so - reconfigure via `claude plugin uninstall go-format` then - `claude plugin install go-format@ --config go_format_enabled=true`; - this skill never writes user settings or `pluginConfigs`. + reconfigure via `claude plugin uninstall go-format -s ` then + `claude plugin install go-format@ -s --config go_format_enabled=true`; + this skill never writes user settings or `pluginConfigs`. Both commands default to `-s user` — + pass the scope `claude plugin list` reports for this plugin, and run from that project's + directory for a `project`/`local` scope. 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. Re-running `apply` after everything passes changes nothing and reports "already configured". diff --git a/plugins/guardrails/.claude-plugin/plugin.json b/plugins/guardrails/.claude-plugin/plugin.json index deb0c8763..92f86eb7f 100644 --- a/plugins/guardrails/.claude-plugin/plugin.json +++ b/plugins/guardrails/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "guardrails", - "version": "0.15.1", + "version": "0.15.2", "description": "Eleven safety guards that block secret/credential writes, hardcoded machine-specific paths, git hook-bypass attempts, irreversible git operations (force-push, reset --hard, worktree-wide checkout/restore discards), Bash file-write workarounds that circumvent Write/Edit hooks, commit subjects and gh pr create titles that violate the repo's tracked team convention (when one is declared in .claude/source-control.md), (advisory) hallucinated CLI flags, (advisory) /plugin:skill references that do not resolve, (advisory) un-throttled Workflow fan-out that risks burst 529s, and (advisory) direct git commit/gh pr create calls bypassing this marketplace's own commit/pull-request skills — each independently toggleable.", "author": { "name": "Melodic Software", diff --git a/plugins/guardrails/CHANGELOG.md b/plugins/guardrails/CHANGELOG.md index 9b45536bf..d174f581b 100644 --- a/plugins/guardrails/CHANGELOG.md +++ b/plugins/guardrails/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `guardrails` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.15.2] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.15.1] ### Fixed diff --git a/plugins/guardrails/skills/setup/SKILL.md b/plugins/guardrails/skills/setup/SKILL.md index b95075143..5ab60c692 100644 --- a/plugins/guardrails/skills/setup/SKILL.md +++ b/plugins/guardrails/skills/setup/SKILL.md @@ -54,9 +54,13 @@ nothing — it only points: section; this skill never installs system packages. - any toggle or scalar change: direct to `/plugin configure guardrails` (interactive, any time). Headless: `--config` only applies on a fresh install (ignored once installed), so - reconfigure via `claude plugin uninstall guardrails` then - `claude plugin install guardrails@ --config KEY=VALUE …` (repeatable); - this skill never writes user settings or `pluginConfigs`. + reconfigure via `claude plugin uninstall guardrails -s ` then + `claude plugin install guardrails@ -s --config KEY=VALUE …` (repeatable); + this skill never writes user settings or `pluginConfigs`. Both commands default to `-s user` — + pass the scope `claude plugin list` reports for this plugin, and run from that project's + directory for a `project`/`local` scope. 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. Re-running `apply` after everything passes changes nothing and reports "already configured". diff --git a/plugins/knowledge/.claude-plugin/plugin.json b/plugins/knowledge/.claude-plugin/plugin.json index 1a76eaa2e..6597f9976 100644 --- a/plugins/knowledge/.claude-plugin/plugin.json +++ b/plugins/knowledge/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "knowledge", - "version": "0.9.4", + "version": "0.9.5", "description": "Ingest external knowledge into durable, synthesized artifacts. Ships a book-distillation pipeline (PDF/EPUB into concept-organized, author-attributed skill reference files), a YouTube pipeline (watch, transcript, link harvest, and repo-applicability synthesis), and a course-digest pipeline (extract and synthesize online video courses — Dometrain, Teachable — into repo-applicable recommendations), plus a re-runnable setup action; a configurable library directory governs where synthesized artifacts land in the consuming repo.", "author": { "name": "Melodic Software", diff --git a/plugins/knowledge/CHANGELOG.md b/plugins/knowledge/CHANGELOG.md index ac9d89329..2fc3a2085 100644 --- a/plugins/knowledge/CHANGELOG.md +++ b/plugins/knowledge/CHANGELOG.md @@ -4,6 +4,18 @@ All notable changes to the `knowledge` plugin are recorded here. The `version` i `.claude-plugin/plugin.json` is the delivery vehicle — a consumer receives a change only after that version increases. +## [0.9.5] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.9.4] ### Fixed diff --git a/plugins/knowledge/skills/setup/SKILL.md b/plugins/knowledge/skills/setup/SKILL.md index a3b5b428e..ed8902242 100644 --- a/plugins/knowledge/skills/setup/SKILL.md +++ b/plugins/knowledge/skills/setup/SKILL.md @@ -61,10 +61,15 @@ reports "already configured". 1. **`library_dir` mismatch — guidance only.** `library_dir` is a personal `userConfig` scalar; never hand-edit `pluginConfigs` or write Claude Code settings. Direct the user to `/plugin configure knowledge` (interactive, any time). Headless: `--config` only applies on a - fresh install (ignored once installed), so reconfigure via `claude plugin uninstall knowledge` - then `claude plugin install knowledge@ --config library_dir=`. The rendered - value is injected at skill load, so a change takes effect in a fresh session — report the - observed value and defer verification to that fresh session; do not claim a change this session. + fresh install (ignored once installed), so reconfigure via + `claude plugin uninstall knowledge -s ` then + `claude plugin install knowledge@ -s --config library_dir=`. Both + commands default to `-s user` — pass the scope `claude plugin list` reports for this plugin, + and run from that project's directory for a `project`/`local` scope. 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. The rendered value is injected at skill load, + so a change takes effect in a fresh session — report the observed value and defer verification + to that fresh session; do not claim a change this session. For a root outside the project and home directories, recommend the portable value forms from the README's option table (`~` prefix or `${NAME}` / `%NAME%` env-var reference) instead of a literal machine path, which guardrail hardcoded-path checks rightly block. diff --git a/plugins/machine-health/.claude-plugin/plugin.json b/plugins/machine-health/.claude-plugin/plugin.json index 8d63d0909..f2e7fd6cb 100644 --- a/plugins/machine-health/.claude-plugin/plugin.json +++ b/plugins/machine-health/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "machine-health", - "version": "0.7.0", + "version": "0.7.1", "description": "Workstation health audit: OS-specific checks (disk, OS updates, security posture, CISA KEV correlation) run from a versioned catalog with trend-aware severity, approval-gated remediations, and dated markdown reports. Windows fully implemented; macOS/Linux scaffolded (report UNKNOWN and stop). Machine state persists in the plugin data directory; the report directory and check catalog are configurable.", "author": { "name": "Melodic Software", diff --git a/plugins/machine-health/CHANGELOG.md b/plugins/machine-health/CHANGELOG.md index fa5508203..b7267fed9 100644 --- a/plugins/machine-health/CHANGELOG.md +++ b/plugins/machine-health/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `machine-health` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.7.1] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.7.0] ### Fixed diff --git a/plugins/machine-health/skills/setup/SKILL.md b/plugins/machine-health/skills/setup/SKILL.md index e6ddbc0e7..66ee49367 100644 --- a/plugins/machine-health/skills/setup/SKILL.md +++ b/plugins/machine-health/skills/setup/SKILL.md @@ -123,9 +123,13 @@ give, rather than writing a dangling entry. set, else `$env:USERPROFILE\Documents\MachineHealth`); to change it, direct the user to `/plugin configure machine-health` (interactive, any time) — the option is stored in plugin config, not the overlay. Headless: `--config` only applies on a fresh install (ignored once - installed), so reconfigure via `claude plugin uninstall machine-health` then - `claude plugin install machine-health@ --config report_dir=`; this skill never - writes user settings or `pluginConfigs`. + installed), so reconfigure via `claude plugin uninstall machine-health -s ` then + `claude plugin install machine-health@ -s --config report_dir=`. + Both commands default to `-s user` — pass the scope `claude plugin list` reports for this + plugin, and run from that project's directory for a `project`/`local` scope. 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. This skill never writes user settings + or `pluginConfigs`. Re-running `apply` after everything is already set changes nothing and reports "already configured". diff --git a/plugins/markdown-format/.claude-plugin/plugin.json b/plugins/markdown-format/.claude-plugin/plugin.json index bc85b5c3b..c82e5f643 100644 --- a/plugins/markdown-format/.claude-plugin/plugin.json +++ b/plugins/markdown-format/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "markdown-format", - "version": "0.6.2", + "version": "0.6.3", "description": "Auto-format and lint Markdown on edit via markdownlint-cli2, using the consuming repo's own markdownlint config.", "author": { "name": "Melodic Software", diff --git a/plugins/markdown-format/CHANGELOG.md b/plugins/markdown-format/CHANGELOG.md index d681a6695..5d971fe93 100644 --- a/plugins/markdown-format/CHANGELOG.md +++ b/plugins/markdown-format/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `markdown-format` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.6.3] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.6.2] ### Changed diff --git a/plugins/markdown-format/skills/setup/SKILL.md b/plugins/markdown-format/skills/setup/SKILL.md index 313738e69..3adcece27 100644 --- a/plugins/markdown-format/skills/setup/SKILL.md +++ b/plugins/markdown-format/skills/setup/SKILL.md @@ -77,9 +77,14 @@ install command's exit code alone. For everything else `apply` only points: - missing `jq` / Bash: platform install instructions from the README Requirements section; this skill never installs system packages. - toggle off: direct to `/plugin configure markdown-format` (interactive, any - time). Headless: `--config` only applies on a fresh install (ignored once installed), so reconfigure via `claude plugin uninstall markdown-format` then - `claude plugin install markdown-format@ --config markdown_format_enabled=true`; - this skill never writes user settings or `pluginConfigs`. + time). Headless: `--config` only applies on a fresh install (ignored once installed), so + reconfigure via `claude plugin uninstall markdown-format -s ` then + `claude plugin install markdown-format@ -s --config markdown_format_enabled=true`; + this skill never writes user settings or `pluginConfigs`. Both commands default to `-s user` — + pass the scope `claude plugin list` reports for this plugin, and run from that project's + directory for a `project`/`local` scope. 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. - no markdownlint config: offer to create a minimal `.markdownlint-cli2.jsonc` in the repository root only when explicitly asked — the plugin imposes no rules of its own. diff --git a/plugins/planning/.claude-plugin/plugin.json b/plugins/planning/.claude-plugin/plugin.json index fcf600b88..e36f37223 100644 --- a/plugins/planning/.claude-plugin/plugin.json +++ b/plugins/planning/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "planning", - "version": "0.26.0", + "version": "0.26.1", "userConfig": { "use_ask_user_question": { "type": "boolean", diff --git a/plugins/planning/CHANGELOG.md b/plugins/planning/CHANGELOG.md index 0605067f6..68a09156e 100644 --- a/plugins/planning/CHANGELOG.md +++ b/plugins/planning/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `planning` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.26.1] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.26.0] ### Changed diff --git a/plugins/planning/skills/setup/SKILL.md b/plugins/planning/skills/setup/SKILL.md index 1c4f2d717..d6b3216e4 100644 --- a/plugins/planning/skills/setup/SKILL.md +++ b/plugins/planning/skills/setup/SKILL.md @@ -124,9 +124,12 @@ implement it by reference, do not restate it. Plugin-side notes only: pipeline skills' question rounds render through `AskUserQuestion` or as inline prose — it is not a consumer-project file this skill writes. To change it, direct the user to `/plugin configure planning` (interactive, any time). Headless: `--config` only applies on a fresh install (ignored once installed), -so reconfigure via `claude plugin uninstall planning` then -`claude plugin install planning@ --config use_ask_user_question=true`. This skill never -writes Claude Code user settings or `pluginConfigs`. +so reconfigure via `claude plugin uninstall planning -s ` then +`claude plugin install planning@ -s --config use_ask_user_question=true`. Both +commands default to `-s user` — pass the scope `claude plugin list` reports for this plugin, and run +from that project's directory for a `project`/`local` scope. 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. This skill never writes Claude Code user settings or `pluginConfigs`. ### Verify after remediation diff --git a/plugins/powershell-format/.claude-plugin/plugin.json b/plugins/powershell-format/.claude-plugin/plugin.json index d10557f3f..b06eeba1c 100644 --- a/plugins/powershell-format/.claude-plugin/plugin.json +++ b/plugins/powershell-format/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "powershell-format", - "version": "0.5.1", + "version": "0.5.2", "description": "Auto-format and lint PowerShell on edit via PSScriptAnalyzer, only when a PSScriptAnalyzerSettings.psd1 governs the repo — using the consuming repo's own analyzer settings.", "author": { "name": "Melodic Software", diff --git a/plugins/powershell-format/CHANGELOG.md b/plugins/powershell-format/CHANGELOG.md index dd3eeb412..24b5f99e7 100644 --- a/plugins/powershell-format/CHANGELOG.md +++ b/plugins/powershell-format/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `powershell-format` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.5.2] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.5.1] ### Changed diff --git a/plugins/powershell-format/skills/setup/SKILL.md b/plugins/powershell-format/skills/setup/SKILL.md index 29aa6c7a8..e1003ede8 100644 --- a/plugins/powershell-format/skills/setup/SKILL.md +++ b/plugins/powershell-format/skills/setup/SKILL.md @@ -84,9 +84,14 @@ Run `check`, then for each finding point at the resolution — this skill instal it. The settings file is the executed-adjacent trust boundary above; the choice and the edit belong to the consumer. - toggle off: direct to `/plugin configure powershell-format` (interactive, any - time). Headless: `--config` only applies on a fresh install (ignored once installed), so reconfigure via `claude plugin uninstall powershell-format` then - `claude plugin install powershell-format@ --config powershell_format_enabled=true`; - this skill never writes user settings or `pluginConfigs`. + time). Headless: `--config` only applies on a fresh install (ignored once installed), so + reconfigure via `claude plugin uninstall powershell-format -s ` then + `claude plugin install powershell-format@ -s --config powershell_format_enabled=true`; + this skill never writes user settings or `pluginConfigs`. Both commands default to `-s user` — + pass the scope `claude plugin list` reports for this plugin, and run from that project's + directory for a `project`/`local` scope. 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. After pointing at a remediation, re-run the relevant `check` probe and report its actual result — never claim resolved on the reader's report that they installed something. diff --git a/plugins/ruff-format/.claude-plugin/plugin.json b/plugins/ruff-format/.claude-plugin/plugin.json index e7c4eae3e..79e060d1a 100644 --- a/plugins/ruff-format/.claude-plugin/plugin.json +++ b/plugins/ruff-format/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "ruff-format", - "version": "0.5.1", + "version": "0.5.2", "description": "Auto-format and lint Python on edit via Ruff, only when a Ruff config governs the repo — using the consuming repo's own Ruff config.", "author": { "name": "Melodic Software", diff --git a/plugins/ruff-format/CHANGELOG.md b/plugins/ruff-format/CHANGELOG.md index 542a7165d..395efd310 100644 --- a/plugins/ruff-format/CHANGELOG.md +++ b/plugins/ruff-format/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `ruff-format` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.5.2] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.5.1] ### Changed diff --git a/plugins/ruff-format/skills/setup/SKILL.md b/plugins/ruff-format/skills/setup/SKILL.md index c30077728..053951f0e 100644 --- a/plugins/ruff-format/skills/setup/SKILL.md +++ b/plugins/ruff-format/skills/setup/SKILL.md @@ -97,9 +97,14 @@ only points: - missing `jq` / Bash: platform install instructions from the README Requirements section; this skill never installs system packages. - toggle off: direct to `/plugin configure ruff-format` (interactive, any - time). Headless: `--config` only applies on a fresh install (ignored once installed), so reconfigure via `claude plugin uninstall ruff-format` then - `claude plugin install ruff-format@ --config ruff_format_enabled=true`; - this skill never writes user settings or `pluginConfigs`. + time). Headless: `--config` only applies on a fresh install (ignored once installed), so + reconfigure via `claude plugin uninstall ruff-format -s ` then + `claude plugin install ruff-format@ -s --config ruff_format_enabled=true`; + this skill never writes user settings or `pluginConfigs`. Both commands default to `-s user` — + pass the scope `claude plugin list` reports for this plugin, and run from that project's + directory for a `project`/`local` scope. 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. - no Ruff config: offer to create a minimal Ruff config in the repository root only when explicitly asked — the plugin imposes no rules of its own. diff --git a/plugins/skill-quality/.claude-plugin/plugin.json b/plugins/skill-quality/.claude-plugin/plugin.json index 36df2885b..1f541c354 100644 --- a/plugins/skill-quality/.claude-plugin/plugin.json +++ b/plugins/skill-quality/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "skill-quality", - "version": "0.10.1", + "version": "0.10.2", "description": "Skill-authoring QA tooling: a static contract checker that runs twenty deterministic checks over a Claude Code skill (frontmatter, listing-budget cap, trigger-keyword preservation, line caps, broken internal refs, markdownlint, gotchas surface, evals presence, precompute opportunity, injection shell-declaration) and a bundled evals.json schema for validation. Runs against any repo's skills directory via the convention-resolution ladder — no baked layout.", "author": { "name": "Melodic Software", diff --git a/plugins/skill-quality/CHANGELOG.md b/plugins/skill-quality/CHANGELOG.md index 260298b6b..1e5005552 100644 --- a/plugins/skill-quality/CHANGELOG.md +++ b/plugins/skill-quality/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `skill-quality` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.10.2] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.10.1] ### Documentation diff --git a/plugins/skill-quality/skills/setup/SKILL.md b/plugins/skill-quality/skills/setup/SKILL.md index 0459ba03b..e0b5a55b4 100644 --- a/plugins/skill-quality/skills/setup/SKILL.md +++ b/plugins/skill-quality/skills/setup/SKILL.md @@ -43,9 +43,12 @@ verify-and-route: the personal `skills_root` should point there. Reconfigure through the path below, then rerun `check`. - **Reconfiguring the personal option:** `/plugin configure skill-quality` (interactive, any time). Headless: `--config` only applies on a fresh install (ignored once installed), so reconfigure via - `claude plugin uninstall skill-quality` then - `claude plugin install skill-quality@ --config skills_root=`; this skill never - writes user settings or `pluginConfigs`. + `claude plugin uninstall skill-quality -s ` then + `claude plugin install skill-quality@ -s --config skills_root=`. Both + commands default to `-s user` — pass the scope `claude plugin list` reports for this plugin, and + run from that project's directory for a `project`/`local` scope. 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. This skill never writes user settings or `pluginConfigs`. - **One-run override (no persistence):** for a single run against a different root, the checker also honors the `CHECK_SKILL_SKILLS_ROOT` environment variable; do not persist that variable on the user's behalf. diff --git a/plugins/source-control/.claude-plugin/plugin.json b/plugins/source-control/.claude-plugin/plugin.json index 4641f744f..8d90af1e4 100644 --- a/plugins/source-control/.claude-plugin/plugin.json +++ b/plugins/source-control/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "source-control", - "version": "0.26.9", + "version": "0.26.10", "description": "Git and GitHub delivery workflow: /commit (Conventional Commits + Co-Authored-By trailer via safe heredoc mechanics), /pull-request (prep, create, CI monitoring, review-comment triage, merge, CI-log fetch), /babysit-prs (self-pacing fleet loop — safe by default; opt-in worker/autopilot tiers add gate-checked merge and thread resolution behind a deterministic Python engine), /babysit-loop (the loop-lane merge lane: a standing or drain loop that invokes babysit-prs per cycle, configured through repo-scoped babysit_loop_* keys on the layered source-control.md seam, with merge authority human-only until the target repo's tracked config adopts the lane, a gate-proven C2-mechanical baseline once adopted, and merge-rung raises binding from the team-tracked layer only), /worktree (create, status, cleanup, audit for parallel-session isolation), /setup (check the effective commit-subject / PR-title convention merged across its config layers and the babysit-prs config, or apply — interview the repo and write the convention config to a chosen layer), and /resolve-conflicts (intent-first merge/rebase conflict resolution with a semantic-conflict sweep — never --abort). The commit-subject / PR-title convention is configurable via a source-control.md config written by a re-runnable setup skill, layered across a ~/.claude user-global file, the tracked team file, and a gitignored .claude/source-control.local.md personal overlay merged per key; Conventional Commits is the default when no convention is declared.", "author": { "name": "Melodic Software", diff --git a/plugins/source-control/CHANGELOG.md b/plugins/source-control/CHANGELOG.md index 0bb49d5a4..37cbbe848 100644 --- a/plugins/source-control/CHANGELOG.md +++ b/plugins/source-control/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `source-control` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.26.10] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.26.9] ### Fixed diff --git a/plugins/source-control/skills/setup/SKILL.md b/plugins/source-control/skills/setup/SKILL.md index dd7fbaf37..772e5bccd 100644 --- a/plugins/source-control/skills/setup/SKILL.md +++ b/plugins/source-control/skills/setup/SKILL.md @@ -178,10 +178,15 @@ sanctioned paths: - **Interactive:** `/plugin configure source-control` (or the `/plugin` dialog → source-control → configure), any time — Claude Code prompts per key using the manifest's types and defaults. - **Headless / CI:** `--config` only applies on a fresh install (ignored once installed), so - reconfiguring headless means `claude plugin uninstall source-control` then reinstalling with the - new values: `claude plugin install source-control@ --config KEY=VALUE` (repeatable per - key). Multi-value keys (`babysit_watched_owners`, `babysit_self_logins`, `babysit_review_bot_logins`, - `babysit_extra_bot_logins`) are supplied comma-joined. + reconfiguring headless means `claude plugin uninstall source-control -s ` then + reinstalling with the new values: + `claude plugin install source-control@ -s --config KEY=VALUE` (repeatable + per key). Multi-value keys (`babysit_watched_owners`, `babysit_self_logins`, + `babysit_review_bot_logins`, `babysit_extra_bot_logins`) are supplied comma-joined. Both + commands default to `-s user` — pass the scope `claude plugin list` reports for this plugin, + and run from that project's directory for a `project`/`local` scope. 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. Reconfiguring `userConfig` does not reach the already-running session — after either path, the new values become visible only in a fresh session. Do not re-run the babysit `check` in the same session diff --git a/plugins/typos-format/.claude-plugin/plugin.json b/plugins/typos-format/.claude-plugin/plugin.json index 5f49d5243..f1723f2bd 100644 --- a/plugins/typos-format/.claude-plugin/plugin.json +++ b/plugins/typos-format/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "typos-format", - "version": "0.3.1", + "version": "0.3.2", "description": "Auto-fix spelling typos on edit via typos-cli, unconditionally — honoring the consuming repo's own typos configuration when one is present.", "author": { "name": "Melodic Software", diff --git a/plugins/typos-format/CHANGELOG.md b/plugins/typos-format/CHANGELOG.md index 8723f8c03..826a43b02 100644 --- a/plugins/typos-format/CHANGELOG.md +++ b/plugins/typos-format/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `typos-format` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.3.2] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + already applied to `session-flow` and `rate-limit-guard` in #1393. + ## [0.3.1] ### Changed diff --git a/plugins/typos-format/skills/setup/SKILL.md b/plugins/typos-format/skills/setup/SKILL.md index 048ae35f0..64fc741fe 100644 --- a/plugins/typos-format/skills/setup/SKILL.md +++ b/plugins/typos-format/skills/setup/SKILL.md @@ -68,9 +68,13 @@ never claim resolved without re-verifying. For everything else `apply` only poin this skill never installs system packages. - toggle off: direct to `/plugin configure typos-format` (interactive, any time). Headless: `--config` only applies on a fresh install (ignored once installed), so - reconfigure via `claude plugin uninstall typos-format` then - `claude plugin install typos-format@ --config typos_format_enabled=true`; - this skill never writes user settings or `pluginConfigs`. + reconfigure via `claude plugin uninstall typos-format -s ` then + `claude plugin install typos-format@ -s --config typos_format_enabled=true`; + this skill never writes user settings or `pluginConfigs`. Both commands default to `-s user` — + pass the scope `claude plugin list` reports for this plugin, and run from that project's + directory for a `project`/`local` scope. 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. - no typos config: offer to create a minimal `_typos.toml` in the repository root only when explicitly asked — the plugin imposes no rules of its own. From 3b8ff7791f8155262b37b8ca6d94daae828d9ca0 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Sat, 25 Jul 2026 21:13:35 -0400 Subject: [PATCH 2/2] fix(setup): replay every non-default option, and cover ai-briefing 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. --- plugins/actionlint/CHANGELOG.md | 4 ++++ plugins/actionlint/skills/setup/SKILL.md | 6 +++++- plugins/ai-briefing/.claude-plugin/plugin.json | 2 +- plugins/ai-briefing/CHANGELOG.md | 12 ++++++++++++ plugins/ai-briefing/skills/setup/SKILL.md | 9 +++++++-- plugins/claude-ops/CHANGELOG.md | 4 ++++ plugins/claude-ops/skills/setup/SKILL.md | 7 +++++++ plugins/desktop-notification/CHANGELOG.md | 4 ++++ plugins/desktop-notification/skills/setup/SKILL.md | 7 +++++-- plugins/guardrails/CHANGELOG.md | 4 ++++ plugins/guardrails/skills/setup/SKILL.md | 6 +++++- plugins/knowledge/CHANGELOG.md | 4 ++++ plugins/knowledge/skills/setup/SKILL.md | 8 +++++++- plugins/source-control/CHANGELOG.md | 4 ++++ plugins/source-control/skills/setup/SKILL.md | 7 ++++++- 15 files changed, 79 insertions(+), 9 deletions(-) diff --git a/plugins/actionlint/CHANGELOG.md b/plugins/actionlint/CHANGELOG.md index d56389aca..eb6a7a966 100644 --- a/plugins/actionlint/CHANGELOG.md +++ b/plugins/actionlint/CHANGELOG.md @@ -14,6 +14,10 @@ All notable changes to the `actionlint` plugin are documented here. Format follo loading, and the reinstall landed at a scope that does not load. Both commands now carry `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix already applied to `session-flow` and `rate-limit-guard` in #1393. + The recipe also now requires the reinstall to re-supply **every** key whose value should + stay non-default, not only the key being changed: uninstalling drops the stored + `pluginConfigs` entry, so an omitted key silently falls back to its manifest default. + Record the current values before uninstalling. ## [0.7.0] diff --git a/plugins/actionlint/skills/setup/SKILL.md b/plugins/actionlint/skills/setup/SKILL.md index cfec09b38..762d974e0 100644 --- a/plugins/actionlint/skills/setup/SKILL.md +++ b/plugins/actionlint/skills/setup/SKILL.md @@ -68,7 +68,11 @@ Run `check`, then for each FAIL point at the resolution — this skill installs `-s user` — pass the scope `claude plugin list` reports for this plugin (`user`, `project`, or `local`), and run from that project's directory for a `project`/`local` scope. 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. + so the reinstall lands at a scope that does not load. Uninstalling also drops the stored + `pluginConfigs` entry, so the reinstall must re-supply **every** key whose value should stay + non-default — both `actionlint_enabled` and `stdin_read_timeout`, not only the key being + changed. Record the current values before uninstalling; afterwards there is nothing left to + read them from. After pointing at a remediation, re-run the relevant `check` probe and report its actual result — never claim resolved on the reader's report that they installed something. diff --git a/plugins/ai-briefing/.claude-plugin/plugin.json b/plugins/ai-briefing/.claude-plugin/plugin.json index ea7599f5d..9f1f3e186 100644 --- a/plugins/ai-briefing/.claude-plugin/plugin.json +++ b/plugins/ai-briefing/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "ai-briefing", - "version": "0.6.1", + "version": "0.6.2", "description": "Build source-backed AI-industry briefings from official vendor publications, configured RSS/Atom feeds, GitHub releases, reputable secondary reporting, and user-supplied URLs. Deduplicate, rank, and present results as markdown or optional HTML/PPTX decks, with repository-owned profile, audience, and brand configuration. Automated X/Twitter collection is disabled; Playwright is used only for deterministic local rendering.", "author": { "name": "Melodic Software", diff --git a/plugins/ai-briefing/CHANGELOG.md b/plugins/ai-briefing/CHANGELOG.md index d5a1f0166..e64c19e1e 100644 --- a/plugins/ai-briefing/CHANGELOG.md +++ b/plugins/ai-briefing/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to the `ai-briefing` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.6.2] + +### Fixed + +- **Headless reconfigure recipe now preserves install scope (#1406).** The `claude plugin + uninstall` → `claude plugin install ... --config` recipe in `skills/setup/SKILL.md` defaulted + both halves to `-s user`. When this plugin is installed at `project` or `local` scope, that + silently uninstalled a separate user-scope record while the effective project/local install kept + loading, and the reinstall landed at a scope that does not load. Both commands now carry + `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix + applied to the other affected plugins in this release wave. + ## [0.6.1] ### Changed diff --git a/plugins/ai-briefing/skills/setup/SKILL.md b/plugins/ai-briefing/skills/setup/SKILL.md index e9788b0ee..83577823b 100644 --- a/plugins/ai-briefing/skills/setup/SKILL.md +++ b/plugins/ai-briefing/skills/setup/SKILL.md @@ -56,8 +56,13 @@ anything. changes the stored value; this skill never writes `pluginConfigs`. - **Headless:** `claude plugin install ... --config active_profile=` seeds the value on a *fresh install only* and is ignored once the plugin is installed, so reconfiguring headlessly - means `claude plugin uninstall ai-briefing` then `claude plugin install - ai-briefing@ --config active_profile=`. + means `claude plugin uninstall ai-briefing -s ` then `claude plugin install + ai-briefing@ -s --config active_profile=`. Both commands default + to `-s user` — pass the scope `claude plugin list` reports for this plugin, and run from that + project's directory for a `project`/`local` scope. 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. `active_profile` is this plugin's only `userConfig` key, so the + reinstall has nothing else to re-supply. - **Neither, for a one-off:** a per-run `--profile ` selects a different profile without touching stored config. 2. **`sources.md`** — FAIL if the resolved profile has no `sources.md`: `/ai-briefing:generate` diff --git a/plugins/claude-ops/CHANGELOG.md b/plugins/claude-ops/CHANGELOG.md index a4c313826..554a91be7 100644 --- a/plugins/claude-ops/CHANGELOG.md +++ b/plugins/claude-ops/CHANGELOG.md @@ -14,6 +14,10 @@ All notable changes to the `claude-ops` plugin are documented here. Format follo loading, and the reinstall landed at a scope that does not load. Both commands now carry `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix already applied to `session-flow` and `rate-limit-guard` in #1393. + The recipe also now requires the reinstall to re-supply **every** key whose value should + stay non-default, not only the key being changed: uninstalling drops the stored + `pluginConfigs` entry, so an omitted key silently falls back to its manifest default. + Record the current values before uninstalling. ## [0.20.0] diff --git a/plugins/claude-ops/skills/setup/SKILL.md b/plugins/claude-ops/skills/setup/SKILL.md index b7b0bb747..0ede274e4 100644 --- a/plugins/claude-ops/skills/setup/SKILL.md +++ b/plugins/claude-ops/skills/setup/SKILL.md @@ -73,6 +73,13 @@ verify-and-route: the scope `claude plugin list` reports for this plugin, and run from that project's directory for a `project`/`local` scope. 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 stored `pluginConfigs` entry, so the reinstall must re-supply + **every** key whose value should stay non-default — this plugin declares fourteen, and a + reinstall that passes only `registry_dir` silently resets the other thirteen (the seven + `*_audit_enabled` toggles, `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 diff --git a/plugins/desktop-notification/CHANGELOG.md b/plugins/desktop-notification/CHANGELOG.md index 71dd53ce9..b81c5ad3e 100644 --- a/plugins/desktop-notification/CHANGELOG.md +++ b/plugins/desktop-notification/CHANGELOG.md @@ -14,6 +14,10 @@ All notable changes to the `desktop-notification` plugin are documented here. Fo loading, and the reinstall landed at a scope that does not load. Both commands now carry `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix already applied to `session-flow` and `rate-limit-guard` in #1393. + The recipe also now requires the reinstall to re-supply **every** key whose value should + stay non-default, not only the key being changed: uninstalling drops the stored + `pluginConfigs` entry, so an omitted key silently falls back to its manifest default. + Record the current values before uninstalling. ## [0.5.1] diff --git a/plugins/desktop-notification/skills/setup/SKILL.md b/plugins/desktop-notification/skills/setup/SKILL.md index 36ac1972a..c8af646d9 100644 --- a/plugins/desktop-notification/skills/setup/SKILL.md +++ b/plugins/desktop-notification/skills/setup/SKILL.md @@ -76,8 +76,11 @@ nothing and writes nothing, so every remediation is a pointer the user acts on: Both commands default to `-s user` — pass the install scope `claude plugin list` reports for this plugin, and run from that project's directory for a `project`/`local` scope. 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. These options are personal `userConfig` - values, so this skill never writes user settings or `pluginConfigs`. + the reinstall lands at a scope that does not load. Uninstalling also drops the stored + `pluginConfigs` entry, so the reinstall must re-supply **every** one of the four toggles whose + value should stay non-default, not only the one being flipped; record the current values before + uninstalling, because afterwards there is nothing left to read them from. These options are + personal `userConfig` values, so this skill never writes user settings or `pluginConfigs`. After the user reports acting on any system-tool remediation, re-run the relevant `check` probe and report its actual result — never claim resolved on the user's say-so alone. diff --git a/plugins/guardrails/CHANGELOG.md b/plugins/guardrails/CHANGELOG.md index 796e83eae..864440156 100644 --- a/plugins/guardrails/CHANGELOG.md +++ b/plugins/guardrails/CHANGELOG.md @@ -14,6 +14,10 @@ All notable changes to the `guardrails` plugin are documented here. Format follo loading, and the reinstall landed at a scope that does not load. Both commands now carry `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix already applied to `session-flow` and `rate-limit-guard` in #1393. + The recipe also now requires the reinstall to re-supply **every** key whose value should + stay non-default, not only the key being changed: uninstalling drops the stored + `pluginConfigs` entry, so an omitted key silently falls back to its manifest default. + Record the current values before uninstalling. ## [0.16.0] diff --git a/plugins/guardrails/skills/setup/SKILL.md b/plugins/guardrails/skills/setup/SKILL.md index 5ab60c692..7629ce398 100644 --- a/plugins/guardrails/skills/setup/SKILL.md +++ b/plugins/guardrails/skills/setup/SKILL.md @@ -60,7 +60,11 @@ nothing — it only points: pass the scope `claude plugin list` reports for this plugin, and run from that project's directory for a `project`/`local` scope. 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. + does not load. Uninstalling also drops the stored `pluginConfigs` entry, so the reinstall must + re-supply **every** key whose value should stay non-default — this plugin declares sixteen, and + a reinstall that passes only the key being changed silently re-enables every guard the operator + had turned off and discards every `*_allow`, `*_bins`, and `*_prefixes` list. Record the current + values before uninstalling; afterwards there is nothing left to read them from. Re-running `apply` after everything passes changes nothing and reports "already configured". diff --git a/plugins/knowledge/CHANGELOG.md b/plugins/knowledge/CHANGELOG.md index 2fc3a2085..370c5db09 100644 --- a/plugins/knowledge/CHANGELOG.md +++ b/plugins/knowledge/CHANGELOG.md @@ -15,6 +15,10 @@ only after that version increases. loading, and the reinstall landed at a scope that does not load. Both commands now carry `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix already applied to `session-flow` and `rate-limit-guard` in #1393. + The recipe also now requires the reinstall to re-supply **every** key whose value should + stay non-default, not only the key being changed: uninstalling drops the stored + `pluginConfigs` entry, so an omitted key silently falls back to its manifest default. + Record the current values before uninstalling. ## [0.9.4] diff --git a/plugins/knowledge/skills/setup/SKILL.md b/plugins/knowledge/skills/setup/SKILL.md index ed8902242..950b79fb9 100644 --- a/plugins/knowledge/skills/setup/SKILL.md +++ b/plugins/knowledge/skills/setup/SKILL.md @@ -67,7 +67,13 @@ reports "already configured". commands default to `-s user` — pass the scope `claude plugin list` reports for this plugin, and run from that project's directory for a `project`/`local` scope. 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. The rendered value is injected at skill load, + reinstall lands at a scope that does not load. Uninstalling also drops the stored + `pluginConfigs` entry, so the reinstall must re-supply **every** key whose value should stay + non-default — passing only `library_dir` silently resets `max_concurrent_acquires`, + `yt_dlp_cookies_file`, `yt_dlp_cookies_from_browser`, and `yt_dlp_js_runtimes` to their + manifest defaults, which can break extraction on a machine that needed them. Record the current + values before uninstalling; afterwards there is nothing left to read them from. + The rendered value is injected at skill load, so a change takes effect in a fresh session — report the observed value and defer verification to that fresh session; do not claim a change this session. For a root outside the project and home directories, recommend the portable value forms from the diff --git a/plugins/source-control/CHANGELOG.md b/plugins/source-control/CHANGELOG.md index 8dc5d7fd2..d4bfb4679 100644 --- a/plugins/source-control/CHANGELOG.md +++ b/plugins/source-control/CHANGELOG.md @@ -14,6 +14,10 @@ All notable changes to the `source-control` plugin are documented here. Format f loading, and the reinstall landed at a scope that does not load. Both commands now carry `-s `, sourced from what `claude plugin list` reports for this plugin — the same fix already applied to `session-flow` and `rate-limit-guard` in #1393. + The recipe also now requires the reinstall to re-supply **every** key whose value should + stay non-default, not only the key being changed: uninstalling drops the stored + `pluginConfigs` entry, so an omitted key silently falls back to its manifest default. + Record the current values before uninstalling. ## [0.31.3] diff --git a/plugins/source-control/skills/setup/SKILL.md b/plugins/source-control/skills/setup/SKILL.md index c39e49e3e..b137f9177 100644 --- a/plugins/source-control/skills/setup/SKILL.md +++ b/plugins/source-control/skills/setup/SKILL.md @@ -251,7 +251,12 @@ sanctioned paths: commands default to `-s user` — pass the scope `claude plugin list` reports for this plugin, and run from that project's directory for a `project`/`local` scope. 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. + reinstall lands at a scope that does not load. Uninstalling also drops the stored + `pluginConfigs` entry, so the reinstall must re-supply **every** key whose value should stay + non-default, not only the key being changed — this plugin declares twenty-nine, so a reinstall + that passes one silently resets the babysit fleet's owners, logins, tiers, caps, and worktree + roots to their manifest defaults. Record the current values before uninstalling; afterwards + there is nothing left to read them from. Reconfiguring `userConfig` does not reach the already-running session — after either path, the new values become visible only in a fresh session. Do not re-run the babysit `check` in the same session