CLI-Anything
HKUDS/CLI-Anything — 人間向け GUI アプリを、コーディングエージェントが操作できる stateful CLI に変換するオープンソースのハーネスとモノレポ。Claude Code・Pi・OpenCode・Codex などから /cli-anything 一発で新規ハーネスを生成し、既存の 60 件超の CLI は CLI-Hub で配布する。
README のスローガンは「Today's Software Serves Humans. Tomorrow's Users will be Agents.」である。CLI-Anything は、Blender・GIMP・LibreOffice・n8n・OBS・Zotero など、画面とマウス前提のソフトを Click ベースの CLI + REPL に落とし、--json 出力と SKILL.md でエージェントが発見・実行できる形にそろえる。
README が列挙する利点は、LLM の入出力形式と相性がよい点に集約される。
| 観点 | CLI が向く理由 |
|---|---|
| 構造化 | テキストコマンドはプロンプトと同型で、パイプラインに連結しやすい |
| 軽量 | GUI 自動化より依存が少なく、ヘッドレス環境でも動かせる |
| 自己記述 | --help でコマンド群をエージェントが探索できる |
| 機械可読 | --json でパース負荷を下げ、再現性を上げる |
各対象アプリはトップレベルディレクトリを持ち、その中に agent-harness/ パッケージ(cli_anything/<app>/)が入る。共通の生成手順は cli-anything-plugin/HARNESS.md に集約され、成果物スキルはルートの skills/cli-anything-<name>/SKILL.md が正本(2026-04 以降の統一方針)。
flowchart TB
subgraph mono["HKUDS/CLI-Anything モノレポ"]
HARNESS["cli-anything-plugin/HARNESS.md"]
PLUGIN["cli-anything-plugin/ コマンド・テンプレ"]
SKILLS["skills/cli-anything-*"]
HUB["cli-hub/ · registry.json"]
APP["<app>/agent-harness/"]
end
AGENT["コーディングエージェント"] --> PLUGIN
PLUGIN --> HARNESS
HARNESS --> APP
APP --> SKILLS
HUB --> APP
CLI-Anything/
├── cli-anything-plugin/ # Claude Code プラグイン・HARNESS.md
├── cli-hub/ # pip install cli-anything-hub
├── skills/ # 正本 SKILL.md(npx skills add 対象)
├── registry.json # CLI-Hub メタデータ(60 CLI)
├── blender/agent-harness/ # 例: cli_anything/blender/
├── gimp/agent-harness/
├── n8n/agent-harness/
└── …(各アプリごとに agent-harness/)
/cli-anything <path-or-repo> は HARNESS.md の SOP に沿い、GUI の操作を API 呼び出しとデータモデルに写像してから CLI を実装する。README のクイックスタートと HARNESS.md の Phase 1–3 は次の対応になる。
flowchart LR
P1["1 分析\nバックエンド・データモデル"]
P2["2 設計\nコマンド群・状態・出力"]
P3["3 実装\nClick + backend"]
P4["4 テスト計画"]
P5["5 テスト実装"]
P6["6 ドキュメント"]
P7["7 公開\nsetup.py / PATH"]
P1 --> P2 --> P3 --> P4 --> P5 --> P6 --> P7
| フェーズ | 主な成果物 |
|---|---|
| 1 分析 | GUI アクションと API の対応表、既存 CLI ツール(ffmpeg 等)の洗い出し |
| 2 設計 | サブコマンドグループ、セッション JSON、人間向け / --json 出力 |
| 3 実装 | utils/<app>_backend.py、REPL(repl_skin.py)、undo/redo |
| 4–5 テスト | TEST.md、unit + E2E(test_core / test_full_e2e パターン) |
| 6–7 仕上げ | SKILL.md 生成、pip install 可能な entry point |
/cli-anything:refine でギャップ分析と機能追加、:test / :validate / :list で品質確認と一覧。OpenCode ではハイフン区切り(/cli-anything-refine)の別名あり。CLI-Hub は Web カタログと PyPI パッケージ cli-anything-hub の両面を持つ。registry.json に各 CLI の install_cmd・entry_point・skill_md が載る。
pip install cli-anything-hub
cli-hub search blender
cli-hub install shotcut
cli-hub list
エージェント向けメタスキル skills/cli-hub-meta-skill/SKILL.md により、ハブから CLI を自律的に発見・インストールする流れも用意されている。個別スキルは README 記載どおり次でグローバル導入できる。
npx skills add HKUDS/CLI-Anything --skill cli-anything-blender -g -y
| 環境 | セットアップの要点 | ビルドコマンド例 |
|---|---|---|
| Claude Code | /plugin marketplace add HKUDS/CLI-Anything → /plugin install cli-anything | /cli-anything ./gimp |
| Pi | .pi-extension/cli-anything/install.sh でグローバル拡張 | /cli-anything https://github.com/… |
| OpenCode | opencode-commands/*.md と HARNESS.md を ~/.config/opencode/commands/ へ | /cli-anything ./gimp |
| Codex | codex-skill/scripts/install.sh | 自然言語で「CLI-Anything で harness を組んで」 |
| OpenClaw | openclaw-skill/SKILL.md をスキルディレクトリへコピー | @cli-anything build … |
| Qodercli | qoder-plugin/setup-qodercli.sh | /cli-anything ./gimp |
cygpath 含む)または WSL がないとコマンドが失敗しうる(README の注意書き)。既存ハーネス(GIMP・Blender・Shotcut・FreeCAD 等)に共通する設計が HARNESS.md で規定されている。
- デュアルモード: ワンショットのサブコマンドと、デフォルトの REPL(
invoke_without_command=True) - バックエンド分離:
utils/<software>_backend.pyが実ソフトの CLI / ヘッドレス API を呼ぶ - ReplSkin: ブランド付き REPL・履歴・テーブル表示(
cli-anything-plugin/repl_skin.pyを各パッケージへコピー) - プレビュー:
preview_bundle.pyとdocs/PREVIEW_PROTOCOL.mdによる成果物プレビュー(3D・動画・図など) - テスト: コアロジックの unit と、実バックエンドを使う E2E の二層
代表例: cli-anything-blender、cli-anything-freecad(258 コマンド / 17 グループと README 記載)、cli-anything-n8n、cli-anything-zotero。
- GitHub: HKUDS/CLI-Anything
- CLI-Hub(Web)
- README.md · README_JA.md
- HARNESS.md
- PREVIEW_PROTOCOL.md
- CONTRIBUTING.md(新規 CLI の PR 手順)
License: Apache-2.0