ashlr-plugin 1.36.4

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 (499) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/.claude-plugin/marketplace.json +39 -0
  3. package/.claude-plugin/plugin.json +36 -0
  4. package/.codex/agents/README.md +9 -0
  5. package/.codex/agents/ashlr-explorer.md +36 -0
  6. package/.codex/agents/ashlr-worker.md +38 -0
  7. package/.codex-plugin/plugin.json +45 -0
  8. package/.mcp.json +14 -0
  9. package/LICENSE +21 -0
  10. package/README.md +311 -0
  11. package/agents/ashlr-code.md +69 -0
  12. package/agents/ashlr-explore.md +44 -0
  13. package/agents/ashlr-plan.md +54 -0
  14. package/bench/fixtures/notebook-large.ipynb +660 -0
  15. package/bench/fixtures/notebook-small.ipynb +39 -0
  16. package/bench/fixtures/tasklist-closed.json +62 -0
  17. package/bench/fixtures/tasklist-large-mixed.json +27 -0
  18. package/bench/fixtures/tasklist-sprint-open.json +79 -0
  19. package/bench/fixtures/websearch-bun-runtime.json +32 -0
  20. package/bench/fixtures/websearch-react-hooks-patterns.json +32 -0
  21. package/bench/fixtures/websearch-typescript-generics.json +38 -0
  22. package/bench/refs/node-sdk/.refrev +1 -0
  23. package/bench/refs/node-sdk/README.md +17 -0
  24. package/bench/refs/node-sdk/src/agent/agent.ts +163 -0
  25. package/bench/refs/node-sdk/src/agent/create-agent-ui-stream.ts +83 -0
  26. package/bench/refs/node-sdk/src/agent/tool-loop-agent.ts +238 -0
  27. package/bench/refs/node-sdk/src/embed/embed-many.ts +409 -0
  28. package/bench/refs/node-sdk/src/embed/embed-result.ts +50 -0
  29. package/bench/refs/node-sdk/src/embed/embed.ts +257 -0
  30. package/bench/refs/node-sdk/src/error/invalid-argument-error.ts +34 -0
  31. package/bench/refs/node-sdk/src/error/invalid-tool-input-error.ts +33 -0
  32. package/bench/refs/node-sdk/src/error/no-object-generated-error.ts +70 -0
  33. package/bench/refs/node-sdk/src/generate-image/generate-image-result.ts +42 -0
  34. package/bench/refs/node-sdk/src/generate-image/generate-image.ts +362 -0
  35. package/bench/refs/node-sdk/src/generate-object/generate-object-result.ts +67 -0
  36. package/bench/refs/node-sdk/src/generate-object/generate-object.ts +501 -0
  37. package/bench/refs/node-sdk/src/generate-object/inject-json-instruction.ts +30 -0
  38. package/bench/refs/node-sdk/src/generate-object/output-strategy.ts +415 -0
  39. package/bench/refs/node-sdk/src/generate-object/repair-text.ts +12 -0
  40. package/bench/refs/node-sdk/src/generate-object/stream-object.ts +960 -0
  41. package/bench/refs/node-sdk/src/generate-speech/generate-speech.ts +191 -0
  42. package/bench/refs/node-sdk/src/generate-text/generate-text.ts +1484 -0
  43. package/bench/refs/node-sdk/src/generate-text/stream-text.ts +2708 -0
  44. package/bench/refs/node-sdk/src/generate-text/tool-call.ts +59 -0
  45. package/bench/refs/node-sdk/src/generate-text/tool-result.ts +36 -0
  46. package/bench/refs/node-sdk/src/telemetry/create-telemetry-dispatcher.ts +146 -0
  47. package/bench/refs/node-sdk/src/telemetry/telemetry-registry.ts +15 -0
  48. package/bench/refs/node-sdk/src/telemetry/telemetry.ts +223 -0
  49. package/bench/refs/node-sdk/src/util/async-iterable-stream.ts +94 -0
  50. package/bench/refs/node-sdk/src/util/consume-stream.ts +31 -0
  51. package/bench/refs/node-sdk/src/util/create-stitchable-stream.ts +112 -0
  52. package/bench/refs/node-sdk/src/util/download/download.ts +74 -0
  53. package/bench/refs/node-sdk/src/util/error-handler.ts +1 -0
  54. package/bench/refs/node-sdk/src/util/fix-json.ts +401 -0
  55. package/bench/refs/node-sdk/src/util/merge-objects.ts +79 -0
  56. package/bench/refs/python-lib/.refrev +1 -0
  57. package/bench/refs/python-lib/README.md +18 -0
  58. package/bench/refs/python-lib/pandas/core/_numba/executor.py +249 -0
  59. package/bench/refs/python-lib/pandas/core/_numba/extensions.py +586 -0
  60. package/bench/refs/python-lib/pandas/core/_numba/kernels/mean_.py +198 -0
  61. package/bench/refs/python-lib/pandas/core/_numba/kernels/min_max_.py +178 -0
  62. package/bench/refs/python-lib/pandas/core/_numba/kernels/sum_.py +255 -0
  63. package/bench/refs/python-lib/pandas/core/_numba/kernels/var_.py +251 -0
  64. package/bench/refs/python-lib/pandas/core/accessor.py +520 -0
  65. package/bench/refs/python-lib/pandas/core/api.py +138 -0
  66. package/bench/refs/python-lib/pandas/core/array_algos/masked_accumulations.py +97 -0
  67. package/bench/refs/python-lib/pandas/core/array_algos/masked_reductions.py +252 -0
  68. package/bench/refs/python-lib/pandas/core/array_algos/putmask.py +150 -0
  69. package/bench/refs/python-lib/pandas/core/array_algos/quantile.py +232 -0
  70. package/bench/refs/python-lib/pandas/core/array_algos/replace.py +159 -0
  71. package/bench/refs/python-lib/pandas/core/array_algos/take.py +609 -0
  72. package/bench/refs/python-lib/pandas/core/arraylike.py +534 -0
  73. package/bench/refs/python-lib/pandas/core/arrays/_arrow_string_mixins.py +434 -0
  74. package/bench/refs/python-lib/pandas/core/arrays/_mixins.py +630 -0
  75. package/bench/refs/python-lib/pandas/core/arrays/_ranges.py +276 -0
  76. package/bench/refs/python-lib/pandas/core/arrays/_utils.py +77 -0
  77. package/bench/refs/python-lib/pandas/core/arrays/arrow/accessors.py +521 -0
  78. package/bench/refs/python-lib/pandas/core/arrays/arrow/extension_types.py +174 -0
  79. package/bench/refs/python-lib/pandas/core/arrays/boolean.py +454 -0
  80. package/bench/refs/python-lib/pandas/core/arrays/floating.py +192 -0
  81. package/bench/refs/python-lib/pandas/core/arrays/integer.py +296 -0
  82. package/bench/refs/python-lib/pandas/core/arrays/masked.py +2140 -0
  83. package/bench/refs/python-lib/pandas/core/arrays/numeric.py +305 -0
  84. package/bench/refs/python-lib/pandas/core/arrays/numpy_.py +701 -0
  85. package/bench/refs/python-lib/pandas/core/arrays/period.py +1586 -0
  86. package/bench/refs/python-lib/pandas/core/arrays/sparse/accessor.py +505 -0
  87. package/bench/refs/python-lib/pandas/core/arrays/sparse/scipy_sparse.py +208 -0
  88. package/bench/refs/rust-project/.refrev +1 -0
  89. package/bench/refs/rust-project/README.md +17 -0
  90. package/bench/refs/rust-project/tokio/src/doc/os.rs +68 -0
  91. package/bench/refs/rust-project/tokio/src/fs/dir_builder.rs +129 -0
  92. package/bench/refs/rust-project/tokio/src/fs/file.rs +1113 -0
  93. package/bench/refs/rust-project/tokio/src/fs/mocks.rs +176 -0
  94. package/bench/refs/rust-project/tokio/src/fs/mod.rs +324 -0
  95. package/bench/refs/rust-project/tokio/src/fs/open_options.rs +856 -0
  96. package/bench/refs/rust-project/tokio/src/fs/read.rs +80 -0
  97. package/bench/refs/rust-project/tokio/src/fs/read_dir.rs +357 -0
  98. package/bench/refs/rust-project/tokio/src/fs/write.rs +99 -0
  99. package/bench/refs/rust-project/tokio/src/future/maybe_done.rs +123 -0
  100. package/bench/refs/rust-project/tokio/src/future/try_join.rs +82 -0
  101. package/bench/refs/rust-project/tokio/src/io/async_buf_read.rs +117 -0
  102. package/bench/refs/rust-project/tokio/src/io/async_read.rs +133 -0
  103. package/bench/refs/rust-project/tokio/src/io/async_seek.rs +96 -0
  104. package/bench/refs/rust-project/tokio/src/io/async_write.rs +402 -0
  105. package/bench/refs/rust-project/tokio/src/io/blocking.rs +339 -0
  106. package/bench/refs/rust-project/tokio/src/io/interest.rs +345 -0
  107. package/bench/refs/rust-project/tokio/src/io/join.rs +130 -0
  108. package/bench/refs/rust-project/tokio/src/io/mod.rs +308 -0
  109. package/bench/refs/rust-project/tokio/src/io/poll_evented.rs +319 -0
  110. package/bench/refs/rust-project/tokio/src/io/read_buf.rs +344 -0
  111. package/bench/refs/rust-project/tokio/src/io/ready.rs +322 -0
  112. package/bench/refs/rust-project/tokio/src/io/split.rs +166 -0
  113. package/bench/refs/rust-project/tokio/src/io/stderr.rs +148 -0
  114. package/bench/refs/rust-project/tokio/src/io/stdin.rs +98 -0
  115. package/bench/refs/rust-project/tokio/src/io/stdio_common.rs +222 -0
  116. package/bench/refs/rust-project/tokio/src/io/stdout.rs +197 -0
  117. package/bench/refs/rust-project/tokio/src/io/util/buf_reader.rs +311 -0
  118. package/bench/refs/rust-project/tokio/src/io/util/buf_stream.rs +207 -0
  119. package/bench/refs/rust-project/tokio/src/io/util/buf_writer.rs +310 -0
  120. package/bench/refs/rust-project/tokio/src/io/util/chain.rs +144 -0
  121. package/commands/_spawn-patterns.json +32 -0
  122. package/commands/ashlr-allow.md +21 -0
  123. package/commands/ashlr-benchmark.md +53 -0
  124. package/commands/ashlr-brief.md +97 -0
  125. package/commands/ashlr-budget.md +76 -0
  126. package/commands/ashlr-compact.md +54 -0
  127. package/commands/ashlr-dashboard.md +37 -0
  128. package/commands/ashlr-doctor.md +56 -0
  129. package/commands/ashlr-eco-mode.md +92 -0
  130. package/commands/ashlr-genome-init.md +24 -0
  131. package/commands/ashlr-genome-keygen.md +36 -0
  132. package/commands/ashlr-genome-loop.md +118 -0
  133. package/commands/ashlr-genome-push.md +36 -0
  134. package/commands/ashlr-genome-rewrap.md +48 -0
  135. package/commands/ashlr-genome-team-init.md +67 -0
  136. package/commands/ashlr-handoff.md +23 -0
  137. package/commands/ashlr-help.md +86 -0
  138. package/commands/ashlr-hook-timings.md +30 -0
  139. package/commands/ashlr-leaderboard.md +50 -0
  140. package/commands/ashlr-ollama-setup.md +39 -0
  141. package/commands/ashlr-orchestrate-status.md +72 -0
  142. package/commands/ashlr-orchestrate.md +83 -0
  143. package/commands/ashlr-parallelize.md +63 -0
  144. package/commands/ashlr-report-crash.md +33 -0
  145. package/commands/ashlr-resume.md +72 -0
  146. package/commands/ashlr-savings.md +24 -0
  147. package/commands/ashlr-settings.md +50 -0
  148. package/commands/ashlr-spawn.md +61 -0
  149. package/commands/ashlr-start.md +60 -0
  150. package/commands/ashlr-status.md +64 -0
  151. package/commands/ashlr-team-invite.md +47 -0
  152. package/commands/ashlr-tier.md +122 -0
  153. package/commands/ashlr-tour.md +60 -0
  154. package/commands/ashlr-update.md +155 -0
  155. package/commands/ashlr-upgrade.md +96 -0
  156. package/commands/goal.md +58 -0
  157. package/commands/loop.md +40 -0
  158. package/docs/CNAME +1 -0
  159. package/docs/PRO_TIER.md +104 -0
  160. package/docs/README.md +21 -0
  161. package/docs/architecture.md +415 -0
  162. package/docs/ashlr-pipe.md +161 -0
  163. package/docs/assets/logo.svg +19 -0
  164. package/docs/assets/og.png +0 -0
  165. package/docs/assets/og.svg +41 -0
  166. package/docs/benchmarks-v2.json +355 -0
  167. package/docs/benchmarks.json +102 -0
  168. package/docs/benchmarks.md +211 -0
  169. package/docs/billing.md +185 -0
  170. package/docs/cloud-genome.md +155 -0
  171. package/docs/competitive-wozcode.md +92 -0
  172. package/docs/deploy.md +325 -0
  173. package/docs/email-templates.md +113 -0
  174. package/docs/embed-tuning.md +103 -0
  175. package/docs/genome.md +120 -0
  176. package/docs/github-oauth-onboarding.md +127 -0
  177. package/docs/hero-video-script.md +129 -0
  178. package/docs/index.html +2262 -0
  179. package/docs/install-prompt.md +78 -0
  180. package/docs/install-windows.md +132 -0
  181. package/docs/install.ps1 +171 -0
  182. package/docs/install.sh +146 -0
  183. package/docs/launch/README.md +114 -0
  184. package/docs/launch/hn.md +49 -0
  185. package/docs/launch/reddit.md +45 -0
  186. package/docs/launch/x.md +65 -0
  187. package/docs/launch-post.md +112 -0
  188. package/docs/legal.md +78 -0
  189. package/docs/llm-providers.md +99 -0
  190. package/docs/multi-host-mcp.md +217 -0
  191. package/docs/multi-turn-architecture.md +108 -0
  192. package/docs/operations/deployment.md +108 -0
  193. package/docs/operations/error-monitoring.md +70 -0
  194. package/docs/operations/weekly-digest.md +70 -0
  195. package/docs/operations.md +494 -0
  196. package/docs/platform-support.md +133 -0
  197. package/docs/policy-packs.md +188 -0
  198. package/docs/press-kit/fact-sheet.md +78 -0
  199. package/docs/press-kit/founder-bio.md +3 -0
  200. package/docs/press-kit/logo.svg +33 -0
  201. package/docs/press-kit/screenshots.md +146 -0
  202. package/docs/pricing.md +251 -0
  203. package/docs/pro-backend-architecture.md +523 -0
  204. package/docs/producthunt.md +52 -0
  205. package/docs/router-migration.md +110 -0
  206. package/docs/session-log-schema.md +68 -0
  207. package/docs/social.md +95 -0
  208. package/docs/team-genome.md +528 -0
  209. package/docs/telemetry.md +194 -0
  210. package/docs/test-isolation.md +100 -0
  211. package/docs/upgrade.md +159 -0
  212. package/hooks/_hook-errors.ts +87 -0
  213. package/hooks/_hook-perf-emit.ts +113 -0
  214. package/hooks/_hook-timing-ledger.ts +1133 -0
  215. package/hooks/_nudge-throttle.ts +127 -0
  216. package/hooks/_recent-blocks.ts +127 -0
  217. package/hooks/audit-upload.ts +86 -0
  218. package/hooks/codex-hooks.json +171 -0
  219. package/hooks/commit-attribution.ts +179 -0
  220. package/hooks/edit-batching-nudge.ts +154 -0
  221. package/hooks/genome-scribe-hook.ts +219 -0
  222. package/hooks/hooks.json +294 -0
  223. package/hooks/orient-nudge-hook.ts +242 -0
  224. package/hooks/policy-enforce.ts +214 -0
  225. package/hooks/post-tool-use-embedding.ts +93 -0
  226. package/hooks/post-tool-use-genome.sh +37 -0
  227. package/hooks/post-tool-use-genome.ts +69 -0
  228. package/hooks/posttooluse-correlate.ts +122 -0
  229. package/hooks/posttooluse-dedupe-output.ts +241 -0
  230. package/hooks/posttooluse-genome-refresh.ts +223 -0
  231. package/hooks/posttooluse-native-nudge.ts +205 -0
  232. package/hooks/posttooluse-stale-result.ts +277 -0
  233. package/hooks/pretooluse-bash.ts +63 -0
  234. package/hooks/pretooluse-budget-guard.ts +318 -0
  235. package/hooks/pretooluse-common.ts +985 -0
  236. package/hooks/pretooluse-eco-router.ts +196 -0
  237. package/hooks/pretooluse-edit.sh +93 -0
  238. package/hooks/pretooluse-edit.ts +197 -0
  239. package/hooks/pretooluse-glob.ts +70 -0
  240. package/hooks/pretooluse-grep.sh +85 -0
  241. package/hooks/pretooluse-grep.ts +96 -0
  242. package/hooks/pretooluse-notebookedit.ts +121 -0
  243. package/hooks/pretooluse-read.sh +118 -0
  244. package/hooks/pretooluse-read.ts +118 -0
  245. package/hooks/pretooluse-task.ts +130 -0
  246. package/hooks/pretooluse-webfetch.ts +66 -0
  247. package/hooks/pretooluse-websearch.ts +85 -0
  248. package/hooks/pretooluse-write.ts +128 -0
  249. package/hooks/pulse-emit.ts +197 -0
  250. package/hooks/session-end-consolidate.sh +35 -0
  251. package/hooks/session-end-consolidate.ts +188 -0
  252. package/hooks/session-end-stats-gc.ts +80 -0
  253. package/hooks/session-log-append.sh +94 -0
  254. package/hooks/session-log-append.ts +116 -0
  255. package/hooks/session-start.ts +993 -0
  256. package/hooks/sessionend-hook-health-nudge.ts +451 -0
  257. package/hooks/sessionend-savings-nudge.ts +318 -0
  258. package/hooks/sessionend-status-line-nudge.ts +296 -0
  259. package/hooks/sessionstart-brief.ts +140 -0
  260. package/hooks/sessionstart-cost-refactor.ts +95 -0
  261. package/hooks/sessionstart-efficient.ts +110 -0
  262. package/hooks/sessionstart-genome-author.ts +93 -0
  263. package/hooks/sessionstart-lean-tools.ts +98 -0
  264. package/hooks/sessionstart-search.ts +97 -0
  265. package/hooks/stop-accounting.ts +152 -0
  266. package/hooks/subagent-stop-rollup.ts +162 -0
  267. package/hooks/userpromptsubmit-brief-trigger.ts +156 -0
  268. package/package.json +56 -0
  269. package/ports/README.md +108 -0
  270. package/ports/cursor/mcp.json +11 -0
  271. package/ports/goose/recipe.yaml +26 -0
  272. package/scripts/ashlr-mcp.ts +40 -0
  273. package/scripts/auto-update.ts +177 -0
  274. package/scripts/baseline-scan.ts +831 -0
  275. package/scripts/bench-orchestrate.ts +377 -0
  276. package/scripts/benchmark-refs.ts +292 -0
  277. package/scripts/bootstrap.mjs +100 -0
  278. package/scripts/brief-eval.ts +234 -0
  279. package/scripts/bump-version.ts +82 -0
  280. package/scripts/bun-resolve.d.mts +11 -0
  281. package/scripts/bun-resolve.mjs +59 -0
  282. package/scripts/calibrate-grep.ts +467 -0
  283. package/scripts/capture-grep-workload.ts +260 -0
  284. package/scripts/check-tier.ts +61 -0
  285. package/scripts/check-version-sync.ts +97 -0
  286. package/scripts/cli-orchestrate-status.ts +386 -0
  287. package/scripts/cli-orchestrate.ts +303 -0
  288. package/scripts/cli.ts +478 -0
  289. package/scripts/cloud-smoke-test.ts +313 -0
  290. package/scripts/coach-report.ts +373 -0
  291. package/scripts/context-db-migrate.ts +137 -0
  292. package/scripts/context-status.ts +43 -0
  293. package/scripts/demo-run.ts +255 -0
  294. package/scripts/deploy-smoke.sh +140 -0
  295. package/scripts/doctor.ts +992 -0
  296. package/scripts/embed-file-worker.ts +104 -0
  297. package/scripts/embed-tune.ts +308 -0
  298. package/scripts/errors-report.ts +428 -0
  299. package/scripts/find-test-leak.ts +69 -0
  300. package/scripts/generate-badge.ts +357 -0
  301. package/scripts/genome-auto-consolidate.ts +533 -0
  302. package/scripts/genome-auto-propose.ts +578 -0
  303. package/scripts/genome-cloud-pull.ts +363 -0
  304. package/scripts/genome-cloud-push.ts +382 -0
  305. package/scripts/genome-cloud-sync.ts +587 -0
  306. package/scripts/genome-commit-watcher.ts +295 -0
  307. package/scripts/genome-init.ts +986 -0
  308. package/scripts/genome-key.ts +233 -0
  309. package/scripts/genome-keygen.ts +168 -0
  310. package/scripts/genome-link.ts +59 -0
  311. package/scripts/genome-refresh-worker.ts +364 -0
  312. package/scripts/genome-rewrap.ts +90 -0
  313. package/scripts/genome-synthesizer.ts +679 -0
  314. package/scripts/genome-team-init.ts +312 -0
  315. package/scripts/handoff-pack.ts +438 -0
  316. package/scripts/hook-bootstrap.mjs +75 -0
  317. package/scripts/hook-timing-reader.ts +371 -0
  318. package/scripts/hook-timings-report.ts +554 -0
  319. package/scripts/install-genome-hooks.ts +196 -0
  320. package/scripts/install-onnx-model.ts +154 -0
  321. package/scripts/install-permissions.ts +276 -0
  322. package/scripts/install-status-line.ts +150 -0
  323. package/scripts/mcp-entrypoint.sh +78 -0
  324. package/scripts/mcp-entrypoint.ts +130 -0
  325. package/scripts/mdx-angle-bracket-lint.ts +152 -0
  326. package/scripts/measure-cold-start.ts +126 -0
  327. package/scripts/migrate-stats-to-sqlite.ts +86 -0
  328. package/scripts/ollama-setup.ts +498 -0
  329. package/scripts/onboarding-wizard.ts +1691 -0
  330. package/scripts/orchestrate-emit-telemetry.ts +177 -0
  331. package/scripts/orchestrate-expand.ts +517 -0
  332. package/scripts/orchestrate-run.ts +744 -0
  333. package/scripts/print-legend.ts +50 -0
  334. package/scripts/product-metadata.ts +38 -0
  335. package/scripts/prune-old-memories.ts +208 -0
  336. package/scripts/publish.sh +88 -0
  337. package/scripts/read-calibration.ts +122 -0
  338. package/scripts/report-crash.ts +226 -0
  339. package/scripts/run-benchmark.ts +750 -0
  340. package/scripts/run-root-tests.ts +28 -0
  341. package/scripts/savings-dashboard.ts +1258 -0
  342. package/scripts/savings-report-extras.ts +447 -0
  343. package/scripts/savings-status-line.ts +873 -0
  344. package/scripts/session-event-emit.ts +266 -0
  345. package/scripts/session-greet.ts +686 -0
  346. package/scripts/session-log-report.ts +551 -0
  347. package/scripts/session-resume.ts +614 -0
  348. package/scripts/set-hook-mode.ts +83 -0
  349. package/scripts/smoke-cross-platform.ts +117 -0
  350. package/scripts/smoke-realtime.ts +257 -0
  351. package/scripts/smoke-tools.ts +21 -0
  352. package/scripts/stats-cloud-pull.ts +213 -0
  353. package/scripts/stats-cloud-sync.ts +261 -0
  354. package/scripts/telemetry-flush.ts +160 -0
  355. package/scripts/telemetry-status.ts +266 -0
  356. package/scripts/timing-budget.ts +35 -0
  357. package/scripts/ui-animation.ts +120 -0
  358. package/scripts/ui.ts +431 -0
  359. package/scripts/upgrade-flow.ts +775 -0
  360. package/scripts/weekly-digest.ts +394 -0
  361. package/servers/_accounting.ts +78 -0
  362. package/servers/_ask-router.ts +84 -0
  363. package/servers/_ast-chunker.ts +434 -0
  364. package/servers/_ast-helpers.ts +183 -0
  365. package/servers/_ast-languages.ts +153 -0
  366. package/servers/_ast-refactor/_shared.ts +221 -0
  367. package/servers/_ast-refactor/cross-file-rename.ts +560 -0
  368. package/servers/_ast-refactor/extract-function.ts +357 -0
  369. package/servers/_ast-refactor/file-local-rename.ts +172 -0
  370. package/servers/_ast-refactor.ts +41 -0
  371. package/servers/_ast-skeleton.ts +107 -0
  372. package/servers/_bash-summarizers-registry.ts +1096 -0
  373. package/servers/_crash-dump.ts +210 -0
  374. package/servers/_cwd-clamp.ts +342 -0
  375. package/servers/_edit-log.ts +28 -0
  376. package/servers/_edit-match.ts +236 -0
  377. package/servers/_edit-validate.ts +196 -0
  378. package/servers/_embed-calibration.ts +123 -0
  379. package/servers/_embedding-cache.ts +401 -0
  380. package/servers/_embedding-model.ts +329 -0
  381. package/servers/_events.ts +113 -0
  382. package/servers/_genome-cache.ts +154 -0
  383. package/servers/_genome-commits.ts +172 -0
  384. package/servers/_genome-crypto-v2.ts +242 -0
  385. package/servers/_genome-crypto.ts +259 -0
  386. package/servers/_genome-discoveries.ts +140 -0
  387. package/servers/_genome-embed-populator.ts +216 -0
  388. package/servers/_genome-freshness.ts +134 -0
  389. package/servers/_genome-issues.ts +171 -0
  390. package/servers/_genome-live.ts +263 -0
  391. package/servers/_genome-prs.ts +188 -0
  392. package/servers/_genome-search.ts +479 -0
  393. package/servers/_genome-sync.ts +297 -0
  394. package/servers/_history-tracker.ts +279 -0
  395. package/servers/_http-helpers.ts +151 -0
  396. package/servers/_identity-hash.ts +151 -0
  397. package/servers/_llm-providers/anthropic.ts +132 -0
  398. package/servers/_llm-providers/cloud.ts +195 -0
  399. package/servers/_llm-providers/index.ts +350 -0
  400. package/servers/_llm-providers/local.ts +127 -0
  401. package/servers/_llm-providers/onnx.ts +393 -0
  402. package/servers/_llm-providers/types.ts +27 -0
  403. package/servers/_manifest-v2.ts +447 -0
  404. package/servers/_mcp-host.ts +93 -0
  405. package/servers/_nudge-events.ts +451 -0
  406. package/servers/_orchestrate-executor.ts +316 -0
  407. package/servers/_prefetch.ts +435 -0
  408. package/servers/_pricing.ts +256 -0
  409. package/servers/_pro.ts +381 -0
  410. package/servers/_read-cache.ts +44 -0
  411. package/servers/_router-handlers.ts +46 -0
  412. package/servers/_router.ts +55 -0
  413. package/servers/_run-with-timeout.ts +173 -0
  414. package/servers/_savings-render.ts +214 -0
  415. package/servers/_stats-sqlite.ts +640 -0
  416. package/servers/_stats.ts +1183 -0
  417. package/servers/_status-line-cells.ts +469 -0
  418. package/servers/_streaks.ts +162 -0
  419. package/servers/_summarize.ts +208 -0
  420. package/servers/_task-graph-render.ts +217 -0
  421. package/servers/_task-graph.ts +545 -0
  422. package/servers/_telemetry.ts +719 -0
  423. package/servers/_test-parsers.ts +530 -0
  424. package/servers/_test-watch.ts +626 -0
  425. package/servers/_text-helpers.ts +37 -0
  426. package/servers/_token-measure.ts +160 -0
  427. package/servers/_tool-base.ts +248 -0
  428. package/servers/_weekly-digest.ts +391 -0
  429. package/servers/ask-server-handlers.ts +49 -0
  430. package/servers/ask-server.ts +174 -0
  431. package/servers/bash-server-handlers.ts +138 -0
  432. package/servers/bash-server.ts +1136 -0
  433. package/servers/bench.ts +186 -0
  434. package/servers/diff-semantic-server-handlers.ts +39 -0
  435. package/servers/diff-semantic-server.ts +566 -0
  436. package/servers/diff-server-handlers.ts +317 -0
  437. package/servers/diff-server.ts +20 -0
  438. package/servers/edit-server-handlers.ts +31 -0
  439. package/servers/edit-server.ts +209 -0
  440. package/servers/edit-structural-server-handlers.ts +322 -0
  441. package/servers/efficiency-server-handlers.ts +161 -0
  442. package/servers/efficiency-server.ts +1135 -0
  443. package/servers/flush-server-handlers.ts +21 -0
  444. package/servers/flush-server.ts +19 -0
  445. package/servers/genome-server-handlers.ts +118 -0
  446. package/servers/genome-server.ts +397 -0
  447. package/servers/github-server-handlers.ts +187 -0
  448. package/servers/github-server.ts +856 -0
  449. package/servers/glob-server-handlers.ts +233 -0
  450. package/servers/glob-server.ts +20 -0
  451. package/servers/grep-server-handlers.ts +61 -0
  452. package/servers/grep-server.ts +564 -0
  453. package/servers/http-server-handlers.ts +36 -0
  454. package/servers/http-server.ts +149 -0
  455. package/servers/logs-server-handlers.ts +42 -0
  456. package/servers/logs-server.ts +359 -0
  457. package/servers/ls-server-handlers.ts +166 -0
  458. package/servers/ls-server.ts +20 -0
  459. package/servers/multi-edit-server-handlers.ts +51 -0
  460. package/servers/multi-edit-server.ts +422 -0
  461. package/servers/notebook-edit-server-handlers.ts +34 -0
  462. package/servers/notebook-edit-server.ts +181 -0
  463. package/servers/orient-server-handlers.ts +52 -0
  464. package/servers/orient-server.ts +436 -0
  465. package/servers/pipe-server-handlers.ts +68 -0
  466. package/servers/pipe-server.ts +300 -0
  467. package/servers/read-server-handlers.ts +42 -0
  468. package/servers/read-server.ts +206 -0
  469. package/servers/rename-file-server-handlers.ts +67 -0
  470. package/servers/rename-file-server.ts +699 -0
  471. package/servers/savings-server-handlers.ts +27 -0
  472. package/servers/savings-server.ts +54 -0
  473. package/servers/search-replace-regex-server-handlers.ts +96 -0
  474. package/servers/search-replace-regex-server.ts +751 -0
  475. package/servers/sql-server-handlers.ts +58 -0
  476. package/servers/sql-server.ts +505 -0
  477. package/servers/task-server-handlers.ts +358 -0
  478. package/servers/task-server.ts +24 -0
  479. package/servers/test-server-handlers.ts +351 -0
  480. package/servers/test-server.ts +20 -0
  481. package/servers/tree-server-handlers.ts +503 -0
  482. package/servers/tree-server.ts +20 -0
  483. package/servers/webfetch-server-handlers.ts +166 -0
  484. package/servers/webfetch-server.ts +20 -0
  485. package/servers/websearch-server-handlers.ts +215 -0
  486. package/servers/websearch-server.ts +19 -0
  487. package/servers/write-server-handlers.ts +27 -0
  488. package/servers/write-server.ts +97 -0
  489. package/skills/ashlr-brief/SKILL.md +80 -0
  490. package/skills/ashlr-codex-doctor/SKILL.md +21 -0
  491. package/skills/ashlr-codex-efficient-tools/SKILL.md +17 -0
  492. package/skills/ashlr-codex-genome-refresh/SKILL.md +20 -0
  493. package/skills/ashlr-codex-parallel-explore/SKILL.md +20 -0
  494. package/skills/ashlr-codex-savings/SKILL.md +17 -0
  495. package/skills/ashlr-cost-refactor/SKILL.md +50 -0
  496. package/skills/ashlr-efficient/SKILL.md +64 -0
  497. package/skills/ashlr-genome-author/SKILL.md +43 -0
  498. package/skills/ashlr-lean-tools/SKILL.md +43 -0
  499. package/skills/ashlr-search/SKILL.md +46 -0
