OpenClaw поставляется со 130+ встроенными навыками, но реальная мощь платформы — в открытом API, который позволяет создавать собственные. Если нужного навыка нет в каталоге, его можно написать за 15–30 минут, даже без глубокого опыта в разработке.
Полный список уже готовых навыков — в статье 100+ навыков OpenClaw: полный список.
Структура кастомного навыка
Каждый навык — это директория с двумя обязательными файлами:
my-skill/
├── skill.yaml # манифест навыка
└── index.js # реализация логики
Опционально можно добавить:
README.md— описание для сообществаtest.js— тесты навыкаassets/— иконки и медиафайлы
Манифест навыка (skill.yaml)
Манифест описывает навык для агента: как его активировать, какие параметры принимать, что он делает.
name: send-telegram-message
version: 1.0.0
description: Отправляет сообщение в указанный Telegram-чат
author: your-name
category: messengers
triggers:
- intent: "отправь в телеграм"
- intent: "напиши в телеграм"
- intent: "telegram message"
parameters:
- name: chatId
type: string
required: true
description: "ID чата или username (@example)"
- name: message
type: string
required: true
description: "Текст сообщения"
- name: parseMode
type: enum
values: [plain, markdown, html]
default: markdown
required: false
permissions:
- network
- secrets:telegram-bot-token
Ключевые поля манифеста
| Поле | Обязательное | Описание |
|---|---|---|
name | Да | Уникальный идентификатор навыка (kebab-case) |
version | Да | Семантическая версия (semver) |
description | Да | Краткое описание для UI и поиска |
triggers | Да | Фразы, активирующие навык |
parameters | Нет | Входные параметры навыка |
permissions | Нет | Запрашиваемые разрешения |
category | Нет | Категория для каталога навыков |
Реализация навыка (index.js)
// index.js
const { OpenClawSkill, secrets, http } = require('@openclaw/sdk');
module.exports = new OpenClawSkill({
async execute({ parameters, context }) {
const { chatId, message, parseMode = 'markdown' } = parameters;
// Получаем токен из защищённого хранилища
const botToken = await secrets.get('telegram-bot-token');
if (!botToken) {
return context.error('Telegram bot token не настроен. Перейдите в Настройки → Интеграции.');
}
// Отправляем запрос к Telegram API
const response = await http.post(
`https://api.telegram.org/bot${botToken}/sendMessage`,
{
chat_id: chatId,
text: message,
parse_mode: parseMode === 'markdown' ? 'MarkdownV2' : parseMode,
}
);
if (response.ok) {
return context.success(`Сообщение отправлено в ${chatId}`);
} else {
return context.error(`Ошибка отправки: ${response.description}`);
}
},
});
Что доступно в SDK
Объект context предоставляет:
context.success(message)— успешное завершение с сообщением пользователюcontext.error(message)— завершение с ошибкойcontext.progress(message)— промежуточный статус для долгих операцийcontext.confirm(question)— запрос подтверждения у пользователя
Встроенные модули SDK:
http— HTTP-запросы (fetch-совместимый интерфейс)secrets— доступ к ключам API пользователяfiles— работа с файловой системой (с учётом разрешений)browser— управление браузеромnotify— отправка уведомлений
Шаг за шагом: создание навыка
-
Откройте терминал и перейдите в директорию навыков:
cd ~/.openclaw/skills -
Создайте папку для нового навыка:
mkdir send-telegram-message && cd send-telegram-message -
Создайте файлы
skill.yamlиindex.jsс содержимым из примеров выше. -
Установите SDK (если ещё не установлен):
npm install @openclaw/sdk -
Зарегистрируйте навык в агенте:
openclaw skills register ./send-telegram-message -
Проверьте, что навык появился в списке:
openclaw skills list
Тестирование навыка локально
OpenClaw поставляется с тестовым раннером для навыков. Создайте файл test.js:
const { testSkill } = require('@openclaw/sdk/testing');
testSkill('./index.js', {
parameters: {
chatId: '@test_channel',
message: 'Тестовое сообщение из навыка',
},
secrets: {
'telegram-bot-token': process.env.TG_TOKEN,
},
});
Запустите тест:
openclaw skills test ./test.js
Раннер выведет: входные данные, шаги выполнения, результат и любые ошибки. Это позволяет отлаживать навык без запуска полного агента.
Публикация в реестр сообщества
Готовый навык можно опубликовать в Community Skill Registry — открытом каталоге, где пользователи OpenClaw делятся наработками.
- Убедитесь, что в манифесте заполнены все поля, включая
authorиdescription. - Добавьте
README.mdс описанием, параметрами и примером использования. - Выполните команду:
openclaw skills publish - Пройдите автоматическую проверку безопасности (занимает 2–5 минут).
- Навык появится в каталоге и станет доступен для установки другим пользователям.
Все навыки из реестра проходят статический анализ кода: проверяются запрашиваемые разрешения, отсутствие обращений к неизвестным сетевым адресам, корректность манифеста.
Типичные ошибки при создании навыков
- Неправильные разрешения — если навык обращается к сети, но не указал
networkвpermissions, агент заблокирует запрос. - Жёстко прописанные API-ключи — никогда не храните токены в
index.js. Используйте толькоsecrets.get(). - Слишком широкие триггеры — фразы вроде «отправь» без уточнений создают конфликты с другими навыками.
- Отсутствие обработки ошибок — всегда обрабатывайте случай, когда API возвращает ошибку или секрет не найден.
Подробнее о том, какие возможности открывают кастомные навыки в связке с внешними сервисами — в разделе интеграции.