Skills

Skills

Skills — это файлы инструкций в формате Markdown, которые объясняют агенту, как и когда использовать инструменты. Каждый навык находится в каталоге, содержащем файл SKILL.md с YAML- метаданными и телом в формате Markdown. OpenClaw загружает встроенные навыки и все локальные переопределения, а при загрузке фильтрует их на основе окружения, конфигурации и наличия исполняемых файлов.

Порядок загрузки

OpenClaw загружает навыки из следующих источников, начиная с источника с наивысшим приоритетом. Если навык с одним и тем же именем встречается в нескольких местах, используется источник с наивысшим приоритетом.

Приоритет Источник Путь
1 — наивысший Навыки рабочей области <workspace>/skills
2 Навыки агента проекта <workspace>/.agents/skills
3 Личные навыки агента ~/.agents/skills
4 Управляемые / локальные навыки ~/.openclaw/skills
5 Встроенные навыки поставляются вместе с установкой
6 — наименьший Дополнительные каталоги skills.load.extraDirs + навыки плагинов

Корневые каталоги навыков поддерживают сгруппированную структуру. OpenClaw обнаруживает навык, если SKILL.md находится в любом месте внутри настроенного корневого каталога (на глубине до 6 уровней):

text
<workspace>/skills/research/SKILL.md          ✓ найден как "research"<workspace>/skills/personal/research/SKILL.md ✓ также найден как "research"

Путь к папке используется только для организации. Имя навыка и его команда с косой чертой берутся из поля метаданных name (или из имени каталога, если name отсутствует). Списки разрешённых навыков для агентов (см. ниже) также сопоставляются по этому name.

Навыки, размещённые на Node

Подключённый Node без графического интерфейса может публиковать навыки, установленные в его активном каталоге навыков OpenClaw (~/.openclaw/skills по умолчанию; применяются переопределения окружения профиля). Они отображаются в обычном списке навыков агента, пока Node подключён, и исчезают после его отключения. При совпадении имён локальный навык или навык Gateway сохраняет своё имя; навык Node получает детерминированное имя с префиксом Node. Для навыков, размещённых на Node, в версии v1 имя каталога должно совпадать с полем метаданных name навыка.

Запись навыка содержит адрес Node. Его файлы, относительные ссылки и исполняемые файлы находятся на Node, поэтому загружайте и выполняйте его с помощью exec host=node node=<node-id>. После изменения файлов навыка перезапустите хост Node. Сведения о сопряжении и способах отключения см. в разделе Node.

Навыки отдельного агента и общие навыки

В конфигурациях с несколькими агентами у каждого агента есть собственная рабочая область. Используйте путь, соответствующий требуемой области видимости:

Область Путь Кому доступен
Отдельный агент <workspace>/skills Только этому агенту
Агент проекта <workspace>/.agents/skills Только агенту этой рабочей области
Личный агент ~/.agents/skills Всем агентам на этом компьютере
Общие управляемые ~/.openclaw/skills Всем агентам на этом компьютере
Дополнительные каталоги skills.load.extraDirs Всем агентам на этом компьютере

Списки разрешённых навыков для агентов

Расположение навыка (приоритет) и видимость навыка (какой агент может его использовать) управляются отдельно. Используйте списки разрешённых навыков, чтобы ограничить навыки, доступные агенту, независимо от источника их загрузки.

