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
@@ -0,0 +1,163 @@
1
+ const { spawnSync } = require("child_process")
2
+ const { addProvider, syncCatalog } = require("../../../cli/skills-catalog")
3
+
4
+ const OWNER = "RightNow-AI"
5
+ const REPO = "openfang"
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 SKILLS_BASE = "crates/openfang-skills/bundled"
10
+
11
+ function integrationError(message, suggestions = []) {
12
+ return Object.assign(new Error(message), {
13
+ code: 105,
14
+ type: "integration_error",
15
+ recoverable: true,
16
+ suggestions
17
+ })
18
+ }
19
+
20
+ function fetchJson(url) {
21
+ const res = spawnSync("curl", ["-fsSL", url], { encoding: "utf-8", timeout: 30000 })
22
+ if (res.error) {
23
+ throw integrationError(`Failed to fetch from GitHub API: ${res.error.message}`, ["Check internet connectivity", "Retry: supercli plugins install openfang"])
24
+ }
25
+ if (res.status !== 0) {
26
+ throw integrationError(`Failed to fetch from GitHub API: ${(res.stderr || "").trim() || `exit ${res.status}`}`, ["Check internet connectivity", "Retry: supercli plugins install openfang"])
27
+ }
28
+ try {
29
+ return JSON.parse((res.stdout || "").trim() || "{}")
30
+ } catch (err) {
31
+ throw integrationError(`Invalid JSON response: ${err.message}`)
32
+ }
33
+ }
34
+
35
+ // Map skill folder names to human-readable names
36
+ const SKILL_DISPLAY_NAMES = {
37
+ "ansible": "Ansible",
38
+ "api-tester": "API Tester",
39
+ "aws": "AWS Expert",
40
+ "azure": "Azure Expert",
41
+ "ci-cd": "CI/CD",
42
+ "code-reviewer": "Code Reviewer",
43
+ "compliance": "Compliance",
44
+ "confluence": "Confluence",
45
+ "crypto-expert": "Cryptocurrency Expert",
46
+ "css-expert": "CSS Expert",
47
+ "data-analyst": "Data Analyst",
48
+ "data-pipeline": "Data Pipeline",
49
+ "docker": "Docker",
50
+ "elasticsearch": "Elasticsearch",
51
+ "email-writer": "Email Writer",
52
+ "figma-expert": "Figma Expert",
53
+ "gcp": "Google Cloud Expert",
54
+ "git-expert": "Git Expert",
55
+ "github": "GitHub",
56
+ "golang-expert": "Go Expert",
57
+ "graphql-expert": "GraphQL Expert",
58
+ "helm": "Helm",
59
+ "interview-prep": "Interview Preparation",
60
+ "jira": "Jira",
61
+ "kubernetes": "Kubernetes",
62
+ "linear-tools": "Linear",
63
+ "linux-networking": "Linux Networking",
64
+ "llm-finetuning": "LLM Fine-tuning",
65
+ "ml-engineer": "ML Engineer",
66
+ "mongodb": "MongoDB",
67
+ "nextjs-expert": "Next.js Expert",
68
+ "nginx": "Nginx",
69
+ "notion": "Notion",
70
+ "oauth-expert": "OAuth Expert",
71
+ "openapi-expert": "OpenAPI Expert",
72
+ "pdf-reader": "PDF Reader",
73
+ "postgres-expert": "PostgreSQL Expert",
74
+ "presentation": "Presentation",
75
+ "project-manager": "Project Manager",
76
+ "prometheus": "Prometheus",
77
+ "prompt-engineer": "Prompt Engineer",
78
+ "python-expert": "Python Expert",
79
+ "react-expert": "React Expert",
80
+ "redis-expert": "Redis Expert",
81
+ "regex-expert": "Regex Expert",
82
+ "rust-expert": "Rust Expert",
83
+ "security-audit": "Security Audit",
84
+ "sentry": "Sentry",
85
+ "shell-scripting": "Shell Scripting",
86
+ "slack-tools": "Slack",
87
+ "sql-analyst": "SQL Analyst",
88
+ "sqlite-expert": "SQLite Expert",
89
+ "sysadmin": "System Administrator",
90
+ "technical-writer": "Technical Writer",
91
+ "terraform": "Terraform",
92
+ "typescript-expert": "TypeScript Expert",
93
+ "vector-db": "Vector Database",
94
+ "wasm-expert": "WebAssembly Expert",
95
+ "web-search": "Web Search",
96
+ "writing-coach": "Writing Coach"
97
+ }
98
+
99
+ function run() {
100
+ // Fetch the tree to get all skills
101
+ const treeData = fetchJson(TREE_URL)
102
+
103
+ if (!treeData.tree) {
104
+ throw integrationError("Failed to get repository tree from GitHub")
105
+ }
106
+
107
+ // Find all skill directories under crates/openfang-skills/bundled
108
+ const skillEntries = treeData.tree
109
+ .filter(item => item.path.startsWith(SKILLS_BASE + "/") && item.type === "tree")
110
+ .map(item => item.path.replace(SKILLS_BASE + "/", ""))
111
+
112
+ if (skillEntries.length === 0) {
113
+ throw integrationError("No skills found in openfang-skills/bundled")
114
+ }
115
+
116
+ // Build provider entries for each skill
117
+ const entries = skillEntries.map(skillName => {
118
+ const displayName = SKILL_DISPLAY_NAMES[skillName] || skillName
119
+ .split("-")
120
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
121
+ .join(" ")
122
+
123
+ return {
124
+ id: skillName,
125
+ name: displayName,
126
+ description: `OpenFang bundled skill: ${displayName}`,
127
+ path: `${SKILLS_BASE}/${skillName}`,
128
+ source_url: `https://github.com/${OWNER}/${REPO}/tree/${REF}/${SKILLS_BASE}/${skillName}`
129
+ }
130
+ })
131
+
132
+ // Add as a remote static provider
133
+ addProvider({
134
+ name: "openfang",
135
+ type: "remote_static",
136
+ enabled: true,
137
+ source_repo: SOURCE_REPO,
138
+ ref: REF,
139
+ entries: entries
140
+ })
141
+
142
+ const index = syncCatalog()
143
+ return {
144
+ provider: "openfang",
145
+ entries: entries.length,
146
+ synced_skills: Array.isArray(index.skills) ? index.skills.length : 0
147
+ }
148
+ }
149
+
150
+ if (require.main === module) {
151
+ try {
152
+ const result = run()
153
+ process.stdout.write(JSON.stringify(result))
154
+ } catch (err) {
155
+ process.stderr.write(err.message)
156
+ process.exit(1)
157
+ }
158
+ }
159
+
160
+ module.exports = {
161
+ run
162
+ }
163
+
@@ -0,0 +1,30 @@
1
+ const { removeProvider, syncCatalog } = require("../../../cli/skills-catalog")
2
+
3
+ function run() {
4
+ const removed = removeProvider("openfang")
5
+
6
+ if (removed) {
7
+ // Re-sync catalog to remove openfang skills
8
+ syncCatalog()
9
+ }
10
+
11
+ return {
12
+ provider: "openfang",
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
+
@@ -37,6 +37,204 @@
37
37
  "manifest_path": "plugins/stripe/plugin.json"
38
38
  }
39
39
  },
