Система навыков

Навыки (Skills) — это документы знаний, которые агент может загружать по мере необходимости. Они используют шаблон прогрессивного раскрытия для минимизации расхода токенов и совместимы с открытым стандартом agentskills.io.

Все навыки находятся в ~/.hermes/skills/ — основной директории и источнике истины. При чистой установке встроенные навыки копируются из репозитория. Навыки, установленные из хаба или созданные агентом, также попадают сюда. Агент может изменять или удалять любой навык.

Вы также можете указать Hermes на внешние директории навыков — дополнительные папки, сканируемые вместе с локальной. См. Внешние директории навыков ниже.

См. также:

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

Каждый установленный навык автоматически доступен как слэш-команда:

# В CLI или любой мессенджер-платформе:
/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor
/plan design a rollout for migrating our auth provider

# Просто имя навыка загружает его и позволяет агенту спросить, что вам нужно:
/excalidraw

Встроенный навык plan — хороший пример. Запуск /plan [запрос] загружает инструкции навыка, указывая Hermes при необходимости изучить контекст, написать план реализации в Markdown вместо выполнения задачи и сохранить результат в .hermes/plans/ относительно активной рабочей директории workspace/backend.

Вы также можете взаимодействовать с навыками через обычный диалог:

hermes chat --toolsets skills -q "What skills do you have?"
hermes chat --toolsets skills -q "Show me the axolotl skill"

Прогрессивное раскрытие

Навыки используют эффективную по токенам схему загрузки:

Level 0: skills_list()            [{name, description, category}, ...]   (~3k tokens)
Level 1: skill_view(name)         Full content + metadata       (varies)
Level 2: skill_view(name, path)   Specific reference file       (varies)

Агент загружает полное содержимое навыка только тогда, когда оно действительно нужно.

Формат SKILL.md

---
name: my-skill
description: Brief description of what this skill does
version: 1.0.0
platforms: [macos, linux]     # Optional — restrict to specific OS platforms
metadata:
  hermes:
    tags: [python, automation]
    category: devops
    fallback_for_toolsets: [web]    # Optional — conditional activation (see below)
    requires_toolsets: [terminal]   # Optional — conditional activation (see below)
    config:                          # Optional — config.yaml settings
      - key: my.setting
        description: "What this controls"
        default: "value"
        prompt: "Prompt for setup"
---

# Skill Title

## When to Use
Trigger conditions for this skill.

## Procedure

1. Step one

2. Step two

## Pitfalls

- Known failure modes and fixes

## Verification
How to confirm it worked.

Платформозависимые навыки

Навыки могут ограничивать себя конкретными операционными системами с помощью поля platforms:

Значение Совпадение
macos macOS (Darwin)
linux Linux
windows Windows
platforms: [macos]            # только macOS (например, iMessage, Apple Reminders, FindMy)
platforms: [macos, linux]     # macOS и Linux

При установке этого поля навык автоматически скрывается из системного промпта, skills_list() и слэш-команд на несовместимых платформах. Если поле опущено, навык загружается на всех платформах.

Условная активация (запасные навыки)

Навыки могут автоматически показываться или скрываться в зависимости от того, какие инструменты доступны в текущей сессии. Это наиболее полезно для запасных навыков — бесплатных или локальных альтернатив, которые должны появляться только тогда, когда премиум-инструмент недоступен.

metadata:
  hermes:
    fallback_for_toolsets: [web]      # Показывать ТОЛЬКО когда эти toolsets недоступны
    requires_toolsets: [terminal]     # Показывать ТОЛЬКО когда эти toolsets доступны
    fallback_for_tools: [web_search]  # Показывать ТОЛЬКО когда эти конкретные инструменты недоступны
    requires_tools: [terminal]        # Показывать ТОЛЬКО когда эти конкретные инструменты доступны
