Get started

Формат навыка

Формат навыка

На диске

Навык — это папка.

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

  • SKILL.md (или skill.md; устаревший skills.md также принимается)

Необязательно:

  • любые вспомогательные текстовые файлы (см. «Разрешенные файлы»)
  • .clawhubignore (шаблоны игнорирования для публикации, устаревший .clawdhubignore)
  • .gitignore (также учитывается)

Импорт из GitHub

Веб-импортер GitHub строже, чем локальная публикация/синхронизация. Он обнаруживает только файлы SKILL.md или устаревшие skills.md в публичных репозиториях без форков, принадлежащих вошедшему аккаунту GitHub. Он не импортирует приватные репозитории, форки, архивированные/отключенные репозитории или сторонние публичные репозитории.

Локальные метаданные установки (записываются CLI):

  • <skill>/.clawhub/origin.json (устаревший .clawdhub)

Состояние установки в рабочем каталоге (записывается CLI):

  • <workdir>/.clawhub/lock.json (устаревший .clawdhub)

SKILL.md

  • Markdown с необязательным YAML frontmatter.
  • Сервер извлекает метаданные из frontmatter при публикации.
  • description используется как краткое описание навыка в UI/поиске.

Метаданные frontmatter

Метаданные навыка объявляются в YAML frontmatter в начале вашего SKILL.md. Это сообщает реестру (и анализу безопасности), что требуется вашему навыку для запуска.

Базовый frontmatter

yaml
---name: my-skilldescription: Short summary of what this skill does.version: 1.0.0---

Метаданные runtime (metadata.openclaw)

Объявите runtime-требования навыка в metadata.openclaw (псевдонимы: metadata.clawdbot, metadata.clawdis).

yaml
---name: my-skilldescription: Manage tasks via the Todoist API.metadata:  openclaw:    requires:      env:        - TODOIST_API_KEY      bins:        - curl    primaryEnv: TODOIST_API_KEY---

Используйте requires.env для переменных окружения, которые должны присутствовать до запуска навыка. Используйте envVars, когда нужны метаданные для отдельных переменных, включая необязательные переменные с required: false.

Полный справочник полей

Поле Тип Описание
requires.env string[] Обязательные переменные окружения, которые ожидает ваш навык.
requires.bins string[] CLI-бинарные файлы, которые все должны быть установлены.
requires.anyBins string[] CLI-бинарные файлы, из которых должен существовать хотя бы один.
requires.config string[] Пути к файлам конфигурации, которые читает ваш навык.
primaryEnv string Основная переменная окружения с учетными данными для вашего навыка.
envVars array Объявления переменных окружения с name, необязательным required и необязательным description. Задайте required: false для необязательных env vars.
always boolean Если true, навык всегда активен (явная установка не требуется).
skillKey string Переопределяет ключ вызова навыка.
emoji string Отображаемый emoji для навыка.
homepage string URL домашней страницы или документации навыка.
os string[] Ограничения ОС (например, ["macos"], ["linux"]).
install array Спецификации установки зависимостей (см. ниже).
nix object Спецификация Plugin для Nix (см. README).
config object Спецификация конфигурации Clawdbot (см. README).

Спецификации установки

Если вашему навыку нужно установить зависимости, объявите их в массиве install:

yaml
metadata:  openclaw:    install:      - kind: brew        formula: jq        bins: [jq]      - kind: node        package: typescript        bins: [tsc]

Поддерживаемые типы установки: brew, node, go, uv.

Необязательные переменные окружения

Объявляйте необязательные переменные окружения в metadata.openclaw.envVars и задавайте required: false. Не добавляйте необязательные записи в requires.env, потому что requires.env означает, что навык не может запускаться без них.

yaml
metadata:  openclaw:    primaryEnv: TODOIST_API_KEY    envVars:      - name: TODOIST_API_KEY        required: true        description: Todoist API token used for authenticated requests.      - name: TODOIST_PROJECT_ID        required: false        description: Optional default project ID when the user does not specify one.

Почему это важно

Анализ безопасности ClawHub проверяет, что объявления вашего навыка соответствуют тому, что он фактически делает. Если ваш код ссылается на TODOIST_API_KEY, но frontmatter не объявляет его в requires.env, primaryEnv или envVars, анализ пометит несоответствие метаданных. Точные объявления помогают навыку пройти проверку и помогают пользователям понять, что они устанавливают.

Пример: полный frontmatter

yaml
---name: todoist-clidescription: Manage Todoist tasks, projects, and labels from the command line.version: 1.2.0metadata:  openclaw:    requires:      env:        - TODOIST_API_KEY      bins:        - curl    primaryEnv: TODOIST_API_KEY    envVars:      - name: TODOIST_API_KEY        required: true        description: Todoist API token.      - name: TODOIST_PROJECT_ID        required: false        description: Optional default project ID.    emoji: "\u2705"    homepage: https://github.com/example/todoist-cli---

Разрешенные файлы

Публикация принимает только «текстовые» файлы.

  • Список разрешенных расширений находится в packages/schema/src/textFiles.ts (TEXT_FILE_EXTENSIONS).
  • Файлы скриптов все равно сканируются после загрузки; файлы PowerShell .ps1, .psm1 и .psd1 принимаются как текст.
  • Типы содержимого, начинающиеся с text/, считаются текстом; дополнительно действует небольшой список разрешенных типов (JSON/YAML/TOML/JS/TS/Markdown/SVG).

Ограничения (на стороне сервера):

  • Общий размер пакета: 50 МБ.
  • Текст для embeddings включает SKILL.md + до примерно 40 файлов не .md (ограничение по возможности).

Slugs

  • По умолчанию выводятся из имени папки.
  • Области пакетов должны точно совпадать с handle издателя ClawHub. Handles издателей могут использовать строчные буквы, цифры, дефисы, точки и подчеркивания; они должны начинаться и заканчиваться строчной буквой или цифрой.
  • Slugs пакетов должны быть в нижнем регистре и безопасны для npm, например @example.tools/demo-plugin или demo-plugin.

Версионирование + теги

  • Каждая публикация создает новую версию (semver).
  • Теги — это строковые указатели на версию; часто используется latest.

Лицензия

  • Все навыки, опубликованные на ClawHub, лицензируются по MIT-0.
  • Любой может использовать, изменять и распространять опубликованные навыки, в том числе коммерчески.
  • Указание авторства не требуется.
  • Не добавляйте конфликтующие условия лицензии в SKILL.md; ClawHub не поддерживает переопределение лицензии для отдельных навыков.

Платные навыки

  • ClawHub не поддерживает платные навыки, ценообразование для отдельных навыков, paywalls или распределение дохода.
  • Не добавляйте метаданные цен в SKILL.md; они не являются частью формата навыка и не сделают опубликованный навык платным.
  • Если ваш навык интегрируется с платным сторонним сервисом, четко задокументируйте внешнюю стоимость и требуемый аккаунт в инструкциях навыка и объявлениях env (requires.env для обязательных переменных или envVars с required: false для необязательных переменных).
Was this useful?
On this page

On this page