40
+ {
41
+ "name": "vercel",
42
+ "description": "Vercel CLI plugin with account wrapper and passthrough",
43
+ "tags": ["vercel", "deployments", "hosting", "passthrough"],
44
+ "source": {
45
+ "type": "bundled",
46
+ "manifest_path": "plugins/vercel/plugin.json"
47
+ }
48
+ },
49
+ {
50
+ "name": "linear",
51
+ "description": "Linear CLI plugin with account wrapper and passthrough",
52
+ "tags": ["linear", "issues", "project-management", "passthrough"],
53
+ "source": {
54
+ "type": "bundled",
55
+ "manifest_path": "plugins/linear/plugin.json"
56
+ }
57
+ },
58
+ {
59
+ "name": "railway",
60
+ "description": "Railway CLI plugin with account wrapper and passthrough",
61
+ "tags": ["railway", "deployments", "infrastructure", "passthrough"],
62
+ "source": {
63
+ "type": "bundled",
64
+ "manifest_path": "plugins/railway/plugin.json"
65
+ }
66
+ },
67
+ {
68
+ "name": "supabase",
69
+ "description": "Supabase CLI plugin with projects wrapper and passthrough",
70
+ "tags": ["supabase", "database", "backend", "passthrough"],
71
+ "source": {
72
+ "type": "bundled",
73
+ "manifest_path": "plugins/supabase/plugin.json"
74
+ }
75
+ },
76
+ {
77
+ "name": "gh",
78
+ "description": "GitHub CLI plugin with auth wrapper and passthrough",
79
+ "tags": ["github", "gh", "git", "developer-tools"],
80
+ "source": {
81
+ "type": "bundled",
82
+ "manifest_path": "plugins/gh/plugin.json"
83
+ }
84
+ },
85
+ {
86
+ "name": "kubectl",
87
+ "description": "kubectl plugin with context wrapper and passthrough",
88
+ "tags": ["kubernetes", "kubectl", "containers", "devops"],
89
+ "source": {
90
+ "type": "bundled",
91
+ "manifest_path": "plugins/kubectl/plugin.json"
92
+ }
93
+ },
94
+ {
95
+ "name": "terraform",
96
+ "description": "Terraform CLI plugin with version wrapper and passthrough",
97
+ "tags": ["terraform", "infrastructure", "iac", "devops"],
98
+ "source": {
99
+ "type": "bundled",
100
+ "manifest_path": "plugins/terraform/plugin.json"
101
+ }
102
+ },
103
+ {
104
+ "name": "aws",
105
+ "description": "AWS CLI plugin with identity wrapper and passthrough",
106
+ "tags": ["aws", "cloud", "infrastructure", "devops"],
107
+ "source": {
108
+ "type": "bundled",
109
+ "manifest_path": "plugins/aws/plugin.json"
110
+ }
111
+ },
112
+ {
113
+ "name": "gcloud",
114
+ "description": "Google Cloud CLI plugin with account wrapper and passthrough",
115
+ "tags": ["gcloud", "google-cloud", "cloud", "devops"],
116
+ "source": {
117
+ "type": "bundled",
118
+ "manifest_path": "plugins/gcloud/plugin.json"
119
+ }
120
+ },
121
+ {
122
+ "name": "az",
123
+ "description": "Azure CLI plugin with account wrapper and passthrough",
124
+ "tags": ["azure", "az", "cloud", "devops"],
125
+ "source": {
126
+ "type": "bundled",
127
+ "manifest_path": "plugins/az/plugin.json"
128
+ }
129
+ },
130
+ {
131
+ "name": "helm",
132
+ "description": "Helm CLI plugin with version wrapper and passthrough",
133
+ "tags": ["helm", "kubernetes", "charts", "devops"],
134
+ "source": {
135
+ "type": "bundled",
136
+ "manifest_path": "plugins/helm/plugin.json"
137
+ }
138
+ },
139
+ {
140
+ "name": "npm",
141
+ "description": "npm CLI plugin with version wrapper and passthrough",
142
+ "tags": ["npm", "node", "packages", "javascript"],
143
+ "source": {
144
+ "type": "bundled",
145
+ "manifest_path": "plugins/npm/plugin.json"
146
+ }
147
+ },
148
+ {
149
+ "name": "pulumi",
150
+ "description": "Pulumi CLI plugin with version wrapper and passthrough",
151
+ "tags": ["pulumi", "infrastructure", "iac", "devops"],
152
+ "source": {
153
+ "type": "bundled",
154
+ "manifest_path": "plugins/pulumi/plugin.json"
155
+ }
156
+ },
157
+ {
158
+ "name": "pnpm",
159
+ "description": "pnpm CLI plugin with version wrapper and passthrough",
160
+ "tags": ["pnpm", "node", "packages", "javascript"],
161
+ "source": {
162
+ "type": "bundled",
163
+ "manifest_path": "plugins/pnpm/plugin.json"
164
+ }
165
+ },
166
+ {
167
+ "name": "uv",
168
+ "description": "uv CLI plugin with version wrapper and passthrough",
169
+ "tags": ["uv", "python", "packages", "packaging"],
170
+ "source": {
171
+ "type": "bundled",
172
+ "manifest_path": "plugins/uv/plugin.json"
173
+ }
174
+ },
175
+ {
176
+ "name": "poetry",
177
+ "description": "Poetry CLI plugin with version wrapper and passthrough",
178
+ "tags": ["poetry", "python", "packages", "packaging"],
179
+ "source": {
180
+ "type": "bundled",
181
+ "manifest_path": "plugins/poetry/plugin.json"
182
+ }
183
+ },
184
+ {
185
+ "name": "eza",
186
+ "description": "eza CLI plugin with version wrapper and passthrough",
187
+ "tags": ["eza", "rust", "filesystem", "developer-tools"],
188
+ "source": {
189
+ "type": "bundled",
190
+ "manifest_path": "plugins/eza/plugin.json"
191
+ }
192
+ },
193
+ {
194
+ "name": "just",
195
+ "description": "just CLI plugin with version wrapper and passthrough",
196
+ "tags": ["just", "rust", "task-runner", "developer-tools"],
197
+ "source": {
198
+ "type": "bundled",
199
+ "manifest_path": "plugins/just/plugin.json"
200
+ }
201
+ },
202
+ {
203
+ "name": "watchexec",
204
+ "description": "watchexec CLI plugin with version wrapper and passthrough",
205
+ "tags": ["watchexec", "rust", "file-watchers", "developer-tools"],
206
+ "source": {
207
+ "type": "bundled",
208
+ "manifest_path": "plugins/watchexec/plugin.json"
209
+ }
210
+ },
211
+ {
212
+ "name": "nextest",
213
+ "description": "cargo-nextest CLI plugin with version wrapper and passthrough",
214
+ "tags": ["nextest", "rust", "testing", "cargo-plugin"],
215
+ "source": {
216
+ "type": "bundled",
217
+ "manifest_path": "plugins/nextest/plugin.json"
218
+ }
219
+ },
220
+ {
221
+ "name": "cline",
222
+ "description": "Cline CLI plugin with rich non-interactive task wrappers and passthrough",
223
+ "tags": ["cline", "agents", "automation", "streaming", "passthrough"],
224
+ "source": {
225
+ "type": "bundled",
226
+ "manifest_path": "plugins/cline/plugin.json"
227
+ }
228
+ },
229
+ {
230
+ "name": "nullclaw",
231
+ "description": "Hybrid NullClaw plugin with remote docs catalog plus local CLI passthrough",
232
+ "tags": ["nullclaw", "skills", "agents", "zig", "passthrough"],
233
+ "source": {
234
+ "type": "bundled",
235
+ "manifest_path": "plugins/nullclaw/plugin.json"
236
+ }
237
+ },
40
238
  {
41
239
  "name": "commiat",
42
240
  "description": "AI-assisted git commit message plugin",
@@ -56,6 +254,42 @@
56
254
  "type": "bundled",
57
255
  "manifest_path": "plugins/agency-agents/plugin.json"
58
256
  }
