codeprobe 0.1.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 (355) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +406 -0
  3. package/dist/cli.d.ts +7 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +104 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/ab.d.ts +7 -0
  8. package/dist/commands/ab.d.ts.map +1 -0
  9. package/dist/commands/ab.js +230 -0
  10. package/dist/commands/ab.js.map +1 -0
  11. package/dist/commands/agents.d.ts +10 -0
  12. package/dist/commands/agents.d.ts.map +1 -0
  13. package/dist/commands/agents.js +326 -0
  14. package/dist/commands/agents.js.map +1 -0
  15. package/dist/commands/autotest.d.ts +10 -0
  16. package/dist/commands/autotest.d.ts.map +1 -0
  17. package/dist/commands/autotest.js +408 -0
  18. package/dist/commands/autotest.js.map +1 -0
  19. package/dist/commands/benchmark.d.ts +6 -0
  20. package/dist/commands/benchmark.d.ts.map +1 -0
  21. package/dist/commands/benchmark.js +215 -0
  22. package/dist/commands/benchmark.js.map +1 -0
  23. package/dist/commands/check.d.ts +10 -0
  24. package/dist/commands/check.d.ts.map +1 -0
  25. package/dist/commands/check.js +333 -0
  26. package/dist/commands/check.js.map +1 -0
  27. package/dist/commands/context.d.ts +16 -0
  28. package/dist/commands/context.d.ts.map +1 -0
  29. package/dist/commands/context.js +219 -0
  30. package/dist/commands/context.js.map +1 -0
  31. package/dist/commands/cost.d.ts +9 -0
  32. package/dist/commands/cost.d.ts.map +1 -0
  33. package/dist/commands/cost.js +142 -0
  34. package/dist/commands/cost.js.map +1 -0
  35. package/dist/commands/dashboard.d.ts +10 -0
  36. package/dist/commands/dashboard.d.ts.map +1 -0
  37. package/dist/commands/dashboard.js +462 -0
  38. package/dist/commands/dashboard.js.map +1 -0
  39. package/dist/commands/diff.d.ts +6 -0
  40. package/dist/commands/diff.d.ts.map +1 -0
  41. package/dist/commands/diff.js +118 -0
  42. package/dist/commands/diff.js.map +1 -0
  43. package/dist/commands/doctor.d.ts +12 -0
  44. package/dist/commands/doctor.d.ts.map +1 -0
  45. package/dist/commands/doctor.js +203 -0
  46. package/dist/commands/doctor.js.map +1 -0
  47. package/dist/commands/explain.d.ts +7 -0
  48. package/dist/commands/explain.d.ts.map +1 -0
  49. package/dist/commands/explain.js +164 -0
  50. package/dist/commands/explain.js.map +1 -0
  51. package/dist/commands/flaky.d.ts +10 -0
  52. package/dist/commands/flaky.d.ts.map +1 -0
  53. package/dist/commands/flaky.js +141 -0
  54. package/dist/commands/flaky.js.map +1 -0
  55. package/dist/commands/generateClaudeMd.d.ts +11 -0
  56. package/dist/commands/generateClaudeMd.d.ts.map +1 -0
  57. package/dist/commands/generateClaudeMd.js +278 -0
  58. package/dist/commands/generateClaudeMd.js.map +1 -0
  59. package/dist/commands/generateRules.d.ts +11 -0
  60. package/dist/commands/generateRules.d.ts.map +1 -0
  61. package/dist/commands/generateRules.js +413 -0
  62. package/dist/commands/generateRules.js.map +1 -0
  63. package/dist/commands/heatmap.d.ts +7 -0
  64. package/dist/commands/heatmap.d.ts.map +1 -0
  65. package/dist/commands/heatmap.js +117 -0
  66. package/dist/commands/heatmap.js.map +1 -0
  67. package/dist/commands/history.d.ts +13 -0
  68. package/dist/commands/history.d.ts.map +1 -0
  69. package/dist/commands/history.js +113 -0
  70. package/dist/commands/history.js.map +1 -0
  71. package/dist/commands/hooks.d.ts +9 -0
  72. package/dist/commands/hooks.d.ts.map +1 -0
  73. package/dist/commands/hooks.js +199 -0
  74. package/dist/commands/hooks.js.map +1 -0
  75. package/dist/commands/improve.d.ts +7 -0
  76. package/dist/commands/improve.d.ts.map +1 -0
  77. package/dist/commands/improve.js +192 -0
  78. package/dist/commands/improve.js.map +1 -0
  79. package/dist/commands/init.d.ts +9 -0
  80. package/dist/commands/init.d.ts.map +1 -0
  81. package/dist/commands/init.js +270 -0
  82. package/dist/commands/init.js.map +1 -0
  83. package/dist/commands/installHook.d.ts +9 -0
  84. package/dist/commands/installHook.d.ts.map +1 -0
  85. package/dist/commands/installHook.js +78 -0
  86. package/dist/commands/installHook.js.map +1 -0
  87. package/dist/commands/lint.d.ts +6 -0
  88. package/dist/commands/lint.d.ts.map +1 -0
  89. package/dist/commands/lint.js +237 -0
  90. package/dist/commands/lint.js.map +1 -0
  91. package/dist/commands/map.d.ts +9 -0
  92. package/dist/commands/map.d.ts.map +1 -0
  93. package/dist/commands/map.js +114 -0
  94. package/dist/commands/map.js.map +1 -0
  95. package/dist/commands/mcp.d.ts +6 -0
  96. package/dist/commands/mcp.d.ts.map +1 -0
  97. package/dist/commands/mcp.js +151 -0
  98. package/dist/commands/mcp.js.map +1 -0
  99. package/dist/commands/models.d.ts +9 -0
  100. package/dist/commands/models.d.ts.map +1 -0
  101. package/dist/commands/models.js +89 -0
  102. package/dist/commands/models.js.map +1 -0
  103. package/dist/commands/pack.d.ts +10 -0
  104. package/dist/commands/pack.d.ts.map +1 -0
  105. package/dist/commands/pack.js +248 -0
  106. package/dist/commands/pack.js.map +1 -0
  107. package/dist/commands/recommend.d.ts +10 -0
  108. package/dist/commands/recommend.d.ts.map +1 -0
  109. package/dist/commands/recommend.js +472 -0
  110. package/dist/commands/recommend.js.map +1 -0
  111. package/dist/commands/regression.d.ts +10 -0
  112. package/dist/commands/regression.d.ts.map +1 -0
  113. package/dist/commands/regression.js +212 -0
  114. package/dist/commands/regression.js.map +1 -0
  115. package/dist/commands/repl.d.ts +9 -0
  116. package/dist/commands/repl.d.ts.map +1 -0
  117. package/dist/commands/repl.js +245 -0
  118. package/dist/commands/repl.js.map +1 -0
  119. package/dist/commands/scan.d.ts +10 -0
  120. package/dist/commands/scan.d.ts.map +1 -0
  121. package/dist/commands/scan.js +352 -0
  122. package/dist/commands/scan.js.map +1 -0
  123. package/dist/commands/score.d.ts +10 -0
  124. package/dist/commands/score.d.ts.map +1 -0
  125. package/dist/commands/score.js +192 -0
  126. package/dist/commands/score.js.map +1 -0
  127. package/dist/commands/security.d.ts +10 -0
  128. package/dist/commands/security.d.ts.map +1 -0
  129. package/dist/commands/security.js +211 -0
  130. package/dist/commands/security.js.map +1 -0
  131. package/dist/commands/simulate.d.ts +7 -0
  132. package/dist/commands/simulate.d.ts.map +1 -0
  133. package/dist/commands/simulate.js +149 -0
  134. package/dist/commands/simulate.js.map +1 -0
  135. package/dist/commands/summary.d.ts +9 -0
  136. package/dist/commands/summary.d.ts.map +1 -0
  137. package/dist/commands/summary.js +271 -0
  138. package/dist/commands/summary.js.map +1 -0
  139. package/dist/commands/test.d.ts +9 -0
  140. package/dist/commands/test.d.ts.map +1 -0
  141. package/dist/commands/test.js +219 -0
  142. package/dist/commands/test.js.map +1 -0
  143. package/dist/commands/ui.d.ts +8 -0
  144. package/dist/commands/ui.d.ts.map +1 -0
  145. package/dist/commands/ui.js +222 -0
  146. package/dist/commands/ui.js.map +1 -0
  147. package/dist/commands/validate.d.ts +7 -0
  148. package/dist/commands/validate.d.ts.map +1 -0
  149. package/dist/commands/validate.js +254 -0
  150. package/dist/commands/validate.js.map +1 -0
  151. package/dist/commands/workflow.d.ts +39 -0
  152. package/dist/commands/workflow.d.ts.map +1 -0
  153. package/dist/commands/workflow.js +309 -0
  154. package/dist/commands/workflow.js.map +1 -0
  155. package/dist/core/__tests__/contextAnalyzer.test.d.ts +2 -0
  156. package/dist/core/__tests__/contextAnalyzer.test.d.ts.map +1 -0
  157. package/dist/core/__tests__/contextAnalyzer.test.js +48 -0
  158. package/dist/core/__tests__/contextAnalyzer.test.js.map +1 -0
  159. package/dist/core/__tests__/promptLinter.test.d.ts +2 -0
  160. package/dist/core/__tests__/promptLinter.test.d.ts.map +1 -0
  161. package/dist/core/__tests__/promptLinter.test.js +74 -0
  162. package/dist/core/__tests__/promptLinter.test.js.map +1 -0
  163. package/dist/core/__tests__/promptRunner.test.d.ts +2 -0
  164. package/dist/core/__tests__/promptRunner.test.d.ts.map +1 -0
  165. package/dist/core/__tests__/promptRunner.test.js +84 -0
  166. package/dist/core/__tests__/promptRunner.test.js.map +1 -0
  167. package/dist/core/__tests__/securityScanner.test.d.ts +2 -0
  168. package/dist/core/__tests__/securityScanner.test.d.ts.map +1 -0
  169. package/dist/core/__tests__/securityScanner.test.js +39 -0
  170. package/dist/core/__tests__/securityScanner.test.js.map +1 -0
  171. package/dist/core/agentTracer.d.ts +21 -0
  172. package/dist/core/agentTracer.d.ts.map +1 -0
  173. package/dist/core/agentTracer.js +355 -0
  174. package/dist/core/agentTracer.js.map +1 -0
  175. package/dist/core/anthropicClient.d.ts +26 -0
  176. package/dist/core/anthropicClient.d.ts.map +1 -0
  177. package/dist/core/anthropicClient.js +62 -0
  178. package/dist/core/anthropicClient.js.map +1 -0
  179. package/dist/core/benchmarkRunner.d.ts +25 -0
  180. package/dist/core/benchmarkRunner.d.ts.map +1 -0
  181. package/dist/core/benchmarkRunner.js +182 -0
  182. package/dist/core/benchmarkRunner.js.map +1 -0
  183. package/dist/core/contextAnalyzer.d.ts +19 -0
  184. package/dist/core/contextAnalyzer.d.ts.map +1 -0
  185. package/dist/core/contextAnalyzer.js +221 -0
  186. package/dist/core/contextAnalyzer.js.map +1 -0
  187. package/dist/core/contextPacker.d.ts +26 -0
  188. package/dist/core/contextPacker.d.ts.map +1 -0
  189. package/dist/core/contextPacker.js +358 -0
  190. package/dist/core/contextPacker.js.map +1 -0
  191. package/dist/core/datasetRunner.d.ts +10 -0
  192. package/dist/core/datasetRunner.d.ts.map +1 -0
  193. package/dist/core/datasetRunner.js +130 -0
  194. package/dist/core/datasetRunner.js.map +1 -0
  195. package/dist/core/doctorRunner.d.ts +24 -0
  196. package/dist/core/doctorRunner.d.ts.map +1 -0
  197. package/dist/core/doctorRunner.js +278 -0
  198. package/dist/core/doctorRunner.js.map +1 -0
  199. package/dist/core/hookScanner.d.ts +24 -0
  200. package/dist/core/hookScanner.d.ts.map +1 -0
  201. package/dist/core/hookScanner.js +226 -0
  202. package/dist/core/hookScanner.js.map +1 -0
  203. package/dist/core/mcpScanner.d.ts +22 -0
  204. package/dist/core/mcpScanner.d.ts.map +1 -0
  205. package/dist/core/mcpScanner.js +290 -0
  206. package/dist/core/mcpScanner.js.map +1 -0
  207. package/dist/core/modelRegistry.d.ts +35 -0
  208. package/dist/core/modelRegistry.d.ts.map +1 -0
  209. package/dist/core/modelRegistry.js +97 -0
  210. package/dist/core/modelRegistry.js.map +1 -0
  211. package/dist/core/promptDiff.d.ts +25 -0
  212. package/dist/core/promptDiff.d.ts.map +1 -0
  213. package/dist/core/promptDiff.js +130 -0
  214. package/dist/core/promptDiff.js.map +1 -0
  215. package/dist/core/promptExplainer.d.ts +17 -0
  216. package/dist/core/promptExplainer.d.ts.map +1 -0
  217. package/dist/core/promptExplainer.js +334 -0
  218. package/dist/core/promptExplainer.js.map +1 -0
  219. package/dist/core/promptImprover.d.ts +19 -0
  220. package/dist/core/promptImprover.d.ts.map +1 -0
  221. package/dist/core/promptImprover.js +260 -0
  222. package/dist/core/promptImprover.js.map +1 -0
  223. package/dist/core/promptLinter.d.ts +24 -0
  224. package/dist/core/promptLinter.d.ts.map +1 -0
  225. package/dist/core/promptLinter.js +319 -0
  226. package/dist/core/promptLinter.js.map +1 -0
  227. package/dist/core/promptRunner.d.ts +31 -0
  228. package/dist/core/promptRunner.d.ts.map +1 -0
  229. package/dist/core/promptRunner.js +427 -0
  230. package/dist/core/promptRunner.js.map +1 -0
  231. package/dist/core/providers/anthropic.d.ts +10 -0
  232. package/dist/core/providers/anthropic.d.ts.map +1 -0
  233. package/dist/core/providers/anthropic.js +26 -0
  234. package/dist/core/providers/anthropic.js.map +1 -0
  235. package/dist/core/providers/base.d.ts +22 -0
  236. package/dist/core/providers/base.d.ts.map +1 -0
  237. package/dist/core/providers/base.js +2 -0
  238. package/dist/core/providers/base.js.map +1 -0
  239. package/dist/core/providers/factory.d.ts +7 -0
  240. package/dist/core/providers/factory.d.ts.map +1 -0
  241. package/dist/core/providers/factory.js +42 -0
  242. package/dist/core/providers/factory.js.map +1 -0
  243. package/dist/core/providers/google.d.ts +10 -0
  244. package/dist/core/providers/google.d.ts.map +1 -0
  245. package/dist/core/providers/google.js +47 -0
  246. package/dist/core/providers/google.js.map +1 -0
  247. package/dist/core/providers/openai.d.ts +19 -0
  248. package/dist/core/providers/openai.d.ts.map +1 -0
  249. package/dist/core/providers/openai.js +54 -0
  250. package/dist/core/providers/openai.js.map +1 -0
  251. package/dist/core/regressionRunner.d.ts +11 -0
  252. package/dist/core/regressionRunner.d.ts.map +1 -0
  253. package/dist/core/regressionRunner.js +116 -0
  254. package/dist/core/regressionRunner.js.map +1 -0
  255. package/dist/core/repositorySimulator.d.ts +17 -0
  256. package/dist/core/repositorySimulator.d.ts.map +1 -0
  257. package/dist/core/repositorySimulator.js +104 -0
  258. package/dist/core/repositorySimulator.js.map +1 -0
  259. package/dist/core/scorer.d.ts +30 -0
  260. package/dist/core/scorer.d.ts.map +1 -0
  261. package/dist/core/scorer.js +317 -0
  262. package/dist/core/scorer.js.map +1 -0
  263. package/dist/core/securityScanner.d.ts +23 -0
  264. package/dist/core/securityScanner.d.ts.map +1 -0
  265. package/dist/core/securityScanner.js +216 -0
  266. package/dist/core/securityScanner.js.map +1 -0
  267. package/dist/core/skillValidator.d.ts +41 -0
  268. package/dist/core/skillValidator.d.ts.map +1 -0
  269. package/dist/core/skillValidator.js +235 -0
  270. package/dist/core/skillValidator.js.map +1 -0
  271. package/dist/core/testHistory.d.ts +44 -0
  272. package/dist/core/testHistory.d.ts.map +1 -0
  273. package/dist/core/testHistory.js +91 -0
  274. package/dist/core/testHistory.js.map +1 -0
  275. package/dist/tokenizers/claudeTokenizer.d.ts +26 -0
  276. package/dist/tokenizers/claudeTokenizer.d.ts.map +1 -0
  277. package/dist/tokenizers/claudeTokenizer.js +83 -0
  278. package/dist/tokenizers/claudeTokenizer.js.map +1 -0
  279. package/dist/types/agent.d.ts +26 -0
  280. package/dist/types/agent.d.ts.map +1 -0
  281. package/dist/types/agent.js +5 -0
  282. package/dist/types/agent.js.map +1 -0
  283. package/dist/types/config.d.ts +30 -0
  284. package/dist/types/config.d.ts.map +1 -0
  285. package/dist/types/config.js +5 -0
  286. package/dist/types/config.js.map +1 -0
  287. package/dist/types/context.d.ts +77 -0
  288. package/dist/types/context.d.ts.map +1 -0
  289. package/dist/types/context.js +5 -0
  290. package/dist/types/context.js.map +1 -0
  291. package/dist/types/dataset.d.ts +26 -0
  292. package/dist/types/dataset.d.ts.map +1 -0
  293. package/dist/types/dataset.js +5 -0
  294. package/dist/types/dataset.js.map +1 -0
  295. package/dist/types/diagnostics.d.ts +31 -0
  296. package/dist/types/diagnostics.d.ts.map +1 -0
  297. package/dist/types/diagnostics.js +5 -0
  298. package/dist/types/diagnostics.js.map +1 -0
  299. package/dist/types/prompt.d.ts +53 -0
  300. package/dist/types/prompt.d.ts.map +1 -0
  301. package/dist/types/prompt.js +5 -0
  302. package/dist/types/prompt.js.map +1 -0
  303. package/dist/types/results.d.ts +42 -0
  304. package/dist/types/results.d.ts.map +1 -0
  305. package/dist/types/results.js +5 -0
  306. package/dist/types/results.js.map +1 -0
  307. package/dist/ui/dashboard.d.ts +57 -0
  308. package/dist/ui/dashboard.d.ts.map +1 -0
  309. package/dist/ui/dashboard.js +644 -0
  310. package/dist/ui/dashboard.js.map +1 -0
  311. package/dist/utils/__tests__/hashing.test.d.ts +2 -0
  312. package/dist/utils/__tests__/hashing.test.d.ts.map +1 -0
  313. package/dist/utils/__tests__/hashing.test.js +28 -0
  314. package/dist/utils/__tests__/hashing.test.js.map +1 -0
  315. package/dist/utils/__tests__/output.test.d.ts +2 -0
  316. package/dist/utils/__tests__/output.test.d.ts.map +1 -0
  317. package/dist/utils/__tests__/output.test.js +62 -0
  318. package/dist/utils/__tests__/output.test.js.map +1 -0
  319. package/dist/utils/cache.d.ts +29 -0
  320. package/dist/utils/cache.d.ts.map +1 -0
  321. package/dist/utils/cache.js +87 -0
  322. package/dist/utils/cache.js.map +1 -0
  323. package/dist/utils/config.d.ts +15 -0
  324. package/dist/utils/config.d.ts.map +1 -0
  325. package/dist/utils/config.js +61 -0
  326. package/dist/utils/config.js.map +1 -0
  327. package/dist/utils/errors.d.ts +43 -0
  328. package/dist/utils/errors.d.ts.map +1 -0
  329. package/dist/utils/errors.js +83 -0
  330. package/dist/utils/errors.js.map +1 -0
  331. package/dist/utils/fs.d.ts +44 -0
  332. package/dist/utils/fs.d.ts.map +1 -0
  333. package/dist/utils/fs.js +119 -0
  334. package/dist/utils/fs.js.map +1 -0
  335. package/dist/utils/hashing.d.ts +13 -0
  336. package/dist/utils/hashing.d.ts.map +1 -0
  337. package/dist/utils/hashing.js +18 -0
  338. package/dist/utils/hashing.js.map +1 -0
  339. package/dist/utils/logger.d.ts +32 -0
  340. package/dist/utils/logger.d.ts.map +1 -0
  341. package/dist/utils/logger.js +76 -0
  342. package/dist/utils/logger.js.map +1 -0
  343. package/dist/utils/output.d.ts +34 -0
  344. package/dist/utils/output.d.ts.map +1 -0
  345. package/dist/utils/output.js +99 -0
  346. package/dist/utils/output.js.map +1 -0
  347. package/dist/utils/paths.d.ts +33 -0
  348. package/dist/utils/paths.d.ts.map +1 -0
  349. package/dist/utils/paths.js +51 -0
  350. package/dist/utils/paths.js.map +1 -0
  351. package/dist/utils/spinner.d.ts +23 -0
  352. package/dist/utils/spinner.d.ts.map +1 -0
  353. package/dist/utils/spinner.js +79 -0
  354. package/dist/utils/spinner.js.map +1 -0
  355. package/package.json +60 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 claude-test contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,406 @@
