mcpField
C
cli-anything

cli-anything

github.com/terrylica開発289 回インストール1 日前に更新
リポジトリ

cli-anything について

cli-anything は、ソースコードにアクセスできる GUI アプリ向けに Click ベースのコマンドラインインターフェースを生成するスキルです。開発者やエージェントがコマンドでアプリを操作でき、JSON 出力、対話型 REPL、テストスイートも生成します。

主な機能

  1. 017 段階のパイプラインで CLI を生成
  2. 02GUI 操作をバックエンド API に対応付け
  3. 03JSON 出力と対話型 REPL を提供
  4. 04pytest テストスイートを作成
  5. 05ハーネスの改善、テスト、検証、一覧表示

活用シーン

  1. 01ローカルソースのアプリ向け CLI を構築
  2. 02GitHub のソース URL からハーネスを生成
  3. 03CLI コマンドで GUI アプリのタスクを自動化
  4. 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 Code7 フェーズのハーネスをすべて構築
/cli-anything:refine <path> [focus]Claude Codeギャップ分析に基づいて拡張
/cli-anything:test <path-or-url>Claude Codeテストを実行し、TEST.md を更新
/cli-anything:validate <path-or-url>Claude CodeHARNESS.md の基準を検証
/cli-anything:list [--path dir] [--depth n] [--json]Claude Codeインストール済みの CLI-Anything ツールを検出
/cli-anything ./gimpOpenCodeハーネスを構築
/cli-anything-refine ./gimpOpenCodeハーネスを改良
/cli-anything-test ./gimpOpenCodeテストを実行
/cli-anything-validate ./gimpOpenCode基準を検証
/cli-anything-listOpenCodeインストール済みのツールを一覧表示
焦点を絞った改良
# 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 ...ターミナル/人間
機械可読な JSONcli-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
AnyGenAI コンテンツcli-anything-anygen

7段階のパイプライン(HARNESS.md)

/cli-anything の実行時に内部で行われる処理:

段階名前処理内容
1ソースの取得ローカルパスまたはGitHub URLを受け付け、必要に応じてクローンします
2コードベースの分析GUI操作とバックエンドAPIを対応付け、既存のCLIツールを一覧化し、データモデルを文書化します
3CLIアーキテクチャの設計インタラクションモデル(状態を保持するREPL+サブコマンド)を選択し、コマンドグループを定義し、--json 出力を計画します
4実装cli_anything.<software> 名前空間を持つClickベースのCLIを構築し、共通の ReplSkin を使ってREPLを実装します
5テスト計画コードを書く前に、予定しているテスト一覧を記載した TEST.md を作成します
6テストの実装ユニットテスト(合成データ)+E2Eテスト(実際のソフトウェアの出力)+サブプロセステストを実施します
7PyPIへの公開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%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 コマンド

実行後の振り返り

このスキルの実行が完了したら、終了する前に次の点を確認してください。

  1. コマンドは成功しましたか? — 成功しなかった場合は、失敗の原因となった指示またはエラーテーブルを修正してください。
  2. パラメーターや出力に変更はありましたか? — 基盤となるツールのインターフェースに変更があった場合は、Usageの例とParametersテーブルを合わせて更新してください。
  3. 回避策が必要でしたか? — 臨機応変に対応する必要があった場合(別のフラグや追加手順など)は、次回同じ回避策が不要になるよう、このSKILL.mdを更新してください。

問題が実際に発生し、再現可能な場合にのみ更新してください。推測に基づいて更新しないでください。

コメント