Get started
CLI
CLI
Пакет CLI: clawhub, исполняемый файл: clawhub.
Установите его глобально с помощью npm или pnpm:
npm i -g clawhub# илиpnpm add -g clawhubЗатем проверьте установку:
clawhub --helpclawhub loginclawhub 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_proxyHTTP_PROXY/http_proxyNO_PROXY/no_proxy
Если задана любая из этих переменных, CLI направляет исходящие запросы через
указанный прокси-сервер. HTTPS_PROXY используется для HTTPS-запросов, HTTP_PROXY
— для обычного HTTP. NO_PROXY / no_proxy учитывается для обхода прокси-сервера при
обращении к указанным хостам или доменам.
Это необходимо в системах, где прямые исходящие подключения заблокированы (например, в контейнерах Docker, на VPS Hetzner с доступом в интернет только через прокси-сервер или за корпоративными межсетевыми экранами).
Пример:
export HTTPS_PROXY=http://proxy.example.com:3128export NO_PROXY=localhost,127.0.0.1clawhub 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>.
clawhub skill publish ./my-skill --dry-runclawhub skill publish ./my-skillclawhub skill publish ./my-skill --version 2.0.0GitHub Actions
Многократно используемый рабочий процесс ClawHub
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выполняет только одностороннюю публикацию. Он не устанавливает, не обновляет, не загружает и не отправляет телеметрию установок или загрузок.
clawhub sync --all --dry-runclawhub sync --allclawhub sync --root ./skills --owner openclaw --bump minorscan --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, чтобы получить сохранённые результаты сканирования отправленной версии.
clawhub scan --slug gifgrepclawhub scan --slug gifgrep --version 1.2.3clawhub scan --slug gifgrep --update --output report.zipscan download <name>
- Требуется
clawhub login. - Скачивает сохранённый ZIP-архив отчёта о сканировании для отправленной версии Skills или плагина, включая версии, которые были заблокированы или скрыты проверками безопасности ClawHub.
- Для скачивания Skills используется слаг Skills, а по умолчанию —
--kind skill. - Для скачивания плагинов используется имя пакета и требуется
--kind plugin. --versionобязателен, чтобы авторы проверяли именно ту отправленную версию, которую заблокировал ClawHub.--output <file.zip>задаёт путь назначения.
clawhub scan download gifgrep --version 1.2.3clawhub scan download @scope/demo --version 2.0.0 --kind plugin --output report.zipGitHub Actions
ClawHub предоставляет официальный переиспользуемый рабочий процесс по адресу
/.github/workflows/skill-publish.yml
для репозиториев Skills и репозиториев каталогов.
Типичная настройка каталога:
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}/transferPOST /api/v1/skills/{slug}/transfer/acceptPOST /api/v1/skills/{slug}/transfer/rejectPOST /api/v1/skills/{slug}/transfer/cancelGET /api/v1/transfers/incomingGET /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
Примеры:
clawhub package explore --family code-pluginclawhub package explore --family code-plugin --os darwin --requires-desktopclawhub package explore --family code-plugin --artifact-kind npm-packclawhub package explore --npm-mirrorclawhub package explore episodic-claw --family code-pluginpackage 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: машиночитаемый вывод.
Примеры:
clawhub package download @openclaw/example-plugin --tag latestclawhub 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: машиночитаемый вывод.
Примеры:
clawhub package verify ./example-plugin-1.2.3.tgz --package @openclaw/example-plugin --version 1.2.3clawhub 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: машиночитаемый вывод.
Пример:
clawhub package validate ./example-pluginЕсли при проверке обнаружена проблема с пакетом, манифестом, импортом SDK или артефактом, см. Исправления ошибок проверки плагинов, затем повторно выполните команду.
package delete <name>
- Без
--versionвыполняет обратимое удаление пакета и всех выпусков. --version <version>безвозвратно удаляет один принадлежащий владельцу выпуск, который не является последним, через закрытый при сбое маршрут для конкретной версии. Удалённые версии нельзя восстановить или опубликовать повторно. Опубликуйте замену перед удалением текущей последней версии. Этот процесс для отдельной версии требует прав владельца пакета или администратора издателя организации; сотрудники платформы не могут обойти проверку владения пакетом.- Для обратимого удаления всего пакета требуются права владельца пакета, владельца или администратора издателя организации, модератора платформы либо администратора платформы.
- Флаги:
--version <version>: безвозвратно удалить одну версию, которая не является последней.--yes: пропустить подтверждение.--json: машиночитаемый вывод.
Пример:
clawhub package delete @openclaw/example-plugin --yesclawhub package delete @openclaw/example-plugin --version 1.2.3 --yespackage undelete <name>
- Восстанавливает обратимо удалённый пакет и выпуски.
- Восстановление удалённой версии не предусмотрено; безвозвратно удалённые версии восстановить нельзя.
- Требуются права владельца пакета, владельца или администратора издателя организации, модератора платформы либо администратора платформы.
- Вызывает
POST /api/v1/packages/{name}/undelete. - Флаги:
--yes: пропустить подтверждение.--json: машиночитаемый вывод.
Пример:
clawhub package undelete @openclaw/example-plugin --yespackage transfer <name>
- Передаёт пакет другому издателю.
- Требует административного доступа как к текущему владельцу пакета, так и к целевому издателю, если операция не выполняется администратором платформы.
- Имена пакетов с областью видимости должны передаваться владельцу соответствующей области.
- Вызывает
POST /api/v1/packages/{name}/transfer. - Флаги:
--to <owner>: идентификатор целевого издателя.--reason <text>: необязательная причина для аудита.--json: машиночитаемый вывод.
Пример:
clawhub package transfer @openclaw/example-plugin --to openclawpackage report
- Команда с аутентификацией для отправки модераторам жалобы на пакет.
- Вызывает
POST /api/v1/packages/{name}/report. - Жалобы относятся ко всему пакету, могут быть связаны с определённой версией и становятся доступными модераторам для рассмотрения.
- Сами по себе жалобы не скрывают пакеты автоматически и не блокируют скачивания.
- Флаги:
--version <version>: необязательная версия пакета, к которой относится жалоба.--reason <text>: обязательная причина жалобы.--json: машиночитаемый вывод.
Пример:
clawhub package report @openclaw/example-plugin --version 1.2.3 --reason "suspicious native payload"package moderation-status
- Команда для владельца, позволяющая проверить видимость пакета при модерации.
- Вызывает
GET /api/v1/packages/{name}/moderation. - Показывает текущее состояние сканирования пакета, количество открытых жалоб, состояние ручной модерации последнего выпуска, состояние блокировки скачивания и причины модерации.
- Флаги:
--json: машиночитаемый вывод.
Пример:
clawhub package moderation-status @openclaw/example-pluginpackage readiness <name>
- Проверяет, готов ли пакет к будущему использованию в OpenClaw.
- Вызывает
GET /api/v1/packages/{name}/readiness. - Сообщает о препятствиях, связанных с официальным статусом, доступностью ClawPack, дайджестом артефакта, происхождением исходного кода, совместимостью с OpenClaw, целевыми хостами, метаданными окружения и состоянием сканирования.
- Флаги:
--json: машиночитаемый вывод.
Пример:
clawhub package readiness @openclaw/example-pluginpackage migration-status <name>
- Показывает предназначенное для операторов состояние миграции пакета, который может заменить встроенный плагин OpenClaw.
- Вызывает ту же вычисляемую конечную точку проверки готовности, что и
package readiness, но выводит ориентированные на миграцию состояние, последнюю версию, статус официального пакета, проверки и препятствия. - Флаги:
--json: машиночитаемый вывод.
Пример:
clawhub package migration-status @openclaw/example-pluginpublisher create <handle>
- Создаёт издателя-организацию, принадлежащего аутентифицированному пользователю.
- Идентификатор преобразуется в нижний регистр и может передаваться с
@или без него. - Новые издатели-организации по умолчанию не считаются доверенными или официальными.
- Завершается ошибкой, если идентификатор уже используется существующим издателем, пользователем или зарезервированным маршрутом.
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.
clawhub package publish ./plugin.tgz --owner openclawРекомендуемый локальный процесс
Сначала используйте --dry-run, чтобы проверить сформированные метаданные пакета и
сведения о происхождении перед созданием реального выпуска:
npm packclawhub package publish ./my-plugin-1.2.3.tgz --family code-plugin --dry-runclawhub package publish ./my-plugin-1.2.3.tgz --family code-pluginПроцесс для локальной папки
При публикации плагинов с кодом из папки создаётся и загружается артефакт ClawPack из папки пакета:
clawhub package publish ./my-plugin --family code-plugin --dry-runclawhub package publish ./my-plugin --family code-pluginМинимальный package.json для --family code-plugin
Внешним плагинам с кодом требуется небольшой объём метаданных OpenClaw в
package.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.pluginApiopenclaw.build.openclawVersion
Примечания:
package.json.version— это версия выпуска вашего пакета, но она не используется как резервное значение при проверке совместимости и сборки OpenClaw.openclaw.hostTargetsиopenclaw.environment— необязательные метаданные. ClawHub может отображать их при наличии, но для публикации они не требуются.openclaw.compat.minGatewayVersionиopenclaw.build.pluginSdkVersion— необязательные дополнительные поля для публикации более подробных метаданных совместимости.- Если вы используете старую версию CLI
clawhub, обновите её перед публикацией, чтобы локальные предварительные проверки выполнялись до загрузки. - Если проверка сообщает код исправления, см. Исправления ошибок проверки плагинов.
GitHub Actions
ClawHub также предоставляет официальный повторно используемый рабочий процесс
/.github/workflows/package-publish.yml
для репозиториев плагинов.
Типичная конфигурация вызывающего рабочего процесса:
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: машиночитаемый вывод.
Пример:
clawhub package trusted-publisher get @openclaw/example-pluginpackage 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: машиночитаемый вывод.
Пример:
clawhub package trusted-publisher set @openclaw/example-plugin \ --repository openclaw/example-plugin \ --workflow-filename package-publish.yml \ --environment releasepackage trusted-publisher delete <name>
- Удаляет конфигурацию доверенного издателя из пакета.
- Используйте это для отката, если привязку рабочего процесса, репозитория или окружения необходимо отключить или создать заново.
- Последующие фактические публикации должны использовать обычную публикацию с аутентификацией, пока конфигурация не будет настроена снова.
- Флаги:
--json: машиночитаемый вывод.
Пример:
clawhub package trusted-publisher delete @openclaw/example-pluginТелеметрия установки
- Отправляется после
clawhub install <slug>, если выполнен вход, кроме случаев, когда заданоCLAWHUB_DISABLE_TELEMETRY=1. - Отправка данных выполняется по мере возможности. Команды установки не завершаются ошибкой, если телеметрия недоступна.
- Подробности:
docs/telemetry.md.