Get started
CLI
CLI
Пакет CLI: clawhub, bin: clawhub.
Установите его глобально с помощью npm или pnpm:
npm i -g clawhub# orpnpm add -g clawhubЗатем проверьте его:
clawhub --helpclawhub loginclawhub whoamiГлобальные флаги
--workdir <dir>: рабочий каталог (по умолчанию: cwd; откатывается к рабочей области Clawdbot, если она настроена)--dir <dir>: каталог установки внутри workdir (по умолчанию: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и завершает вход через callback local loopback. - Без графического интерфейса:
clawhub login --token clh_... - Удаленный/безголовый интерактивный режим:
clawhub login --deviceвыводит код и ждет, пока вы авторизуете его на<site>/cli/device.
whoami
- Проверяет сохраненный токен через
/api/v1/whoami.
token
- Печатает сохраненный API-токен в stdout.
- Полезно для передачи локального токена входа в команды настройки секретов CI.
star <skill> / unstar <skill>
- Добавляет или удаляет skill из ваших избранных.
- Вызывает
POST /api/v1/stars/<slug>иDELETE /api/v1/stars/<slug>. --yesпропускает подтверждение.
search <query...>
- Вызывает
/api/v1/search?q=.... - Вывод включает slug skill, handle владельца, отображаемое имя и оценку релевантности.
- Поиск отдает предпочтение точным совпадениям токенов slug/имени перед популярностью загрузок. Отдельный токен slug, например
map, соответствуетpersonal-mapсильнее, чем подстроке внутриamap. - Популярность — небольшой априорный фактор ранжирования, а не гарантия верхней позиции.
- Если skill должен отображаться, но не отображается, выполните
clawhub inspect @owner/slugпосле входа, чтобы проверить видимую владельцу диагностику модерации перед переименованием метаданных.
explore
- Перечисляет новейшие skills через
/api/v1/skills?limit=...&sort=createdAt(сортировка поcreatedAtпо убыванию). - Флаги:
--limit <n>(1-200, по умолчанию: 25)--sort newest|updated|rating|downloads|trending(по умолчанию: newest). Устаревшие псевдонимы сортировки установки продолжают работать для совместимости.--json(машиночитаемый вывод)
- Вывод:
<slug> v<version> <age> <summary>(summary обрезается до 50 символов).
inspect @owner/slug
- Получает метаданные skill и файлы версии без установки.
--version <version>: проверить конкретную версию (по умолчанию: latest).--tag <tag>: проверить помеченную тегом версию (например,latest).--versions: вывести историю версий (первая страница).--limit <n>: максимальное число версий в списке (1-200).--files: вывести список файлов для выбранной версии.--file <path>: получить сырое содержимое файла (только текстовые файлы; лимит 200 КБ).--json: машиночитаемый вывод.
install @owner/slug
- Определяет последнюю версию для указанного владельца и skill.
- Скачивает zip через
/api/v1/download. - Извлекает в
<workdir>/<dir>/<slug>. - Отказывается перезаписывать закрепленные skills; сначала выполните
clawhub unpin <skill>. - Записывает:
<workdir>/.clawhub/lock.json(устаревшее.clawdhub)<skill>/.clawhub/origin.json(устаревшее.clawdhub)
uninstall <skill>
- Удаляет
<workdir>/<dir>/<slug>и удаляет запись из lockfile. - Отправляет телеметрию по возможности, пока выполнен вход, чтобы текущие счетчики установок можно было деактивировать.
- Интерактивный режим: запрашивает подтверждение.
- Неинтерактивный режим (
--no-input): требует--yes.
list
- Читает
<workdir>/.clawhub/lock.json(устаревшее.clawdhub). - Показывает
pinnedрядом со skills, замороженными черезclawhub pin, включая необязательную причину.
pin <skill>
- Помечает установленный skill как закрепленный в lockfile.
--reason <text>записывает, почему skill заморожен.- Закрепленные skills пропускаются
update --allи отклоняются при прямомupdate <skill>. - Закрепленные skills также отклоняют
install --force, чтобы локальные байты не были случайно заменены.
unpin <skill>
- Удаляет закрепление lockfile с установленного skill, чтобы будущие обновления могли изменить его.
update [@owner/slug] / update --all
- Вычисляет fingerprint по локальным файлам.
- Если fingerprint совпадает с известной версией: без запроса.
- Если fingerprint не совпадает:
- по умолчанию отказывается
- перезаписывает с
--force(или по запросу, если интерактивно)
- Закрепленные skills никогда не обновляются с
--force. update <skill>быстро завершается с ошибкой для закрепленных skills и сообщает, что сначала нужно выполнитьclawhub unpin <skill>.update --allпропускает закрепленные slugs и печатает сводку о том, что осталось замороженным.
skill publish <path>
- Сравнивает fingerprint локального bundle с ClawHub и успешно завершается, когда содержимое уже опубликовано.
- Новые skills по умолчанию получают
1.0.0; измененные skills по умолчанию получают следующую patch- версию. --version <version>явно выбирает версию и публикует, даже когда содержимое совпадает с существующей версией.--dry-runвычисляет публикацию без загрузки;--jsonпечатает машиночитаемый результат.--owner <handle>публикует от имени handle издателя org/user, когда actor имеет доступ издателя.--migrate-ownerпереносит существующий skill в--ownerпри публикации новой версии. Требует доступа admin/owner у обоих издателей.- Поведение владельцев и проверки объясняется в
docs/publishing.md. - Публикация skill означает, что он выпускается под
MIT-0на ClawHub. - Опубликованные skills можно свободно использовать, изменять и распространять без указания авторства.
- ClawHub не поддерживает платные skills или ценообразование для отдельных skills.
- Устаревший псевдоним:
publish <path>.
clawhub skill publish ./my-skill --dry-runclawhub skill publish ./my-skillclawhub skill publish ./my-skill --version 2.0.0GitHub Actions
Переиспользуемый workflow ClawHub
skill-publish.yml
вызывает skill publish для одного skill_path или для каждой непосредственной папки skill
внутри root (по умолчанию: skills). Он пропускает неизмененные skills и использует то же
поведение автоматической patch-версии.
Установите dry_run: true, чтобы предварительно посмотреть результат без токена. Для настоящих публикаций требуется
секрет clawhub_token.
sync
- Сканирует текущий workdir, настроенный каталог skills и любые
папки
--root <dir>на наличие локальных папок skills, содержащихSKILL.mdилиskill.md. - Сравнивает fingerprint каждого локального skill с ClawHub и публикует только новые или измененные skills.
- Новые skills публикуются как
1.0.0; измененные skills по умолчанию публикуют следующую patch-версию. Используйте--bump minor|majorдля пакетов обновлений, которые должны перейти на более крупный шаг semver. --dry-runпоказывает план публикации без загрузки;--jsonпечатает машиночитаемый план.--allпубликует каждый новый или измененный skill без запроса. Без--allинтерактивные терминалы позволяют выбрать skills для публикации.--owner <handle>публикует от имени handle издателя org/user, когда actor имеет доступ издателя.sync— только односторонняя публикация. Он не устанавливает, не обновляет, не скачивает и не сообщает телеметрию установок/загрузок.
clawhub sync --all --dry-runclawhub sync --allclawhub sync --root ./skills --owner openclaw --bump minorscan --slug <slug>
- Требует
clawhub login. - Запускает ClawHub ClawScan через
POST /api/v1/skills/-/scan, затем опрашивает до терминального состояния scan. - Scans асинхронны и могут потребовать времени для завершения. Пока scan находится в очереди, индикатор в терминале показывает текущую приоритетную позицию scan и сколько scans впереди.
- Для опубликованных scans требуется владение или доступ к управлению издателем. Модераторы/admins могут использовать тот же backend через
clawhub-admin. --updateдопустим только с--slug; он записывает успешные результаты опубликованного scan обратно в выбранную версию.--output <file.zip>скачивает полный архив отчета сmanifest.json,clawscan.json,skillspector.json,static-analysis.json,virustotal.jsonиREADME.md.--jsonпечатает полный ответ опроса для автоматизации.- Scans локального пути больше не поддерживаются. Загрузите новую версию, затем используйте
scan download, чтобы получить сохраненные результаты scan для этой отправленной версии.
clawhub scan --slug gifgrepclawhub scan --slug gifgrep --version 1.2.3clawhub scan --slug gifgrep --update --output report.zipscan download <name>
- Требует
clawhub login. - Скачивает ZIP сохраненного отчета scan для отправленной версии skill или plugin, включая версии, которые были заблокированы или скрыты проверками безопасности ClawHub.
- Скачивания skill используют slug skill и по умолчанию
--kind skill. - Скачивания Plugin используют имя пакета и требуют
--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 поставляет официальный переиспользуемый workflow по адресу
/.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, чтобы обработать одну папку skill. ownerсоответствует флагу CLI--owner; опустите его, чтобы публиковать как аутентифицированный пользователь.- Публикация skills V1 использует
clawhub_token; доверенная публикация GitHub OIDC пока доступна только для пакетов.
delete <skill>
- Без
--versionвыполняет мягкое удаление skill (владелец, модератор или администратор). - Вызывает
DELETE /api/v1/skills/{slug}. - Мягкие удаления, инициированные владельцем, резервируют slug на 30 дней; команда выводит время истечения.
--version <version>безвозвратно удаляет одну принадлежащую владельцу не самую новую версию через fail-closed, версионированный маршрут. Удаленные версии нельзя восстановить или опубликовать повторно. Опубликуйте замену перед удалением текущей самой новой версии. Сотрудники платформы не обходят право владения для этого потока только для версий.--reason <text>записывает модераторскую заметку для мягкого удаления всего skill и журнала аудита.--note <text>— псевдоним для--reason.--yesпропускает подтверждение.
undelete <skill>
- Восстанавливает скрытый skill (владелец, модератор или администратор).
- Отмены удаления версии нет; безвозвратно удаленные версии нельзя восстановить.
- Вызывает
POST /api/v1/skills/{slug}/undelete. --reason <text>записывает модераторскую заметку для skill и журнала аудита.--note <text>— псевдоним для--reason.--yesпропускает подтверждение.
hide <skill>
- Скрывает skill (владелец, модератор или администратор).
- Псевдоним для
delete.
unhide <skill>
- Отображает skill (владелец, модератор или администратор).
- Псевдоним для
undelete.
skill rename <skill> <new-name>
- Переименовывает принадлежащий владельцу skill и сохраняет предыдущий slug как псевдоним перенаправления.
- Вызывает
POST /api/v1/skills/{slug}/rename. --yesпропускает подтверждение.
skill merge <source> <target>
- Объединяет один принадлежащий владельцу skill с другим принадлежащим владельцу skill.
- Исходный slug перестает публично отображаться и становится псевдонимом перенаправления к целевому.
- Вызывает
POST /api/v1/skills/{sourceSlug}/merge. --yesпропускает подтверждение.
transfer
- Рабочий процесс передачи права владения.
- Передачи пользовательским handle создают ожидающий запрос, который получатель принимает.
- Передачи handle организаций/издателей применяются немедленно только когда у действующего пользователя есть административный доступ и к текущему владельцу, и к целевому издателю.
- Подкоманды:
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. - Используйте это для plugins и других записей семейства пакетов; верхнеуровневый
searchостается поверхностью поиска skill. - Флаги:
--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>
- Получает метаданные пакета без установки.
- Используйте это для метаданных plugin, совместимости, проверки, исходного кода и инспекции версий/файлов.
--version <version>: проверить конкретную версию (по умолчанию: latest).--tag <tag>: проверить версию с тегом (например,latest).--versions: вывести историю версий (первая страница).--limit <n>: максимальное число версий в списке (1-100).--files: вывести список файлов для выбранной версии.--file <path>: получить необработанное содержимое файла (только текстовые файлы; лимит 200 КБ).--json: машиночитаемый вывод.
package download <name>
- Разрешает версию пакета через
GET /api/v1/packages/{name}/versions/{version}/artifact. - Скачивает артефакт из
downloadUrlрезолвера. - Проверяет ClawHub SHA-256 для всех артефактов.
- Для артефактов ClawPack npm-pack также проверяет целостность npm
sha512, npm shasum и имя/версиюpackage.jsontarball. - Устаревшие 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>
- Вычисляет ClawHub SHA-256, целостность npm
sha512и npm shasum для локального артефакта. - С
--packageразрешает ожидаемые метаданные из ClawHub и сравнивает локальный файл с метаданными опубликованного артефакта. - С прямыми флагами дайджеста проверяет без сетевого запроса.
- Флаги:
--package <name>: имя пакета для разрешения ожидаемых метаданных артефакта.--version <version>или--tag <tag>: ожидаемая версия пакета.--sha256 <hex>: ожидаемый ClawHub SHA-256.--npm-integrity <sri>: ожидаемая целостность npm.--npm-shasum <sha1>: ожидаемый npm shasum.--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>
- Запускает встроенный в ClawHub CLI Plugin Inspector для локальной папки пакета plugin.
- По умолчанию использует офлайн/статическую валидацию, без поиска или импорта локального checkout OpenClaw.
- Жесткие ошибки совместимости завершаются ненулевым кодом. Находки только с предупреждениями выводятся, но завершаются нулевым кодом.
- Флаги:
--out <dir>: записать отчеты Plugin Inspector в этот каталог.--openclaw <path>: проверять относительно явного локального checkout OpenClaw.--runtime: включить runtime-захват; импортирует код plugin.--allow-execute: разрешить runtime-захват в изолированной рабочей области.--no-mock-sdk: отключить имитированный OpenClaw SDK во время runtime-захвата.--json: машиночитаемый вывод.
Пример:
clawhub package validate ./example-pluginЕсли валидация сообщает о находке в пакете, манифесте, импорте SDK или артефакте, см. исправления валидации Plugin, затем повторно выполните команду.
package delete <name>
- Без
--versionвыполняет мягкое удаление пакета и всех релизов. --version <version>безвозвратно удаляет один принадлежащий владельцу не самый новый релиз через fail-closed, версионированный маршрут. Удаленные версии нельзя восстановить или опубликовать повторно. Опубликуйте замену перед удалением текущей самой новой версии. Этот поток только для версий требует владельца пакета или администратора издателя организации; сотрудники платформы не обходят право владения пакетом.- Мягкое удаление всего пакета требует владельца пакета, владельца/администратора издателя организации, модератора платформы или администратора платформы.
- Флаги:
--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>
- Передает пакет другому издателю.
- Требует административного доступа и к текущему владельцу пакета, и к целевому издателю, если это не выполняется администратором платформы.
- Имена scoped-пакетов должны передаваться владельцу соответствующего scope.
- Вызывает
POST /api/v1/packages/{name}/transfer. - Флаги:
--to <owner>: handle целевого издателя.--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>
- Показывает ориентированное на оператора состояние миграции для пакета, который может заменить встроенный plugin OpenClaw.
- Вызывает тот же вычисляемый эндпоинт готовности, что и
package readiness, но выводит ориентированный на миграцию статус, последнюю версию, состояние официального пакета, проверки и блокеры. - Флаги:
--json: машиночитаемый вывод.
Пример:
clawhub package migration-status @openclaw/example-pluginpublisher create <handle>
- Создает издателя организации, принадлежащего аутентифицированному пользователю.
- Handle нормализуется к нижнему регистру и может передаваться с
@или без него. - Новые издатели организаций по умолчанию не являются доверенными/официальными.
- Завершается ошибкой, если handle уже используется существующим издателем, пользователем или зарезервированным маршрутом.
clawhub publisher create opik --display-name "Opik"package publish <source>
- Публикует кодовый plugin или пакетный plugin через
POST /api/v1/packages. <source>принимает:- Путь к локальной папке:
./my-plugin - Локальный npm-pack tarball ClawPack:
./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-pack и использует извлеченное содержимоеpackage/только для валидации и предварительного заполнения метаданных. - Папки кодовых plugins перед загрузкой упаковываются в npm tarball ClawPack, чтобы установки OpenClaw могли проверить точный артефакт. Папки пакетных plugins по-прежнему используют путь публикации извлеченных файлов.
- Для источников GitHub атрибуция источника автоматически заполняется из репозитория, разрешенного коммита, ref и подпути.
- Для локальных папок атрибуция источника автоматически определяется из локального git, когда origin remote указывает на GitHub.
- Внешние кодовые plugins должны явно объявлять
openclaw.compat.pluginApiиopenclaw.build.openclawVersion. Верхнеуровневыйpackage.json.versionне используется как fallback для валидации публикации. --dry-runпредварительно показывает разрешенную полезную нагрузку публикации без загрузки.--jsonвыводит машиночитаемый результат для CI.--owner <handle>публикует под пользовательским или организационным handle издателя, когда у участника есть доступ издателя.- Имена scoped-пакетов должны соответствовать выбранному владельцу. См.
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Поток с локальной папкой
Для кодовых plugins публикация папки собирает и загружает артефакт ClawPack из папки пакета:
clawhub package publish ./my-plugin --family code-plugin --dry-runclawhub package publish ./my-plugin --family code-pluginМинимальный package.json для --family code-plugin
Внешним кодовым plugins требуется небольшой объем метаданных 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— это версия релиза вашего пакета, но она не используется как fallback для валидации совместимости/сборки OpenClaw.openclaw.hostTargetsиopenclaw.environment— необязательные метаданные. ClawHub может отображать их при наличии, но они не требуются для публикации.openclaw.compat.minGatewayVersionиopenclaw.build.pluginSdkVersion— необязательные дополнительные поля, если вы хотите опубликовать более подробные метаданные совместимости.- Если вы используете старый релиз CLI
clawhub, обновитесь перед публикацией, чтобы локальные предварительные проверки выполнялись до загрузки. - Если валидация сообщает код исправления, см. исправления валидации Plugin.
GitHub Actions
ClawHub также поставляет официальный переиспользуемый workflow по адресу
/.github/workflows/package-publish.yml
для репозиториев plugins.
Типичная настройка вызывающего workflow:
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 }}Примечания:
- Переиспользуемый workflow по умолчанию задает
sourceкак вызывающий репозиторий. - Для монорепозиториев передайте
source_path, чтобы workflow публиковал папку пакета plugin, напримерsource_path: extensions/codex. - Зафиксируйте переиспользуемый workflow на стабильном теге или полном SHA коммита. Не запускайте публикацию релиза из
@main. pull_requestдолжен использоватьdry_run: true, чтобы CI не вносил побочных изменений.- Реальные публикации следует ограничивать доверенными событиями, такими как
workflow_dispatchили push тегов. - Доверенная публикация без секрета работает только на
workflow_dispatch; для push тегов по-прежнему нуженclawhub_token. - Держите
clawhub_tokenдоступным для первой публикации, недоверенных пакетов или экстренных публикаций. - Workflow загружает JSON-результат как артефакт и предоставляет его как outputs workflow.
package trusted-publisher get <name>
- Показывает конфигурацию доверенного издателя GitHub Actions для пакета.
- Используйте это после настройки конфигурации, чтобы подтвердить репозиторий, имя файла workflow и необязательную привязку environment.
- Флаги:
--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>должен совпадать с именем файла workflow в.github/workflows/.--environment <name>необязателен. Когда он настроен, environment GitHub Actions в claim OIDC должен совпадать точно.- ClawHub проверяет настроенный репозиторий GitHub при выполнении этой команды. Публичные репозитории можно проверить через публичные метаданные GitHub. Приватные репозитории требуют, чтобы ClawHub имел доступ GitHub к этому репозиторию, например через будущую установку GitHub App ClawHub или другую авторизованную интеграцию GitHub.
- Флаги:
--repository <repo>: репозиторий GitHub, напримерopenclaw/example-plugin.--workflow-filename <file>: имя файла workflow, напримерpackage-publish.yml.--environment <name>: необязательный environment 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>
- Удаляет конфигурацию доверенного издателя из пакета.
- Используйте это как откат, если workflow, репозиторий или привязку environment нужно отключить или создать заново.
- Будущие реальные публикации должны использовать обычную аутентифицированную публикацию, пока конфигурация не будет настроена снова.
- Флаги:
--json: машиночитаемый вывод.
Пример:
clawhub package trusted-publisher delete @openclaw/example-pluginТелеметрия установки
- Отправляется после
clawhub install <slug>при входе в систему, если не заданоCLAWHUB_DISABLE_TELEMETRY=1. - Отчетность выполняется по принципу best-effort. Команды установки не завершаются ошибкой, если телеметрия недоступна.
- Подробности:
docs/telemetry.md.