ในบทความนี้
- 1. Anatomy of a Skill — SKILL.md และมาตรฐานเปิด agentskills.io
- 2. Skills อยู่ที่ไหน โหลดอย่างไร — Progressive Disclosure
- 3. Learning Loop — skill_manage, Triggers และ Telemetry
- 4. The Curator — วงจรชีวิตของ skill ที่ agent เขียนเอง
- 5. /learn และ Offline Evolution — กลั่นความรู้เป็น skill
- 6. Governance — write_approval, Security Scanning และ Trust Tiers
- 7. เขียนเองและแบ่งปัน — Templates, Taps และ Skills Hub
- 8. Portability — ย้ายจาก OpenClaw และช่องว่างฝั่ง Claude Code
In this post
- 1. Anatomy of a Skill: SKILL.md and the agentskills.io Standard
- 2. Where Skills Live and How They Load: Progressive Disclosure
- 3. The Learning Loop: skill_manage, Triggers, and Telemetry
- 4. The Curator: A Lifecycle for Skills the Agent Wrote
- 5. /learn and Offline Evolution: Distilling Knowledge into Skills
- 6. Governance: write_approval, Security Scanning, and Trust Tiers
- 7. Hand-Authoring and Sharing: Templates, Taps, and the Skills Hub
- 8. Portability: From OpenClaw In — and the Claude Code Gap
🤔 ลองนึกภาพดู: AI agent ของคุณเพิ่งงมทางอยู่ครึ่งชั่วโมงกับงาน deploy ที่มีขั้นตอนซ่อนอยู่เป็นสิบขั้น ลองผิดไปสองรอบ เจอ error หนึ่งชุด แล้วในที่สุดก็เจอเส้นทางที่ใช้ได้จริง — คำถามคือ พรุ่งนี้เมื่องานแบบเดียวกันวนกลับมา มันควรเริ่มงมใหม่จากศูนย์ หรือควรจดวิธีที่พิสูจน์แล้วเก็บไว้เป็นทักษะ แล้วหยิบมาใช้ได้เลย?
ผู้อ่านซีรีส์ OpenClaw for Organizations ของผมจะคุ้นกับครึ่งแรกของคำตอบดี — ในบทความ OpenClaw Skills ผมเล่าไว้ว่า skill คือโฟลเดอร์ที่มีไฟล์ SKILL.md บอก agent ว่า "งานแบบนี้ ทำแบบนี้" ซึ่งยกระดับความสม่ำเสมอของงานได้มาก แต่โมเดลฝั่งนั้นมีสมมติฐานเงียบ ๆ อยู่ข้อหนึ่ง: คนเป็นคนเขียน skill — agent เป็นเพียงผู้ใช้
Hermes Agent ของ Nous Research (เปิดตัวสาธารณะเมื่อ 25 กุมภาพันธ์ 2026 และวันนี้มีดาวบน GitHub เกือบ 240,000 ดวง) เดินต่ออีกก้าวที่ผมเห็นว่าน่าสนใจที่สุดในสถาปัตยกรรมทั้งหมดของมัน: agent เขียน skill ของตัวเองได้ ผ่าน tool ชื่อ skill_manage ปรับปรุงมันระหว่างใช้งาน และมี process หลังบ้านชื่อ Curator คอยดูแลวงจรชีวิตของสิ่งที่มันเขียน เอกสารของ Hermes เรียกระบบนี้ตรง ๆ ว่า procedural memory — ความจำเชิงกระบวนการ — และ README ก็ย่อปรัชญาทั้งหมดไว้ในประโยคเดียวว่า "The agent that grows with you" บทความ #6 ของซีรีส์จะไล่ทั้งระบบ ตั้งแต่กายวิภาคของ skill หนึ่งตัว ไปจนถึงคำถามที่องค์กรต้องตอบก่อนปล่อยให้ loop นี้หมุนเอง: ใครตรวจงานของ agent ที่เขียนตำราสอนตัวเอง?
1. Anatomy of a Skill — SKILL.md และมาตรฐานเปิด agentskills.io
skill ของ Hermes คือโฟลเดอร์หนึ่งโฟลเดอร์ที่มีไฟล์ SKILL.md เป็นหัวใจ — ไฟล์ Markdown ที่มี YAML frontmatter อยู่ด้านบน ตามมาตรฐานเปิด Agent Skills ของ agentskills.io ซึ่งมีจุดกำเนิดจาก Anthropic ก่อนถูกปล่อยเป็นมาตรฐานเปิด เว็บไซต์ของมาตรฐานระบุผู้ adopt ไว้ราว 40 client — รวมทั้ง Claude Code, Claude, OpenClaw, Codex, Gemini CLI และ Hermes เอง นั่นแปลว่ารูปแบบไฟล์ที่คุณกำลังจะเห็น ไม่ใช่ของเฉพาะค่ายใดค่ายหนึ่งอีกต่อไป
ข้อกำหนดขั้นต่ำเบามาก: frontmatter บังคับแค่ name กับ description ส่วนของที่เป็น Hermes โดยเฉพาะถูกจัดระเบียบไว้ใต้ namespace metadata.hermes ทั้งหมด — tags, category, related_skills, การผูกกับ toolsets ไปจนถึง blueprint ที่เปลี่ยน skill ให้เป็นงานตามตาราง cron:
---
name: server-health-report
description: สรุปสถานะ server ประจำวันจาก log และ metrics
Use when the user asks for a daily health report.
version: 1.0.0
platforms: [linux, macos] # ซ่อน skill ตาม OS
metadata:
hermes:
tags: [ops, monitoring]
category: operations
requires_toolsets: [shell] # โผล่เมื่อ toolset พร้อมเท่านั้น
blueprint: # เปลี่ยน skill เป็นงาน cron
schedule: "0 7 * * 1-5"
prompt: รันรายงานสถานะ server แล้วส่งเข้า Slack ห้อง ops
---
# Server Health Report
## When to Use
## Quick Reference
## Procedure
## Pitfalls
## Verification
สังเกตโครงของ body: When to Use → Quick Reference → Procedure → Pitfalls → Verification คือลำดับ "ทรงบ้าน" ที่ developer guide ของ Hermes วางไว้ — ให้เกณฑ์ตัดสินใจมาก่อน สูตรลัดตามมา ขั้นตอนละเอียดอยู่กลาง และปิดด้วยวิธีตรวจว่างานสำเร็จจริง ใครที่เคยเขียน runbook ให้คนอ่านจะรู้สึกคุ้นทันที เพราะมันคือ runbook ดี ๆ นี่เอง เพียงแต่ผู้อ่านเป้าหมายเป็น LLM
frontmatter ยังทำ conditional activation ได้ละเอียดกว่าที่เห็น: fallback_for_toolsets ทำให้ skill ปรากฏเฉพาะเมื่อ toolset บางตัวหายไป (ตัวอย่างในเอกสารคือ skill duckduckgo-search ที่โผล่มาเฉพาะเครื่องที่ไม่มี web toolset — เป็น plan B ที่ประกาศตัวเองอัตโนมัติ) ส่วน required_environment_variables และ required_credential_files ประกาศ dependency ให้ตรวจได้ก่อนรัน ด้านเพดานขนาด Hermes Atlas ซึ่งเป็น community project (ไม่ใช่เอกสารทางการ) ระบุไว้ราวหนึ่งแสนตัวอักษรต่อ skill — ตัวเลขนี้ควรอ่านเป็นค่าประมาณจากบุคคลที่สาม
2. Skills อยู่ที่ไหน โหลดอย่างไร — Progressive Disclosure
บ้านหลักของ skills คือ ~/.hermes/skills/ ซึ่งเอกสารเรียกว่า "the primary directory and source of truth" จัดกลุ่มเป็นหมวดหมู่ และแต่ละ skill มีโฟลเดอร์ประกอบได้ครบชุด:
~/.hermes/skills/
└── operations/
└── server-health-report/
├── SKILL.md # หัวใจ — โหลดเมื่อถูกเรียกเท่านั้น
├── references/ # เอกสารอ้างอิง โหลดทีละไฟล์
├── scripts/ # helper logic แยกออกจากตัวคู่มือ
├── templates/
├── examples/
└── assets/
นอกจากบ้านหลัก ยังมี skill ระดับโปรเจกต์ (.hermes/skills/ หรือ .agents/skills/ ใน repo — ถูก gate ด้วยระบบ trust ก่อนโหลด) และ directory ภายนอกที่ประกาศเพิ่มได้ใน config โดยลำดับความสำคัญคือ project → local → external:
# ~/.hermes/config.yaml
skills:
external_dirs:
- /srv/shared-skills # คลัง skills กลางของทีม
คำถามที่วิศวกรจะถามทันที: ถ้ามี skill เป็นร้อยตัว context window ไม่ระเบิดหรือ? คำตอบของ Hermes คือ progressive disclosure สามชั้น:
- ชั้นที่ 1 —
skills_list(): agent เห็นเฉพาะ metadata (ชื่อ + description) ของทุก skill รวมประมาณ 3,000 tokens ไม่ว่าคลังจะใหญ่แค่ไหน - ชั้นที่ 2 —
skill_view(name): โหลด SKILL.md ฉบับเต็มเฉพาะตัวที่เกี่ยวกับงานตรงหน้า - ชั้นที่ 3 —
skill_view(name, path): เจาะไฟล์ใน references/ เป็นรายชิ้น เมื่อขั้นตอนไหนต้องการรายละเอียดจริง
ฝั่งผู้ใช้ ทุก skill เรียกตรงได้เป็น slash command (/server-health-report) ซ้อนหลาย skill ในคำสั่งเดียวก็ได้ และจัดกลุ่มเป็น bundle เก็บไว้ที่ ~/.hermes/skill-bundles/<slug>.yaml ผ่านคำสั่ง hermes bundles create
3. Learning Loop — skill_manage, Triggers และ Telemetry
มาถึงหัวใจของบทความ สิ่งที่ทำให้ระบบ skills ของ Hermes ต่างจากทุกตัวที่ผมเคยเขียนถึง: agent ถือ tool ชื่อ skill_manage — ชุดปฏิบัติการหกแบบสำหรับเขียนและแก้คลังทักษะของตัวเอง:
| Action | ใช้ทำอะไร | หมายเหตุ |
|---|---|---|
create | สร้าง skill ใหม่ทั้งโฟลเดอร์ | trigger หลักหลังทำงานซับซ้อนสำเร็จ |
patch | แก้เฉพาะจุดแบบเจาะจง | ทางที่เอกสารแนะนำ สำหรับ self-improvement ระหว่างใช้งาน |
edit | เขียนใหม่ครั้งใหญ่ | เมื่อโครงเดิมไปต่อไม่ไหว |
delete | ลบ skill ทิ้ง | — |
write_file | เพิ่ม/แก้ไฟล์ประกอบใน references/ scripts/ | — |
remove_file | ลบไฟล์ประกอบ | — |
trigger ที่เอกสารระบุมีสามแบบ: (1) ทำงานซับซ้อนสำเร็จ — เกณฑ์ที่เขียนไว้คืองานที่ใช้ tool call ตั้งแต่ 5 ครั้งขึ้นไป (ผมยังไม่พบเอกสารที่บอกว่าเกณฑ์นี้ปรับค่าได้) (2) เจอ error หรือทางตัน แล้วในที่สุดก็หาทางที่ใช้ได้เจอ — ตัวเส้นทางที่รอดนั่นแหละคือของมีค่า (3) ถูกผู้ใช้แก้ให้ หลังงาน multi-step ใหญ่ ๆ Hermes มักจะเสนอเองว่า "อยากให้บันทึกวิธีนี้เป็น skill ไหม" — จุดตัดสินใจอยู่ที่มนุษย์ในจังหวะนั้น
ทุกการใช้งานถูกจดเป็น telemetry ในไฟล์ ~/.hermes/skills/.usage.json — โครงฟิลด์ตามเอกสาร (ค่าในตัวอย่างนี้ผมสมมติขึ้นเพื่อให้เห็นรูปร่าง):
{
"operations/server-health-report": {
"use_count": 14, // ครั้งที่ถูกโหลดเข้า prompt
"view_count": 3, // ครั้งที่ agent เรียก skill_view
"patch_count": 2, // ครั้งที่ถูก skill_manage แก้
"last_used_at": "2026-08-30T07:02:11Z",
"created_at": "2026-06-14T09:41:00Z",
"created_by": "agent" // ป้ายบอกที่มา — สำคัญต่อ Curator
}
}
ป้าย created_by: agent ไม่ได้ถูกตั้งโดย skill_manage ตรง ๆ แต่โดย background self-improvement review fork — process แยกที่ทบทวนงานย้อนหลัง และป้ายนี้คือเส้นแบ่งสำคัญของทั้งระบบ: Curator ในหัวข้อถัดไปจัดการเฉพาะ skill ที่ติดป้ายนี้เท่านั้น skill ที่คุณเขียนเองด้วยมือจะไม่ถูกระบบอัตโนมัติแตะเลย
4. The Curator — วงจรชีวิตของ skill ที่ agent เขียนเอง
ปล่อยให้ agent สะสม skill ไปเรื่อย ๆ โดยไม่มีใครเก็บกวาด ปลายทางคือกองไฟล์ที่ไม่มีใครกล้าลบ — โรคเดียวกับ daily log ฝั่ง memory ที่ผมเคยวิจารณ์ไว้ในซีรีส์ OpenClaw Hermes ตอบโจทย์นี้ด้วย Curator: งานบำรุงรักษาหลังบ้านที่รันเมื่อเครื่องว่าง (ค่า default: ตรวจทุก 168 ชั่วโมง และรอให้ idle อย่างน้อย 2 ชั่วโมงก่อน) และแตะเฉพาะ skill ที่มีป้าย created_by: agent
| สถานะ | เงื่อนไข (ค่า default) | ผลลัพธ์ |
|---|---|---|
| active | ยังถูกใช้งานอยู่ | พร้อมโหลดตามปกติ |
| stale | ไม่ถูกใช้ 30 วัน | ถูกทำเครื่องหมายรอพิจารณา |
| archived | ไม่ถูกใช้ 90 วัน | ย้ายเข้า ~/.hermes/skills/.archive/ — กู้คืนได้ ไม่มีการลบถาวรอัตโนมัติ |
skill ที่ถูก pin ไว้ และ skill ที่ blueprint/cron อ้างถึง จะถูกข้ามเสมอ ส่วนขั้นที่ไปไกลกว่านั้น — ให้ LLM ควบรวม skill ที่ซ้ำเกือบเหมือนกัน (consolidation) — เป็น opt-in และปิดโดย default โดยใช้ model slot แยกชื่อ auxiliary.curator:
# ~/.hermes/config.yaml
curator:
interval_hours: 168 # ตรวจสัปดาห์ละครั้ง
min_idle_hours: 2 # รันเฉพาะตอนเครื่องว่างจริง
stale_after_days: 30
archive_after_days: 90
consolidate: false # ให้ LLM ควบรวม — ปิดไว้ก่อนจนกว่าจะไว้ใจ
ตาข่ายนิรภัยของ Curator ครบกว่าที่ผมคาดไว้: ก่อนรันทุกครั้งมัน snapshot ทั้ง directory เก็บไว้ที่ ~/.hermes/skills/.curator_backups/<utc-iso>/skills.tar.gz (เก็บ 5 ชุดล่าสุด) ทุกความเปลี่ยนแปลงถูกจดลง ledger แบบ append-only (.curator_ledger.jsonl) และมีคำสั่งคุมมือครบมือ:
hermes curator status # สถานะรอบล่าสุด
hermes curator run --dry-run # ซ้อมรัน — ดูว่าจะแตะอะไรบ้าง
hermes curator pin my-skill # ห้ามแตะตัวนี้เด็ดขาด
hermes curator restore my-skill # กู้จาก archive
hermes curator rollback # ถอยกลับ snapshot ก่อนหน้า
hermes curator ledger # อ่านประวัติการแตะต้องทั้งหมด
💡 มุมมองของผม: ชุดออกแบบ "ไม่ลบถาวร + ledger + dry-run + rollback" บอกว่า Nous เข้าใจความกลัวที่ถูกต้องของผู้ใช้ — ระบบอัตโนมัติที่แตะคลังความรู้ขององค์กรต้อง audit ได้และถอยหลังได้เสมอ นี่คือเกณฑ์เดียวกับที่เราใช้ตัดสินระบบ backup และผมอยากเห็นทุก agent framework ถือมาตรฐานนี้
5. /learn และ Offline Evolution — กลั่นความรู้เป็น skill
loop ที่เล่ามาทั้งหมดเกิดจาก "ประสบการณ์" ของ agent เอง แต่ความรู้ส่วนใหญ่ขององค์กรไม่ได้อยู่ในประสบการณ์ของ agent — มันอยู่ในเอกสาร ใน repo และในบทสนทนา Hermes เติมช่องนี้ด้วยคำสั่ง /learn (MarkTechPost รายงานเมื่อ 24 มิถุนายน 2026): ให้ agent ที่กำลังคุยอยู่กลั่นแหล่งความรู้ให้เป็น SKILL.md ที่ตรงมาตรฐานทันที แหล่งที่รองรับมีสี่แบบ — directory ในเครื่อง, URL, ประวัติบทสนทนา และโน้ตที่ paste เข้ามา:
/learn ./docs/deploy-runbook # กลั่นจาก directory ในเครื่อง
/learn https://example.com/guide # กลั่นจากหน้าเว็บ
/learn # กลั่นจากบทสนทนาที่กำลังคุย
# หรือ paste โน้ตยาว ๆ แล้วสั่ง /learn ต่อท้าย
เบื้องหลัง /learn ใช้ tools ปกติของ agent (read_file, search_files, web_extract) และเมื่อแหล่งใหญ่เกินกว่าจะยัดลง SKILL.md เดียว มันจะสร้าง knowledge-base skill: SKILL.md บาง ๆ ทำหน้าที่สารบัญ + ไฟล์อ้างอิงที่ index ไว้ใน references/ ให้ progressive disclosure โหลดทีละชิ้นตามจังหวะที่ใช้จริง
อีกกลไกอยู่คนละจังหวะเวลาโดยสิ้นเชิง: repo ทางการแยกชื่อ hermes-agent-self-evolution ทำ evolutionary optimization แบบ offline ด้วย DSPy + GEPA — อ่าน execution traces เพื่อเข้าใจว่างานพังเพราะอะไร สร้าง eval dataset แล้ววิวัฒน์ skill รุ่นทดลองผ่านด่านบังคับหลายชั้น: test suite เต็มรูป, ขนาดไม่เกิน 15KB, รักษาความหมายเดิม และต้องผ่าน human review เป็น pull request เสมอ ค่าใช้จ่ายราว $2–10 ต่อรอบ ไม่ต้องใช้ GPU (Phase 1 ปัจจุบัน optimize เฉพาะไฟล์ skill)
สองกลไกนี้ต่างกันเชิงปรัชญา และความต่างนั้นสำคัญกับองค์กร: /learn คือ agent สด ๆ เขียนทันทีในบทสนทนา ส่วน self-evolution คือ pipeline ช้า ๆ ที่จบด้วยมนุษย์กด merge — สำหรับสภาพแวดล้อมที่ต้อง audit ได้ ผมมองว่าทรงหลังคือทรงที่ governance รับได้ง่ายกว่ามาก
6. Governance — write_approval, Security Scanning และ Trust Tiers
ค่า default ของ Hermes คือ agent เขียน skill ได้อิสระโดยไม่ต้องขออนุญาต — และนี่คือจุดที่เสียงบ่นของ community ดังที่สุด: มีผู้ใช้บน Reddit และ X รายงานทำนองว่า agent "อนุมัติความผิดพลาดของตัวเอง" จดวิธีที่ผิดลงเป็นทักษะถาวร หรือ patch ทับ skill ที่คนจูนมือไว้อย่างดี (ทั้งหมดเป็นรายงานจากผู้ใช้ ไม่ใช่สถิติทางการ — แต่สอดคล้องกับการที่ Nous ใส่กลไกป้องกันมาให้ครบชุด)
skills.write_approval: true — เปลี่ยนทุกการเขียนของ agent จาก "ลงถาวรทันที" เป็น "ค้างรอมนุษย์ review" ใน ~/.hermes/pending/skills/ ถ้าจะจำอะไรจากบทความนี้เพียงข้อเดียว จำข้อนี้
# ~/.hermes/config.yaml
skills:
write_approval: true # ทุกการเขียนของ agent ต้องผ่านคน
เมื่อเปิดแล้ว งานเขียนของ agent จะเข้าคิวเหมือน pull request ย่อม ๆ ที่คุณไล่ตรวจด้วยสี่คำสั่ง:
/skills pending # ดูคิวรอตรวจ
/skills diff a1b2 # เปิด diff รายตัว — เหมือน review PR
/skills approve a1b2 # รับเข้าคลัง
/skills reject a1b2 # ตีกลับ
สำหรับองค์กรที่จะเอาระบบนี้ไปใช้จริง ผมเสนอลำดับการเปิดแบบขั้นบันได — อย่าเปิดทุกอย่างพร้อมกันวันแรก:
- ขั้นสังเกต: เปิด write_approval ตั้งแต่วันแรก แล้วปล่อยให้ agent เสนอ skill เข้าคิวโดยยังไม่ approve อะไรเลย — คุณจะเห็นชัดว่ามัน "อยากจด" อะไร และคุณภาพงานเขียนของมันเป็นอย่างไร
- ขั้น review เป็นกิจวัตร: ตั้งรอบไล่ตรวจ
/skills pendingให้เป็นวินัยเดียวกับรอบ review pull request ปกติของทีม - ขั้นเปิด Curator: ปล่อยวงจร stale → archive ทำงาน โดยยังปิด consolidate ไว้ตามค่า default
- ขั้นสุดท้ายจึงพิจารณา consolidation: เปิดเมื่อคุณมี ledger ให้ audit ย้อนหลังจนไว้ใจพฤติกรรมของระบบแล้วเท่านั้น
ฝั่ง skill ที่มาจากภายนอก ทุกการติดตั้งผ่าน Skills Hub ต้องผ่าน security scan ภาคบังคับ — ตรวจ prompt injection การ exfiltrate ข้อมูล และคำสั่งทำลายล้าง verdict ระดับ dangerous ถูก block เด็ดขาดโดยไม่มี --force ให้ override ส่วน skill ระดับโปรเจกต์ที่มากับ repo ก็ถูกสแกนและ quarantine ตอนโหลดเช่นกัน ระบบแบ่งความเชื่อถือเป็นสี่ชั้น — builtin / official / trusted / community — และเสริมชั้นตรวจ optional ด้วย SkillEvaluator v0.1.0 ของ NVIDIA ได้อีกหนึ่งชั้น
ผมอ่านทั้งชุดนี้เป็นบทเรียนที่ถอดมาจากยุค marketplace ของ OpenClaw — ผู้อ่านซีรีส์เดิมคงจำข่าว skill อันตรายในระบบนิเวศฝั่งนั้นได้ Hermes ออกแบบขาเข้าให้ fail-closed ตั้งแต่แรก (threat model ฉบับเต็มผมแยกไว้ใน #4 Security)
ประเด็น governance สุดท้ายที่คนมักมองข้าม: bundled skills ที่มากับตัวโปรแกรมจะเป็นอย่างไรตอน update? Hermes ใช้ origin-hash tracking ในไฟล์ ~/.hermes/skills/.bundled_manifest — ถ้าคุณแก้ skill ที่ bundle มา มือของคุณชนะเสมอ: ตัว update จะข้ามไฟล์ที่ผู้ใช้แก้แล้ว ไม่เขียนทับเงียบ ๆ และมีคำสั่งจัดการเมื่ออยากกลับไปตามต้นทางหรือเลิกใช้ทั้งชุด:
hermes skills reset my-skill --restore # กลับไปตามฉบับต้นทาง
hermes skills opt-out --remove # เลิกใช้ bundled skills ทั้งหมด
7. เขียนเองและแบ่งปัน — Templates, Taps และ Skills Hub
แม้ loop อัตโนมัติจะเป็นพระเอกของเรื่อง งานจริงในองค์กรส่วนใหญ่ยังเริ่มจาก skill ที่คนเขียน — และ Hermes ทำให้เส้นทางนี้เป็นงานช่างที่มีแบบแผน ตาม developer guide:
- ตั้งโครง body ตามทรงบ้าน — When to Use → Quick Reference → Procedure → Pitfalls → Verification — และเอา workflow ที่ใช้บ่อยที่สุดขึ้นก่อน
- เลือกเครื่องมือที่หนักน้อยที่สุด: stdlib Python, curl หรือ tool ที่ Hermes มีอยู่แล้ว — logic ยาว ๆ แยกออกไปไว้ใน scripts/
- ใช้ template token ที่ระบบแทนค่าให้:
${HERMES_SKILL_DIR}ชี้โฟลเดอร์ของ skill ตัวเอง และ${HERMES_SESSION_ID}ระบุ session ปัจจุบัน - ทดสอบแบบแยกส่วนก่อนปล่อยใช้จริง:
hermes chat --toolsets skills -q "ใช้ skill server-health-report ตรวจเครื่องนี้"
เพื่อให้เห็นภาพว่างานเขียนที่ดีหน้าตาเป็นอย่างไร นี่คือส่วน Quick Reference และ Pitfalls แบบที่ผมอยากเห็นในทุก skill — สั้น ตรง และ copy ไปรันได้ทันที:
## Quick Reference
# ตรวจสุขภาพครบทุกระบบรอบเดียว
./scripts/health.sh --all
# ตรวจเฉพาะ service เดียว
./scripts/health.sh --service nginx
## Pitfalls
# - log ที่ rotate แล้วย้ายไปอยู่ใต้ /var/log/archive — อย่าลืมกวาดด้วย
# - อย่ารัน --all ช่วง backup window เพราะตัวเลข I/O จะหลอกตา
การแบ่งปันภายในทีมมีสองทางหลัก — เผยแพร่ขึ้น repo ตรง ๆ หรือระบบ "tap" สไตล์ Homebrew ที่ชี้ tap ครั้งเดียวแล้วติดตั้งได้ทั้ง repo:
# ฝั่งคนเขียน: เผยแพร่ skill ขึ้น GitHub
hermes skills publish skills/my-skill --to github --repo myorg/hermes-skills
# ฝั่งเพื่อนร่วมทีม: เพิ่ม tap แล้ว skills ใน repo นั้นติดตั้งได้ทันที
hermes skills tap add myorg/hermes-skills
ขาเข้า Skills Hub รวมแหล่งติดตั้งหลายประเภทไว้ใต้ชุดคำสั่งเดียว (hermes skills browse / search / inspect / install / check / update):
| แหล่ง | คืออะไร |
|---|---|
| official | catalog เสริมที่ Nous ดูแล มาพร้อมตัวติดตั้ง |
| skills-sh | directory ของ skills.sh (Vercel) |
| well-known | เว็บไซต์ที่ประกาศ skill ผ่าน .well-known/skills/index.json |
| URL / GitHub repo | ติดตั้งตรงจากลิงก์หรือ repo ใดก็ได้ (ผ่าน security scan เสมอ) |
| community hubs | clawhub, lobehub, browse-sh |
workflow ที่ผมแนะนำสำหรับของจากภายนอก: inspect ก่อน install เสมอ — อ่านรายละเอียดและผล scan ก่อนตัดสินใจรับเข้าเครื่อง:
hermes skills browse # เปิดดู catalog
hermes skills search <keyword> # ค้นหา
hermes skills inspect <name> # อ่านรายละเอียด + ผล scan ก่อนติดตั้ง
hermes skills install <name>
hermes skills check # ตรวจว่ามีอัปเดตไหม
hermes skills update
ขนาดของระบบนิเวศ: Hermes มาพร้อม skill ในตัวและ catalog เสริมรวมกันหลักร้อยตัว (ตัวเลขละเอียดขยับทุก release — ผมจงใจไม่พิมพ์เลขตายตัว) และ directory ฝั่ง community ก็ track ไว้อีกจำนวนมาก รวมถึง meta-tooling รอบ ๆ loop เช่น hermes-skill-factory (meta-skill ที่สร้าง skill จาก workflow), SkillClaw (ระบบวิวัฒน์คลัง skill จาก session data — ดาวราว 2.5 พันดวง ตาม directory ของ community) และ oh-my-hermes — ทั้งหมดเป็นของ community ต้องผ่านการ scan และวิจารณญาณเหมือน skill ภายนอกทุกตัว
💡 ข้อสังเกตจากมุมคนสอนหนังสือ: SKILL.md ที่เขียนดีคือเอกสาร onboarding ชั้นเยี่ยมสำหรับ "คน" ด้วย — โครง When to Use / Pitfalls / Verification บังคับให้เราถอดความรู้ในหัวของทีมออกมาเป็นลายลักษณ์อักษร ต่อให้ไม่มี agent มาอ่าน องค์กรก็ได้ runbook ดี ๆ ไปหนึ่งชุด
8. Portability — ย้ายจาก OpenClaw และช่องว่างฝั่ง Claude Code
คำถามที่ผมถูกถามบ่อยที่สุดตั้งแต่เปิดซีรีส์นี้: "skill ที่ลงแรงเขียนไว้ฝั่ง OpenClaw เอามาใช้ต่อได้ไหม?" ข่าวดีคือเส้นทางนี้เป็นทางการ — optional skill ชื่อ openclaw-migration ให้คำสั่งสำเร็จรูป:
hermes claw migrate --dry-run # ดูก่อนว่าจะย้ายอะไรบ้าง
hermes claw migrate --execute --preset user-data
# skills ถูก copy ไปไว้ที่ ~/.hermes/skills/openclaw-imports/
# พร้อมแปลง SOUL.md, memory files, allowlists, messaging settings
สังเกตคำว่า copy — ของเดิมฝั่ง OpenClaw ไม่ถูกแตะ จึงเหมาะกับการทดลองคู่ขนานระหว่างที่ยังไม่ตัดสินใจปักหลัก (ฝั่ง OpenClaw เองก็มีคู่มือย้ายย้อนทางในเอกสารของเขาเช่นกัน — ฐานผู้ใช้กลุ่มนี้ถูกช่วงชิงกันจริง ๆ ทั้งสองทิศ)
ฝั่ง Claude Code ตรงกันข้าม: ยังไม่มีเส้นทาง import ทางการ มี issue #35587 เปิดค้างอยู่ (ยื่นเมื่อ 30 พฤษภาคม 2026 ติด priority P3 และยังไม่มีการตอบจาก maintainer ณ วันที่ผมเขียน) ขอ migration skill ทำนองเดียวกัน ตัว issue ตั้งข้อสังเกตว่า SKILL.md "mostly portable" แต่ hooks, commands และจุดต่อระดับ plugin ของสองฝั่งต่างกัน
หลักใหญ่ที่ควรถือไว้: มาตรฐาน agentskills.io ทำให้แกนกลางของ SKILL.md — name, description, body และไฟล์ประกอบ — ย้ายข้าม host ได้ แต่ namespace ส่วนขยายของแต่ละเจ้าไม่ตามไปด้วย: frontmatter ควบคุมการรันของ Claude Code, metadata.openclaw ของ OpenClaw และ metadata.hermes ของ Hermes ต่างเป็นของใครของมัน (host ปลายทางจะ ignore ส่วนที่ไม่รู้จัก ไม่ error) สรุปเป็นกติกาปฏิบัติ: ย้ายได้ แต่ต้องทดสอบและเติม metadata ฝั่งปลายทางใหม่เสมอ — อย่าเชื่อคำว่า "ใช้ได้เลย" จนกว่าจะเห็นกับตา
hermes claw migrate --dry-run บนเครื่องทดสอบคือวิธีประเมิน Hermes ที่ถูกที่สุด — เห็นทันทีว่าทรัพย์สินทางความรู้ที่มีอยู่เดินทางข้ามมาได้แค่ไหน โดยไม่ต้องแตะระบบจริงเลย
บทต่อไปของซีรีส์ — #7 Production — จะพาทุกชิ้นที่คุยกันมาขึ้นเครื่องจริง: hosting, upgrade, monitoring และบทเรียนด้านปฏิบัติการทั้งหมด
🎯 สิ่งสำคัญที่ต้องจำ
- SKILL.md = โฟลเดอร์ + YAML frontmatter ตามมาตรฐานเปิด agentskills.io — บังคับแค่ name กับ description ส่วนของ Hermes อยู่ใต้ metadata.hermes
- Progressive disclosure = โหลดสามชั้น: metadata ราว 3,000 tokens → SKILL.md เต็มรายตัว → ไฟล์อ้างอิงรายชิ้น
- skill_manage = tool ที่ agent ใช้ create/patch skill ของตัวเอง — procedural memory ที่เขียนตัวเองได้จริง
- Curator = คนเก็บกวาดหลังบ้าน: active → stale (30 วัน) → archived (90 วัน) ไม่ลบถาวร มี snapshot + ledger + rollback ครบ
- /learn = กลั่น directory, URL หรือบทสนทนาให้เป็น skill ตรงมาตรฐานในคำสั่งเดียว; ฝั่ง offline มี self-evolution ที่จบด้วย human PR review
- write_approval = สวิตช์ governance ตัวแรกที่องค์กรควรเปิด — เปลี่ยน "agent เขียนอิสระ" เป็น "มนุษย์ตรวจก่อน merge"
- Trust tiers + security scan = ทุก skill จาก hub ถูกสแกนบังคับ verdict อันตราย block เด็ดขาดไม่มี override
- Portability = แกน SKILL.md ย้ายข้าม host ได้; จาก OpenClaw มีทางการ (hermes claw migrate) จาก Claude Code ยังไม่มี — ทดสอบก่อนเชื่อเสมอ
Here is a question I have been circling since this series began: when an AI agent spends half an hour fighting through a deployment with a dozen hidden steps — two false starts, one error cascade, and finally a path that actually works — what should happen tomorrow, when the same job comes around again? Should it rediscover everything from zero, or should it write the proven procedure down as a skill and simply load it?
Readers of my OpenClaw for Organizations series already know the first half of the answer. In OpenClaw Skills I described skills as folders with a SKILL.md that tells the agent "this is how we do this kind of task" — a large win for consistency. But that model carries one quiet assumption: humans write the skills; the agent merely consumes them.
Hermes Agent from Nous Research — publicly launched on February 25, 2026, and sitting near 240,000 GitHub stars as I write — takes the step I find most interesting in its entire architecture: the agent writes its own skills through a tool called skill_manage, improves them while using them, and a background process called the Curator manages the lifecycle of what it wrote. The docs call this the agent's procedural memory, and the README compresses the philosophy into a single line: "The agent that grows with you." This sixth post in the series walks the whole system, from the anatomy of one skill to the governance question every organization must answer before letting the loop spin: who reviews the work of an agent that writes its own textbook?
1. Anatomy of a Skill: SKILL.md and the agentskills.io Standard
A Hermes skill is a folder whose heart is a SKILL.md file — Markdown with a YAML frontmatter block, following the open Agent Skills standard published at agentskills.io. The standard originated at Anthropic before being released openly, and the standard's site lists roughly forty adopting clients, including Claude Code, Claude, OpenClaw, Codex, Gemini CLI, and Hermes itself. The file format you are about to see is no longer any one vendor's private convention.
The minimum contract is deliberately light: only name and description are required. Everything Hermes-specific is namespaced under metadata.hermes — tags, category, related skills, toolset bindings, all the way up to a blueprint block that turns a skill into a cron-scheduled job:
---
name: server-health-report
description: Summarize daily server health from logs and metrics.
Use when the user asks for a daily health report.
version: 1.0.0
platforms: [linux, macos] # hide the skill per-OS
metadata:
hermes:
tags: [ops, monitoring]
category: operations
requires_toolsets: [shell] # appear only when the toolset exists
blueprint: # turn the skill into a cron job
schedule: "0 7 * * 1-5"
prompt: Run the daily health report and post it to the ops channel
---
# Server Health Report
## When to Use
## Quick Reference
## Procedure
## Pitfalls
## Verification
Note the body skeleton: When to Use → Quick Reference → Procedure → Pitfalls → Verification is the house order the Hermes developer guide prescribes — decision criteria first, the short path next, the detailed procedure in the middle, and a closing check that the work actually succeeded. Anyone who has written a runbook for human operators will feel at home immediately, because that is exactly what this is; only the target reader is an LLM.
The frontmatter does finer-grained conditional activation than it first appears. fallback_for_toolsets surfaces a skill only when a toolset is missing — the documented example is a duckduckgo-search skill that appears only on machines without the web toolset, a plan B that announces itself automatically. required_environment_variables and required_credential_files declare dependencies that can be checked before a run. On size limits, Hermes Atlas — a community project, not official documentation — puts the ceiling around one hundred thousand characters per skill; treat that as a third-party approximation.
2. Where Skills Live and How They Load: Progressive Disclosure
The home directory for skills is ~/.hermes/skills/, which the docs call "the primary directory and source of truth." It is organized by category, and each skill folder can carry a full supporting cast:
~/.hermes/skills/
└── operations/
└── server-health-report/
├── SKILL.md # the core — loaded only on demand
├── references/ # deep docs, loaded file by file
├── scripts/ # helper logic kept out of the manual
├── templates/
├── examples/
└── assets/
Beyond the home directory there are project-local skills (.hermes/skills/ or .agents/skills/ inside a repo — trust-gated before loading) plus any external directories you declare in config, with precedence running project → local → external:
# ~/.hermes/config.yaml
skills:
external_dirs:
- /srv/shared-skills # the team's shared skill library
The question every engineer asks next: with a library of hundreds of skills, why doesn't the context window explode? Hermes answers with three-level progressive disclosure:
- Level 1 —
skills_list(): the agent sees only metadata (name plus description) for every skill, around 3,000 tokens total regardless of library size - Level 2 —
skill_view(name): the full SKILL.md loads for just the skill relevant to the task at hand - Level 3 —
skill_view(name, path): individual files under references/ load one at a time, exactly when a step needs the detail
On the human side, every skill is directly invocable as a slash command (/server-health-report), several skills can be stacked in one instruction, and skills group into bundles stored at ~/.hermes/skill-bundles/<slug>.yaml via hermes bundles create.
3. The Learning Loop: skill_manage, Triggers, and Telemetry
Now the heart of the post — the thing that separates Hermes's skills from every other system I have written about. The agent holds a tool called skill_manage: six operations for writing and revising its own skill library:
| Action | What it does | Notes |
|---|---|---|
create | Create a whole new skill folder | The main trigger fires after a complex task succeeds |
patch | Targeted, surgical fixes | The documented preference for in-use self-improvement |
edit | Major rewrites | When the original structure no longer holds |
delete | Remove a skill | — |
write_file | Add or modify files under references/ scripts/ | — |
remove_file | Remove supporting files | — |
The docs name three triggers: (1) completing a complex task — the written threshold is a task involving five or more tool calls (I have found no documentation saying that threshold is configurable); (2) hitting errors or dead ends and eventually finding the path that works — the surviving path being the valuable artifact; and (3) being corrected by the user. After a large multi-step task, Hermes will often offer to save the approach as a skill — putting a human decision point exactly where it belongs.
Every use is logged as telemetry in ~/.hermes/skills/.usage.json — the field names below follow the docs; the values are illustrative:
{
"operations/server-health-report": {
"use_count": 14, // times loaded into the prompt
"view_count": 3, // times the agent called skill_view
"patch_count": 2, // times modified via skill_manage
"last_used_at": "2026-08-30T07:02:11Z",
"created_at": "2026-06-14T09:41:00Z",
"created_by": "agent" // provenance marker — the Curator's key
}
}
The created_by: agent marker is not set by skill_manage directly but by a background self-improvement review fork — a separate process that reviews work after the fact. That marker is the system's most important boundary: the Curator in the next section manages only skills carrying it. Skills you wrote by hand are never touched by the automation.
4. The Curator: A Lifecycle for Skills the Agent Wrote
Let an agent accumulate skills with nobody sweeping up and the endgame is a pile of files nobody dares delete — the same disease as the append-forever daily logs I criticized on the memory side of my OpenClaw series. Hermes's answer is the Curator: background maintenance that runs when the machine is quiet (defaults: check every 168 hours, after at least 2 hours of idle) and touches only skills marked created_by: agent.
| State | Condition (defaults) | Outcome |
|---|---|---|
| active | Still in use | Loads normally |
| stale | Unused for 30 days | Flagged for review |
| archived | Unused for 90 days | Moved to ~/.hermes/skills/.archive/ — recoverable, never auto-deleted |
Pinned skills and skills referenced by a blueprint/cron schedule are always skipped. The step beyond housekeeping — having an LLM consolidate near-duplicate skills — is opt-in and off by default, running on a separate model slot named auxiliary.curator:
# ~/.hermes/config.yaml
curator:
interval_hours: 168 # weekly check
min_idle_hours: 2 # only when the machine is truly quiet
stale_after_days: 30
archive_after_days: 90
consolidate: false # LLM merging — leave off until you trust it
The Curator's safety net is more complete than I expected. Before every run it snapshots the whole directory to ~/.hermes/skills/.curator_backups/<utc-iso>/skills.tar.gz (keeping the latest five), every mutation is recorded in an append-only ledger (.curator_ledger.jsonl), and a full set of manual controls exists:
hermes curator status # last run's state
hermes curator run --dry-run # rehearse — see what it would touch
hermes curator pin my-skill # hands off this one, always
hermes curator restore my-skill # bring back from the archive
hermes curator rollback # revert to a prior snapshot
hermes curator ledger # read the full mutation history
💡 My reading: the "never delete + ledger + dry-run + rollback" design says Nous understands its users' entirely legitimate fear — automation that touches an organization's knowledge store must always be auditable and reversible. That is the same bar we hold backup systems to, and I would like every agent framework to meet it.
5. /learn and Offline Evolution: Distilling Knowledge into Skills
Everything so far grows from the agent's own experience — but most organizational knowledge does not live in an agent's experience. It lives in documents, repositories, and conversations. Hermes fills that gap with /learn (covered by MarkTechPost on June 24, 2026): the live agent distills a knowledge source into a standards-compliant SKILL.md on the spot. Four source types are supported — a local directory, a URL, the conversation history, and pasted notes:
/learn ./docs/deploy-runbook # distill a local directory
/learn https://example.com/guide # distill a web page
/learn # distill the current conversation
# or paste long notes, then issue /learn
Under the hood, /learn uses the agent's ordinary tools (read_file, search_files, web_extract), and when a source is too large for one SKILL.md it produces a knowledge-base skill: a lean SKILL.md acting as an index, plus reference files catalogued under references/ for progressive disclosure to load piece by piece as they are actually needed.
A second mechanism operates on an entirely different clock. The separate official repo hermes-agent-self-evolution does offline evolutionary optimization with DSPy + GEPA — reading execution traces to understand why tasks fail, generating eval datasets, then evolving candidate skill variants through mandatory gates: full test suites, a 15KB size cap, semantic preservation, and human review as a pull request, always. A run costs roughly $2–10 and needs no GPU (Phase 1, the current one, optimizes skill files only).
The two mechanisms differ philosophically, and the difference matters to organizations: /learn is the live agent writing immediately inside a conversation; self-evolution is a slow pipeline that ends with a human clicking merge. For any environment that must survive an audit, I consider the latter shape far easier for governance to accept.
6. Governance: write_approval, Security Scanning, and Trust Tiers
Hermes's default is that the agent writes skills freely, with no approval step — and this is where the community complains loudest. Users on Reddit and X report the agent effectively "approving its own errors," committing a wrong approach as a permanent skill, or patching over skills a human had carefully hand-tuned. (These are user reports, not official statistics — but they are consistent with the fact that Nous ships a complete set of countermeasures.)
skills.write_approval: true — it converts every agent write from "committed immediately" into "staged for human review" under ~/.hermes/pending/skills/. If you remember one thing from this post, make it this one.
# ~/.hermes/config.yaml
skills:
write_approval: true # every agent write goes through a person
With approval on, the agent's writes queue up like small pull requests you work through with four commands:
/skills pending # the review queue
/skills diff a1b2 # open one diff — exactly like reviewing a PR
/skills approve a1b2 # accept into the library
/skills reject a1b2 # send it back
For an organization adopting this for real, I recommend a staircase rollout — do not switch everything on at once:
- Observe: enable write_approval from day one, then let the agent propose skills into the queue without approving anything — you will see clearly what it "wants to write down," and how good its writing actually is
- Review as routine: make working through
/skills pendingthe same team discipline as your ordinary pull-request review rounds - Turn on the Curator: let the stale → archive cycle run, keeping consolidate off at its default
- Only then consider consolidation: switch it on once you have enough ledger history to audit — and trust — the system's behavior
On the inbound side, every install through the Skills Hub passes a mandatory security scan — checking for prompt injection, data exfiltration, and destructive commands. A dangerous verdict is hard-blocked with no --force override. Project-local skills arriving with a repo are likewise scanned and quarantined at load time. Trust is tiered four ways — builtin / official / trusted / community — and NVIDIA's SkillEvaluator v0.1.0 can be layered on as an optional extra check.
I read this whole package as lessons extracted from OpenClaw's marketplace era — readers of that series will remember the malicious-skill headlines from that ecosystem. Hermes designed its inbound path fail-closed from the start (the full threat model gets its own treatment in #4 Security).
One last governance point that is easy to overlook: what happens to bundled skills at upgrade time? Hermes tracks origin hashes in ~/.hermes/skills/.bundled_manifest — if you have edited a bundled skill, your hand wins: updates skip user-edited files rather than silently overwriting them, and dedicated commands manage divergence or opting out entirely:
hermes skills reset my-skill --restore # return to the upstream version
hermes skills opt-out --remove # stop using bundled skills at all
7. Hand-Authoring and Sharing: Templates, Taps, and the Skills Hub
The autonomous loop may be the headline, but most real organizational work still starts with skills a person writes — and Hermes makes that path a disciplined craft. Per the developer guide:
- Structure the body in the house order — When to Use → Quick Reference → Procedure → Pitfalls → Verification — with the most common workflow first
- Reach for the lightest tool available: stdlib Python, curl, or tools Hermes already has — long helper logic goes into scripts/
- Use the template tokens the system substitutes for you:
${HERMES_SKILL_DIR}resolves to the skill's own folder,${HERMES_SESSION_ID}to the current session - Test in isolation before shipping it to real work:
hermes chat --toolsets skills -q "Use the server-health-report skill on this machine"
To make "good writing" concrete, here are the Quick Reference and Pitfalls sections I want to see in every skill — short, direct, and runnable as-is:
## Quick Reference
# full health sweep in one pass
./scripts/health.sh --all
# check a single service
./scripts/health.sh --service nginx
## Pitfalls
# - rotated logs move under /var/log/archive — sweep those too
# - never run --all during the backup window; the I/O numbers will lie
Sharing within a team runs two main ways — publishing straight to a repo, or a Homebrew-style "tap" that a teammate points at once and can install from ever after:
# author's side: publish the skill to GitHub
hermes skills publish skills/my-skill --to github --repo myorg/hermes-skills
# teammate's side: add the tap, install anything in that repo
hermes skills tap add myorg/hermes-skills
Inbound, the Skills Hub gathers several install source types under one command set (hermes skills browse / search / inspect / install / check / update):
| Source | What it is |
|---|---|
| official | The Nous-maintained optional catalog shipped alongside the installer |
| skills-sh | Vercel's skills.sh directory |
| well-known | Sites publishing skills via .well-known/skills/index.json |
| URL / GitHub repo | Direct installs from any link or repository (always scanned) |
| community hubs | clawhub, lobehub, browse-sh |
My recommended workflow for anything external: inspect before install, always — read the details and the scan verdict before letting it onto the machine:
hermes skills browse # explore the catalog
hermes skills search <keyword> # find candidates
hermes skills inspect <name> # read details + scan verdict first
hermes skills install <name>
hermes skills check # any updates pending?
hermes skills update
On ecosystem scale: Hermes ships with well over a hundred built-in and optional catalog skills combined (the precise numbers shift with every release — I am deliberately not printing fixed counts), and community directories track many more, including meta-tooling built around the loop itself: hermes-skill-factory (a meta-skill that generates skills from workflows), SkillClaw (which evolves skill libraries from session data — around 2.5 thousand stars, per the community directory), and oh-my-hermes. All of it is community work, subject to the same scanning and the same judgment as any external skill.
💡 An observation from a teacher's chair: a well-written SKILL.md is excellent onboarding documentation for people too — the When to Use / Pitfalls / Verification skeleton forces a team's tacit knowledge onto the page. Even if no agent ever reads it, the organization walks away with a good runbook.
8. Portability: From OpenClaw In — and the Claude Code Gap
The question I have been asked most since this series opened: "can the skills we invested in on OpenClaw come along?" The good news is that this path is official — an optional skill named openclaw-migration provides a ready-made command:
hermes claw migrate --dry-run # preview what would move
hermes claw migrate --execute --preset user-data
# skills are copied into ~/.hermes/skills/openclaw-imports/
# alongside conversion of SOUL.md, memory files, allowlists,
# and messaging settings
Note the word copied — the OpenClaw originals are untouched, which makes this ideal for a parallel trial while you are still deciding where to settle. (OpenClaw, for its part, publishes a reverse-migration guide in its own docs — this user base is genuinely being contested in both directions.)
Claude Code is the opposite story: there is no official import path. Open issue #35587 (filed May 30, 2026, priority P3, with no maintainer response as of this writing) requests a similar migration skill. The issue itself observes that SKILL.md is "mostly portable" but that hooks, commands, and plugin-level integration points differ between the two hosts.
The principle worth keeping: the agentskills.io standard makes the SKILL.md core — name, description, body, bundled files — portable across hosts, but each vendor's private extension namespace does not travel: Claude Code's execution-control frontmatter, OpenClaw's metadata.openclaw, and Hermes's metadata.hermes each stay home (a receiving host ignores metadata it does not recognize rather than erroring). The practical rule: skills move, but always test and re-add the destination's metadata — never believe "it just works" until you have watched it work.
hermes claw migrate --dry-run on a test machine is the cheapest possible evaluation of Hermes — you see immediately how much of your existing knowledge asset crosses over, without touching the production system at all.
The next post in the series — #7 Production — takes everything we have discussed onto real machines: hosting, upgrades, monitoring, and the operational lessons in between.
🎯 Key Takeaways
- SKILL.md = a folder plus YAML frontmatter under the open agentskills.io standard — only name and description are required; Hermes extras live under metadata.hermes
- Progressive disclosure = three loading levels: ~3,000 tokens of metadata → one full SKILL.md → individual reference files
- skill_manage = the tool the agent uses to create and patch its own skills — procedural memory that genuinely writes itself
- Curator = background housekeeping: active → stale (30 days) → archived (90 days), never auto-deleted, with snapshots, an append-only ledger, and rollback
- /learn = distill a directory, URL, or conversation into a standards-compliant skill in one command; offline, self-evolution ends in a human-reviewed PR
- write_approval = the first governance switch to flip — it turns "agent writes freely" into "human reviews before merge"
- Trust tiers + scanning = every hub install is scanned; dangerous verdicts are blocked with no override
- Portability = the SKILL.md core travels across hosts; OpenClaw has an official path in (hermes claw migrate), Claude Code does not yet — test before trusting