@mxalbert/context-mode 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +33 -0
- package/.claude-plugin/plugin.json +31 -0
- package/.codex-plugin/hooks.json +65 -0
- package/.codex-plugin/mcp.json +13 -0
- package/.codex-plugin/plugin.json +31 -0
- package/.openclaw-plugin/index.ts +12 -0
- package/.openclaw-plugin/openclaw.plugin.json +38 -0
- package/.openclaw-plugin/package.json +28 -0
- package/LICENSE +94 -0
- package/README.md +1619 -0
- package/bin/statusline.mjs +378 -0
- package/build/adapters/antigravity/index.d.ts +51 -0
- package/build/adapters/antigravity/index.js +169 -0
- package/build/adapters/antigravity-cli/index.d.ts +51 -0
- package/build/adapters/antigravity-cli/index.js +342 -0
- package/build/adapters/base.d.ts +92 -0
- package/build/adapters/base.js +135 -0
- package/build/adapters/claude-code/config.d.ts +8 -0
- package/build/adapters/claude-code/config.js +8 -0
- package/build/adapters/claude-code/hooks.d.ts +106 -0
- package/build/adapters/claude-code/hooks.js +183 -0
- package/build/adapters/claude-code/index.d.ts +80 -0
- package/build/adapters/claude-code/index.js +569 -0
- package/build/adapters/claude-code-base.d.ts +49 -0
- package/build/adapters/claude-code-base.js +113 -0
- package/build/adapters/client-map.d.ts +10 -0
- package/build/adapters/client-map.js +42 -0
- package/build/adapters/codex/config.d.ts +8 -0
- package/build/adapters/codex/config.js +8 -0
- package/build/adapters/codex/hooks.d.ts +55 -0
- package/build/adapters/codex/hooks.js +64 -0
- package/build/adapters/codex/index.d.ts +87 -0
- package/build/adapters/codex/index.js +995 -0
- package/build/adapters/codex/paths.d.ts +1 -0
- package/build/adapters/codex/paths.js +12 -0
- package/build/adapters/codex/usage.d.ts +107 -0
- package/build/adapters/codex/usage.js +227 -0
- package/build/adapters/copilot-base.d.ts +94 -0
- package/build/adapters/copilot-base.js +297 -0
- package/build/adapters/copilot-cli/hooks.d.ts +33 -0
- package/build/adapters/copilot-cli/hooks.js +64 -0
- package/build/adapters/copilot-cli/index.d.ts +48 -0
- package/build/adapters/copilot-cli/index.js +341 -0
- package/build/adapters/cursor/config.d.ts +4 -0
- package/build/adapters/cursor/config.js +4 -0
- package/build/adapters/cursor/hooks.d.ts +55 -0
- package/build/adapters/cursor/hooks.js +82 -0
- package/build/adapters/cursor/index.d.ts +64 -0
- package/build/adapters/cursor/index.js +517 -0
- package/build/adapters/detect.d.ts +136 -0
- package/build/adapters/detect.js +623 -0
- package/build/adapters/gemini-cli/config.d.ts +8 -0
- package/build/adapters/gemini-cli/config.js +8 -0
- package/build/adapters/gemini-cli/hooks.d.ts +83 -0
- package/build/adapters/gemini-cli/hooks.js +115 -0
- package/build/adapters/gemini-cli/index.d.ts +80 -0
- package/build/adapters/gemini-cli/index.js +483 -0
- package/build/adapters/jetbrains-copilot/config.d.ts +8 -0
- package/build/adapters/jetbrains-copilot/config.js +8 -0
- package/build/adapters/jetbrains-copilot/hooks.d.ts +59 -0
- package/build/adapters/jetbrains-copilot/hooks.js +87 -0
- package/build/adapters/jetbrains-copilot/index.d.ts +31 -0
- package/build/adapters/jetbrains-copilot/index.js +131 -0
- package/build/adapters/kimi/config.d.ts +8 -0
- package/build/adapters/kimi/config.js +8 -0
- package/build/adapters/kimi/hooks.d.ts +28 -0
- package/build/adapters/kimi/hooks.js +34 -0
- package/build/adapters/kimi/index.d.ts +66 -0
- package/build/adapters/kimi/index.js +537 -0
- package/build/adapters/kimi/paths.d.ts +21 -0
- package/build/adapters/kimi/paths.js +52 -0
- package/build/adapters/kimi/usage.d.ts +82 -0
- package/build/adapters/kimi/usage.js +217 -0
- package/build/adapters/kiro/hooks.d.ts +61 -0
- package/build/adapters/kiro/hooks.js +94 -0
- package/build/adapters/kiro/index.d.ts +61 -0
- package/build/adapters/kiro/index.js +301 -0
- package/build/adapters/omp/index.d.ts +65 -0
- package/build/adapters/omp/index.js +182 -0
- package/build/adapters/omp/plugin.d.ts +81 -0
- package/build/adapters/omp/plugin.js +331 -0
- package/build/adapters/omp/usage.d.ts +49 -0
- package/build/adapters/omp/usage.js +110 -0
- package/build/adapters/openclaw/config.d.ts +8 -0
- package/build/adapters/openclaw/config.js +8 -0
- package/build/adapters/openclaw/hooks.d.ts +50 -0
- package/build/adapters/openclaw/hooks.js +61 -0
- package/build/adapters/openclaw/index.d.ts +74 -0
- package/build/adapters/openclaw/index.js +439 -0
- package/build/adapters/openclaw/mcp-tools.d.ts +54 -0
- package/build/adapters/openclaw/mcp-tools.js +207 -0
- package/build/adapters/openclaw/plugin.d.ts +141 -0
- package/build/adapters/openclaw/plugin.js +818 -0
- package/build/adapters/openclaw/session-db.d.ts +55 -0
- package/build/adapters/openclaw/session-db.js +88 -0
- package/build/adapters/openclaw/usage.d.ts +34 -0
- package/build/adapters/openclaw/usage.js +52 -0
- package/build/adapters/openclaw/workspace-router.d.ts +29 -0
- package/build/adapters/openclaw/workspace-router.js +64 -0
- package/build/adapters/opencode/config.d.ts +8 -0
- package/build/adapters/opencode/config.js +8 -0
- package/build/adapters/opencode/hooks.d.ts +38 -0
- package/build/adapters/opencode/hooks.js +50 -0
- package/build/adapters/opencode/index.d.ts +144 -0
- package/build/adapters/opencode/index.js +638 -0
- package/build/adapters/opencode/plugin.d.ts +249 -0
- package/build/adapters/opencode/plugin.js +1536 -0
- package/build/adapters/opencode/v2.d.ts +117 -0
- package/build/adapters/opencode/v2.js +224 -0
- package/build/adapters/opencode/zod3tov4.d.ts +1 -0
- package/build/adapters/opencode/zod3tov4.js +132 -0
- package/build/adapters/pi/extension.d.ts +81 -0
- package/build/adapters/pi/extension.js +861 -0
- package/build/adapters/pi/index.d.ts +57 -0
- package/build/adapters/pi/index.js +173 -0
- package/build/adapters/pi/mcp-bridge.d.ts +268 -0
- package/build/adapters/pi/mcp-bridge.js +894 -0
- package/build/adapters/qwen-code/hooks.d.ts +26 -0
- package/build/adapters/qwen-code/hooks.js +29 -0
- package/build/adapters/qwen-code/index.d.ts +40 -0
- package/build/adapters/qwen-code/index.js +361 -0
- package/build/adapters/qwen-code/usage.d.ts +90 -0
- package/build/adapters/qwen-code/usage.js +222 -0
- package/build/adapters/types.d.ts +360 -0
- package/build/adapters/types.js +118 -0
- package/build/adapters/vscode-copilot/config.d.ts +8 -0
- package/build/adapters/vscode-copilot/config.js +8 -0
- package/build/adapters/vscode-copilot/hooks.d.ts +71 -0
- package/build/adapters/vscode-copilot/hooks.js +98 -0
- package/build/adapters/vscode-copilot/index.d.ts +32 -0
- package/build/adapters/vscode-copilot/index.js +222 -0
- package/build/adapters/zed/index.d.ts +40 -0
- package/build/adapters/zed/index.js +163 -0
- package/build/cli.d.ts +34 -0
- package/build/cli.js +1828 -0
- package/build/db-base.d.ts +250 -0
- package/build/db-base.js +756 -0
- package/build/executor.d.ts +72 -0
- package/build/executor.js +678 -0
- package/build/exit-classify.d.ts +19 -0
- package/build/exit-classify.js +12 -0
- package/build/fetch/blocks.d.ts +145 -0
- package/build/fetch/blocks.js +244 -0
- package/build/fetch/extract.d.ts +68 -0
- package/build/fetch/extract.js +123 -0
- package/build/fetch/page-store.d.ts +66 -0
- package/build/fetch/page-store.js +174 -0
- package/build/fetch-cache.d.ts +13 -0
- package/build/fetch-cache.js +15 -0
- package/build/lifecycle.d.ts +124 -0
- package/build/lifecycle.js +278 -0
- package/build/package-identity.d.ts +26 -0
- package/build/package-identity.js +28 -0
- package/build/runPool.d.ts +36 -0
- package/build/runPool.js +51 -0
- package/build/runtime.d.ts +71 -0
- package/build/runtime.js +659 -0
- package/build/search/auto-memory.d.ts +47 -0
- package/build/search/auto-memory.js +170 -0
- package/build/search/ctx-search-schema.d.ts +90 -0
- package/build/search/ctx-search-schema.js +135 -0
- package/build/search/flood-guard.d.ts +57 -0
- package/build/search/flood-guard.js +80 -0
- package/build/search/unified.d.ts +56 -0
- package/build/search/unified.js +104 -0
- package/build/security.d.ts +206 -0
- package/build/security.js +780 -0
- package/build/server.d.ts +240 -0
- package/build/server.js +5034 -0
- package/build/session/analytics.d.ts +773 -0
- package/build/session/analytics.js +2420 -0
- package/build/session/db.d.ts +468 -0
- package/build/session/db.js +1330 -0
- package/build/session/error-classifier.d.ts +87 -0
- package/build/session/error-classifier.js +303 -0
- package/build/session/event-emit.d.ts +48 -0
- package/build/session/event-emit.js +101 -0
- package/build/session/extract.d.ts +333 -0
- package/build/session/extract.js +2688 -0
- package/build/session/model-prices.json +429 -0
- package/build/session/persist-tool-calls.d.ts +54 -0
- package/build/session/persist-tool-calls.js +105 -0
- package/build/session/pricing.d.ts +64 -0
- package/build/session/pricing.js +151 -0
- package/build/session/project-attribution.d.ts +73 -0
- package/build/session/project-attribution.js +245 -0
- package/build/session/purge.d.ts +138 -0
- package/build/session/purge.js +240 -0
- package/build/session/retrieval-marker.d.ts +39 -0
- package/build/session/retrieval-marker.js +65 -0
- package/build/session/snapshot.d.ts +46 -0
- package/build/session/snapshot.js +532 -0
- package/build/store-directory.d.ts +56 -0
- package/build/store-directory.js +254 -0
- package/build/store.d.ts +147 -0
- package/build/store.js +1714 -0
- package/build/truncate.d.ts +57 -0
- package/build/truncate.js +142 -0
- package/build/types.d.ts +117 -0
- package/build/types.js +20 -0
- package/build/util/claude-config.d.ts +32 -0
- package/build/util/claude-config.js +84 -0
- package/build/util/hook-config.d.ts +27 -0
- package/build/util/hook-config.js +76 -0
- package/build/util/jsonc.d.ts +14 -0
- package/build/util/jsonc.js +104 -0
- package/build/util/plugin-cache-integrity.d.ts +51 -0
- package/build/util/plugin-cache-integrity.js +146 -0
- package/build/util/project-dir.d.ts +149 -0
- package/build/util/project-dir.js +340 -0
- package/build/util/sibling-mcp.d.ts +79 -0
- package/build/util/sibling-mcp.js +181 -0
- package/cli.bundle.mjs +1495 -0
- package/configs/antigravity/GEMINI.md +68 -0
- package/configs/antigravity/mcp_config.json +7 -0
- package/configs/antigravity-cli/hooks/hooks.json +37 -0
- package/configs/antigravity-cli/hooks.json +37 -0
- package/configs/antigravity-cli/mcp_config.json +10 -0
- package/configs/antigravity-cli/plugin.json +14 -0
- package/configs/antigravity-cli/rules/context-mode.md +77 -0
- package/configs/antigravity-cli/skills/context-mode/SKILL.md +77 -0
- package/configs/claude-code/CLAUDE.md +91 -0
- package/configs/codex/AGENTS.md +99 -0
- package/configs/codex/config.toml +8 -0
- package/configs/codex/hooks.json +47 -0
- package/configs/copilot-cli/.github/plugin/plugin.json +23 -0
- package/configs/copilot-cli/.mcp.json +12 -0
- package/configs/copilot-cli/README.md +47 -0
- package/configs/copilot-cli/hooks.json +41 -0
- package/configs/copilot-cli/skills/context-mode/SKILL.md +38 -0
- package/configs/cursor/context-mode.mdc +76 -0
- package/configs/cursor/hooks.json +21 -0
- package/configs/cursor/mcp.json +7 -0
- package/configs/gemini-cli/GEMINI.md +88 -0
- package/configs/gemini-cli/mcp.json +7 -0
- package/configs/gemini-cli/settings.json +60 -0
- package/configs/jetbrains-copilot/copilot-instructions.md +80 -0
- package/configs/jetbrains-copilot/hooks.json +16 -0
- package/configs/jetbrains-copilot/mcp.json +7 -0
- package/configs/kilo/AGENTS.md +84 -0
- package/configs/kilo/kilo.json +6 -0
- package/configs/kimi/hooks.json +54 -0
- package/configs/kiro/KIRO.md +84 -0
- package/configs/kiro/agent.json +18 -0
- package/configs/kiro/mcp.json +7 -0
- package/configs/omp/SYSTEM.md +85 -0
- package/configs/omp/mcp.json +7 -0
- package/configs/openclaw/AGENTS.md +87 -0
- package/configs/openclaw/openclaw.json +13 -0
- package/configs/opencode/AGENTS.md +84 -0
- package/configs/opencode/opencode.json +6 -0
- package/configs/pi/AGENTS.md +3 -0
- package/configs/qwen-code/QWEN.md +91 -0
- package/configs/vscode-copilot/copilot-instructions.md +80 -0
- package/configs/vscode-copilot/hooks.json +16 -0
- package/configs/vscode-copilot/mcp.json +7 -0
- package/configs/zed/AGENTS.md +68 -0
- package/hooks/antigravity-cli/payload.mjs +98 -0
- package/hooks/antigravity-cli/posttooluse.mjs +138 -0
- package/hooks/antigravity-cli/pretooluse.mjs +78 -0
- package/hooks/antigravity-cli/stop.mjs +58 -0
- package/hooks/auto-injection.mjs +102 -0
- package/hooks/cache-heal-utils.mjs +379 -0
- package/hooks/codex/platform.mjs +1 -0
- package/hooks/codex/posttooluse.mjs +66 -0
- package/hooks/codex/precompact.mjs +70 -0
- package/hooks/codex/pretooluse.mjs +42 -0
- package/hooks/codex/sessionstart.mjs +121 -0
- package/hooks/codex/stop.mjs +138 -0
- package/hooks/codex/userpromptsubmit.mjs +75 -0
- package/hooks/copilot-cli/posttooluse.mjs +79 -0
- package/hooks/copilot-cli/precompact.mjs +66 -0
- package/hooks/copilot-cli/pretooluse.mjs +41 -0
- package/hooks/copilot-cli/sessionstart.mjs +121 -0
- package/hooks/copilot-cli/stop.mjs +59 -0
- package/hooks/copilot-cli/userpromptsubmit.mjs +77 -0
- package/hooks/core/codex-caps.mjs +112 -0
- package/hooks/core/formatters.mjs +356 -0
- package/hooks/core/mcp-ready.mjs +109 -0
- package/hooks/core/platform-detect.mjs +49 -0
- package/hooks/core/routing.mjs +1050 -0
- package/hooks/core/stdin.mjs +90 -0
- package/hooks/core/tool-naming.mjs +57 -0
- package/hooks/cursor/afteragentresponse.mjs +74 -0
- package/hooks/cursor/hooks.json +31 -0
- package/hooks/cursor/posttooluse.mjs +72 -0
- package/hooks/cursor/pretooluse.mjs +26 -0
- package/hooks/cursor/sessionstart.mjs +97 -0
- package/hooks/cursor/stop.mjs +48 -0
- package/hooks/ensure-deps.mjs +254 -0
- package/hooks/formatters/claude-code.mjs +113 -0
- package/hooks/formatters/cursor.mjs +37 -0
- package/hooks/formatters/gemini-cli.mjs +55 -0
- package/hooks/formatters/vscode-copilot.mjs +55 -0
- package/hooks/gemini-cli/aftermodel.mjs +70 -0
- package/hooks/gemini-cli/aftertool.mjs +61 -0
- package/hooks/gemini-cli/beforeagent.mjs +99 -0
- package/hooks/gemini-cli/beforetool.mjs +27 -0
- package/hooks/gemini-cli/precompress.mjs +55 -0
- package/hooks/gemini-cli/sessionstart.mjs +137 -0
- package/hooks/heal-partial-install.mjs +712 -0
- package/hooks/hooks.json +143 -0
- package/hooks/jetbrains-copilot/posttooluse.mjs +61 -0
- package/hooks/jetbrains-copilot/precompact.mjs +55 -0
- package/hooks/jetbrains-copilot/pretooluse.mjs +27 -0
- package/hooks/jetbrains-copilot/sessionstart.mjs +124 -0
- package/hooks/kimi/platform.mjs +1 -0
- package/hooks/kimi/posttooluse.mjs +72 -0
- package/hooks/kimi/precompact.mjs +80 -0
- package/hooks/kimi/pretooluse.mjs +42 -0
- package/hooks/kimi/sessionend.mjs +61 -0
- package/hooks/kimi/sessionstart.mjs +113 -0
- package/hooks/kimi/stop.mjs +132 -0
- package/hooks/kimi/userpromptsubmit.mjs +90 -0
- package/hooks/kiro/agentspawn.mjs +97 -0
- package/hooks/kiro/posttooluse.mjs +51 -0
- package/hooks/kiro/pretooluse.mjs +64 -0
- package/hooks/kiro/userpromptsubmit.mjs +88 -0
- package/hooks/normalize-hooks.mjs +323 -0
- package/hooks/platform-bridge.mjs +340 -0
- package/hooks/posttooluse.mjs +225 -0
- package/hooks/precompact.mjs +100 -0
- package/hooks/pretooluse.mjs +227 -0
- package/hooks/qwen-code/platform.mjs +1 -0
- package/hooks/qwen-code/stop.mjs +168 -0
- package/hooks/routing-block.mjs +105 -0
- package/hooks/run-hook.mjs +95 -0
- package/hooks/security.bundle.mjs +2 -0
- package/hooks/session-attribution.bundle.mjs +1 -0
- package/hooks/session-db.bundle.mjs +145 -0
- package/hooks/session-directive.mjs +520 -0
- package/hooks/session-extract.bundle.mjs +3 -0
- package/hooks/session-helpers.mjs +428 -0
- package/hooks/session-loaders.mjs +448 -0
- package/hooks/session-snapshot.bundle.mjs +32 -0
- package/hooks/sessionstart.mjs +464 -0
- package/hooks/stop.mjs +82 -0
- package/hooks/suppress-stderr.mjs +25 -0
- package/hooks/userpromptsubmit.mjs +108 -0
- package/hooks/vscode-copilot/posttooluse.mjs +61 -0
- package/hooks/vscode-copilot/precompact.mjs +55 -0
- package/hooks/vscode-copilot/pretooluse.mjs +27 -0
- package/hooks/vscode-copilot/sessionstart.mjs +129 -0
- package/openclaw.plugin.json +38 -0
- package/package.json +132 -0
- package/scripts/heal-better-sqlite3.mjs +430 -0
- package/scripts/heal-installed-plugins.mjs +635 -0
- package/scripts/plugin-cache-integrity.mjs +248 -0
- package/scripts/postinstall.mjs +397 -0
- package/server.bundle.mjs +1421 -0
- package/server.js +5 -0
- package/skills/.ignore +7 -0
- package/skills/context-mode/SKILL.md +300 -0
- package/skills/context-mode/references/anti-patterns.md +283 -0
- package/skills/context-mode/references/patterns-javascript.md +298 -0
- package/skills/context-mode/references/patterns-python.md +304 -0
- package/skills/context-mode/references/patterns-shell.md +277 -0
- package/skills/ctx-doctor/SKILL.md +22 -0
- package/skills/ctx-index/SKILL.md +46 -0
- package/skills/ctx-insight/SKILL.md +24 -0
- package/skills/ctx-purge/SKILL.md +49 -0
- package/skills/ctx-search/SKILL.md +35 -0
- package/skills/ctx-stats/SKILL.md +26 -0
- package/skills/ctx-upgrade/SKILL.md +31 -0
- package/start.mjs +616 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# context-mode — MANDATORY routing rules
|
|
2
|
+
|
|
3
|
+
context-mode MCP tools available. Rules protect context window from flooding. One unrouted command dumps 56 KB into context. Antigravity has NO hooks — these instructions are ONLY enforcement. Follow strictly.
|
|
4
|
+
|
|
5
|
+
## Think in Code — MANDATORY
|
|
6
|
+
|
|
7
|
+
Analyze/count/filter/compare/search/parse/transform data: **write code** via `mcp__context-mode__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.
|
|
8
|
+
|
|
9
|
+
## BLOCKED — do NOT use
|
|
10
|
+
|
|
11
|
+
### curl / wget — FORBIDDEN
|
|
12
|
+
Do NOT use `curl`/`wget` via `run_command`. Dumps raw HTTP into context.
|
|
13
|
+
Use: `mcp__context-mode__ctx_fetch_and_index(url, source)` or `mcp__context-mode__ctx_execute(language: "javascript", code: "const r = await fetch(...)")`
|
|
14
|
+
|
|
15
|
+
### Inline HTTP — FORBIDDEN
|
|
16
|
+
No `node -e "fetch(..."`, `python -c "requests.get(..."` via `run_command`. Bypasses sandbox.
|
|
17
|
+
Use: `mcp__context-mode__ctx_execute(language, code)` — only stdout enters context
|
|
18
|
+
|
|
19
|
+
### Direct web fetching — FORBIDDEN
|
|
20
|
+
No `read_url_content` for large pages. Raw HTML can exceed 100 KB.
|
|
21
|
+
Use: `mcp__context-mode__ctx_fetch_and_index(url, source)` then `mcp__context-mode__ctx_search(queries)`
|
|
22
|
+
|
|
23
|
+
## REDIRECTED — use sandbox
|
|
24
|
+
|
|
25
|
+
### Shell (>20 lines output)
|
|
26
|
+
`run_command` ONLY for: `git`, `mkdir`, `rm`, `mv`, `cd`, `ls`, `npm install`, `pip install`.
|
|
27
|
+
Otherwise: `mcp__context-mode__ctx_batch_execute(commands, queries)` or `mcp__context-mode__ctx_execute(language: "javascript", code: "...")`. Use `language: "shell"` only when code matches the host shell.
|
|
28
|
+
|
|
29
|
+
### File reading (for analysis)
|
|
30
|
+
Reading to **edit** → `view_file`/`replace_file_content` correct. Reading to **analyze/explore/summarize** → `mcp__context-mode__ctx_execute_file(path, language, code)`.
|
|
31
|
+
|
|
32
|
+
### Search (large results)
|
|
33
|
+
Use `mcp__context-mode__ctx_execute(language: "javascript", code: "...")` in sandbox for portable filtering/counting.
|
|
34
|
+
|
|
35
|
+
## Tool selection
|
|
36
|
+
|
|
37
|
+
1. **GATHER**: `mcp__context-mode__ctx_batch_execute(commands, queries)` — runs all commands, auto-indexes, returns search. ONE call replaces 30+. Each command: `{label: "header", command: "..."}`.
|
|
38
|
+
2. **FOLLOW-UP**: `mcp__context-mode__ctx_search(queries: ["q1", "q2", ...])` — all questions as array, ONE call.
|
|
39
|
+
3. **PROCESSING**: `mcp__context-mode__ctx_execute(language, code)` | `mcp__context-mode__ctx_execute_file(path, language, code)` — sandbox, only stdout enters context.
|
|
40
|
+
4. **WEB**: `mcp__context-mode__ctx_fetch_and_index(url, source)` then `mcp__context-mode__ctx_search(queries)` — raw HTML never enters context.
|
|
41
|
+
5. **INDEX**: `mcp__context-mode__ctx_index(content, source)` — store in FTS5 for later search.
|
|
42
|
+
|
|
43
|
+
## Parallel I/O batches
|
|
44
|
+
|
|
45
|
+
For multi-URL fetches or multi-API calls, **always** include `concurrency: N` (1-8):
|
|
46
|
+
|
|
47
|
+
- `mcp__context-mode__ctx_batch_execute(commands: [3+ network commands], concurrency: 5)` — gh, curl, dig, docker inspect, multi-region cloud queries
|
|
48
|
+
- `mcp__context-mode__ctx_fetch_and_index(requests: [{url, source}, ...], concurrency: 5)` — multi-URL batch fetch
|
|
49
|
+
|
|
50
|
+
**Use concurrency 4-8** for I/O-bound work (network calls, API queries). **Keep concurrency 1** for CPU-bound (npm test, build, lint) or commands sharing state (ports, lock files, same-repo writes).
|
|
51
|
+
|
|
52
|
+
GitHub API rate-limit: cap at 4 for `gh` calls.
|
|
53
|
+
|
|
54
|
+
## Output
|
|
55
|
+
|
|
56
|
+
Write artifacts to FILES — never inline. Return: file path + 1-line description.
|
|
57
|
+
Descriptive source labels for `search(source: "label")`.
|
|
58
|
+
|
|
59
|
+
## ctx commands
|
|
60
|
+
|
|
61
|
+
| Command | Action |
|
|
62
|
+
|---------|--------|
|
|
63
|
+
| `ctx stats` | Call `stats` MCP tool, display full output verbatim |
|
|
64
|
+
| `ctx doctor` | Call `doctor` MCP tool, run returned shell command, display as checklist |
|
|
65
|
+
| `ctx upgrade` | Call `upgrade` MCP tool, run returned shell command, display as checklist |
|
|
66
|
+
| `ctx purge` | Call `purge` MCP tool with confirm: true. Warns before wiping knowledge base. |
|
|
67
|
+
|
|
68
|
+
After /clear or /compact: knowledge base and session stats preserved. Use `ctx purge` to start fresh.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"PreToolUse": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "run_command|view_file|grep_search|web_fetch|read_url_content",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "context-mode hook antigravity-cli pretooluse"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"PostToolUse": [
|
|
15
|
+
{
|
|
16
|
+
"matcher": "",
|
|
17
|
+
"hooks": [
|
|
18
|
+
{
|
|
19
|
+
"type": "command",
|
|
20
|
+
"command": "context-mode hook antigravity-cli posttooluse"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"Stop": [
|
|
26
|
+
{
|
|
27
|
+
"matcher": "",
|
|
28
|
+
"hooks": [
|
|
29
|
+
{
|
|
30
|
+
"type": "command",
|
|
31
|
+
"command": "context-mode hook antigravity-cli stop"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"PreToolUse": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "run_command|view_file|grep_search|web_fetch|read_url_content",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "context-mode hook antigravity-cli pretooluse"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"PostToolUse": [
|
|
15
|
+
{
|
|
16
|
+
"matcher": "",
|
|
17
|
+
"hooks": [
|
|
18
|
+
{
|
|
19
|
+
"type": "command",
|
|
20
|
+
"command": "context-mode hook antigravity-cli posttooluse"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"Stop": [
|
|
26
|
+
{
|
|
27
|
+
"matcher": "",
|
|
28
|
+
"hooks": [
|
|
29
|
+
{
|
|
30
|
+
"type": "command",
|
|
31
|
+
"command": "context-mode hook antigravity-cli stop"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "context-mode",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "context-mode for Antigravity CLI (agy): sandboxed code execution, FTS5 knowledge base, and session capture. Saves your context window by keeping raw bytes out of the conversation.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Mert Koseoğlu",
|
|
7
|
+
"url": "https://github.com/mxalbert1996"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/mxalbert1996/context-mode#readme",
|
|
10
|
+
"license": "Elastic-2.0",
|
|
11
|
+
"skills": [
|
|
12
|
+
"./skills/context-mode"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# context-mode routing for Antigravity CLI
|
|
2
|
+
|
|
3
|
+
context-mode MCP tools are installed for this agy session. Use them when the
|
|
4
|
+
task analyzes, counts, filters, compares, searches, parses, transforms, fetches,
|
|
5
|
+
or otherwise processes data. Raw bytes should stay in the sandbox; only the
|
|
6
|
+
derived answer should enter the conversation.
|
|
7
|
+
|
|
8
|
+
## Do not dump — derive (most common mistake)
|
|
9
|
+
|
|
10
|
+
Do NOT use `context-mode/ctx_execute_file` or `ctx_execute` to print a whole file
|
|
11
|
+
or a full method/config (e.g. `print(FILE_CONTENT)`, `cat config.yaml`, dumping a
|
|
12
|
+
281-line file). That defeats the purpose: on agy the tool's stdout is saved to a
|
|
13
|
+
step file that you then read back, so a full dump costs your context window TWICE
|
|
14
|
+
(once in the result, once on the follow-up read). Print only the specific value,
|
|
15
|
+
matches, count, or known line-range you need:
|
|
16
|
+
|
|
17
|
+
- WRONG: `ctx_execute_file(path:"config.yaml", language:"python", code:"print(FILE_CONTENT)")`
|
|
18
|
+
- RIGHT (value): `code:"import yaml; d=yaml.safe_load(FILE_CONTENT); print(d['active_strategy'])"`
|
|
19
|
+
- RIGHT (matches): `code:"import re;[print(i+1,l) for i,l in enumerate(FILE_CONTENT.splitlines()) if 'active_strategies' in l]"`
|
|
20
|
+
- RIGHT (known slice): `code:"print(chr(10).join(FILE_CONTENT.splitlines()[190:230]))"`
|
|
21
|
+
|
|
22
|
+
If you truly need to read a small, exact byte range to edit it, native `Read` /
|
|
23
|
+
`view_file` on that range is fine — but never dump an entire file through a hook.
|
|
24
|
+
|
|
25
|
+
## Tool call surface
|
|
26
|
+
|
|
27
|
+
Antigravity CLI exposes context-mode tools as `context-mode/<tool>` calls. If
|
|
28
|
+
the host uses the generic MCP wrapper, call `call_mcp_tool` with:
|
|
29
|
+
|
|
30
|
+
- `ServerName`: `"context-mode"`
|
|
31
|
+
- `ToolName`: `"ctx_execute"`, `"ctx_execute_file"`, `"ctx_batch_execute"`,
|
|
32
|
+
`"ctx_fetch_and_index"`, `"ctx_search"`, or `"ctx_index"`
|
|
33
|
+
- `Arguments`: a JSON object for that tool
|
|
34
|
+
|
|
35
|
+
Do not read `~/.gemini/antigravity-cli/mcp/context-mode/*.json` to discover
|
|
36
|
+
schemas. Those files are agy's cached tool schemas and reading them spends
|
|
37
|
+
context. Use these argument shapes instead:
|
|
38
|
+
|
|
39
|
+
- `context-mode/ctx_execute`: `{"language":"python","code":"..."}`
|
|
40
|
+
- `context-mode/ctx_execute_file`:
|
|
41
|
+
`{"path":"path/to/file","language":"python","code":"..."}`
|
|
42
|
+
- `context-mode/ctx_batch_execute`:
|
|
43
|
+
`{"commands":[{"label":"...","command":"..."}],"queries":["..."]}`
|
|
44
|
+
- `context-mode/ctx_fetch_and_index`: `{"url":"https://...","source":"..."}`
|
|
45
|
+
- `context-mode/ctx_search`: `{"queries":["q1","q2"]}`
|
|
46
|
+
- `context-mode/ctx_index`: `{"path":"path/to/file-or-dir","source":"..."}`
|
|
47
|
+
or `{"content":"...","source":"..."}`
|
|
48
|
+
|
|
49
|
+
## Mandatory routing
|
|
50
|
+
|
|
51
|
+
- Think in code. For analyze/count/filter/compare/search/parse/transform tasks,
|
|
52
|
+
write code with `context-mode/ctx_execute` and print only the final answer.
|
|
53
|
+
Program the analysis; do not read raw data and compute mentally.
|
|
54
|
+
- File read for analysis: there is no separate `ctx_read` tool.
|
|
55
|
+
`context-mode/ctx_execute_file` is the context-mode file-read surface. It
|
|
56
|
+
loads the file into `FILE_CONTENT` inside the sandbox. Print only selected
|
|
57
|
+
lines, counts, matches, summaries, or structured results. Never print
|
|
58
|
+
`FILE_CONTENT` wholesale unless the user explicitly asks for a full file dump.
|
|
59
|
+
- Native `Read` / `view_file` is correct when editing requires exact bytes, or
|
|
60
|
+
when a small known range is needed. For analysis, exploration, summarization,
|
|
61
|
+
counting, filtering, or searching inside a file, use
|
|
62
|
+
`context-mode/ctx_execute_file`.
|
|
63
|
+
- Use one `context-mode/ctx_batch_execute` call for multi-command repository
|
|
64
|
+
reconnaissance. One batch should replace many shell/list/search calls.
|
|
65
|
+
- Use `context-mode/ctx_execute` for shell commands whose output may exceed a
|
|
66
|
+
short fixed answer. Native Bash is only for git, mkdir, rm, mv, navigation,
|
|
67
|
+
installs, or short observable output.
|
|
68
|
+
- Use `context-mode/ctx_fetch_and_index` for web content, then
|
|
69
|
+
`context-mode/ctx_search` to query it. Do not dump raw HTML into the
|
|
70
|
+
conversation.
|
|
71
|
+
- Use `context-mode/ctx_index` only when content should be stored and searched
|
|
72
|
+
later. For a one-off file question, prefer `context-mode/ctx_execute_file`;
|
|
73
|
+
for follow-up retrieval, index with a descriptive `source` and query with
|
|
74
|
+
`context-mode/ctx_search`.
|
|
75
|
+
- Return only derived answers, concise summaries, selected snippets, or file
|
|
76
|
+
paths to written artifacts. Do not paste raw command dumps, full files, large
|
|
77
|
+
search results, cached schemas, or raw HTML into the conversation.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: context-mode
|
|
3
|
+
description: Mandatory routing rules for Antigravity CLI. Invoke when exploring a codebase, reading files for analysis, listing context-mode tools, searching, parsing, counting, comparing, summarizing, fetching web content, or running data-heavy commands.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# context-mode for Antigravity CLI
|
|
7
|
+
|
|
8
|
+
context-mode MCP tools are available in agy as `context-mode/<tool>`.
|
|
9
|
+
Use these tools directly. Do not inspect cached schema files under
|
|
10
|
+
`~/.gemini/antigravity-cli/mcp/context-mode/*.json`, and do not run
|
|
11
|
+
`ctx_execute` just to discover tool names or schemas.
|
|
12
|
+
|
|
13
|
+
If agy uses the generic MCP wrapper, call `call_mcp_tool` with:
|
|
14
|
+
|
|
15
|
+
- `ServerName`: `"context-mode"`
|
|
16
|
+
- `ToolName`: one of the tool names below
|
|
17
|
+
- `Arguments`: the JSON arguments for that tool
|
|
18
|
+
|
|
19
|
+
## Tool List
|
|
20
|
+
|
|
21
|
+
- `context-mode/ctx_execute`: run JavaScript, TypeScript, Python, shell, or
|
|
22
|
+
other code in a sandbox. Print only the final answer.
|
|
23
|
+
- `context-mode/ctx_execute_file`: read one file into `FILE_CONTENT` inside the
|
|
24
|
+
sandbox and run code over it. This is the context-mode file-read surface.
|
|
25
|
+
- `context-mode/ctx_batch_execute`: run multiple repository commands in one
|
|
26
|
+
batch, index large output, and answer follow-up queries.
|
|
27
|
+
- `context-mode/ctx_index`: store a file, directory, or content in the local
|
|
28
|
+
FTS5 knowledge base for later search.
|
|
29
|
+
- `context-mode/ctx_search`: search indexed content and captured session
|
|
30
|
+
memory. Batch related questions in `queries`.
|
|
31
|
+
- `context-mode/ctx_fetch_and_index`: fetch web content, store it, then query
|
|
32
|
+
with `ctx_search`.
|
|
33
|
+
- `context-mode/ctx_stats`: show context savings and current-session stats.
|
|
34
|
+
- `context-mode/ctx_doctor`: diagnose context-mode runtime and hook health.
|
|
35
|
+
- `context-mode/ctx_upgrade`: provide upgrade or repair guidance.
|
|
36
|
+
- `context-mode/ctx_purge`: purge stored context-mode knowledge after
|
|
37
|
+
confirmation.
|
|
38
|
+
- `context-mode/ctx_insight`: launch or report the Insight analytics app.
|
|
39
|
+
|
|
40
|
+
When the user asks "what context-mode tools are available", answer from this
|
|
41
|
+
list. Do not list `~/.gemini/antigravity-cli/mcp/context-mode` and do not read
|
|
42
|
+
the JSON schema files.
|
|
43
|
+
|
|
44
|
+
## File Reading
|
|
45
|
+
|
|
46
|
+
There is no separate `ctx_read` tool. Use `context-mode/ctx_execute_file` for
|
|
47
|
+
file reads that analyze, summarize, extract, count, filter, or compare.
|
|
48
|
+
|
|
49
|
+
Native `Read` / `view_file` is only right when editing needs exact bytes in the
|
|
50
|
+
conversation, or when the user explicitly asks to view a small known range.
|
|
51
|
+
|
|
52
|
+
Use JavaScript by default for lightweight file analysis:
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"path": "README.md",
|
|
57
|
+
"language": "javascript",
|
|
58
|
+
"code": "const lines = FILE_CONTENT.split(/\\r?\\n/); console.log(lines.slice(0, 20).join('\\n'));"
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Never print `FILE_CONTENT` wholesale unless the user explicitly asks for a full
|
|
63
|
+
file dump. Print selected lines, counts, matches, summaries, or structured
|
|
64
|
+
results.
|
|
65
|
+
|
|
66
|
+
## Codebase Exploration
|
|
67
|
+
|
|
68
|
+
For repository exploration, prefer one `context-mode/ctx_batch_execute` call
|
|
69
|
+
instead of many native `ListDir`, `Read`, `Grep`, or shell calls.
|
|
70
|
+
|
|
71
|
+
For one-off computed answers, use `context-mode/ctx_execute`.
|
|
72
|
+
For one-file analysis, use `context-mode/ctx_execute_file`.
|
|
73
|
+
For durable recall across follow-up questions, use `context-mode/ctx_index`
|
|
74
|
+
with a descriptive `source`, then `context-mode/ctx_search`.
|
|
75
|
+
|
|
76
|
+
Return concise derived answers. Do not paste raw command dumps, full files,
|
|
77
|
+
large search results, cached schemas, or raw HTML into the conversation.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# context-mode — MANDATORY routing rules
|
|
2
|
+
|
|
3
|
+
context-mode MCP tools available. Rules protect context window from flooding. One unrouted command dumps 56 KB into context.
|
|
4
|
+
|
|
5
|
+
## Think in Code — MANDATORY
|
|
6
|
+
|
|
7
|
+
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.
|
|
8
|
+
|
|
9
|
+
## BLOCKED — do NOT attempt
|
|
10
|
+
|
|
11
|
+
### curl / wget — BLOCKED
|
|
12
|
+
Intercepted and replaced with error. Do NOT retry.
|
|
13
|
+
Use: `ctx_fetch_and_index(url, source)` or `ctx_execute(language: "javascript", code: "const r = await fetch(...)")`
|
|
14
|
+
|
|
15
|
+
### Inline HTTP — BLOCKED
|
|
16
|
+
`fetch('http`, `requests.get(`, `requests.post(`, `http.get(`, `http.request(` — intercepted. Do NOT retry.
|
|
17
|
+
Use: `ctx_execute(language, code)` — only stdout enters context
|
|
18
|
+
|
|
19
|
+
### WebFetch — BLOCKED
|
|
20
|
+
Use: `ctx_fetch_and_index(url, source)` then `ctx_search(queries)`
|
|
21
|
+
|
|
22
|
+
## REDIRECTED — use sandbox
|
|
23
|
+
|
|
24
|
+
### Bash (>20 lines output)
|
|
25
|
+
Bash ONLY for: `git`, `mkdir`, `rm`, `mv`, `cd`, `ls`, `npm install`, `pip install`.
|
|
26
|
+
Otherwise: `ctx_batch_execute(commands, queries)` or `ctx_execute(language: "javascript", code: "...")`. Use `language: "shell"` only when code matches the host shell.
|
|
27
|
+
|
|
28
|
+
### Read (for analysis)
|
|
29
|
+
Reading to **Edit** → Read correct. Reading to **analyze/explore/summarize** → `ctx_execute_file(path, language, code)`.
|
|
30
|
+
|
|
31
|
+
### Grep — may flood context
|
|
32
|
+
Use `ctx_execute(language: "javascript", code: "...")` in sandbox for portable filtering/counting.
|
|
33
|
+
|
|
34
|
+
## Tool selection
|
|
35
|
+
|
|
36
|
+
0. **MEMORY**: `ctx_search(sort: "timeline")` — after resume, check prior context before asking user.
|
|
37
|
+
1. **GATHER**: `ctx_batch_execute(commands, queries)` — runs all commands, auto-indexes, returns search. ONE call replaces 30+. Each command: `{label: "header", command: "..."}`.
|
|
38
|
+
2. **FOLLOW-UP**: `ctx_search(queries: ["q1", "q2", ...])` — all questions as array, ONE call (default relevance mode).
|
|
39
|
+
3. **PROCESSING**: `ctx_execute(language, code)` | `ctx_execute_file(path, language, code)` — sandbox, only stdout enters context.
|
|
40
|
+
4. **WEB**: `ctx_fetch_and_index(url, source)` then `ctx_search(queries)` — raw HTML never enters context.
|
|
41
|
+
5. **INDEX**: `ctx_index(content, source)` — store in FTS5 for later search.
|
|
42
|
+
|
|
43
|
+
## Parallel I/O batches
|
|
44
|
+
|
|
45
|
+
For multi-URL fetches or multi-API calls, **always** include `concurrency: N` (1-8):
|
|
46
|
+
|
|
47
|
+
- `ctx_batch_execute(commands: [3+ network commands], concurrency: 5)` — gh, curl, dig, docker inspect, multi-region cloud queries
|
|
48
|
+
- `ctx_fetch_and_index(requests: [{url, source}, ...], concurrency: 5)` — multi-URL batch fetch
|
|
49
|
+
|
|
50
|
+
**Use concurrency 4-8** for I/O-bound work (network calls, API queries). **Keep concurrency 1** for CPU-bound (npm test, build, lint) or commands sharing state (ports, lock files, same-repo writes).
|
|
51
|
+
|
|
52
|
+
GitHub API rate-limit: cap at 4 for `gh` calls.
|
|
53
|
+
|
|
54
|
+
## Subagent routing
|
|
55
|
+
|
|
56
|
+
Routing block auto-injected into subagent prompts. Bash-type subagents upgraded to general-purpose. No manual instruction needed.
|
|
57
|
+
|
|
58
|
+
## Output
|
|
59
|
+
|
|
60
|
+
Write artifacts to FILES — never inline. Return: file path + 1-line description.
|
|
61
|
+
Descriptive source labels for `ctx_search(source: "label")`.
|
|
62
|
+
|
|
63
|
+
## Session Continuity
|
|
64
|
+
|
|
65
|
+
Skills, roles, and decisions persist for the entire session. Do not abandon them as the conversation grows.
|
|
66
|
+
|
|
67
|
+
## Memory
|
|
68
|
+
|
|
69
|
+
Session history is persistent and searchable. On resume, search BEFORE asking the user:
|
|
70
|
+
|
|
71
|
+
| Need | Command |
|
|
72
|
+
|------|---------|
|
|
73
|
+
| What were we working on? | `ctx_search(queries: ["summary"], source: "compaction", sort: "timeline")` |
|
|
74
|
+
| What was the first request? | `ctx_search(queries: ["prompt"], source: "user-prompt", sort: "timeline")` |
|
|
75
|
+
| What did we decide? | `ctx_search(queries: ["decision"], source: "decision", sort: "timeline")` |
|
|
76
|
+
| What NOT to repeat? | `ctx_search(queries: ["rejected"], source: "rejected-approach")` |
|
|
77
|
+
| What constraints exist? | `ctx_search(queries: ["constraint"], source: "constraint")` |
|
|
78
|
+
|
|
79
|
+
DO NOT ask "what were we working on?" — SEARCH FIRST.
|
|
80
|
+
If search returns 0 results, proceed as a fresh session.
|
|
81
|
+
|
|
82
|
+
## ctx commands
|
|
83
|
+
|
|
84
|
+
| Command | Action |
|
|
85
|
+
|---------|--------|
|
|
86
|
+
| `ctx stats` | Call `ctx_stats` MCP tool, display full output verbatim |
|
|
87
|
+
| `ctx doctor` | Call `ctx_doctor` MCP tool, run returned shell command, display as checklist |
|
|
88
|
+
| `ctx upgrade` | Call `ctx_upgrade` MCP tool, run returned shell command, display as checklist |
|
|
89
|
+
| `ctx purge` | Call `ctx_purge` MCP tool with confirm: true. Warns before wiping knowledge base. |
|
|
90
|
+
|
|
91
|
+
After /clear or /compact: knowledge base and session stats preserved. Use `ctx purge` to start fresh.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# context-mode — MANDATORY routing rules
|
|
2
|
+
|
|
3
|
+
context-mode MCP tools available. Rules protect context window from flooding. One unrouted command dumps 56 KB into context. Codex CLI hooks provide runtime enforcement when `[features].hooks = true`; these instructions remain mandatory model-side enforcement. Follow strictly.
|
|
4
|
+
|
|
5
|
+
## Think in Code — MANDATORY
|
|
6
|
+
|
|
7
|
+
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.
|
|
8
|
+
|
|
9
|
+
## BLOCKED — do NOT use
|
|
10
|
+
|
|
11
|
+
### curl / wget — FORBIDDEN
|
|
12
|
+
Do NOT use `curl`/`wget` in shell. Dumps raw HTTP into context.
|
|
13
|
+
Use: `ctx_fetch_and_index(url, source)` or `ctx_execute(language: "javascript", code: "const r = await fetch(...)")`
|
|
14
|
+
|
|
15
|
+
### Inline HTTP — FORBIDDEN
|
|
16
|
+
No `node -e "fetch(..."`, `python -c "requests.get(..."`. Bypasses sandbox.
|
|
17
|
+
Use: `ctx_execute(language, code)` — only stdout enters context
|
|
18
|
+
|
|
19
|
+
### Direct web fetching — FORBIDDEN
|
|
20
|
+
Raw HTML can exceed 100 KB.
|
|
21
|
+
Use: `ctx_fetch_and_index(url, source)` then `ctx_search(queries)`
|
|
22
|
+
|
|
23
|
+
## REDIRECTED — use sandbox
|
|
24
|
+
|
|
25
|
+
### Shell (>20 lines output)
|
|
26
|
+
Shell ONLY for: `git`, `mkdir`, `rm`, `mv`, `cd`, `ls`, `npm install`, `pip install`.
|
|
27
|
+
Otherwise: `ctx_batch_execute(commands, queries)` or `ctx_execute(language: "javascript", code: "...")`. Use `language: "shell"` only when code matches the host shell.
|
|
28
|
+
|
|
29
|
+
### File reading (for analysis)
|
|
30
|
+
Reading to **edit** → reading correct. Reading to **analyze/explore/summarize** → `ctx_execute_file(path, language, code)`.
|
|
31
|
+
|
|
32
|
+
### grep / search (large results)
|
|
33
|
+
Use `ctx_execute(language: "javascript", code: "...")` in sandbox for portable filtering/counting.
|
|
34
|
+
|
|
35
|
+
## Tool selection
|
|
36
|
+
|
|
37
|
+
0. **MEMORY**: `ctx_search(sort: "timeline")` — after resume, check prior context before asking user.
|
|
38
|
+
1. **GATHER**: `ctx_batch_execute(commands, queries)` — runs all commands, auto-indexes, returns search. ONE call replaces 30+. Each command: `{label: "header", command: "..."}`.
|
|
39
|
+
2. **FOLLOW-UP**: `ctx_search(queries: ["q1", "q2", ...])` — all questions as array, ONE call (default relevance mode).
|
|
40
|
+
3. **PROCESSING**: `ctx_execute(language, code)` | `ctx_execute_file(path, language, code)` — sandbox, only stdout enters context.
|
|
41
|
+
4. **WEB**: `ctx_fetch_and_index(url, source)` then `ctx_search(queries)` — raw HTML never enters context.
|
|
42
|
+
5. **INDEX**: `ctx_index(content, source)` — store in FTS5 for later search.
|
|
43
|
+
|
|
44
|
+
## Parallel I/O batches
|
|
45
|
+
|
|
46
|
+
For multi-URL fetches or multi-API calls, **always** include `concurrency: N` (1-8):
|
|
47
|
+
|
|
48
|
+
- `ctx_batch_execute(commands: [3+ network commands], concurrency: 5)` — gh, curl, dig, docker inspect, multi-region cloud queries
|
|
49
|
+
- `ctx_fetch_and_index(requests: [{url, source}, ...], concurrency: 5)` — multi-URL batch fetch
|
|
50
|
+
|
|
51
|
+
**Use concurrency 4-8** for I/O-bound work (network calls, API queries). **Keep concurrency 1** for CPU-bound (npm test, build, lint) or commands sharing state (ports, lock files, same-repo writes).
|
|
52
|
+
|
|
53
|
+
GitHub API rate-limit: cap at 4 for `gh` calls.
|
|
54
|
+
|
|
55
|
+
## Output
|
|
56
|
+
|
|
57
|
+
Write artifacts to FILES — never inline. Return: file path + 1-line description.
|
|
58
|
+
Descriptive source labels for `ctx_search(source: "label")`.
|
|
59
|
+
|
|
60
|
+
## Session Continuity
|
|
61
|
+
|
|
62
|
+
Skills, roles, and decisions persist for the entire session. Do not abandon them as the conversation grows.
|
|
63
|
+
|
|
64
|
+
## Memory
|
|
65
|
+
|
|
66
|
+
Session history is persistent and searchable. On resume, search BEFORE asking the user:
|
|
67
|
+
|
|
68
|
+
| Need | Command |
|
|
69
|
+
|------|---------|
|
|
70
|
+
| What were we working on? | `ctx_search(queries: ["summary"], source: "compaction", sort: "timeline")` |
|
|
71
|
+
| What did we decide? | `ctx_search(queries: ["decision"], source: "decision", sort: "timeline")` |
|
|
72
|
+
| What NOT to repeat? | `ctx_search(queries: ["rejected"], source: "rejected-approach")` |
|
|
73
|
+
| What constraints exist? | `ctx_search(queries: ["constraint"], source: "constraint")` |
|
|
74
|
+
|
|
75
|
+
Note: user-prompt history not available.
|
|
76
|
+
|
|
77
|
+
DO NOT ask "what were we working on?" — SEARCH FIRST.
|
|
78
|
+
If search returns 0 results, proceed as a fresh session.
|
|
79
|
+
|
|
80
|
+
## ctx commands
|
|
81
|
+
|
|
82
|
+
| Command | Action |
|
|
83
|
+
|---------|--------|
|
|
84
|
+
| `ctx stats` | Call `stats` MCP tool, display full output verbatim |
|
|
85
|
+
| `ctx doctor` | Call `doctor` MCP tool, run returned shell command, display as checklist |
|
|
86
|
+
| `ctx upgrade` | Call `upgrade` MCP tool, run returned shell command, display as checklist |
|
|
87
|
+
| `ctx purge` | Call `purge` MCP tool with confirm: true. Warns before wiping knowledge base. |
|
|
88
|
+
|
|
89
|
+
After /clear or /compact: knowledge base and session stats preserved. Use `ctx purge` to start fresh.
|
|
90
|
+
|
|
91
|
+
## Windows notes
|
|
92
|
+
|
|
93
|
+
**PowerShell cmdlets** — Sandbox uses bash. PowerShell cmdlets (`Format-List`, `Get-Culture`, etc.) fail with `command not found`. Wrap with `pwsh -NoProfile -Command "..."`.
|
|
94
|
+
|
|
95
|
+
**Relative paths** — Sandbox CWD is temp dir, not project root. Convert to absolute paths. Ask user to confirm if unknown.
|
|
96
|
+
|
|
97
|
+
**Windows drive letters** — Sandbox runs Git Bash / MSYS2. `X:\path` → `/x/path` (lowercase, no `/mnt/`). Never emit `/mnt/<letter>/`.
|
|
98
|
+
|
|
99
|
+
**Quote paths** — Spaces in paths cause splits. Always double-quote: `rg "symbol" "$REPO_ROOT/some dir/Source"`.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"PreToolUse": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "local_shell|shell|shell_command|exec_command|Bash|Shell|apply_patch|Edit|Write|grep_files|ctx_execute|ctx_execute_file|ctx_batch_execute|ctx_fetch_and_index|ctx_search|ctx_index|mcp__",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{ "type": "command", "command": "context-mode hook codex pretooluse" }
|
|
8
|
+
]
|
|
9
|
+
}
|
|
10
|
+
],
|
|
11
|
+
"PostToolUse": [
|
|
12
|
+
{
|
|
13
|
+
"hooks": [
|
|
14
|
+
{ "type": "command", "command": "context-mode hook codex posttooluse" }
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"SessionStart": [
|
|
19
|
+
{
|
|
20
|
+
"hooks": [
|
|
21
|
+
{ "type": "command", "command": "context-mode hook codex sessionstart" }
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"PreCompact": [
|
|
26
|
+
{
|
|
27
|
+
"hooks": [
|
|
28
|
+
{ "type": "command", "command": "context-mode hook codex precompact" }
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"UserPromptSubmit": [
|
|
33
|
+
{
|
|
34
|
+
"hooks": [
|
|
35
|
+
{ "type": "command", "command": "context-mode hook codex userpromptsubmit" }
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"Stop": [
|
|
40
|
+
{
|
|
41
|
+
"hooks": [
|
|
42
|
+
{ "type": "command", "command": "context-mode hook codex stop" }
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "context-mode",
|
|
3
|
+
"description": "context-mode for GitHub Copilot CLI: sandboxed code execution in 11 languages, an FTS5 knowledge base with BM25 ranking, and session capture. Saves your context window by keeping raw bytes out of the conversation.",
|
|
4
|
+
"version": "2.0.0",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"mcp",
|
|
7
|
+
"context-window",
|
|
8
|
+
"sandbox",
|
|
9
|
+
"code-execution",
|
|
10
|
+
"fts5",
|
|
11
|
+
"bm25"
|
|
12
|
+
],
|
|
13
|
+
"author": {
|
|
14
|
+
"name": "Mert Koseoğlu",
|
|
15
|
+
"url": "https://github.com/mxalbert1996"
|
|
16
|
+
},
|
|
17
|
+
"homepage": "https://github.com/mxalbert1996/context-mode#readme",
|
|
18
|
+
"repository": "https://github.com/mxalbert1996/context-mode",
|
|
19
|
+
"license": "Elastic-2.0",
|
|
20
|
+
"skills": [
|
|
21
|
+
"./skills/context-mode"
|
|
22
|
+
]
|
|
23
|
+
}
|