1
+ # codeprobe
2
+
3
+ **DevTools for AI Coding — Context Engineering Toolkit for Claude, Cursor, Copilot, and more**
4
+
5
+ `codeprobe` is a developer toolkit for testing, analyzing, and optimizing AI coding workflows. It helps you write better prompts, understand your repository's context footprint, and build production-grade AI pipelines with any major LLM provider. Works with Claude Code, Cursor, GitHub Copilot, Windsurf, Aider, and other AI coding tools.
6
+
7
+ ---
8
+
9
+ ## Why Context Engineering Matters
10
+
11
+ Claude's effectiveness depends on what you put in the context window. Most developers waste context on irrelevant files, oversized prompts, or poorly structured instructions. `codeprobe` gives you the tools to measure, analyze, and optimize every token you send to Claude.
12
+
13
+ ## Install
14
+
15
+ ```bash
16
+ npm install -g codeprobe
17
+ ```
18
+
19
+ ## Quickstart
20
+
21
+ ```bash
22
+ # Instant dashboard — just run codeprobe
23
+ codeprobe
24
+
25
+ # Full project scan in one command
26
+ codeprobe scan
27
+
28
+ # Set up starter files and config
29
+ codeprobe init
30
+
31
+ # Run prompt tests
32
+ codeprobe test
33
+
34
+ # Analyze your repo's context footprint
35
+ codeprobe context
36
+
37
+ # Generate a CLAUDE.md from repo analysis
38
+ codeprobe generate-claudemd
39
+ ```
40
+
41
+ ## How It Works
42
+
43
+ ```bash
44
+ # Just type codeprobe — instant dashboard
45
+ codeprobe
46
+
47
+ # Full project scan in one command
48
+ codeprobe scan
49
+
50
+ # Quick summary
51
+ codeprobe summary
52
+
53
+ # CI/CD gate — one command, clear pass/fail
54
+ codeprobe check
55
+ ```
56
+
57
+ codeprobe is designed to be useful immediately. No setup required for context analysis — just run it in any project directory.
58
+
59
+ ## Core Commands
60
+
61
+ | Command | Description |
62
+ |---------|-------------|
63
+ | `init` | Create starter folders, example prompts, and config |
64
+ | `test [path]` | Run prompt tests with assertions |
65
+ | `diff <a> <b>` | Compare two prompt specs |
66
+ | `context [path]` | Analyze repository context usage and token counts |
67
+ | `simulate [path]` | Simulate whether a repo fits into Claude context windows |
68
+ | `pack [path]` | Build an optimized context packing plan |
69
+ | `benchmark [path]` | Benchmark prompts across Anthropic models |
70
+ | `agents [path]` | Scan for Claude-related workflow assets |
71
+ | `hooks [path]` | Detect hook configurations |
72
+ | `mcp [path]` | Detect MCP server configurations |
73
+ | `lint [path]` | Lint prompt specs for quality problems |
74
+ | `improve <file>` | Suggest prompt improvements |
75
+ | `map [path]` | Produce a repository context map |
76
+ | `heatmap [path]` | Show token-heavy files and hot spots |
77
+ | `explain <file>` | Explain prompt weaknesses and likely failures |
78
+ | `validate [path]` | Validate prompt specs and Claude assets |
79
+ | `security [path]` | Run prompt security and injection checks |
80
+ | `doctor` | Diagnose environment readiness |
81
+ | `repl` | Interactive prompt playground |
82
+ | `generate-claudemd` | Generate a CLAUDE.md from repo analysis |
83
+ | `workflow [path]` | Detect agentic workflow patterns (tasks, plans, lessons) |
84
+ | `check [path]` | CI-friendly gate — run all validations, exit 0 or 1 |
85
+ | `summary [path]` | Quick one-screen project overview |
86
+ | `install-hook` | Install a Claude Code hook for prompt testing |
87
+
88
+ ## Prompt Testing
89
+
90
+ Write prompt specs as YAML files:
91
+
92
+ ```yaml
93
+ name: summarize
94
+ description: Summarize text into 3 bullet points
95
+ model: claude-sonnet-4-6
96
+
97
+ system: |
98
+ You are a concise summarizer. Always respond with exactly 3 bullet points.
99
+
100
+ prompt: |
101
+ Summarize the following text in exactly 3 bullet points:
102
+ {{input}}
103
+
104
+ tests:
105
+ - name: basic
106
+ input: |
107
+ Claude Code is an agentic coding tool that lives in your terminal.
108
+ It understands your codebase, can edit files, and run commands.
109
+ expect:
110
+ contains:
111
+ - Claude Code
112
+ regex:
113
+ - "^- "
114
+
115
+ - name: from-file
116
+ inputFile: ./fixtures/article.txt
117
+ expect:
118
+ contains:
119
+ - context
120
+ ```
121
+
122
+ Run tests:
123
+
124
+ ```bash
125
+ codeprobe test prompts/
126
+
127
+ # With watch mode
128
+ codeprobe test --watch
129
+
130
+ # With caching
131
+ codeprobe test --cache
132
+
133
+ # JSON output for CI
134
+ codeprobe test --json
135
+ ```
136
+
137
+ ### Assertions
138
+
139
+ | Type | Description |
140
+ |------|-------------|
141
+ | `contains` | Output must include all specified strings |
142
+ | `notContains` | Output must not include any specified strings |
143
+ | `regex` | Output must match all patterns |
144
+ | `equals` | Output must exactly equal the string |
145
+ | `jsonSchema` | Output must validate against JSON Schema |
146
+
147
+ ### Dataset Testing
148
+
149
+ Test prompts against JSONL datasets:
150
+
151
+ ```bash
152
+ codeprobe test prompts/summarize.prompt.yaml --dataset datasets/sample.jsonl
153
+ ```
154
+
155
+ Dataset format (one JSON object per line):
156
+
157
+ ```json
158
+ {"input": "Text to summarize...", "expected": "key phrase"}
159
+ ```
160
+
161
+ ## Context Engineering
162
+
163
+ This is where `codeprobe` stands apart. These commands help you understand, measure, and optimize what goes into Claude's context window.
164
+
165
+ ### Analyze Context
166
+
167
+ ```bash
168
+ codeprobe context .
169
+ ```
170
+
171
+ Shows scanned files, total bytes, estimated tokens, extension breakdown, largest files, and fit estimates for 200k and 1M windows.
172
+
173
+ ### Simulate Context Fit
174
+
175
+ ```bash
176
+ codeprobe simulate .
177
+ ```
178
+
179
+ Estimates whether your repository fits into Claude's context window with reserved budget for system prompts and tools.
180
+
181
+ ### Pack Context
182
+
183
+ ```bash
184
+ codeprobe pack . --target 1m --optimize
185
+ ```
186
+
187
+ Builds an optimized context packing plan: which files to include first, which to summarize, which to exclude. Budget breakdown across system prompt, core files, docs, and tool metadata.
188
+
189
+ ### Context Map
190
+
191
+ ```bash
192
+ codeprobe map .
193
+ ```
194
+
195
+ Token distribution by directory — see where your context budget goes.
196
+
197
+ ### Token Heatmap
198
+
199
+ ```bash
200
+ codeprobe heatmap . --top 20
201
+ ```
202
+
203
+ Identifies the files consuming the most tokens in your repository.
204
+
205
+ ## Claude Asset Detection
206
+
207
+ Scan repositories for Claude-related workflow assets.
208
+
209
+ ```bash
210
+ # Find all Claude assets (CLAUDE.md, .claude/, skills, hooks, MCP configs)
211
+ codeprobe agents .
212
+
213
+ # Detect hook configurations
214
+ codeprobe hooks .
215
+
216
+ # Find MCP server definitions
217
+ codeprobe mcp .
218
+ ```
219
+
220
+ ## Prompt Quality
221
+
222
+ ```bash
223
+ # Lint prompts for common issues
224
+ codeprobe lint prompts/
225
+
226
+ # Get improvement suggestions
227
+ codeprobe improve prompts/summarize.prompt.yaml
228
+
229
+ # Explain potential weaknesses
230
+ codeprobe explain prompts/summarize.prompt.yaml
231
+
232
+ # Security checks for injection risks
233
+ codeprobe security prompts/
234
+
235
+ # Validate prompt spec structure
236
+ codeprobe validate .
237
+ ```
238
+
239
+ ## Configuration
240
+
241
+ Create `codeprobe.config.yaml` in your project root:
242
+
243
+ ```yaml
244
+ defaultModel: claude-sonnet-4-6
245
+ defaultContextTarget: 1m
246
+
247
+ ignorePaths:
248
+ - node_modules
249
+ - .git
250
+ - dist
251
+ - build
252
+ - coverage
253
+
254
+ caching: true
255
+
256
+ contextBudgets:
257
+ systemPrompt: 10
258
+ coreFiles: 50
259
+ docs: 20
260
+ toolMeta: 10
261
+
262
+ benchmarkDefaults:
263
+ models:
264
+ - claude-sonnet-4-6
265
+ - claude-opus-4-6
266
+ runs: 3
267
+ ```
268
+
269
+ ## CI Integration
270
+
271
+ The simplest CI setup is a single command:
272
+
273
+ ```yaml
274
+ - name: Install codeprobe
275
+ run: npm install -g codeprobe
276
+
277
+ - name: Run all checks
278
+ run: codeprobe check --json
279
+ ```
280
+
281
+ `codeprobe check` runs tests, lint, security, and validation in one shot. Exit code 0 means all clear, 1 means issues found.
282
+
283
+ For more granular control, run individual commands:
284
+
285
+ ```yaml
286
+ - name: Validate prompts
287
+ run: codeprobe validate --json
288
+
289
+ - name: Run prompt tests
290
+ run: codeprobe test --json
291
+
292
+ - name: Lint prompts
293
+ run: codeprobe lint --json
294
+ ```
295
+
296
+ `codeprobe` exits with non-zero codes on failures, making it CI-friendly.
297
+
298
+ ## Claude Code Integration
299
+
300
+ ### Context Engineering for Claude Code
301
+
302
+ codeprobe helps you optimize your project for Claude Code:
303
+
304
+ ```bash
305
+ # Analyze how much of your repo fits in Claude's context
306
+ codeprobe context .
307
+
308
+ # Get a packing plan -- what to include in CLAUDE.md
309
+ codeprobe pack . --target 200k
310
+
311
+ # Generate a CLAUDE.md from repo analysis
312
+ codeprobe generate-claudemd
313
+
314
+ # See which files consume the most tokens
315
+ codeprobe heatmap . --top 20
316
+ ```
317
+
318
+ ### Hooks
319
+
320
+ Run prompt tests automatically when working with Claude Code:
321
+
322
+ ```bash
323
+ # Install a hook for Claude Code
324
+ codeprobe install-hook
325
+
326
+ # Or configure manually in .claude/settings.json
327
+ ```
328
+
329
+ Example `.claude/settings.json`:
330
+
331
+ ```json
332
+ {
333
+ "hooks": {
334
+ "PreCommit": [
335
+ {
336
+ "command": "codeprobe test --json",
337
+ "description": "Run prompt regression tests"
338
+ }
339
+ ]
340
+ }
341
+ }
342
+ ```
343
+
344
+ ### Live Mode
345
+
346
+ Test prompts against the real Claude API:
347
+
348
+ ```bash
349
+ export ANTHROPIC_API_KEY=sk-ant-...
350
+ npm install @anthropic-ai/sdk
351
+ codeprobe test --mode live
352
+ codeprobe benchmark prompts/my-prompt.yaml
353
+ ```
354
+
355
+ See [Claude Code Integration Guide](docs/claude-code-integration.md) for the full setup guide.
356
+
357
+ ## AI Tool Detection
358
+
359
+ codeprobe detects configuration files for all major AI coding tools:
360
+
361
+ ```bash
362
+ codeprobe agents .
363
+ ```
364
+
365
+ Supported tools: Claude Code, Cursor, Windsurf, GitHub Copilot, Aider, Continue.dev, Cline, OpenAI Codex CLI.
366
+
367
+ ### Agentic Workflow Analysis
368
+
369
+ ```bash
370
+ codeprobe workflow .
371
+ ```
372
+
373
+ Detects task tracking (todo.md), self-improvement loops (lessons.md), plan files, and AI tool configurations.
374
+
375
+ ## Multi-Provider Support
376
+
377
+ codeprobe supports models from all major AI providers:
378
+
379
+ | Provider | Models | API Key |
380
+ |----------|--------|---------|
381
+ | Anthropic | Claude Opus 4.6, Sonnet 4.6, Haiku 4.5 | `ANTHROPIC_API_KEY` |
382
+ | OpenAI | GPT-4.1, GPT-4o, o3, o4-mini | `OPENAI_API_KEY` |
383
+ | Google | Gemini 2.5 Pro, Gemini 2.5 Flash | `GOOGLE_API_KEY` |
384
+ | DeepSeek | DeepSeek V3, DeepSeek R1 | `DEEPSEEK_API_KEY` |
385
+ | Qwen | Qwen 3 235B, Qwen 3 32B | `DASHSCOPE_API_KEY` |
386
+ | Mistral | Codestral, Mistral Large | `MISTRAL_API_KEY` |
387
+ | Meta | Llama 4 Maverick, Llama 4 Scout | Via OpenAI-compatible API |
388
+ | Local | Ollama, vLLM | No key needed |
389
+
390
+ Context engineering features (context, simulate, pack, map, heatmap) work offline without any API key.
391
+
392
+ ## Examples
393
+
394
+ See the `examples/` directory for:
395
+
396
+ - `basic-test.prompt.yaml` — Simple prompt testing
397
+ - `with-dataset.prompt.yaml` — Dataset-based evaluation
398
+ - `context-analysis.md` — Example context analysis output
399
+
400
+ ## Contributing
401
+
402
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
403
+
404
+ ## License
405
+
406
+ MIT
package/dist/cli.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * codeprobe — DevTools for AI Coding
4
+ * Context engineering toolkit for Claude, Cursor, Copilot, and more.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG"}
package/dist/cli.js ADDED
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * codeprobe — DevTools for AI Coding
4
+ * Context engineering toolkit for Claude, Cursor, Copilot, and more.
5
+ */
6
+ import { Command } from 'commander';
7
+ import { registerInitCommand } from './commands/init.js';
8
+ import { registerTestCommand } from './commands/test.js';
9
+ import { registerDiffCommand } from './commands/diff.js';
10
+ import { registerContextCommand } from './commands/context.js';
11
+ import { registerSimulateCommand } from './commands/simulate.js';
12
+ import { registerPackCommand } from './commands/pack.js';
13
+ import { registerBenchmarkCommand } from './commands/benchmark.js';
14
+ import { registerAgentsCommand } from './commands/agents.js';
15
+ import { registerHooksCommand } from './commands/hooks.js';
16
+ import { registerMcpCommand } from './commands/mcp.js';
17
+ import { registerLintCommand } from './commands/lint.js';
18
+ import { registerImproveCommand } from './commands/improve.js';
19
+ import { registerMapCommand } from './commands/map.js';
20
+ import { registerHeatmapCommand } from './commands/heatmap.js';
21
+ import { registerExplainCommand } from './commands/explain.js';
22
+ import { registerValidateCommand } from './commands/validate.js';
23
+ import { registerSecurityCommand } from './commands/security.js';
24
+ import { registerDoctorCommand } from './commands/doctor.js';
25
+ import { registerReplCommand } from './commands/repl.js';
26
+ import { registerGenerateClaudeMdCommand } from './commands/generateClaudeMd.js';
27
+ import { registerInstallHookCommand } from './commands/installHook.js';
28
+ import { registerWorkflowCommand } from './commands/workflow.js';
29
+ import { registerModelsCommand } from './commands/models.js';
30
+ import { registerUiCommand } from './commands/ui.js';
31
+ import { registerDashboardCommand } from './commands/dashboard.js';
32
+ import { registerCostCommand } from './commands/cost.js';
33
+ import { registerGenerateRulesCommand } from './commands/generateRules.js';
34
+ import { registerRegressionCommand } from './commands/regression.js';
35
+ import { registerHistoryCommand } from './commands/history.js';
36
+ import { registerAutotestCommand } from './commands/autotest.js';
37
+ import { registerRecommendCommand } from './commands/recommend.js';
38
+ import { registerAbCommand } from './commands/ab.js';
39
+ import { registerScoreCommand } from './commands/score.js';
40
+ import { registerFlakyCommand } from './commands/flaky.js';
41
+ import { registerScanCommand } from './commands/scan.js';
42
+ import { registerCheckCommand } from './commands/check.js';
43
+ import { registerSummaryCommand } from './commands/summary.js';
44
+ import { handleError } from './utils/errors.js';
45
+ const program = new Command();
46
+ program
47
+ .name('codeprobe')
48
+ .version('0.1.0')
49
+ .description('DevTools for AI Coding — context engineering toolkit for Claude, Cursor, Copilot, and more')
50
+ .addHelpText('after', `
51
+ Examples:
52
+ $ codeprobe Dashboard (default)
53
+ $ codeprobe scan Full project analysis
54
+ $ codeprobe test Run prompt tests
55
+ $ codeprobe context . Analyze token usage
56
+ $ codeprobe cost . Estimate API costs
57
+ $ codeprobe generate-rules Generate AI tool configs
58
+
59
+ Quick start:
60
+ $ codeprobe init && codeprobe scan
61
+ `);
62
+ registerInitCommand(program);
63
+ registerTestCommand(program);
64
+ registerDiffCommand(program);
65
+ registerContextCommand(program);
66
+ registerSimulateCommand(program);
67
+ registerPackCommand(program);
68
+ registerBenchmarkCommand(program);
69
+ registerAgentsCommand(program);
70
+ registerHooksCommand(program);
71
+ registerMcpCommand(program);
72
+ registerLintCommand(program);
73
+ registerImproveCommand(program);
74
+ registerMapCommand(program);
75
+ registerHeatmapCommand(program);
76
+ registerExplainCommand(program);
77
+ registerValidateCommand(program);
78
+ registerSecurityCommand(program);
79
+ registerDoctorCommand(program);
80
+ registerReplCommand(program);
81
+ registerGenerateClaudeMdCommand(program);
82
+ registerInstallHookCommand(program);
83
+ registerWorkflowCommand(program);
84
+ registerModelsCommand(program);
85
+ registerUiCommand(program);
86
+ registerDashboardCommand(program);
87
+ registerCostCommand(program);
88
+ registerGenerateRulesCommand(program);
89
+ registerRegressionCommand(program);
90
+ registerHistoryCommand(program);
91
+ registerAutotestCommand(program);
92
+ registerRecommendCommand(program);
93
+ registerAbCommand(program);
94
+ registerScoreCommand(program);
95
+ registerFlakyCommand(program);
96
+ registerScanCommand(program);
97
+ registerCheckCommand(program);
98
+ registerSummaryCommand(program);
99
+ // Smart default: if no command given, run dashboard on current directory
100
+ if (process.argv.length === 2) {
101
+ process.argv.push('dashboard', '.');
102
+ }
103
+ program.parseAsync(process.argv).catch(handleError);
104
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * `codeprobe ab <prompt-a> <prompt-b>` — A/B test two prompt specs against the
3
+ * same test inputs and compare results side by side.
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare function registerAbCommand(program: Command): void;
7
+ //# sourceMappingURL=ab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ab.d.ts","sourceRoot":"","sources":["../../src/commands/ab.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2JpC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkJxD"}