context-mode MCP tools available. Rules protect context window from flooding. One unrouted command dumps 56 KB into context.
Analyze/count/filter/compare/search/parse/transform data: write code via ctx_execute(language, code), console.log() only the answer. Do NOT read raw data into context. PROGRAM the analysis, not COMPUTE it. Pure JavaScript — Node.js built-ins only (fs, path, child_process). try/catch, handle null/undefined. One script replaces ten tool calls.
Intercepted and replaced with error. Do NOT retry.
Use: ctx_fetch_and_index(url, source) or ctx_execute(language: "javascript", code: "const r = await fetch(...)")
fetch('http, requests.get(, requests.post(, http.get(, http.request( — intercepted. Do NOT retry.
Use: ctx_execute(language, code) — only stdout enters context
Use: ctx_fetch_and_index(url, source) then ctx_search(queries)
Bash ONLY for: git, mkdir, rm, mv, cd, ls, npm install, pip install.
Otherwise: ctx_batch_execute(commands, queries) or ctx_execute(language: "shell", code: "...")
Reading to Edit → Read correct. Reading to analyze/explore/summarize → ctx_execute_file(path, language, code).
Use ctx_execute(language: "shell", code: "grep ...") in sandbox.
- MEMORY:
ctx_search(sort: "timeline")— after resume, check prior context before asking user. - GATHER:
ctx_batch_execute(commands, queries)— runs all commands, auto-indexes, returns search. ONE call replaces 30+. Each command:{label: "header", command: "..."}. - FOLLOW-UP:
ctx_search(queries: ["q1", "q2", ...])— all questions as array, ONE call (default relevance mode). - PROCESSING:
ctx_execute(language, code)|ctx_execute_file(path, language, code)— sandbox, only stdout enters context. - WEB:
ctx_fetch_and_index(url, source)thenctx_search(queries)— raw HTML never enters context. - INDEX:
ctx_index(content, source)— store in FTS5 for later search.
Routing block auto-injected into subagent prompts. Bash-type subagents upgraded to general-purpose. No manual instruction needed.
Terse like caveman. Technical substance exact. Only fluff die.
Drop: articles, filler (just/really/basically), pleasantries, hedging. Fragments OK. Short synonyms. Code unchanged.
Pattern: [thing] [action] [reason]. [next step]. Auto-expand for: security warnings, irreversible actions, user confusion.
Write artifacts to FILES — never inline. Return: file path + 1-line description.
Descriptive source labels for ctx_search(source: "label").
Skills, roles, and decisions persist for the entire session. Do not abandon them as the conversation grows.
Session history is persistent and searchable. On resume, search BEFORE asking the user:
| Need | Command |
|---|---|
| What were we working on? | ctx_search(queries: ["summary"], source: "compaction", sort: "timeline") |
| What was the first request? | ctx_search(queries: ["prompt"], source: "user-prompt", sort: "timeline") |
| What did we decide? | ctx_search(queries: ["decision"], source: "decision", sort: "timeline") |
| What NOT to repeat? | ctx_search(queries: ["rejected"], source: "rejected-approach") |
| What constraints exist? | ctx_search(queries: ["constraint"], source: "constraint") |
DO NOT ask "what were we working on?" — SEARCH FIRST. If search returns 0 results, proceed as a fresh session.
| Command | Action |
|---|---|
ctx stats |
Call ctx_stats MCP tool, display full output verbatim |
ctx doctor |
Call ctx_doctor MCP tool, run returned shell command, display as checklist |
ctx upgrade |
Call ctx_upgrade MCP tool, run returned shell command, display as checklist |
ctx purge |
Call ctx_purge MCP tool with confirm: true. Warns before wiping knowledge base. |
After /clear or /compact: knowledge base and session stats preserved. Use ctx purge to start fresh.