🛠️ Создание навыков OpenClaw

Полное руководство по разработке навыков мирового уровня

Основано на лучших практиках 2026

📖 Что такое навык OpenClaw

Навык (Skill) — это модуль, который добавляет OpenClaw новые возможности: интеграцию с сервисами, обработку данных, автоматизацию задач.

💡 Ключевая идея: Навык должен решать одну конкретную задачу, но делать это идеально.

📁 Структура навыка

my-skill/
├── SKILL.md              # Обязательный файл описания
├── README.md             # Документация для пользователей
├── src/
│   └── index.js          # Основной код навыка
├── scripts/
│   └── setup.sh          # Скрипт установки (опционально)
├── references/
│   └── api-docs.md       # Справочные материалы (опционально)
└── tests/
    └── index.test.js     # Тесты (рекомендуется)
⚡ Минимальная структура: только SKILL.md (остальное по мере необходимости)

📝 SKILL.md — Файл описания

Структура файла

---
name: my-skill-name
description: Краткое описание (1-2 предложения)
metadata:
  {
    "openclaw": {
      "emoji": "🎯",
      "requires": { "bins": ["node", "npm"] },
      "install": [
        {
          "id": "npm",
          "kind": "npm",
          "package": "package-name",
          "label": "Установка зависимости"
        }
      ]
    }
  }
---

# My Skill Name

Подробное описание навыка...

## Использование

Примеры использования...

## Требования

Что нужно для работы...
✅ Best Practice: description должен быть понятен без чтения остального текста

🚀 Пошаговое создание навыка

Шаг 1: Определение задачи Начинающий

⚠️ Анти-паттерн: Не создавай навык "для всего". Один навык = одна задача.

Шаг 2: Прототипирование Начинающий

Шаг 3: Структурирование Начинающий

Шаг 4: Документирование Начинающий

Шаг 5: Тестирование Продвинутый

Шаг 6: Публикация Продвинутый

🏆 Лучшие практики (World-Class Standards)

1. Single Responsibility Principle

✅ Паттерн: Один навык — одна ответственность

Плохо: навык "email" делает всё (отправка, чтение, сортировка, шаблоны)
Хорошо: отдельные навыки "gmail-read", "gmail-send", "gmail-sort"

2. Fail Fast, Fail Loud

✅ Паттерн: Быстрая ошибка с понятным сообщением
// ❌ Плохо
if (!config.apiKey) { throw new Error("Error"); }

// ✅ Хорошо
if (!config.apiKey) {
    throw new Error("API ключ не найден. Добавьте в конфиг: { apiKey: '...' }");
}

3. Configuration Over Hardcoding

✅ Паттерн: Конфигурация вместо жёсткого кодирования
// ❌ Плохо
const API_URL = "https://api.example.com";

// ✅ Хорошо
const config = loadConfig();
const API_URL = config.apiUrl || "https://api.example.com";

4. Graceful Degradation

✅ Паттерн: Грамотная деградация

Если сервис недоступен — навык должен работать в ограниченном режиме, а не падать полностью.

5. Observability

✅ Паттерн: Наблюдаемость
  • Логирование ключевых событий
  • Метрики производительности
  • Понятные сообщения об ошибках

⚠️ Анти-паттерны (Избегай!)

❌ God Skill: Навык, который делает слишком много
Решение: Раздели на несколько навыков
❌ Silent Failure: Ошибки проглатываются без логов
Решение: Логируй всё, что может пойти не так
❌ Magic Numbers: Жёстко закодированные значения
Решение: Выноси в конфиг или константы с именами
❌ No Error Handling: Код без обработки ошибок
Решение: try/catch + понятные сообщения
❌ Blocking Operations: Синхронные операции в асинхронном коде
Решение: Используй async/await правильно

🧪 Тестирование навыков

Минимальный набор тестов

Пример теста (Jest)

describe('MySkill', () => {
    test('должен возвращать результат при валидных данных', async () => {
        const result = await mySkill.process({ input: 'test' });
        expect(result).toBeDefined();
        expect(result.success).toBe(true);
    });

    test('должен выбрасывать ошибку при невалидных данных', async () => {
        await expect(mySkill.process({}))
            .rejects
            .toThrow('Входные данные обязательны');
    });
});

📤 Публикация в ClawHub

Чек-лист перед публикацией

Команды публикации

# Проверка навыка
openclaw skills check my-skill

# Установка локально
openclaw skills install ./my-skill

# Публикация в ClawHub
openclaw skills publish my-skill

📚 Примеры навыков для изучения

НавыкЧто изучаетУровень
weatherПростая интеграция API🟢 Начинающий
gogРабота с Google API🟡 Средний
clawflowОркестрация задач🔴 Продвинутый
skill-creatorСоздание навыков🟡 Средний
📖 Изучение: openclaw skills info <название>

🔗 Полезные ресурсы