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
---name: my-skilldescription: Short summary of what this skill does.version: 1.0.0---Метаданные runtime (metadata.openclaw)
Объявите runtime-требования навыка в metadata.openclaw (псевдонимы: metadata.clawdbot, metadata.clawdis).
---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:
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 означает, что навык не может запускаться без них.
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
---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для необязательных переменных).