feat(mcp): make Scribe reflexively recall + scope reads to the active project #61
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Makes the MCP surface advertise recall as well as it advertised writing, and closes the wiring gap that made project-scoped reads impossible.
Why
searchandlist_notesdropped theproject_idtheir underlying services already support, so a scoped search was impossible — every query swept all projects and bled unrelated work into the session.Changes
search,list_notes: addproject_idparam, wired to the service.search,list_notes,list_tasks: trigger-worded descriptions that push passing the active project's id and reserveproject_id=0for a deliberate cross-project sweep._INSTRUCTIONS: add a "Reach for Scribe to RECALL, not just to record" block — search before answering/starting, check for an existing ticket beforecreate_task, scope reads to the active project (which doesn't stick on the stateless server).Paired out-of-band with always-on rule #75 ("Search Scribe first, scoped to the active project") in the FabledSword-family rulebook, and a memory pointer binding this repo to the FabledScribe project (prod id 2 / dev id 3).
CI green on dev (run #541) at head
e3c6124.🤖 Generated with Claude Code
The MCP surface advertised writing well but recall poorly, and project scoping had no anchor that survived past enter_project's snapshot: - search / list_notes dropped the project_id their services already support, so a scoped search was impossible — every query swept all projects and bled unrelated work into the session. - The tool descriptions were mechanical ("Semantic search over the user's notes and tasks") with no trigger telling Claude WHEN to reach for them; the server instructions were all write-discipline and said nothing about searching before answering or starting work. Changes: - search, list_notes: add project_id param, wired to the service. - search, list_notes, list_tasks: trigger-worded descriptions that push passing the active project's id and reserve project_id=0 for a deliberate cross-project sweep. - _INSTRUCTIONS: add a 'Reach for Scribe to RECALL, not just to record' block — search before answering/starting, check for an existing ticket before create_task, scope reads to the active project (which does not stick on the server). Paired with always-on rule #75 in the FabledSword-family rulebook. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>