Repository navigation
fix(user-interface): name the settings source so design never searches its plugin root - #11996
Conversation
…s its plugin root When detect cannot run (no shell, as in an eval run, or no node), design now takes its settings from reference/defaults.yaml by path, and the animation catalog names both sources of its resolved animation: config. Eval runs had searched the plugin root for those values, and the sandbox denied them. Closes #11980 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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-security-review reviewed Security review (incremental, d951f7d..c839eed)No security issues found. What changed
Instruction-surface check. The skill change loosens a standing instruction slightly, so I checked it by what it does. The rule controls where the design skill looks for its own reference files, and it exists so eval runs stop hitting the sandbox's search denials. It is not a guardrail on a destructive, credential, publishing or trust action. Without it, the skill can list one read-only reference directory inside its own installed plugin. That reaches no secret, token, outside service or write path. The rule against searching the plugin root broadly still stands, and searches still go to the project. I did not consult the instruction exception register file because nothing in this change comes near its protected classes.
critical-findings: 0 |
|
claude-review reviewed Incremental review (d951f7d → c839eed): no findingsI read every hunk of both files in scope: What changed
Assessment
Closing issue #11980
No plugin manifests changed. Neither file in scope matches a trusted-path glob. I found no embedded directives in the PR context. |
Step 3 lists reference/types/, which a Glob reaches; only the plugin root is denied in the eval sandbox. The gotcha now allows the directories the skill names and bans Grep and Glob on the root alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes #11980
Summary
Under
claude plugin eval, the sandbox denies Grep and Glob on a plugin's own directory, and the design skill searched there for its settings and for animation techniques. Those denials made both sides of #11549's round 2 INVALID. This change has design reach plugin files only by the paths it andconcerns.jsonname, and says where its settings live when detect cannot run.Fix
plugins/user-interface/skills/design/SKILL.md(Gotchas): with no shell or nonode, take every resolved setting fromreference/defaults.yaml; reach plugin files only by named paths, never Grep or Glob the plugin's directory, search the project instead.plugins/user-interface/reference/animation/catalog.md: one sentence after the opening says the resolvedanimation:config is detect'sconfig.values.animation, or theanimation:block ofreference/defaults.yamlwhen detect cannot run..changes/user-interface/fix-11980-plugin-root-search-9b2d4e17.md.Verification
Decision rule written before any run. Sides:
plugins/user-interfaceat main, and this branch. Cases: the four whose #11549 round-2 traces held plugin-root denials, with the design skill named in the prompt, identical on both sides. Glob and Grep allowed;claude plugin eval --runs 3 --scaffold --ablation none --judge-model opus, Claude Code 2.1.316.run-validity.py --runs 3 --scaffolded)The first candidate banned only settings searches and left one technique search (
accordion|interpolate-size|...) denied; an amendment recorded before the second run widened the gotcha to every plugin-root Grep or Glob, and the head column is that second run.check-skill.shpasses design (0 errors; its existing length warnings plus a 2-line growth warning).Related
🤖 Generated with Claude Code