fix(claude-config): discharge nine stranded review findings in audit-instructions and setup - #2003
Conversation
…w threads Stop hardcoding ~/.claude in the audit-instructions guidance that forbids it; drop the "or preloads" clause from the I3 deferral bar since skills: injects full skill content into every dispatch; inventory subagent-owned memory in Phase A and add the co-residency row it feeds; make the hook liveness procedure per-scope; narrow the C6 route to root-level project pairs; add the missing polarity-bearing coordination boundary to BOUNDARY_ERE; and name the awk/sort prerequisites the README omitted. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… all prerequisites Continues the audit-instructions batch. Adds the agent-memory inventory bullet and its co-residency row with a config-root-aware user path, makes the hook liveness procedure resolve per scope so managed hooks survive a user, project, or local disable, and names the awk and sort prerequisites the README omitted alongside jq and curl. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Fix the test message whose backticks ran `and` as a command and blanked the assertion label, resolve the two residual `~/.claude` operative paths the skill's own rule forbids, and record the batch in the changelog against a bumped version. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… docs Fetched hooks, memory, and sub-agents and diffed every citation the batch introduced. Three did not survive: `disableAllHooks` has no documented "own level and below" cascade — its reach is all hooks with a managed carve-out; the `skills:` citation was a splice of two real sentences; and imports recurse "with a maximum depth of four hops", a figure the text pointed at without naming. The `AGENTS.md` import is recommended, not prescribed, and mandated only on Windows. Subagent memory paths take upstream's `<name-of-agent>` placeholder, and the auto-memory gate names what the subagent actually loses. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Claude finished @kyle-sexton's task in 1m 47s —— View job Security Review — PR #2003
No security issues found. Scope of this PR: a version bump ( What I specifically checked and ruled out:
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e59a42a7d5
ℹ️ 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".
|
Claude finished @kyle-sexton's task in 4m 57s —— View job Review: nine stranded findings,
|
|
Claude has reviewed this PR 5 times. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
Main shipped 0.22.0 while this work sat, so the branch's entry is renumbered to 0.22.1 and stacked above it; the manifest follows. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 5m 1s —— View job Code Review — PR #2003One inline finding posted ( What I checkedI reviewed all 9 changed files against
I did not re-fetch the live Minor, non-blocking observationThe PR title/body says it "bumps the plugin to |
|
Claude finished @kyle-sexton's task in 1m 18s —— View job Security Review — PR #2003 (re-run at
|
Main shipped 0.23.0 through 0.25.0 and its own 0.22.1 while this work sat, so the branch's entry is renumbered to 0.25.1. The memory-layer sentence composes both sides: this branch's config-root-aware user path with main's widened I6-I27 check range. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 2m 6s —— View job Security Review — PR #2003 (re-run at
|
|
Claude finished @kyle-sexton's task in 4m 4s —— View job Code Review — PR #2003 (re-run at
|
Main shipped 0.26.0 and 0.27.0 while this work sat, so the branch's entry is renumbered to 0.27.1 and its description follows main's, which names the new audit-prompting-postures skill. The memory-layer sentence composes both sides: this branch's config-root-aware user path with main's widened I6-I28 range. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 59s —— View job Security Review — PR #2003 (re-run at
|
|
Claude finished @kyle-sexton's task in 2m 32s —— View job Code Review — PR #2003 (re-run at
|
…sifiers COORD_ERE carried a hand-copied list that had fallen behind MANDATE_ERE — `use`, `present`, and `ask` were in the classifier and missing from the coordinator, so `Never use X and use Y` found no boundary, Y inherited the leading `never`, and its pair with `Never use Y` went unreported while `Always use Y` produced a false one. `always` sat in both lists and masked the gap. The coordinator now composes the two classifier alternations instead of restating them, making the divergence unrepresentable. Adds regression cases for the bare-`use` and `present` forms; the existing `always` case is the control that passed throughout. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 30s —— View job Security Review — PR #2003 (re-run at
|
|
Claude finished @kyle-sexton's task in 4m 4s —— View job Code Review — PR #2003 (re-run at
|
…ntry The example strings contain backticked terms, so a single-backtick span parses as alternating code and plain runs rather than one literal example. Wraps them in double backticks and restores the dropped spaces. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Main shipped its own 0.27.1 (the audit-instructions description trim) while this work sat, so the branch's entry is renumbered to 0.27.2 and stacked above it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 47s —— View job Security Review — PR #2003 (re-run at
|
Summary
Discharges nine verifier-confirmed review findings against
claude-config'saudit-instructionsand
setupskills, and bumps the plugin to0.21.10with a changelog entry.Seven of the nine are instruction-surface defects in
audit-instructions— a skill that audits otherpeople's instruction surfaces and was violating its own rules on three of them. One is a scanner
false negative reproduced and fixed with tests. One is a prerequisite the docs understated by two
skills.
What changed, per finding
~/.claude, then hardcodes itSKILL.md:45,:75,:197,:219-222now resolve against the user root Phase A establishes@pathimports as non-deferring, then names askills:preload as a valid destinationcriteria.md:196-201strikes the preload; only conditional runtime invocation qualifiesmemoryis graded real but never inventoriedSKILL.md:216-229; co-residency row atconflict-criteria.md:98SKILL.md:175-185andconflict-criteria.md:270-292resolvedisableAllHooksper scope plusallowManagedHooksOnlySKILL.md:413-417narrows the boundary to root-level project;.claude/rules/**deliberately unchangedBOUNDARY_EREomitsand, dropping a real conflictCOORD_ERE/COORD_HEAD_EREatconflict-scan.sh:131-143, three new test casesjq/curlREADME.md:163-177andsetup/SKILL.md:28-33,46-52,106-108nameawk/sortacross all three skills that use them./.claude/CLAUDE.mdcriteria.md:612-621covers both supported root locations@pathimportscriteria.md:636-642resolves imports first, to four hopsFinding 6, reproduced
conflict-scan.sh --counton the finding's exact strings:origin/mainReadand never useBash" vs "Never useRead"Readbut never useBash" vs "Never useRead"A bare
andboundary would also return 1 for the first row while creating a new false negative:"Never use
BashandGrep" is one directive over two objects, and cutting at the coordinator stripsthe
nevergoverningGrep. The boundary therefore requires a polarity token afterand, and isconsumed asymmetrically — a leading window resumes after the coordinator alone so that token still
classifies its entity. Case 35 is the must-not-flag test and fails under a bare-
andboundary.Citations re-verified against the live docs
Every citation this batch introduced was diffed character-for-character against the raw markdown of
hooks,memory, andsub-agents(fetched 2026-08-08). Three did not survive and were corrected:disableAllHookshas no documented "own settings level and below" cascade. The docs say"Disable all hooks", with exactly one carve-out: set in user, project, or local settings it cannot
reach managed hooks. The earlier wording invented a directional cascade. Rewritten.
skills:citation was a splice of the frontmatter-table sentence and the body sentence,quotable as neither. Replaced with the real one: "The full content of each listed skill is injected
into the subagent's context at startup."
never names. Now states the figure and quotes the wording.
Also corrected: the
AGENTS.mdimport is recommended (a symlink is a co-equal alternative, and theimport is mandated only on Windows), not prescribed; subagent memory paths take upstream's
<name-of-agent>placeholder; and the auto-memory gate now names what the subagent actually loses —"the memory instructions or the memory tool access".
Also fixed in passing
conflict-scan.test.sh:378had unescaped backticks inside a double-quoted assertion message, so thesuite ran
andas a command (and: command not foundon stderr) and printed the label with a hole init. Exit status stayed 0, so no gate saw it. Now single-quoted, matching the file's existing idiom.
Deliberately not changed
${CLAUDE_CONFIG_DIR:-~/.claude}— that form is the correct resolver, not a hardcode.~/.claudeinside quoted upstream text (criteria.md:651,conflict-criteria.md:111) — altering aquotation is a worse defect than the one it would resolve.
.claude/rules/**routing toclaude-memory's C6 — C6's rules discovery is recursive, so nestedrules do not leak. Finding 5 is narrower than filed.
Testing
conflict-scan.test.sh— 46/46, no stderr noiseclaude-configplugin tests — PASScheck-changelog-parity.sh--check/--check-bump origin/main/--check-order— PASScheck-changed-skills.sh origin/main— 4 skills, 0 failed (audit-instructions281/500 lines)check-shell-portability.sh/check-skill-portability.sh— PASSshellcheck,markdownlint-cli2,typos— cleanvalidate-plugins.sh,check-contract-slice-prune.sh,check-contract-clause-coverage.py,check-silent-skips.sh,check-cross-plugin-source-drift.sh,check-skill-leaf-names.sh,check-orphaned-fixtures.sh— PASSRelated
Discharges review findings filed on #1316, #1343, and #1349.
No linked issue