Поле Поведение
fallback_for_toolsets Навык скрыт, когда перечисленные toolsets доступны. Показывается, когда они отсутствуют.
fallback_for_tools То же, но проверяет отдельные инструменты вместо toolsets.
requires_toolsets Навык скрыт, когда перечисленные toolsets недоступны. Показывается, когда они присутствуют.
requires_tools То же, но проверяет отдельные инструменты.

Пример: Встроенный навык duckduckgo-search использует fallback_for_toolsets: [web]. Когда у вас установлен FIRECRAWL_API_KEY, набор инструментов web доступен, и агент использует web_search — навык DuckDuckGo остаётся скрытым. Если API-ключ отсутствует, набор инструментов web недоступен, и навык DuckDuckGo автоматически появляется как запасной.

Навыки без каких-либо условных полей ведут себя как прежде — они всегда отображаются.

Безопасная настройка при загрузке

Навыки могут объявлять обязательные переменные окружения, не исчезая из списка обнаружения:

required_environment_variables:
  - name: TENOR_API_KEY
    prompt: Tenor API key
    help: Get a key from https://developers.google.com/tenor
    required_for: full functionality

Когда обнаруживается отсутствующее значение, Hermes запрашивает его безопасно только при фактической загрузке навыка в локальном CLI. Вы можете пропустить настройку и продолжать использовать навык. Мессенджер-поверхности никогда не запрашивают секреты в чате — вместо этого они предлагают использовать hermes setup или ~/.hermes/.env локально.

После установки объявленные переменные окружения автоматически передаются в песочницы execute_code и terminal — скрипты навыка могут напрямую использовать $TENOR_API_KEY. Для переменных окружения, не относящихся к навыкам, используйте опцию конфигурации terminal.env_passthrough. См. Проброс переменных окружения для подробностей.

Настройки конфигурации навыков

Навыки также могут объявлять несекретные настройки конфигурации (пути, предпочтения), хранящиеся в config.yaml:

metadata:
  hermes:
    config:
      - key: myplugin.path
        description: Path to the plugin data directory
        default: "~/myplugin-data"
        prompt: Plugin data directory path

Настройки хранятся в разделе skills.config вашего config.yaml. hermes config migrate запрашивает ненастроенные параметры, а hermes config show отображает их. Когда навык загружается, его разрешённые значения конфигурации внедряются в контекст, так что агент автоматически знает настроенные значения.

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

Структура директории навыков

~/.hermes/skills/                  # Единый источник истины
├── mlops/                         # Директория категории
│   ├── axolotl/
│   │   ├── SKILL.md               # Основные инструкции (обязательно)
│   │   ├── references/            # Дополнительные документы
│   │   ├── templates/             # Форматы вывода
│   │   ├── scripts/               # Вспомогательные скрипты, вызываемые из навыка
│   │   └── assets/                # Дополнительные файлы
│   └── vllm/
│       └── SKILL.md
├── devops/
│   └── deploy-k8s/                # Навык, созданный агентом
│       ├── SKILL.md
│       └── references/
├── .hub/                          # Состояние Skills Hub
│   ├── lock.json
│   ├── quarantine/
│   └── audit.log
└── .bundled_manifest              # Отслеживает посеянные встроенные навыки

Внешние директории навыков

Если вы ведёте навыки за пределами Hermes — например, общую директорию ~/.agents/skills/, используемую несколькими AI-инструментами — вы можете указать Hermes также сканировать эти директории.

Добавьте external_dirs в раздел skills вашего ~/.hermes/config.yaml:

skills:
  external_dirs:
    - ~/.agents/skills
    - /home/shared/team-skills
    - ${SKILLS_REPO}/skills

Пути поддерживают подстановку ~ и замену переменных окружения ${VAR}.

Как это работает

Пример

~/.hermes/skills/               # Локальная (основная, чтение-запись)
├── devops/deploy-k8s/
│   └── SKILL.md
└── mlops/axolotl/
    └── SKILL.md

