Hermes Skill Forge ๐Ÿ”จ

March 14, 2026 ยท View on GitHub

Self-evolving agent that turns repeated tasks into reusable Skills - autonomously.

Built for the NousResearch "Show us what Hermes Agent can do" hackathon.

What It Does

Hermes Skill Forge watches itself complete tasks, identifies reusable patterns, writes a Skill, tests it in a Python sandbox, refines it until quality >= 0.8, then publishes it to the agentskills.io marketplace.

The more it works, the smarter it gets.

Architecture

flowchart TD
    A([๐Ÿ”” Repeated Task Detected]) --> B
    B[๐Ÿ” OBSERVE<br/>Search memory + marketplace<br/>Avoid duplication] --> C
    C[๐Ÿ’ก ABSTRACT<br/>Extract reusable pattern<br/>Define inputs & outputs] --> D
    D[๐Ÿ“ WRITE<br/>Create SKILL.md<br/>With YAML frontmatter] --> E
    E[๐Ÿงช TEST<br/>Run 3 test cases in sandbox<br/>Happy ยท Edge ยท Error] --> F
    F{quality_score >= 0.8?}
    F -- Yes --> G[๐Ÿš€ PUBLISH<br/>Simulate PR to<br/>agentskills.io]
    F -- No  --> H[๐Ÿ”ง REFINE<br/>Fix failures<br/>Rewrite skill]
    H --> E
    G --> I([๐Ÿง  UPDATE MEMORY<br/>Skill stored forever<br/>Never duplicated])

    style A fill:#c0392b,color:#fff
    style G fill:#27ae60,color:#fff
    style F fill:#e67e22,color:#fff
    style I fill:#8e44ad,color:#fff

Hermes Features Used

FeatureHow It's Used
MemoryRemembers every skill ever created - searches before writing to avoid duplication
SkillsWrites and self-installs new SKILL.md files to ~/.hermes/skills/
execute_codeTests each skill with 3 real Python test cases in a sandbox
Auto-EvaluatorAfter tests run, automatically calculates quality_score and triggers publish if >= 0.8
SubagentsParallel refinement loops when quality < 0.8 - rewrite and retest
Atropos RLReward function trains Hermes to forge better skills over time
GatewaySimulates PR submission to agentskills.io community marketplace

Reward Function

pie title Skill Forge Reward Components
    "Skill Written - SKILL.md created?" : 30
    "Tests Executed - Real Python run?" : 25
    "Quality Score - Achieved >= 0.8?" : 20
    "Published - Passed quality gate?" : 10
    "Searched First - No duplication?" : 10
    "Documentation - Clear + examples?" : 5

Quick Start

pip install openai rich
set OPENROUTER_API_KEY=sk-or-...

python demo/demo_skill_forge.py --task web-summarizer
python demo/demo_skill_forge.py --task log-analyzer
python demo/demo_skill_forge.py --task code-reviewer

Demo Output (web-summarizer)

๐Ÿง  search_memory     โ†’ Memory is empty.
๐Ÿ” search_skills     โ†’ No matching skills found.
๐Ÿ“ write_file        โ†’ Written SKILL.md to ~/.hermes/skills/web-summarizer/
๐Ÿงช execute_code      โ†’ HAPPY ['sentence one', 'sentence two', 'sentence three']
๐Ÿงช execute_code      โ†’ EDGE  ['No content to summarize']
๐Ÿงช execute_code      โ†’ ERROR ValueError (handled gracefully)
[AUTO EVALUATOR]     โ†’ quality_score=1.00 โœ“ - calling publish_skill
๐Ÿš€ publish_skill     โ†’ Published! PR: github.com/NousResearch/agentskills/pull/1890

Quality score: 1.00 | Skills written: 1 | Published: 1

Demo Scenarios

ScenarioWhat Hermes ForgesDifficulty
web-summarizerFetch text โ†’ 3 bullet summaryEasy
log-analyzerParse logs โ†’ count errors by typeMedium
code-reviewerDetect code smells automaticallyMedium

Project Structure

graph LR
    A[hermes-skill-marketplace] --> B[skills/]
    A --> C[environments/]
    A --> D[demo/]
    A --> E[tests/]
    A --> F[docs/]

    B --> B1[skill-forge/SKILL.md<br/>Agent playbook]
    C --> C1[skill_forge_env.py<br/>Atropos RL environment]
    C --> C2[skill_forge_config.yaml<br/>Training config]
    D --> D1[demo_skill_forge.py<br/>Standalone demo]
    E --> E1[test_skill_forge_env.py<br/>Pytest suite]

    style B1 fill:#27ae60,color:#fff
    style C1 fill:#8e44ad,color:#fff
    style D1 fill:#e67e22,color:#fff

Running Tests

python -m pytest tests/ -v
# or without pytest:
python -c "from environments.skill_forge_env import smoke_test; smoke_test()"

Why This Wins

Most agents do a task and stop. Hermes Skill Forge does a task and makes itself better at that task forever.

Every skill it publishes becomes available to every other Hermes agent. That's not automation - it's self-directed skill acquisition at community scale.