257
+ },
258
+ {
259
+ "name": "visual-explainer",
260
+ "description": "Indexes normalized visual-explainer markdown skills from javimosch/visual-explainer",
261
+ "tags": ["skills", "visualization", "catalog", "remote"],
262
+ "source": {
263
+ "type": "bundled",
264
+ "manifest_path": "plugins/visual-explainer/plugin.json"
265
+ }
266
+ },
267
+ {
268
+ "name": "superpowers",
269
+ "description": "Agentic skills framework for software development methodology from obra/superpowers",
270
+ "tags": ["skills", "agents", "development", "methodology", "catalog"],
271
+ "source": {
272
+ "type": "bundled",
273
+ "manifest_path": "plugins/superpowers/plugin.json"
274
+ }
275
+ },
276
+ {
277
+ "name": "clickup",
278
+ "description": "ClickUp CLI (cu) for AI agents - task management, sprint tracking, and project workflows",
279
+ "tags": ["clickup", "tasks", "project-management", "sprint", "ai-agents", "passthrough"],
280
+ "source": {
281
+ "type": "bundled",
282
+ "manifest_path": "plugins/clickup/plugin.json"
283
+ }
284
+ },
285
+ {
286
+ "name": "openfang",
287
+ "description": "OpenFang - Agent Operating System. CLI passthrough + 60+ bundled skills (aws, kubernetes, docker, etc.)",
288
+ "tags": ["openfang", "agents", "ai", "autonomous", "skills", "passthrough", "rust"],
289
+ "source": {
290
+ "type": "bundled",
291
+ "manifest_path": "plugins/openfang/plugin.json"
292
+ }
59
293
  }