~/.agents/skills/               # Внешняя (только чтение, общая)
├── my-custom-workflow/
│   └── SKILL.md
└── team-conventions/
    └── SKILL.md

Все четыре навыка отображаются в вашем индексе навыков. Если вы создадите новый навык с именем my-custom-workflow локально, он перекроет внешнюю версию.

Навыки, управляемые агентом (инструмент skill_manage)

Агент может создавать, обновлять и удалять собственные навыки через инструмент skill_manage. Это процедурная память агента — когда он находит нетривиальный рабочий процесс, он сохраняет подход как навык для будущего повторного использования.

Когда агент создаёт навыки

Действия

Действие Использование Ключевые параметры
create Новый навык с нуля name, content (полный SKILL.md), опционально category
patch Точечные исправления (предпочтительно) name, old_string, new_string
edit Крупные структурные переписывания name, content (замена полного SKILL.md)
delete Полное удаление навыка name
write_file Добавление/обновление вспомогательных файлов name, file_path, file_content
remove_file Удаление вспомогательного файла name, file_path
Действие `patch` предпочтительно для обновлений — оно более эффективно по токенам, чем `edit`, поскольку в вызове инструмента появляется только изменённый текст.

Skills Hub (Центр навыков)

Просматривайте, ищите, устанавливайте и управляйте навыками из онлайн-реестров, skills.sh, прямых well-known endpoints навыков и официальных дополнительных навыков.

Основные команды

hermes skills browse                              # Просмотр всех навыков хаба (сначала официальные)
hermes skills browse --source official            # Просмотр только официальных дополнительных навыков
hermes skills search kubernetes                   # Поиск по всем источникам
hermes skills search react --source skills-sh     # Поиск в каталоге skills.sh
hermes skills search https://mintlify.com/docs --source well-known
hermes skills inspect openai/skills/k8s           # Предпросмотр перед установкой
hermes skills install openai/skills/k8s           # Установка со сканированием безопасности
hermes skills install official/security/1password
hermes skills install skills-sh/vercel-labs/json-render/json-render-react --force
hermes skills install well-known:https://mintlify.com/docs/.well-known/skills/mintlify
hermes skills install https://sharethis.chat/SKILL.md              # Прямой URL (однофайловый SKILL.md)
hermes skills install https://example.com/SKILL.md --name my-skill # Переопределить имя, если frontmatter не содержит его
hermes skills list --source hub                   # Список навыков, установленных из хаба
hermes skills check                               # Проверка установленных навыков хаба на наличие обновлений
hermes skills update                              # Переустановка навыков хаба с изменениями из источника
hermes skills audit                               # Повторное сканирование всех навыков хаба на безопасность
hermes skills uninstall k8s                       # Удаление навыка из хаба
hermes skills reset google-workspace              # Сброс помеченного как "изменён пользователем" встроенного навыка (см. ниже)
hermes skills reset google-workspace --restore    # Также восстановить встроенную версию, удалив ваши локальные правки
hermes skills publish skills/my-skill --to github --repo owner/repo
hermes skills snapshot export setup.json          # Экспорт конфигурации навыков
hermes skills tap add myorg/skills-repo           # Добавление пользовательского GitHub-источника

Поддерживаемые источники хаба

Источник Пример Примечания
official official/security/1password Дополнительные навыки, поставляемые с Hermes.
skills-sh skills-sh/vercel-labs/agent-skills/vercel-react-best-practices Доступны для поиска через hermes skills search <запрос> --source skills-sh. Hermes разрешает навыки в стиле псевдонимов, когда slug на skills.sh отличается от папки репозитория.
well-known well-known:https://mintlify.com/docs/.well-known/skills/mintlify Навыки, обслуживаемые напрямую с /.well-known/skills/index.json на веб-сайте. Поиск осуществляется по URL сайта или документации.
url https://sharethis.chat/SKILL.md Прямой HTTP(S) URL к однофайловому SKILL.md. Разрешение имени: frontmatter → URL slug → интерактивный запрос → флаг --name.
github openai/skills/k8s Прямая установка из репозитория/пути GitHub и пользовательские taps.
clawhub, lobehub, claude-marketplace Идентификаторы, специфичные для источника Интеграции с сообществом или маркетплейсами.

