From e023c21aa1ed551fab828e97390c2bb902487195 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 3 Jun 2026 09:24:26 -0400 Subject: [PATCH] docs(mcp): instruct agents to drive task lifecycle + log work MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a 'keep task state honest' directive to the MCP _INSTRUCTIONS: set in_progress on start, log progress with add_task_log as you go, set done the moment work completes (never leave finished work at todo), and write a dated dev-log note on the project at significant landings. Reinforced in the update_task status docstring. App-layer + always-loaded, no rule/config needed — closes the gap where finished work (e.g. a shipped plan) sat open because the lifecycle was available but never prescribed. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/fabledassistant/mcp/server.py | 12 ++++++++++++ src/fabledassistant/mcp/tools/tasks.py | 4 +++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/fabledassistant/mcp/server.py b/src/fabledassistant/mcp/server.py index 81fe11e..79de92b 100644 --- a/src/fabledassistant/mcp/server.py +++ b/src/fabledassistant/mcp/server.py @@ -38,6 +38,18 @@ Mechanics: - For optional integer FKs (project_id, milestone_id, parent_id), use 0 to mean "not set". +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). +- Log progress as you go with add_task_log — at meaningful steps, not saved up + for the end. +- The moment a task's work is complete, set it done. Never leave finished work + at todo/in_progress — an out-of-date status makes Scribe misrepresent what's + left to do. +- At a significant landing (a merge, a shipped feature, a finished plan), write + a short dated dev-log note on the project (create_note) summarizing what + landed, and mark the plan/task done. + Scribe maintains a Rulebook system (Rulebook -> Topic -> Rule). Rules carry an actionable statement plus optional Why and How-to-apply context. At the start of any session that touches Scribe, call list_always_on_rules() to diff --git a/src/fabledassistant/mcp/tools/tasks.py b/src/fabledassistant/mcp/tools/tasks.py index 056c769..ce6b81c 100644 --- a/src/fabledassistant/mcp/tools/tasks.py +++ b/src/fabledassistant/mcp/tools/tasks.py @@ -143,7 +143,9 @@ async def update_task( task_id: ID of the task to update. title: New title, or omit to leave unchanged. body: New markdown body, or omit to leave unchanged. - status: New status — one of: todo, in_progress, done, cancelled. + status: New status — one of: todo, in_progress, done, cancelled. Drive + the lifecycle: set in_progress when you start, done when complete — + don't leave finished work at todo. priority: New priority — one of: none, low, medium, high. project_id: New project. Omit (0) to leave unchanged. milestone_id: New milestone. Omit (0) to leave unchanged.