superacli 1.1.0 → 1.1.2

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 (261) hide show
  1. package/.beads/.br_history/issues.20260308_235202_180577215.jsonl +57 -0
  2. package/.beads/.br_history/issues.20260308_235202_387414163.jsonl +57 -0
  3. package/.beads/.br_history/issues.20260308_235202_564422794.jsonl +57 -0
  4. package/.beads/.br_history/issues.20260308_235202_742600597.jsonl +57 -0
  5. package/.beads/.br_history/issues.20260308_235208_133360069.jsonl +57 -0
  6. package/.beads/.br_history/issues.20260308_235505_473406307.jsonl +57 -0
  7. package/.beads/.br_history/issues.20260308_235505_662360489.jsonl +57 -0
  8. package/.beads/.br_history/issues.20260308_235505_843935624.jsonl +57 -0
  9. package/.beads/.br_history/issues.20260308_235506_044530221.jsonl +57 -0
  10. package/.beads/.br_history/issues.20260309_002618_115728731.jsonl +57 -0
  11. package/.beads/.br_history/issues.20260309_003748_878174586.jsonl +57 -0
  12. package/.beads/.br_history/issues.20260309_004057_868755623.jsonl +57 -0
  13. package/.beads/.br_history/issues.20260309_004058_512842163.jsonl +57 -0
  14. package/.beads/.br_history/issues.20260309_004058_994445226.jsonl +57 -0
  15. package/.beads/.br_history/issues.20260309_004059_475988596.jsonl +57 -0
  16. package/.beads/.br_history/issues.20260309_161902_566857851.jsonl +57 -0
  17. package/.beads/.br_history/issues.20260309_170512_277017739.jsonl +57 -0
  18. package/.beads/.br_history/issues.20260309_170512_477876921.jsonl +57 -0
  19. package/.beads/.br_history/issues.20260309_170512_664382701.jsonl +57 -0
  20. package/.beads/.br_history/issues.20260309_170512_859400333.jsonl +57 -0
  21. package/.beads/.br_history/issues.20260309_212326_082771164.jsonl +57 -0
  22. package/.beads/.br_history/issues.20260309_212326_245619716.jsonl +58 -0
  23. package/.beads/.br_history/issues.20260309_212326_403198317.jsonl +59 -0
  24. package/.beads/.br_history/issues.20260309_212332_539197678.jsonl +60 -0
  25. package/.beads/.br_history/issues.20260309_212332_731373599.jsonl +60 -0
  26. package/.beads/.br_history/issues.20260309_212332_928710953.jsonl +60 -0
  27. package/.beads/.br_history/issues.20260309_213021_341505240.jsonl +60 -0
  28. package/.beads/.br_history/issues.20260309_213022_023136934.jsonl +60 -0
  29. package/.beads/.br_history/issues.20260309_213022_400050719.jsonl +60 -0
  30. package/.beads/issues.jsonl +20 -17
  31. package/README.md +1 -1
  32. package/__tests__/adapter-schema.test.js +3 -0
  33. package/__tests__/aws-plugin.test.js +84 -0
  34. package/__tests__/az-plugin.test.js +84 -0
  35. package/__tests__/builtin-adapter.test.js +29 -0
  36. package/__tests__/cline-plugin.test.js +109 -0
  37. package/__tests__/cline-skill.test.js +49 -0
  38. package/__tests__/docker-plugin.test.js +3 -1
  39. package/__tests__/eza-plugin.test.js +81 -0
  40. package/__tests__/gcloud-plugin.test.js +86 -0
  41. package/__tests__/gh-plugin.test.js +86 -0
  42. package/__tests__/helm-plugin.test.js +81 -0
  43. package/__tests__/http-adapter.test.js +118 -0
  44. package/__tests__/just-plugin.test.js +82 -0
  45. package/__tests__/kubectl-plugin.test.js +83 -0
  46. package/__tests__/linear-plugin.test.js +81 -0
  47. package/__tests__/mcp-adapter.test.js +187 -0
  48. package/__tests__/nextest-plugin.test.js +82 -0
  49. package/__tests__/npm-plugin.test.js +81 -0
  50. package/__tests__/nullclaw-plugin.test.js +157 -0
  51. package/__tests__/openapi-adapter.test.js +199 -0
  52. package/__tests__/plugin-agency-agents.test.js +6 -6
  53. package/__tests__/plugin-nullclaw.test.js +78 -0
  54. package/__tests__/plugin-visual-explainer.test.js +62 -0
  55. package/__tests__/plugins-manager.test.js +59 -10
  56. package/__tests__/pnpm-plugin.test.js +81 -0
  57. package/__tests__/poetry-plugin.test.js +83 -0
  58. package/__tests__/process-adapter.test.js +124 -90
  59. package/__tests__/pulumi-plugin.test.js +81 -0
  60. package/__tests__/railway-plugin.test.js +84 -0
  61. package/__tests__/server-app.test.js +67 -0
  62. package/__tests__/server-config-service.test.js +79 -0
  63. package/__tests__/server-routes-ask.test.js +89 -0
  64. package/__tests__/server-routes-commands.test.js +55 -0
  65. package/__tests__/server-routes-config.test.js +87 -0
  66. package/__tests__/server-routes-jobs.test.js +53 -0
  67. package/__tests__/server-routes-misc.test.js +112 -0
  68. package/__tests__/server-storage-adapter.test.js +40 -0
  69. package/__tests__/server-storage-file.test.js +73 -0
  70. package/__tests__/server-storage-mongo.test.js +74 -0
  71. package/__tests__/shell-adapter.test.js +81 -22
  72. package/__tests__/stripe-plugin.test.js +3 -1
  73. package/__tests__/supabase-plugin.test.js +86 -0
  74. package/__tests__/terraform-plugin.test.js +83 -0
  75. package/__tests__/uv-plugin.test.js +81 -0
  76. package/__tests__/vercel-plugin.test.js +81 -0
  77. package/__tests__/watchexec-plugin.test.js +80 -0
  78. package/cli/adapter-schema.js +5 -0
  79. package/cli/adapters/process.js +53 -2
  80. package/cli/plugin-install-guidance.js +320 -0
  81. package/cli/plugins-manager.js +272 -212
  82. package/cli/skills.js +16 -5
  83. package/cli/supercli.js +26 -2
  84. package/docs/plugins.md +2 -0
  85. package/docs/skills/cline-non-interactive/SKILL.md +59 -0
  86. package/docs/skills-catalog.md +35 -0
  87. package/docs/visual-overview.md +21 -0
  88. package/jest.config.js +4 -1
  89. package/package.json +4 -3
  90. package/plugins/agency-agents/plugin.json +5 -0
  91. package/{cli/plugin-agency-agents.js → plugins/agency-agents/scripts/post-install.js} +13 -3
  92. package/plugins/aws/README.md +46 -0
  93. package/plugins/aws/plugin.json +42 -0
  94. package/plugins/az/README.md +46 -0
  95. package/plugins/az/plugin.json +42 -0
  96. package/plugins/clickup/plugin.json +38 -0
  97. package/plugins/clickup/scripts/post-install.js +107 -0
  98. package/plugins/clickup/scripts/post-uninstall.js +30 -0
  99. package/plugins/cline/README.md +48 -0
  100. package/plugins/cline/plugin.json +92 -0
  101. package/plugins/eza/README.md +40 -0
  102. package/plugins/eza/plugin.json +42 -0
  103. package/plugins/gcloud/README.md +46 -0
  104. package/plugins/gcloud/plugin.json +42 -0
  105. package/plugins/gh/README.md +46 -0
  106. package/plugins/gh/plugin.json +43 -0
  107. package/plugins/helm/README.md +42 -0
  108. package/plugins/helm/plugin.json +42 -0
  109. package/plugins/just/README.md +42 -0
  110. package/plugins/just/plugin.json +42 -0
  111. package/plugins/kubectl/README.md +46 -0
  112. package/plugins/kubectl/plugin.json +42 -0
  113. package/plugins/linear/README.md +60 -0
  114. package/plugins/linear/plugin.json +42 -0
  115. package/plugins/nextest/README.md +42 -0
  116. package/plugins/nextest/plugin.json +42 -0
  117. package/plugins/npm/README.md +46 -0
  118. package/plugins/npm/plugin.json +42 -0
  119. package/plugins/nullclaw/README.md +45 -0
  120. package/plugins/nullclaw/plugin.json +64 -0
  121. package/plugins/nullclaw/scripts/post-install.js +189 -0
  122. package/plugins/nullclaw/scripts/post-uninstall.js +25 -0
  123. package/plugins/openfang/plugin.json +37 -0
  124. package/plugins/openfang/scripts/post-install.js +163 -0
  125. package/plugins/openfang/scripts/post-uninstall.js +30 -0
  126. package/plugins/plugins.json +234 -0
  127. package/plugins/pnpm/README.md +46 -0
  128. package/plugins/pnpm/plugin.json +42 -0
  129. package/plugins/poetry/README.md +46 -0
  130. package/plugins/poetry/plugin.json +42 -0
  131. package/plugins/pulumi/README.md +46 -0
  132. package/plugins/pulumi/plugin.json +42 -0
  133. package/plugins/railway/README.md +58 -0
  134. package/plugins/railway/plugin.json +43 -0
  135. package/plugins/supabase/README.md +55 -0
  136. package/plugins/supabase/plugin.json +42 -0
  137. package/plugins/superpowers/plugin.json +22 -0
  138. package/plugins/superpowers/scripts/post-install.js +124 -0
  139. package/plugins/superpowers/scripts/post-uninstall.js +30 -0
  140. package/plugins/terraform/README.md +46 -0
  141. package/plugins/terraform/plugin.json +42 -0
  142. package/plugins/uv/README.md +46 -0
  143. package/plugins/uv/plugin.json +42 -0
  144. package/plugins/vercel/README.md +47 -0
  145. package/plugins/vercel/plugin.json +42 -0
  146. package/plugins/visual-explainer/plugin.json +15 -0
  147. package/plugins/visual-explainer/scripts/post-install.js +111 -0
  148. package/plugins/watchexec/README.md +40 -0
  149. package/plugins/watchexec/plugin.json +42 -0
  150. package/tests/test-aws-smoke.sh +56 -0
  151. package/tests/test-az-smoke.sh +56 -0
  152. package/tests/test-cline-smoke.sh +37 -0
  153. package/tests/test-eza-smoke.sh +33 -0
  154. package/tests/test-gcloud-smoke.sh +56 -0
  155. package/tests/test-gh-smoke.sh +56 -0
  156. package/tests/test-helm-smoke.sh +33 -0
  157. package/tests/test-just-smoke.sh +40 -0
  158. package/tests/test-kubectl-smoke.sh +37 -0
  159. package/tests/test-linear-smoke.sh +97 -0
  160. package/tests/test-nextest-smoke.sh +33 -0
  161. package/tests/test-npm-smoke.sh +32 -0
  162. package/tests/test-nullclaw-smoke.sh +51 -0
  163. package/tests/test-plugins-registry.js +110 -0
  164. package/tests/test-pnpm-smoke.sh +33 -0
  165. package/tests/test-poetry-smoke.sh +33 -0
  166. package/tests/test-pulumi-smoke.sh +33 -0
  167. package/tests/test-railway-smoke.sh +95 -0
  168. package/tests/test-supabase-smoke.sh +95 -0
  169. package/tests/test-terraform-smoke.sh +33 -0
  170. package/tests/test-uv-smoke.sh +33 -0
  171. package/tests/test-vercel-smoke.sh +55 -0
  172. package/tests/test-watchexec-smoke.sh +33 -0
  173. package/.beads/.br_history/issues.20260308_180927_477542428.jsonl +0 -12
  174. package/.beads/.br_history/issues.20260308_181032_020230108.jsonl +0 -12
  175. package/.beads/.br_history/issues.20260308_181032_180539413.jsonl +0 -12
  176. package/.beads/.br_history/issues.20260308_181032_372621506.jsonl +0 -12
  177. package/.beads/.br_history/issues.20260308_181032_565142225.jsonl +0 -12
  178. package/.beads/.br_history/issues.20260308_181311_336346464.jsonl +0 -12
  179. package/.beads/.br_history/issues.20260308_181444_039234498.jsonl +0 -13
  180. package/.beads/.br_history/issues.20260308_181503_794764403.jsonl +0 -13
  181. package/.beads/.br_history/issues.20260308_181503_950163105.jsonl +0 -13
  182. package/.beads/.br_history/issues.20260308_192031_852553505.jsonl +0 -13
  183. package/.beads/.br_history/issues.20260308_193552_846920518.jsonl +0 -14
  184. package/.beads/.br_history/issues.20260308_194054_394884833.jsonl +0 -14
  185. package/.beads/.br_history/issues.20260308_194209_440472460.jsonl +0 -15
  186. package/.beads/.br_history/issues.20260308_195319_099391899.jsonl +0 -15
  187. package/.beads/.br_history/issues.20260308_195324_176987204.jsonl +0 -16
  188. package/.beads/.br_history/issues.20260308_195436_929114019.jsonl +0 -16
  189. package/.beads/.br_history/issues.20260308_195437_055808298.jsonl +0 -17
  190. package/.beads/.br_history/issues.20260308_195437_304297399.jsonl +0 -18
  191. package/.beads/.br_history/issues.20260308_195437_556007332.jsonl +0 -19
  192. package/.beads/.br_history/issues.20260308_195444_987209695.jsonl +0 -20
  193. package/.beads/.br_history/issues.20260308_195445_133350193.jsonl +0 -20
  194. package/.beads/.br_history/issues.20260308_195445_400185615.jsonl +0 -20
  195. package/.beads/.br_history/issues.20260308_195445_689886334.jsonl +0 -20
  196. package/.beads/.br_history/issues.20260308_195445_949947727.jsonl +0 -20
  197. package/.beads/.br_history/issues.20260308_195745_580473297.jsonl +0 -20
  198. package/.beads/.br_history/issues.20260308_195745_725920532.jsonl +0 -20
  199. package/.beads/.br_history/issues.20260308_195745_968227911.jsonl +0 -20
  200. package/.beads/.br_history/issues.20260308_195746_224276322.jsonl +0 -20
  201. package/.beads/.br_history/issues.20260308_200018_386890807.jsonl +0 -20
  202. package/ref-btcbot/.env.example +0 -19
  203. package/ref-btcbot/README.md +0 -3
  204. package/ref-btcbot/docs/bot.md +0 -72
  205. package/ref-btcbot/docs/skills/btcbot.backtest/SKILL.md +0 -70
  206. package/ref-btcbot/docs/skills/btcbot.config/SKILL.md +0 -79
  207. package/ref-btcbot/docs/skills/btcbot.orders/SKILL.md +0 -60
  208. package/ref-btcbot/docs/skills/btcbot.positions/SKILL.md +0 -54
  209. package/ref-btcbot/docs/skills/btcbot.risk/SKILL.md +0 -69
  210. package/ref-btcbot/docs/skills/btcbot.run-loop/SKILL.md +0 -63
  211. package/ref-btcbot/docs/skills/btcbot.run-once/SKILL.md +0 -63
  212. package/ref-btcbot/docs/skills/btcbot.status/SKILL.md +0 -59
  213. package/ref-btcbot/examples/sample-candles.json +0 -52
  214. package/ref-btcbot/package.json +0 -18
  215. package/ref-btcbot/plugin/plugin.json +0 -146
  216. package/ref-btcbot/src/cli.js +0 -104
  217. package/ref-btcbot/src/config.js +0 -80
  218. package/ref-btcbot/src/core/bot-runner.js +0 -78
  219. package/ref-btcbot/src/core/exchange-factory.js +0 -19
  220. package/ref-btcbot/src/core/live-exchange.js +0 -12
  221. package/ref-btcbot/src/core/paper-exchange.js +0 -82
  222. package/ref-btcbot/src/core/risk-engine.js +0 -42
  223. package/ref-btcbot/src/core/state-repository.js +0 -47
  224. package/ref-btcbot/src/services/backtest-service.js +0 -44
  225. package/ref-btcbot/src/services/market-data.js +0 -32
  226. package/ref-btcbot/src/storage/json-store.js +0 -45
  227. package/ref-btcbot/src/strategy/hedge-strategy.js +0 -65
  228. package/ref-btcbot/src/strategy/indicators.js +0 -56
  229. package/ref-btcbot/src/web/api.js +0 -50
  230. package/ref-btcbot/src/web/app.js +0 -51
  231. package/ref-btcbot/src/web/index.html +0 -70
  232. package/ref-btcbot/src/web/server.js +0 -33
  233. /package/.beads/.br_history/{issues.20260308_180927_477542428.jsonl.meta.json → issues.20260308_235202_180577215.jsonl.meta.json} +0 -0
  234. /package/.beads/.br_history/{issues.20260308_181032_020230108.jsonl.meta.json → issues.20260308_235202_387414163.jsonl.meta.json} +0 -0
  235. /package/.beads/.br_history/{issues.20260308_181032_180539413.jsonl.meta.json → issues.20260308_235202_564422794.jsonl.meta.json} +0 -0
  236. /package/.beads/.br_history/{issues.20260308_181032_372621506.jsonl.meta.json → issues.20260308_235202_742600597.jsonl.meta.json} +0 -0
  237. /package/.beads/.br_history/{issues.20260308_181032_565142225.jsonl.meta.json → issues.20260308_235208_133360069.jsonl.meta.json} +0 -0
  238. /package/.beads/.br_history/{issues.20260308_181311_336346464.jsonl.meta.json → issues.20260308_235505_473406307.jsonl.meta.json} +0 -0
  239. /package/.beads/.br_history/{issues.20260308_181444_039234498.jsonl.meta.json → issues.20260308_235505_662360489.jsonl.meta.json} +0 -0
  240. /package/.beads/.br_history/{issues.20260308_181503_794764403.jsonl.meta.json → issues.20260308_235505_843935624.jsonl.meta.json} +0 -0
  241. /package/.beads/.br_history/{issues.20260308_181503_950163105.jsonl.meta.json → issues.20260308_235506_044530221.jsonl.meta.json} +0 -0
  242. /package/.beads/.br_history/{issues.20260308_192031_852553505.jsonl.meta.json → issues.20260309_002618_115728731.jsonl.meta.json} +0 -0
  243. /package/.beads/.br_history/{issues.20260308_193552_846920518.jsonl.meta.json → issues.20260309_003748_878174586.jsonl.meta.json} +0 -0
  244. /package/.beads/.br_history/{issues.20260308_194054_394884833.jsonl.meta.json → issues.20260309_004057_868755623.jsonl.meta.json} +0 -0
  245. /package/.beads/.br_history/{issues.20260308_194209_440472460.jsonl.meta.json → issues.20260309_004058_512842163.jsonl.meta.json} +0 -0
  246. /package/.beads/.br_history/{issues.20260308_195319_099391899.jsonl.meta.json → issues.20260309_004058_994445226.jsonl.meta.json} +0 -0
  247. /package/.beads/.br_history/{issues.20260308_195324_176987204.jsonl.meta.json → issues.20260309_004059_475988596.jsonl.meta.json} +0 -0
  248. /package/.beads/.br_history/{issues.20260308_195436_929114019.jsonl.meta.json → issues.20260309_161902_566857851.jsonl.meta.json} +0 -0
  249. /package/.beads/.br_history/{issues.20260308_195437_055808298.jsonl.meta.json → issues.20260309_170512_277017739.jsonl.meta.json} +0 -0
  250. /package/.beads/.br_history/{issues.20260308_195437_304297399.jsonl.meta.json → issues.20260309_170512_477876921.jsonl.meta.json} +0 -0
  251. /package/.beads/.br_history/{issues.20260308_195437_556007332.jsonl.meta.json → issues.20260309_170512_664382701.jsonl.meta.json} +0 -0
  252. /package/.beads/.br_history/{issues.20260308_195444_987209695.jsonl.meta.json → issues.20260309_170512_859400333.jsonl.meta.json} +0 -0
  253. /package/.beads/.br_history/{issues.20260308_195445_133350193.jsonl.meta.json → issues.20260309_212326_082771164.jsonl.meta.json} +0 -0
  254. /package/.beads/.br_history/{issues.20260308_195445_400185615.jsonl.meta.json → issues.20260309_212326_245619716.jsonl.meta.json} +0 -0
  255. /package/.beads/.br_history/{issues.20260308_195445_689886334.jsonl.meta.json → issues.20260309_212326_403198317.jsonl.meta.json} +0 -0
  256. /package/.beads/.br_history/{issues.20260308_195445_949947727.jsonl.meta.json → issues.20260309_212332_539197678.jsonl.meta.json} +0 -0
  257. /package/.beads/.br_history/{issues.20260308_195745_580473297.jsonl.meta.json → issues.20260309_212332_731373599.jsonl.meta.json} +0 -0
  258. /package/.beads/.br_history/{issues.20260308_195745_725920532.jsonl.meta.json → issues.20260309_212332_928710953.jsonl.meta.json} +0 -0
  259. /package/.beads/.br_history/{issues.20260308_195745_968227911.jsonl.meta.json → issues.20260309_213021_341505240.jsonl.meta.json} +0 -0
  260. /package/.beads/.br_history/{issues.20260308_195746_224276322.jsonl.meta.json → issues.20260309_213022_023136934.jsonl.meta.json} +0 -0
  261. /package/.beads/.br_history/{issues.20260308_200018_386890807.jsonl.meta.json → issues.20260309_213022_400050719.jsonl.meta.json} +0 -0
