superacli 1.0.1 → 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.
- package/.beads/.br_history/issues.20260308_200823_636718328.jsonl +20 -0
- package/.beads/.br_history/issues.20260308_200823_636718328.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_200827_033159453.jsonl +21 -0
- package/.beads/.br_history/issues.20260308_200827_033159453.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_200829_595900053.jsonl +22 -0
- package/.beads/.br_history/issues.20260308_200829_595900053.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_200834_079930100.jsonl +23 -0
- package/.beads/.br_history/issues.20260308_200834_079930100.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_200858_370924996.jsonl +24 -0
- package/.beads/.br_history/issues.20260308_200858_370924996.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_201031_019730855.jsonl +24 -0
- package/.beads/.br_history/issues.20260308_201031_019730855.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_201031_578974884.jsonl +24 -0
- package/.beads/.br_history/issues.20260308_201031_578974884.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_201054_780345548.jsonl +24 -0
- package/.beads/.br_history/issues.20260308_201054_780345548.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_201054_896980019.jsonl +24 -0
- package/.beads/.br_history/issues.20260308_201054_896980019.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_201128_599819688.jsonl +24 -0
- package/.beads/.br_history/issues.20260308_201128_599819688.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_201128_710221699.jsonl +24 -0
- package/.beads/.br_history/issues.20260308_201128_710221699.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_201204_745649213.jsonl +24 -0
- package/.beads/.br_history/issues.20260308_201204_745649213.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_201338_908436144.jsonl +24 -0
- package/.beads/.br_history/issues.20260308_201338_908436144.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_201344_734860714.jsonl +25 -0
- package/.beads/.br_history/issues.20260308_201344_734860714.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_201630_819282295.jsonl +25 -0
- package/.beads/.br_history/issues.20260308_201630_819282295.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_203538_054279699.jsonl +25 -0
- package/.beads/.br_history/issues.20260308_203538_054279699.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_203547_597113070.jsonl +26 -0
- package/.beads/.br_history/issues.20260308_203547_597113070.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_203547_775139216.jsonl +27 -0
- package/.beads/.br_history/issues.20260308_203547_775139216.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_203547_950724773.jsonl +28 -0
- package/.beads/.br_history/issues.20260308_203547_950724773.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_203548_107684523.jsonl +29 -0
- package/.beads/.br_history/issues.20260308_203548_107684523.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_203548_310389993.jsonl +30 -0
- package/.beads/.br_history/issues.20260308_203548_310389993.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_203825_953337320.jsonl +31 -0
- package/.beads/.br_history/issues.20260308_203825_953337320.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_204056_071377736.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_204056_071377736.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205141_517616844.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205141_517616844.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205141_648994024.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205141_648994024.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205141_867598036.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205141_867598036.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205142_094157355.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205142_094157355.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205142_327315677.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205142_327315677.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205142_545563822.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205142_545563822.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205213_061989333.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205213_061989333.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205213_181103364.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205213_181103364.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205213_408872234.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205213_408872234.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205213_616681652.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205213_616681652.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205213_821507069.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205213_821507069.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205214_026661112.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205214_026661112.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205454_955250554.jsonl +32 -0
- package/.beads/.br_history/issues.20260308_205454_955250554.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205556_337800392.jsonl +33 -0
- package/.beads/.br_history/issues.20260308_205556_337800392.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_205824_274686694.jsonl +33 -0
- package/.beads/.br_history/issues.20260308_205824_274686694.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_210240_583768328.jsonl +34 -0
- package/.beads/.br_history/issues.20260308_210240_583768328.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212223_641541494.jsonl +34 -0
- package/.beads/.br_history/issues.20260308_212223_641541494.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212227_735550996.jsonl +35 -0
- package/.beads/.br_history/issues.20260308_212227_735550996.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212232_547298548.jsonl +36 -0
- package/.beads/.br_history/issues.20260308_212232_547298548.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212528_843628125.jsonl +37 -0
- package/.beads/.br_history/issues.20260308_212528_843628125.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212529_094530502.jsonl +38 -0
- package/.beads/.br_history/issues.20260308_212529_094530502.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212529_331000853.jsonl +39 -0
- package/.beads/.br_history/issues.20260308_212529_331000853.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212529_587925652.jsonl +40 -0
- package/.beads/.br_history/issues.20260308_212529_587925652.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212804_927764103.jsonl +41 -0
- package/.beads/.br_history/issues.20260308_212804_927764103.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212805_153673453.jsonl +42 -0
- package/.beads/.br_history/issues.20260308_212805_153673453.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212805_415982363.jsonl +43 -0
- package/.beads/.br_history/issues.20260308_212805_415982363.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212805_657497741.jsonl +44 -0
- package/.beads/.br_history/issues.20260308_212805_657497741.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212805_952838724.jsonl +45 -0
- package/.beads/.br_history/issues.20260308_212805_952838724.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212806_325433779.jsonl +46 -0
- package/.beads/.br_history/issues.20260308_212806_325433779.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212806_584685598.jsonl +47 -0
- package/.beads/.br_history/issues.20260308_212806_584685598.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212806_827817208.jsonl +48 -0
- package/.beads/.br_history/issues.20260308_212806_827817208.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212807_111320451.jsonl +49 -0
- package/.beads/.br_history/issues.20260308_212807_111320451.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212807_409545536.jsonl +50 -0
- package/.beads/.br_history/issues.20260308_212807_409545536.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212807_625063294.jsonl +51 -0
- package/.beads/.br_history/issues.20260308_212807_625063294.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212807_843906551.jsonl +52 -0
- package/.beads/.br_history/issues.20260308_212807_843906551.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212808_100304073.jsonl +53 -0
- package/.beads/.br_history/issues.20260308_212808_100304073.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212808_324723976.jsonl +54 -0
- package/.beads/.br_history/issues.20260308_212808_324723976.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212808_557513104.jsonl +55 -0
- package/.beads/.br_history/issues.20260308_212808_557513104.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_212808_788048322.jsonl +56 -0
- package/.beads/.br_history/issues.20260308_212808_788048322.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_213702_613249728.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_213702_613249728.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_213715_115792063.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_213715_115792063.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_213715_462220666.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_213715_462220666.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_213727_191258923.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_213727_191258923.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_213727_684383652.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_213727_684383652.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_213735_751882991.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_213735_751882991.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_222052_279844960.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_222052_279844960.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_222056_873282114.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_222056_873282114.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_222103_402410761.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_222103_402410761.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_235202_180577215.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235202_180577215.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_235202_387414163.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235202_387414163.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_235202_564422794.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235202_564422794.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_235202_742600597.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235202_742600597.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_235208_133360069.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235208_133360069.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_235505_473406307.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235505_473406307.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_235505_662360489.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235505_662360489.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_235505_843935624.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235505_843935624.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260308_235506_044530221.jsonl +57 -0
- package/.beads/.br_history/issues.20260308_235506_044530221.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_002618_115728731.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_002618_115728731.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_003748_878174586.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_003748_878174586.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_004057_868755623.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_004057_868755623.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_004058_512842163.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_004058_512842163.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_004058_994445226.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_004058_994445226.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_004059_475988596.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_004059_475988596.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_161902_566857851.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_161902_566857851.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_170512_277017739.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_170512_277017739.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_170512_477876921.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_170512_477876921.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_170512_664382701.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_170512_664382701.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_170512_859400333.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_170512_859400333.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_212326_082771164.jsonl +57 -0
- package/.beads/.br_history/issues.20260309_212326_082771164.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_212326_245619716.jsonl +58 -0
- package/.beads/.br_history/issues.20260309_212326_245619716.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_212326_403198317.jsonl +59 -0
- package/.beads/.br_history/issues.20260309_212326_403198317.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_212332_539197678.jsonl +60 -0
- package/.beads/.br_history/issues.20260309_212332_539197678.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_212332_731373599.jsonl +60 -0
- package/.beads/.br_history/issues.20260309_212332_731373599.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_212332_928710953.jsonl +60 -0
- package/.beads/.br_history/issues.20260309_212332_928710953.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_213021_341505240.jsonl +60 -0
- package/.beads/.br_history/issues.20260309_213021_341505240.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_213022_023136934.jsonl +60 -0
- package/.beads/.br_history/issues.20260309_213022_023136934.jsonl.meta.json +1 -0
- package/.beads/.br_history/issues.20260309_213022_400050719.jsonl +60 -0
- package/.beads/.br_history/issues.20260309_213022_400050719.jsonl.meta.json +1 -0
- package/.beads/config.yaml +4 -0
- package/.beads/issues.jsonl +60 -0
- package/.beads/metadata.json +4 -0
- package/README.md +226 -43
- package/__tests__/adapter-schema.test.js +119 -0
- package/__tests__/ask.test.js +327 -0
- package/__tests__/aws-plugin.test.js +84 -0
- package/__tests__/az-plugin.test.js +84 -0
- package/__tests__/builtin-adapter.test.js +29 -0
- package/__tests__/cline-plugin.test.js +109 -0
- package/__tests__/cline-skill.test.js +49 -0
- package/__tests__/config.test.js +297 -0
- package/__tests__/docker-plugin.test.js +95 -0
- package/__tests__/executor.test.js +303 -0
- package/__tests__/eza-plugin.test.js +81 -0
- package/__tests__/gcloud-plugin.test.js +86 -0
- package/__tests__/gh-plugin.test.js +86 -0
- package/__tests__/helm-plugin.test.js +81 -0
- package/__tests__/help-json.test.js +19 -0
- package/__tests__/http-adapter.test.js +118 -0
- package/__tests__/just-plugin.test.js +82 -0
- package/__tests__/kubectl-plugin.test.js +83 -0
- package/__tests__/linear-plugin.test.js +81 -0
- package/__tests__/mcp-adapter.test.js +187 -0
- package/__tests__/mcp-local.test.js +105 -0
- package/__tests__/namespace-passthrough.test.js +69 -0
- package/__tests__/nextest-plugin.test.js +82 -0
- package/__tests__/npm-plugin.test.js +81 -0
- package/__tests__/nullclaw-plugin.test.js +157 -0
- package/__tests__/openapi-adapter.test.js +199 -0
- package/__tests__/plan-runtime.test.js +43 -0
- package/__tests__/planner.test.js +47 -0
- package/__tests__/plugin-agency-agents.test.js +62 -0
- package/__tests__/plugin-nullclaw.test.js +78 -0
- package/__tests__/plugin-visual-explainer.test.js +62 -0
- package/__tests__/plugins-command.test.js +220 -0
- package/__tests__/plugins-manager.test.js +353 -0
- package/__tests__/plugins-registry.test.js +114 -0
- package/__tests__/plugins-store.test.js +115 -0
- package/__tests__/pnpm-plugin.test.js +81 -0
- package/__tests__/poetry-plugin.test.js +83 -0
- package/__tests__/process-adapter.test.js +143 -0
- package/__tests__/pulumi-plugin.test.js +81 -0
- package/__tests__/railway-plugin.test.js +84 -0
- package/__tests__/server-app.test.js +67 -0
- package/__tests__/server-config-service.test.js +79 -0
- package/__tests__/server-routes-ask.test.js +89 -0
- package/__tests__/server-routes-commands.test.js +55 -0
- package/__tests__/server-routes-config.test.js +87 -0
- package/__tests__/server-routes-jobs.test.js +53 -0
- package/__tests__/server-routes-misc.test.js +112 -0
- package/__tests__/server-storage-adapter.test.js +40 -0
- package/__tests__/server-storage-file.test.js +73 -0
- package/__tests__/server-storage-mongo.test.js +74 -0
- package/__tests__/shell-adapter.test.js +90 -0
- package/__tests__/skills-catalog.test.js +98 -0
- package/__tests__/skills.test.js +442 -0
- package/__tests__/stripe-plugin.test.js +81 -0
- package/__tests__/supabase-plugin.test.js +86 -0
- package/__tests__/terraform-plugin.test.js +83 -0
- package/__tests__/uv-plugin.test.js +81 -0
- package/__tests__/vercel-plugin.test.js +81 -0
- package/__tests__/watchexec-plugin.test.js +80 -0
- package/cli/adapter-schema.js +108 -0
- package/cli/adapters/builtin.js +43 -0
- package/cli/adapters/process.js +262 -0
- package/cli/adapters/shell.js +82 -0
- package/cli/config.js +12 -9
- package/cli/executor.js +6 -1
- package/cli/help-json.js +3 -1
- package/cli/namespace-passthrough.js +38 -0
- package/cli/plugin-install-guidance.js +320 -0
- package/cli/plugins-command.js +138 -0
- package/cli/plugins-manager.js +552 -0
- package/cli/plugins-registry.js +80 -0
- package/cli/plugins-store.js +56 -0
- package/cli/skills-catalog.js +237 -0
- package/cli/skills.js +180 -6
- package/cli/supercli.js +150 -58
- package/docs/docs.html +224 -0
- package/docs/feature-gaps.md +16 -0
- package/docs/index.html +164 -0
- package/docs/plugin-examples.md +397 -0
- package/docs/plugin-harness-guide.md +452 -0
- package/docs/plugins.md +44 -0
- package/docs/skills/cline-non-interactive/SKILL.md +59 -0
- package/docs/skills-catalog.md +81 -0
- package/docs/supported-harnesses.md +277 -0
- package/docs/visual-overview.md +21 -0
- package/jest.config.js +25 -0
- package/package.json +9 -3
- package/plugins/agency-agents/plugin.json +15 -0
- package/plugins/agency-agents/scripts/post-install.js +122 -0
- package/plugins/aws/README.md +46 -0
- package/plugins/aws/plugin.json +42 -0
- package/plugins/az/README.md +46 -0
- package/plugins/az/plugin.json +42 -0
- package/plugins/beads/plugin.json +202 -0
- package/plugins/clickup/plugin.json +38 -0
- package/plugins/clickup/scripts/post-install.js +107 -0
- package/plugins/clickup/scripts/post-uninstall.js +30 -0
- package/plugins/cline/README.md +48 -0
- package/plugins/cline/plugin.json +92 -0
- package/plugins/commiat/plugin.json +36 -0
- package/plugins/docker/MANIFEST.md +39 -0
- package/plugins/docker/README.md +35 -0
- package/plugins/docker/examples/build-image.sh +7 -0
- package/plugins/docker/examples/inspect-container.sh +6 -0
- package/plugins/docker/examples/list-containers.sh +4 -0
- package/plugins/docker/examples/multi-step-workflow.sh +10 -0
- package/plugins/docker/examples/run-container.sh +7 -0
- package/plugins/docker/plugin.json +266 -0
- package/plugins/eza/README.md +40 -0
- package/plugins/eza/plugin.json +42 -0
- package/plugins/gcloud/README.md +46 -0
- package/plugins/gcloud/plugin.json +42 -0
- package/plugins/gh/README.md +46 -0
- package/plugins/gh/plugin.json +43 -0
- package/plugins/gwc/plugin.json +35 -0
- package/plugins/helm/README.md +42 -0
- package/plugins/helm/plugin.json +42 -0
- package/plugins/just/README.md +42 -0
- package/plugins/just/plugin.json +42 -0
- package/plugins/kubectl/README.md +46 -0
- package/plugins/kubectl/plugin.json +42 -0
- package/plugins/linear/README.md +60 -0
- package/plugins/linear/plugin.json +42 -0
- package/plugins/nextest/README.md +42 -0
- package/plugins/nextest/plugin.json +42 -0
- package/plugins/npm/README.md +46 -0
- package/plugins/npm/plugin.json +42 -0
- package/plugins/nullclaw/README.md +45 -0
- package/plugins/nullclaw/plugin.json +64 -0
- package/plugins/nullclaw/scripts/post-install.js +189 -0
- package/plugins/nullclaw/scripts/post-uninstall.js +25 -0
- package/plugins/openfang/plugin.json +37 -0
- package/plugins/openfang/scripts/post-install.js +163 -0
- package/plugins/openfang/scripts/post-uninstall.js +30 -0
- package/plugins/plugins.json +295 -0
- package/plugins/pnpm/README.md +46 -0
- package/plugins/pnpm/plugin.json +42 -0
- package/plugins/poetry/README.md +46 -0
- package/plugins/poetry/plugin.json +42 -0
- package/plugins/pulumi/README.md +46 -0
- package/plugins/pulumi/plugin.json +42 -0
- package/plugins/railway/README.md +58 -0
- package/plugins/railway/plugin.json +43 -0
- package/plugins/stripe/README.md +49 -0
- package/plugins/stripe/plugin.json +52 -0
- package/plugins/supabase/README.md +55 -0
- package/plugins/supabase/plugin.json +42 -0
- package/plugins/superpowers/plugin.json +22 -0
- package/plugins/superpowers/scripts/post-install.js +124 -0
- package/plugins/superpowers/scripts/post-uninstall.js +30 -0
- package/plugins/terraform/README.md +46 -0
- package/plugins/terraform/plugin.json +42 -0
- package/plugins/uv/README.md +46 -0
- package/plugins/uv/plugin.json +42 -0
- package/plugins/vercel/README.md +47 -0
- package/plugins/vercel/plugin.json +42 -0
- package/plugins/visual-explainer/plugin.json +15 -0
- package/plugins/visual-explainer/scripts/post-install.js +111 -0
- package/plugins/watchexec/README.md +40 -0
- package/plugins/watchexec/plugin.json +42 -0
- package/tests/test-aws-smoke.sh +56 -0
- package/tests/test-az-smoke.sh +56 -0
- package/tests/test-cli.js +116 -2
- package/tests/test-cline-smoke.sh +37 -0
- package/tests/test-eza-smoke.sh +33 -0
- package/tests/test-gcloud-smoke.sh +56 -0
- package/tests/test-gh-smoke.sh +56 -0
- package/tests/test-helm-smoke.sh +33 -0
- package/tests/test-just-smoke.sh +40 -0
- package/tests/test-kubectl-smoke.sh +37 -0
- package/tests/test-linear-smoke.sh +97 -0
- package/tests/test-nextest-smoke.sh +33 -0
- package/tests/test-npm-smoke.sh +32 -0
- package/tests/test-nullclaw-smoke.sh +51 -0
- package/tests/test-plugins-registry.js +212 -0
- package/tests/test-pnpm-smoke.sh +33 -0
- package/tests/test-poetry-smoke.sh +33 -0
- package/tests/test-pulumi-smoke.sh +33 -0
- package/tests/test-railway-smoke.sh +95 -0
- package/tests/test-stripe-smoke.sh +55 -0
- package/tests/test-supabase-smoke.sh +95 -0
- package/tests/test-terraform-smoke.sh +33 -0
- package/tests/test-uv-smoke.sh +33 -0
- package/tests/test-vercel-smoke.sh +55 -0
- package/tests/test-watchexec-smoke.sh +33 -0
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
# Plugin Harness Development Guide
|
|
2
|
+
|
|
3
|
+
Learn how to create plugin harnesses that turn any CLI into a dcli harness.
|
|
4
|
+
|
|
5
|
+
## What is a Plugin Harness?
|
|
6
|
+
|
|
7
|
+
A **plugin harness** bridges dcli to an external CLI tool. It allows dcli to:
|
|
8
|
+
- Discover and route commands to the external CLI
|
|
9
|
+
- Expose the CLI's functionality through dcli's unified interface
|
|
10
|
+
- Provide consistent output formatting and error handling
|
|
11
|
+
- Integrate AI-driven skill discovery across all harnesses
|
|
12
|
+
|
|
13
|
+
## Anatomy of a Plugin Harness
|
|
14
|
+
|
|
15
|
+
Every plugin harness consists of:
|
|
16
|
+
|
|
17
|
+
1. **plugin.json** — Manifest defining metadata and commands
|
|
18
|
+
2. **Optional**: Custom adapter code (for complex logic)
|
|
19
|
+
3. **Optional**: Documentation and examples
|
|
20
|
+
|
|
21
|
+
### Minimal Plugin Structure
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
my-plugin/
|
|
25
|
+
├── plugin.json # Required: manifest
|
|
26
|
+
├── README.md # Optional: plugin documentation
|
|
27
|
+
└── examples/ # Optional: example usage
|
|
28
|
+
└── example.sh
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## plugin.json Manifest
|
|
32
|
+
|
|
33
|
+
The `plugin.json` file is the core of your harness. It describes:
|
|
34
|
+
- Plugin metadata (name, version, description)
|
|
35
|
+
- External CLI requirements (binary checks)
|
|
36
|
+
- Available commands and their routing
|
|
37
|
+
|
|
38
|
+
### Manifest Structure
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"name": "my-cli-harness",
|
|
43
|
+
"version": "0.1.0",
|
|
44
|
+
"description": "Wrap my-cli with dcli integration",
|
|
45
|
+
"source": "https://github.com/user/my-cli",
|
|
46
|
+
"checks": [
|
|
47
|
+
{ "type": "binary", "name": "my-cli" }
|
|
48
|
+
],
|
|
49
|
+
"commands": [
|
|
50
|
+
{
|
|
51
|
+
"namespace": "my-cli",
|
|
52
|
+
"resource": "resource-name",
|
|
53
|
+
"action": "action-name",
|
|
54
|
+
"description": "What this command does",
|
|
55
|
+
"adapter": "process",
|
|
56
|
+
"adapterConfig": { ... },
|
|
57
|
+
"args": [ ... ]
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Plugin Metadata
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"name": "beads", // Unique plugin identifier
|
|
68
|
+
"version": "0.1.0", // Semantic versioning
|
|
69
|
+
"description": "...", // Short description
|
|
70
|
+
"source": "https://...", // Link to upstream CLI
|
|
71
|
+
"tags": ["task", "automation"], // Optional: discovery tags
|
|
72
|
+
"author": "Your Name" // Optional: plugin author
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Dependency Checks
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
"checks": [
|
|
80
|
+
{
|
|
81
|
+
"type": "binary",
|
|
82
|
+
"name": "br", // Binary name to check
|
|
83
|
+
"version": ">=1.0.0" // Optional: minimum version
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Command Definitions
|
|
89
|
+
|
|
90
|
+
Each command maps dcli routing to CLI execution.
|
|
91
|
+
|
|
92
|
+
### Wrapped Commands (Selective Routing)
|
|
93
|
+
|
|
94
|
+
Use for CLIs where you want to expose specific commands:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"namespace": "beads",
|
|
99
|
+
"resource": "issue",
|
|
100
|
+
"action": "create",
|
|
101
|
+
"description": "Create a beads issue",
|
|
102
|
+
"adapter": "process",
|
|
103
|
+
"adapterConfig": {
|
|
104
|
+
"command": "br", // Binary to execute
|
|
105
|
+
"baseArgs": ["create"], // Base command arguments
|
|
106
|
+
"positionalArgs": ["title"],// Map dcli args to CLI positional args
|
|
107
|
+
"jsonFlag": "--json", // Flag for JSON output
|
|
108
|
+
"parseJson": true, // Parse CLI output as JSON
|
|
109
|
+
"timeout_ms": 5000, // Execution timeout
|
|
110
|
+
"missingDependencyHelp": "Run: supercli beads install steps"
|
|
111
|
+
},
|
|
112
|
+
"args": [
|
|
113
|
+
{
|
|
114
|
+
"name": "title",
|
|
115
|
+
"type": "string",
|
|
116
|
+
"required": true,
|
|
117
|
+
"description": "Issue title"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"name": "priority",
|
|
121
|
+
"type": "integer",
|
|
122
|
+
"required": false,
|
|
123
|
+
"description": "Priority level (0-4)"
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Passthrough Commands (Full CLI Access)
|
|
130
|
+
|
|
131
|
+
Use for CLIs where you want full access to all functionality:
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"namespace": "gwc",
|
|
136
|
+
"resource": "_", // Wildcard namespace/resource
|
|
137
|
+
"action": "_", // Wildcard action
|
|
138
|
+
"description": "Passthrough to gws CLI",
|
|
139
|
+
"adapter": "process",
|
|
140
|
+
"adapterConfig": {
|
|
141
|
+
"command": "gws", // Binary to execute
|
|
142
|
+
"passthrough": true, // Enable full passthrough mode
|
|
143
|
+
"parseJson": true, // Parse CLI output
|
|
144
|
+
"timeout_ms": 15000, // Longer timeout for complex operations
|
|
145
|
+
"missingDependencyHelp": "Run: supercli gwc install steps"
|
|
146
|
+
},
|
|
147
|
+
"args": [] // No mapped args (passthrough)
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Adapter Configuration
|
|
152
|
+
|
|
153
|
+
### process Adapter
|
|
154
|
+
|
|
155
|
+
The most common adapter. Executes an external CLI binary.
|
|
156
|
+
|
|
157
|
+
**Configuration Options**:
|
|
158
|
+
|
|
159
|
+
| Key | Type | Description |
|
|
160
|
+
|-----|------|-------------|
|
|
161
|
+
| `command` | string | Binary name to execute (must be in PATH) |
|
|
162
|
+
| `baseArgs` | string[] | Default arguments (e.g., `["create"]`) |
|
|
163
|
+
| `positionalArgs` | string[] | Map dcli args to CLI positional args |
|
|
164
|
+
| `optionalArgs` | object | Map dcli flag args to CLI flags |
|
|
165
|
+
| `jsonFlag` | string | Flag for JSON output (e.g., `--json`) |
|
|
166
|
+
| `parseJson` | boolean | Parse CLI output as JSON (default: false) |
|
|
167
|
+
| `passthrough` | boolean | Pass all args directly to CLI (default: false) |
|
|
168
|
+
| `timeout_ms` | number | Execution timeout in milliseconds |
|
|
169
|
+
| `missingDependencyHelp` | string | Message if binary not found |
|
|
170
|
+
|
|
171
|
+
### builtin Adapter
|
|
172
|
+
|
|
173
|
+
For dcli-specific functionality (e.g., showing installation steps).
|
|
174
|
+
|
|
175
|
+
```json
|
|
176
|
+
{
|
|
177
|
+
"adapter": "builtin",
|
|
178
|
+
"adapterConfig": {
|
|
179
|
+
"builtin": "beads_install_steps" // Builtin handler key
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Argument Mapping
|
|
185
|
+
|
|
186
|
+
### Positional Arguments
|
|
187
|
+
|
|
188
|
+
```json
|
|
189
|
+
"adapterConfig": {
|
|
190
|
+
"command": "my-cli",
|
|
191
|
+
"baseArgs": ["cmd"],
|
|
192
|
+
"positionalArgs": ["name", "email"] // First arg -> name, second -> email
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Usage:
|
|
197
|
+
```bash
|
|
198
|
+
supercli my-cli resource action myname myemail@example.com
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Maps to: `my-cli cmd myname myemail@example.com`
|
|
202
|
+
|
|
203
|
+
### Optional Arguments (Flags)
|
|
204
|
+
|
|
205
|
+
```json
|
|
206
|
+
"adapterConfig": {
|
|
207
|
+
"command": "my-cli",
|
|
208
|
+
"baseArgs": ["cmd"],
|
|
209
|
+
"optionalArgs": {
|
|
210
|
+
"priority": "--priority", // dcli --priority maps to --priority
|
|
211
|
+
"json": "--json" // dcli --json maps to --json
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Usage:
|
|
217
|
+
```bash
|
|
218
|
+
supercli my-cli resource action --priority high --json
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Maps to: `my-cli cmd --priority high --json`
|
|
222
|
+
|
|
223
|
+
## Real-World Examples
|
|
224
|
+
|
|
225
|
+
### Example 1: beads Plugin (Wrapped Commands)
|
|
226
|
+
|
|
227
|
+
```json
|
|
228
|
+
{
|
|
229
|
+
"name": "beads",
|
|
230
|
+
"version": "0.1.0",
|
|
231
|
+
"description": "Wrap beads_rust (br) issue tracking commands",
|
|
232
|
+
"source": "https://github.com/Dicklesworthstone/beads_rust",
|
|
233
|
+
"checks": [
|
|
234
|
+
{ "type": "binary", "name": "br" }
|
|
235
|
+
],
|
|
236
|
+
"commands": [
|
|
237
|
+
{
|
|
238
|
+
"namespace": "beads",
|
|
239
|
+
"resource": "issue",
|
|
240
|
+
"action": "create",
|
|
241
|
+
"description": "Create a beads issue",
|
|
242
|
+
"adapter": "process",
|
|
243
|
+
"adapterConfig": {
|
|
244
|
+
"command": "br",
|
|
245
|
+
"baseArgs": ["create"],
|
|
246
|
+
"positionalArgs": ["title"],
|
|
247
|
+
"jsonFlag": "--json",
|
|
248
|
+
"parseJson": true,
|
|
249
|
+
"missingDependencyHelp": "Run: supercli beads install steps"
|
|
250
|
+
},
|
|
251
|
+
"args": [
|
|
252
|
+
{ "name": "title", "type": "string", "required": true },
|
|
253
|
+
{ "name": "priority", "type": "integer", "required": false }
|
|
254
|
+
]
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"namespace": "beads",
|
|
258
|
+
"resource": "issue",
|
|
259
|
+
"action": "list",
|
|
260
|
+
"description": "List beads issues",
|
|
261
|
+
"adapter": "process",
|
|
262
|
+
"adapterConfig": {
|
|
263
|
+
"command": "br",
|
|
264
|
+
"baseArgs": ["list"],
|
|
265
|
+
"jsonFlag": "--json",
|
|
266
|
+
"parseJson": true,
|
|
267
|
+
"missingDependencyHelp": "Run: supercli beads install steps"
|
|
268
|
+
},
|
|
269
|
+
"args": [
|
|
270
|
+
{ "name": "status", "type": "string", "required": false },
|
|
271
|
+
{ "name": "priority", "type": "string", "required": false }
|
|
272
|
+
]
|
|
273
|
+
}
|
|
274
|
+
]
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Example 2: gwc Plugin (Passthrough)
|
|
279
|
+
|
|
280
|
+
```json
|
|
281
|
+
{
|
|
282
|
+
"name": "gwc",
|
|
283
|
+
"version": "0.1.0",
|
|
284
|
+
"description": "Wrap Google Workspace CLI (gws) with passthrough support",
|
|
285
|
+
"source": "https://github.com/googleworkspace/cli",
|
|
286
|
+
"checks": [
|
|
287
|
+
{ "type": "binary", "name": "gws" }
|
|
288
|
+
],
|
|
289
|
+
"commands": [
|
|
290
|
+
{
|
|
291
|
+
"namespace": "gwc",
|
|
292
|
+
"resource": "_",
|
|
293
|
+
"action": "_",
|
|
294
|
+
"description": "Passthrough to gws CLI",
|
|
295
|
+
"adapter": "process",
|
|
296
|
+
"adapterConfig": {
|
|
297
|
+
"command": "gws",
|
|
298
|
+
"passthrough": true,
|
|
299
|
+
"parseJson": true,
|
|
300
|
+
"timeout_ms": 15000,
|
|
301
|
+
"missingDependencyHelp": "Run: supercli gwc install steps"
|
|
302
|
+
},
|
|
303
|
+
"args": []
|
|
304
|
+
}
|
|
305
|
+
]
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## Testing Your Plugin
|
|
310
|
+
|
|
311
|
+
### Local Installation
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
# Install from local directory
|
|
315
|
+
supercli plugins install ./path/to/my-plugin
|
|
316
|
+
|
|
317
|
+
# Test a command
|
|
318
|
+
supercli my-plugin resource action --arg value
|
|
319
|
+
|
|
320
|
+
# Show plugin info
|
|
321
|
+
supercli plugins show my-plugin
|
|
322
|
+
|
|
323
|
+
# Check plugin health
|
|
324
|
+
supercli plugins doctor my-plugin
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Validation
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
# Check syntax of plugin.json
|
|
331
|
+
cat plugins/my-plugin/plugin.json | jq .
|
|
332
|
+
|
|
333
|
+
# Verify binary detection
|
|
334
|
+
which my-cli
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### Debugging
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
# Verbose output
|
|
341
|
+
supercli my-plugin resource action --verbose
|
|
342
|
+
|
|
343
|
+
# See command details
|
|
344
|
+
supercli inspect my-plugin resource action
|
|
345
|
+
|
|
346
|
+
# Show generated command before execution
|
|
347
|
+
supercli plan my-plugin resource action --args
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## Publishing Your Plugin
|
|
351
|
+
|
|
352
|
+
Once your plugin is tested and working:
|
|
353
|
+
|
|
354
|
+
1. **Create a GitHub repository** with your plugin code
|
|
355
|
+
2. **Structure it properly**:
|
|
356
|
+
```
|
|
357
|
+
my-plugin-harness/
|
|
358
|
+
├── plugin.json
|
|
359
|
+
├── README.md
|
|
360
|
+
├── LICENSE
|
|
361
|
+
└── examples/
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
3. **Publish to registry**:
|
|
365
|
+
```bash
|
|
366
|
+
supercli plugins publish ./my-plugin-harness
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
4. **Community members can install**:
|
|
370
|
+
```bash
|
|
371
|
+
supercli plugins install --git https://github.com/user/my-plugin-harness.git
|
|
372
|
+
# Or once in registry:
|
|
373
|
+
supercli plugins install my-plugin-harness
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
## Best Practices
|
|
377
|
+
|
|
378
|
+
### Plugin Design
|
|
379
|
+
|
|
380
|
+
- **Be selective with wrapped commands**: Only expose stable, frequently-used commands
|
|
381
|
+
- **Use passthrough for flexibility**: If the CLI is stable, passthrough is often better
|
|
382
|
+
- **Provide clear descriptions**: Help users understand what each command does
|
|
383
|
+
- **Include dependency checks**: Always verify the external CLI is installed
|
|
384
|
+
- **Set appropriate timeouts**: Long-running operations may need extended timeouts
|
|
385
|
+
|
|
386
|
+
### Output Handling
|
|
387
|
+
|
|
388
|
+
- **Prefer JSON output**: Use `jsonFlag` and `parseJson: true` for structured data
|
|
389
|
+
- **Document output schema**: Help users understand the response format
|
|
390
|
+
- **Handle errors gracefully**: Map CLI exit codes to dcli exit codes
|
|
391
|
+
- **Provide helpful error messages**: Use `missingDependencyHelp` to guide installation
|
|
392
|
+
|
|
393
|
+
### Argument Design
|
|
394
|
+
|
|
395
|
+
- **Keep argument names simple**: Use lowercase, hyphenated names
|
|
396
|
+
- **Document constraints**: Specify required vs. optional arguments
|
|
397
|
+
- **Type arguments correctly**: Use string, integer, boolean, etc.
|
|
398
|
+
- **Provide examples**: Show common usage patterns in docs
|
|
399
|
+
|
|
400
|
+
### Documentation
|
|
401
|
+
|
|
402
|
+
- **Write a clear README**: Explain what the plugin does and how to use it
|
|
403
|
+
- **Include examples**: Show real-world usage patterns
|
|
404
|
+
- **Link to upstream CLI**: Help users learn more about the tool
|
|
405
|
+
- **Add install instructions**: Make it easy to get started
|
|
406
|
+
|
|
407
|
+
## Troubleshooting
|
|
408
|
+
|
|
409
|
+
### Plugin Not Loading
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
# Check syntax
|
|
413
|
+
jq . plugin.json
|
|
414
|
+
|
|
415
|
+
# Verify binary is installed
|
|
416
|
+
which my-cli
|
|
417
|
+
|
|
418
|
+
# Check plugin directory
|
|
419
|
+
supercli plugins show my-plugin
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### Command Execution Failing
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
# Test the binary directly
|
|
426
|
+
my-cli cmd arg
|
|
427
|
+
|
|
428
|
+
# Run with verbose output
|
|
429
|
+
supercli my-plugin resource action --verbose
|
|
430
|
+
|
|
431
|
+
# Check timeout isn't too short
|
|
432
|
+
# Increase timeout_ms in adapterConfig
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
### Argument Mapping Issues
|
|
436
|
+
|
|
437
|
+
```bash
|
|
438
|
+
# See generated command plan
|
|
439
|
+
supercli plan my-plugin resource action --arg value
|
|
440
|
+
|
|
441
|
+
# Test arg parsing
|
|
442
|
+
supercli inspect my-plugin resource action
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
## Contributing to dcli
|
|
446
|
+
|
|
447
|
+
Have a plugin you'd like to share? Consider:
|
|
448
|
+
1. Creating a quality, well-documented plugin
|
|
449
|
+
2. Opening a discussion in the dcli community
|
|
450
|
+
3. Submitting your plugin for inclusion in the built-in registry
|
|
451
|
+
|
|
452
|
+
See [CONTRIBUTING.md](../CONTRIBUTING.md) for details.
|
package/docs/plugins.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Plugins
|
|
2
|
+
|
|
3
|
+
DCLI supports plugin discovery through the registry file at `plugins/plugins.json`.
|
|
4
|
+
|
|
5
|
+
Plugin owners can submit PRs that add or update metadata in this registry:
|
|
6
|
+
|
|
7
|
+
- `name`
|
|
8
|
+
- `description`
|
|
9
|
+
- `tags`
|
|
10
|
+
- `source` (`bundled` path or remote `git` repo + manifest path)
|
|
11
|
+
|
|
12
|
+
## Plugin Commands
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
dcli plugins list
|
|
16
|
+
dcli plugins explore
|
|
17
|
+
dcli plugins explore --name commiat
|
|
18
|
+
dcli plugins explore --tags git,ai
|
|
19
|
+
dcli plugins install <plugin-name>
|
|
20
|
+
dcli plugins install --git https://github.com/org/repo.git --manifest-path plugins/supercli/plugin.json --ref main
|
|
21
|
+
dcli plugins show <plugin-name>
|
|
22
|
+
dcli plugins doctor
|
|
23
|
+
dcli plugins doctor <plugin-name>
|
|
24
|
+
dcli plugins remove <plugin-name>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Install conflict policy:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
dcli plugins install <plugin-name> --on-conflict fail
|
|
31
|
+
dcli plugins install <plugin-name> --on-conflict skip
|
|
32
|
+
dcli plugins install <plugin-name> --on-conflict replace
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Default is `fail`.
|
|
36
|
+
|
|
37
|
+
## Notes
|
|
38
|
+
|
|
39
|
+
- `plugins list` shows installed plugins.
|
|
40
|
+
- `plugins explore` shows discoverable plugins from `plugins/plugins.json`.
|
|
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.
|
|
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
|
+
```
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Skills Catalog
|
|
2
|
+
|
|
3
|
+
SuperCLI can discover SKILL.md files from multiple local providers and expose them with stable `provider:id` identifiers.
|
|
4
|
+
|
|
5
|
+
## Provider Commands
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
supercli skills providers list --json
|
|
9
|
+
supercli skills providers add --name mykb --type local_fs --roots /path/to/skills
|
|
10
|
+
supercli skills providers show --name mykb --json
|
|
11
|
+
supercli skills providers remove --name mykb --json
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Build Local Catalog
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
supercli skills sync --json
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
This scans enabled provider roots for `SKILL.md` files and rebuilds the local index.
|
|
21
|
+
|
|
22
|
+
## Query Catalog Skills
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
supercli skills list --catalog --json
|
|
26
|
+
supercli skills search --query "planning" --json
|
|
27
|
+
supercli skills get opencode:plan-changes
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Notes
|
|
31
|
+
|
|
32
|
+
- IDs are always provider-qualified (`provider:id`) for future-proof disambiguation.
|
|
33
|
+
- Current provider types include `local_fs`, `repo_fs`, and `remote_static`.
|
|
34
|
+
- Existing command-skill flow remains available (`skills list`, `skills get <ns.res.act>`, `skills teach`).
|
|
35
|
+
|
|
36
|
+
## Remote Provider Example: agency-agents
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
supercli plugins install agency-agents --json
|
|
40
|
+
supercli skills list --catalog --provider agency-agents --json
|
|
41
|
+
supercli skills get agency-agents:engineering.engineering-frontend-developer
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`agency-agents` maps skills one-to-one to upstream `.md` files in
|
|
45
|
+
`msitarzewski/agency-agents`. If upstream paths change or files are removed,
|
|
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.
|