Files
claude-skills/.wiki/concepts/hermes-skills-rollout-design.md

10 KiB
Raw Permalink Blame History

tags, sources, source_brainstorm, title, type, ingested_at, ingested_by, source_project
tags sources source_brainstorm title type ingested_at ingested_by source_project
hermes
skills
conversion
deployment
factory
https://hermes-agent.nousresearch.com/docs/user-guide/features/skills
https://hermes-agent.nousresearch.com/docs/guides/use-mcp-with-hermes
https://www.glukhov.org/ai-systems/hermes/authoring-hermes-skill/
https://github.com/NousResearch/hermes-agent/blob/main/skills/research/llm-wiki/SKILL.md
.meeting-room/.archive/2026-05-06-hermes-skills-rollout.md hermes-skills-rollout-design concept 2026-05-06T20:21:13.349Z OpeItcLoc03@DESKTOP-NSEF0UK .meeting-room

Hermes Skills Rollout — Design

Раскатить claude-skills на Hermes Agent (Nous Research) как частный фабричный комплект, через converter + pre-built dist-hermes/ + recursive installer-skill. Не tap, не Hub, не публикация.

Context

Hermes — агент Nous Research (модель glm-5.1, локальная), формально совместим с agentskills.io. Цель: те же 21 наших скила, что работают в Claude Code, доступны и Hermes-агенту на фабричных Linux-машинах. Установка — через skill_manage(action='create') в ~/.hermes/skills/<category>/<skill>/.

Design tenet: независимость

Мы не зависим от Hermes built-in скилов. Где у нас и у Hermes есть аналог по функции (например research/llm-wiki), ставим наш. Hermes built-in остаётся, но наша schema, наш темп развития — суверенны. Override через skill_manage precedence.

Исключение — Hermes-нативные тулы (не скилы): skills_list(), cronjob, execute_code, native-mcp. Это инфраструктура, используем напрямую.

Hermes' inventory (relevant findings)

  • research/llm-wiki — встроен (Karpathy три-слой). Schema: SCHEMA.md (vs наш .wiki/CLAUDE.md), секции entities/concepts/comparisons/queries (vs наш entities/concepts/packages/sources). .tasks/ НЕ трогает. Не drop-in replacement — другая schema → ставим наш через override.
  • mcp/native-mcp — встроенный MCP-клиент. Внешние сервера через ~/.hermes/config.yaml > mcp_servers.<name> (stdio/HTTP, env-vars, auto-discovery, /reload-mcp).
  • skills_list() — встроенный progressive disclosure (Level 0). Делает наш find-skills лишним.
  • cronjob tool встроен → через using-projects-meta вешаем синк фабричных проектов на расписание.
  • Hermes на Linux (/opt/data/projects), модель glm-5.1 (Nous, дешёвая) → caveman-экономия токенов мотива не имеет.

Audit (factory-relevance × Hermes-side fit)

Skill Решение Reasoning
pulling-before-work MVP универсально, нет Hermes-аналога
using-markitdown MVP через execute_code
active-platform MVP shell-идиома (Hermes на Linux)
project-discipline MVP workflow-правила
setup-tasks / using-tasks adapt Hermes' llm-wiki .tasks/ не покрывает
setup-wiki / using-wiki adapt наша schema, override Hermes built-in
setup-projects-meta (Hermes-flavour) adapt-mandatory thin wrapper: бинарь и auth.toml уже общие в ~/projects/.common/lib/projects-meta-mcp/ и ~/.config/projects-mcp/auth.toml → только yaml-edit + /reload-mcp
using-projects-meta adapt-mandatory тулы auto-injected; политика та же; cron-синк фабричных проектов потом
setup-context7 (Hermes-flavour) adapt-mandatory yaml-edit паттерн, аналогично projects-meta
using-context7 adapt-mandatory политика та же
project-bootstrap ⚠️ adapt orchestrator — адаптируется последним
caveman×5 skip Hermes на дешёвой модели, мотив пропадает
setup-interns / using-interns skip Hermes сам — «cheap intern»
find-skills skip Hermes имеет skills_list()

MVP locked: 13 скилов (4 универсальных + 2 tasks + 2 projects-meta + 2 wiki + 2 context7 + 1 bootstrap). Skip: 8 (caveman×5 + interns×2 + find-skills).

Architecture

Источник истины + конвертер + pre-built dist

