From aradotso-trending-skills-37
Sandboxes MCP tool calls in subprocesses to prevent AI agent context flooding from large outputs and maintains session continuity via local SQLite tracking after compaction.
npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-1 --plugin aradotso-trending-skills-37This skill uses the workspace's default tool permissions.
```markdown
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
---
name: context-mode-mcp
description: Privacy-first MCP virtualization layer that sandboxes tool calls to save context window space and maintain session continuity across compaction
triggers:
- "set up context mode"
- "install context-mode MCP"
- "reduce context window usage"
- "sandbox MCP tool calls"
- "session continuity after compaction"
- "context-mode not routing tools"
- "configure context mode hooks"
- "optimize AI agent context"
---
# Context Mode MCP
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
Context Mode is a privacy-first MCP server that acts as a virtualization layer between AI coding agents and their tools. It solves two problems: (1) raw tool output floods the context window (a Playwright snapshot = 56 KB, 20 GitHub issues = 59 KB), and (2) conversation compaction causes agents to forget session state. Context Mode sandboxes tool calls in subprocesses — raw data never enters context — and tracks all activity in local SQLite with FTS5 search for retrieval after compaction. Nothing leaves your machine; no telemetry, no cloud sync.
## Installation
### Claude Code (Full Plugin — Recommended)
```bash
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode
Restart Claude Code. The plugin auto-installs:
CLAUDE.md routing instructions in your project root/context-mode:ctx-stats, /context-mode:ctx-doctor, /context-mode:ctx-upgrade)claude mcp add context-mode -- npx -y context-mode
npm install -g context-mode
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"context-mode": {
"command": "context-mode"
}
},
"hooks": {
"BeforeTool": [
{
"matcher": "",
"hooks": [{ "type": "command", "command": "context-mode hook gemini-cli beforetool" }]
}
],
"AfterTool": [
{
"matcher": "",
"hooks": [{ "type": "command", "command": "context-mode hook gemini-cli aftertool" }]
}
],
"SessionStart": [
{
"matcher": "",
"hooks": [{ "type": "command", "command": "context-mode hook gemini-cli sessionstart" }]
}
]
}
}
Create .vscode/mcp.json:
{
"servers": {
"context-mode": {
"command": "context-mode"
}
}
}
Create .github/hooks/context-mode.json:
{
"hooks": {
"PreToolUse": [
{ "type": "command", "command": "context-mode hook vscode-copilot pretooluse" }
],
"PostToolUse": [
{ "type": "command", "command": "context-mode hook vscode-copilot posttooluse" }
],
"SessionStart": [
{ "type": "command", "command": "context-mode hook vscode-copilot sessionstart" }
]
}
}
Create .cursor/mcp.json:
{
"mcpServers": {
"context-mode": {
"command": "context-mode"
}
}
}
Create .cursor/hooks.json:
{
"version": 1,
"hooks": {
"preToolUse": [
{
"command": "context-mode hook cursor pretooluse",
"matcher": "Shell|Read|Grep|WebFetch|Task|MCP:ctx_execute|MCP:ctx_execute_file|MCP:ctx_batch_execute"
}
],
"postToolUse": [
{
"command": "context-mode hook cursor posttooluse"
}
]
}
}
Add to opencode.json in project root:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context-mode": {
"type": "local",
"command": ["context-mode"]
}
},
"plugin": ["context-mode"]
}
ctx_execute — Run a shell command in sandbox// Instead of: Bash("gh issue list --limit 20") → 59 KB in context
// Use:
ctx_execute({ command: "gh issue list --limit 20" })
// Returns: indexed summary + search handle, ~1.2 KB in context
ctx_execute_file — Read and index a file in sandbox// Instead of: Read("./logs/access.log") → 45 KB in context
// Use:
ctx_execute_file({ path: "./logs/access.log" })
// Returns: file summary + FTS5 index handle
ctx_batch_execute — Run multiple commands, one context entryctx_batch_execute({
commands: [
"git log --oneline -20",
"git diff HEAD~1",
"git status"
]
})
// All three results indexed together, single small context entry
ctx_fetch_and_index — Fetch a URL and sandbox the response// Instead of: WebFetch("https://api.github.com/repos/owner/repo/issues")
// Use:
ctx_fetch_and_index({ url: "https://api.github.com/repos/owner/repo/issues" })
// Playwright snapshots, API responses, HTML — all sandboxed
ctx_index — Manually index arbitrary contentctx_index({
content: largeRawString,
label: "deployment-logs-2026-03-18"
})
// Stores in SQLite FTS5, returns search handle
ctx_search — Query indexed content via BM25ctx_search({
query: "authentication error 401",
limit: 5
})
// Returns top BM25-ranked results from current session's index
// This is how the agent recovers state after compaction
| Command | Purpose |
|---|---|
/context-mode:ctx-stats | Per-tool savings breakdown, tokens consumed, savings ratio |
/context-mode:ctx-doctor | Diagnostics — runtimes, hooks, FTS5, plugin registration, versions |
/context-mode:ctx-upgrade | Pull latest, rebuild, migrate cache, fix hooks |
On other platforms these work as MCP tools — just invoke ctx stats, ctx doctor, or ctx upgrade by name.
Context Mode tracks file edits, git operations, tasks, errors, and decisions in SQLite. After compaction:
ctx_search with relevant keywords// After compaction — recovering state
ctx_search({ query: "currently editing authentication middleware" })
// Returns: last known file path, recent edits, pending tasks
ctx_search({ query: "unresolved errors last session" })
// Returns: error events with file/line context
Session lifecycle:
--continue flag: resumes previous session, keeps SQLite data--continue: previous session data is deleted immediately (fresh slate)On SessionStart, context-mode writes routing instructions to your project:
| Platform | File |
|---|---|
| Claude Code | CLAUDE.md |
| Gemini CLI | GEMINI.md |
| VS Code Copilot | .github/copilot-instructions.md |
| Cursor / Codex | Project root instruction file |
Behavior is idempotent:
Without hooks, routing compliance is ~60% — the model sometimes ignores instructions and runs raw curl, reads large files directly, or dumps unprocessed output. One unrouted Playwright snapshot (56 KB) wipes an entire session's savings.
With hooks, every tool call is intercepted before execution:
curl, wget, direct large file reads) are blockedWithout context-mode:
Playwright snapshot: 56 KB → context
gh issue list (20): 59 KB → context
access.log read: 45 KB → context
Total after 30 min: ~315 KB consumed (~40% of context)
With context-mode:
All three sandboxed: ~5.4 KB → context
Savings: 98% reduction
Context-mode is zero-config for most use cases. The MCP server auto-starts via npx -y context-mode or the global context-mode binary.
SQLite databases are stored in ~/.context-mode/ and scoped per session. No environment variables required. No API keys. No accounts.
/context-mode:ctx-doctor (Claude Code) or ctx_doctor (other platforms)CLAUDE.md/GEMINI.md/routing file exists in project root with context-mode rules# Verify global install
which context-mode
context-mode --version
# Or use npx fallback
npx -y context-mode
--continue session (fresh sessions start with empty index)ctx_stats to confirm events were indexed in current sessionsessionStart hook is not supported by Cursor's validator — routing instructions are delivered via MCP server startup instead.cursor/hooks.json uses preToolUse/postToolUse only.cursor/hooks.json overrides ~/.cursor/hooks.json — check for conflicts# Claude Code
/context-mode:ctx-upgrade
# Other platforms
npm update -g context-mode
~/.context-mode/ — local only--continue is passed