Skip to content

fix: make the loader install on every host, measure its triggers, record the case study (#17) - #32

Merged
lukemaj merged 4 commits into
mainfrom
docs/17-loader-trigger-check
Sep 29, 2026
Merged

lukemaj merged 4 commits into
mainfrom
docs/17-loader-trigger-check

Conversation

@lukemaj

@lukemaj lukemaj commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

What: The loader Skill now installs on all four hosts and loads before the first edit on authoring, audit and tool-description requests; the benchmark and discovery output are recorded as a case study.
Why: plugin.json gave author as a string, so Claude Code refused the plugin and Grok Build installed it with no Skills; separately, the description never named tool descriptions (0/10 loads on that prompt).
So what: Needs independent review, then the user's merge. Behavioral verification in real projects stays with the user.

Closes #17
Refs #7

Changes

  • .claude-plugin/plugin.json: "author": { "name": "lukaszmaj" } (the only manifest change; the docs need no skills field).
  • Loader description: one before-clause, "before writing or changing an MCP or agent tool description".
  • case-studies/2026-09-30-loader-trigger-benchmark.md plus evidence manifest, and case-studies/evidence/2026-09-30-loader-trigger-benchmark/ (84 records, summary.md, discovery.txt, trigger_test.py, discover.py).
  • tests/check-loader-benchmark-records.test.sh: summary.md must regenerate byte for byte from records.jsonl, and the scorer self-test must pass.
  • One sentence in docs/08-packaging-as-plugin.md, README and docs.json entries, CHANGELOG [Unreleased] lines, regenerated public/llms.txt.

Results (from summary.md)

Host, model author audit tool: before / after negative clean
Claude Code, Opus 5.5 medium 5/5 5/5 0/5 / 4/5 (5/5 loaded, 1 read then no edit) 3/3, 3/3
Codex, gpt-6-astra low 5/5 5/5 0/5 / 5/5 3/3, 3/3
Grok Build, grok-4.7 medium 3/3 3/3 3/3 / not re-run 2/2
OpenCode, Muse 1.3 3/3 3/3 2/3 / not re-run 2/2

Control (copy present, not installed): Codex 0/5; Claude Code 1/5, by browsing the --add-dir copy. Arm refs f8db18e and eec057d predate the rebase and stay on branch evidence/17-loader-benchmark-arms.

Proof

  • Discovery per host, main vs fix, no model call: discovery.txt (Claude Code author: Invalid input / loaded; Grok Skills (0) / Skills (1); Codex and OpenCode listed both times).
  • Docs cited with dates: Claude Code plugin manifest reference and Codex Build skills, read 2026-09-30.
  • Confinement proven with real denials before the batch on every host (probe file under the real home: read and write denied; loader copy readable, repository writable); guard, cleanup and scorer self-checks passed; no guard abort in 84 runs.
  • npm ci && npm test on Node 22.23.1 at 8a64ed6: exit 0 (includes the new records test and the Gate version anchors and CHANGELOG entries in npm test #22 version and changelog gate).
  • The new test rejects a scorer that counts refused reads (expected loaded-only, got fired) and an edited record.

Deviations from the ticket

  • Hosts: the ticket scoped Claude Code and Codex; the planner added Grok Build and OpenCode at about 60 runs, so those two ran 3 per cell with no control or re-measure. Total 84 runs (68 batch + 16 re-measure).
  • The tool-description case was added at the planner's request (from Tool descriptions are activation contracts; deferred loading hides them #4).
  • Control: 5 pooled runs per host (2, 2, 1 per prompt), below 5 per prompt and arm; the case study limits it to a floor for loads without installation and draws no per-prompt comparison.
  • No version bump: the release step belongs to the user per AGENTS.md; entries are under [Unreleased].

Elon record

  • Requirements and who asked: Verify the loader Skill is discoverable and triggers on authoring and audit requests #17 (user, via Move TODO.md, the drift-prevention draft and the continuous-learning handoff into Issues #11): verify discovery against current docs, benchmark per trigger-benchmarks, record a case study, fix the smallest mechanism on a miss. Planner: four hosts and models, about 60 runs, a tool-description prompt, remeasure after a description change.
  • Deleted: main-arm model runs (discovery shows the plugin does not load on Claude Code and Grok, so those runs would score 0 by construction); a per-row sweep of all loader routes; the draft's skills: field fix (docs show it is unnecessary); control, re-measure and 5-run cells on Grok and OpenCode (outside the ticket's hosts and the run budget).
  • Bottleneck: discovery. The Skill never loaded on two hosts because of one manifest field, so no wording could matter until that was fixed.
  • Checked myself: ran claude plugin validate, grok plugin validate, grok inspect, codex debug prompt-input, opencode debug skill on both refs; read the call list of every miss and of the control hit; recomputed every number in the case study from records.jsonl; verified manifest hashes.

🤖 Generated with Claude Code

lukemaj and others added 4 commits September 30, 2026 00:37
…he loader (#17)

Claude Code 2.1.284 refused the plugin (author: Invalid input) and Grok 1.0.44
installed it with no Skills; both expect author as an object with a name.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The loader never loaded on a tool-description prompt on Claude Code (0/5) or
Codex (0/5); the description named only Skill artifacts.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…dy (#17)

84 confined runs on Claude Code, Codex, Grok Build and OpenCode with committed
records, the discovery output, the harness, and a test that regenerates the
summary from the records.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…oor (#17)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@lukemaj
lukemaj merged commit f8264f6 into main Sep 29, 2026
2 checks passed
@lukemaj
lukemaj deleted the docs/17-loader-trigger-check branch September 29, 2026 22:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Verify the loader Skill is discoverable and triggers on authoring and audit requests

1 participant