---
read_when:
    - Использование CLI ClawHub
    - Отладка установки, обновления или публикации
summary: 'Справочник по CLI: команды, флаги, конфигурация и поведение файла блокировки.'
x-i18n:
    generated_at: "2026-07-13T17:57:39Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 24
    provider: openai
    source_hash: c2579d0239582c13925438e3a9d9ed0a77d5fc270ac7fa1dc85029bd9ae4fb09
    source_path: clawhub/cli.md
    workflow: 16
---

# CLI

Пакет CLI: `clawhub`, исполняемый файл: `clawhub`.

Установите его глобально с помощью npm или pnpm:

```bash
npm i -g clawhub
# или
pnpm add -g clawhub
```

Затем проверьте установку:

```bash
clawhub --help
clawhub login
clawhub whoami
```

## Глобальные флаги

- `--workdir <dir>`: рабочий каталог (по умолчанию: cwd; при наличии конфигурации используется рабочее пространство Clawdbot)
- `--dir <dir>`: каталог установки внутри рабочего каталога (по умолчанию: `skills`)
- `--site <url>`: базовый URL для входа через браузер (по умолчанию: `https://clawhub.ai`)
- `--registry <url>`: базовый URL API (по умолчанию: обнаруженный, иначе `https://clawhub.ai`)
- `--no-input`: отключить запросы подтверждения

Эквивалентные переменные среды:

- `CLAWHUB_SITE` (устаревшая: `CLAWDHUB_SITE`)
- `CLAWHUB_REGISTRY` (устаревшая: `CLAWDHUB_REGISTRY`)
- `CLAWHUB_WORKDIR` (устаревшая: `CLAWDHUB_WORKDIR`)

### HTTP-прокси

В системах, находящихся за корпоративными прокси-серверами или в сетях
с ограничениями, CLI учитывает стандартные переменные среды HTTP-прокси:

- `HTTPS_PROXY` / `https_proxy`
- `HTTP_PROXY` / `http_proxy`
- `NO_PROXY` / `no_proxy`

Если задана любая из этих переменных, CLI направляет исходящие запросы через
указанный прокси-сервер. `HTTPS_PROXY` используется для HTTPS-запросов, `HTTP_PROXY`
— для обычного HTTP. `NO_PROXY` / `no_proxy` учитывается для обхода прокси-сервера при
обращении к указанным хостам или доменам.

Это необходимо в системах, где прямые исходящие подключения заблокированы
(например, в контейнерах Docker, на VPS Hetzner с доступом в интернет только
через прокси-сервер или за корпоративными межсетевыми экранами).

Пример:

```bash
export HTTPS_PROXY=http://proxy.example.com:3128
export NO_PROXY=localhost,127.0.0.1
clawhub search "my query"
```

Если переменные прокси-сервера не заданы, поведение не меняется (используются прямые подключения).

## Файл конфигурации

Хранит токен API и кэшированный URL реестра.

- macOS: `~/Library/Application Support/clawhub/config.json`
- Linux/XDG: `$XDG_CONFIG_HOME/clawhub/config.json` или `~/.config/clawhub/config.json`
- Windows: `%APPDATA%\\clawhub\\config.json`
- Резервный устаревший путь: если `clawhub/config.json` ещё не существует, но существует `clawdhub/config.json`, CLI повторно использует устаревший путь
- переопределение: `CLAWHUB_CONFIG_PATH` (устаревшая: `CLAWDHUB_CONFIG_PATH`)

## Команды

### `login` / `auth login`

- По умолчанию: открывает в браузере `<site>/cli/auth` и завершает вход через обратный вызов на loopback-интерфейсе.
- Без графического интерфейса: `clawhub login --token clh_...`
- Интерактивный режим для удалённой системы или системы без графического интерфейса: `clawhub login --device` выводит код и ожидает, пока вы авторизуете его на `<site>/cli/device`.

### `whoami`

- Проверяет сохранённый токен через `/api/v1/whoami`.

### `token`

- Выводит сохранённый токен API в стандартный вывод.
- Полезно для передачи локального токена входа командам настройки секретов CI через конвейер.

### `star <skill>` / `unstar <skill>`

- Добавляет навык в избранное или удаляет его оттуда.
- Вызывает `POST /api/v1/stars/<slug>` и `DELETE /api/v1/stars/<slug>`.
- `--yes` пропускает подтверждение.

### `search <query...>`