Интегрированные хабы и реестры

Hermes в настоящее время интегрируется со следующими экосистемами навыков и источниками обнаружения:

1. Официальные дополнительные навыки (official)

Они поддерживаются в самом репозитории Hermes и устанавливаются со встроенным доверием.

hermes skills browse --source official
hermes skills install official/security/1password

2. skills.sh (skills-sh)

Это публичный каталог навыков от Vercel. Hermes может искать в нём напрямую, просматривать страницы с деталями навыков, разрешать псевдонимы и устанавливать из исходного репозитория.

hermes skills search react --source skills-sh
hermes skills inspect skills-sh/vercel-labs/json-render/json-render-react
hermes skills install skills-sh/vercel-labs/json-render/json-render-react --force

3. Well-known endpoints навыков (well-known)

Это обнаружение на основе URL с сайтов, публикующих /.well-known/skills/index.json. Это не единый централизованный хаб — это веб-стандарт обнаружения.

hermes skills search https://mintlify.com/docs --source well-known
hermes skills inspect well-known:https://mintlify.com/docs/.well-known/skills/mintlify
hermes skills install well-known:https://mintlify.com/docs/.well-known/skills/mintlify

4. Прямые навыки с GitHub (github)

Hermes может устанавливать напрямую из репозиториев GitHub и GitHub-based taps. Это полезно, когда вы уже знаете репозиторий/путь или хотите добавить свой собственный источник.

Стандартные taps (доступны для просмотра без настройки):

hermes skills install openai/skills/k8s
hermes skills tap add myorg/skills-repo

5. ClawHub (clawhub)

Сторонний маркетплейс навыков, интегрированный как общественный источник.

6. Репозитории в стиле маркетплейса Claude (claude-marketplace)

Hermes поддерживает репозитории маркетплейсов, публикующие манифесты, совместимые с Claude.

Известные интегрированные источники включают:

Идентификатор источника Hermes: claude-marketplace

7. LobeHub (lobehub)

Hermes может искать и преобразовывать записи агентов из публичного каталога LobeHub в устанавливаемые навыки Hermes.

8. Прямой URL (url)

Установите однофайловый SKILL.md напрямую по любому HTTP(S) URL — полезно, когда автор размещает навык на своём сайте (без листинга в хабе, без пути GitHub для ввода). Hermes загружает URL, парсит YAML frontmatter, проверяет безопасность и устанавливает.

hermes skills install https://sharethis.chat/SKILL.md
hermes skills install https://example.com/my-skill/SKILL.md --category productivity

Разрешение имени, по порядку:

  1. Поле name: в YAML frontmatter файла SKILL.md (рекомендуется — каждый правильно оформленный навык имеет его).

  2. Имя родительской директории из пути URL (например, .../my-skill/SKILL.mdmy-skill, или .../my-skill.mdmy-skill), когда это валидный идентификатор (^[a-z][a-z0-9_-]*$).

  3. Интерактивный запрос в терминале с TTY.

  4. На неинтерактивных поверхностях (слэш-команда /skills install внутри TUI, gateway-платформы, скрипты) — чистая ошибка с указанием на флаг --name.

# В frontmatter нет имени, и URL slug неинформативен — укажите его:
hermes skills install https://example.com/SKILL.md --name sharethis-chat

# Или внутри чат-сессии:
/skills install https://example.com/SKILL.md --name sharethis-chat

