На этой странице Создание SKILL.md в репозитории: frontmatter, валидатор, структура.
Метаданные навыка¶
|---|---
|Источник| Встроенный (установлен по умолчанию)
|Путь| skills/software-development/hermes-agent-skill-authoring
|Версия| 1.0.0
|Автор| Hermes Agent
|Лицензия| MIT
|Теги| skills, authoring, hermes-agent, conventions, skill-md
|Связанные навыки| writing-plans, requesting-code-review
Справочник: полный SKILL.md¶
info Ниже представлено полное определение навыка, которое Hermes загружает при активации этого навыка. Это те инструкции, которые видит агент, когда навык активен.
Создание навыков Hermes-Agent (в репозитории)¶
Обзор¶
SKILL.md может находиться в двух местах:
1. Локально у пользователя: ~/.hermes/skills/<категория>/<имя>/SKILL.md — личное, не публикуется. Создаётся через skill_manage(action='create').
2. В репозитории (этот навык описывает этот случай): /home/bb/hermes-agent/skills/<категория>/<имя>/SKILL.md — хранится в системе контроля версий, поставляется с пакетом. Используйте write_file + git add. skill_manage(action='create') НЕ предназначена для этого дерева.
Когда использовать¶
- Пользователь просит добавить навык «в эту ветку / репозиторий / коммит»
- Вы фиксируете переиспользуемый рабочий процесс, который должен поставляться с hermes-agent
- Вы редактируете существующий навык в
/home/bb/hermes-agent/skills/(используйтеpatchдля небольших правок,write_fileдля перезаписи;skill_manageсpatchпо-прежнему работает для навыков в репозитории, ноcreate— нет)
Обязательный frontmatter¶
Источник истины: tools/skill_manager_tool.py::_validate_frontmatter. Жёсткие требования:
* Начинается с --- как первые байты (без пустой строки в начале).
* Завершается \n---\n перед телом.
* Парсится как YAML-отображение.
* Поле name обязательно.
* Поле description обязательно, ≤ 1024 символа (MAX_DESCRIPTION_LENGTH).
* Непустое тело после закрывающего ---.
Общая структура, используемая всеми навыками в skills/software-development/:
[code]
---
name: my-skill-name # нижний регистр, дефисы, ≤64 символа (MAX_NAME_LENGTH)
description: Use when <триггер>. <однострочное описание>.
version: 1.0.0
author: Hermes Agent
license: MIT
metadata:
hermes:
tags: [short, descriptive, tags]
related_skills: [other-skill, another-skill]
---
[/code]
version / author / license / metadata НЕ проверяются валидатором, но присутствуют у всех навыков — если их опустить, ваш навык будет выглядеть чужеродно.
Ограничения по размеру¶
- Описание: ≤ 1024 символов (проверяется).
- Полный SKILL.md: ≤ 100 000 символов (проверяется как
MAX_SKILL_CONTENT_CHARS, ~36k токенов). - Остальные навыки в
software-development/занимают 8–14 тыс. символов. Старайтесь укладываться в этот диапазон. Если переваливает за 20 тыс., разбейте наreferences/*.mdи ссылайтесь на них из SKILL.md.
Общая структура¶
Каждый навык в репозитории в целом следует такой схеме: [code] # <Заголовок>
## Обзор
Один-два абзаца: что и зачем.
## Когда использовать
- Триггеры в виде маркированного списка
- Контр-триггеры: «Не использовать для:»
## <Тематические разделы, специфичные для навыка>
- Часто используются справочные таблицы
- Блоки кода с точными командами
- Рецепты для Hermes (тесты через scripts/run_tests.sh, пути ui-tui и т.д.)
## Частые ошибки
Нумерованный список ошибок и их исправлений.
## Чек-лист проверки
- [ ] Чекбоксы с действиями для проверки после выполнения
## Готовые сценарии (опционально)
Именованные сценарии → конкретные последовательности команд.
[/code]
Не все разделы обязательны, но Обзор + Когда использовать + содержательное тело + частые ошибки — это минимум, чтобы навык ощущался «своим».
Размещение в директориях¶
[code] skills/<категория>/<имя-навыка>/SKILL.md
[/code]
Категории, существующие в репозитории (уточните через ls skills/): autonomous-ai-agents, creative, data-science, devops, dogfood, email, gaming, github, leisure, mcp, media, mlops/*, note-taking, productivity, red-teaming, research, smart-home, social-media, software-development.
Выберите наиболее подходящую существующую категорию. Не создавайте новые категории верхнего уровня без необходимости.
Процесс работы¶
- Изучите аналоги в целевой категории: [code] ls skills/<категория>/
[/code]
Прочитайте 2–3 файла SKILL.md аналогов, чтобы соответствовать стилю и структуре.
2. Проверьте ограничения валидатора в tools/skill_manager_tool.py, если не уверены.
3. Напишите черновик с помощью write_file в skills/<категория>/<имя>/SKILL.md.
4. Проверьте локально:
[code] import yaml, re, pathlib
content = pathlib.Path("skills/<категория>/<имя>/SKILL.md").read_text()
assert content.startswith("---")
m = re.search(r'\n---\s*\n', content[3:])
fm = yaml.safe_load(content[3:m.start()+3])
assert "name" in fm and "description" in fm
assert len(fm["description"]) <= 1024
assert len(content) <= 100_000
[/code]
5. Сделайте git add + commit в активной ветке.
6. Важно: загрузчик навыков в ТЕКУЩЕЙ сессии кэшируется — skill_view / skills_list не увидят новый навык до новой сессии. Это ожидаемое поведение, не ошибка.
Перекрёстные ссылки на другие навыки¶
metadata.hermes.related_skills объединяет оба дерева (skills/ в репозитории и ~/.hermes/skills/) во время загрузки. Вы МОЖЕТЕ ссылаться из навыка в репозитории на пользовательский локальный навык, но он не будет работать у других пользователей, которые клонируют репозиторий заново. Предпочитайте ссылаться только на навыки из репозитория. Если часто используемый навык живёт только в ~/.hermes/skills/, подумайте о переносе его в репозиторий.
Редактирование существующих навыков в репозитории¶
- Небольшая правка (опечатка, добавление частой ошибки, уточнение триггера):
skill_manage(action='patch', name=..., old_string=..., new_string=...)отлично работает с навыками в репозитории. - Серьёзная переработка:
write_fileдля всего SKILL.md.skill_manage(action='edit')тоже работает, но требует указания полного нового содержимого. - Добавление вспомогательных файлов:
write_fileвskills/<категория>/<имя>/references/<файл>.md,templates/<файл>илиscripts/<файл>.skill_manage(action='write_file')также работает и проверяет, что поддиректория входит в разрешённый список (references/templates/scripts/assets). - Всегда делайте commit после правки — навыки в репозитории являются исходным кодом, а не состоянием среды выполнения.
Частые ошибки¶
- Использование
skill_manage(action='create')для навыка в репозитории. Он записывает в~/.hermes/skills/, а не в дерево репозитория. Используйтеwrite_fileдля создания навыка в репозитории. - Пробелы перед
---. Валидатор проверяетcontent.startswith("---"); любая пустая строка или BOM в начале приводят к ошибке валидации. - Слишком общее описание. Описания аналогов начинаются с «Use when ...» и описывают класс триггеров, а не одну задачу. «Use when debugging X» лучше, чем «Debug X».
- Забыли блок с автором/лицензией/метаданными. Валидатор это не проверяет, но у всех аналогов это есть; отсутствие делает навык похожим на незаконченный.
- Создание навыка, дублирующего существующий. Перед созданием выполните
ls skills/<категория>/и откройте 2–3 аналога. Лучше расширить существующий навык, чем создавать узкого двойника. - Ожидание, что текущая сессия увидит новый навык. Не увидит. Загрузчик навыков инициализируется при запуске сессии. Проверяйте в новой сессии или через
skill_viewс указанием точного пути. - Ссылки на навыки, которых нет в репозитории.
related_skills: [some-user-local-skill]работает у вас, но ломается у других, кто клонирует репозиторий. Предпочитайте ссылки только на навыки из репозитория.
Чек-лист проверки¶
- Файл находится в
skills/<категория>/<имя>/SKILL.md(не в~/.hermes/skills/) - Frontmatter начинается с байта 0 с
---, завершается\n---\n - Присутствуют
name,description,version,author,license,metadata.hermes.{tags, related_skills} - Имя ≤ 64 символов, нижний регистр + дефисы
- Описание ≤ 1024 символов и начинается с «Use when ...»
- Общий размер файла ≤ 100 000 символов (цель: 8–15 тыс.)
- Структура:
# Заголовок→## Обзор→## Когда использовать→ тело →## Частые ошибки→## Чек-лист проверки related_skillsссылаются на навыки из репозитория (или явно допустимы пользовательские)-
git add skills/<категория>/<имя>/ && git commitвыполнен в нужной ветке - Справочник: полный SKILL.md
- Обзор
- Когда использовать
- Обязательный frontmatter
- Ограничения по размеру
- Общая структура
- Размещение в директориях
- Процесс работы
- Перекрёстные ссылки на другие навыки
- Редактирование существующих навыков в репозитории
- Частые ошибки
- Чек-лист проверки