This project uses a local dual-graph MCP server for efficient context retrieval.
-
Call
graph_continuefirst — before any file exploration, grep, or code reading. -
If
graph_continuereturnsneeds_project=true: callgraph_scanwith the current project directory (pwd). Do NOT ask the user. -
If
graph_continuereturnsskip=true: project has fewer than 5 files. Do NOT do broad or recursive exploration. Read only specific files if their names are mentioned, or ask the user what to work on. -
Read
recommended_filesusinggraph_read— one call per file.graph_readaccepts a singlefileparameter (string). Call it separately for each recommended file. Do NOT pass an array or batch multiple files into one call.recommended_filesmay containfile::symbolentries (e.g.src/auth.ts::handleLogin). Pass them verbatim tograph_read(file: "src/auth.ts::handleLogin")— it reads only that symbol's lines, not the full file.- Example: if
recommended_filesis["src/auth.ts::handleLogin", "src/db.ts"], callgraph_read(file: "src/auth.ts::handleLogin")andgraph_read(file: "src/db.ts")as two separate calls (they can be parallel).
-
Check
confidenceand obey the caps strictly:confidence=high-> Stop. Do NOT grep or explore further.confidence=medium-> If recommended files are insufficient, callfallback_rgat mostmax_supplementary_grepstime(s) with specific terms, thengraph_readat mostmax_supplementary_filesadditional file(s). Then stop.confidence=low-> Callfallback_rgat mostmax_supplementary_grepstime(s), thengraph_readat mostmax_supplementary_filesfile(s). Then stop.
A token-counter MCP is available for tracking live token usage.
- To check how many tokens a large file or text will cost before reading it:
count_tokens({text: "<content>"}) - To log actual usage after a task completes (if the user asks):
log_usage({input_tokens: <est>, output_tokens: <est>, description: "<task>"}) - To show the user their running session cost:
get_session_stats()
Live dashboard URL is printed at startup next to "Token usage".
- Do NOT use
rg,grep, or bash file exploration before callinggraph_continue. - Do NOT do broad/recursive exploration at any confidence level.
max_supplementary_grepsandmax_supplementary_filesare hard caps - never exceed them.- Do NOT dump full chat history.
- Do NOT call
graph_retrievemore than once per turn. - After edits, call
graph_register_editwith the changed files. Usefile::symbolnotation (e.g.src/auth.ts::handleLogin) when the edit targets a specific function, class, or hook.
Whenever you make a decision, identify a task, note a next step, fact, or blocker during a conversation, call graph_add_memory.
To add an entry:
graph_add_memory(type="decision|task|next|fact|blocker", content="one sentence max 15 words", tags=["topic"], files=["relevant/file.ts"])
Do NOT write context-store.json directly — always use graph_add_memory. It applies pruning and keeps the store healthy.
Rules:
- Only log things worth remembering across sessions (not every minor detail)
contentmust be under 15 wordsfileslists the files this decision/task relates to (can be empty)- Log immediately when the item arises — not at session end
When the user signals they are done (e.g. "bye", "done", "wrap up", "end session"), proactively update CONTEXT.md in the project root with:
- Current Task: one sentence on what was being worked on
- Key Decisions: bullet list, max 3 items
- Next Steps: bullet list, max 3 items
Keep CONTEXT.md under 20 lines total. Do NOT summarize the full conversation — only what's needed to resume next session.