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

142 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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/<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-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/{<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)