feat(mcp): make Scribe reflexively recall + scope reads to the active project
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>
This commit is contained in:
@@ -39,6 +39,22 @@ Mechanics:
|
||||
"not set". On update_task, -1 clears an existing FK (e.g. milestone_id=-1
|
||||
removes the task from its milestone); 0 leaves it unchanged.
|
||||
|
||||
Reach for Scribe to RECALL, not just to record. Scribe is a second brain —
|
||||
its value is mostly in what it already holds, so make searching it a reflex,
|
||||
not something you wait to be asked for:
|
||||
- Before you answer a question about the user's work, or start a task, search
|
||||
Scribe first (search / list_tasks / list_notes). Assume relevant prior art
|
||||
already exists — a related ticket, an earlier decision, a dev-log — and look
|
||||
before you re-derive it or open a duplicate.
|
||||
- Before creating a task, search for an existing one (search content_type=
|
||||
'task') — don't open a second ticket for work already tracked.
|
||||
- Scope reads to the project in scope. When a project is active (you called
|
||||
enter_project), pass its project_id to search / list_tasks / list_notes so
|
||||
results stay inside that project. Querying with no project_id pulls in every
|
||||
project and bleeds unrelated work into the session — only do it for a
|
||||
deliberate cross-project sweep. The active project does not stick on the
|
||||
server (each call is self-contained); carrying its id forward is on you.
|
||||
|
||||
Keep task state honest — this is what makes the project a trustworthy record:
|
||||
- When you begin working a task, set it to in_progress (update_task
|
||||
status=in_progress).
|
||||
|
||||
Reference in New Issue
Block a user