Point Hermes at directories of source material (code, API docs, manuals,
PDFs, configs) and it distills a reusable skill: ingest + classify -> draft
SKILL.md via the main model -> sandboxed verification -> commit only when the
verification tier meets the floor.
Surfaces (all call the shared agent/skill_distill.py engine):
- CLI: `hermes learn <dirs> [--hint --category --run --min-tier --json]`
- In-session /learn slash command (CLI + TUI + every messaging platform)
- Dashboard: Skills tab 'Learn from sources' dialog + /api/skills/learn endpoint
Verification is an honest tier (executed / checked / unverified / failed),
stamped into the skill frontmatter; never claims 'tested' when only parsed.
--run executes only allowlisted read-only snippets in a throwaway temp dir,
and is admin-gated over the gateway. Zero new model tools (footprint ladder
rung 2). Synthesis uses call_llm(task='skill_distill') so it's main-model-first
and cache-safe.
13 targeted engine tests; live-tested CLI + gateway end-to-end (reached the
'executed' tier in a sandbox).