json5
{  agents: {    defaults: {      skills: ["github", "weather"], // общая базовая конфигурация    },    list: [      { id: "writer" }, // наследует github, weather      { id: "docs", skills: ["docs-search"] }, // полностью заменяет значения по умолчанию      { id: "locked-down", skills: [] }, // без навыков    ],  },}
Правила списков разрешённых навыков
  • Не указывайте agents.defaults.skills, чтобы по умолчанию не ограничивать никакие навыки.
  • Не указывайте agents.list[].skills, чтобы наследовать agents.defaults.skills.
  • Задайте agents.list[].skills: [], чтобы не предоставлять этому агенту никаких навыков.
  • Непустой список agents.list[].skills является окончательным набором — он не объединяется со значениями по умолчанию.
  • Итоговый список разрешённых навыков применяется при формировании промпта, обнаружении команд с косой чертой, синхронизации песочницы и создании снимков навыков.
  • Это не граница авторизации оболочки хоста. Если тот же агент может использовать exec, ограничьте эту оболочку отдельно с помощью песочницы, изоляции пользователей ОС, списков запрещённых и разрешённых команд выполнения и отдельных учётных данных для каждого ресурса.

Плагины и навыки

Плагины могут поставлять собственные навыки, перечисляя каталоги skills в openclaw.plugin.json (пути указываются относительно корневого каталога плагина). Навыки плагина загружаются, когда плагин включён. Например, плагин браузера поставляет навык browser-automation для многоэтапного управления браузером.

Каталоги навыков плагинов объединяются на том же уровне с низким приоритетом, что и skills.load.extraDirs, поэтому встроенный, управляемый, агентский навык или навык рабочей области с тем же именем переопределяет их. Управляйте применимостью самого навыка плагина с помощью metadata.openclaw.requires в его метаданных, как и для любого другого навыка.

Полное описание системы плагинов см. в разделах Плагины и Инструменты.

Мастерская навыков

Мастерская навыков — это очередь предложений между агентом и активными файлами навыков. Когда агент обнаруживает работу, пригодную для повторного использования, он создаёт предложение вместо непосредственной записи в SKILL.md. Вы проверяете и утверждаете предложение до внесения каких-либо изменений.

bash
openclaw skills workshop listopenclaw skills workshop inspect <proposal-id>openclaw skills workshop apply <proposal-id>

Полное описание жизненного цикла, справочник CLI и конфигурацию см. в разделе Мастерская навыков.

Установка из ClawHub

ClawHub — это общедоступный реестр навыков. Используйте команды openclaw skills для установки и обновления или CLI clawhub для публикации и синхронизации.

Действие Команда
Установить навык в рабочую область openclaw skills install @owner/<slug>
Установить из репозитория Git openclaw skills install git:owner/repo@ref
Установить локальный каталог навыка openclaw skills install ./path/to/skill --as my-tool
Установить для всех локальных агентов openclaw skills install @owner/<slug> --global
Обновить все навыки рабочей области openclaw skills update --all
Обновить общий управляемый навык openclaw skills update @owner/<slug> --global
Обновить все общие управляемые навыки openclaw skills update --all --global
Проверить контур доверия навыка openclaw skills verify @owner/<slug>
Вывести созданную карточку навыка openclaw skills verify @owner/<slug> --card
Опубликовать / синхронизировать через CLI ClawHub clawhub sync --all
Сведения об установке

openclaw skills install по умолчанию устанавливает навык в каталог skills/ активной рабочей области. Добавьте --global, чтобы установить его в общий каталог ~/.openclaw/skills, доступный всем локальным агентам, если их списки разрешённых навыков не ограничивают доступ.

При установке из Git и локального источника ожидается наличие SKILL.md в корне источника. Идентификатор берётся из name метаданных SKILL.md, если значение допустимо, иначе используется имя каталога или репозитория. Для переопределения используйте --as <slug>. openclaw skills update отслеживает только установки из ClawHub — для обновления источников Git или локальных источников установите их повторно.

Проверка и сканирование безопасности

openclaw skills verify @owner/<slug> запрашивает у ClawHub контур доверия clawhub.skill.verify.v1 навыка. Установленные навыки ClawHub проверяются по версии и реестру, записанным в .clawhub/origin.json. Идентификаторы без имени владельца по-прежнему принимаются для уже установленных или однозначно определяемых навыков, но ссылки с указанием владельца устраняют неоднозначность издателя.

Перед установкой на страницах навыков ClawHub отображается состояние последнего сканирования безопасности, а отдельные страницы содержат сведения о VirusTotal, ClawScan и статическом анализе. Команда завершается с ненулевым кодом, если ClawHub помечает проверку как неуспешную. Издатели устраняют ложные срабатывания через панель управления ClawHub или clawhub skill rescan @owner/<slug>.

Установка из частных архивов

Клиенты Gateway, которым требуется доставка не через ClawHub, могут подготовить ZIP-архив навыка с помощью skills.upload.begin, skills.upload.chunk и skills.upload.commit, а затем установить его с помощью skills.install({ source: "upload", ... }). Этот путь по умолчанию отключён и требует skills.install.allowUploadedArchives: true в openclaw.json. Для обычной установки из ClawHub этот параметр не требуется.

Безопасность

Ограничение путей

Обнаружение навыков рабочей области, агента проекта и дополнительных каталогов принимает только корневые каталоги навыков, разрешённый реальный путь которых остаётся внутри настроенного корневого каталога, если только skills.load.allowSymlinkTargets явно не определяет целевой корневой каталог как доверенный. Мастерская навыков выполняет запись через такие доверенные цели, только если включён skills.workshop.allowSymlinkTargetWrites. Управляемый каталог ~/.openclaw/skills и личный каталог ~/.agents/skills могут содержать папки навыков, являющиеся символическими ссылками, но реальный путь каждого SKILL.md всё равно должен оставаться внутри его разрешённого каталога навыка.

Политика установки оператора

Настройте security.installPolicy для выполнения доверенной локальной команды политики перед продолжением установки навыка. Политика получает метаданные и путь к подготовленному источнику, применяется к ClawHub, загруженным архивам, Git, локальным источникам, обновлениям и путям установки зависимостей и запрещает операцию, если команда не может вернуть допустимое решение.

Область внедрения секретов

skills.entries.*.env и skills.entries.*.apiKey внедряют секреты в процесс хоста только на время текущего хода агента, но не в песочницу. Не включайте секреты в промпты и журналы.

Более широкую модель угроз и контрольные списки безопасности см. в разделе Безопасность.

Формат SKILL.md

Каждый навык должен содержать как минимум name и description в метаданных:

markdown
---name: image-labdescription: Создание или редактирование изображений с помощью процесса обработки изображений, поддерживаемого провайдером--- Когда пользователь просит создать изображение, используйте инструмент `image_generate`...

Необязательные ключи метаданных

homepagestring

URL, отображаемый как "Website" в интерфейсе Skills для macOS. Также поддерживается через metadata.openclaw.homepage.

user-invocablebooleandefault: true

Когда true, навык доступен как вызываемая пользователем команда с косой чертой.

disable-model-invocationbooleandefault: false

Когда true, OpenClaw не включает инструкции навыка в обычный промпт агента. Навык по-прежнему доступен как команда с косой чертой, если user-invocable также имеет значение true.

command-dispatch"tool"

Если установлено значение tool, команда с косой чертой обходит модель и направляется непосредственно зарегистрированному инструменту.

command-toolstring

Имя инструмента, вызываемого при установленном command-dispatch: tool.

command-arg-mode"raw"default: raw

При направлении инструменту передаёт ему исходную строку аргументов без разбора ядром. Инструмент получает { command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }.

Условия доступности

OpenClaw фильтрует навыки во время загрузки с помощью metadata.openclaw (объекта JSON5, встроенного во frontmatter; см. примечание о разборе выше). Навык без блока metadata.openclaw всегда доступен, если он не отключён явно.

markdown
---name: image-labdescription: Создание или редактирование изображений с помощью процесса обработки изображений на базе провайдераmetadata:  {    "openclaw":      {        "requires": { "bins": ["uv"], "env": ["GEMINI_API_KEY"], "config": ["browser.enabled"] },        "primaryEnv": "GEMINI_API_KEY",      },  }---
alwaysboolean

Когда true, навык всегда включается, а все остальные условия пропускаются.

emojistring

Необязательный эмодзи, отображаемый в интерфейсе Skills для macOS.

homepagestring

Необязательный URL-адрес, отображаемый как "Website" в интерфейсе Skills для macOS.

os("darwin" | "linux" | "win32")[]

Фильтр платформ. Если он задан, навык доступен только в одной из указанных ОС.

requires.binsstring[]

Каждый исполняемый файл должен существовать в PATH.

requires.anyBinsstring[]

В PATH должен существовать хотя бы один исполняемый файл.

requires.envstring[]

Каждая переменная окружения должна существовать в процессе или предоставляться через конфигурацию.

requires.configstring[]

Каждый путь openclaw.json должен иметь истинное значение.

primaryEnvstring

Имя переменной окружения, связанной с skills.entries.<name>.apiKey.

installobject[]

Необязательные спецификации установщиков, используемые интерфейсом Skills для macOS (brew / node / go / uv / download).

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

Спецификации установщиков указывают интерфейсу Skills для macOS, как установить зависимость:

markdown
---name: geminidescription: Использование Gemini CLI для помощи в программировании и поиска в Google.metadata:  {    "openclaw":      {        "emoji": "♊️",        "requires": { "bins": ["gemini"] },        "install":          [            {              "id": "brew",              "kind": "brew",              "formula": "gemini-cli",              "bins": ["gemini"],              "label": "Установить Gemini CLI (brew)",            },          ],      },  }---
Правила выбора установщика
  • Если указано несколько установщиков, Gateway выбирает один предпочтительный вариант (brew, если он доступен, иначе node).
  • Если все установщики имеют тип download, OpenClaw выводит каждую запись, чтобы вы могли увидеть все доступные артефакты.
  • Спецификации могут включать os: ["darwin"|"linux"|"win32"] для фильтрации по платформе.
  • При установке через Node учитывается skills.install.nodeManager в openclaw.json (по умолчанию: npm; варианты: npm / pnpm / yarn / bun). Это влияет только на установку навыков; средой выполнения Gateway по-прежнему должен быть Node.
  • Порядок предпочтения установщиков Gateway: Homebrew → uv → настроенный менеджер Node → go → download.
Сведения об отдельных установщиках
  • Homebrew: OpenClaw не устанавливает Homebrew автоматически и не преобразует формулы brew в команды системного менеджера пакетов. В контейнерах Linux без brew установщики, использующие только brew, скрыты; используйте пользовательский образ или установите зависимость вручную.
  • Go: для автоматической установки навыков OpenClaw требуется Go 1.21 или новее. Если go отсутствует, но доступен Homebrew, OpenClaw сначала устанавливает Go через Homebrew; в Linux без Homebrew вместо этого можно использовать apt-get от имени root или через sudo без запроса пароля, если обновлённый кандидат golang-go соответствует минимальной версии. Фактический go install для зависимости всегда указывает на отдельный каталог исполняемых файлов под управлением OpenClaw (bin Homebrew при новой установке, иначе ~/.local/bin), а не на настроенный вами GOBIN — ваши переменные окружения GOBIN, GOPATH и GOTOOLCHAIN считываются, но никогда не перезаписываются.
  • Загрузка: url (обязательно), archive (tar.gz | tar.bz2 | zip), extract (по умолчанию: автоматически при обнаружении архива), stripComponents, targetDir (по умолчанию: ~/.openclaw/tools/<skillKey>).
Примечания о песочнице

requires.bins проверяется на хосте во время загрузки навыка. Если агент работает в песочнице, исполняемый файл также должен существовать внутри контейнера. Установите его с помощью agents.defaults.sandbox.docker.setupCommand или пользовательского образа. setupCommand выполняется один раз после создания контейнера и требует исходящего сетевого доступа, доступной для записи корневой файловой системы и пользователя root в песочнице.

Переопределение конфигурации

Включайте, отключайте и настраивайте встроенные или управляемые навыки в skills.entries файла ~/.openclaw/openclaw.json:

json5
{  skills: {    entries: {      "image-lab": {        enabled: true,        apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" },        env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" },        config: {          endpoint: "https://example.invalid",          model: "nano-pro",        },      },      peekaboo: { enabled: true },      sag: { enabled: false },    },  },}
enabledboolean

false отключает навык, даже если он встроен или установлен. Встроенный навык coding-agent требует явного включения — установите skills.entries.coding-agent.enabled: true и убедитесь, что один из claude, codex, opencode или другой поддерживаемый CLI установлен и аутентифицирован.

apiKeystring | { source, provider, id }

Вспомогательное поле для навыков, объявляющих metadata.openclaw.primaryEnv. Поддерживает строку с открытым текстом или объект SecretRef.

env"Record<string,
configobject

Необязательный набор пользовательских полей конфигурации для отдельного навыка.

allowBundledstring[]

Необязательный список разрешённых только для встроенных навыков. Если он задан, доступны только встроенные навыки из списка. Управляемые навыки и навыки рабочей области не затрагиваются.

Внедрение переменных окружения

Когда начинается выполнение агента, OpenClaw:

  • Читает метаданные навыков

    OpenClaw определяет итоговый список навыков для агента, применяя правила доступности, списки разрешённых элементов и переопределения конфигурации.

  • Внедряет переменные окружения и ключи API

    skills.entries.<key>.env и skills.entries.<key>.apiKey применяются к process.env на время выполнения.

  • Формирует системный промпт

    Доступные навыки компилируются в компактный блок XML и внедряются в системный промпт.

  • Восстанавливает окружение

    После завершения выполнения исходное окружение восстанавливается.

  • Для встроенного бэкенда claude-cli OpenClaw также материализует тот же снимок доступных навыков как временный плагин Claude Code и передаёт его через --plugin-dir. Другие бэкенды CLI используют только каталог промпта.

    Снимки и обновление

    OpenClaw создаёт снимок доступных навыков при запуске сеанса и повторно использует этот список для всех последующих ходов в сеансе. Изменения навыков или конфигурации вступают в силу в следующем новом сеансе.

    Навыки обновляются посреди сеанса в двух случаях:

    • Наблюдатель навыков обнаруживает изменение SKILL.md.
    • Подключается новый доступный удалённый узел.

    Обновлённый список используется в следующем ходе агента. Если итоговый список разрешённых для агента элементов изменяется, OpenClaw обновляет снимок, чтобы видимые навыки соответствовали ему.

    Наблюдатель навыков

    По умолчанию OpenClaw отслеживает папки навыков и обновляет снимок при изменении файлов SKILL.md. Настройка выполняется в skills.load:

    json5
    {  skills: {    load: {      extraDirs: ["~/Projects/agent-scripts/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],      watch: true, // по умолчанию      watchDebounceMs: 250, // по умолчанию    },  },}

    Используйте allowSymlinkTargets для намеренно созданных структур с символическими ссылками, в которых ссылка на корень навыка указывает за пределы настроенного корня, например <workspace>/skills/manager -> ~/Projects/manager/skills. Включайте skills.workshop.allowSymlinkTargetWrites только в том случае, если Skill Workshop также должен применять предложения через эти доверенные пути с символическими ссылками.

    Удалённые узлы macOS (Gateway в Linux)

    Если Gateway работает в Linux, но подключён узел macOS, на котором разрешён system.run, OpenClaw может считать доступными навыки только для macOS, если необходимые исполняемые файлы присутствуют на этом узле. Агент должен запускать такие навыки через инструмент exec с host=node.

    Автономные узлы не делают видимыми навыки, доступные только удалённо. Если узел перестаёт отвечать на проверки исполняемых файлов, OpenClaw очищает кеш совпадений исполняемых файлов.

    Влияние на количество токенов

    Когда навыки доступны, OpenClaw внедряет компактный блок XML в системный промпт. Затраты детерминированы и линейно растут с каждым навыком:

    • Базовые накладные расходы (только если доступен хотя бы 1 навык): фиксированный блок вводного текста и обёртка <available_skills>.
    • На каждый навык: ~97 символов + длина полей name, description и location.
    • Экранирование XML преобразует & < > " ' в сущности, добавляя несколько символов при каждом вхождении.
    • При ~4 символах на токен 97 символов ≈ 24 токена на навык без учёта длины полей.

    Если итоговый блок превысит настроенный бюджет промпта (skills.limits.maxSkillsPromptChars), OpenClaw сначала сохраняет столько идентификаторов навыков (имя, расположение и версию), сколько помещается в компактном формате без описаний. Затем оставшийся бюджет используется для сокращённых описаний. Если бюджета на описания не осталось, они опускаются. Когда требуется компактное форматирование или усечение списка, в промпт включается примечание со ссылкой на openclaw skills check.

    Делайте описания краткими и информативными, чтобы минимизировать объём промпта.

    См. также

    Was this useful?
    On this page

    On this page