fix(plugin): a line break split the token a guidance guard matches on (#4103)
CI & Build / Python lint (push) Successful in 3s
CI & Build / Plugin hooks (push) Successful in 13s
CI & Build / integration (push) Successful in 49s
CI & Build / TypeScript typecheck (push) Successful in 54s
CI & Build / Python tests (push) Successful in 1m32s
CI & Build / Build & push image (push) Successful in 23s

CI 6973 — `test_guidance_ownership` on "rules are retrieved; ask before
a consequential act": the using-scribe skill was missing the marker
`content_type="rule"`.

It was there. I had hard-wrapped the new bullet across `content_type=`
/ `"rule"`, and that guard matches its MARKERS raw while normalising
whitespace only for the longer `statement` — which is why the failure
reported the statement present and the marker absent in the same
breath. Rewrapped so the token sits on one line.

Worth noting rather than just fixing: the markers are deliberately
raw-matched, since a marker IS a literal a reader copies. `tool_doc`
flattens for exactly the opposite reason one layer over. Both are
right; the trap is that they differ.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01821k5B3Ysecp9fNYs92Kuy
This commit is contained in:
2026-09-17 12:20:56 -04:00
co-authored by Claude Opus 5
parent 381c90ca7e
commit dcf800ed65
+5 -5
View File
@@ -82,12 +82,12 @@ Two constraints on *how* that's achieved:
just underneath — right for something firing before every command, wrong just underneath — right for something firing before every command, wrong
for the one moment you actually want to be sure. Expect the tail to be for the one moment you actually want to be sure. Expect the tail to be
noise; you are reading for the one record you would have missed. noise; you are reading for the one record you would have missed.
- **When you already suspect a particular rule**: `search(content_type= - **When you already suspect a particular rule**: reach for
"rule")` for full statements, or `get_rule(id)` when it is about to bite. `search(content_type="rule")` to read full statements, or `get_rule(id)`
when one is about to bite.
When a project is in scope, pass Either way, when a project is in scope pass its `project_id`: the answer is
its `project_id`: the answer is then the global rules plus that project's then the global rules plus that project's own, never another project's. `enter_project(id)` lists the project's own
own, never another project's. `enter_project(id)` lists the project's own
rules by title. rules by title.
**`kind` says how much force a record carries, and it is never something to **`kind` says how much force a record carries, and it is never something to