10 KiB
tags, sources, source_brainstorm, title, type, ingested_at, ingested_by, source_project
| tags | sources | source_brainstorm | title | type | ingested_at | ingested_by | source_project | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
.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лишним.cronjobtool встроен → через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-developmentsetup-tasks,using-tasks→productivityusing-markitdown→productivity(илиresearch)setup-projects-meta,using-projects-meta,setup-context7,using-context7→mcpsetup-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.0default если нет). Lock-step с upstream. Bump поproject-disciplineRule 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-disciplineRule 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 как proofhermes-flavour-mcp-setups(claude-skills) — Hermes-versionsetup-projects-meta+setup-context7(yaml-edit)hermes-installer-skill(claude-skills) — recursive bootstrap loophermes-mvp-coverage(claude-skills) — extend на остальные 9 MVP-скилов, smoke-testhermes-converter-ci(claude-skills, deferred) — auto-rebuild на push to mastertasks-close-normalize-body(common, discipline pre-req)using-tasks-close-coverage-gate(claude-skills, discipline pre-req)