Claude Code全体の使い方は Claude Code完全ガイド2026:インストールから本番運用まで をご覧ください。

01 CLI-Anythingが解く「AIエージェント × プロ向けソフト」のギャップ

香港大学のデータサイエンスラボHKUDSが公開した CLI-Anything は、2026年5月時点でスター34.7k・フォーク3.4kを集めるOSSだ。プロジェクトのキャッチコピーは「Making ALL Software Agent-Native」。GIMP、Blender、LibreOffice、Audacityといったソースコード公開済みのプロ向けソフトを、AIエージェントが扱えるCLIへ自動変換する枠組みを提供する。

ここで解こうとしている問題は明確だ。Claude CodeやGitHub Copilot CLIなどのAIエージェントは、コードベース操作・シェルコマンド・WebAPIの呼び出しには長けている。しかしGIMPで画像合成をしたい、Blenderで3DレンダリングしたいといったGUI前提のソフトに踏み込むと、急に手段がなくなる。

選択肢は3つ。GUI自動化(座標クリックや画像認識)、各ソフト個別のAPI(Python拡張やJSONプロトコル)、そして簡略化されたOSS再実装だ。いずれも問題が大きい。GUI自動化は壊れやすく、APIは網羅性に欠ける。再実装は本物のレンダラーを失う。CLI-Anythingが目指すのは「本物のソフトウェアをそのまま、AIエージェント向けCLIで包む」という第4の道だ。

仕組みを単純化すると次のようになる。ユーザーがClaude Codeに/cli-anything ./gimpと命じると、CLI-Anythingは対象ソフトのソースコードを読み込み、7段階の自動分析・実装パイプラインを走らせる。最終的にcli-anything-gimpのような専用CLIコマンドがPATHに追加され、Claudeからcli-anything-gimp --json layers add ...のような構造化呼び出しができるようになる。

# Claude Codeに導入してGIMPをCLI化する最短コマンド
/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything
/cli-anything ./gimp

3行目を実行すると、ローカルにクローンしたGIMPリポジトリに対して分析→設計→実装→テスト計画→テスト記述→ドキュメント→公開の7フェーズが順に走る。完成するとpip install -e .でインストール可能なClickベースのPythonパッケージがagent-harness/配下に生成される。

このH2のポイント
  • HKUDSが公開したスター34.7kのOSSで、プロ向けソフトをAIエージェント対応CLIに自動変換する
  • GUI自動化や限定的APIに頼らず、本物のソフトを構造化CLIで包む第4の道を提案
  • Claude Codeプラグインとして配布され、3行のスラッシュコマンドで導入完了

02 7フェーズ自動生成パイプライン — ソースコードからCLIまでの内部構造

CLI-Anythingの中核はHARNESS.mdと呼ばれる方法論ドキュメントに集約されている。これはClaude Codeに対するSOP(標準作業手順書)であり、対象ソフトに対してどの順番で何を分析・実装するかを規定する。HKUDSの記述によれば、これは「The methodology SOP — single source of truth」と位置付けられている。

パイプラインの7フェーズは次の通り。

7フェーズの内訳
  • Phase 1 Analysis:対象リポジトリのソースをスキャンし、機能カテゴリと外部から触れるエンドポイントを洗い出す。
  • Phase 2 Design:洗い出した機能をCLIのコマンドツリーへマッピングする。グループ・サブコマンド・オプションを設計する。
  • Phase 3 Implementation:PythonのClickフレームワークでCLI本体を実装する。REPLモードとサブコマンドモードの両方を構築する。
  • Phase 4 Test Planning:TEST.mdを生成し、ユニット・E2E・サブプロセス検証の3層でテスト方針を定義する。
  • Phase 5 Test Writing:実際のテストコードをpytestで書く。本物のソフトを呼ぶE2Eテストも含む。
  • Phase 6 Documentation:生成されたCLIの使用例・JSON出力例・既知の制約をドキュメントに反映する。
  • Phase 7 Publishing:setup.pyとSKILL.mdを生成し、`pip install -e .`でPATHへ登録、エージェントが発見できる状態にする。

