Local Claude Code context-cost monitor, transcript replay, buckets, and handoff
Session Watcher provides 3 read-only transcript search tools with reasonable input schemas but inconsistent description quality and minimal output schema documentation. Tool names use clear verb_noun convention (turn_page, turn_search, turn_locate). Descriptions are present but vary in clarity, turn_search and turn_locate have detailed guidance (~150-200 chars), while turn_page is more terse (~100 chars). Input parameters have type definitions and descriptions, but output schemas are entirely undocumented. No parameter enums or constraints are specified. Error handling and recovery guidance are absent. Tools are composition-friendly (each does one thing) and appear idempotent (read-only operations). The codebase shows attention to deterministic serialization and text encoding (lib/dialogue-tool.js), suggesting care for reliable tool behavior, but this sophistication is not reflected in the public tool interface documentation.
Find which turns of the loaded handoff mention a remembered term, when the source wording is unknown. Returns entries oldest to newest, each carrying its turn's S{k}:{T} scope.
Read a page of the history turns carried by the handoff loaded into this session, newest first.
Find a known literal in the transcripts behind the handoff loaded into this session: behaves as grep -F -i -n over them, limited to the active path. Returns one entry per turn the literal landed in, oldest to newest.
Output schemas entirely undocumented. Tools return untyped results without field definitions, forcing LLMs to infer structure and guess at pagination/ordering semantics.
No parameter constraints or enums. The 'q' parameter in turn_search and turn_locate specifies minLength/maxLength (good), but turn_page's 'before' cursor has no format guidance. Unclear whether cursor format is opaque or human-readable.
No error recovery guidance. Tools provide no documentation of failure modes (e.g., 'loaded session not found', 'invalid cursor format') or how LLMs should respond.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
turn_page description is terse (~100 chars) and lacks context about pagination semantics. Does 'newest first' mean results are reverse-chronological? Is 'page' a fixed-size window or cursor-based?