cli-anything について
cli-anything は、ソースコードにアクセスできる GUI アプリ向けに Click ベースのコマンドラインインターフェースを生成するスキルです。開発者やエージェントがコマンドでアプリを操作でき、JSON 出力、対話型 REPL、テストスイートも生成します。
主な機能
- 017 段階のパイプラインで CLI を生成
- 02GUI 操作をバックエンド API に対応付け
- 03JSON 出力と対話型 REPL を提供
- 04pytest テストスイートを作成
- 05ハーネスの改善、テスト、検証、一覧表示
活用シーン
- 01ローカルソースのアプリ向け CLI を構築
- 02GitHub のソース URL からハーネスを生成
- 03CLI コマンドで GUI アプリのタスクを自動化
- 04生成した CLI ハーネスをテスト・改善
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill cli-anythingインストール後、Claude Code で/cli-anythingを入力して読み込まれたか確認します。
詳細
CLI-Anything リファレンス
アクセス可能なソースコードを持つあらゆる GUI アプリケーション向けに、本番環境対応でエージェントから操作できる CLI インターフェースを自動生成します。7 フェーズのパイプラインで GUI 操作をバックエンド API に対応付け、--json 出力モード、対話型 REPL、pytest テストスイートを備えた Click ベースのハーネスを生成します。
ソース: https://github.com/HKUDS/CLI-Anything ライセンス: MIT | Python: 3.10 以上 | テスト: 11 個のアプリで 1,508 件が成功
自己進化型スキル:このスキルは使用を通じて改善されます。手順に誤りがある場合、パラメーターが変わっている場合、または回避策が必要になった場合は、先送りせず、すぐにこのファイルを修正してください。実際に再現できる問題がある場合にのみ更新してください。
インストール
方法 1:Claude Code Marketplace(推奨)
/plugin marketplace add HKUDS/CLI-Anything
/plugin install cli-anything
方法 2:Claude Code に手動でインストール
git clone https://github.com/HKUDS/CLI-Anything.git
cp -r CLI-Anything/cli-anything-plugin ~/.claude/plugins/cli-anything
# Reload in Claude Code:
/reload-plugins
方法 3:OpenCode — グローバル
git clone https://github.com/HKUDS/CLI-Anything.git
cp CLI-Anything/opencode-commands/*.md ~/.config/opencode/commands/
cp CLI-Anything/cli-anything-plugin/HARNESS.md ~/.config/opencode/commands/
方法 4:OpenCode — プロジェクト単位
cp CLI-Anything/opencode-commands/*.md .opencode/commands/
cp CLI-Anything/cli-anything-plugin/HARNESS.md .opencode/commands/
新しい CLI ハーネスの生成
# From local source path
/cli-anything ./gimp
# From GitHub URL (auto-cloned)
/cli-anything https://github.com/blender/blender
# Claude Code variant (plugin command)
/cli-anything ./inkscape
# OpenCode variant
/cli-anything ./libreoffice
すべてのコマンド
| コマンド | プラットフォーム | 用途 |
|---|---|---|
/cli-anything <path-or-url> | Claude Code | 7 フェーズのハーネスをすべて構築 |
/cli-anything:refine <path> [focus] | Claude Code | ギャップ分析に基づいて拡張 |
/cli-anything:test <path-or-url> | Claude Code | テストを実行し、TEST.md を更新 |
/cli-anything:validate <path-or-url> | Claude Code | HARNESS.md の基準を検証 |
/cli-anything:list [--path dir] [--depth n] [--json] | Claude Code | インストール済みの CLI-Anything ツールを検出 |
/cli-anything ./gimp | OpenCode | ハーネスを構築 |
/cli-anything-refine ./gimp | OpenCode | ハーネスを改良 |
/cli-anything-test ./gimp | OpenCode | テストを実行 |
/cli-anything-validate ./gimp | OpenCode | 基準を検証 |
/cli-anything-list | OpenCode | インストール済みのツールを一覧表示 |
焦点を絞った改良
# Broad gap analysis
/cli-anything:refine ./gimp
# Targeted domain expansion
/cli-anything:refine ./gimp "batch processing and filters"
/cli-anything:refine ./blender "rendering pipeline and animations"
/cli-anything:refine ./libreoffice "spreadsheet formulas and macros"
生成した CLI のインストール
cd <software>/agent-harness
pip install -e .
# Verify PATH entry created
which cli-anything-gimp
cli-anything-gimp --help
生成した CLI の使用
生成されるすべての CLI は、一貫したインターフェースパターンを備えています。
GIMP の例
# Help
cli-anything-gimp --help
# Create project
cli-anything-gimp project new --width 1920 --height 1080 -o poster.json
# Machine-readable JSON output (for agent consumption)
cli-anything-gimp --json layer add -n "Background" --type solid --color "#1a1a2e"
# Interactive REPL
cli-anything-gimp
# Stateful workflow with --project flag
cli-anything-gimp --project poster.json layer add -n "Logo" --type group
cli-anything-gimp --project poster.json export render output.png --format png
LibreOffice の例
# New document
cli-anything-libreoffice document new -o report.json --type writer
# Populate document
cli-anything-libreoffice --project report.json writer add-heading -t "Q1 Report" --level 1
cli-anything-libreoffice --project report.json writer add-table --rows 4 --cols 3
# Export
cli-anything-libreoffice --project report.json export render output.pdf -p pdf --overwrite
# JSON output
cli-anything-libreoffice --json document info --project report.json
Blender の例
cli-anything-blender scene new -o scene.json
cli-anything-blender --project scene.json object add --type mesh --mesh-type CUBE
cli-anything-blender --project scene.json render image output.png --engine CYCLES
cli-anything-blender --json scene info --project scene.json
Inkscape の例
cli-anything-inkscape document new --width 800 --height 600 -o design.json
cli-anything-inkscape --project design.json shape add rect --x 10 --y 10 --w 200 --h 100
cli-anything-inkscape --project design.json export render output.svg
cli-anything-inkscape --json document info --project design.json
出力モード
すべてのコマンドで、次の 2 種類の出力モードを利用できます。
| モード | 使用方法 | 対象ユーザー |
|---|---|---|
| 人間が読みやすい形式(デフォルト) | cli-anything-gimp layer add ... | ターミナル/人間 |
| 機械可読な JSON | cli-anything-gimp --json layer add ... | AI エージェント、スクリプト |
--json フラグは、必ずサブコマンドより前の最初の引数に指定してください。
対話型 REPL
サブコマンドを指定せず CLI を実行すると開始します。
cli-anything-gimp
cli-anything-blender
cli-anything-libreoffice
REPL の機能:
- 50 段階の取り消し/やり直しスタック
- コマンド履歴の永続化
- ANSI 256 色出力(ソフトウェア固有のアクセントカラー)
- テーブル表示、進捗インジケーター
- すべてのサブコマンドを対話形式で利用可能
テストの実行
# Standard pytest run
cd <software>/agent-harness
python3 -m pytest cli_anything/<software>/tests/ -v
# Validate the installed binary is invoked (not just the module)
CLI_ANYTHING_FORCE_INSTALLED=1 python3 -m pytest cli_anything/<software>/tests/ -v -s
# Coverage
python3 -m pytest cli_anything/<software>/tests/ --cov=cli_anything/<software>
# Per-software examples
cd gimp/agent-harness && python3 -m pytest cli_anything/gimp/tests/ -v
cd blender/agent-harness && python3 -m pytest cli_anything/blender/tests/ -v
cd libreoffice/agent-harness && python3 -m pytest cli_anything/libreoffice/tests/ -v
環境変数
| 変数 | 用途 |
|---|---|
CLI_ANYTHING_FORCE_INSTALLED=1 | テストで実際にインストールされたバイナリを使用するよう強制します(which cli-anything-<software> が正しく解決されることを検証します。モジュールのインポートだけではありません) |
サポート対象アプリケーション(全11種類、テスト1,508件)
| アプリケーション | カテゴリ | エントリーポイント |
|---|---|---|
| GIMP | クリエイティブ(ラスター) | cli-anything-gimp |
| Blender | クリエイティブ(3D) | cli-anything-blender |
| Inkscape | クリエイティブ(ベクター) | cli-anything-inkscape |
| Audacity | メディア(オーディオ) | cli-anything-audacity |
| LibreOffice | 生産性向上 | cli-anything-libreoffice |
| OBS Studio | メディア(ストリーミング) | cli-anything-obs-studio |
| Kdenlive | メディア(動画) | cli-anything-kdenlive |
| Shotcut | メディア(動画) | cli-anything-shotcut |
| Zoom | コミュニケーション | cli-anything-zoom |
| Draw.io | 図表作成 | cli-anything-drawio |
| AnyGen | AI コンテンツ | cli-anything-anygen |
7段階のパイプライン(HARNESS.md)
/cli-anything の実行時に内部で行われる処理:
| 段階 | 名前 | 処理内容 |
|---|---|---|
| 1 | ソースの取得 | ローカルパスまたはGitHub URLを受け付け、必要に応じてクローンします |
| 2 | コードベースの分析 | GUI操作とバックエンドAPIを対応付け、既存のCLIツールを一覧化し、データモデルを文書化します |
| 3 | CLIアーキテクチャの設計 | インタラクションモデル(状態を保持するREPL+サブコマンド)を選択し、コマンドグループを定義し、--json 出力を計画します |
| 4 | 実装 | cli_anything.<software> 名前空間を持つClickベースのCLIを構築し、共通の ReplSkin を使ってREPLを実装します |
| 5 | テスト計画 | コードを書く前に、予定しているテスト一覧を記載した TEST.md を作成します |
| 6 | テストの実装 | ユニットテスト(合成データ)+E2Eテスト(実際のソフトウェアの出力)+サブプロセステストを実施します |
| 7 | PyPIへの公開 | find_namespace_packages() を使う setup.py と、console_scripts のエントリーポイントを用意します |
基本ルール:CLIは描画処理を必ず実際のソフトウェアに委ねなければなりません。Pythonで機能を再実装してはいけません。対象ソフトウェアは必須の依存関係です。
生成されるハーネスの構造
生成される各CLIは、次のレイアウトに従います(PEP 420 名前空間パッケージ):
<software>/agent-harness/
├── setup.py # find_namespace_packages(), entry_points
├── <SOFTWARE>.md # Software-specific SOP
└── cli_anything/ # NO __init__.py (namespace package)
└── <software>/
├── __init__.py
├── __main__.py
├── <software>_cli.py # Main Click entry point
├── core/ # Domain modules (project, session, export, ...)
├── utils/
│ └── repl_skin.py # Shared REPL UI (copied from plugin)
└── tests/
├── TEST.md # Test inventory (written in phase 5)
├── test_core.py # Unit tests
└── test_full_e2e.py # E2E + subprocess tests
名前空間パッケージを使う理由:cli_anything/ に __init__.py を置かないことで、複数の個別にインストールされたCLIが、競合せずに同じ cli_anything.* 名前空間の下で共存できます。
出力検証の基準
テストでは、マジックバイトとコンテンツ分析を使って実際の出力を検証します。
| 出力タイプ | 検証方法 |
|---|---|
%PDF- マジックバイト+サイズが0より大きいこと | |
| OOXML(.docx、.xlsx) | ZIP構造の検証 |
| CSV | データ行数+列の確認 |
| 画像 | Pillowによるピクセル値の分析 |
| オーディオ | RMSレベルの確認(無音でないこと) |
前提条件チェックリスト
/cli-anything <path> を実行する前に:
- Python 3.10以降がインストールされている
- 対象ソフトウェアがインストールされている(必須の依存関係。描画処理のために呼び出されます)
- ソースコードにアクセスできる(ローカルパスまたは公開GitHub URL)
-
click>=8.0.0が利用可能(pip install -e .でインストール) -
Pillow>=10.0.0、prompt-toolkit>=3.0.0が利用可能 - テスト実行用の
pytestが利用可能
主要ファイルの参照
| ファイル | 用途 |
|---|---|
cli-anything-plugin/HARNESS.md | 完全な方法論ドキュメント(30K文字) |
cli-anything-plugin/QUICKSTART.md | クイックスタートガイド |
cli-anything-plugin/repl_skin.py | 共有REPL UIクラス(18K、ANSI 256色) |
cli-anything-plugin/commands/cli-anything.md | /cli-anything スラッシュコマンドの定義 |
cli-anything-plugin/commands/refine.md | /cli-anything:refine コマンド |
cli-anything-plugin/commands/test.md | /cli-anything:test コマンド |
cli-anything-plugin/commands/validate.md | /cli-anything:validate コマンド |
cli-anything-plugin/commands/list.md | /cli-anything:list コマンド |
実行後の振り返り
このスキルの実行が完了したら、終了する前に次の点を確認してください。
- コマンドは成功しましたか? — 成功しなかった場合は、失敗の原因となった指示またはエラーテーブルを修正してください。
- パラメーターや出力に変更はありましたか? — 基盤となるツールのインターフェースに変更があった場合は、Usageの例とParametersテーブルを合わせて更新してください。
- 回避策が必要でしたか? — 臨機応変に対応する必要があった場合(別のフラグや追加手順など)は、次回同じ回避策が不要になるよう、このSKILL.mdを更新してください。
問題が実際に発生し、再現可能な場合にのみ更新してください。推測に基づいて更新しないでください。