Уровень доверия всегда community — выполняется то же сканирование безопасности, что и для любого другого источника. URL сохраняется как идентификатор установки, поэтому hermes skills update автоматически повторно загружает с того же URL, когда вы хотите обновить.

Сканирование безопасности и --force

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

hermes skills inspect ... теперь также показывает метаданные источника, когда они доступны:

Используйте --force, когда вы проверили сторонний навык и хотите переопределить неопасную блокировку политики:

hermes skills install skills-sh/anthropics/skills/pdf --force

Важное поведение:

Уровни доверия

Уровень Источник Политика
builtin Поставляется с Hermes Всегда доверенный
official optional-skills/ в репозитории Встроенное доверие, без предупреждения о стороннем
trusted Доверенные реестры/репозитории, такие как openai/skills, anthropics/skills Более либеральная политика, чем у общественных источников
community Всё остальное (skills.sh, well-known endpoints, пользовательские GitHub-репозитории, большинство маркетплейсов) Неопасные находки можно переопределить с помощью --force; вердикты dangerous остаются заблокированными

Жизненный цикл обновлений

Хаб теперь отслеживает достаточно информации о происхождении, чтобы повторно проверять исходные копии установленных навыков:

hermes skills check          # Сообщить, какие установленные навыки хаба изменились в источнике
hermes skills update         # Переустановить только навыки, для которых доступны обновления
hermes skills update react   # Обновить один конкретный установленный навык из хаба

Это использует сохранённый идентификатор источника плюс текущий хеш содержимого из источника для обнаружения расхождений.

tip Лимиты запросов GitHub Операции Skills Hub используют GitHub API, который имеет лимит в 60 запросов/час для неаутентифицированных пользователей. Если вы видите ошибки лимита запросов при установке или поиске, установите GITHUB_TOKEN в вашем файле .env, чтобы увеличить лимит до 5 000 запросов/час. Сообщение об ошибке содержит полезную подсказку, когда это происходит.

Публикация собственного tap навыков

Если вы хотите поделиться подобранным набором навыков — для вашей команды, организации или публично — вы можете опубликовать их как tap: репозиторий GitHub, который другие пользователи Hermes добавляют с помощью hermes skills tap add <owner/repo>. Никакого сервера, регистрации в реестре или пайплайна релизов. Просто директория с файлами SKILL.md.

Структура репозитория

Tap — это любой репозиторий GitHub (публичный или приватный — приватный требует GITHUB_TOKEN), структурированный следующим образом:

owner/repo
├── skills/                       # Путь по умолчанию; настраивается для каждого tap
│   ├── my-workflow/
│   │   ├── SKILL.md              # обязательно
│   │   ├── references/           # опциональные вспомогательные файлы
│   │   ├── templates/
│   │   └── scripts/
│   ├── another-skill/
│   │   └── SKILL.md
│   └── third-skill/
│       └── SKILL.md
└── README.md                     # опционально, но полезно

Правила:

Hermes обнаруживает навыки, перечисляя все поддиректории пути tap и проверяя каждую на наличие SKILL.md.

Минимальный пример tap

my-org/hermes-skills
└── skills/
    └── deploy-runbook/
        └── SKILL.md

skills/deploy-runbook/SKILL.md:

---
name: deploy-runbook
description: Our deployment runbook — services, rollback, Slack channels
version: 1.0.0
author: My Org Platform Team
metadata:
  hermes:
    tags: [deployment, runbook, internal]
---

# Deploy Runbook

Step 1: ...

После публикации на GitHub любой пользователь Hermes может подписаться и установить:

hermes skills tap add my-org/hermes-skills
hermes skills search deploy
hermes skills install my-org/hermes-skills/deploy-runbook

Нестандартные пути

Если ваши навыки находятся не в skills/ (распространённая ситуация, когда вы добавляете поддерево skills/ в существующий проект), отредактируйте запись tap в ~/.hermes/.hub/taps.json:

