Система навыков
Навыки (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/. -
Локальный приоритет: Если одно и то же имя навыка существует и в локальной, и во внешней директории, локальная версия имеет приоритет.
-
Полная интеграция: Внешние навыки появляются в индексе системного промпта,
skills_list,skill_viewи как слэш-команды/имя-навыка— неотличимо от локальных навыков. -
Несуществующие пути молча пропускаются: Если настроенная директория не существует, Hermes игнорирует её без ошибок. Полезно для опциональных общих директорий, которые могут отсутствовать на некоторых машинах.
Пример
~/.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. Это процедурная память агента — когда он находит нетривиальный рабочий процесс, он сохраняет подход как навык для будущего повторного использования.
Когда агент создаёт навыки
-
После успешного выполнения сложной задачи (5+ вызовов инструментов)
-
Когда он столкнулся с ошибками или тупиками и нашёл рабочий путь
-
Когда пользователь исправил его подход
-
Когда он обнаружил нетривиальный рабочий процесс
Действия
| Действие | Использование | Ключевые параметры |
|---|---|---|
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 |
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 и устанавливаются со встроенным доверием.
-
Источник в репозитории:
optional-skills/ -
Пример:
hermes skills browse --source official
hermes skills install official/security/1password
2. skills.sh (skills-sh)
Это публичный каталог навыков от Vercel. Hermes может искать в нём напрямую, просматривать страницы с деталями навыков, разрешать псевдонимы и устанавливать из исходного репозитория.
-
Каталог: skills.sh
-
Репозиторий CLI/инструментов: vercel-labs/skills
-
Официальный репозиторий навыков Vercel: vercel-labs/agent-skills
-
Пример:
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. Это не единый централизованный хаб — это веб-стандарт обнаружения.
-
Пример живого endpoint: Индекс навыков документации Mintlify
-
Эталонная реализация сервера: vercel-labs/skills-handler
-
Пример:
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)
Сторонний маркетплейс навыков, интегрированный как общественный источник.
-
Сайт: clawhub.ai
-
Идентификатор источника Hermes:
clawhub
6. Репозитории в стиле маркетплейса Claude (claude-marketplace)
Hermes поддерживает репозитории маркетплейсов, публикующие манифесты, совместимые с Claude.
Известные интегрированные источники включают:
Идентификатор источника Hermes: claude-marketplace
7. LobeHub (lobehub)
Hermes может искать и преобразовывать записи агентов из публичного каталога LobeHub в устанавливаемые навыки Hermes.
-
Сайт: LobeHub
-
Публичный индекс агентов: chat-agents.lobehub.com
-
Базовый репозиторий: lobehub/lobe-chat-agents
-
Идентификатор источника Hermes:
lobehub
8. Прямой URL (url)
Установите однофайловый SKILL.md напрямую по любому HTTP(S) URL — полезно, когда автор размещает навык на своём сайте (без листинга в хабе, без пути GitHub для ввода). Hermes загружает URL, парсит YAML frontmatter, проверяет безопасность и устанавливает.
-
Идентификатор источника Hermes:
url -
Идентификатор: сам URL (префикс не требуется)
-
Ограничение: только однофайловый
SKILL.md. Многофайловые навыки сreferences/илиscripts/требуют манифеста и должны публиковаться через один из других источников выше.
hermes skills install https://sharethis.chat/SKILL.md
hermes skills install https://example.com/my-skill/SKILL.md --category productivity
Разрешение имени, по порядку:
-
Поле
name:в YAML frontmatter файла SKILL.md (рекомендуется — каждый правильно оформленный навык имеет его). -
Имя родительской директории из пути URL (например,
.../my-skill/SKILL.md→my-skill, или.../my-skill.md→my-skill), когда это валидный идентификатор (^[a-z][a-z0-9_-]*$). -
Интерактивный запрос в терминале с TTY.
-
На неинтерактивных поверхностях (слэш-команда
/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 ... теперь также показывает метаданные источника, когда они доступны:
-
URL репозитория
-
URL страницы с деталями на skills.sh
-
Команда установки
-
Еженедельные установки
-
Статусы аудита безопасности источника
-
URL well-known index/endpoint
Используйте --force, когда вы проверили сторонний навык и хотите переопределить неопасную блокировку политики:
hermes skills install skills-sh/anthropics/skills/pdf --force
Важное поведение:
-
--forceможет переопределять блокировки политики для предупреждающих находок. -
--forceне переопределяет вердиктdangerous(опасно). -
Официальные дополнительные навыки (
official/...) считаются встроенным доверием и не показывают панель предупреждений сторонних навыков.
Уровни доверия
| Уровень | Источник | Политика |
|---|---|---|
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 # Обновить один конкретный установленный навык из хаба
Это использует сохранённый идентификатор источника плюс текущий хеш содержимого из источника для обнаружения расхождений.