- Вызывает `/api/v1/search?q=...`.
- Вывод содержит идентификатор навыка, имя пользователя владельца, отображаемое имя и оценку релевантности.
- При поиске точные совпадения токенов идентификатора или имени имеют приоритет перед популярностью загрузок. Отдельный токен идентификатора, например `map`, соответствует `personal-map` точнее, чем подстроке внутри `amap`.
- Популярность оказывает небольшое предварительное влияние на ранжирование, но не гарантирует первое место.
- Если навык должен отображаться, но не отображается, войдите в систему и выполните `clawhub inspect @owner/slug`, чтобы проверить доступную владельцу диагностику модерации, прежде чем переименовывать метаданные.

### `explore`

- Выводит список новейших навыков через `/api/v1/skills?limit=...&sort=createdAt` (сортировка по `createdAt` по убыванию).
- Флаги:
  - `--limit <n>` (1–200, по умолчанию: 25)
  - `--sort newest|updated|rating|downloads|trending` (по умолчанию: сначала новые). Устаревшие псевдонимы сортировки по установкам по-прежнему поддерживаются для совместимости.
  - `--json` (машиночитаемый вывод)
- Вывод: `<slug>  v<version>  <age>  <summary>` (описание сокращается до 50 символов).

### `inspect @owner/slug`

- Получает метаданные навыка и файлы версии без установки.
- `--version <version>`: проверить определённую версию (по умолчанию: последнюю).
- `--tag <tag>`: проверить версию с указанным тегом (например, `latest`).
- `--versions`: вывести историю версий (первую страницу).
- `--limit <n>`: максимальное количество версий в списке (1–200).
- `--files`: вывести список файлов выбранной версии.
- `--file <path>`: получить необработанное содержимое файла (только текстовые файлы; ограничение 200 КБ).
- `--json`: машиночитаемый вывод.

### `install @owner/slug`

- Определяет последнюю версию для указанного владельца и навыка.
- Загружает ZIP-архив через `/api/v1/download`.
- Распаковывает в `<workdir>/<dir>/<slug>`.
- Отказывается перезаписывать закреплённые навыки; сначала выполните `clawhub unpin <skill>`.
- Записывает:
  - `<workdir>/.clawhub/lock.json` (устаревший: `.clawdhub`)
  - `<skill>/.clawhub/origin.json` (устаревший: `.clawdhub`)

### `uninstall <skill>`

- Удаляет `<workdir>/<dir>/<slug>` и соответствующую запись из файла блокировки.
- Если выполнен вход, пытается отправить телеметрию, чтобы текущие счётчики установок можно было
  деактивировать.
- Интерактивный режим: запрашивает подтверждение.
- Неинтерактивный режим (`--no-input`): требует `--yes`.

### `list`

- Читает `<workdir>/.clawhub/lock.json` (устаревший: `.clawdhub`).
- Показывает `pinned` рядом с навыками, замороженными с помощью `clawhub pin`, включая необязательную причину.

### `pin <skill>`

- Помечает установленный навык как закреплённый в файле блокировки.
- `--reason <text>` сохраняет причину заморозки навыка.
- Закреплённые навыки пропускаются командой `update --all`, а прямой вызов `update <skill>` для них отклоняется.
- Закреплённые навыки также отклоняют `install --force`, чтобы локальное содержимое нельзя было случайно заменить.

### `unpin <skill>`

- Удаляет закрепление установленного навыка из файла блокировки, чтобы последующие обновления могли его изменять.

### `update [@owner/slug]` / `update --all`

- Вычисляет цифровой отпечаток локальных файлов.
- Если цифровой отпечаток совпадает с известной версией: запрос не выводится.
- Если цифровой отпечаток не совпадает:
  - по умолчанию операция отклоняется
  - перезаписывает с помощью `--force` (или выводит запрос в интерактивном режиме)
- Закреплённые навыки никогда не обновляются командой `--force`.
- `update <skill>` немедленно завершается с ошибкой для закреплённых навыков и предлагает сначала выполнить `clawhub unpin <skill>`.
- `update --all` пропускает закреплённые идентификаторы и выводит сводку о том, какие навыки остались замороженными.

### `skill publish <path>`

- Сравнивает цифровой отпечаток локального пакета с ClawHub и успешно завершает работу, если
  содержимое уже опубликовано.
- Для новых навыков по умолчанию используется `1.0.0`; для изменённых навыков — следующая
  исправляющая версия.
- `--version <version>` явно выбирает версию и выполняет публикацию, даже если
  содержимое совпадает с существующей версией.
- `--dry-run` определяет результат публикации без загрузки; `--json` выводит
  машиночитаемый результат.
- `--owner <handle>` публикует от имени организации или пользователя, если
  субъект имеет доступ издателя.
- `--migrate-owner` при публикации новой версии переносит существующий навык в `--owner`.
  Требуется доступ администратора или владельца у обоих издателей.
