@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.
Files changed (365) hide show
  1. package/.claude-plugin/marketplace.json +33 -0
  2. package/.claude-plugin/plugin.json +31 -0
  3. package/.codex-plugin/hooks.json +65 -0
  4. package/.codex-plugin/mcp.json +13 -0
  5. package/.codex-plugin/plugin.json +31 -0
  6. package/.openclaw-plugin/index.ts +12 -0
  7. package/.openclaw-plugin/openclaw.plugin.json +38 -0
  8. package/.openclaw-plugin/package.json +28 -0
  9. package/LICENSE +94 -0
  10. package/README.md +1619 -0
  11. package/bin/statusline.mjs +378 -0
  12. package/build/adapters/antigravity/index.d.ts +51 -0
  13. package/build/adapters/antigravity/index.js +169 -0
  14. package/build/adapters/antigravity-cli/index.d.ts +51 -0
  15. package/build/adapters/antigravity-cli/index.js +342 -0
  16. package/build/adapters/base.d.ts +92 -0
  17. package/build/adapters/base.js +135 -0
  18. package/build/adapters/claude-code/config.d.ts +8 -0
  19. package/build/adapters/claude-code/config.js +8 -0
  20. package/build/adapters/claude-code/hooks.d.ts +106 -0
  21. package/build/adapters/claude-code/hooks.js +183 -0
  22. package/build/adapters/claude-code/index.d.ts +80 -0
  23. package/build/adapters/claude-code/index.js +569 -0
  24. package/build/adapters/claude-code-base.d.ts +49 -0
  25. package/build/adapters/claude-code-base.js +113 -0
  26. package/build/adapters/client-map.d.ts +10 -0
  27. package/build/adapters/client-map.js +42 -0
  28. package/build/adapters/codex/config.d.ts +8 -0
  29. package/build/adapters/codex/config.js +8 -0
  30. package/build/adapters/codex/hooks.d.ts +55 -0
  31. package/build/adapters/codex/hooks.js +64 -0
  32. package/build/adapters/codex/index.d.ts +87 -0
  33. package/build/adapters/codex/index.js +995 -0
  34. package/build/adapters/codex/paths.d.ts +1 -0
  35. package/build/adapters/codex/paths.js +12 -0
  36. package/build/adapters/codex/usage.d.ts +107 -0
  37. package/build/adapters/codex/usage.js +227 -0
  38. package/build/adapters/copilot-base.d.ts +94 -0
  39. package/build/adapters/copilot-base.js +297 -0
  40. package/build/adapters/copilot-cli/hooks.d.ts +33 -0
  41. package/build/adapters/copilot-cli/hooks.js +64 -0
  42. package/build/adapters/copilot-cli/index.d.ts +48 -0
  43. package/build/adapters/copilot-cli/index.js +341 -0
  44. package/build/adapters/cursor/config.d.ts +4 -0
  45. package/build/adapters/cursor/config.js +4 -0
  46. package/build/adapters/cursor/hooks.d.ts +55 -0
  47. package/build/adapters/cursor/hooks.js +82 -0
  48. package/build/adapters/cursor/index.d.ts +64 -0
  49. package/build/adapters/cursor/index.js +517 -0
  50. package/build/adapters/detect.d.ts +136 -0
  51. package/build/adapters/detect.js +623 -0
  52. package/build/adapters/gemini-cli/config.d.ts +8 -0
  53. package/build/adapters/gemini-cli/config.js +8 -0
  54. package/build/adapters/gemini-cli/hooks.d.ts +83 -0
  55. package/build/adapters/gemini-cli/hooks.js +115 -0
  56. package/build/adapters/gemini-cli/index.d.ts +80 -0
  57. package/build/adapters/gemini-cli/index.js +483 -0
  58. package/build/adapters/jetbrains-copilot/config.d.ts +8 -0
  59. package/build/adapters/jetbrains-copilot/config.js +8 -0
  60. package/build/adapters/jetbrains-copilot/hooks.d.ts +59 -0
  61. package/build/adapters/jetbrains-copilot/hooks.js +87 -0
  62. package/build/adapters/jetbrains-copilot/index.d.ts +31 -0
  63. package/build/adapters/jetbrains-copilot/index.js +131 -0
  64. package/build/adapters/kimi/config.d.ts +8 -0
  65. package/build/adapters/kimi/config.js +8 -0
  66. package/build/adapters/kimi/hooks.d.ts +28 -0
  67. package/build/adapters/kimi/hooks.js +34 -0
  68. package/build/adapters/kimi/index.d.ts +66 -0
  69. package/build/adapters/kimi/index.js +537 -0
  70. package/build/adapters/kimi/paths.d.ts +21 -0
  71. package/build/adapters/kimi/paths.js +52 -0
  72. package/build/adapters/kimi/usage.d.ts +82 -0
  73. package/build/adapters/kimi/usage.js +217 -0
  74. package/build/adapters/kiro/hooks.d.ts +61 -0
  75. package/build/adapters/kiro/hooks.js +94 -0
  76. package/build/adapters/kiro/index.d.ts +61 -0
  77. package/build/adapters/kiro/index.js +301 -0
  78. package/build/adapters/omp/index.d.ts +65 -0
  79. package/build/adapters/omp/index.js +182 -0
  80. package/build/adapters/omp/plugin.d.ts +81 -0
  81. package/build/adapters/omp/plugin.js +331 -0
  82. package/build/adapters/omp/usage.d.ts +49 -0
  83. package/build/adapters/omp/usage.js +110 -0
  84. package/build/adapters/openclaw/config.d.ts +8 -0
  85. package/build/adapters/openclaw/config.js +8 -0
  86. package/build/adapters/openclaw/hooks.d.ts +50 -0
  87. package/build/adapters/openclaw/hooks.js +61 -0
  88. package/build/adapters/openclaw/index.d.ts +74 -0
  89. package/build/adapters/openclaw/index.js +439 -0
  90. package/build/adapters/openclaw/mcp-tools.d.ts +54 -0
  91. package/build/adapters/openclaw/mcp-tools.js +207 -0
  92. package/build/adapters/openclaw/plugin.d.ts +141 -0
  93. package/build/adapters/openclaw/plugin.js +818 -0
  94. package/build/adapters/openclaw/session-db.d.ts +55 -0
  95. package/build/adapters/openclaw/session-db.js +88 -0
  96. package/build/adapters/openclaw/usage.d.ts +34 -0
  97. package/build/adapters/openclaw/usage.js +52 -0
  98. package/build/adapters/openclaw/workspace-router.d.ts +29 -0
  99. package/build/adapters/openclaw/workspace-router.js +64 -0
  100. package/build/adapters/opencode/config.d.ts +8 -0
  101. package/build/adapters/opencode/config.js +8 -0
  102. package/build/adapters/opencode/hooks.d.ts +38 -0
  103. package/build/adapters/opencode/hooks.js +50 -0
  104. package/build/adapters/opencode/index.d.ts +144 -0
  105. package/build/adapters/opencode/index.js +638 -0
  106. package/build/adapters/opencode/plugin.d.ts +249 -0
  107. package/build/adapters/opencode/plugin.js +1536 -0
  108. package/build/adapters/opencode/v2.d.ts +117 -0
  109. package/build/adapters/opencode/v2.js +224 -0
  110. package/build/adapters/opencode/zod3tov4.d.ts +1 -0
  111. package/build/adapters/opencode/zod3tov4.js +132 -0
  112. package/build/adapters/pi/extension.d.ts +81 -0
  113. package/build/adapters/pi/extension.js +861 -0
  114. package/build/adapters/pi/index.d.ts +57 -0
  115. package/build/adapters/pi/index.js +173 -0
  116. package/build/adapters/pi/mcp-bridge.d.ts +268 -0
  117. package/build/adapters/pi/mcp-bridge.js +894 -0
  118. package/build/adapters/qwen-code/hooks.d.ts +26 -0
  119. package/build/adapters/qwen-code/hooks.js +29 -0
  120. package/build/adapters/qwen-code/index.d.ts +40 -0
  121. package/build/adapters/qwen-code/index.js +361 -0
  122. package/build/adapters/qwen-code/usage.d.ts +90 -0
  123. package/build/adapters/qwen-code/usage.js +222 -0
  124. package/build/adapters/types.d.ts +360 -0
  125. package/build/adapters/types.js +118 -0
  126. package/build/adapters/vscode-copilot/config.d.ts +8 -0
  127. package/build/adapters/vscode-copilot/config.js +8 -0
  128. package/build/adapters/vscode-copilot/hooks.d.ts +71 -0
  129. package/build/adapters/vscode-copilot/hooks.js +98 -0
  130. package/build/adapters/vscode-copilot/index.d.ts +32 -0
  131. package/build/adapters/vscode-copilot/index.js +222 -0
  132. package/build/adapters/zed/index.d.ts +40 -0
  133. package/build/adapters/zed/index.js +163 -0
  134. package/build/cli.d.ts +34 -0
  135. package/build/cli.js +1828 -0
  136. package/build/db-base.d.ts +250 -0
  137. package/build/db-base.js +756 -0
  138. package/build/executor.d.ts +72 -0
  139. package/build/executor.js +678 -0
  140. package/build/exit-classify.d.ts +19 -0
  141. package/build/exit-classify.js +12 -0
  142. package/build/fetch/blocks.d.ts +145 -0
  143. package/build/fetch/blocks.js +244 -0
  144. package/build/fetch/extract.d.ts +68 -0
  145. package/build/fetch/extract.js +123 -0
  146. package/build/fetch/page-store.d.ts +66 -0
  147. package/build/fetch/page-store.js +174 -0
  148. package/build/fetch-cache.d.ts +13 -0
  149. package/build/fetch-cache.js +15 -0
  150. package/build/lifecycle.d.ts +124 -0
  151. package/build/lifecycle.js +278 -0
  152. package/build/package-identity.d.ts +26 -0
  153. package/build/package-identity.js +28 -0
  154. package/build/runPool.d.ts +36 -0
  155. package/build/runPool.js +51 -0
  156. package/build/runtime.d.ts +71 -0
  157. package/build/runtime.js +659 -0
  158. package/build/search/auto-memory.d.ts +47 -0
  159. package/build/search/auto-memory.js +170 -0
  160. package/build/search/ctx-search-schema.d.ts +90 -0
  161. package/build/search/ctx-search-schema.js +135 -0
  162. package/build/search/flood-guard.d.ts +57 -0
  163. package/build/search/flood-guard.js +80 -0
  164. package/build/search/unified.d.ts +56 -0
  165. package/build/search/unified.js +104 -0
  166. package/build/security.d.ts +206 -0
  167. package/build/security.js +780 -0
  168. package/build/server.d.ts +240 -0
  169. package/build/server.js +5034 -0
  170. package/build/session/analytics.d.ts +773 -0
  171. package/build/session/analytics.js +2420 -0
  172. package/build/session/db.d.ts +468 -0
  173. package/build/session/db.js +1330 -0
  174. package/build/session/error-classifier.d.ts +87 -0
  175. package/build/session/error-classifier.js +303 -0
  176. package/build/session/event-emit.d.ts +48 -0
  177. package/build/session/event-emit.js +101 -0
  178. package/build/session/extract.d.ts +333 -0
  179. package/build/session/extract.js +2688 -0
  180. package/build/session/model-prices.json +429 -0
  181. package/build/session/persist-tool-calls.d.ts +54 -0
  182. package/build/session/persist-tool-calls.js +105 -0
  183. package/build/session/pricing.d.ts +64 -0
  184. package/build/session/pricing.js +151 -0
  185. package/build/session/project-attribution.d.ts +73 -0
  186. package/build/session/project-attribution.js +245 -0
  187. package/build/session/purge.d.ts +138 -0
  188. package/build/session/purge.js +240 -0
  189. package/build/session/retrieval-marker.d.ts +39 -0
  190. package/build/session/retrieval-marker.js +65 -0
  191. package/build/session/snapshot.d.ts +46 -0
  192. package/build/session/snapshot.js +532 -0
  193. package/build/store-directory.d.ts +56 -0
  194. package/build/store-directory.js +254 -0
  195. package/build/store.d.ts +147 -0
  196. package/build/store.js +1714 -0
  197. package/build/truncate.d.ts +57 -0
  198. package/build/truncate.js +142 -0
  199. package/build/types.d.ts +117 -0
  200. package/build/types.js +20 -0
  201. package/build/util/claude-config.d.ts +32 -0
  202. package/build/util/claude-config.js +84 -0
  203. package/build/util/hook-config.d.ts +27 -0
  204. package/build/util/hook-config.js +76 -0
  205. package/build/util/jsonc.d.ts +14 -0
  206. package/build/util/jsonc.js +104 -0
  207. package/build/util/plugin-cache-integrity.d.ts +51 -0
  208. package/build/util/plugin-cache-integrity.js +146 -0
  209. package/build/util/project-dir.d.ts +149 -0
  210. package/build/util/project-dir.js +340 -0
  211. package/build/util/sibling-mcp.d.ts +79 -0
  212. package/build/util/sibling-mcp.js +181 -0
  213. package/cli.bundle.mjs +1495 -0
  214. package/configs/antigravity/GEMINI.md +68 -0
  215. package/configs/antigravity/mcp_config.json +7 -0
  216. package/configs/antigravity-cli/hooks/hooks.json +37 -0
  217. package/configs/antigravity-cli/hooks.json +37 -0
  218. package/configs/antigravity-cli/mcp_config.json +10 -0
  219. package/configs/antigravity-cli/plugin.json +14 -0
  220. package/configs/antigravity-cli/rules/context-mode.md +77 -0
  221. package/configs/antigravity-cli/skills/context-mode/SKILL.md +77 -0
  222. package/configs/claude-code/CLAUDE.md +91 -0
  223. package/configs/codex/AGENTS.md +99 -0
  224. package/configs/codex/config.toml +8 -0
  225. package/configs/codex/hooks.json +47 -0
  226. package/configs/copilot-cli/.github/plugin/plugin.json +23 -0
  227. package/configs/copilot-cli/.mcp.json +12 -0
  228. package/configs/copilot-cli/README.md +47 -0
  229. package/configs/copilot-cli/hooks.json +41 -0
  230. package/configs/copilot-cli/skills/context-mode/SKILL.md +38 -0
  231. package/configs/cursor/context-mode.mdc +76 -0
  232. package/configs/cursor/hooks.json +21 -0
  233. package/configs/cursor/mcp.json +7 -0
  234. package/configs/gemini-cli/GEMINI.md +88 -0
  235. package/configs/gemini-cli/mcp.json +7 -0
  236. package/configs/gemini-cli/settings.json +60 -0
  237. package/configs/jetbrains-copilot/copilot-instructions.md +80 -0
  238. package/configs/jetbrains-copilot/hooks.json +16 -0
  239. package/configs/jetbrains-copilot/mcp.json +7 -0
  240. package/configs/kilo/AGENTS.md +84 -0
  241. package/configs/kilo/kilo.json +6 -0
  242. package/configs/kimi/hooks.json +54 -0
  243. package/configs/kiro/KIRO.md +84 -0
  244. package/configs/kiro/agent.json +18 -0
  245. package/configs/kiro/mcp.json +7 -0
  246. package/configs/omp/SYSTEM.md +85 -0
  247. package/configs/omp/mcp.json +7 -0
  248. package/configs/openclaw/AGENTS.md +87 -0
  249. package/configs/openclaw/openclaw.json +13 -0
  250. package/configs/opencode/AGENTS.md +84 -0
  251. package/configs/opencode/opencode.json +6 -0
  252. package/configs/pi/AGENTS.md +3 -0
  253. package/configs/qwen-code/QWEN.md +91 -0
  254. package/configs/vscode-copilot/copilot-instructions.md +80 -0
  255. package/configs/vscode-copilot/hooks.json +16 -0
  256. package/configs/vscode-copilot/mcp.json +7 -0
  257. package/configs/zed/AGENTS.md +68 -0
  258. package/hooks/antigravity-cli/payload.mjs +98 -0
  259. package/hooks/antigravity-cli/posttooluse.mjs +138 -0
  260. package/hooks/antigravity-cli/pretooluse.mjs +78 -0
  261. package/hooks/antigravity-cli/stop.mjs +58 -0
  262. package/hooks/auto-injection.mjs +102 -0
  263. package/hooks/cache-heal-utils.mjs +379 -0
  264. package/hooks/codex/platform.mjs +1 -0
  265. package/hooks/codex/posttooluse.mjs +66 -0
  266. package/hooks/codex/precompact.mjs +70 -0
  267. package/hooks/codex/pretooluse.mjs +42 -0
  268. package/hooks/codex/sessionstart.mjs +121 -0
  269. package/hooks/codex/stop.mjs +138 -0
  270. package/hooks/codex/userpromptsubmit.mjs +75 -0
  271. package/hooks/copilot-cli/posttooluse.mjs +79 -0
  272. package/hooks/copilot-cli/precompact.mjs +66 -0
  273. package/hooks/copilot-cli/pretooluse.mjs +41 -0
  274. package/hooks/copilot-cli/sessionstart.mjs +121 -0
  275. package/hooks/copilot-cli/stop.mjs +59 -0
  276. package/hooks/copilot-cli/userpromptsubmit.mjs +77 -0
  277. package/hooks/core/codex-caps.mjs +112 -0
  278. package/hooks/core/formatters.mjs +356 -0
  279. package/hooks/core/mcp-ready.mjs +109 -0
  280. package/hooks/core/platform-detect.mjs +49 -0
  281. package/hooks/core/routing.mjs +1050 -0
  282. package/hooks/core/stdin.mjs +90 -0
  283. package/hooks/core/tool-naming.mjs +57 -0
  284. package/hooks/cursor/afteragentresponse.mjs +74 -0
  285. package/hooks/cursor/hooks.json +31 -0
  286. package/hooks/cursor/posttooluse.mjs +72 -0
  287. package/hooks/cursor/pretooluse.mjs +26 -0
  288. package/hooks/cursor/sessionstart.mjs +97 -0
  289. package/hooks/cursor/stop.mjs +48 -0
  290. package/hooks/ensure-deps.mjs +254 -0
  291. package/hooks/formatters/claude-code.mjs +113 -0
  292. package/hooks/formatters/cursor.mjs +37 -0
  293. package/hooks/formatters/gemini-cli.mjs +55 -0
  294. package/hooks/formatters/vscode-copilot.mjs +55 -0
  295. package/hooks/gemini-cli/aftermodel.mjs +70 -0
  296. package/hooks/gemini-cli/aftertool.mjs +61 -0
  297. package/hooks/gemini-cli/beforeagent.mjs +99 -0
  298. package/hooks/gemini-cli/beforetool.mjs +27 -0
  299. package/hooks/gemini-cli/precompress.mjs +55 -0
  300. package/hooks/gemini-cli/sessionstart.mjs +137 -0
  301. package/hooks/heal-partial-install.mjs +712 -0
  302. package/hooks/hooks.json +143 -0
  303. package/hooks/jetbrains-copilot/posttooluse.mjs +61 -0
  304. package/hooks/jetbrains-copilot/precompact.mjs +55 -0
  305. package/hooks/jetbrains-copilot/pretooluse.mjs +27 -0
  306. package/hooks/jetbrains-copilot/sessionstart.mjs +124 -0
  307. package/hooks/kimi/platform.mjs +1 -0
  308. package/hooks/kimi/posttooluse.mjs +72 -0
  309. package/hooks/kimi/precompact.mjs +80 -0
  310. package/hooks/kimi/pretooluse.mjs +42 -0
  311. package/hooks/kimi/sessionend.mjs +61 -0
  312. package/hooks/kimi/sessionstart.mjs +113 -0
  313. package/hooks/kimi/stop.mjs +132 -0
  314. package/hooks/kimi/userpromptsubmit.mjs +90 -0
  315. package/hooks/kiro/agentspawn.mjs +97 -0
  316. package/hooks/kiro/posttooluse.mjs +51 -0
  317. package/hooks/kiro/pretooluse.mjs +64 -0
  318. package/hooks/kiro/userpromptsubmit.mjs +88 -0
  319. package/hooks/normalize-hooks.mjs +323 -0
  320. package/hooks/platform-bridge.mjs +340 -0
  321. package/hooks/posttooluse.mjs +225 -0
  322. package/hooks/precompact.mjs +100 -0
  323. package/hooks/pretooluse.mjs +227 -0
  324. package/hooks/qwen-code/platform.mjs +1 -0
  325. package/hooks/qwen-code/stop.mjs +168 -0
  326. package/hooks/routing-block.mjs +105 -0
  327. package/hooks/run-hook.mjs +95 -0
  328. package/hooks/security.bundle.mjs +2 -0
  329. package/hooks/session-attribution.bundle.mjs +1 -0
  330. package/hooks/session-db.bundle.mjs +145 -0
  331. package/hooks/session-directive.mjs +520 -0
  332. package/hooks/session-extract.bundle.mjs +3 -0
  333. package/hooks/session-helpers.mjs +428 -0
  334. package/hooks/session-loaders.mjs +448 -0
  335. package/hooks/session-snapshot.bundle.mjs +32 -0
  336. package/hooks/sessionstart.mjs +464 -0
  337. package/hooks/stop.mjs +82 -0
  338. package/hooks/suppress-stderr.mjs +25 -0
  339. package/hooks/userpromptsubmit.mjs +108 -0
  340. package/hooks/vscode-copilot/posttooluse.mjs +61 -0
  341. package/hooks/vscode-copilot/precompact.mjs +55 -0
  342. package/hooks/vscode-copilot/pretooluse.mjs +27 -0
  343. package/hooks/vscode-copilot/sessionstart.mjs +129 -0
  344. package/openclaw.plugin.json +38 -0
  345. package/package.json +132 -0
  346. package/scripts/heal-better-sqlite3.mjs +430 -0
  347. package/scripts/heal-installed-plugins.mjs +635 -0
  348. package/scripts/plugin-cache-integrity.mjs +248 -0
  349. package/scripts/postinstall.mjs +397 -0
  350. package/server.bundle.mjs +1421 -0
  351. package/server.js +5 -0
  352. package/skills/.ignore +7 -0
  353. package/skills/context-mode/SKILL.md +300 -0
  354. package/skills/context-mode/references/anti-patterns.md +283 -0
  355. package/skills/context-mode/references/patterns-javascript.md +298 -0
  356. package/skills/context-mode/references/patterns-python.md +304 -0
  357. package/skills/context-mode/references/patterns-shell.md +277 -0
  358. package/skills/ctx-doctor/SKILL.md +22 -0
  359. package/skills/ctx-index/SKILL.md +46 -0
  360. package/skills/ctx-insight/SKILL.md +24 -0
  361. package/skills/ctx-purge/SKILL.md +49 -0
  362. package/skills/ctx-search/SKILL.md +35 -0
  363. package/skills/ctx-stats/SKILL.md +26 -0
  364. package/skills/ctx-upgrade/SKILL.md +31 -0
  365. 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,7 @@
1
+ {
2
+ "mcpServers": {
3
+ "context-mode": {
4
+ "command": "context-mode"
5
+ }
6
+ }
7
+ }
@@ -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,10 @@
1
+ {
2
+ "mcpServers": {
3
+ "context-mode": {
4
+ "command": "context-mode",
5
+ "env": {
6
+ "CONTEXT_MODE_PLATFORM": "antigravity-cli"
7
+ }
8
+ }
9
+ }
10
+ }
@@ -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,8 @@
1
+ # Codex CLI — context-mode MCP server configuration
2
+ # Add this to ~/.codex/config.toml
3
+
4
+ [features]
5
+ hooks = true
6
+
7
+ [mcp_servers.context-mode]
8
+ command = "context-mode"
@@ -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
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "mcpServers": {
3
+ "context-mode": {
4
+ "command": "context-mode",
5
+ "args": [],
6
+ "env": {
7
+ "CONTEXT_MODE_PLATFORM": "copilot-cli",
8
+ "CONTEXT_MODE_COPILOT_PLUGIN": "1"
9
+ }
10
+ }
11
+ }
12
+ }