fix: gate cross-plugin routing on enabled, not installed - #5985
Conversation
#5897 turned 44 plugins off by default. An installed but disabled plugin exposes no skills, so a default-on plugin's "if installed" gate on one of them now passes when the target is unusable. Change those gates, and the shared hook library's harness-ops notice, to "enabled". Wording only. Closes #5934 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # plugins/actionlint/CHANGELOG.md # plugins/animation/.claude-plugin/plugin.json # plugins/animation/CHANGELOG.md # plugins/autonomy/.claude-plugin/plugin.json # plugins/autonomy/CHANGELOG.md # plugins/bash-format/CHANGELOG.md # plugins/biome-format/CHANGELOG.md # plugins/context-guard/.claude-plugin/plugin.json # plugins/context-guard/CHANGELOG.md # plugins/desktop-notification/CHANGELOG.md # plugins/docs-hygiene/.claude-plugin/plugin.json # plugins/docs-hygiene/CHANGELOG.md # plugins/eol-normalizer/CHANGELOG.md # plugins/go-format/CHANGELOG.md # plugins/guardrails/CHANGELOG.md # plugins/harness-ops/.claude-plugin/plugin.json # plugins/harness-ops/CHANGELOG.md # plugins/instruction-placement/.claude-plugin/plugin.json # plugins/instruction-placement/CHANGELOG.md # plugins/markdown-format/CHANGELOG.md # plugins/planning/CHANGELOG.md # plugins/powershell-format/CHANGELOG.md # plugins/rate-limit-guard/CHANGELOG.md # plugins/review/.claude-plugin/plugin.json # plugins/review/CHANGELOG.md # plugins/ruff-format/CHANGELOG.md # plugins/session-flow/.claude-plugin/plugin.json # plugins/session-flow/CHANGELOG.md # plugins/source-control/.claude-plugin/plugin.json # plugins/source-control/CHANGELOG.md # plugins/tdd/CHANGELOG.md # plugins/testing/.claude-plugin/plugin.json # plugins/testing/CHANGELOG.md # plugins/typos-format/CHANGELOG.md # plugins/verification/CHANGELOG.md # plugins/visualization/.claude-plugin/plugin.json # plugins/visualization/CHANGELOG.md # plugins/work-items/.claude-plugin/plugin.json # plugins/work-items/CHANGELOG.md # plugins/writing/.claude-plugin/plugin.json # plugins/writing/CHANGELOG.md
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @kyle-sexton's task in 4m 42s —— View job Code review complete
This is a wide but mechanical PR: reword "installed" → "enabled" on gate lines whose target plugin ships Two small wording inconsistencies survived the rewording itself, both posted as inline comments:
Both are prose-precision nits (not functional bugs) in a PR whose entire point is wording precision, so I flagged them rather than treating them as pure style. Author-claimed verification (sync-hook-utils, check-changelog-parity, catalog generation, markdownlint, JSON parsing) was not independently re-run by me; I took the diff and the marketplace catalog as ground truth instead. |
|
Claude finished @kyle-sexton's task in 1m 2s —— View job Security review (
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1e55e9d9d8
ℹ️ 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".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # plugins/guardrails/CHANGELOG.md # plugins/harness-ops/CHANGELOG.md # plugins/session-flow/CHANGELOG.md # plugins/source-control/.claude-plugin/plugin.json # plugins/source-control/CHANGELOG.md
|
Claude finished @kyle-sexton's task in 1m 23s —— View job Security review (
|
|
Claude finished @kyle-sexton's task in 3m 43s —— View job Code review complete
This pass re-reviews the head produced by this push ( New finding (posted inline on Carried forward, not re-posted: the two wording inconsistencies Codex and Claude already flagged on commit Author-claimed verification ( |
…llback prep.md's governing sentence now says "enabled", so its per-item gates on docs-hygiene, review and verification say it too; downstream.md's "Neither enabled" now summarizes two conditions worded the same way. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 11s —— View job Security review (
|
|
Claude finished @kyle-sexton's task in 2m 51s —— View job Code review complete
This pass reviews the head produced by this push ( New finding (cross-file, posted here rather than inline since no single changed line carries it): fixing the internal contradiction this way widens the PR's stated scope rather than reverting the governing sentence.
Every other reference to these same four plugins across the repo (e.g. Carried forward, not re-posted: the CHANGELOG citation inconsistency flagged on Author-claimed verification ( |
…lts (#5987) No related issue: follow-up to #5897 and #5934, so this repo's own `enabledPlugins` holds only deltas against the new catalog defaults. ## Summary `.claude/settings.json` is project scope. Each key in its `enabledPlugins` block pins that plugin's state, and in every local checkout it writes a project-scope install record. After #5897, a `true` for a plugin that is on by default changes nothing in the cloud. Locally it writes that record and forces the plugin on in this checkout whatever the user's own scope says. Dropping it leaves the plugin's local state to the user's own scope, the same as every other on-by-default plugin, none of which carries a key here. A `true` for a plugin that is off by default enables it in every session in this repo, and in cloud sessions too. ## Fix `.claude/settings.json` `enabledPlugins`: - Kept unchanged: every `false` (animation, dometrain-mcp, gaming, pixel-art, playgrounds, retro-audio). No other marketplace has entries here. - Dropped `true` for `multi-agent`, which is on by default, and for `fleet` and `harness-memory`, which are off by default and not needed to work in this repo. - Kept or added `true` only for off-by-default plugins this repo's workflow uses: - `ai-slop`: the PR prep markdown audit (`/ai-slop:audit`). The repo keeps its config in `.claude/ai-slop.json`. - `docs-naming`: the remediation for CI's lower-kebab `docs/` filename gate (ADR 0034). - `evals`: authoring and validating the `evals/` suites that skills ship (`/evals:design`, which `.claude/rules/eval-case-transcripts.md` names). - `harness-config`: `/harness-config:audit`, whose kept findings live in `.claude/audit-pass.md`. - `harness-ops`: lane operation and telemetry that `docs/conventions/loop-lane` routes to (`/harness-ops:lanes`, `/harness-ops:morning-brief`). - `instruction-placement`: the PR prep rules audit, and the generated rules index in `AGENTS.md`. - `plugin-quality`: behavioral audits of the plugins this repo publishes. - `skill-quality`: the PR prep skills gate (`/skill-quality:check`). `docs/cloud-fleet-setup.md`: three places still said the fleet list was the standards repository's `fleet-plugins.json`, which standards#663 deleted. They now say the list is derived from this repo's catalog (every entry whose `defaultEnabled` is absent or `true`), which matches `setup.sh` in standards. `docs/cloud-sessions.md` was already correct. ## Verification - `scripts/check-plugin-catalog-enablement.sh`: every key names a catalogued plugin, none orphaned, keys sorted. Its test reports PASS=13 FAIL=0. - `scripts/check-hook-wiring-liveness.sh`: pass. `jq empty .claude/settings.json`: valid. - `markdownlint-cli2 docs/cloud-fleet-setup.md`: 0 issues. - No other doc in the tree still names `fleet-plugins.json`. ## Related - #5897 (catalog defaults), #5936 (the gate now checks deltas, not coverage), #5934 / #5985 (the gate wording sweep). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Reply to the 04:46 review pass:
|
# Conflicts: # plugins/harness-ops/.claude-plugin/plugin.json # plugins/harness-ops/CHANGELOG.md # plugins/planning/.claude-plugin/plugin.json # plugins/planning/CHANGELOG.md # plugins/session-flow/.claude-plugin/plugin.json # plugins/session-flow/CHANGELOG.md
|
Claude finished @kyle-sexton's task in 2m 40s —— View job Security review (
|
|
Claude finished @kyle-sexton's task in 3m 22s —— View job Code review complete
This push adds one commit on top of the already-reviewed head Merge conflict resolution checked. The merge reported conflicts in six files — No new reviewable content. Diffing Carried forward, not re-posted: the author already replied in-thread to the prior pass's two findings — the widened "enabled" scope in No new inline comments posted this pass; nothing new to flag. |
# Conflicts: # plugins/planning/CHANGELOG.md
|
Claude finished @kyle-sexton's task in 1m 28s —— View job Security review (
|
|
Claude finished @kyle-sexton's task in 1m 45s —— View job Code review complete
This push adds two commits on top of the already-reviewed head Merge conflict resolution checked. No new reviewable content from this PR. Previously flagged findings, re-verified at this head:
No new findings and no new inline comments this pass. Author-claimed verification ( |
Closes #5934
Summary
#5897 turned 44 plugins off by default. A plugin that is installed but disabled exposes no skills, so a default-on plugin that routes to one of them "if installed" takes a branch whose target cannot run. This PR changes those gates to "enabled", wording only.
Fix
defaultEnabled: false: ai-slop, architecture, autonomy, code-metrics, context-guard, discipline, docs-naming, domain-driven-design, education, harness-config, harness-memory, harness-ops, instruction-placement, mutation-testing, performance, playbooks, playgrounds, plugin-quality, prototype, skill-quality. Fallback wording that said "absent plugin" or "when absent" now says the plugin is not enabled.lib/hook-utils.sh: the missing-prerequisite notice says "If the harness-ops plugin is enabled". Synced to all 20 carrying copies withscripts/sync-hook-utils.sh.semgrep-rule-creator, the first-partyplayground) are unchanged, with two exceptions. Insource-control'spull-request/reference/prep.md, the governing sentence covers every gate under it, so thedocs-hygiene,reviewandverificationgates there also say "enabled". Inreview'squality-gate/context/downstream.md, thetestinggate also says "enabled", to match the "Neither enabled" fallback that covers both gates. Elsewhere, gates on on-by-default plugins still say "installed". CHANGELOG history is unchanged.hook-utils.sh.Verification
scripts/sync-hook-utils.sh --checkand--check-bump origin/main: pass.scripts/check-changelog-parity.sh --checkand--check-bump origin/main: pass.node scripts/generate-catalog.mjs --check,scripts/check-skill-count-claims.sh --check,python3 scripts/sync-plugin-options-docs.py --check: pass.markdownlint-cli2on the 61 changed markdown files: 0 issues. Every changed JSON file parses.*.test.sh,*.test.mjs,test_*.py, and*.Tests.ps1).Related
plugins/session-flow/skills/find-handoff/reference/rung-1-known-location.mdmentions the harness-ops lane launcher "when that plugin is installed" as a description, not a gate, so it is unchanged.🤖 Generated with Claude Code