章節:核心功能 · 網址:https://hermesbible.com/docs/user-guide/features/skills
Skills 是 Agent 可以按需載入的知識文件。它們採用**漸進式揭露(Progressive Disclosure)**模式來最小化 Token 使用量,並遵循 agentskills.io 開放標準。
所有 Skills 都存放在 ~/.hermes/skills/ — 這是主要目錄也是唯一的真實來源(source of truth)。全新安裝時,內建的 Skills 會從倉庫複製到此處。透過 Hub 安裝和 Agent 自行建立的 Skills 也會放在這裡。Agent 可以修改或刪除任何 Skill。
你也可以讓 Hermes 掃描外部 Skill 目錄 — 與本地目錄一起掃描的額外資料夾。詳見下方的外部 Skill 目錄。
另請參閱:
從空白狀態開始
預設情況下,每個 Profile 都會預載內建的 Skill 目錄,每次執行 hermes update 時會新增任何新加入的內建 Skill。如果你想要一個沒有任何內建 Skill 的 Profile — 且在更新時也保持空白 — 你有兩種方式:
安裝時設定(適用於預設的 ~/.hermes Profile):
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --no-skills
建立 Profile 時設定(命名 Profile):
hermes profile create research --no-skills
在已安裝的 Profile 上設定(預設或命名 Profile),在運行時切換:
hermes skills opt-out # 停止未來的預載 — 磁碟上已有內容不會被刪除
hermes skills opt-out --remove # 同時刪除未修改的內建 Skill(會先確認)
hermes skills opt-in --sync # 還原:移除標記並重新預載
這三種方式都會在 Profile 目錄中寫入 .no-bundled-skills 標記。只要標記存在,安裝程式、hermes update 和任何 Skill 同步都會跳過該 Profile 的內建 Skill 預載。刪除標記(或執行 hermes skills opt-in)即可重新啟用。
注意 — 預設安全
hermes skills opt-out只會停止未來的預載 — 永遠不會刪除磁碟上已有的內容。可選的--remove標記僅在 Skill 未被修改(與 Hermes 安裝的版本完全相同)時才會刪除。你編輯過的 Skill、從 Hub 安裝的 Skill,以及你自己寫的 Skill 都會被保留。
使用 Skills
每個已安裝的 Skill 都會自動成為一個斜線命令(Slash Command):
# 在 CLI 或任何訊息平台上:
/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor
/plan design a rollout for migrating our auth provider
# 只輸入 Skill 名稱會載入它,讓 Agent 詢問你需要什麼:
/excalidraw
內建的 plan Skill 是一個很好的範例。執行 /plan [request] 會載入該 Skill 的指令,讓 Hermes 在需要時檢查上下文、撰寫 Markdown 格式的實作計畫(而非直接執行任務),並將結果儲存在相對於活動工作區/後端工作目錄的 .hermes/plans/ 下。
你也可以透過自然對話與 Skills 互動:
hermes chat --toolsets skills -q "What skills do you have?"
hermes chat --toolsets skills -q "Show me the axolotl skill"
漸進式揭露(Progressive Disclosure)
Skills 使用一種節省 Token 的載入模式:
Level 0: skills_list() → [{name, description, category}, ...] (~3k tokens)
Level 1: skill_view(name) → 完整內容 + 元資料 (視情況而定)
Level 2: skill_view(name, path) → 特定參考檔案 (視情況而定)
Agent 只在真正需要時才會載入完整的 Skill 內容。
SKILL.md 格式
---
name: my-skill
description: Brief description of what this skill does
version: 1.0.0
platforms: [macos, linux] # Optional — restrict to specific OS platforms
metadata:
hermes:
tags: [python, automation]
category: devops
fallback_for_toolsets: [web] # Optional — conditional activation (see below)
requires_toolsets: [terminal] # Optional — conditional activation (see below)
config: # Optional — config.yaml settings
- key: my.setting
description: "What this controls"
default: "value"
prompt: "Prompt for setup"
---
# Skill Title
## When to Use
Trigger conditions for this skill.
## Procedure
1. Step one
2. Step two
## Pitfalls
- Known failure modes and fixes
## Verification
How to confirm it worked.
限定平台的 Skills
Skills 可以透過 platforms 欄位限定特定作業系統:
| 值 | 適用對象 |
|---|---|
macos | macOS (Darwin) |
linux | Linux |
windows | Windows |
platforms: [macos] # macOS only (e.g., iMessage, Apple Reminders, FindMy)
platforms: [macos, linux] # macOS 和 Linux
設定後,該 Skill 會在不相容的平台上自動隱藏,不會出現在系統提示、skills_list() 或斜線命令中。如果省略此欄位,則所有平台都可以載入。
Skill 輸出與媒體遞送
當 Skill 回應(或任何 Agent 回應)包含媒體檔案的絕對路徑 — 例如 /home/user/screenshots/diagram.png — 閘道(Gateway)會自動偵測它,將其從可見文字中移除,並以原生方式將檔案遞送至使用者的聊天(Telegram 圖片、Discord 附件等),而不是在訊息中保留原始路徑。
對於音訊,[[audio_as_voice]] 指示器會將音訊檔案提升為支援平台(Telegram、WhatsApp)上的原生語音訊息氣泡。
強制文件式遞送:[[as_document]]
有時你想要的相反效果是:希望檔案作為可下載附件遞送,而不是重新壓縮的圖片氣泡。最典型的範例是高解析度截圖或圖表 — Telegram 的 sendPhoto 會將其重新壓縮到約 200 KB、1280 px,破壞可讀性。透過 sendDocument 發送 1-2 MB 的 PNG 則能保留原始位元組。
如果回應(或其中的任何文字 — 通常是最后一行)包含字面指示器 [[as_document]],則從該回應中提取的每個媒體路徑都會以文件/檔案附件而非圖片氣泡的形式遞送:
Here is your rendered chart:
/home/user/.hermes/cache/chart-q4-2025.png
[[as_document]]
該指示器會在遞送前被移除,因此使用者永遠不會看到它。粒度是有意設定為全有或全無的:在一個回應中發出一次 [[as_document]],該回應中的所有圖片路徑都會作為文件遞送。這與 [[audio_as_voice]] 的作用範圍一致。
適用於以下情況:
- 你產生的截圖或圖表需要作為檔案保留(用於在其他工具中編輯、歸檔、完整分享)。
- 預設的有損預覽會模糊細節(小字體、像素精確的圖表、色彩敏感的渲染)。
沒有獨立文件路徑的平台(例如 SMS)會回退到它們可用的附件機制。
條件式啟用(Fallback Skills)
Skills 可以根據當前會話中可用的工具來自動顯示或隱藏。這最適合用於 Fallback Skills — 僅在進階工具不可用時才顯示的免費或本地方案。
metadata:
hermes:
fallback_for_toolsets: [web] # 僅在這些工具組不可用時顯示
requires_toolsets: [terminal] # 僅在這些工具組可用時顯示
fallback_for_tools: [web_search] # 僅在這些特定工具不可用時顯示
requires_tools: [terminal] # 僅在這些特定工具可用時顯示
| 欄位 | 行為 |
|---|---|
fallback_for_toolsets | 當列出的工具組可用時,Skill 被隱藏;當它們不可用時顯示。 |
fallback_for_tools | 相同,但檢查的是個別工具而非工具組。 |
requires_toolsets | 當列出的工具組不可用時,Skill 被隱藏;當它們可用時顯示。 |
requires_tools | 相同,但檢查的是個別工具。 |
範例: 內建的 duckduckgo-search Skill 使用 fallback_for_toolsets: [web]。當你設定了 FIRECRAWL_API_KEY,web 工具組可用,Agent 使用 web_search — DuckDuckGo Skill 會保持隱藏。如果缺少 API Key,web 工具組不可用,DuckDuckGo Skill 會自動作為 Fallback 出現。
沒有任何條件欄位的 Skills 行為與以往相同 — 始終顯示。
載入時的安全設定
Skills 可以在不失 Discovery 能力的前提下宣告所需的環境變數:
required_environment_variables:
- name: TENOR_API_KEY
prompt: Tenor API key
help: Get a key from https://developers.google.com/tenor
required_for: full functionality
遇到缺少的值時,Hermes 只會在本地 CLI 中實際載入該 Skill 時安全地詢問。你可以跳過設定並繼續使用該 Skill。訊息平台永遠不會在聊天中詢問密鑰 — 它們會指示你在本地使用 hermes setup 或 ~/.hermes/.env。
設定後,宣告的環境變數會自動傳遞至 execute_code 和 terminal 沙箱 — Skill 的腳本可以直接使用 $TENOR_API_KEY。對於非 Skill 的環境變數,使用 terminal.env_passthrough 設定選項。詳見環境變數傳遞。
Skill 設定選項
Skills 也可以宣告儲存在 config.yaml 中的非密鑰設定(路徑、偏好設定):
metadata:
hermes:
config:
- key: myplugin.path
description: Path to the plugin data directory
default: "~/myplugin-data"
prompt: Plugin data directory path
設定值儲存在你的 config.yaml 的 skills.config 下。hermes config migrate 會提示未設定的選項,hermes config show 則會顯示它們。當 Skill 載入時,其解析後的設定值會注入到上下文中,讓 Agent 自動知道已設定的值。
Skill 目錄結構
~/.hermes/skills/ # 唯一真實來源
├── mlops/ # 分類目錄
│ ├── axolotl/
│ │ ├── SKILL.md # 主要指令(必要)
│ │ ├── references/ # 額外文件
│ │ ├── templates/ # 輸出格式
│ │ ├── scripts/ # 可從 Skill 呼叫的輔助腳本
│ │ └── assets/ # 補充檔案
│ └── vllm/
│ └── SKILL.md
├── devops/
│ └── deploy-k8s/ # Agent 建立的 Skill
│ ├── SKILL.md
│ └── references/
├── .hub/ # Skills Hub 狀態
│ ├── lock.json
│ ├── quarantine/
│ └── audit.log
└── .bundled_manifest # 追蹤已預載的內建 Skill
外部 Skill 目錄
如果你在 Hermes 之外維護 Skills — 例如多個 AI 工具共用的 ~/.agents/skills/ 目錄 — 你可以告訴 Hermes 也掃描那些目錄。
在 ~/.hermes/config.yaml 的 skills 區塊下新增 external_dirs:
skills:
external_dirs:
- ~/.agents/skills
- /home/shared/team-skills
- ${SKILLS_REPO}/skills
路徑支援 ~ 展開和 ${VAR} 環境變數替換。
運作方式
- 本地建立、原地更新:新的 Agent 建立的 Skills 寫入
~/.hermes/skills/。現有的 Skills 在找到的位置修改,包括external_dirs下的 Skills,當 Agent 使用skill_manage操作如patch、edit、write_file、remove_file或delete時。 - 外部目錄不是寫入保護邊界:如果外部 Skill 目錄對 Hermes 進程可寫,Agent 管理的 Skill 更新可以更改該目錄中的檔案。如果共用的外部 Skills 需要保持唯讀,請使用檔案系統權限或單獨的 Profile/工具組設定。
- 本地優先:如果相同的 Skill 名稱同時存在於本地目錄和外部目錄,本地版本優先。
- 完全整合:外部 Skills 會出現在系統提示索引、
skills_list、skill_view和/skill-name斷線命令中 — 與本地 Skills 沒有差異。 - 不存在的路徑會被靜默跳過:如果設定的目錄不存在,Hermes 會在不產生錯誤的情況下忽略它。這對可能不在每台機器上都存在的可選共用目錄很有用。
範例
~/.hermes/skills/ # 本地(主要,可讀寫)
├── devops/deploy-k8s/
│ └── SKILL.md
└── mlops/axolotl/
└── SKILL.md
~/.agents/skills/ # 外部(共用,若可寫則可變)
├── my-custom-workflow/
│ └── SKILL.md
└── team-conventions/
└── SKILL.md
這四個 Skills 都會出現在你的 Skill 索引中。如果你在本地建立一個名為 my-custom-workflow 的新 Skill,它會遮蔽外部版本。
Skill Bundles
Skill Bundles 是小型的 YAML 檔案,將多個 Skills 組合在一個斜線命令下。當你執行 /<bundle-name> 時,Bundle 中列出的所有 Skills 會同時載入 — 當某個特定任務總是受益於相同的 Skill 組合時非常有用。
快速範例
# 為後端功能開發建立一個 Bundle
hermes bundles create backend-dev \
--skill github-code-review \
--skill test-driven-development \
--skill github-pr-workflow \
-d "Backend feature work — review, test, PR workflow"
然後在 CLI 或任何閘道平台上:
/backend-dev refactor the auth middleware
Agent 會收到三個已載入到一個使用者訊息中的 Skills,斜線命令後的任何文字會作為使用者指令附加。
YAML 結構
Bundles 存放在 ~/.hermes/skill-bundles/<slug>.yaml,格式如下:
name: backend-dev
description: Backend feature work — review, test, PR workflow.
skills:
- github-code-review
- test-driven-development
- github-pr-workflow
instruction: |
Always start by writing failing tests, then implement.
Open the PR through the standard workflow with co-author tags.
欄位:
name(可選 — 預設為檔名主體)— Bundle 的顯示名稱。會被標準化為帶連字號的 slug 用於斜線命令(Backend Dev→/backend-dev)。description(可選)— 在/bundles和hermes bundles list中顯示的簡短文字。skills(必要,非空列表)— Skill 名稱或相對於你的 Skills 目錄的路徑。使用與/<skill-name>相同的識別碼。instruction(可選)— 附加在載入的 Skill 內容前面的額外指引。適用於規範「我們如何一起使用這些 Skills」。
管理 Bundles
# 列出所有已安裝的 Bundles
hermes bundles list
# 檢視一個 Bundle
hermes bundles show backend-dev
# 互動式建立 Bundle(省略 --skill 標記會逐行輸入)
hermes bundles create research
# 覆寫已有的 Bundle
hermes bundles create backend-dev --skill ... --force
# 刪除一個 Bundle
hermes bundles delete backend-dev
# 重新掃描 ~/.hermes/skill-bundles/ 並回報變更
hermes bundles reload
在聊天會話中,/bundles 會列出每個已安裝的 Bundle 及其 Skills。
行為
- 當 slug 衝突時,Bundles 優先於個別 Skills。如果你將 Bundle 命名為
research同時也有名為research的 Skill,/research會觸發 Bundle。這是刻意的 — 你透過命名來選擇使用 Bundle。 - 缺少的 Skills 會被跳過,不會造成致命錯誤。如果 Bundle 列出了
skill-foo而你尚未安裝它,Bundle 仍會載入已解析的 Skills,Agent 會收到一份說明哪些被跳過的筆記。 - Bundles 在所有平台上都可用 — 互動式 CLI、TUI、儀表板聊天和所有閘道平台(Telegram、Discord、Slack 等)— 因為分派邏輯與個別 Skill 命令集中在同一處。
- Bundles 不會使 Prompt 快取失效。它們在呼叫時產生全新的使用者訊息,與
/<skill-name>的方式相同 — 不會修改系統提示。
何時使用 Bundle 而非逐一手動安裝 Skills
在以下情況使用 Bundle:
- 你總是為常見任務搭配相同的 Skills(
/backend-dev、/release-prep、/incident-response)。 - 你想要一個比連續輸入多個
/skill命令更簡短的心智模型。 - 你想要透過將 Bundle YAML 檔案提交到共用 dotfiles 倉庫並建立符號連結到
~/.hermes/skill-bundles/來發布團隊級的「任務設定檔」。
Bundle 只是一個 YAML 別名 — 它不會為你安裝 Skills。Skills 本身必須已經存在(在 ~/.hermes/skills/ 或外部 Skill 目錄中)。否則 Bundle 呼叫只會跳過缺少的 Skills。
Agent 管理的 Skills(skill_manage 工具)
Agent 可以透過 skill_manage 工具建立、更新和刪除自己的 Skills。這是 Agent 的程序記憶 — 當它發現一個複雜的工作流程時,會將該方法儲存為 Skill 以便未來重用。
Agent 何時會建立 Skills
- 成功完成複雜任務(5 次以上工具呼叫)後
- 遇到錯誤或死路並找到可行路徑後
- 使用者修正了它的方法後
- 發現了非平凡的工作流程後
操作
| 操作 | 用途 | 主要參數 |
|---|---|---|
create | 從零建立新 Skill | name、content(完整 SKILL.md)、可選 category |
patch | 針對性修補(優先使用) | name、old_string、new_string |
edit | 大幅結構性重寫 | name、content(完整 SKILL.md 替換) |
delete | 完全移除 Skill | name |
write_file | 新增/更新輔助檔案 | name、file_path、file_content |
remove_file | 移除輔助檔案 | name、file_path |
提示
patch操作是更新的首選 — 比edit更節省 Token,因為工具呼叫中只會出現變更的文字。
控制 Agent Skill 寫入(skills.write_approval)
預設情況下 Agent 可以自由寫入 Skills — 包括從回合結束後運行的背景自我改進審查中寫入。如果你更傾向於先審批每次 Skill 寫入(小模型對學習內容判斷不準、安全環境、或只是想監督自我改進迴圈),可以啟用寫入審批閘門:
skills:
write_approval: false # false = 自由寫入(預設)| true = 需要審批
當 write_approval: true 時,每個 skill_manage 寫入(create / edit / patch / delete / write_file / remove_file)都會被暫存而非直接提交 — SKILL.md 太大無法在行內審查,因此無論寫入來自前台回合還是背景審查,都會進行暫存。暫存的寫入在 ~/.hermes/pending/skills/ 下重啟後仍然存在,並使用與危險命令相同的熟悉批准/拒絕流程來審查:
/skills pending # 列出暫存的 Skill 寫入 + 每行摘要
/skills diff <id> # 完整統一差異(最好在 CLI 或儀表板中查看)
/skills approve <id> # 套用(或 'all')
/skills reject <id> # 丟棄(或 'all')
/skills approval on # 開啟閘門(或 'off')並持久化
審查介面在互動式 CLI 和訊息平台上都可用(差異輸出在聊天氣泡中會被截斷 — 請在 CLI 或待處理的 JSON 檔案中查看完整差異)。記憶體寫入在 memory.write_approval 下有相同的閘門 — 詳見控制記憶體寫入。
另一個獨立的
skills.guard_agent_created設定是內容掃描器(危險模式啟發法),不是審批閘門 — 兩者相互獨立。詳見Agent 建立的 Skill 寫入防護。
Skills Hub
從線上登錄處、skills.sh、已知的 Skill 端點和官方可選 Skills 中瀏覽、搜尋、安裝和管理 Skills。
常用命令
hermes skills browse # 瀏覽所有 Hub Skills(官方優先)
hermes skills browse --source official # 僅瀏覽官方可選 Skills
hermes skills search kubernetes # 搜尋所有來源
hermes skills search react --source skills-sh # 搜尋 skills.sh 目錄
hermes skills search https://mintlify.com/docs --source well-known
hermes skills inspect openai/skills/k8s # 安裝前預覽
hermes skills install openai/skills/k8s # 透過安全掃描安裝
hermes skills install official/security/1password
hermes skills install skills-sh/vercel-labs/json-render/json-render-react --force
hermes skills install well-known:https://mintlify.com/docs/.well-known/skills/mintlify
hermes skills install https://sharethis.chat/SKILL.md # 直接 URL(單檔 SKILL.md)
hermes skills install https://example.com/SKILL.md --name my-skill # 當 frontmatter 沒有 name 時覆寫
hermes skills list --source hub # 列出 Hub 安裝的 Skills
hermes skills check # 檢查已安裝的 Hub Skills 是否有上游更新
hermes skills update # 有上游變更時重新安裝 Hub Skills
hermes skills audit # 重新掃描所有 Hub Skills 的安全性
hermes skills uninstall k8s # 移除 Hub Skill
hermes skills reset google-workspace # 將內建 Skill 從「使用者已修改」狀態還原(見下文)
hermes skills reset google-workspace --restore # 同時還原內建版本,刪除你的本地編輯
hermes skills publish skills/my-skill --to github --repo owner/repo
hermes skills snapshot export setup.json # 匯出 Skill 設定
hermes skills tap add myorg/skills-repo # 新增自訂 GitHub 來源
支援的 Hub 來源
| 來源 | 範例 | 說明 |
|---|---|---|
official | official/security/1password | 隨 Hermes 發佈的可選 Skills。 |
skills-sh | skills-sh/vercel-labs/agent-skills/vercel-react-best-practices | 可透過 hermes skills search <query> --source skills-sh 搜尋。當 skills.sh slug 與倉庫資料夾不同時,Hermes 會解析別名式的 Skills。 |
well-known | well-known:https://mintlify.com/docs/.well-known/skills/mintlify | 直接從網站的 /.well-known/skills/index.json 提供的 Skills。使用網站或文件 URL 搜尋。 |
url | https://sharethis.chat/SKILL.md | 單檔 SKILL.md 的直接 HTTP(S) URL。名稱解析:frontmatter → URL slug → 互動式提示 → --name 標記。 |
github | openai/skills/k8s | 直接的 GitHub 倉庫/路徑安裝和自訂 Tap。 |
clawhub、lobehub、browse-sh | 特定來源識別碼 | 社群或市集整合。 |
已整合的 Hubs 和登錄處
Hermes 目前已整合以下 Skills 生態系統和發現來源:
1. 官方可選 Skills(official)
這些 Skills 維護在 Hermes 倉庫本身,安裝時具有內建信任。
- 目錄:官方可選 Skill 目錄
- 倉庫中的來源:
optional-skills/ - 範例:
hermes skills browse --source official
hermes skills install official/security/1password
2. skills.sh(skills-sh)
這是 Vercel 的公開 Skills 目錄。Hermes 可以直接搜尋它、檢視 Skill 詳情頁面、解析別名式的 Slugs,並從底層來源倉庫安裝。
- 目錄:skills.sh
- CLI/工具倉庫:vercel-labs/skills
- 官方 Vercel Skills 倉庫:vercel-labs/agent-skills
- 範例:
hermes skills search react --source skills-sh
hermes skills inspect skills-sh/vercel-labs/json-render/json-render-react
hermes skills install skills-sh/vercel-labs/json-render/json-render-react --force
3. 已知的 Skill 端點(well-known)
這是基於 URL 的發現機制,適用於發佈 /.well-known/skills/index.json 的網站。它不是單一集中式 Hub — 而是一種網路發現慣例。
- 範例實際端點:Mintlify 文件 Skills 索引
- 參考伺服器實作:vercel-labs/skills-handler
- 範例:
hermes skills search https://mintlify.com/docs --source well-known
hermes skills inspect well-known:https://mintlify.com/docs/.well-known/skills/mintlify
hermes skills install well-known:https://mintlify.com/docs/.well-known/skills/mintlify
4. 直接 GitHub Skills(github)
Hermes 可以直接從 GitHub 倉庫和 GitHub 基礎的 Taps 安裝。這在你已知倉庫/路徑或想新增自己的自訂來源倉庫時很有用。
預設 Taps(無需設定即可瀏覽):
-
NVIDIA/skills — NVIDIA 驗證的 Skills(簽章
skill.oms.sig+ 治理skill-card.md) -
範例:
hermes skills install openai/skills/k8s
hermes skills tap add myorg/skills-repo
分類群組(skills.sh.json)。 GitHub Tap 可能在其倉庫根目錄發佈一個 skills.sh.json 檔案,遵循 skills.sh 規範。它的 groupings(每個包含 title 和 Skill 名稱列表)會在索引時間讀取,成為 Skills Hub 頁面上顯示的分類標籤 — 而非基於標籤的推測。這是通用的:任何發佈該檔案的 Tap 都能獲得真正的分類,無需 Hermes 端的更改。
{
"$schema": "https://skills.sh/schemas/skills.sh.schema.json",
"groupings": [
{ "title": "Inference AI", "skills": ["dynamo-recipe-runner", "dynamo-router-sla"] },
{ "title": "Decision Optimization", "skills": ["cuopt-developer", "cuopt-install"] }
]
}
5. ClawHub(clawhub)
作為社群來源整合的第三方 Skills 市集。
- 網站:clawhub.ai
- Hermes 來源 ID:
clawhub
6. Claude 市集式倉庫(claude-marketplace)
Hermes 支援發佈 Claude 相容的外掛/市集清單的市集倉庫。
已知的已整合來源包括:
Hermes 來源 ID:claude-marketplace
7. LobeHub(lobehub)
Hermes 可以搜尋 LobeHub 公開目錄中的 Agent 條目,並將其轉換為可安裝的 Hermes Skills。
- 網站:LobeHub
- 公開 Agent 索引:chat-agents.lobehub.com
- 後端倉庫:lobehub/lobe-chat-agents
- Hermes 來源 ID:
lobehub
8. browse.sh(browse-sh)
Hermes 整合了 browse.sh,這是 Browserbase 的 200 多個針對特定網站的瀏覽器自動化 SKILL.md 檔案目錄(Airbnb、Amazon、arXiv、12306.cn、Etsy、Xero 等)。每個 Skill 描述如何端到端地驅動一個網站,適合與 Hermes 的瀏覽器工具和你已安裝的任何瀏覽器自動化 Skills 一起使用。
- 網站:browse.sh
- 目錄 API:
https://browse.sh/api/skills - Hermes 來源 ID:
browse-sh - 信任等級:
community
hermes skills search airbnb --source browse-sh
hermes skills inspect browse-sh/airbnb.com/search-listings-ddgioa
hermes skills install browse-sh/airbnb.com/search-listings-ddgioa
識別碼格式為 browse-sh/<hostname>/<task-id>,與 browse.sh 目錄公開的 slug 相符。內容透過每個 Skill 的詳情端點解析(/api/skills/<slug> → skillMdUrl),而非透過目錄的 GitHub sourceUrl。
9. 直接 URL(url)
直接從任何 HTTP(S) URL 安裝單檔 SKILL.md — 適用於作者在其自身網站上託管 Skill 的情況(無 Hub 列表、無需輸入 GitHub 路徑)。Hermes 取得 URL、解析 YAML frontmatter、進行安全掃描,然後安裝。
- Hermes 來源 ID:
url - 識別碼:URL 本身(無需前綴)
- 範圍:僅限單檔
SKILL.md。包含references/或scripts/的多檔 Skills 需要清單,應透過上述其他來源之一發佈。
hermes skills install https://sharethis.chat/SKILL.md
hermes skills install https://example.com/my-skill/SKILL.md --category productivity
名稱解析順序:
- SKILL.md YAML frontmatter 中的
name:欄位(建議 — 每個格式正確的 Skill 都有)。 - 從 URL 路徑取得的父目錄名稱(例如
.../my-skill/SKILL.md→my-skill,或.../my-skill.md→my-skill),當它是有效的識別碼(^[a-z][a-z0-9_-]*$)時。 - 在有 TTY 的終端機上互動式提示。
- 在非互動式介面上(TUI 中的
/skills install斷線命令、閘道平台、腳本),會產生一個指向--name覆寫選項的明確錯誤。
# Frontmatter 沒有 name 且 URL slug 沒有幫助 — 手動指定:
hermes skills install https://example.com/SKILL.md --name sharethis-chat
# 或在聊天會話中:
/skills install https://example.com/SKILL.md --name sharethis-chat
信任等級始終為 community — 與所有其他來源執行相同的安全掃描。URL 會被儲存為安裝識別碼,因此 hermes skills update 在你想重新整理時會自動從相同 URL 重新取得。
安全掃描與 --force
所有 Hub 安裝的 Skills 都會經過安全掃描器,檢查資料外洩、提示注入、破壞性命令、供應鏈訊號和其他威脅。
hermes skills inspect ... 現在也會在可用時顯示上游元資料:
- 倉庫 URL
- skills.sh 詳情頁面 URL
- 安裝命令
- 每週安裝次數
- 上游安全審計狀態
- 已知的索引/端點 URL
當你已審查第三方 Skill 並想覆寫非危險的策略封鎖時,使用 --force:
hermes skills install skills-sh/anthropics/skills/pdf --force
重要行為:
--force可以覆寫 caution/warn 類型發現的策略封鎖。--force不會覆寫dangerous的掃描結論。- 官方可選 Skills(
official/...)被視為內建信任,不會顯示第三方警告面板。
信任等級
| 等級 | 來源 | 策略 |
|---|---|---|
builtin | 隨 Hermes 發佈 | 始終信任 |
official | 倉庫中的 optional-skills/ | 內建信任,無第三方警告 |
trusted | 受信任的登錄處/倉庫,如 openai/skills、anthropics/skills、huggingface/skills、NVIDIA/skills | 比社群來源更寬鬆的策略 |
community | 其他所有(skills.sh、已知端點、自訂 GitHub 倉庫、大多數市集) | 非危險發現可透過 --force 覆寫;dangerous 結論保持封鎖 |
更新生命週期
Hub 現在追蹤足夠的來源資訊,可以重新檢查已安裝 Skills 的上游副本:
hermes skills check # 回報哪些已安裝的 Hub Skills 在上游有變更
hermes skills update # 僅重新安裝有可用更新的 Skills
hermes skills update react # 更新特定的一個已安裝 Hub Skill
這使用儲存的來源識別碼加上目前上游套件內容的雜湊值來偵測偏移。
提示 — GitHub 速率限制
Skills Hub 操作使用 GitHub API,未認證使用者的速率限制為每小時 60 次請求。如果在安裝或搜尋期間看到速率限制錯誤,請在你的
.env檔案中設定GITHUB_TOKEN將限制提高到每小時 5,000 次請求。發生此情況時,錯誤訊息會包含可操作的提示。
發佈自訂 Skill Tap
如果你想分享一組策劃好的 Skills — 給你的團隊、組織或公開 — 你可以將它們發佈為一個 Tap:一個其他 Hermes 使用者透過 hermes skills tap add <owner/repo> 新增的 GitHub 倉庫。無需伺服器、無需登錄處註冊、無需發佈流程。只需一個 SKILL.md 檔案目錄。
倉庫結構
Tap 是任何 GitHub 倉庫(公開或私有 — 私有需要 GITHUB_TOKEN),結構如下:
owner/repo
├── skills/ # 預設路徑;可按 Tap 設定
│ ├── my-workflow/
│ │ ├── SKILL.md # 必要
│ │ ├── references/ # 可選的輔助檔案
│ │ ├── templates/
│ │ └── scripts/
│ ├── another-skill/
│ │ └── SKILL.md
│ └── third-skill/
│ └── SKILL.md
└── README.md # 可選但有幫助
規則:
- 每個 Skill 位於 Tap 根路徑(預設
skills/)下的自己目錄中。 - 目錄名稱成為 Skill 的安裝 slug。
- 每個 Skill 目錄必須包含一個帶有標準 SKILL.md frontmatter 的
SKILL.md(name、description,加上可選的metadata.hermes.tags、version、author、platforms、metadata.hermes.config)。 references/、templates/、scripts/、assets/等子目錄會在安裝時隨SKILL.md一起下載。- 目錄名稱以
.或_開頭的 Skills 會被忽略。
Hermes 透過列出 Tap 路徑下的每個子目錄並探測其中的 SKILL.md 來發現 Skills。
最小 Tap 範例
my-org/hermes-skills
└── skills/
└── deploy-runbook/
└── SKILL.md
skills/deploy-runbook/SKILL.md:
---
name: deploy-runbook
description: Our deployment runbook — services, rollback, Slack channels
version: 1.0.0
author: My Org Platform Team
metadata:
hermes:
tags: [deployment, runbook, internal]
---
# Deploy Runbook
Step 1: ...
推送到 GitHub 後,任何 Hermes 使用者都可以訂閱並安裝:
hermes skills tap add my-org/hermes-skills
hermes skills search deploy
hermes skills install my-org/hermes-skills/deploy-runbook
非預設路徑
如果你的 Skills 不在 skills/ 下(當你為現有專案新增 skills/ 子目錄時很常見),請編輯 ~/.hermes/.hub/taps.json 中的 Tap 條目:
{
"taps": [
{"repo": "my-org/platform-docs", "path": "internal/skills/"}
]
}
hermes skills tap add CLI 預設新 Tap 為 path: "skills/";如果需要不同的路徑,請直接編輯檔案。hermes skills tap list 會顯示每個 Tap 的實際路徑。
直接安裝個別 Skills(無需新增 Tap)
使用者也可以直接從任何公開的 GitHub 倉庫安裝單一 Skill,而無需將整個倉庫新增為 Tap:
hermes skills install owner/repo/skills/my-workflow
適用於你想分享單一 Skill 而不要求使用者訂閱你整個登錄處的情況。
Taps 的信任等級
新 Taps 預設分配為 community 信任等級。從它們安裝的 Skills 會經過標準安全掃描,並在首次安裝時顯示第三方警告面板。如果你的組織或廣泛受信任的來源應獲得更高的信任,請將其倉庫新增至 tools/skills_hub.py 中的 TRUSTED_REPOS(需要 Hermes 核心 PR)。
Tap 管理
hermes skills tap list # 顯示所有已設定的 Taps
hermes skills tap add myorg/skills-repo # 新增(預設路徑:skills/)
hermes skills tap remove myorg/skills-repo # 移除
在運行中的會話中:
/skills tap list
/skills tap add myorg/skills-repo
/skills tap remove myorg/skills-repo
Taps 儲存在 ~/.hermes/.hub/taps.json 中(按需建立)。
內建 Skill 更新(hermes skills reset)
Hermes 在倉庫內的 skills/ 中隨附一組內建 Skills。安裝時和每次 hermes update 時,同步過程會將這些 Skills 複製到 ~/.hermes/skills/,並在 ~/.hermes/skills/.bundled_manifest 記錄一份清單,將每個 Skill 名稱對應到同步時的內容雜湊值(原始雜湊值)。
每次同步時,Hermes 會重新計算你本地副本的雜湊值,並將其與原始雜湊值比較:
- 未變更 → 可安全取得上游變更,複製新的內建版本,記錄新的原始雜湊值。
- 已變更 → 視為使用者已修改並永遠跳過,因此你的編輯永遠不會被覆蓋。
保護機制很好,但有一個鋒利的邊緣。如果你編輯了一個內建 Skill,然後後來想要放棄你的更改並回到內建版本 — 只要從 ~/.hermes/hermes-agent/skills/ 複製貼上即可 — 但清單仍然保留著上次成功同步時的舊原始雜湊值。你新複製貼上的內容(目前的內建雜湊值)不會與那個過時的原始雜湊值相符,因此同步仍會將其標記為使用者已修改。
hermes skills reset 是你的逃生出口:
# 安全:清除此 Skill 的清單條目。你目前的副本會被保留,
# 但下次同步會以此為基準重新設定,使未來的更新正常運作。
hermes skills reset google-workspace
# 完全還原:同時刪除你的本地副本並重新複製目前的內建版本。
# 當你想要原始的上游 Skill 回來時使用。
hermes skills reset google-workspace --restore
# 非互動式(例如在腳本或 TUI 模式中)— 跳過 --restore 確認。
hermes skills reset google-workspace --restore --yes
相同的命令在聊天中也可以作為斜線命令使用:
/skills reset google-workspace
/skills reset google-workspace --restore
注意 — Profiles
每個 Profile 在自己的
HERMES_HOME下有自己的.bundled_manifest,因此hermes -p coder skills reset <name>只會影響該 Profile。
斷線命令(在聊天中)
所有相同的命令都可以用 /skills 使用:
/skills browse
/skills search react --source skills-sh
/skills search https://mintlify.com/docs --source well-known
/skills inspect skills-sh/vercel-labs/json-render/json-render-react
/skills install openai/skills/skill-creator --force
/skills check
/skills update
/skills reset google-workspace
/skills list
官方可選 Skills 仍然使用如 official/security/1password 和 official/migration/openclaw-migration 的識別碼。