package/cli/supercli.js CHANGED
@@ -100,6 +100,18 @@ function output(data) {
100
100
  console.log(str);
101
101
  }
102
102
 
103
+ function makeStreamEmitter(commandName) {
104
+ if (humanMode) return null
105
+ return (event) => {
106
+ output({
107
+ version: "1.0",
108
+ command: commandName,
109
+ stream: true,
110
+ data: event,
111
+ })
112
+ }
113
+ }
114
+
103
115
  function outputHumanTable(rows, columns) {
104
116
  if (!humanMode) return false;
105
117
  if (!rows || rows.length === 0) {
@@ -574,7 +586,13 @@ async function main() {
574
586
  __rawArgs: passthrough.passthroughArgs,
575
587
  __passthroughInteractive: humanMode && isTTY,
576
588
  },
577
- { server: SERVER || "", config },
589
+ {
590
+ server: SERVER || "",
591
+ config,
592
+ onStreamEvent: passthrough.command.adapterConfig && passthrough.command.adapterConfig.stream === "jsonl"
593
+ ? makeStreamEmitter(`${passthrough.namespace}.passthrough`)
594
+ : null,
595
+ },
578
596
  );
579
597
  const duration = Date.now() - start;
580
598
  const envelope = {
@@ -710,7 +728,13 @@ async function main() {
710
728
  }
711
729
 
712
730
  const start = Date.now();
713
- const result = await execute(cmd, uFlags, { server: SERVER || "", config });
731
+ const result = await execute(cmd, uFlags, {
732
+ server: SERVER || "",
733
+ config,
734
+ onStreamEvent: cmd.adapterConfig && cmd.adapterConfig.stream === "jsonl"
735
+ ? makeStreamEmitter(`${namespace}.${resource}.${action}`)
736
+ : null,
737
+ });
714
738
  const duration = Date.now() - start;
715
739
 
716
740
  const envelope = {
package/docs/plugins.md CHANGED
@@ -39,4 +39,6 @@ Default is `fail`.
39
39
  - `plugins list` shows installed plugins.
40
40
  - `plugins explore` shows discoverable plugins from `plugins/plugins.json`.
41
41
  - `plugins install` supports local path, registry name, and direct remote git manifest installs.
42
+ - Plugin manifests can define `post_install` hooks (`script`, optional `runtime`, optional `timeout_ms`) that execute from the plugin folder after install.
42
43
  - `agency-agents` is a bundled zero-command plugin. Installing it adds a remote skills provider named `agency-agents` and refreshes the local skills catalog.
44
+ - `visual-explainer` is a bundled zero-command plugin. Installing it adds a remote skills provider named `visual-explainer` sourced from normalized markdown skills in `javimosch/visual-explainer` and refreshes the local skills catalog.
@@ -0,0 +1,59 @@
1
+ ---
2
+ skill_name: cline-non-interactive
3
+ description: Use the supercli cline harness for unattended, JSON-streamed Cline execution.
4
+ tags: cline,agents,automation,streaming
5
+ ---
6
+
7
+ # Cline Non-Interactive
8
+
9
+ Use this skill when you want to delegate a task to the local Cline CLI through SuperCLI in a way that is safe for agents and easy to parse.
10
+
11
+ ## Preferred Commands
12
+
13
+ Use the wrapped commands first:
14
+
15
+ ```bash
16
+ supercli cline task run --prompt "<task>" --cwd <path> --timeout 30 --json
17
+ supercli cline task plan --prompt "<task>" --cwd <path> --timeout 30 --json
18
+ ```
19
+
20
+ - `cline task run` uses Cline act mode with `-a -y --json`
21
+ - `cline task plan` uses Cline plan mode with `-p -y --json`
22
+ - both commands emit streamed JSON event envelopes before a final completion envelope
23
+
24
+ ## When To Use Which
25
+
26
+ - use `cline task run` when you want Cline to execute the task autonomously
27
+ - use `cline task plan` when you want a plan-first answer or want to inspect the intended approach before acting
28
+ - use passthrough only if you need a Cline flag or subcommand that the wrapped commands do not expose yet
29
+
30
+ ## Output Contract
31
+
32
+ When `--json` is used on the SuperCLI command, output is newline-delimited:
33
+
34
+ 1. zero or more streamed event envelopes:
35
+
36
+ ```json
37
+ {"version":"1.0","command":"cline.task.run","stream":true,"data":{"type":"say","say":"task","text":"..."}}
38
+ ```
39
+
40
+ 2. one final summary envelope:
41
+
42
+ ```json
43
+ {"version":"1.0","command":"cline.task.run","duration_ms":1234,"data":{"streamed":true,"stream":"jsonl","event_count":4,"last_event":{"type":"say","say":"completion_result","text":"..."}}}
44
+ ```
45
+
46
+ ## Safety Defaults
47
+
48
+ - always pass `--cwd` so Cline operates in the intended workspace
49
+ - prefer `--timeout` for unattended runs
50
+ - avoid secrets in prompts because they can appear in logs or downstream tool output
51
+ - use a clean branch or a clearly scoped task when running autonomous edit flows
52
+
53
+ ## Examples
54
+
55
+ ```bash
56
+ supercli cline task run --prompt "List files with more LOC in cwd" --cwd . --timeout 30 --json
57
+ supercli cline task plan --prompt "Plan how to split SearchForm.vue below 500 LOC" --cwd . --json
58
+ supercli cline cli version --json
59
+ ```
@@ -44,3 +44,38 @@ supercli skills get agency-agents:engineering.engineering-frontend-developer
44
44
  `agency-agents` maps skills one-to-one to upstream `.md` files in
45
45
  `msitarzewski/agency-agents`. If upstream paths change or files are removed,
46
46
  individual skills may stop resolving until reinstalled/refreshed.
47
+
48
+ ## Remote Provider Example: visual-explainer
49
+
50
+ ```bash
51
+ supercli plugins install visual-explainer --json
52
+ supercli skills list --catalog --provider visual-explainer --json
53
+ supercli skills get visual-explainer:visual-explainer.skill
54
+ ```
55
+
56
+ `visual-explainer` maps skills to normalized markdown files under
57
+ `plugins/visual-explainer-normalized` in `javimosch/visual-explainer`.
58
+
59
+ ## Remote Provider Example: nullclaw
60
+
61
+ ```bash
62
+ supercli plugins install nullclaw --json
63
+ supercli skills list --catalog --provider nullclaw --json
64
+ supercli skills get nullclaw:root.agents
65
+ supercli skills get nullclaw:docs.en.commands
66
+ ```
67
+
68
+ `nullclaw` indexes curated upstream markdown from `nullclaw/nullclaw` so agents can pull
69
+ project overview, operator docs, security guidance, and implementation notes on demand.
70
+ It also exposes the local `nullclaw` binary through wrapped commands and full passthrough.
71
+
72
+ ## Local Repo Skill Example: cline-non-interactive
73
+
74
+ ```bash
75
+ supercli skills sync --json
76
+ supercli skills list --catalog --provider repo --json
77
+ supercli skills get repo:cline-non-interactive
78
+ ```
79
+
80
+ `cline-non-interactive` is a repository-local skill that teaches agents to prefer the wrapped
81
+ `supercli cline task run` and `supercli cline task plan` commands for unattended Cline usage.
@@ -0,0 +1,21 @@
1
+ # dcli visual overview
2
+
3
+ The architecture blueprint for dcli lives in the self-contained HTML artifact generated via the `visual-explainer` plugin.
4
+
5
+ - **File**: `~/.agent/diagrams/dcli-visual-architecture.html`
6
+ - **Open**: `xdg-open ~/.agent/diagrams/dcli-visual-architecture.html`
7
+ - **Source**: Created with `supercli skills get visual-explainer:visual-explainer.skill` guidance.
8
+
9
+ ## What the HTML covers
10
+
11
+ 1. **Skill routing pipeline** – Mermaid snapshot of `cli/supercli.js`, the skills catalog, plugin harness manager, server APIs, and adapters. Includes zoom, pan, and expand controls per the visual-explainer requirements.
12
+ 2. **Runtime pillars** – Card grid summarizing the CLI runtime, catalog, plugin manager, and Express backend with file references such as `cli/plugins-manager.js` and `server/app.js`.
13
+ 3. **Plugin & skill lifecycle** – Timeline of registry discovery → install → catalog sync → execution, tying back to commands like `supercli skills list --catalog`.
14
+ 4. **Capability matrix** – HTML table comparing bundled harnesses, built-in adapters, remote providers, and the server API, highlighting when to use commands such as `supercli sync`.
15
+ 5. **Operational cues** – Details blocks that document behaviors like plan building and storage fallbacks.
16
+
17
+ ## Regenerating or extending
18
+
19
+ 1. Ensure the `visual-explainer` provider is installed (`supercli plugins install visual-explainer`).
20
+ 2. Re-open the reference templates (`visual-explainer:visual-explainer.templates.architecture`, `...templates.data-table`, etc.) to stay within the mandated aesthetics.
21
+ 3. Update the HTML under `~/.agent/diagrams/` and refresh this markdown with any new sections you add. Keep this file as the only place in the repo that references the artifact’s path.
package/jest.config.js CHANGED
@@ -6,9 +6,12 @@ module.exports = {
6
6
  coverageProvider: "v8",
7
7
  collectCoverageFrom: [
8
8
  "cli/**/*.js",
9
+ "server/**/*.js",
9
10
  "!cli/supercli.js",
10
- "!cli/adapters/**"
11
+ "!cli/plugin-agency-agents.js",
12
+ "!server/public/**"
11
13
  ],
14
+ testPathIgnorePatterns: ["/node_modules/", "/ref-btcbot/"],
12
15
  coverageDirectory: "coverage",
13
16
  coverageReporters: ["text", "lcov", "clover"],
14
17
  coverageThreshold: {
package/package.json CHANGED
@@ -1,18 +1,19 @@
1
1
  {
2
2
  "name": "superacli",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Config-driven, AI-friendly dynamic CLI",
5
5
  "main": "server/app.js",
6
6
  "bin": {
7
7
  "dcli": "./cli/supercli.js",
8
8
  "scli": "./cli/supercli.js",
9
9
  "superacli": "./cli/supercli.js",
10
- "supercli": "./cli/supercli.js"
10
+ "supercli": "./cli/supercli.js",
11
+ "sc":"./cli/supercli.js"
11
12
  },
12
13
  "scripts": {
13
14
  "start": "node server/app.js",
14
15
  "dev": "node server/app.js",
15
- "test:unit": "jest --coverage",
16
+ "test:unit": "jest --coverage --runInBand",
16
17
  "test:unit:watch": "jest --watch"
17
18
  },
18
19
  "dependencies": {
@@ -6,5 +6,10 @@
6
6
  "checks": [
7
7
  { "type": "binary", "name": "curl" }
8
8
  ],
9
+ "post_install": {
10
+ "script": "scripts/post-install.js",
11
+ "runtime": "node",
12
+ "timeout_ms": 15000
13
+ },
9
14
  "commands": []
10
15
  }
@@ -1,5 +1,5 @@
1
1
  const { spawnSync } = require("child_process")
2
- const { addProvider, syncCatalog } = require("./skills-catalog")
2
+ const { addProvider, syncCatalog } = require("../../../cli/skills-catalog")
3
3
 
4
4
  const OWNER = "msitarzewski"
5
5
  const REPO = "agency-agents"
@@ -82,7 +82,7 @@ function buildRemoteEntriesFromTree(treeResponse) {
82
82
  return entries
83
83
  }
84
84
 
85
- function installAgencyAgentsSkillProvider() {
85
+ function run() {
86
86
  const treeResponse = fetchJson(TREE_URL)
87
87
  const entries = buildRemoteEntriesFromTree(treeResponse)
88
88
  if (entries.length === 0) {
@@ -106,7 +106,17 @@ function installAgencyAgentsSkillProvider() {
106
106
  }
107
107
  }
108
108
 
109
+ if (require.main === module) {
110
+ try {
111
+ const result = run()
112
+ process.stdout.write(JSON.stringify(result))
113
+ } catch (err) {
114
+ process.stderr.write(err.message)
115
+ process.exit(1)
116
+ }
117
+ }
118
+
109
119
  module.exports = {
110
- installAgencyAgentsSkillProvider,
120
+ run,
111
121
  buildRemoteEntriesFromTree
112
122
  }
@@ -0,0 +1,46 @@
1
+ # AWS CLI Plugin Harness
2
+
3
+ This plugin integrates the AWS CLI into dcli with one wrapped core command and full namespace passthrough.
4
+
5
+ ## Prerequisites
6
+
7
+ Install AWS CLI with your preferred package manager, then verify it is available:
8
+
9
+ ```bash
10
+ aws --version
11
+ ```
12
+
13
+ Configure credentials before running account or service commands:
14
+
15
+ ```bash
16
+ aws configure
17
+ ```
18
+
19
+ ## Available Commands
20
+
21
+ ### Account Identity (Wrapped)
22
+
23
+ Returns the active caller identity via `aws sts get-caller-identity`.
24
+
25
+ ```bash
26
+ dcli aws account identity --json
27
+ ```
28
+
29
+ ### Full Passthrough
30
+
31
+ You can run any AWS CLI command through the `aws` namespace.
32
+
33
+ ```bash
34
+ # List S3 buckets
35
+ dcli aws s3api list-buckets
36
+
37
+ # List EC2 regions
38
+ dcli aws ec2 describe-regions
39
+
40
+ # Show CLI help
41
+ dcli aws --help
42
+ ```
43
+
44
+ ## Output
45
+
46
+ Wrapped commands and passthrough responses are returned in dcli envelope format when `--json` is used with dcli-level commands.
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "aws",
3
+ "version": "0.1.0",
4
+ "description": "AWS CLI plugin for dcli",
5
+ "source": "https://docs.aws.amazon.com/cli/latest/reference/",
6
+ "checks": [
7
+ {
8
+ "type": "binary",
9
+ "name": "aws"
10
+ }
11
+ ],
12
+ "commands": [
13
+ {
14
+ "namespace": "aws",
15
+ "resource": "account",
16
+ "action": "identity",
17
+ "description": "Show AWS caller identity for the active credentials",
18
+ "adapter": "process",
19
+ "adapterConfig": {
20
+ "command": "aws",
21
+ "baseArgs": ["sts", "get-caller-identity"],
22
+ "parseJson": true,
23
+ "missingDependencyHelp": "Please install AWS CLI to use this command."
24
+ },
25
+ "args": []
26
+ },
27
+ {
28
+ "namespace": "aws",
29
+ "resource": "_",
30
+ "action": "_",
31
+ "description": "Passthrough command to execute any AWS CLI command",
32
+ "adapter": "process",
33
+ "adapterConfig": {
34
+ "command": "aws",
35
+ "passthrough": true,
36
+ "parseJson": true,
37
+ "missingDependencyHelp": "Please install AWS CLI to use this command."
38
+ },
39
+ "args": []
40
+ }
41
+ ]
42
+ }
@@ -0,0 +1,46 @@
1
+ # Azure CLI Plugin Harness
2
+
3
+ This plugin integrates the Azure CLI (`az`) into dcli with one wrapped core command and full namespace passthrough.
4
+
5
+ ## Prerequisites
6
+
7
+ Install Azure CLI with your preferred package manager, then verify it is available:
8
+
9
+ ```bash
10
+ az version
11
+ ```
12
+
13
+ Authenticate before running account or resource commands:
14
+
15
+ ```bash
16
+ az login
17
+ ```
18
+
19
+ ## Available Commands
20
+
21
+ ### Account Show (Wrapped)
22
+
23
+ Returns the active Azure subscription via `az account show`.
24
+
25
+ ```bash
26
+ dcli az account show --json
27
+ ```
28
+
29
+ ### Full Passthrough
30
+
31
+ You can run any Azure CLI command through the `az` namespace.
32
+
33
+ ```bash
34
+ # List subscriptions
35
+ dcli az account list
36
+
37
+ # List resource groups
38
+ dcli az group list
39
+
40
+ # Show CLI help
41
+ dcli az --help
42
+ ```
43
+
44
+ ## Output
45
+
46
+ Wrapped commands and passthrough responses are returned in dcli envelope format when `--json` is used with dcli-level commands.
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "az",
3
+ "version": "0.1.0",
4
+ "description": "Azure CLI plugin for dcli",
5
+ "source": "https://learn.microsoft.com/cli/azure/",
6
+ "checks": [
7
+ {
8
+ "type": "binary",
9
+ "name": "az"
10
+ }
11
+ ],
12
+ "commands": [
13
+ {
14
+ "namespace": "az",
15
+ "resource": "account",
16
+ "action": "show",
17
+ "description": "Show the active Azure subscription",
18
+ "adapter": "process",
19
+ "adapterConfig": {
20
+ "command": "az",
21
+ "baseArgs": ["account", "show"],
22
+ "parseJson": true,
23
+ "missingDependencyHelp": "Please install Azure CLI to use this command."
24
+ },
25
+ "args": []
26
+ },
27
+ {
28
+ "namespace": "az",
29
+ "resource": "_",
30
+ "action": "_",
31
+ "description": "Passthrough command to execute any Azure CLI command",
32
+ "adapter": "process",
33
+ "adapterConfig": {
34
+ "command": "az",
35
+ "passthrough": true,
36
+ "parseJson": true,
37
+ "missingDependencyHelp": "Please install Azure CLI to use this command."
38
+ },
39
+ "args": []
40
+ }
41
+ ]
42
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "clickup",
3
+ "version": "0.1.0",
4
+ "description": "ClickUp CLI (cu) for AI agents - task management, sprint tracking, and project workflows",
5
+ "source": "https://github.com/krodak/clickup-cli",
6
+ "tags": ["clickup", "tasks", "project-management", "sprint", "ai-agents"],
7
+ "checks": [
8
+ { "type": "binary", "name": "cu" }
9
+ ],
10
+ "post_install": {
11
+ "script": "scripts/post-install.js",
12
+ "runtime": "node",
13
+ "timeout_ms": 15000
14
+ },
15
+ "post_uninstall": {
16
+ "script": "scripts/post-uninstall.js",
17
+ "runtime": "node",
18
+ "timeout_ms": 15000
19
+ },
20
+ "commands": [
21
+ {
22
+ "namespace": "clickup",
23
+ "resource": "_",
24
+ "action": "_",
25
+ "description": "Passthrough command to execute any cu CLI command",
26
+ "adapter": "process",
27
+ "adapterConfig": {
28
+ "command": "cu",
29
+ "passthrough": true,
30
+ "parseJson": true,
31
+ "timeout_ms": 15000,
32
+ "missingDependencyHelp": "Please install clickup-cli: npm install -g @krodak/clickup-cli, then run: cu init"
33
+ },
34
+ "args": []
35
+ }
36
+ ]
37
+ }
38
+
@@ -0,0 +1,107 @@
1
+ const { spawnSync } = require("child_process")
2
+ const { addProvider, syncCatalog } = require("../../../cli/skills-catalog")
3
+
4
+ const OWNER = "krodak"
5
+ const REPO = "clickup-cli"
6
+ const REF = "main"
7
+ const SOURCE_REPO = `https://github.com/${OWNER}/${REPO}`
8
+ const TREE_URL = `https://api.github.com/repos/${OWNER}/${REPO}/git/trees/${REF}?recursive=1`
9
+ const RAW_BASE_URL = `https://raw.githubusercontent.com/${OWNER}/${REPO}/${REF}`
10
+
11
+ const SKILLS_PATH = "skills/clickup-cli/SKILL.md"
12
+
13
+ function integrationError(message, suggestions = []) {
14
+ return Object.assign(new Error(message), {
15
+ code: 105,
16
+ type: "integration_error",
17
+ recoverable: true,
18
+ suggestions
19
+ })
20
+ }
21
+
22
+ function fetchJson(url) {
23
+ const res = spawnSync("curl", ["-fsSL", url], { encoding: "utf-8", timeout: 15000 })
24
+ if (res.error) {
25
+ throw integrationError(`Failed to fetch clickup-cli skill: ${res.error.message}`, ["Check internet connectivity", "Retry: supercli plugins install clickup"])
26
+ }
27
+ if (res.status !== 0) {
28
+ throw integrationError(`Failed to fetch clickup-cli skill: ${(res.stderr || "").trim() || `exit ${res.status}`}`, ["Check internet connectivity", "Retry: supercli plugins install clickup"])
29
+ }
30
+ try {
31
+ return JSON.parse((res.stdout || "").trim() || "{}")
32
+ } catch (err) {
33
+ throw integrationError(`Invalid clickup-cli skill response: ${err.message}`)
34
+ }
35
+ }
36
+
37
+ function run() {
38
+ // Fetch the skill file directly
39
+ const skillUrl = `${RAW_BASE_URL}/${SKILLS_PATH}`
40
+ const res = spawnSync("curl", ["-fsSL", skillUrl], { encoding: "utf-8", timeout: 15000 })
41
+
42
+ if (res.error || res.status !== 0) {
43
+ throw integrationError(`Failed to fetch clickup-cli SKILL.md: ${res.error?.message || `exit ${res.status}`}`, ["Check internet connectivity", "Retry: supercli plugins install clickup"])
44
+ }
45
+
46
+ const markdown = (res.stdout || "").trim()
47
+
48
+ // Parse frontmatter for name and description
49
+ let name = "ClickUp CLI"
50
+ let description = "Use when managing ClickUp tasks, sprints, or comments via the cu CLI tool"
51
+
52
+ if (markdown.startsWith("---\n")) {
53
+ const end = markdown.indexOf("\n---\n", 4)
54
+ if (end > 0) {
55
+ const frontmatter = markdown.slice(4, end)
56
+ for (const line of frontmatter.split("\n")) {
57
+ const idx = line.indexOf(":")
58
+ if (idx > 0) {
59
+ const key = line.slice(0, idx).trim()
60
+ const value = line.slice(idx + 1).trim().replace(/^"|"$/g, "")
61
+ if (key === "name") name = value
62
+ if (key === "description") description = value
63
+ }
64
+ }
65
+ }
66
+ }
67
+
68
+ // Add as a remote static provider with a single skill entry
69
+ addProvider({
70
+ name: "clickup",
71
+ type: "remote_static",
72
+ enabled: true,
73
+ source_repo: SOURCE_REPO,
74
+ ref: REF,
75
+ entries: [
76
+ {
77
+ id: "clickup",
78
+ name: name,
79
+ description: description,
80
+ path: SKILLS_PATH,
81
+ source_url: skillUrl
82
+ }
83
+ ]
84
+ })
85
+
86
+ const index = syncCatalog()
87
+ return {
88
+ provider: "clickup",
89
+ entries: 1,
90
+ synced_skills: Array.isArray(index.skills) ? index.skills.length : 0
91
+ }
92
+ }
93
+
94
+ if (require.main === module) {
95
+ try {
96
+ const result = run()
97
+ process.stdout.write(JSON.stringify(result))
98
+ } catch (err) {
99
+ process.stderr.write(err.message)
100
+ process.exit(1)
101
+ }
102
+ }
103
+
104
+ module.exports = {
105
+ run
106
+ }
107
+
@@ -0,0 +1,30 @@
1
+ const { removeProvider, syncCatalog } = require("../../../cli/skills-catalog")
2
+
3
+ function run() {
4
+ const removed = removeProvider("clickup")
5
+
6
+ if (removed) {
7
+ // Re-sync catalog to remove clickup skills
8
+ syncCatalog()
9
+ }
10
+
11
+ return {
12
+ provider: "clickup",
13
+ removed: removed
14
+ }
15
+ }
16
+
17
+ if (require.main === module) {
18
+ try {
19
+ const result = run()
20
+ process.stdout.write(JSON.stringify(result))
21
+ } catch (err) {
22
+ process.stderr.write(err.message)
23
+ process.exit(1)
24
+ }
25
+ }
26
+
27
+ module.exports = {
28
+ run
29
+ }
30
+
@@ -0,0 +1,48 @@
1
+ # Cline Plugin
2
+
3
+ This plugin integrates the Cline CLI into dcli with rich non-interactive task wrappers and full namespace passthrough.
4
+
5
+ ## Prerequisites
6
+
7
+ Ensure `cline` is available on your machine:
8
+
9
+ ```bash
10
+ cline --version
11
+ ```
12
+
13
+ ## Wrapped Commands
14
+
15
+ ### CLI Version
16
+
17
+ ```bash
18
+ supercli cline cli version --json
19
+ ```
20
+
21
+ ### Non-Interactive Task Run
22
+
23
+ Runs Cline in act mode with `-a -y --json` and streams one JSON event envelope per line before the final summary envelope.
24
+
25
+ ```bash
26
+ supercli cline task run --prompt "List files with most LOC in cwd" --cwd . --timeout 30 --json
27
+ ```
28
+
29
+ ### Non-Interactive Task Plan
30
+
31
+ Runs Cline in plan mode with `-p -y --json` and the same streaming behavior.
32
+
33
+ ```bash
34
+ supercli cline task plan --prompt "Plan a refactor of the auth module" --cwd . --json
35
+ ```
36
+
37
+ ## Full Passthrough
38
+
39
+ ```bash
40
+ supercli cline --help
41
+ supercli cline -a -y --json "List files with more LOC in cwd"
42
+ ```
43
+
44
+ ## Notes
45
+
46
+ - Prefer the wrapped `cline task run` and `cline task plan` commands for agent automation.
47
+ - Those wrappers bake in the documented headless-safe defaults: `--json` plus `-y`, with `-a` or `-p` selected for you.
48
+ - Passthrough remains available when you need flags or flows not yet wrapped.