--- tags: - hermes - skills - conversion - deployment - factory sources: - '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 source_brainstorm: .meeting-room/.archive/2026-05-06-hermes-skills-rollout.md title: hermes-skills-rollout-design type: concept ingested_at: '2026-05-06T20:21:13.349Z' ingested_by: OpeItcLoc03@DESKTOP-NSEF0UK source_project: .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///`. ## 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.` (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//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 # 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///, вызывает skill_manage per файл ``` Никакой conversion-логики на стороне Hermes. Никакого Python-окружения. Только `skill_manage` петля. ### Категория-маппинг (черновик) - `pulling-before-work`, `project-discipline`, `project-bootstrap`, `active-platform` → `software-development` - `setup-tasks`, `using-tasks` → `productivity` - `using-markitdown` → `productivity` (или `research`) - `setup-projects-meta`, `using-projects-meta`, `setup-context7`, `using-context7` → `mcp` - `setup-wiki`, `using-wiki` → `research` ## 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/{/,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 ` (per-invocation, НЕ persist в `.git/config`). Никаких `https://USER:TOKEN@host/...` URL — git персистит креды. - **POSIX-absolute paths** (`~/projects/.common/...`), не `/.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)