- Поведение владельцев и проверки описано в `docs/publishing.md`.
- Публикация навыка означает, что он выпускается на ClawHub под лицензией `MIT-0`.
- Опубликованные навыки можно бесплатно использовать, изменять и распространять без указания авторства.
- ClawHub не поддерживает платные навыки или индивидуальные цены для навыков.
- Устаревший псевдоним: `publish <path>`.

```bash
clawhub skill publish ./my-skill --dry-run
clawhub skill publish ./my-skill
clawhub skill publish ./my-skill --version 2.0.0
```

#### GitHub Actions

Многократно используемый рабочий процесс ClawHub
[`skill-publish.yml`](https://github.com/openclaw/clawhub/blob/main/.github/workflows/skill-publish.yml)
вызывает `skill publish` для одного `skill_path` или для каждой непосредственной папки
навыка внутри `root` (по умолчанию: `skills`). Он пропускает неизменённые навыки и использует
такое же автоматическое поведение для исправляющей версии.

Задайте `dry_run: true`, чтобы выполнить предварительный просмотр без токена. Для реальной публикации требуется
секрет `clawhub_token`.

### `sync`

- Сканирует текущий рабочий каталог, настроенный каталог навыков и все
  папки `--root <dir>` в поисках локальных папок навыков, содержащих `SKILL.md` или
  `skill.md`.
- Сравнивает цифровой отпечаток каждого локального навыка с ClawHub и публикует только новые или
  изменённые навыки.
- Новые навыки публикуются как `1.0.0`; для изменённых навыков по умолчанию публикуется следующая исправляющая версия.
  Используйте `--bump minor|major` для пакетов обновлений, которым требуется
  более крупное изменение версии по semver.
- `--dry-run` показывает план публикации без загрузки; `--json` выводит
  машиночитаемый план.
- `--all` публикует каждый новый или изменённый навык без запроса подтверждения. Без
  `--all` в интерактивных терминалах можно выбрать навыки для публикации.
- `--owner <handle>` публикует от имени организации или пользователя, если
  субъект имеет доступ издателя.
- `sync` выполняет только одностороннюю публикацию. Он не устанавливает, не обновляет, не загружает и
  не отправляет телеметрию установок или загрузок.

```bash
clawhub sync --all --dry-run
clawhub sync --all
clawhub sync --root ./skills --owner openclaw --bump minor
```

### `scan --slug <slug>`

- Требует `clawhub login`.
- Запускает ClawScan от ClawHub через `POST /api/v1/skills/-/scan`, затем опрашивает состояние, пока сканирование не завершится.
- Сканирования выполняются асинхронно и могут занять некоторое время. Пока сканирование находится в очереди, индикатор выполнения в терминале показывает его текущую приоритетную позицию и количество сканирований перед ним.
- Для сканирования опубликованных версий требуется владение или доступ к управлению издателем. Модераторы и администраторы могут использовать тот же серверный механизм через `clawhub-admin`.
- `--update` допустим только вместе с `--slug`; он записывает результаты успешно завершённого сканирования опубликованной версии обратно в выбранную версию.
- `--output <file.zip>` загружает полный архив отчёта с `manifest.json`, `clawscan.json`, `skillspector.json`, `static-analysis.json`, `virustotal.json` и `README.md`.
- `--json` выводит полный ответ опроса для автоматизации.
- Сканирование локальных путей больше не поддерживается. Загрузите новую версию, затем используйте `scan download`, чтобы получить сохранённые результаты сканирования отправленной версии.

```bash
clawhub scan --slug gifgrep
clawhub scan --slug gifgrep --version 1.2.3
clawhub scan --slug gifgrep --update --output report.zip
```

### `scan download <name>`

- Требуется `clawhub login`.
- Скачивает сохранённый ZIP-архив отчёта о сканировании для отправленной версии Skills или плагина, включая версии, которые были заблокированы или скрыты проверками безопасности ClawHub.
- Для скачивания Skills используется слаг Skills, а по умолчанию — `--kind skill`.
- Для скачивания плагинов используется имя пакета и требуется `--kind plugin`.
- `--version` обязателен, чтобы авторы проверяли именно ту отправленную версию, которую заблокировал ClawHub.
- `--output <file.zip>` задаёт путь назначения.

```bash
clawhub scan download gifgrep --version 1.2.3
clawhub scan download @scope/demo --version 2.0.0 --kind plugin --output report.zip
```

#### GitHub Actions

ClawHub предоставляет официальный переиспользуемый рабочий процесс по адресу
[`/.github/workflows/skill-publish.yml`](https://github.com/openclaw/clawhub/blob/05a798c4ba914b97caf9e8476c10de2bcf5479f0/.github/workflows/skill-publish.yml)
для репозиториев Skills и репозиториев каталогов.

Типичная настройка каталога:

```yaml
name: Skill Publish

on:
  pull_request:
  workflow_dispatch:

jobs:
  dry-run:
    if: github.event_name == 'pull_request'
    uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v1
    with:
      owner: nvidia
      dry_run: true

  publish:
    if: github.event_name == 'workflow_dispatch'
    uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v1
    with:
      owner: nvidia
      dry_run: false
    secrets:
      clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}
```

Примечания:

- Для репозиториев каталогов значение `root` по умолчанию равно `skills`.
- Передайте `skill_path: skills/review-helper`, чтобы обработать одну папку Skills.
- `owner` соответствует флагу CLI `--owner`; не указывайте его, чтобы опубликовать от имени аутентифицированного пользователя.
- Для публикации Skills V1 используется `clawhub_token`; доверенная публикация через GitHub OIDC пока доступна только для пакетов.

### `delete <skill>`

- Без `--version` выполняет обратимое удаление Skills (доступно владельцу, модератору или администратору).
- Вызывает `DELETE /api/v1/skills/{slug}`.
- При обратимом удалении владельцем слаг резервируется на 30 дней; команда выводит время окончания резервирования.
- `--version <version>` безвозвратно удаляет одну принадлежащую владельцу версию, которая не является последней, через закрытый при сбое
  маршрут для конкретной версии.
  Удалённые версии нельзя восстановить или опубликовать повторно. Опубликуйте замену перед удалением
  текущей последней версии. Сотрудники платформы не могут обойти проверку владения в этом процессе, предназначенном только для отдельных версий.
- `--reason <text>` записывает примечание модератора для обратимого удаления всей Skills и в журнал аудита.
- `--note <text>` — псевдоним для `--reason`.
- `--yes` пропускает подтверждение.

### `undelete <skill>`

- Восстанавливает скрытую Skills (доступно владельцу, модератору или администратору).
- Восстановление удалённой версии не предусмотрено; безвозвратно удалённые версии восстановить нельзя.
- Вызывает `POST /api/v1/skills/{slug}/undelete`.
- `--reason <text>` записывает примечание модератора для Skills и в журнал аудита.
- `--note <text>` — псевдоним для `--reason`.
- `--yes` пропускает подтверждение.

### `hide <skill>`

- Скрывает Skills (доступно владельцу, модератору или администратору).
- Псевдоним для `delete`.

### `unhide <skill>`

- Снимает скрытие со Skills (доступно владельцу, модератору или администратору).
- Псевдоним для `undelete`.

### `skill rename <skill> <new-name>`

- Переименовывает принадлежащую владельцу Skills и сохраняет предыдущий слаг как псевдоним перенаправления.
- Вызывает `POST /api/v1/skills/{slug}/rename`.
- `--yes` пропускает подтверждение.

### `skill merge <source> <target>`

- Объединяет одну принадлежащую владельцу Skills с другой принадлежащей ему Skills.
- Исходный слаг перестаёт отображаться в общедоступном списке и становится псевдонимом перенаправления на целевой слаг.
- Вызывает `POST /api/v1/skills/{sourceSlug}/merge`.
- `--yes` пропускает подтверждение.

### `transfer`

- Рабочий процесс передачи владения.
- При передаче на дескрипторы пользователей создаётся ожидающий запрос, который должен принять получатель.
- Передача на дескрипторы организаций или издателей применяется немедленно, только если у инициатора есть
  административный доступ как к текущему владельцу, так и к целевому издателю.
- Подкоманды:
  - `transfer request <skill> <handle> [--message "..."] [--yes]`
  - `transfer list [--outgoing]`
  - `transfer accept <skill> [--yes]`
  - `transfer reject <skill> [--yes]`
  - `transfer cancel <skill> [--yes]`
- Конечные точки:
  - `POST /api/v1/skills/{slug}/transfer`
  - `POST /api/v1/skills/{slug}/transfer/accept`
  - `POST /api/v1/skills/{slug}/transfer/reject`
  - `POST /api/v1/skills/{slug}/transfer/cancel`
  - `GET /api/v1/transfers/incoming`
  - `GET /api/v1/transfers/outgoing`

### `package explore [query...]`

- Просматривает единый каталог пакетов или выполняет поиск в нём через `GET /api/v1/packages` и `GET /api/v1/packages/search`.
- Используйте эту команду для плагинов и других записей семейств пакетов; верхнеуровневый `search` остаётся интерфейсом поиска Skills.
- Флаги:
  - `--family skill|code-plugin|bundle-plugin`
  - `--official`
  - `--executes-code`
  - `--target <target>`, `--os <os>`, `--arch <arch>`, `--libc <libc>`
  - `--requires-browser`, `--requires-desktop`, `--requires-native-deps`
  - `--requires-external-service`, `--external-service <name>`
  - `--binary <name>`, `--os-permission <name>`
  - `--artifact-kind legacy-zip|npm-pack`
  - `--npm-mirror`
  - `--limit <n>` (1-100, по умолчанию: 25)
  - `--json`

Примеры:

```bash
clawhub package explore --family code-plugin
clawhub package explore --family code-plugin --os darwin --requires-desktop
clawhub package explore --family code-plugin --artifact-kind npm-pack
clawhub package explore --npm-mirror
clawhub package explore episodic-claw --family code-plugin
```

### `package inspect <name>`

- Получает метаданные пакета без установки.
- Используйте эту команду для проверки метаданных плагина, совместимости, верификации, исходного кода, а также версий и файлов.
- `--version <version>`: проверить определённую версию (по умолчанию: последняя).
- `--tag <tag>`: проверить версию с заданным тегом (например, `latest`).
- `--versions`: вывести историю версий (первую страницу).
- `--limit <n>`: максимальное количество выводимых версий (1-100).
- `--files`: вывести файлы выбранной версии.
- `--file <path>`: получить необработанное содержимое файла (только текстовые файлы; ограничение 200KB).
- `--json`: машиночитаемый вывод.

### `package download <name>`

- Разрешает версию пакета через
  `GET /api/v1/packages/{name}/versions/{version}/artifact`.
- Скачивает артефакт из `downloadUrl` средства разрешения.
- Проверяет SHA-256 ClawHub для всех артефактов.
- Для артефактов ClawPack npm-pack также проверяет целостность npm `sha512`,
  контрольную сумму npm и имя/версию `package.json` в tar-архиве.
- Устаревшие ZIP-версии скачиваются через устаревший маршрут ZIP.
- Флаги:
  - `--version <version>`: скачать определённую версию.
  - `--tag <tag>`: скачать версию с заданным тегом (по умолчанию: `latest`).
  - `-o, --output <path>`: выходной файл или каталог.
  - `--force`: перезаписать существующий выходной файл.
  - `--json`: машиночитаемый вывод.

Примеры:

```bash
clawhub package download @openclaw/example-plugin --tag latest
clawhub package download @openclaw/example-plugin --version 1.2.3 -o artifacts/
```

### `package verify <file>`

- Вычисляет SHA-256 ClawHub, целостность npm `sha512` и контрольную сумму npm для локального
  артефакта.
- При использовании `--package` получает ожидаемые метаданные из ClawHub и сравнивает
  локальный файл с метаданными опубликованного артефакта.
- При использовании прямых флагов дайджеста выполняет проверку без сетевого запроса.
- Флаги:
  - `--package <name>`: имя пакета для получения ожидаемых метаданных артефакта.
  - `--version <version>` или `--tag <tag>`: ожидаемая версия пакета.
  - `--sha256 <hex>`: ожидаемый SHA-256 ClawHub.
  - `--npm-integrity <sri>`: ожидаемое значение целостности npm.
  - `--npm-shasum <sha1>`: ожидаемая контрольная сумма npm.
  - `--json`: машиночитаемый вывод.

Примеры:

```bash
clawhub package verify ./example-plugin-1.2.3.tgz --package @openclaw/example-plugin --version 1.2.3
clawhub package verify ./example-plugin-1.2.3.tgz --sha256 <hex>
```

### `package validate <source>`

- Запускает встроенный в CLI ClawHub Plugin Inspector для локальной папки пакета
  плагина.
- По умолчанию выполняет автономную статическую проверку без поиска или импорта локальной
  рабочей копии OpenClaw.
- Критические ошибки совместимости приводят к завершению с ненулевым кодом. Результаты, содержащие только предупреждения, выводятся,
  но команда завершается с нулевым кодом.
- Флаги:
  - `--out <dir>`: записать отчёты Plugin Inspector в этот каталог.
  - `--openclaw <path>`: выполнить проверку относительно явно указанной локальной рабочей копии OpenClaw.
  - `--runtime`: включить сбор данных среды выполнения; импортирует код плагина.
  - `--allow-execute`: разрешить сбор данных среды выполнения в изолированном рабочем пространстве.
  - `--no-mock-sdk`: отключить имитацию SDK OpenClaw во время сбора данных среды выполнения.
  - `--json`: машиночитаемый вывод.

Пример:

```bash
clawhub package validate ./example-plugin
```

Если при проверке обнаружена проблема с пакетом, манифестом, импортом SDK или артефактом, см.
[Исправления ошибок проверки плагинов](/clawhub/plugin-validation-fixes), затем повторно выполните команду.

### `package delete <name>`

- Без `--version` выполняет обратимое удаление пакета и всех выпусков.
- `--version <version>` безвозвратно удаляет один принадлежащий владельцу выпуск, который не является последним, через закрытый при сбое
  маршрут для конкретной версии.
  Удалённые версии нельзя восстановить или опубликовать повторно. Опубликуйте замену перед удалением
  текущей последней версии. Этот процесс для отдельной версии требует прав владельца пакета или
  администратора издателя организации; сотрудники платформы не могут обойти проверку владения пакетом.
- Для обратимого удаления всего пакета требуются права владельца пакета, владельца или администратора издателя организации, модератора
  платформы либо администратора платформы.
- Флаги:
  - `--version <version>`: безвозвратно удалить одну версию, которая не является последней.
  - `--yes`: пропустить подтверждение.
  - `--json`: машиночитаемый вывод.

Пример:

```bash
clawhub package delete @openclaw/example-plugin --yes
clawhub package delete @openclaw/example-plugin --version 1.2.3 --yes
```

### `package undelete <name>`

- Восстанавливает обратимо удалённый пакет и выпуски.
- Восстановление удалённой версии не предусмотрено; безвозвратно удалённые версии восстановить нельзя.
- Требуются права владельца пакета, владельца или администратора издателя организации, модератора
  платформы либо администратора платформы.
- Вызывает `POST /api/v1/packages/{name}/undelete`.
- Флаги:
  - `--yes`: пропустить подтверждение.
  - `--json`: машиночитаемый вывод.

Пример:

```bash
clawhub package undelete @openclaw/example-plugin --yes
```

### `package transfer <name>`

- Передаёт пакет другому издателю.
- Требует административного доступа как к текущему владельцу пакета, так и к целевому
  издателю, если операция не выполняется администратором платформы.
- Имена пакетов с областью видимости должны передаваться владельцу соответствующей области.
- Вызывает `POST /api/v1/packages/{name}/transfer`.
- Флаги:
  - `--to <owner>`: идентификатор целевого издателя.
  - `--reason <text>`: необязательная причина для аудита.
  - `--json`: машиночитаемый вывод.

Пример:

```bash
clawhub package transfer @openclaw/example-plugin --to openclaw
```

### `package report`

- Команда с аутентификацией для отправки модераторам жалобы на пакет.
- Вызывает `POST /api/v1/packages/{name}/report`.
- Жалобы относятся ко всему пакету, могут быть связаны с определённой версией и становятся доступными
  модераторам для рассмотрения.
- Сами по себе жалобы не скрывают пакеты автоматически и не блокируют скачивания.
- Флаги:
  - `--version <version>`: необязательная версия пакета, к которой относится жалоба.
  - `--reason <text>`: обязательная причина жалобы.
  - `--json`: машиночитаемый вывод.

Пример:

```bash
clawhub package report @openclaw/example-plugin --version 1.2.3 --reason "suspicious native payload"
```

### `package moderation-status`

- Команда для владельца, позволяющая проверить видимость пакета при модерации.
- Вызывает `GET /api/v1/packages/{name}/moderation`.
- Показывает текущее состояние сканирования пакета, количество открытых жалоб, состояние ручной
  модерации последнего выпуска, состояние блокировки скачивания и причины модерации.
- Флаги:
  - `--json`: машиночитаемый вывод.

Пример:

```bash
clawhub package moderation-status @openclaw/example-plugin
```

### `package readiness <name>`

- Проверяет, готов ли пакет к будущему использованию в OpenClaw.
- Вызывает `GET /api/v1/packages/{name}/readiness`.
- Сообщает о препятствиях, связанных с официальным статусом, доступностью ClawPack, дайджестом артефакта,
  происхождением исходного кода, совместимостью с OpenClaw, целевыми хостами, метаданными окружения
  и состоянием сканирования.
- Флаги:
  - `--json`: машиночитаемый вывод.

Пример:

```bash
clawhub package readiness @openclaw/example-plugin
```

### `package migration-status <name>`

- Показывает предназначенное для операторов состояние миграции пакета, который может заменить
  встроенный плагин OpenClaw.
- Вызывает ту же вычисляемую конечную точку проверки готовности, что и `package readiness`, но выводит
  ориентированные на миграцию состояние, последнюю версию, статус официального пакета, проверки и
  препятствия.
- Флаги:
  - `--json`: машиночитаемый вывод.

Пример:

```bash
clawhub package migration-status @openclaw/example-plugin
```

### `publisher create <handle>`

- Создаёт издателя-организацию, принадлежащего аутентифицированному пользователю.
- Идентификатор преобразуется в нижний регистр и может передаваться с `@` или без него.
- Новые издатели-организации по умолчанию не считаются доверенными или официальными.
- Завершается ошибкой, если идентификатор уже используется существующим издателем, пользователем или зарезервированным маршрутом.

```bash
clawhub publisher create opik --display-name "Opik"
```

### `package publish <source>`

- Публикует плагин с кодом или пакетный плагин через `POST /api/v1/packages`.
- `<source>` принимает:
  - Путь к локальной папке: `./my-plugin`
  - Локальный tar-архив ClawPack, созданный npm pack: `./my-plugin-1.2.3.tgz`
  - Репозиторий GitHub: `owner/repo` или `owner/repo@ref`
  - URL GitHub: `https://github.com/owner/repo`
- Метаданные автоматически определяются по `package.json`, `openclaw.plugin.json` и
  фактическим маркерам пакета OpenClaw, таким как `.codex-plugin/plugin.json`,
  `.claude-plugin/plugin.json` и `.cursor-plugin/plugin.json`.
- Источники `.tgz` обрабатываются как ClawPack. CLI загружает точные байты npm-пакета,
  а извлечённое содержимое `package/` использует только для проверки и
  предварительного заполнения метаданных.
- Перед загрузкой папки плагинов с кодом упаковываются в npm-архив ClawPack, чтобы
  установки OpenClaw могли проверить точный артефакт. Для папок пакетных плагинов
  по-прежнему используется публикация извлечённых файлов.
- Для источников GitHub сведения о происхождении автоматически заполняются на основе репозитория, разрешённого коммита, ссылки и подпути.
- Для локальных папок сведения о происхождении автоматически определяются из локального репозитория Git, если удалённый origin указывает на GitHub.
- Внешние плагины с кодом должны явно объявлять `openclaw.compat.pluginApi` и
  `openclaw.build.openclawVersion`.
  Верхнеуровневое поле `package.json.version` не используется как резервное значение при проверке публикации.
- `--dry-run` показывает предварительный просмотр сформированных данных публикации без загрузки.
- `--json` формирует машиночитаемый вывод для CI.
- `--owner <handle>` публикует от имени пользователя или издателя-организации, если субъект имеет доступ издателя.
- Имена пакетов с областью видимости должны соответствовать выбранному владельцу. См. `docs/publishing.md`.
- Существующие флаги (`--family`, `--name`, `--version`, `--source-repo`, `--source-commit`, `--source-ref`, `--source-path`) по-прежнему работают как переопределения.
- Для приватных репозиториев GitHub требуется `GITHUB_TOKEN`.

```bash
clawhub package publish ./plugin.tgz --owner openclaw
```

#### Рекомендуемый локальный процесс

Сначала используйте `--dry-run`, чтобы проверить сформированные метаданные пакета и
сведения о происхождении перед созданием реального выпуска:

```bash
npm pack
clawhub package publish ./my-plugin-1.2.3.tgz --family code-plugin --dry-run
clawhub package publish ./my-plugin-1.2.3.tgz --family code-plugin
```

#### Процесс для локальной папки

При публикации плагинов с кодом из папки создаётся и загружается артефакт ClawPack
из папки пакета:

```bash
clawhub package publish ./my-plugin --family code-plugin --dry-run
clawhub package publish ./my-plugin --family code-plugin
```

#### Минимальный `package.json` для `--family code-plugin`

Внешним плагинам с кодом требуется небольшой объём метаданных OpenClaw в
`package.json`. Этого минимального манифеста достаточно для успешной публикации:

```json
{
  "name": "@myorg/openclaw-my-plugin",
  "version": "1.0.0",
  "type": "module",
  "openclaw": {
    "extensions": ["./index.ts"],
    "compat": {
      "pluginApi": ">=2026.3.24-beta.2"
    },
    "build": {
      "openclawVersion": "2026.3.24-beta.2"
    }
  }
}
```

Обязательные поля:

- `openclaw.compat.pluginApi`
- `openclaw.build.openclawVersion`

Примечания:

- `package.json.version` — это версия выпуска вашего пакета, но она не используется как
  резервное значение при проверке совместимости и сборки OpenClaw.
- `openclaw.hostTargets` и `openclaw.environment` — необязательные метаданные.
  ClawHub может отображать их при наличии, но для публикации они не требуются.
- `openclaw.compat.minGatewayVersion` и
  `openclaw.build.pluginSdkVersion` — необязательные дополнительные поля для публикации
  более подробных метаданных совместимости.
- Если вы используете старую версию CLI `clawhub`, обновите её перед публикацией, чтобы
  локальные предварительные проверки выполнялись до загрузки.
- Если проверка сообщает код исправления, см.
  [Исправления ошибок проверки плагинов](/clawhub/plugin-validation-fixes).

#### GitHub Actions

ClawHub также предоставляет официальный повторно используемый рабочий процесс
[`/.github/workflows/package-publish.yml`](https://github.com/openclaw/clawhub/blob/05a798c4ba914b97caf9e8476c10de2bcf5479f0/.github/workflows/package-publish.yml)
для репозиториев плагинов.

Типичная конфигурация вызывающего рабочего процесса:

```yaml
name: Package Publish

on:
  pull_request:
  workflow_dispatch:
  push:
    tags:
      - "v*"

jobs:
  dry-run:
    if: github.event_name == 'pull_request'
    uses: openclaw/clawhub/.github/workflows/package-publish.yml@v0.12.0
    with:
      dry_run: true

  publish:
    if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/')
    permissions:
      contents: read
      id-token: write
    uses: openclaw/clawhub/.github/workflows/package-publish.yml@v0.12.0
    with:
      dry_run: false
    secrets:
      clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}
```

Примечания:

- В повторно используемом рабочем процессе значение `source` по умолчанию соответствует вызывающему репозиторию.
- Для монорепозиториев передайте `source_path`, чтобы рабочий процесс публиковал
  папку пакета плагина, например `source_path: extensions/codex`.
- Закрепляйте повторно используемый рабочий процесс на стабильном теге или полном SHA коммита. Не запускайте публикацию выпуска из `@main`.
- `pull_request` должен использовать `dry_run: true`, чтобы CI не создавал лишних изменений.
- Фактические публикации должны быть ограничены доверенными событиями, такими как `workflow_dispatch`, или отправкой тегов.
- Доверенная публикация без секрета работает только в `workflow_dispatch`; для отправки тегов по-прежнему требуется `clawhub_token`.
- Сохраняйте доступность `clawhub_token` для первой публикации, недоверенных пакетов или аварийных публикаций.
- Рабочий процесс загружает результат JSON как артефакт и предоставляет его через выходные данные рабочего процесса.

### `package trusted-publisher get <name>`

- Показывает конфигурацию доверенного издателя GitHub Actions для пакета.
- Используйте эту команду после настройки конфигурации, чтобы подтвердить репозиторий, имя файла рабочего процесса
  и необязательную привязку к окружению.
- Флаги:
  - `--json`: машиночитаемый вывод.

Пример:

```bash
clawhub package trusted-publisher get @openclaw/example-plugin
```

### `package trusted-publisher set <name>`

- Добавляет или заменяет конфигурацию доверенного издателя GitHub Actions для существующего
  пакета.
- Сначала пакет необходимо создать посредством обычной ручной или аутентифицированной токеном
  команды `clawhub package publish`.
- После настройки конфигурации последующие поддерживаемые публикации через GitHub Actions могут использовать
  OIDC и доверенную публикацию без долгосрочного токена ClawHub.
- `--repository <repo>` должен быть `owner/repo`.
- `--workflow-filename <file>` должен совпадать с именем файла рабочего процесса в
  `.github/workflows/`.
- `--environment <name>` является необязательным. Если он настроен, окружение GitHub Actions
  в утверждении OIDC должно в точности совпадать.
- При выполнении этой команды ClawHub проверяет настроенный репозиторий GitHub.
  Публичные репозитории можно проверить по публичным метаданным GitHub. Для приватных
  репозиториев ClawHub должен иметь доступ GitHub к этому репозиторию,
  например через будущую установку приложения ClawHub GitHub App или другую авторизованную
  интеграцию GitHub.
- Флаги:
  - `--repository <repo>`: репозиторий GitHub, например `openclaw/example-plugin`.
  - `--workflow-filename <file>`: имя файла рабочего процесса, например `package-publish.yml`.
  - `--environment <name>`: необязательное окружение GitHub Actions с точным совпадением.
  - `--json`: машиночитаемый вывод.

Пример:

```bash
clawhub package trusted-publisher set @openclaw/example-plugin \
  --repository openclaw/example-plugin \
  --workflow-filename package-publish.yml \
  --environment release
```

### `package trusted-publisher delete <name>`

- Удаляет конфигурацию доверенного издателя из пакета.
- Используйте это для отката, если привязку рабочего процесса, репозитория или окружения необходимо
  отключить или создать заново.
- Последующие фактические публикации должны использовать обычную публикацию с аутентификацией, пока конфигурация
  не будет настроена снова.
- Флаги:
  - `--json`: машиночитаемый вывод.

Пример:

```bash
clawhub package trusted-publisher delete @openclaw/example-plugin
```

### Телеметрия установки

- Отправляется после `clawhub install <slug>`, если выполнен вход, кроме случаев, когда
  задано `CLAWHUB_DISABLE_TELEMETRY=1`.
- Отправка данных выполняется по мере возможности. Команды установки не завершаются ошибкой, если телеметрия
  недоступна.
- Подробности: `docs/telemetry.md`.