{
  "taps": [
    {"repo": "my-org/platform-docs", "path": "internal/skills/"}
  ]
}

CLI hermes skills tap add по умолчанию создаёт новые taps с path: "skills/"; отредактируйте файл напрямую, если нужен другой путь. hermes skills tap list показывает эффективный путь для каждого tap.

Установка отдельных навыков напрямую (без добавления tap)

Пользователи также могут установить отдельный навык из любого публичного GitHub-репозитория без добавления всего репозитория как tap:

hermes skills install owner/repo/skills/my-workflow

Полезно, когда вы хотите поделиться одним навыком, не прося пользователя подписываться на весь ваш реестр.

Уровни доверия для tap

Новые taps получают уровень доверия community по умолчанию. Навыки, установленные из них, проходят стандартное сканирование безопасности и показывают панель предупреждения о стороннем навыке при первой установке. Если ваша организация или широко доверенный источник должны получить более высокий уровень доверия, добавьте его репозиторий в TRUSTED_REPOS в tools/skills_hub.py (требует PR в ядро Hermes).

Управление tap

hermes skills tap list                                # показать все настроенные taps
hermes skills tap add myorg/skills-repo               # добавить (путь по умолчанию: skills/)
hermes skills tap remove myorg/skills-repo            # удалить

Внутри запущенной сессии:

/skills tap list
/skills tap add myorg/skills-repo
/skills tap remove myorg/skills-repo

Taps хранятся в ~/.hermes/.hub/taps.json (создаётся по требованию).

Обновления встроенных навыков (hermes skills reset)

Hermes поставляется с набором встроенных навыков в skills/ внутри репозитория. При установке и при каждом hermes update выполняется синхронизация, копирующая их в ~/.hermes/skills/ и записывающая манифест в ~/.hermes/skills/.bundled_manifest, сопоставляющий каждое имя навыка с хешем содержимого на момент синхронизации (исходный хеш).

При каждой синхронизации Hermes пересчитывает хеш вашей локальной копии и сравнивает его с исходным хешем:

Защита хороша, но у неё есть один острый край. Если вы отредактировали встроенный навык, а затем захотели отказаться от своих изменений и вернуться к встроенной версии, просто скопировав содержимое из ~/.hermes/hermes-agent/skills/, манифест всё ещё хранит старый исходный хеш с момента последней успешной синхронизации. Содержимое вашей свежей копии (текущий встроенный хеш) не совпадёт с этим устаревшим исходным хешем, поэтому синхронизация продолжает помечать его как изменённый пользователем.

hermes skills reset — это аварийный люк:

# Безопасно: очищает запись манифеста для этого навыка. Ваша текущая копия сохраняется,
# но следующая синхронизация выровняется по ней, так что будущие обновления будут работать нормально.
hermes skills reset google-workspace

# Полное восстановление: также удаляет вашу локальную копию и повторно копирует текущую встроенную
# версию. Используйте это, когда хотите вернуть исходный навык из источника.
hermes skills reset google-workspace --restore

# Неинтерактивный режим (например, в скриптах или TUI) — пропускает подтверждение --restore.
hermes skills reset google-workspace --restore --yes

Та же команда работает в чате как слэш-команда:

/skills reset google-workspace
/skills reset google-workspace --restore

note Профили Каждый профиль имеет свой собственный .bundled_manifest в своей собственной HERMES_HOME, поэтому hermes -p coder skills reset <имя> затрагивает только этот профиль.

Слэш-команды (в чате)

Все те же команды работают с /skills:

/skills browse
/skills search react --source skills-sh
/skills search https://mintlify.com/docs --source well-known
/skills inspect skills-sh/vercel-labs/json-render/json-render-react
/skills install openai/skills/skill-creator --force
/skills check
/skills update
/skills reset google-workspace
/skills list

Официальные дополнительные навыки по-прежнему используют идентификаторы типа official/security/1password и official/migration/openclaw-migration.