CLI-Anythingとは:エージェント用CLIの生成と、CLI-Hubの送信と導入
この記事で分かること
- CLI-AnythingはClaude Codeなどのプラグインで、ソフトのソースコードから、JSONで結果を返すPythonのCLIと使い方のSKILL.mdをAIエージェントに生成させる。描画や書き出しは本物のソフトに任せる
- 既製のCLIはCLI-Hubで配られ、リポジトリの一覧には79個あり、そのうち73個はGitHubのリポジトリから版を固定せずにインストールされる
- CLI-Hubは既定で、実行したコマンド名やエージェントから呼ばれたかの判定を、端末ごとのIDを付けてPostHogに送り、環境変数CLI_HUB_NO_ANALYTICS=1で止められる
GitHub Trendingに、HKUDS/CLI-Anythingが上がっていました。「あらゆるソフトをAIエージェントが扱える形にする」という触れ込みで、GIMPやBlender、LibreOfficeをエージェントにコマンドで操作させるためのCLIを作ります。画面を撮って座標をクリックするGUIエージェントとは逆の発想です。何を生成するのか、入れると手元で何が動くのかを、リポジトリのコードから確かめました。

CLI-Anythingとは
最初のコミットは2026年3月8日で、ライセンスはApache 2.0です。OSS Insightの集計では、公開から23日の3月31日時点でスターが25,219ありました。6月には作者らが技術報告をarXivに出しています。
報告によると、スクリーンショットから要素を探してクリックする方法は、画面の変更や表示の待ち時間で壊れやすいそうです。AIエージェントには人間向けの画面を読ませず、コマンドで操作させ、状態と結果を決まった形で返すほうがよい、というのが報告の主張です。
使い方は2つです。既製のCLIはパッケージマネージャー「CLI-Hub」で探して入れます。まだないソフトはClaude CodeやCodexなどにプラグインを入れ、そのソフトのソースコードからCLIを生成させます。
生成されるCLIの中身
手順書のHARNESS.mdは、ソースコードの分析からPyPI向けのパッケージ化までを7段階に分けています。途中にはテストの計画、実装、結果の記録があり、エージェント向けの使い方を書いたSKILL.mdも6段階目のあとに生成させます。Claude Codeでの始め方は、マーケットプレイスを足してプラグインを入れ、/cli-anything <ソースのパスかGitHubのURL>を実行する手順です。コマンドの説明によると、ソフトの名前だけでは受け付けず、ソースコードが必要です。
/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything
/cli-anything ./gimp
生成物はPythonのClickで書いたcli-anything-<ソフト名>というコマンドです。引数なしで起動すると対話のREPLになり、サブコマンドで1回ずつ実行することもできます。全てのコマンドに--jsonが付くので、エージェントは結果をJSONで受け取れます。
HARNESS.mdが「交渉の余地がない」とする規則で一番大きいのは、描画や書き出しを本物のソフトに任せることです。CLIはODFやSVG、MLTのXMLといったソフトの形式のファイルを直接組み立て、PDFや画像への書き出しは本物のソフトを呼びます。例えばLibreOfficeのCLIは、文書をODFとして作り、libreoffice --headless --convert-toでPDFやDOCXに変えています。ソフトが入っていなければ、代わりのライブラリで済ませずにエラーで止める決まりで、テストも本物のソフトがないと失敗します。GIMPのCLIを使うには、GIMPそのもののインストールが要るということです。
書き出しの確認にも決まりがあり、終了コードが0でも成功とみなしません。PDFなら先頭のバイト、動画なら特定のフレームの明るさ、音声なら始めと終わりの音量まで調べるよう求めています。HARNESS.mdは理由として、エージェントが自分で誤りを直すには、はっきりしたエラーが要ると書いています。
READMEの「制限」の節は、CLIの生成にはClaude Opus 4.6やGPT-5.4のような最上位のモデルが要り、小さいモデルでは不完全なCLIになりやすいと書いています。ソースコードがなく、実行ファイルしかないソフトでは質が大きく落ちること、1回の生成で全機能を覆えず、/cli-anything:refineでの追加を繰り返す前提であることも書かれています。
CLI-Hubで配られているCLI
既製のCLIはPyPIのcli-anything-hub(10月18日時点で0.4.1)で入れるcli-hubコマンドから探します。cli-hub search imageで探し、cli-hub install gimpで入れる形です。エージェントに探させるためのcli-hub-meta-skillというスキルもあります。
リポジトリのregistry.jsonには、CLI-Anythingの方式で作ったCLIが79個載っています。分類ではAIが8個で最も多く、DevOps、Web、動画、グラフィックス(GPUのデバッグや3Dの解析)が6個ずつです。GIMPやBlenderのような制作ソフトのほか、ZoomやJumpServerのようにWebのAPIを包むもの、Slay the Spire IIのようなゲームもあります。別のpublic_registry.jsonには、Lark(Feishu)の公式CLIなど、ほかの開発元のCLIが24個あり、11個はnpmで入れる形です。
READMEのテスト結果の表には、30個のCLIで合計2,464件のテストが通ったとあります。数字は開発元の自己申告で、CLIごとの件数は10件から208件まで開きがあります。
CLI-Hubが送る情報とインストールの仕組み
CLI-HubのREADMEは、利用状況の匿名のイベントを送ると書いています。コードを読むと、送り先は既定でPostHogで、cli-hubを実行するたびに次の情報が送られます。
- 実行したサブコマンドの名前と、OSの種類
- エージェントから呼ばれたかの判定。
CLAUDE_CODEやCODEXなどの環境変数と、親プロセスの名前(claude、codex、cursorなど)、標準入力が端末かどうかから推し量る。CIやスクリプトから呼ぶと、エージェント扱いになる - 初回に作り、
~/.cli-hub/に保存する端末ごとのランダムなID install、uninstall、launchのときは対象のCLIの名前。cli-hub canなどの検索では、入力した検索語の先頭120字
個人のファイルの中身は送りませんが、同じIDで使い方が積み重なります。送信は環境変数CLI_HUB_NO_ANALYTICS=1で止められるので、会社の端末やCIでは先に設定しておいたほうがよさそうです。
インストールの仕組みにも、見ておきたい点があります。registry.jsonの79個のうち66個は、pip install git+https://github.com/HKUDS/CLI-Anything.git#subdirectory=...の形で、このリポジトリのmainブランチから直接インストールされます。ほかの7個も、別の作者のGitHubのリポジトリから同じ形で入ります。どちらも版を固定しないので、同じcli-hub installでも、実行した日によって入るコードが変わります。一覧そのものはhkuds.github.ioから取っていて、手元の控えは1時間で古いとみなされます。installer.pyは、一覧のインストールコマンドに|や&&があればシェル経由で実行し、そのコメントには「コマンドは信頼できる一覧から来る」とあります。一覧が書き換えられれば、手元でそのコマンドが動く作りです。業務の端末ではcli-hubを通さず、必要なCLIだけをコミットを指定してpip installするほうが、何が入ったかを後から追えそうです。
エージェントが自分でコマンドを組み立てる点は、開発元も危険として扱っています。SECURITY.mdは、人が1行ずつ確かめない前提で、プロンプトインジェクションを受けたエージェントが細工した引数をソフトに渡す筋書きを挙げています。対策として、subprocessでshell=Trueを使わない、コーデック名を許可リストで確かめる、出力先のパスを正規化する、といった決まりをCLIの作り手に課しています。CLIはコミュニティのPull Requestで増えているので、使うCLIがこの決まりを守っているかは、入れる前にコードで確かめたほうがよさそうです。
関連する記事
エージェントに手順を渡すスキルの例は、Googleのスキル集の記事に書きました。CLI-Anythingは、スキルのSKILL.mdに加えて、ソフトを操作するコマンドそのものを配る点が違います。エージェントにとっての使いやすさの測り方は、Agent Experienceの記事で扱っています。


