# cli-to-js-api-wrapper

Скилл объясняет, как обернуть любую консольную утилиту в типизированный JavaScript/TypeScript API через библиотеку cli-to-js. Пригодится, когда агенту нужны вызовы команд, а не склейка строк.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 439 установок · ★ 88
- Автор: reason-machines
- Лицензия: не указана · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/reason-machines/trending-skills/tree/HEAD/skills/cli-to-js-api-wrapper/SKILL.md
- Обновлён: 2026-10-09
- HTML: https://affpapa.org/nevibecode/skills/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`.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/cli-to-js-api-wrapper/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/cli-to-js-api-wrapper/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/cli-to-js-api-wrapper/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/cli-to-js-api-wrapper/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install reason-machines/trending-skills cli-to-js-api-wrapper
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/cli-to-js-api-wrapper/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/reason-machines/trending-skills --path skills/cli-to-js-api-wrapper
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/cli-to-js-api-wrapper/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill cli-to-js-api-wrapper -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/reason-machines/trending-skills/tree/HEAD/skills/cli-to-js-api-wrapper/SKILL.md

## Когда брать
- вызвать консольную утилиту из Node.js без склейки строк команды
- получить автодополнение и проверку типов для флагов CLI
- поймать опечатку в имени флага до запуска процесса
- разобрать вывод команды в массив строк или JSON
- стримить вывод долгой сборки и прервать её по ключевому слову

## Примеры запросов агенту
- Оберни `git` через cli-to-js и вызови `git.status()`
- Сделай типизированную обёртку для `npm` и распарси `npm outdated --json`
- Проверь флаги команды через `$validate` перед запуском

## Похожие
- [setup-matt-pocock-skills](https://affpapa.org/nevibecode/skills/setup-matt-pocock-skills.md) — скилл · 1052851 установка
- [ask-matt](https://affpapa.org/nevibecode/skills/ask-matt.md) — скилл · 766587 установок
- [to-tickets](https://affpapa.org/nevibecode/skills/to-tickets.md) — скилл · 711230 установок
- [writing-plans](https://affpapa.org/nevibecode/skills/writing-plans.md) — скилл · 282859 установок
- [caveman-review](https://affpapa.org/nevibecode/skills/caveman-review.md) — скилл · 411800 установок
- [caveman-compress](https://affpapa.org/nevibecode/skills/caveman-compress.md) — скилл · 411500 установок

Из того же набора: [reason-machines/trending-skills](https://affpapa.org/nevibecode/by/reason-machines/trending-skills.md) — 139 карточек

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