@@ -0,0 +1,78 @@
1
+ # Ask Claude Code to install ashlr for you
2
+
3
+ Copy everything in the fenced block below and paste it into a Claude Code
4
+ session. Claude Code will drive the whole install end-to-end, reload or restart
5
+ included, and report the final `/ashlr-doctor` result back to you.
6
+
7
+ ---
8
+
9
+ ````
10
+ Install the ashlr-plugin for me. Follow these steps in order. Do not skip or
11
+ reorder. Report exactly what happened after each step.
12
+
13
+ 1. Run in a Bash shell:
14
+ curl -fsSL https://plugin.ashlr.ai/install.sh | bash
15
+ If it exits non-zero, stop and show me the full stderr. Don't try to
16
+ work around failures — I want to see them.
17
+
18
+ 2. Run these Claude Code slash commands:
19
+ /plugin marketplace add ashlrai/ashlr-plugin
20
+ /plugin install ashlr@ashlr-marketplace
21
+ If either command errors, show the exact error verbatim and stop.
22
+
23
+ 3. Then run:
24
+ /reload-plugins
25
+ This forces Claude Code to pick up the newly installed plugin. If
26
+ /reload-plugins is unavailable or fails, tell me:
27
+ "Fully quit and restart Claude Code now, then tell me when you're back."
28
+ Then stop and wait for me before continuing.
29
+
30
+ 4. Then run:
31
+ /ashlr-doctor
32
+ Capture and report the full output. Summarize:
33
+ - total checks
34
+ - passes
35
+ - failures (if any, list each with its message)
36
+
37
+ 5. If /ashlr-doctor reports 0 failures, ask me:
38
+ "Doctor is clean. Want me to initialize a genome for this project
39
+ (/ashlr-genome-init) and then run the /ashlr-tour?"
40
+ Only run those two if I say yes. If I say no, stop here.
41
+
42
+ Source: https://github.com/ashlrai/ashlr-plugin
43
+ Landing: https://plugin.ashlr.ai/
44
+ License: MIT · No account · Telemetry off by default; explicit opt-in only
45
+ ````
46
+
47
+ ---
48
+
49
+ That's it. Claude Code runs the shell command, installs from the marketplace,
50
+ reloads plugins or asks you for a full restart, self-diagnoses, and optionally
51
+ bootstraps a genome + tour. If anything fails along the way, you'll see the
52
+ exact error and can decide what to do next.
53
+
54
+ ## If you'd rather do it manually
55
+
56
+ ```bash
57
+ # 1. terminal
58
+ curl -fsSL https://plugin.ashlr.ai/install.sh | bash
59
+ ```
60
+
61
+ Then inside Claude Code:
62
+
63
+ ```
64
+ /plugin marketplace add ashlrai/ashlr-plugin
65
+ /plugin install ashlr@ashlr-marketplace
66
+ /reload-plugins
67
+ /ashlr-doctor
68
+ ```
69
+
70
+ If `/reload-plugins` is unavailable or `/ashlr-doctor` does not see the plugin,
71
+ fully quit and restart Claude Code, then run `/ashlr-doctor` again.
72
+
73
+ If doctor is clean:
74
+
75
+ ```
76
+ /ashlr-genome-init
77
+ /ashlr-tour
78
+ ```
@@ -0,0 +1,132 @@
1
+ # Installing ashlr-plugin on Windows
2
+
3
+ ashlr-plugin runs on Windows via [Bun for Windows](https://bun.sh/docs/installation#windows).
4
+ All hooks are TypeScript files invoked with `bun run` — no bash or POSIX shell required.
5
+
6
+ ## Prerequisites
7
+
8
+ 1. **Bun for Windows** (1.x or later) — auto-installed by the marketplace flow the first time the MCP server starts. You don't need to install it up-front.
9
+
10
+ Manual install (only if you set `ASHLR_NO_AUTO_INSTALL=1` or want to pre-install):
11
+
12
+ ```powershell
13
+ powershell -c "irm bun.sh/install.ps1 | iex"
14
+ ```
15
+
16
+ 2. **Claude Code** — install the standard way from [claude.ai/claude-code](https://claude.ai/claude-code).
17
+
18
+ 3. **Git for Windows** — required for clone and git-related tools (`ashlr__diff`, commit attribution).
19
+ Download from [git-scm.com](https://git-scm.com/download/win).
20
+
21
+ 4. **ripgrep** (optional, improves `ashlr__grep` performance)
22
+
23
+ ```powershell
24
+ winget install BurntSushi.ripgrep.MSVC
25
+ ```
26
+
27
+ ### How bun auto-install works
28
+
29
+ `plugin.json` spawns `node scripts/bootstrap.mjs`. The bootstrap checks for `bun`
30
+ on PATH; if missing it runs `irm bun.sh/install.ps1 | iex` (Windows) or
31
+ `curl -fsSL https://bun.sh/install | bash` (macOS/Linux), prepends the default
32
+ bun install dir to the current process's PATH, and then execs `bun run` to
33
+ start the real MCP entrypoint.
34
+
35
+ Set `ASHLR_NO_AUTO_INSTALL=1` in your environment to disable this behaviour —
36
+ the bootstrap will exit with a manual-install message instead.
37
+
38
+ ## Install
39
+
40
+ Run the installer — it handles cloning, dependency install, and stale-cache cleanup:
41
+
42
+ ```powershell
43
+ irm https://raw.githubusercontent.com/ashlrai/ashlr-plugin/main/docs/install.ps1 | iex
44
+ ```
45
+
46
+ If Bun is not installed, the script will ask:
47
+
48
+ ```
49
+ [ashlr] Bun is required but not found.
50
+ [ashlr] Install Bun now? (Y/n)
51
+ ```
52
+
53
+ Press Enter (or Y) to let the installer fetch and configure Bun automatically. If you
54
+ decline, install Bun manually first and re-run.
55
+
56
+ The installer clones to:
57
+
58
+ ```
59
+ %USERPROFILE%\.claude\plugins\cache\ashlr-marketplace\ashlr\<version>\
60
+ ```
61
+
62
+ This matches the path Claude Code's marketplace flow expects, so `/plugin install` is
63
+ instant and re-runs update the active copy rather than creating orphan directories.
64
+
65
+ After the script completes, run these two commands inside Claude Code:
66
+
67
+ ```
68
+ /plugin marketplace add ashlrai/ashlr-plugin
69
+ /plugin install ashlr@ashlr-marketplace
70
+ /reload-plugins
71
+ ```
72
+
73
+ Then run `/ashlr-status`. If `/reload-plugins` is unavailable or the status
74
+ check does not see ashlr, fully quit and restart Claude Code.
75
+
76
+ ## Migration note
77
+
78
+ If you previously installed with an older version of this script, you may have an orphan
79
+ copy at `%USERPROFILE%\.claude\plugins\ashlr-plugin\`. It is safe to delete that directory
80
+ manually — it is not referenced by Claude Code's marketplace flow.
81
+
82
+ ## Bun auto-install
83
+
84
+ Both `install.ps1` (Windows) and `install.sh` (macOS/Linux) offer an interactive Bun
85
+ install prompt when Bun is missing. On Windows:
86
+
87
+ - The script runs `irm bun.sh/install.ps1 | iex` via an inner `powershell` call.
88
+ - After install it refreshes `PATH` in the current session and re-checks.
89
+ - If Bun still isn't on PATH (rare, requires a new shell), exit 1 with instructions.
90
+
91
+ On macOS/Linux, `install.sh` only offers the prompt when stdin is a terminal (TTY). In
92
+ non-interactive/piped mode it falls through to the original error message.
93
+
94
+ ## Shell behavior
95
+
96
+ On Windows, `ashlr__bash` uses **PowerShell** (`pwsh` if available, otherwise `powershell`)
97
+ instead of `/bin/sh`. This means:
98
+
99
+ - Commands like `ls`, `cat`, `rm` use their PowerShell aliases, not POSIX tools.
100
+ - If you need POSIX shell behavior, install [Git for Windows](https://git-scm.com) and
101
+ set `SHELL=C:\Program Files\Git\bin\bash.exe` in your environment.
102
+
103
+ ## Key file permissions (genome encryption)
104
+
105
+ On POSIX systems, `~/.ashlr/team-keys/*.key` files are protected with `chmod 0600`.
106
+ On Windows, NTFS does not support POSIX ACLs. ashlr-plugin logs a one-time warning
107
+ and continues — the file is written but not restricted at the OS level.
108
+
109
+ Recommended mitigations (choose one):
110
+
111
+ - **BitLocker**: Encrypt the entire volume containing your user profile.
112
+ - **Windows EFS**: Right-click `%USERPROFILE%\.ashlr\team-keys\` in Explorer,
113
+ Properties > Advanced > Encrypt contents.
114
+ - **Dedicated protected directory**: Move key storage to a BitLocker-protected
115
+ secondary drive or VeraCrypt container.
116
+
117
+ ## Troubleshooting
118
+
119
+ | Symptom | Fix |
120
+ |---------|-----|
121
+ | `irm ... \| iex` blocked by execution policy | Run `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser` first, then re-run |
122
+ | `bun: command not found` after auto-install | Open a new terminal — PATH updates require a new session |
123
+ | `git: command not found` | Install [Git for Windows](https://git-scm.com/download/win) and ensure it's on PATH |
124
+ | `rg: command not found` | Install via `winget install BurntSushi.ripgrep.MSVC` or skip (`ashlr__grep` falls back gracefully) |
125
+ | Hook errors mentioning `bash` | Ensure hooks.json points at `.ts` files (not `.sh`). Run `bun run scripts/doctor.ts` |
126
+ | Key file warning on every session | Expected on Windows — see "Key file permissions" above |
127
+
128
+ ## WSL (optional)
129
+
130
+ If you prefer a full Linux environment, install ashlr-plugin inside
131
+ [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install) using `install.sh`.
132
+ The TypeScript hooks work in WSL without any changes.
@@ -0,0 +1,171 @@
1
+ # install.ps1 — ashlr-plugin Windows installer
2
+ #
3
+ # Usage:
4
+ # irm https://raw.githubusercontent.com/ashlrai/ashlr-plugin/main/docs/install.ps1 | iex
5
+ #
6
+ # Or locally:
7
+ # .\docs\install.ps1
8
+ #
9
+ # Requirements: Bun for Windows, Git for Windows
10
+ # Supports: Windows PowerShell 5.1+, PowerShell 7+
11
+
12
+ Set-StrictMode -Version Latest
13
+ $ErrorActionPreference = "Stop"
14
+
15
+ $PluginRepo = "https://github.com/ashlrai/ashlr-plugin"
16
+
17
+ # Target path mirrors the macOS/Linux marketplace cache structure:
18
+ # ~/.claude/plugins/cache/ashlr-marketplace/ashlr/<version>/
19
+ # Version is resolved from package.json after clone; we use a temp dir first,
20
+ # then move into the versioned slot.
21
+ $CacheBase = Join-Path $env:USERPROFILE ".claude\plugins\cache\ashlr-marketplace\ashlr"
22
+
23
+ function Write-Step([string]$msg) {
24
+ Write-Host "[ashlr] $msg" -ForegroundColor Cyan
25
+ }
26
+
27
+ function Write-Ok([string]$msg) {
28
+ Write-Host "[ashlr] $msg" -ForegroundColor Green
29
+ }
30
+
31
+ function Write-Warn([string]$msg) {
32
+ Write-Host "[ashlr] WARNING: $msg" -ForegroundColor Yellow
33
+ }
34
+
35
+ function Write-Fail([string]$msg) {
36
+ Write-Host "[ashlr] ERROR: $msg" -ForegroundColor Red
37
+ exit 1
38
+ }
39
+
40
+ # ---- Check prerequisites ----
41
+
42
+ Write-Step "Checking prerequisites..."
43
+
44
+ # Bun — offer auto-install if missing
45
+ if (-not (Get-Command bun -ErrorAction SilentlyContinue)) {
46
+ Write-Host "[ashlr] Bun is required but not found." -ForegroundColor Yellow
47
+ $answer = Read-Host "[ashlr] Install Bun now? (Y/n)"
48
+ if ($answer -eq "" -or $answer -match "^[Yy]") {
49
+ Write-Step "Running Bun installer..."
50
+ try {
51
+ powershell -NoProfile -Command "irm bun.sh/install.ps1 | iex"
52
+ } catch {
53
+ Write-Fail "Bun installer failed: $_"
54
+ }
55
+ # Refresh PATH for the current session
56
+ $env:PATH = [System.Environment]::GetEnvironmentVariable("PATH", "User") + ";" + `
57
+ [System.Environment]::GetEnvironmentVariable("PATH", "Machine")
58
+ if (-not (Get-Command bun -ErrorAction SilentlyContinue)) {
59
+ Write-Fail "Bun was installed but is not on PATH yet. Open a new terminal and re-run this script."
60
+ }
61
+ Write-Ok "Bun installed successfully."
62
+ } else {
63
+ Write-Fail "Bun is not installed. Install it with: powershell -c `"irm bun.sh/install.ps1 | iex`""
64
+ }
65
+ }
66
+ Write-Ok "Bun $(bun --version) found"
67
+
68
+ if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
69
+ Write-Fail "Git is not installed. Download from https://git-scm.com/download/win"
70
+ }
71
+ Write-Ok "Git $(git --version) found"
72
+
73
+ # ---- Ensure cache base exists ----
74
+
75
+ if (-not (Test-Path $CacheBase)) {
76
+ New-Item -ItemType Directory -Path $CacheBase -Force | Out-Null
77
+ }
78
+
79
+ # ---- Clone to a stable 'current' working dir, then read version ----
80
+ # We clone into a fixed 'current' subdirectory under CacheBase, read the
81
+ # version from package.json, then move it to the versioned slot.
82
+
83
+ $WorkDir = Join-Path $CacheBase "current"
84
+
85
+ if (Test-Path (Join-Path $WorkDir ".git")) {
86
+ Write-Step "Found existing clone — updating..."
87
+ git -C $WorkDir fetch --quiet origin main
88
+ git -C $WorkDir reset --quiet --hard origin/main
89
+ } else {
90
+ if (Test-Path $WorkDir) {
91
+ Remove-Item -Recurse -Force $WorkDir
92
+ }
93
+ Write-Step "Cloning plugin..."
94
+ git clone --quiet $PluginRepo $WorkDir
95
+ }
96
+
97
+ Write-Ok "Plugin source ready."
98
+
99
+ # Read version from package.json
100
+ $pkgJson = Get-Content (Join-Path $WorkDir "package.json") -Raw | ConvertFrom-Json
101
+ $Version = $pkgJson.version
102
+ if (-not $Version) {
103
+ Write-Warn "Could not read version from package.json; defaulting to 'latest'."
104
+ $Version = "latest"
105
+ }
106
+
107
+ # ---- Move/copy into versioned slot ----
108
+
109
+ $VersionDir = Join-Path $CacheBase $Version
110
+
111
+ if (Test-Path $VersionDir) {
112
+ # Already exists — remove and replace so update is idempotent
113
+ Remove-Item -Recurse -Force $VersionDir
114
+ }
115
+
116
+ Write-Step "Installing to $VersionDir ..."
117
+ # Use robocopy for a reliable move on Windows 5.1 (Move-Item can fail across drives)
118
+ $null = robocopy $WorkDir $VersionDir /E /NFL /NDL /NJH /NJS /NC /NS /NP
119
+ Remove-Item -Recurse -Force $WorkDir
120
+
121
+ $PluginDir = $VersionDir
122
+ Write-Ok "Plugin at: $PluginDir"
123
+
124
+ # ---- Prune stale sibling versioned directories ----
125
+ # Keep only the newest semver dir; remove the rest.
126
+
127
+ $semverPattern = '^\d+\.\d+\.\d+$'
128
+ $siblingDirs = Get-ChildItem -Path $CacheBase -Directory |
129
+ Where-Object { $_.Name -match $semverPattern } |
130
+ Sort-Object { [Version]$_.Name }
131
+
132
+ if ($siblingDirs.Count -gt 1) {
133
+ $latest = $siblingDirs[-1].Name
134
+ foreach ($dir in $siblingDirs) {
135
+ if ($dir.Name -ne $latest) {
136
+ Write-Warn "Removing stale cache version: $($dir.Name)"
137
+ Remove-Item -Recurse -Force $dir.FullName
138
+ }
139
+ }
140
+ Write-Ok "Kept only latest cache version: $latest"
141
+ }
142
+
143
+ # ---- Install dependencies ----
144
+
145
+ Write-Step "Running bun install..."
146
+ Push-Location $PluginDir
147
+ try {
148
+ bun install --silent
149
+ Write-Ok "Dependencies installed."
150
+ } finally {
151
+ Pop-Location
152
+ }
153
+
154
+ # ---- Next steps ----
155
+
156
+ Write-Host ""
157
+ Write-Ok "Installation complete."
158
+ Write-Host ""
159
+ Write-Host "Next steps — inside Claude Code:" -ForegroundColor White
160
+ Write-Host ""
161
+ Write-Host " /plugin marketplace add ashlrai/ashlr-plugin" -ForegroundColor Gray
162
+ Write-Host " /plugin install ashlr@ashlr-marketplace" -ForegroundColor Gray
163
+ Write-Host " /reload-plugins" -ForegroundColor Gray
164
+ Write-Host ""
165
+ Write-Host "Then run /ashlr-status. If /reload-plugins is unavailable or the status check does not see ashlr, fully quit and restart Claude Code." -ForegroundColor White
166
+ Write-Host ""
167
+ Write-Ok "Start here:"
168
+ Write-Host " /ashlr-tour -- 2-minute guided tour of every tool, hook, and command" -ForegroundColor Gray
169
+ Write-Host ""
170
+ Write-Host "Landing page: https://plugin.ashlr.ai/" -ForegroundColor Cyan
171
+ Write-Host "Source: https://github.com/ashlrai/ashlr-plugin" -ForegroundColor Cyan
@@ -0,0 +1,146 @@
1
+ #!/usr/bin/env bash
2
+ # ashlr-plugin Claude Code one-liner installer.
3
+ #
4
+ # Usage:
5
+ # curl -fsSL https://plugin.ashlr.ai/install.sh | bash
6
+ #
7
+ # What it does (idempotent — safe to re-run):
8
+ # 1. Checks bun is installed (links to install if missing)
9
+ # 2. Clones the plugin repo into Claude Code's marketplace cache
10
+ # 3. Runs `bun install` so MCP servers have their deps
11
+ # 4. Tells you the exact slash commands to run inside Claude Code
12
+ #
13
+ # Does NOT modify your Claude Code settings.json. Does NOT install globally.
14
+ # Everything lives in ~/.claude/plugins/cache/.
15
+
16
+ set -euo pipefail
17
+
18
+ cyan() { printf "\033[36m%s\033[0m\n" "$*"; }
19
+ green() { printf "\033[32m%s\033[0m\n" "$*"; }
20
+ yellow() { printf "\033[33m%s\033[0m\n" "$*"; }
21
+ red() { printf "\033[31m%s\033[0m\n" "$*"; }
22
+
23
+ cyan "ashlr-plugin Claude Code installer · github.com/ashlrai/ashlr-plugin"
24
+ echo
25
+
26
+ # 1. Prerequisite: bun
27
+ if ! command -v bun >/dev/null 2>&1; then
28
+ yellow "⚠ bun is not installed."
29
+ # Offer auto-install when stdin is a terminal (skip in piped/non-interactive mode).
30
+ if [ -t 0 ]; then
31
+ printf " Install Bun now via curl -fsSL bun.sh/install | bash? (Y/n) "
32
+ read -r _bun_answer </dev/tty
33
+ case "${_bun_answer:-Y}" in
34
+ [Yy]|"")
35
+ yellow "→ Running Bun installer..."
36
+ curl -fsSL https://bun.sh/install | bash
37
+ # Source the profile additions the Bun installer wrote.
38
+ for _rc in "$HOME/.bashrc" "$HOME/.zshrc" "$HOME/.profile"; do
39
+ # shellcheck disable=SC1090
40
+ [ -f "$_rc" ] && . "$_rc" 2>/dev/null || true
41
+ done
42
+ # Also update PATH directly for this shell session.
43
+ export PATH="$HOME/.bun/bin:$PATH"
44
+ if ! command -v bun >/dev/null 2>&1; then
45
+ red "✗ Bun was installed but is not on PATH yet."
46
+ echo " Open a new terminal and re-run this script."
47
+ exit 1
48
+ fi
49
+ green "✓ Bun installed successfully."
50
+ ;;
51
+ *)
52
+ red "✗ bun is not installed."
53
+ echo " Install it first: https://bun.sh (curl -fsSL https://bun.sh/install | bash)"
54
+ echo " ashlr-plugin's MCP servers run under bun."
55
+ exit 1
56
+ ;;
57
+ esac
58
+ else
59
+ yellow "⚠ bun is not installed — skipping cache pre-warm."
60
+ echo " This installer will still finish cloning + printing next steps."
61
+ echo " bun will be auto-installed when the MCP server starts for the first time."
62
+ echo " (Set ASHLR_NO_AUTO_INSTALL=1 to opt out.)"
63
+ _skip_bun_install=1
64
+ fi
65
+ fi
66
+ if [ -z "${_skip_bun_install:-}" ]; then
67
+ green "✓ bun $(bun --version)"
68
+ fi
69
+
70
+ # 2. Prerequisite: git + gh or raw clone access
71
+ if ! command -v git >/dev/null 2>&1; then
72
+ red "✗ git is not installed."
73
+ exit 1
74
+ fi
75
+ green "✓ git $(git --version | awk '{print $3}')"
76
+
77
+ # 3. Pre-clone into Claude Code's cache dir so /plugin install is instant
78
+ CACHE_DIR="$HOME/.claude/plugins/cache/ashlr-marketplace/ashlr"
79
+ mkdir -p "$(dirname "$CACHE_DIR")"
80
+
81
+ if [ -d "$CACHE_DIR/.git" ]; then
82
+ yellow "→ Cache exists — updating"
83
+ git -C "$CACHE_DIR" fetch --quiet origin main
84
+ git -C "$CACHE_DIR" reset --quiet --hard origin/main
85
+ else
86
+ yellow "→ Cloning plugin to $CACHE_DIR"
87
+ git clone --quiet https://github.com/ashlrai/ashlr-plugin.git "$CACHE_DIR"
88
+ fi
89
+ green "✓ plugin at: $CACHE_DIR"
90
+
91
+ # 3b. Prune stale sibling cache versions (keep only the latest semver dir).
92
+ # Claude Code's marketplace cache sometimes accumulates old <X.Y.Z>/ dirs
93
+ # next to the active one. Keep only the newest.
94
+ SIBLING_PARENT="$(dirname "$CACHE_DIR")"
95
+ if [ -d "$SIBLING_PARENT" ]; then
96
+ # Collect semver-shaped siblings, sort with -V, drop the latest, rm the rest.
97
+ # shellcheck disable=SC2012
98
+ mapfile -t _semver_dirs < <(
99
+ ls -1 "$SIBLING_PARENT" 2>/dev/null \
100
+ | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' \
101
+ | sort -V || true
102
+ ) || _semver_dirs=()
103
+ if [ "${#_semver_dirs[@]}" -gt 1 ]; then
104
+ _latest="${_semver_dirs[-1]}"
105
+ for _v in "${_semver_dirs[@]}"; do
106
+ if [ "$_v" != "$_latest" ]; then
107
+ yellow "→ Removing stale cache version: $_v"
108
+ rm -rf "${SIBLING_PARENT:?}/${_v}"
109
+ fi
110
+ done
111
+ green "✓ kept only latest cache version: $_latest"
112
+ fi
113
+ fi
114
+
115
+ # 4. Install dependencies (skipped when bun isn't present — the MCP bootstrap
116
+ # will auto-install bun + run `bun install` itself on first spawn).
117
+ if [ -z "${_skip_bun_install:-}" ]; then
118
+ yellow "→ Installing dependencies (bun install)"
119
+ (cd "$CACHE_DIR" && bun install --silent 2>&1 | tail -5 || true)
120
+ green "✓ dependencies installed"
121
+ else
122
+ yellow "→ Skipping bun install — will run on first MCP server spawn"
123
+ fi
124
+
125
+ echo
126
+ cyan "Done. Next steps — inside Claude Code:"
127
+ echo
128
+ echo " /plugin marketplace add ashlrai/ashlr-plugin"
129
+ echo " /plugin install ashlr@ashlr-marketplace"
130
+ echo " /reload-plugins"
131
+ echo
132
+ echo "Then run /ashlr-status. If /reload-plugins is unavailable or the"
133
+ echo "status check does not see ashlr, fully quit and restart Claude Code."
134
+ echo
135
+ green "▶ Start here:"
136
+ echo " /ashlr-tour — 2-minute guided tour of every tool, hook, and command"
137
+ echo
138
+ cyan "Codex users:"
139
+ echo " git clone https://github.com/ashlrai/ashlr-plugin"
140
+ echo " cd ashlr-plugin && bun install"
141
+ echo " codex plugin marketplace add ashlrai/ashlr-plugin"
142
+ echo " codex plugin add ashlr@ashlr-marketplace"
143
+ echo " bun run scripts/cli.ts codex-doctor --json"
144
+ echo
145
+ cyan "Landing page: https://plugin.ashlr.ai/"
146
+ cyan "Source: https://github.com/ashlrai/ashlr-plugin"
@@ -0,0 +1,114 @@
1
+ # Launch playbook — ashlr-plugin v1.36 Codex-native release
2
+
3
+ A meta-guide for Mason (first-time launcher) covering where each post goes, when to post, what to monitor, and how to answer the questions that will show up in the first 24 hours. If you're reading this and you're not Mason: the tone is internal-note, not polished copy.
4
+
5
+ ---
6
+
7
+ ## When to post what
8
+
9
+ | Platform | File | Best window (PT) | Why |
10
+ |---|---|---|---|
11
+ | Hacker News | `hn.md` | **Tue–Thu, 7:30–9:30am PT** | HN front-page algo favors morning US-east activity. Avoid Monday (noisy), Friday (dead), weekends (low-signal). |
12
+ | X / Twitter | `x.md` | **Weekday evenings, 6–9pm PT** | Dev-twitter is an after-work crowd. Thread, not single tweet. Pin it. |
13
+ | r/ClaudeAI | `reddit.md` (variant 1) | Any weekday, **avoid weekends** | Reddit's Claude subs are active all day; Sat/Sun posts get buried by meme content. |
14
+ | r/ClaudeCode | `reddit.md` (variant 2) | Same | Smaller sub, more technical — quality threshold is higher. |
15
+
16
+ **Order of operations:** Post HN first (highest risk, highest reward). If HN picks up, tweet the HN link. Post Reddit after HN peaks (either way — a dead HN post is still a fine Reddit post, and a live one gives Reddit posts a "here's the discussion" link to include).
17
+
18
+ **Don't cross-post the HN text verbatim to Reddit.** Reddit mods smell it. Variants in `reddit.md` are pre-tailored.
19
+
20
+ **Don't submit the same URL to HN twice** in a short window — it'll get flagged. If the first HN submission flops, wait a week and try a different title.
21
+
22
+ ---
23
+
24
+ ## Monitoring checklist (first 24h)
25
+
26
+ Refresh roughly every 30 min for the first 3 hours, then hourly until bedtime.
27
+
28
+ - **GitHub stars** — `gh api repos/ashlrai/ashlr-plugin | jq .stargazers_count`. Expect 0–50 for a quiet launch, 50–500 for a good HN run.
29
+ - **Issues opened** — `gh issue list --repo ashlrai/ashlr-plugin`. Respond within 2h if you're awake. A fast first response shapes the whole thread.
30
+ - **HN comments** — refresh the submission, read every comment before replying. HN rewards thoughtful, don't rush.
31
+ - **X replies/quote-tweets** — quote-tweets matter more than replies for reach. Thank thoughtful ones, don't dunk on dumb ones.
32
+ - **Reddit comments** — Reddit auto-sorts by controversial early; skim, respond to top-level questions only.
33
+ - **Traffic** — if Pages analytics is wired, watch `plugin.ashlr.ai` referrers. Otherwise `gh api repos/.../traffic/views` (14-day window, updates hourly).
34
+ - **`/ashlr-doctor` error reports** — if someone files an install issue, ask them to paste `/ashlr-doctor` output. Saves 10 back-and-forths.
35
+
36
+ ---
37
+
38
+ ## Rehearsed answers — the 10 questions you'll definitely get
39
+
40
+ Keep these in a scratchpad. Don't copy-paste verbatim; rephrase slightly per thread so it doesn't feel templated.
41
+
42
+ **Q: "Why not just make this a paid product?"**
43
+ I wanted the mechanism auditable. WOZCODE exists, it's polished, people happily pay — I'm not trying to eat their lunch. This is for the people who want to see every line of code that's rewriting their MCP traffic.
44
+
45
+ **Q: "Does this work with Opus?"**
46
+ Yes. Savings math is model-agnostic (characters in, tokens out); pricing math respects `ASHLR_PRICING_MODEL` so the `$` in `/ashlr-savings` reflects whatever plan you're on. Opus users see the biggest dollar savings because Opus is the most expensive per-token.
47
+
48
+ **Q: "Is it spying on me / phoning home?"**
49
+ No. `git grep -E 'posthog|fetch.*\.(com|io)|analytics'` on the repo — nothing outbound. The one exception is `/ashlr-doctor`, which hits GitHub's public releases API to check if you're behind. That's a deliberate user-invoked action, not background.
50
+
51
+ **Q: "How does this compare to WOZCODE?"**
52
+ Same shape: tri-agent, Read/Grep/Edit redirect, commit attribution, edit-batching, status line. Mine adds SQL + Bash + Tree MCP tools and a baseline scanner. Mine is MIT, no account, telemetry off by default. Theirs is more polished and has a real support channel. Both valid.
53
+
54
+ **Q: "Does the tokenizer count match Anthropic exactly?"**
55
+ No — Anthropic doesn't publish theirs. I use tiktoken cl100k_base as a proxy, which is ~12.9% more accurate than chars/4 on code (measured). I'd rather ship an honest proxy than a fake-precise estimate.
56
+
57
+ **Q: "Will it work with Cursor / Zed / Windsurf?"**
58
+ Cursor, Zed, and Windsurf can use Ashlr through MCP-only config. Codex also has plugin-format install via `codex plugin marketplace add ashlrai/ashlr-plugin` and `codex plugin add ashlr@ashlr-marketplace`. Claude-Code-only surfaces are slash commands, status line, OAuth bootstrap, and redirect-mode hooks.
59
+
60
+ **Q: "Why Bun? I don't have Bun."**
61
+ Bun starts MCP servers faster than Node and the install story is cleaner. `curl -fsSL https://bun.sh/install | bash` — 5 seconds. If this is a hard blocker for someone, open an issue; Node compat is a reasonable ask but not free to maintain.
62
+
63
+ **Q: "Show me the real savings on my own code."**
64
+ `/ashlr-benchmark` runs the harness against the current working directory. Real files, real numbers, reproducible.
65
+
66
+ **Q: "Is the -57% figure cherry-picked?"**
67
+ It's the mean across files ≥ 2 KB in the benchmark corpus. Smaller files see 0% because `snipCompact` has a 2 KB threshold — I could have dropped the threshold to juice the number, I didn't.
68
+
69
+ **Q: "What's the genome thing?"**
70
+ `.ashlrcode/genome/` is a sectioned project spec (markdown files, ~one per concern). `ashlr__grep` returns only the task-relevant sections instead of grepping the whole tree. Ashlr includes a scribe that keeps the genome current as you work. Run `/ashlr-genome-init` to try it.
71
+
72
+ ---
73
+
74
+ ## What to NOT do
75
+
76
+ These matter more than the positive advice above. Re-read before posting.
77
+
78
+ 1. **Don't engage trolls.** Every launch thread gets one "this is garbage / reinventing the wheel / you should just use X" comment. Do not reply. Replying legitimizes it and sinks the thread. Move on.
79
+ 2. **Don't overpromise.** The numbers are specific: −57% cross-repo. Don't let excitement turn it into "80% faster" or "80% cheaper" — those mean different things.
80
+ 3. **Don't vanity-name-drop.** No "I used this at $BIG_CO" if you didn't. No "endorsed by X" unless X actually endorsed it. Credibility is cheap to lose.
81
+ 4. **Don't shit on WOZCODE.** They built the pattern first. Frame as "open-source equivalent," never "killer" or "replacement." You'll get WOZCODE users trying it precisely because you were respectful.
82
+ 5. **Don't amend the HN post after it's live.** Comments will reference earlier phrasing. If you find a typo, note it in a comment on your own thread instead.
83
+ 6. **Don't reply to every comment.** Reply to substantive questions, thoughtful critiques, and install issues. Skip "nice!" and "cool project" — a like is fine.
84
+ 7. **Don't cross-link your own Reddit post from X within the first hour.** Looks like brigading. Wait until it has organic traction.
85
+ 8. **Don't add an "upvote please" anywhere.** Instant credibility death on HN/Reddit.
86
+ 9. **Don't argue about the benchmark methodology in public.** If someone says the benchmark is bad, ask them to file an issue with a proposed improvement. Takes the heat off the thread and usually produces better data.
87
+ 10. **Don't launch on a day you can't monitor for 12 hours.** If you post and disappear, questions go unanswered and the thread dies.
88
+
89
+ ---
90
+
91
+ ## Sample reply templates
92
+
93
+ Adapt, don't paste verbatim.
94
+
95
+ **Install issue:**
96
+ > Can you paste the output of `/ashlr-doctor`? That'll tell me whether it's an MCP registration issue, a bun version thing, or a plugin-path problem. If doctor itself fails, `bun --version` + `ls ~/.claude/plugins/cache/ashlr-marketplace/ashlr` is the next step.
97
+
98
+ **Skeptical about numbers:**
99
+ > Fair question. `/ashlr-benchmark` runs the harness on your working directory and prints the raw per-file savings. If it comes out very different from the −57% figure, I'd genuinely like the dataset — open an issue.
100
+
101
+ **"Why should I trust you?"**
102
+ > You shouldn't, really — that's the whole point of MIT + telemetry off by default. Source is 100% readable, stats never leave your disk unless you explicitly enable opt-in telemetry. If you find anything that contradicts that, it's a CVE and I want to know.
103
+
104
+ **"Doesn't WOZCODE already do this?"**
105
+ > Yes, and they did it first. Ashlr is the open-source equivalent — same shape, auditable source, no account, telemetry off by default. If WOZCODE's polish is worth $20/week to you, use WOZCODE. This is for people who want to read every line.
106
+
107
+ ---
108
+
109
+ ## After the launch
110
+
111
+ - Merge any install-issue PRs within 48h if they're clean.
112
+ - Write a "lessons learned" note in `docs/launch/post-mortem.md` once the dust settles — which number surprised you, which question you weren't ready for, what you'd change.
113
+ - If traction is real, ask two or three early users for a short quote — not testimonials, just "what surprised you." Use in future posts.
114
+ - Don't re-launch for at least 3 months. New major version = new launch; point release = don't.