cli-to-js-api-wrapper — скилл для Claude Code: CLI как JS API
Скилл объясняет, как обернуть любую консольную утилиту в типизированный JavaScript/TypeScript API через библиотеку cli-to-js. Пригодится, когда агенту нужны вызовы команд, а не склейка строк.
npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a claude-codeЧто делает cli-to-js-api-wrapper
Скилл описывает работу с пакетом cli-to-js: тот читает вывод --help у бинарника, разбирает его в схему и отдаёт Proxy-объект, где подкоманды становятся методами, а флаги — опциями. Позиционные аргументы передаются ключом _, camelCase сам превращается в kebab-case: { dryRun: true } уходит как --dry-run.
Внутри есть примеры на TypeScript с дженериками, чтобы автодополнение и проверка типов работали на конкретных подкомандах. Отдельно разобрана валидация: $validate ловит выдуманные флаги и подсказывает похожие по написанию — в агентских сценариях это спасает от запуска команды с опечаткой. Есть хелперы .text(), .lines(), .json<T>(), потоковый вывод через колбэки и $spawn, а также $command для сборки строки без выполнения.
Понадобится установленный Node.js и сам пакет: npm install cli-to-js. Обёртка работает только с теми бинарниками, которые уже есть в системе, — convertCliToJs("git") ничего не скачает за вас. Если утилита не печатает внятный --help, схему придётся собирать вручную через fromHelpText.
Какие задачи решает
- вызвать консольную утилиту из Node.js без склейки строк команды
- получить автодополнение и проверку типов для флагов CLI
- поймать опечатку в имени флага до запуска процесса
- разобрать вывод команды в массив строк или JSON
- стримить вывод долгой сборки и прервать её по ключевому слову
Примеры запросов агенту
- Оберни
gitчерез cli-to-js и вызовиgit.status() - Сделай типизированную обёртку для
npmи распарсиnpm outdated --json - Проверь флаги команды через
$validateперед запуском
Как установить cli-to-js-api-wrapper
1Через Skills CLI (Vercel)
npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a claude-code2Вручную: положить файлы
~/.claude/skills/cli-to-js-api-wrapper/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/cli-to-js-api-wrapper/
1Через Skills CLI (Vercel)
npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a codex2Вручную: положить файлы
.agents/skills/cli-to-js-api-wrapper/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a cursor2Вручную: положить файлы
.cursor/skills/cli-to-js-api-wrapper/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install reason-machines/trending-skills cli-to-js-api-wrapper2Вручную: положить файлы
.github/skills/cli-to-js-api-wrapper/SKILL.md1Через Skills CLI (Vercel)
npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a gemini-cli2Командой платформы
gemini skills install https://github.com/reason-machines/trending-skills --path skills/cli-to-js-api-wrapperВручную: положить файлы
.devin/skills/cli-to-js-api-wrapper/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о cli-to-js-api-wrapper
Как установить cli-to-js-api-wrapper в Claude Code?
Выполните npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a claude-code. Файл скилла окажется по пути ~/.claude/skills/cli-to-js-api-wrapper/SKILL.md.
Что делает cli-to-js-api-wrapper?
Показывает, как через библиотеку cli-to-js превратить консольную утилиту в типизированный JavaScript/TypeScript API: подкоманды становятся методами, флаги — опциями.
Что нужно для работы скилла?
Установленный Node.js и пакет cli-to-js, который ставится командой npm install cli-to-js. Обёртка строится вокруг бинарников, уже доступных в системе.