You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
refactor(prerequisites): five plugins' notices have no emitter, and degrade text prints a literal <plugin root> #12570
The prerequisites notice contract assumes a plugin's missing tool reaches the person through a notice naming the plugin's checker. For at least 5 plugins nothing emits that notice, and where degrade text does print, it holds a literal placeholder.
No emitter. discovery, rate-limit-guard, multi-agent, review and context-guard declare no session_probe, and their prerequisites.json has no entry whose for names a hook. No hook script of theirs calls hook::require. docs/contracts/prerequisites/README.md says a plugin without session_probe "is never probed at session start", and lib/prerequisites.mjs notifies only for hook:-scoped entries. With node absent, the person sees only harness-ops' fixed line from lib/prerequisites.sh, which names no per-plugin checker.
Placeholder in user text.refactor(plugins): delete 5 hook-runtime check skills (*:check wave 1, part A) #12564 moves probe scripts out of skills/check and names them in each entry's degrade as bash <plugin root>/scripts/.... userNotice and the check mode print degrade unchanged, so the reader gets a command that does not run as written. Only the trailing diagnose with: command has the resolved root.
With the per-plugin check skills deleted (#12486), these probes are reachable only from a check FAIL line or the README. The check skills were invocable by name.
What to decide
Which is the right entry point for these plugins' probes? Options seen so far, none chosen:
Resolve <plugin root> in the renderer. Touches lib/prerequisites.mjs and lib/hook-utils.sh, so 73 and 20 generated copies plus a release fragment each; it may need its own size check against the cap.
Reword the 5 degrade sentences to point at the path in diagnose with:. Touches no shared copy.
Give these entries a real emitter (session_probe or hook:-scoped for), which adds session-start cost per plugin.
List the probes in /harness-ops:prerequisites output.
Done when
A person whose hook dependency is missing in one of these plugins can reach a command that runs as written, shown by a merge probe on a host.
No notice or check line prints a literal <plugin root>.
Filed by the lane 4 session. This was generated by AI.
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Small
Complexity: Low
Uncertainty: Known
Flags: none
Blocked by: none
Understood: five plugins' degrade sentences print a literal <plugin root>, and the issue asked which entry point their probes should get.
Decision recorded.
Agent choice, not an owner answer.
Option 2: reword the five degrade sentences so the command they name runs as written, pointing at the plugin root that the diagnose with: command already prints resolved. Basis:
[quote truncated; the full decision is at the link]
This decision settles the open questions: option 2, the missing emitter is accepted as is, and the host merge probe moves to #13072. The remaining work is the reword in the five prerequisites.json files. It is a bounded change.
Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.
Intended outcome: Reword the five plugins' degrade sentences to point at the diagnose with: path (option 2), with the host merge probe kept as a separate person-run check.
Which entry point do these plugins' probes get: renderer resolves <plugin root> (1), reword the five degrade sentences (2), add a real emitter (3), or list probes in /harness-ops:prerequisites (4)?
RECOMMENDED: Option 2: reword the five degrade sentences to point at the path in diagnose with:. It touches no shared copy and adds no session-start cost. Basis: judgment
Should the 'merge probe on a host' done-when item stay a separate host-run check that a person performs?
RECOMMENDED: Yes. An unattended run cannot do a host merge probe, so keep it as a person-run check. Basis: judgment
Is the missing notice emitter for the five plugins (no session_probe, no hook-scoped entry) in scope here or accepted as is?
RECOMMENDED: Accept as is for this issue, and fix only the placeholder text. Option 3 conflicts with the session-start cost concern in #6633. Basis: 6633
Sources read
/home/runner/work/claude-code-plugins/claude-code-plugins/refine-data/context.json: the issue lists four options and chooses none, and no **Decision recorded.** comment exists
plugins/plugin-quality/lib/prerequisites.mjs:564: the checker takes a plugin root as an argument; I did not trace how degrade is rendered
To answer, post a comment that starts with this line:
**Decision recorded.** <answer>
Automated refinement by the lanes App. Answer with a comment whose first line is **Decision recorded.**.
Decision recorded.
Agent choice, not an owner answer.
Option 2: reword the five degrade sentences so the command they name runs as written, pointing at the plugin root that the diagnose with: command already prints resolved. Basis:
The five sentences still print a literal <plugin root> on origin/main: plugins/context-guard/prerequisites.json:39, plugins/discovery/prerequisites.json:15, plugins/multi-agent/prerequisites.json:15, plugins/rate-limit-guard/prerequisites.json:39, plugins/review/prerequisites.json:89.
userNotice prints entry.degrade unchanged and only its diagnose with: tail carries the resolved ${entry.root} (lib/prerequisites.mjs:713-721).
The missing emitter for these five plugins is accepted as is (refinement question 3): the body quotes the prerequisites contract saying a plugin without session_probe "is never probed at session start", so this is the contract working as written, not a defect this issue changes. None of the owner's three reasons applies: the choice keeps the issue's intent, changes no primary design, and touches no secret, account or bill.
Body item 1, the merge probe on a host, is not lane work: it moves to host-run #13072, which starts after this issue's pull request merges. The lane's list is:
The degrade sentences at plugins/context-guard/prerequisites.json:39, plugins/discovery/prerequisites.json:15, plugins/multi-agent/prerequisites.json:15, plugins/rate-limit-guard/prerequisites.json:39 and plugins/review/prerequisites.json:89 point at the plugin root the diagnose with: command names, so the command they give runs as written.
No notice or check line prints a literal <plugin root>.
The work-resolve-issue run that agent-ready started failed or was cancelled before it reported, or it stopped or the token broker refused it because its workflow files differ from main's. work-unblock removed and added agent-ready back to start a fresh run on main's workflow files. If this run ends the same way, it re-fires the issue again, waiting longer each time.
Activity
github-actions commentedon Nov 3, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Small
Complexity: Low
Uncertainty: Known
Flags: none
Blocked by: none
Understood: five plugins'
degradesentences print a literal<plugin root>, and the issue asked which entry point their probes should get.#12570 (comment)
This decision settles the open questions: option 2, the missing emitter is accepted as is, and the host merge probe moves to #13072. The remaining work is the reword in the five
prerequisites.jsonfiles. It is a bounded change.Automated triage, applied by the lanes App.
melodic-automation-lanes commentedon Nov 3, 2026
The latest triage verdict holds nothing: the issue is at
status: ready.melodic-automation-lanes commentedon Nov 3, 2026
Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.
Intended outcome: Reword the five plugins'
degradesentences to point at thediagnose with:path (option 2), with the host merge probe kept as a separate person-run check.Related work
Open questions
RECOMMENDED: Option 2: reword the five degrade sentences to point at the path in
diagnose with:. It touches no shared copy and adds no session-start cost. Basis: judgmentRECOMMENDED: Yes. An unattended run cannot do a host merge probe, so keep it as a person-run check. Basis: judgment
RECOMMENDED: Accept as is for this issue, and fix only the placeholder text. Option 3 conflicts with the session-start cost concern in #6633. Basis: 6633
Sources read
**Decision recorded.**comment existsdegradeis renderedTo answer, post a comment that starts with this line:
Automated refinement by the lanes App. Answer with a comment whose first line is
**Decision recorded.**.kyle-sexton commentedon Nov 4, 2026
Decision recorded.
Agent choice, not an owner answer.
Option 2: reword the five
degradesentences so the command they name runs as written, pointing at the plugin root that thediagnose with:command already prints resolved. Basis:<plugin root>onorigin/main:plugins/context-guard/prerequisites.json:39,plugins/discovery/prerequisites.json:15,plugins/multi-agent/prerequisites.json:15,plugins/rate-limit-guard/prerequisites.json:39,plugins/review/prerequisites.json:89.userNoticeprintsentry.degradeunchanged and only itsdiagnose with:tail carries the resolved${entry.root}(lib/prerequisites.mjs:713-721).The missing emitter for these five plugins is accepted as is (refinement question 3): the body quotes the prerequisites contract saying a plugin without
session_probe"is never probed at session start", so this is the contract working as written, not a defect this issue changes. None of the owner's three reasons applies: the choice keeps the issue's intent, changes no primary design, and touches no secret, account or bill.Body item 1, the merge probe on a host, is not lane work: it moves to host-run #13072, which starts after this issue's pull request merges. The lane's list is:
degradesentences atplugins/context-guard/prerequisites.json:39,plugins/discovery/prerequisites.json:15,plugins/multi-agent/prerequisites.json:15,plugins/rate-limit-guard/prerequisites.json:39andplugins/review/prerequisites.json:89point at the plugin root thediagnose with:command names, so the command they give runs as written.checkline prints a literal<plugin root>.1 remaining item
github-actions commentedon Nov 4, 2026
github-actions commentedon Nov 4, 2026
github-actions commentedon Nov 4, 2026
melodic-automation-lanes commentedon Nov 4, 2026
The work-resolve-issue run that
agent-readystarted failed or was cancelled before it reported, or it stopped or the token broker refused it because its workflow files differ from main's. work-unblock removed and addedagent-readyback to start a fresh run on main's workflow files. If this run ends the same way, it re-fires the issue again, waiting longer each time.github-actions commentedon Nov 4, 2026