claude-skills/
├── skills/                     ← source-of-truth (Claude-формат, без изменений)
├── dist/                       ← .skill архивы для Claude (есть)
├── dist-hermes/                ← pre-converted Hermes-tree (committed, NEW)
│   ├── productivity/caveman/SKILL.md     ← (нет — в SKIPPED.md)
│   ├── software-development/pulling-before-work/SKILL.md
│   ├── software-development/active-platform/SKILL.md
│   ├── ...
│   ├── meta/claude-skills-installer/SKILL.md  ← bootstrap installer
│   └── SKIPPED.md              ← skip-log с причинами
├── hermes/
│   ├── mapping.yaml            ← skill→category, replace-rules, skip-list, mode (NEW)
│   └── skills/<name>/SKILL.md  ← `mode: manual` overrides (Hermes-flavour setups)
├── scripts/
│   ├── build.sh / build.ps1     (есть)
│   ├── install.sh               (есть)
│   └── build-hermes.{sh,py}     (NEW — конвертер)

Установка на Hermes-машине (recursive bootstrap)

git clone <claude-skills>           # private Gitea remote, на /opt/data/projects/
# Один раз:
hermes → skill_manage(action='create', from='dist-hermes/meta/claude-skills-installer/SKILL.md')
# Дальше:
hermes → trigger «обнови claude-skills» → installer-скил итерирует по dist-hermes/<cat>/<name>/, вызывает skill_manage per файл

Никакой conversion-логики на стороне Hermes. Никакого Python-окружения. Только skill_manage петля.

Категория-маппинг (черновик)

  • pulling-before-work, project-discipline, project-bootstrap, active-platformsoftware-development
  • setup-tasks, using-tasksproductivity
  • using-markitdownproductivity (или research)
  • setup-projects-meta, using-projects-meta, setup-context7, using-context7mcp
  • setup-wiki, using-wikiresearch

Decisions log

  • Q1. Maintenance model → ongoing dual-target (конвертер + маппинг, регенерим при каждом релизе claude-skills). Anti-drift, видимость Claude-измов, reuse под другие агенты.
  • Q2. Distribution → НЕ tap-репо, НЕ install-script. Pre-built dist-hermes/ (committed) + recursive Hermes-side installer-скил. Конвертация у нас, установка на Hermes — глупая петля по skill_manage.
  • Q3. Hub-публикация → out of scope (частные фабричные скилы).
  • Q4. Форма installer'а → installer-как-Hermes-скил (recursive bootstrap). Один раз ручная регистрация installer'а, дальше «обнови claude-skills» работает сам.
  • Q5. caveman → skip (модель дешёвая, мотив теряется). wiki-fork → порти́руем наши (independence). context7 → mandatory adapt. projects-meta → mandatory adapt thin (бинарь общий).
  • Q6. 🔴 не портируется → mode: skip в mapping.yaml + коммитимый dist-hermes/SKIPPED.md с причиной per skill. Stub-скилы не пишем. Silent отвергнут.
  • Q7. Версионирование → per-skill semver mirror из claude-skills фронтматтера (1.0.0 default если нет). Lock-step с upstream. Bump по project-discipline Rule 3.
  • Q8. Layout → claude-skills/hermes/{mapping.yaml,skills/} + scripts/build-hermes + dist-hermes/{<cat>/,meta/,SKIPPED.md}.

Security carry-forward

При имплементации — учитывать ЛОКАЛЬНЫЕ pre-existing уроки из claude-skills (актуально для Hermes-flavour setup-projects-meta):

  • Extraheader-pattern для git clone с auth: git -c http.extraheader="Authorization: token $T" clone <url> (per-invocation, НЕ persist в .git/config). Никаких https://USER:TOKEN@host/... URL — git персистит креды.
  • POSIX-absolute paths (~/projects/.common/...), не <project-root>/.common/... (cwd-relative). Урок из [setup-interns-fix-paths] / [using-projects-meta-fix-paths].
  • Version bump на каждый edit per project-discipline Rule 3 (PATCH/MINOR/MAJOR).

Out of scope

  • CI auto-rebuild dist-hermes/ (отдельная deferred-таска hermes-converter-ci, не блокирует MVP).
  • Распространение через Hermes Hub (частные скилы, public out).
  • Cross-fabric distribution через приватный Gitea-tap (если когда-нибудь — отдельный спайк).

Связанные таски

  • hermes-converter-mvp (claude-skills) — infra + 4 universal как proof
  • hermes-flavour-mcp-setups (claude-skills) — Hermes-version setup-projects-meta + setup-context7 (yaml-edit)
  • hermes-installer-skill (claude-skills) — recursive bootstrap loop
  • hermes-mvp-coverage (claude-skills) — extend на остальные 9 MVP-скилов, smoke-test
  • hermes-converter-ci (claude-skills, deferred) — auto-rebuild на push to master
  • tasks-close-normalize-body (common, discipline pre-req)
  • using-tasks-close-coverage-gate (claude-skills, discipline pre-req)