60
294
  ]
61
295
  }
@@ -0,0 +1,46 @@
1
+ # pnpm Plugin Harness
2
+
3
+ This plugin integrates the pnpm CLI into dcli with one wrapped core command and full namespace passthrough.
4
+
5
+ ## Prerequisites
6
+
7
+ Ensure pnpm is available on your machine:
8
+
9
+ ```bash
10
+ pnpm --version
11
+ ```
12
+
13
+ If you plan to run authenticated registry commands, log in first:
14
+
15
+ ```bash
16
+ pnpm login
17
+ ```
18
+
19
+ ## Available Commands
20
+
21
+ ### CLI Version (Wrapped)
22
+
23
+ Returns the pnpm CLI version via `pnpm --version`.
24
+
25
+ ```bash
26
+ dcli pnpm cli version --json
27
+ ```
28
+
29
+ ### Full Passthrough
30
+
31
+ You can run any pnpm command through the `pnpm` namespace.
32
+
33
+ ```bash
34
+ # Search packages as JSON
35
+ dcli pnpm search react --json
36
+
37
+ # Show current user if authenticated
38
+ dcli pnpm whoami
39
+
40
+ # Show CLI help
41
+ dcli pnpm --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": "pnpm",
3
+ "version": "0.1.0",
4
+ "description": "pnpm CLI plugin for dcli",
5
+ "source": "https://pnpm.io/cli",
6
+ "checks": [
7
+ {
8
+ "type": "binary",
9
+ "name": "pnpm"
10
+ }
11
+ ],
12
+ "commands": [
13
+ {
14
+ "namespace": "pnpm",
15
+ "resource": "cli",
16
+ "action": "version",
17
+ "description": "Show pnpm CLI version",
18
+ "adapter": "process",
19
+ "adapterConfig": {
20
+ "command": "pnpm",
21
+ "baseArgs": ["--version"],
22
+ "parseJson": false,
23
+ "missingDependencyHelp": "Please install pnpm to use this command."
24
+ },
25
+ "args": []
26
+ },
27
+ {
28
+ "namespace": "pnpm",
29
+ "resource": "_",
30
+ "action": "_",
31
+ "description": "Passthrough command to execute any pnpm CLI command",
32
+ "adapter": "process",
33
+ "adapterConfig": {
34
+ "command": "pnpm",
35
+ "passthrough": true,
36
+ "parseJson": true,
37
+ "missingDependencyHelp": "Please install pnpm to use this command."
38
+ },
39
+ "args": []
40
+ }
41
+ ]
42
+ }
@@ -0,0 +1,46 @@
1
+ # Poetry Plugin Harness
2
+
3
+ This plugin integrates the Poetry CLI into dcli with one wrapped core command and full namespace passthrough.
4
+
5
+ ## Prerequisites
6
+
7
+ Ensure Poetry is available on your machine:
8
+
9
+ ```bash
10
+ poetry --version
11
+ ```
12
+
13
+ If you plan to publish or access private repositories, configure Poetry first:
14
+
15
+ ```bash
16
+ poetry config --list
17
+ ```
18
+
19
+ ## Available Commands
20
+
21
+ ### CLI Version (Wrapped)
22
+
23
+ Returns the Poetry CLI version via `poetry --version`.
24
+
25
+ ```bash
26
+ dcli poetry cli version --json
27
+ ```
28
+
29
+ ### Full Passthrough
30
+
31
+ You can run any Poetry command through the `poetry` namespace.
32
+
33
+ ```bash
34
+ # Show global Poetry information
35
+ dcli poetry about
36
+
37
+ # Show installed self plugins as JSON
38
+ dcli poetry self show --format json
39
+
40
+ # Show CLI help
41
+ dcli poetry --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": "poetry",
3
+ "version": "0.1.0",
4
+ "description": "Poetry CLI plugin for dcli",
5
+ "source": "https://python-poetry.org/docs/cli/",
6
+ "checks": [
7
+ {
8
+ "type": "binary",
9
+ "name": "poetry"
10
+ }
11
+ ],
12
+ "commands": [
13
+ {
14
+ "namespace": "poetry",
15
+ "resource": "cli",
16
+ "action": "version",
17
+ "description": "Show Poetry CLI version",
18
+ "adapter": "process",
19
+ "adapterConfig": {
20
+ "command": "poetry",
21
+ "baseArgs": ["--version"],
22
+ "parseJson": false,
23
+ "missingDependencyHelp": "Please install Poetry to use this command."
24
+ },
25
+ "args": []
26
+ },
27
+ {
28
+ "namespace": "poetry",
29
+ "resource": "_",
30
+ "action": "_",
31
+ "description": "Passthrough command to execute any Poetry CLI command",
32
+ "adapter": "process",
33
+ "adapterConfig": {
34
+ "command": "poetry",
35
+ "passthrough": true,
36
+ "parseJson": true,
37
+ "missingDependencyHelp": "Please install Poetry to use this command."
38
+ },
39
+ "args": []
40
+ }
41
+ ]
42
+ }
@@ -0,0 +1,46 @@
1
+ # Pulumi Plugin Harness
2
+
3
+ This plugin integrates the Pulumi CLI into dcli with one wrapped core command and full namespace passthrough.
4
+
5
+ ## Prerequisites
6
+
7
+ Install Pulumi with your preferred package manager, then verify it is available:
8
+
9
+ ```bash
10
+ pulumi version
11
+ ```
12
+
13
+ Authenticate before running stack or cloud-backed operations:
14
+
15
+ ```bash
16
+ pulumi login
17
+ ```
18
+
19
+ ## Available Commands
20
+
21
+ ### CLI Version (Wrapped)
22
+
23
+ Returns the Pulumi CLI version via `pulumi version`.
24
+
25
+ ```bash
26
+ dcli pulumi cli version --json
27
+ ```
28
+
29
+ ### Full Passthrough
30
+
31
+ You can run any Pulumi CLI command through the `pulumi` namespace.
32
+
33
+ ```bash
34
+ # List stacks as JSON
35
+ dcli pulumi stack ls --json
36
+
37
+ # Show current user
38
+ dcli pulumi whoami
39
+
40
+ # Show CLI help
41
+ dcli pulumi --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.