Get started
Публікація
Публікація
Публікація надсилає папку Skills або пакет Plugin до ClawHub під вибраним власником. ClawHub перевіряє, що ваш токен може публікувати від імені цього власника, перевіряє метадані, назву, версію, файли та інформацію про джерело, потім зберігає реліз і запускає автоматизовані перевірки безпеки.
Якщо перевірка не проходить, нічого не публікується. Нові релізи також можуть не з’являтися у звичайних поверхнях встановлення та завантаження, доки не завершиться огляд.
Skills
Найпростіший шлях публікації — CLI. Увійдіть, потім опублікуйте локальну папку Skills:
clawhub loginclawhub skill publish ./my-skill \ --slug my-skill \ --name "My Skill" \ --owner <owner>Використовуйте --owner <handle> під час публікації для власника-організації.
Не вказуйте його, щоб публікувати як автентифікований користувач. Публікація
пропускає незмінений вміст. Новий Skills починається з 1.0.0, а подальші
зміни автоматично публікують наступну patch-версію. Передавайте --version
лише тоді, коли потрібна явна версія.
Для репозиторіїв каталогу використовуйте багаторазовий
workflow skill-publish.yml
ClawHub. Він викликає skill publish для кожної безпосередньої папки Skills
під root (за замовчуванням: skills) або лише для папки, переданої як
skill_path.
jobs: publish: uses: openclaw/clawhub/.github/workflows/skill-publish.yml@main with: owner: <owner> dry_run: false secrets: clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}Використовуйте dry_run: true, щоб попередньо переглянути нові та змінені
Skills без публікації.
Plugins
Plugins використовують назви пакетів у стилі npm. Назви scoped-пакетів містять власника в першій частині назви:
@owner/package-nameScope має відповідати вибраному власнику публікації. Якщо ваш пакет має назву
@openclaw/dronzer, його можна опублікувати лише як @openclaw. Якщо ви
публікуєте як @vintageayu, перейменуйте пакет на @vintageayu/dronzer.
Це не дозволяє пакету заявляти namespace організації, який публікатор не контролює.
Якщо ви є законним власником організації, бренду, scope пакета, handle власника або namespace, який уже заявлено чи зарезервовано на ClawHub, відкрийте issue для заявки на організацію / namespace із публічним, неконфіденційним доказом. Див. Заявки на організації та namespace, щоб дізнатися, що включати, а що не варто додавати до публічних issues.
Перед публікацією Plugin
- Виберіть власника, який відповідає scope пакета.
- Додайте
openclaw.plugin.json. Code Plugins також потребуютьpackage.jsonзopenclaw.compat.pluginApiіopenclaw.build.openclawVersion. - Щоб показати власну іконку картки Plugin, додайте
iconдоopenclaw.plugin.jsonз будь-якою HTTPS URL-адресою зображення. - Додайте репозиторій джерела та точні метадані коміту або використовуйте CLI з checkout, пов’язаного з GitHub, щоб він міг їх виявити.
- Запустіть
clawhub package validate <source>перед публікацією. Для findings щодо пакета, manifest, SDK import або artifact див. Виправлення перевірки Plugin. - Запустіть
clawhub package publish <source> --dry-runперед створенням релізу. - Очікуйте, що нові релізи не потраплять до публічних поверхонь встановлення, доки не завершаться автоматизовані перевірки безпеки та верифікація.
Trusted Publishing для пакетів
Package trusted publishing налаштовується у два кроки:
- Опублікуйте пакет один раз через звичайний ручний або автентифікований
токеном
clawhub package publish. Це створює рядок пакета та визначає package managers, які можуть змінювати його trusted publisher config. - Package manager задає GitHub Actions trusted publisher config:
clawhub package trusted-publisher set @owner/package-name \ --repository owner/repo \ --workflow-filename package-publish.ymlПісля налаштування config майбутні підтримувані публікації GitHub Actions
можуть використовувати OIDC/trusted publishing без зберігання довгоживучого
токена ClawHub у репозиторії. Налаштований репозиторій і назва workflow-файлу
мають відповідати GitHub Actions OIDC claim. Якщо ви також передаєте
--environment <name>, GitHub Actions environment claim має точно відповідати
цій назві.
ClawHub перевіряє налаштований GitHub-репозиторій під час задавання trusted publisher config. Публічні репозиторії можна перевірити через публічні метадані GitHub. Для приватних репозиторіїв ClawHub потрібен доступ GitHub до цього репозиторію, наприклад через майбутнє встановлення ClawHub GitHub App або іншу авторизовану інтеграцію GitHub.
Поточний багаторазовий package publish workflow підтримує secretless trusted
publishing для публікацій workflow_dispatch, коли доступний id-token: write.
Справжні публікації через tag-push усе ще потребують clawhub_token, тому
залишайте CLAWHUB_TOKEN доступним для tag-релізів, перших публікацій,
untrusted packages або break-glass публікацій.
Перегляньте або видаліть config за допомогою:
clawhub package trusted-publisher get @owner/package-nameclawhub package trusted-publisher delete @owner/package-nameВидалення trusted publisher config — це шлях rollback. Воно вимикає майбутнє створення trusted publish token, доки package manager знову не задасть config.
FAQ
Scope пакета має відповідати вибраному власнику
Якщо scope пакета та вибраний власник не збігаються, ClawHub відхиляє публікацію:
Package scope "@openclaw" must match selected owner "@vintageayu".Publish as "@openclaw" or rename this package to "@vintageayu/dronzer".Щоб виправити це, або виберіть власника, названого scope пакета, або перейменуйте пакет так, щоб scope відповідав власнику, від імені якого ви можете публікувати.
Якщо назва пакета вже має правильний scope, але пакет належить неправильному публікатору, натомість передайте право власності:
clawhub package transfer @opik/opik-openclaw --to opikВикористовуйте transfer пакета або Skills лише тоді, коли маєте адміністративний доступ і до поточного власника, і до цільового публікатора. Package transfer не дозволяє публікувати в scope, яким ви не можете керувати.
Якщо ви не маєте доступу до поточного власника, але вважаєте, що ваша організація, проєкт або бренд є законним власником namespace, відкрийте issue для заявки на організацію / namespace із публічним, неконфіденційним доказом для розгляду staff. Перед поданням див. Заявки на організації та namespace.
Це захищає namespaces організацій. Пакет із назвою @openclaw/dronzer заявляє
namespace @openclaw, тому лише публікатори з доступом до власника @openclaw
можуть його опублікувати.