feat(hermes): MVP converter + 4 universal skills converted

Adds the conversion infrastructure for the Hermes-rollout (Nous Research):

- hermes/mapping.yaml — per-skill schema (mode: auto|manual|skip|pending,
  category, replace-rules, source override). Every skills/<name>/ has an
  explicit entry; the build fails on unmapped skills.
- scripts/build-hermes.py — Python converter. Reads mapping.yaml; for auto
  applies replace-rules to SKILL.md and copies the rest verbatim; for manual
  copies hermes/skills/<source>/ as-is; for skip / pending records to
  dist-hermes/SKIPPED.md.
- dist-hermes/ — pre-converted Hermes-flavour tree (committed; consumed by
  the recursive installer in [hermes-installer-skill]). Includes 4 universal
  skills: pulling-before-work, active-platform (with Linux+bash replacement
  rule), project-discipline, using-markitdown. Plus SKIPPED.md listing
  8 skip + 10 pending entries.
- README.md — adds "Build for Hermes" section, updates layout, mentions
  hermes/, dist-hermes/, build-hermes.py.

Mapping is the source of truth for the audit table from
.wiki/concepts/hermes-skills-rollout-design.md (Q1-Q8). Pending entries
preserve the audit decision (intended mode/category) for the follow-up
tasks: hermes-flavour-mcp-setups, hermes-installer-skill,
hermes-mvp-coverage. Security carry-forward (extraheader-pattern,
POSIX-absolute paths, semver bumps) — infrastructure ready (replace-rules +
manual mode); concrete content lands in hermes-flavour-mcp-setups.

Smoke-tests: idempotent re-run produces no diff; replace-rules verified on
active-platform (Linux+bash); strict-mapping fail-fast verified on a
synthetic unmapped skill (exit 1).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-07 00:00:00 +03:00
parent 065270de42
commit 6b36b312fa
10 changed files with 912 additions and 4 deletions

View File

@@ -9,8 +9,10 @@ Joint workshop and storage for Claude skills.
A shared workspace where Claude and I author, debug, and ship skills together:
- **`skills/`** — editable sources (markdown + assets), the source of truth
- **`dist/`** — built `.skill` archives, committed to the repo
- **`scripts/`** — utilities: `build.sh` (source → `.skill`), `install.sh` (source → `~/.claude/skills/`)
- **`dist/`** — built `.skill` archives for Claude, committed to the repo
- **`hermes/`** — Hermes-rollout config: `mapping.yaml` and any `mode: manual` overrides under `hermes/skills/`
- **`dist-hermes/`** — pre-converted Hermes-flavour skill tree, committed (regenerated by `scripts/build-hermes.py`)
- **`scripts/`** — utilities: `build.sh` (source → `.skill`), `install.sh` (source → `~/.claude/skills/`), `build-hermes.py` (source → `dist-hermes/`)
- **`.wiki/`**, **`.tasks/`** — working notes and the task board
## Quick start
@@ -84,15 +86,39 @@ bash scripts/build.sh caveman # one skill
`scripts/build.ps1` via PowerShell (Windows without `zip`). On Windows you
can also run `powershell scripts/build.ps1` directly.
### Build for Hermes
The same `skills/` are rolled out to Hermes Agent (Nous Research) on factory
Linux machines. The converter reads `hermes/mapping.yaml` (per-skill
mode / category / replace-rules / skip-list) and writes a Hermes-formatted
skill tree to `dist-hermes/`, which is committed to the repo.
```bash
python scripts/build-hermes.py # regenerate dist-hermes/ from mapping
```
Every skill in `skills/` must have an explicit entry in `mapping.yaml`
(`auto` / `manual` / `skip` / `pending`); the build fails on unmapped skills.
Skip and pending entries land in `dist-hermes/SKIPPED.md` with reasons. Full
design rationale lives in
[`.wiki/concepts/hermes-skills-rollout-design.md`](.wiki/concepts/hermes-skills-rollout-design.md).
## Layout
```
claude-skills/
├── skills/ ← sources (one folder per skill)
├── dist/ ← .skill archives (committed)
├── dist/ ← .skill archives for Claude (committed)
├── hermes/
│ ├── mapping.yaml ← per-skill Hermes-rollout config
│ └── skills/ ← `mode: manual` overrides (Hermes-flavour rewrites)
├── dist-hermes/ ← pre-converted Hermes-flavour tree (committed)
│ ├── <category>/<name>/ ← e.g. software-development/pulling-before-work/
│ └── SKIPPED.md ← skip + pending log (auto-generated)
├── scripts/
│ ├── build.sh / build.ps1
── install.sh
── install.sh / install.ps1
│ └── build-hermes.py
├── .wiki/ ← design docs, notes
├── .tasks/ ← STATUS.md
├── CLAUDE.md