cli-anything
- title
- cli-anything
- type
- toolbox
- summary
- Плагин для Claude Code, создающий полноценный Python CLI и SKILL.md для настоящего бэкенда любого GUI-приложения
- tags
- python, agent, cli, skills, claude-code, codegen
- language
- Python
- license
- Apache-2.0
- created
- 2026-05-03
- updated
- 2026-05-03
- lang
- ru
- translation_of
- cli-anything
- source_updated
- 2026-05-03
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
CLI-Anything - плагин для Claude Code от HKUDS (с параллельной установкой для Pi, OpenClaw, OpenCode, Codex, Goose, Qodercli, GitHub Copilot CLI), который принимает путь к файлам или GitHub URL любого GUI-приложения и генерирует для него полноценный CLI на Python с использованием Click: вызов /cli-anything ./gimp запускает конвейер из 7 этапов, завершающийся pip install -e . и появлением cli-anything-gimp в PATH. Позиционирование в README сформулировано так: "Today's software serves humans. Tomorrow's users will be agents" ("Современный софт служит людям. Пользователями завтрашнего дня станут агенты"). Идея в том, что автоматизация GUI, RPA по скриншотам и кликам, а также урезанные SaaS API не дают агенту настоящих возможностей профессионального софта; правильный подход - сгенерированный CLI, обращающийся напрямую к реальному бэкенду (bpy для Blender, melt для Shotcut/Kdenlive, sox для Audacity, headless LO для LibreOffice) без каких-либо игрушечных реимплементаций.
Как это устроено
Вся методология описана в одном документе - cli-anything-plugin/HARNESS.md, который каждая агентская интеграция загружает в качестве skill'а. Семь этапов:
- Codebase analysis (анализ кодовой базы) - найти движок бэкенда (когда GUI выступает тонкой обёрткой над библиотекой), сопоставить действия в интерфейсе с вызовами API, определить формат файлов проекта, каталогизировать систему команд и отмены действий (undo).
- CLI architecture design (проектирование архитектуры CLI) - выбрать между stateful REPL и CLI с подкомандами (по умолчанию реализуются оба варианта), разбить группы команд по логическим доменам приложения (проект, базовые операции, импорт/экспорт, конфигурация, сессии), спроектировать модель состояния в JSON, заложить вывод как в
--json, так и в человекочитаемом виде. - Implementation (реализация) - начать со слоя данных, добавить команды зондирования (probe) перед мутациями, собрать
utils/<software>_backend.py, оборачивающий реальный CLI программы, добавить управление сессиями с блокировкой файлов и объединить всё в единый REPL через общийrepl_skin.py. Click-группа настраивается с параметромinvoke_without_command=True, поэтомуcli-anything-gimpбез аргументов сразу запускает REPL. - Test plan (план тестирования) - подготовить
TEST.mdсо списком запланированных файлов тестов, перечнем модульных тестов, сквозными (E2E) сценариями и свойствами выходных данных, которые проверяет каждый E2E-тест. Этот файл обязателен до написания кода тестов. - Test implementation (реализация тестов) - модульные тесты с синтетическими данными, E2E-тесты с вызовом реального бэкенда программы (никаких мягких пропусков при отсутствии программы - тесты должны падать), верификация результатов по сигнатурам (magic bytes), структуре ZIP, попиксельному анализу или уровням RMS, а также тесты через подпроцессы к установленному CLI.
- Documentation (документация) - обновить
TEST.mdс учётом результатов, сгенерироватьSKILL.md(этап 6.5) на основе декораторов Click,setup.pyи README с помощьюskill_generator.py. - Publish (публикация) - сформировать
setup.py, выполнитьpip install -e ., после чего бинарник оказывается в PATH.
Команда /cli-anything:refine ./gimp [focus] выполняет gap-анализ между всеми возможностями программы и текущим покрытием CLI, а затем инкрементально дописывает новые команды - без деструктивных изменений и с возможностью повторного запуска сколько угодно раз.
Два артефакта на обвязку: бинарник CLI + SKILL.md
Каждая сгенерированная обвязка поставляет канонический SKILL.md по пути skills/cli-anything-<software>/SKILL.md (монорепозиторий можно подключать через npx skills add HKUDS/CLI-Anything --skill <name>) и упакованную копию для совместимости в cli_anything/<software>/skills/SKILL.md. Баннер REPL выводит абсолютный путь к skill'у, чтобы управляющий им агент мог его прочитать.
Именно этот паттерн описан в mcp-vs-skills: бинарник CLI даёт возможность (с корректной авторизацией, реальным бэкендом, структурированным выводом в JSON), а SKILL.md - знание (как этим пользоваться, нюансы параметров, формат вывода). CLI-Anything генерирует обе части одновременно. Это не контрпример к аргументации Мола, а рабочий пример гибридного паттерна, где в роли "сервиса" выступает локальный подпроцесс, а SKILL.md объясняет агенту, как им управлять.
Обратная сторона: сгенерированный CLI остаётся локальным бинарником, а не удалённым сервером MCP. Переносимости в окружения без вычислений (мобильный Claude, веб-версия ChatGPT) здесь нет - агенту нужен доступ к командной оболочке. CLI-Anything явно ориентирован только на среды с поддержкой вычислений (flue, Claude Code, Pi, pi-coding-agent, OpenClaw, Codex).
CLI-Hub: каталог и мета-skill
Команда pip install cli-anything-hub устанавливает пакетный менеджер (cli-hub install <name> / update / uninstall), опирающийся на public_registry.json. Источниками служат pip, npm, brew и встроенные инструменты, так что это не просто обёртка над обвязками из репозитория. Веб-интерфейс на clianything.cc позволяет просматривать как CLI-Anything CLIs (обвязки, сгенерированные внутри проекта), так и Public CLIs (сторонние инструменты под их кураторством).
Наиболее интересная деталь - мета-skill: отдельный skill, который агент устанавливает один раз; он указывает на актуальный каталог (reeceyang.sgp1.cdn.digitaloceanspaces.com/SKILL.md) со списком всех доступных CLI и однострочными командами установки. Агент читает мета-skill, выбирает подходящий для задачи CLI, выполняет установку и затем изучает собственный SKILL.md этого инструмента. Каталог обновляется автоматически при любом изменении registry.json: новые созданные сообществом CLI становятся доступны без повторной публикации мета-skill'а. Благодаря этому каталог открыт для обнаружения самими агентами, а не только людьми.
Покрытие и заявления о тестировании
В README перечислено 18 демонстрационных приложений с 2269 успешно проходящими тестами по состоянию на апрель-май 2026 года: GIMP (107), Blender (208), Inkscape (202), Audacity (161), LibreOffice (158), OBS Studio (153), Kdenlive (155), Shotcut (154), а также FreeCAD (258 команд), QGIS, Godot, Krita, Draw.io, Mermaid, Excalidraw, RenderDoc, MuseScore, Zotero, Obsidian, n8n, WireMock, Exa, VideoCaptioner, ComfyUI, Stable Diffusion WebUI, AnythingLLM, Slay the Spire II и другие. Правило "тесты должны падать, а не пропускаться" принципиально важно: именно так подтверждается утверждение о работе с настоящим бэкендом.
Доступны реальные демо-видео (FreeCAD собирает марсоход в духе Curiosity, Blender моделирует орбитальный дрон-ретранслятор, Draw.io рисует диаграмму рукопожатия HTTPS, агент играет в Slay the Spire II). В демо используется связка preview + preview live + trajectory.json, благодаря чему человек может наблюдать за изменением состояния в реальном времени во время работы агента. Воспроизведение траектории встроено в саму обвязку, а не сделано одноразовой бутафорией для демо.
Ограничения
- Только Python ≥3.10. Нет поддержки обвязок на Go/Rust/Node; плагин рассчитан на Click + setup.py.
- Требуется локальная установка целевого софта. Вспомогательные функции
find_<software>вutils/<software>_backend.pyвыбрасываютRuntimeErrorс инструкциями по установке, но сами ничего не ставят: агентам нужно уметь запускать apt/brew/winget самостоятельно. - Качество генерации зависит от понятности кодовой базы. Семиэтапный пайплайн исходит из того, что GUI - это тонкая обёртка над библиотекой с понятным набором команд/API. Приложения с плотно связанной логикой интерфейса, закрытыми проприетарными бэкендами или без возможности скриптинга дадут поверхностные обвязки (или завершатся ошибкой уже на этапе 1).
- Состояние stateful REPL хранится в JSON-файлах на диске. Нескольким агентам, одновременно работающим с одной обвязкой, приходится координироваться через блокировку файлов: режим демона в обвязке не предусмотрен.
- Совместимость с Windows по остаточному принципу. Некоторым CLI требуется
cygpath(Git for Windows или WSL); в README описаны специфические обходные пути для Claude Code под Windows.
Сценарии, где инструмент действительно к месту
- Агент, которому нужно полностью отрендерить 3D-сцену через bpy без накладных расходов на GUI.
- Конвейер в CI: LibreOffice -> PDF / DOCX / XLSX / PPTX на основе контента, сгенерированного агентом.
- Производство аудио, где агент объединяет Audacity + sox без RPA по скриншотам.
- Создание клиентских сценариев под управлением агентов поверх опенсорсных аналогов SaaS (NextCloud, Mattermost, Plane, n8n) без необходимости писать 50 обёрток для REST API.
- Синтез задач для бенчмарков GUI-агентов: когда CLI готов, можно генерировать валидаторы и траектории прямо в коде, не записывая сессии интерфейса.
Звёзды и лицензия
github.com/HKUDS/CLI-Anything - 33 258★, Apache-2.0, основной язык Python, создан 2026-03-08, последний коммит 2026-05-02. HKUDS - лаборатория Data Science Гонконгского университета (HKU); исследовательская группа, создавшая LightRAG и другие инструменты для агентов. Активный поток правок от сообщества с принятыми CLI от сторонних авторов (@TianyuFan0504, @WEIFENG2333, @zhangxilong-43 и др.) - разработка не замкнута на одного вендора.