設計面で重要なのは、各フェーズの出力が次のフェーズの入力として明示的に消費される点だ。Phase 1で生成された分析メモを読まずにPhase 3で実装に飛ぶ、といった近道は許容されない。これによりClaudeが対象ソフトに対する理解を段階的に積み上げる構造が保たれる。

ソフトウェアごとの差異を吸収するためにHARNESS.mdが用意している抽象が「rendering gap」概念だ。GUIアプリケーションは多くの場合、画面上のエフェクトと最終出力(ファイルへのエクスポート)でレンダリング経路が異なる。フィルター適用、タイムコード精度、エクスポート時の色変換などが該当する。CLI-Anythingは「exit codeが0であってもファイル内容を検証する」という方針を徹底することで、見かけだけ成功するCLIを排除している。

graph LR ROOT["対象ソフト
(例: GIMP)"] --> P1["Phase 1
Analysis"] P1 --> P2["Phase 2
Design"] P2 --> P3["Phase 3
Implementation"] P3 --> P4["Phase 4
Test Plan"] P4 --> P5["Phase 5
Test Write"] P5 --> P6["Phase 6
Docs"] P6 --> P7["Phase 7
Publish"] P7 --> OUT["cli-anything-gimp
+ SKILL.md"]

エンジニアから見て新鮮なのは、このパイプラインの大部分がClaude Code自身によって自律的に駆動される点だ。CLI-Anythingプラグインがやっているのは「7フェーズの順序と各フェーズの目的をClaudeに教える」ことで、各フェーズの実装そのものは対象ソフトに応じてClaudeが書く。プラグイン側にハードコードされた変換コードは最小限に抑えられている。

このH2のポイント
  • HARNESS.mdが7フェーズSOPを定義し、Analysis→Design→Implementation→Test→Docs→Publishの順に進む
  • 各フェーズの出力が次の入力に明示的に消費され、近道を許さない構造で理解を積み上げる
  • 「rendering gap」概念によりexit code依存を排除し、ファイル内容検証を必須化

03 38アプリ・2,280テスト — 対応ソフトウェアの全体像

2026年4月末時点でCLI-AnythingがCLI化した実績は38アプリケーション・2,280テスト・100%パス率に達している。テストの内訳はユニットテスト1,682本、E2Eテスト579本、Node.js連携テスト19本で、E2Eは本物のソフトを起動して結果ファイルを検証するため、CI実行時間は短くない。

カテゴリ別の代表例を整理すると次の表になる。テスト本数は対象ソフトのCLI表面積(コマンド数)にほぼ比例している。

カテゴリ ソフト名 テスト数 特徴
クリエイティブ Blender 208 3Dシーン操作・物理シミュ・Cyclesレンダリング
クリエイティブ Inkscape 202 SVGベクター編集・パス変形・テキスト変換
クリエイティブ GIMP 107 レイヤー・選択・フィルター・エクスポート
クリエイティブ Audacity 161 波形編集・ノイズ除去・エンベロープ
映像 Kdenlive 155 NLEノンリニア編集・タイムライン操作
映像 Shotcut 154 MLT XMLベース動画編集
オフィス LibreOffice 158 Writer/Calc/Impressの全モジュール対応
図解 Draw.io 138 ノードグラフ・図形配置・スタイル指定
AI/ML Ollama 98 ローカルLLMのモデル管理・推論
AI/ML ComfyUI 70 ノードベース画像生成ワークフロー
ゲーム s&box 244 Facepunch製ゲームエンジンの全API

LibreOfficeの158テストは、Writer・Calc・Impress・Drawの全モジュールを横断的にカバーしている。動詞単位で分割するとdocument new / add-heading / add-paragraph / insert-table / export renderのようなコマンドが揃い、Claudeから自然言語経由で「四半期レポートを書いて」と頼むだけで、表題・段落・表・PDFエクスポートまで一気通貫で実行できる構造になっている。

s&boxの244テストはこのプロジェクトで最大の表面積を持つCLIだ。Facepunch Studios(Rust開発元)のゲームエンジンであるs&boxは、エンジンサイドのAPIが豊富で、エンティティ操作・物理・ライティング・UIの各層をすべてカバーしているため、テスト数が膨らんでいる。

ゲーム開発・映像編集・3DCG・オフィス・図解・LLM運用と、これだけ異質なソフトウェアを「同じCLI規約・同じREPL作法・同じJSON出力フォーマット」で揃えているのが、CLI-Anythingの最大の価値だ。Claude Codeから見ると、対象ソフトの内部実装の違いを意識せず、共通スキーマで命令を出せる。

注意点
CLI-Anythingは対象ソフトを「本物として呼ぶ」前提なので、対象ソフトのインストールとライセンス遵守はユーザー側の責任になる。商用ソフトをCLI化する場合は再配布制限・商用利用条項を必ず確認すること。CLI-Anything本体はApache 2.0だが、生成されたCLIが触る対象ソフトのライセンスは別軸の問題だ。
このH2のポイント
  • 2026年4月末で38アプリ・2,280テスト・100%パス率、E2EはBenderやGIMPを本物として呼ぶ
  • クリエイティブ・映像・オフィス・図解・AI/ML・ゲームと、異質なソフトを同じ規約で揃えている
  • 対象ソフトのライセンスと再配布条件はユーザー側の責任、Apache 2.0は本体のみ

04 Claude Codeでのインストールと最初のCLI生成

実際に動かす手順を見ていく。Claude Code 2.x系(プラグイン機構が安定版になったバージョン)と、CLI化したい対象ソフトのソースコード(ローカルクローン)が手元にある前提で進める。

第一段階はマーケットプレイス登録とプラグインインストールだ。Claude Codeのチャット上から2行のスラッシュコマンドで完了する。

# 1. HKUDSのマーケットプレイスを登録
/plugin marketplace add HKUDS/CLI-Anything

# 2. cli-anythingプラグインをインストール
/plugin install cli-anything

インストールが終わると、Claude Codeのスキル一覧にcli-anythingが追加される。同時に補助コマンドも利用可能になる。利用頻度の高い4つを整理しておく。

コマンド 目的
/cli-anything <path> 7フェーズすべてを実行し、ゼロから完全なCLIを生成
/cli-anything:refine <path> 既存ハーネスの未カバー領域を拡張する
/cli-anything:test <path> テストを再実行し、TEST.mdを更新する
/cli-anything:validate <path> HARNESS.md規約への準拠を検証する

第二段階は対象ソフトのソースコードを指定して生成を回すこと。たとえばGIMPをCLI化するなら、事前にGIMPのリポジトリをクローンし、そのパスをClaude Codeに渡す。

# 1. 対象ソフトをローカルにクローン
git clone https://github.com/GNOME/gimp.git ./gimp

# 2. Claude Codeのチャットから生成を開始
/cli-anything ./gimp

実行中、Claudeは作業ディレクトリ./gimp/agent-harness/配下に分析メモ、設計ドキュメント、Click実装、pytestスイート、SKILL.mdを順番に書き出していく。完了までには対象ソフトの規模に応じて十数分から1時間程度かかる。

第三段階は生成されたCLIのインストールと動作確認だ。agent-harness/配下にPythonパッケージとしてsetup.pyが生成されているので、開発インストールして即座に使える。

# 生成されたCLIをローカルインストール
cd gimp/agent-harness
pip install -e .

# 対話REPLモードで起動
cli-anything-gimp

# 単発コマンドモードで起動(エージェント連携向け)
cli-anything-gimp --json layers list
cli-anything-gimp --json filters blur --radius 8 --input photo.png --output blurred.png

--jsonフラグが重要で、これを付けると標準出力がJSONになり、エラーは構造化エラーオブジェクトとして返る。Claude CodeやGitHub Copilot CLIのようなエージェント側は、このJSONをパースして次のステップを判断する。テキスト出力モード(フラグなし)は人間向けで、色付き表とプログレスバー、エラー時の助言メッセージを表示する。

動作確認のコツ
最初はGIMPやBlenderのような大きなソフトではなく、Mermaid(テスト10本)やDify Workflow(テスト11本)のように小規模なソフトでパイプラインを試すと、生成完了までが速く全体像を把握しやすい。生成物のディレクトリ構造、SKILL.mdの形、テスト実行の出力に慣れてから本命ソフトに進むのがおすすめだ。
このH2のポイント
  • 導入は/plugin marketplace add/plugin install cli-anythingの2行で完了
  • 主要4コマンド(cli-anything・refine・test・validate)が用途別に揃っている
  • 生成後はpip install -e .でPATHに登録、--jsonフラグでエージェント連携モードに切替

05 LibreOffice実例とBlender実例 — JSON出力でエージェント連携

具体的な使用感を見るため、READMEに掲載されている2つの定番例を読み解いていく。1つ目はLibreOfficeで構造化ドキュメントを作る例、2つ目はBlenderで3Dシーンを構築してレンダリングする例だ。どちらも本物のLibreOffice/Blenderを背後で起動し、最終的に有効なファイル形式(ODF・PNG)を出力する。

LibreOfficeの実例は次の3コマンドで構成される。

# 1. 新規Writerドキュメントを作成
cli-anything-libreoffice document new -o report.json --type writer

# 2. レベル1の見出しを追加
cli-anything-libreoffice --project report.json writer add-heading -t "Q1 Report" --level 1

# 3. PDFにエクスポート
cli-anything-libreoffice --project report.json export render output.pdf -p pdf

最初の行でプロジェクトファイルreport.jsonを作るのが特徴だ。CLI-Anythingが採用しているのは「中間状態をJSONで保持し、最後にレンダラーへ流す」パターン。これによりClaudeから複数ステップで段階的に編集する操作が、エージェント側でべき等に扱える。--projectフラグでJSONプロジェクトファイルを渡し、コマンドが状態を更新していく。

2行目のadd-headingでは、Writerのスタイル体系(Heading 1〜6)に対応するレベル指定が可能で、Q1 ReportというH1見出しが追加される。続けてadd-paragraphinsert-tableinsert-imageなどを並べることで本格的なドキュメントを構築できる。

3行目のエクスポートで本物のLibreOfficeがheadlessモードで起動し、JSON状態をODFに変換、その後LibreOfficeのPDFエクスポート機構を経由してPDFが書き出される。「JSON状態 → ODF → PDF」という2段階変換になっているが、これはWordやMarkdownからの単純変換ではなく、本物のLibreOfficeレイアウトエンジンを通すためにとられた構造だ。

Blenderの実例はREPLモードで進行する。cli-anything-blenderと入力するとプロンプトが起動し、対話的にシーンを構築する。

$ cli-anything-blender
blender> scene new --name ProductShot
blender> object add-mesh --type cube --location 0 0 1
blender> render execute --output render.png --engine CYCLES

scene newで新規シーンを作成し、object add-meshで立方体を高さ1mの位置に配置、render executeでCyclesレンダラーを起動してrender.pngに書き出す。エンジンとしてCYCLESを指定すると、Blender本体がインストールされているマシンならGPUレイトレーシングが走る。EEVEEに切り替えればリアルタイムレンダラーが使われる。

REPLモードが提供する価値は「セッション状態の保持」だ。Blenderのシーンはコマンド間で常駐し、変数として保持される。シングルショットコマンドだと毎回シーンファイルを読み書きする必要があるが、REPL中はメモリ上のシーンを直接操作できる。複数オブジェクトを段階的に配置・調整するワークフローでは、REPLの方が圧倒的に速い。

Claudeから自動操作するときは、対話モードではなく単発コマンドモードを使う。READMEには明記されていないが、--jsonフラグと組み合わせた次のような呼び出しが標準パターンだ。

# Claudeから自動制御するときのBlender呼び出し
cli-anything-blender --json scene new --name ProductShot
cli-anything-blender --json object add-mesh --type cube --location 0 0 1
cli-anything-blender --json render execute --output render.png --engine CYCLES

各呼び出しが独立して動くため、内部でBlenderプロセスを毎回起動するオーバーヘッドが発生する。シーン規模が大きい場合は、Claudeが.blendファイルとして中間状態を保存し、次の呼び出しでロードし直す設計を取ることが多い。

このH2のポイント
  • LibreOffice例はJSONプロジェクトファイルで状態を保持し、最後に本物のLibreOfficeでPDFを書き出す
  • Blender例はREPLモードでセッション状態を保ち、対話操作と単発操作の両方を提供する
  • Claudeから自動操作する際は--jsonフラグで構造化出力を受け取り、次の判断に渡す

06 SKILL.md・HARNESS.md・CLI-Hub — エコシステムを支える3つの仕組み

CLI-Anythingが「単発のCLI集」を超えてエコシステムになっている理由は、3つのドキュメント/レジストリの仕組みにある。SKILL.md、HARNESS.md、そしてCLI-Hubだ。

第一にSKILL.md。各CLIにはskills/cli-anything-<software>/SKILL.mdという規約パスでスキル定義が同梱される。YAMLフロントマターでスキル名・適用条件・利用例を宣言し、本文にコマンドグループの説明・JSON出力例・エラーハンドリングのガイダンスを書く。これはAnthropic Claude Skillsの規約に準拠しており、Claude Codeから自動的に発見・読み込みされる。

SKILL.mdの典型構造は次のようになる。

---
name: cli-anything-gimp
description: GIMPで画像のレイヤー操作・フィルター適用・エクスポートを行う場合に使う
---

# GIMP CLI

このCLIは本物のGIMPを呼び出して画像処理を実行する。

## 主要コマンドグループ
- `layers`: レイヤーの追加・削除・順序変更
- `filters`: ガウスぼかし、エッジ強調、色補正
- `export`: PNG/JPEG/WebPへの書き出し

## JSON出力例
```json
{"status": "success", "layer_id": "layer-2", "name": "Background"}

第二に<span class="marker-green">**HARNESS.md**</span>。これは「How to build a CLI for any software(任意のソフトに対するCLIの作り方)」という方法論ドキュメントで、Phase 1〜7の各フェーズで踏むべき手順・避けるべき罠を体系化している。新規ソフトをCLI化したいときも、Claudeはこのドキュメントに沿って自律的に作業する。

HARNESS.mdが規定している重要な原則は、たとえば次のようなものがある。

<div class="box-tip">
<strong>HARNESS.md主要原則の抜粋</strong>
<ul>
<li>レンダリングはモック禁止、本物のソフトを使う(Authentic Software Integration)</li>
<li>GUIエフェクトはエクスポート時にも適用される前提でフィルター変換を扱う</li>
<li>タイムコード精度(フレーム/秒のドリフト)はCLI実装時に必ず明示する</li>
<li>出力検証はexit codeに依存しない、ファイル内容そのものをチェックする</li>
<li>ステートフルREPLとサブコマンドモードの両方を提供する</li>
</ul>
</div>

第三に<span class="marker-pink">**CLI-Hub**</span>。これは2026年4月15日にv0.2.0が公開されたパッケージマネージャで、`pip install cli-anything-hub`でインストールできる。Claude Codeからは「ハブ」というメタスキルとして呼び出され、利用可能なCLI-Anythingハーネスをブラウズ・検索・インストール・更新できる。

```bash
# CLI-Hubのインストール
pip install cli-anything-hub

# 利用可能なハーネス一覧を表示
cli-anything-hub list

# 特定のソフト向けCLIをインストール
cli-anything-hub install blender
cli-anything-hub install ollama

CLI-Hubは内部に2つのレジストリを持つ。HKUDS公式のcli-anything-registryと、コミュニティが投稿できるpublic_registry.jsonだ。後者はpip・npm・brewといった複数のインストールソースに対応していて、サードパーティの開発者が自前のCLI実装をハブに登録できる。「Claude Code側から見ると、対象ソフト名を指定するだけでCLI実装が手に入る」という体験がCLI-Hubで実現する。

3つの仕組みの関係を整理すると、HARNESS.mdが「作り方」、SKILL.mdが「呼び方」、CLI-Hubが「配り方」を担当している。生成・記述・流通の3層が分離されているため、新しい対象ソフトを追加するときも、既存ソフトを修正するときも、影響範囲が小さい。

このH2のポイント
  • SKILL.mdはClaude Codeから自動発見されるスキル定義で、CLI使用条件と出力例を含む
  • HARNESS.mdは7フェーズの方法論SOPで、新規対象ソフトへの拡張をClaudeが自律遂行できる
  • CLI-Hubは2026年4月v0.2.0公開のパッケージマネージャで、コミュニティ投稿も受け入れる

07 設計思想「Zero Compromise」と運用上の注意

CLI-Anythingが他の類似プロジェクトと一線を画している部分が「Zero Compromise Dependencies」という設計原則だ。READMEで明示されているのは「本物のソフトが利用できないときはテストが失敗する。優雅に劣化しない(Real software is mandatory; tests fail when backends unavailable)」という方針。これはエンジニアリング上の判断としては保守的に見えるが、AIエージェントが本番運用する際の信頼性を担保するための強い選択だ。

優雅な劣化を許すと何が起きるか。たとえばBlenderがインストールされていない環境でrender executeを呼ぶと、フォールバックでダミー画像を出力するような実装も技術的には可能だ。しかしダミー出力を本物の出力と区別できなければ、エージェントは虚偽の成功を信じて次のステップへ進む。最終的な成果物に致命的な不一致が混入する。CLI-Anythingはこのリスクを排除するため、依存ソフトが欠けたときは明示的に失敗する設計を選んでいる。

設計原則は他にも次のようなものがある。

graph TB ROOT["CLI-Anything 設計原則"] --> A["1. Authentic Software Integration
本物のソフトをそのまま呼ぶ"] ROOT --> B["2. Flexible Interaction Models
REPL + サブコマンドの両立"] ROOT --> C["3. Consistent User Experience
全CLIで共通の規約"] ROOT --> D["4. Agent-Native Design
--jsonフラグで構造化出力"] ROOT --> E["5. Zero Compromise Dependencies
劣化させずに失敗する"]

運用上の注意点として、エンジニアが事前に把握しておくべきトピックを3つ挙げる。

第一に対象ソフトのインストールサイズと起動時間。Blender本体は2GB前後、LibreOfficeは1.5GB前後、Krita・Inkscape・GIMPもそれぞれ数百MBある。GitHub ActionsやCloud Buildのような共有CI環境でCLI-Anything生成CLIを動かそうとすると、依存セットアップだけで5〜10分かかる。CIで使うならbase imageに対象ソフトを焼き込む方が現実的だ。

第二にライセンスの取り扱い。CLI-Anything本体はApache 2.0だが、生成されたCLIが触る対象ソフトは別ライセンスだ。GIMPはGPL v3、LibreOfficeはMPL v2、Blenderは2026年現在GPL v3互換だが、商用ソフト(Adobe製品、Autodesk製品など)にCLI-Anythingを適用すると配布段階で問題になる。基本的にOSS対象ソフトに留めるのが安全だ。

第三にコマンド表面積の管理。s&boxの244テストやBlenderの208テストが示すように、対象ソフトが大きいと生成CLIのコマンド数も膨らむ。Claudeに自由に使わせるとコマンド選定で迷子になりやすい。実運用ではユースケースを絞り、SKILL.mddescription欄に「このCLIはレポートPDF生成用」のように利用文脈を明示しておくと、Claudeの選択ミスが減る。

CLI-Anythingが向いているケースと向いていないケースを最後に表で整理しておく。

ケース 向き不向き 理由
Claude CodeでGIMP/Blenderを動かしたい 向く 専用CLIとSKILL.mdが揃う
自社プロダクトをエージェント対応させたい 向く パイプラインを自社リポジトリに適用可能
商用ソフト(Photoshop等)を操作したい 向かない ライセンス上の制約と配布制限
GUIに依存する操作のみ自動化したい 向かない CLI化できない領域は対象外
簡単な画像処理だけしたい 向かない ImageMagickやPillowで十分

CLI-Anythingリポジトリ は2026年5月時点で活発に更新されており、4月だけでQGIS・Uni-Mol Tools・Obsidian・Zotero・n8nといった新規CLIが続々と追加されている。AIエージェント全体の動向については AIエージェントフレームワーク徹底比較2026 も参考になる。スキル設計の基本については Claude Skillsを徹底解説、Claude Code開発者の設計思想に踏み込みたい場合は Claude Codeアーキテクチャ・ブループリント を併読すると、本記事の内容が縦に繋がる。

このH2のポイント
  • Zero Compromise Dependenciesは「劣化させずに失敗する」原則で、エージェント運用の信頼性を担保
  • 5つの設計原則は本物のソフト統合・REPL/サブコマンド両立・共通UX・JSON出力・劣化禁止
  • CIサイズ・対象ソフトライセンス・コマンド表面積の3点が実運用での主要な注意項目

関連記事

参照ソース