スキルとは、エージェントが必要に応じてロードできるオンデマンドのナレッジ・ドキュメントです。トークン使用量を最小限に抑えるため、段階的な情報開示パターンに従っており、agentskills.io 標準仕様と互換性があります。
Hermes エージェント☤ 入門 : 機能 – コア : スキル・システム
作成 : Masashi Okumura (@classcat.com)
作成日時 : 07/27/2026
バージョン : Hermes Agent v0.19.0 (2026.7.20) — The Quicksilver Release
* 本記事は hermes-agent.nousresearch.com/docs の以下のページを参考にしています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。

Hermes エージェント☤ 入門 : 機能 – コア : スキル・システム
スキルとは、エージェントが必要に応じてロードできるオンデマンドのナレッジ・ドキュメントです。トークン使用量を最小限に抑えるため、段階的な情報開示 パターンに従っており、agentskills.io 標準仕様と互換性があります。
すべてのスキルは `~/.hermes/skills/` に格納されます – プライマリディレクトリであり真の情報源です。新規インストール時には、バンドルされたスキルがリポジトリからコピーされます。ハブによってインストールされたスキルやエージェントによって作成されたスキルもここに格納されます。エージェントは、任意のスキルを変更または削除できます。
Hermes に 外部スキルディレクトリ をポイントさせることもできます – ローカルのものと並行してスキャンされる追加のフォルダです。See External Skill Directories below.
See also:
まっさらな状態から始める
デフォルトでは、すべてのプロファイルにはバンドルされたスキルカタログが初期設定されており、Hermes の更新ごとに新しくバンドルされたスキルが追加されます。バンドルされたスキルが一切含まれていない プロファイルを望む場合には – そして更新後も空の状態を維持したい場合 – 次の 3 つの方法があります :
インストール時 (デフォルトの ~/.hermes プロファイルに適用) :
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --no-skills
プロファイル作成時 (名前付きプロファイル) :
hermes profile create research --no-skills
既にインストールされているプロファイル (デフォルトまたは名前付き) において、実行時に切り替えます :
hermes skills opt-out # stop future seeding — nothing on disk is touched
hermes skills opt-out --remove # also delete UNMODIFIED bundled skills (confirms first)
hermes skills opt-in --sync # undo: remove the marker and re-seed now
いずれの方法でも、プロファイルディレクトリに `.no-bundled-skills` というマーカーが書き込まれます。このマーカーが存在する間は、インストーラー、`hermes update`、およびスキル同期のいずれも、そのプロファイルのバンドル-スキルのシード処理をスキップします。再度有効にするには、マーカーを削除 (または `hermes skills opt-in` を実行) します。
スキルの使用
インストール済みのスキルはすべて、スラッシュコマンドとして自動的に使用できます :
# In the CLI or any messaging platform:
/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
# Just the skill name loads it and lets the agent ask what you need:
/excalidraw
1 つのコマンドで複数のスキルを組み合わせる
スラッシュコマンドを先頭に連結することで、単一のメッセージで複数のスキルを呼び出すことができます – 先頭の /skill トークン(最大 5 つ)がロードされ、残りの部分が指示として使用されます :
/github-pr-workflow /test-driven-development fix issue #123 and open a PR
解析 (parsing) はインストール済みのスキルではない最初のトークンで停止するため、(ファイルパスのような) 偶々 / で始まる引数は決して無視されません :
/ocr-and-documents /tmp/scan.pdf extract the tables # loads one skill; /tmp/scan.pdf is the argument
繰り返し使用する組み合わせには、スキルバンドル がおすすめです。短いコマンド一つで同じ効果が得られます。
バンドルされている `plan` スキルが良い例です。`/plan [request]` を実行すると、スキルの指示がロードされ、必要に応じてコンテキストを検査し、タスクを実行する代わりにマークダウン形式の実装プランを作成し、アクティブなワークスペース/バックエンド作業ディレクトリからの相対パスで `.hermes/plans/` に結果を保存するように Hermes に指示します。
You can also interact with skills through natural conversation:
hermes chat --toolsets skills -q "What skills do you have?"
hermes chat --toolsets skills -q "Show me the axolotl skill"
ソースからスキルを習得する (/learn)
/learnは、既にユーザが知っていること – あるいは大量の参考資料 – を、SKILL.md を手書きすることなく、再利用可能なスキルに素早く変換できる方法です。それはオープンエンド (自由形式) です: 汎用性が高く、記述できるものであれば何でも指定でき、エージェントは、既に搭載されているツールを使って資料を収集し、社内作成基準(≤60 文字の説明、標準的なセクション順序、Hermes ツールによる構成、独自コマンドの不使用) に準拠したスキルを作成します。
# ローカルの SDK または doc ディレクトリ — read_file / search_files で読み取る
/learn the REST client in ~/projects/acme-sdk, focus on auth + pagination
# オンライン・ドキュメントページ (web_extract で取得)
/learn https://docs.example.com/api/quickstart
# あなたがこの会話でエージェントに説明したワークフロー
/learn how I just deployed the staging server
# 貼り付けられたメモ/説明された手順
/learn filing an expense: open the portal, New > Expense, attach the receipt, submit
ライブエージェントが情報取得を行うため、/learn は CLI、メッセージング・ゲートウェイ、TUI、ダッシュボード – そしてどのターミナルバックエンド (ローカル、Docker、リモート) でも同じように機能します、これは、個別の情報取得エンジンが存在しないためです。ダッシュボード において、「スキル」ページには “Learn a skill” ボタンがあり、これはディレクトリ・フィールド、URL フィールド、自由形式のテキストボックスを含むパネルが開きます; これは /learn リクエストを作成し、チャットで実行します。

モデルツールのフットプリントは存在しません: /learn は標準規格に準拠したプロンプトを作成し、通常のターンとしてエージェントに渡します。エージェントは結果を skill_manage ツールで保存するため、書き込み承認ゲートが有効になっている場合は適用されます。
段階的開示 (Progressive Disclosure)
スキルはトークン効率の良いローディング (読み込み) パターンを使用します :
Level 0: skills_list() → [{名前, 説明, カテゴリー}, ...] (~3k トークン)
Level 1: skill_view(name) → コンテンツ全体 + メタデータ (varies)
Level 2: skill_view(name, path) → 特定の参照ファイル (varies)o
エージェントは、実際に必要になった場合にのみ、スキルコンテンツ全体を読み込みます。
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.
ロード時のセキュアなセットアップ
スキルは、検出から消えることなく、必要な環境変数を宣言できます :
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 でスキルが実際にロードされたときにのみ、安全な方法でその値を要求します。セットアップをスキップしてスキルをそのまま使用することもできます。メッセージングではチャットで秘密情報を要求することはありません – 代わりに、ローカルで `hermes setup` または ~/.hermes/.env を使用するように指示されます。
一度設定されると、宣言された環境変数は execute_code およびターミナルサンドボックスに自動的に渡されます – スキルのスクリプトは $TENOR_API_KEY を直接使用できます。非スキルの環境変数については、terminal.env_passthrough config オプションを使用してください。See Environment Variable Passthrough for details.
スキル Config 設定
スキルは、config.yaml に保存される非秘密の config 設定 (パス、プリファレンス) を宣言することもできます :
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 コマンドはそれらを表示します。スキルがロードされると、解決された設定値がコンテキストに注入されるため、エージェントは設定済みの値を自動的に認識します。
See Skill Settings and Creating Skills — Config Settings for details.
スキル・ディレクトリ構造
~/.hermes/skills/ # Single source of truth
├── mlops/ # Category directory
│ ├── axolotl/
│ │ ├── SKILL.md # Main instructions (required)
│ │ ├── references/ # Additional docs
│ │ ├── templates/ # Output formats
│ │ ├── scripts/ # Helper scripts callable from the skill
│ │ ├── examples/ # Referenced example outputs
│ │ └── assets/ # Supplementary files
│ └── vllm/
│ └── SKILL.md
├── devops/
│ └── deploy-k8s/ # Agent-created skill
│ ├── SKILL.md
│ └── references/
├── .hub/ # Skills Hub state
│ ├── lock.json
│ ├── quarantine/
│ └── audit.log
└── .bundled_manifest # Tracks seeded bundled skills
サードパーティの URL および GitHub からのインストールには、SKILL.md に加えて、references/, templates/, scripts/, assets/, そして examples/ ディレクトリ下にある参照先のローカルファイルが含まれます。参照されていないリポジトリファイルはコピーされません。Hermes は隔離されたバンドル全体をスキャンし、ソース URL、正確なコンテンツハッシュ、スキャナーバージョン、検出結果、タイムスタンプ、および fresh-or-cached ステータスを skills/.hub/lock.json に記録します。
外部スキル・ディレクトリ
Hermes の外側でスキルを保守している場合 – 例えば、複数の AI ツールで共有されている ~/.agents/skills/ ディレクトリ – Hermes にそれらのディレクトリもスキャンするように指示できます。
~/.hermes/config.yaml の skills セクションに external_dirs を追加してください :
skills:
external_dirs:
- ~/.agents/skills
- /home/shared/team-skills
- ${SKILLS_REPO}/skills
パスは ~ 展開と ${VAR} 環境変数の置換をサポートします。
How it works
- ローカルで作成、その場で更新: エージェントが作成した新しいスキルは ~/.hermes/skills/ に書き込まれます。既存のスキルは、external_dirs 下のスキルも含め、エージェントが patch、edit、write_file、remove_file、delete などの skill_manage アクションを実行すると、その場所で変更されます。
- 外部ディレクトリは書き込み保護の境界ではありません: 外部スキルディレクトリが Hermes プロセスによって書き込み可能になっている場合、エージェントが管理するスキル更新によってそのディレクトリ内のファイルは変更される可能性があります。共有外部スキルを読み取り専用にする必要がある場合は、ファイルシステムのアクセス許可を使用するか、分離されたプロファイル/ツールセットのセットアップをしてください。
- ローカルの優先順位: 同じスキル名がローカルディレクトリと外部ディレクトリの両方に存在する場合、ローカルバージョンが優先されます。
- 完全な統合: 外部スキルは、システムプロンプトのインデックス, skills_list, skill_view, および /skill-name スラッシュコマンドとして表示され、ローカルスキルと違いはありません。
- 存在しないパスは警告なしにスキップされます: 設定されたディレクトリが存在しない場合、Hermes はエラーを表示せずにそれを無視します。これは、すべてのマシンに存在するとは限らないオプションの共有ディレクトリの場合に有用です。
例
~/.hermes/skills/ # Local (primary, read-write)
├── devops/deploy-k8s/
│ └── SKILL.md
└── mlops/axolotl/
└── SKILL.md
~/.agents/skills/ # External (shared, mutable if writable)
├── my-custom-workflow/
│ └── SKILL.md
└── team-conventions/
└── SKILL.md
4つのスキルすべてがスキル・インデックスに表示されます。ローカルで my-custom-workflow という名前の新しいスキルを作成すると、外部のバージョンを覆い隠します。
スキルバンドル
スキルバンドルは、複数のスキルを単一のスラッシュコマンドでグループ化した小さな YAML ファイルです。/<bundle-name> を実行すると、バンドルにリストされているすべてのスキルが一度にロードされます – これは、特定のタスクで常に同じスキルセットが役立つ場合に便利です。
簡単な例
# Create a bundle for backend feature work
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"
Then in the CLI or any gateway platform:
/backend-dev refactor the auth middleware
エージェントは、ロードされた 3 つのスキルすべてを 1 つのユーザーメッセージとして受け取ります、スラッシュコマンド以降の任意のテキストはユーザー指示として添付されます。
YAML スキーマ
バンドルは ~/.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 (オプション — デフォルトはファイル名ステム (拡張子を除いたファイル名)) — バンドルの表示名。スラッシュコマンド用にハイフンスラッグに正規化されます (例: Backend Dev → /backend-dev)。
- description (オプション) — /bundles および `hermes bundles list` で表示される短いテキスト。
- skills (必須、空でないリスト) — スキル名、または skills ディレクトリからの相対パス。/<skill-name> に渡すのと同じ識別子を使用します。
- 指示(オプション)— ロードされたスキルコンテンツの先頭に追加されるガイダンス。”how we always use these together.” (これらは常にセットで使う) というルールを定義するのに役立ちます。
バンドルの管理
# List all installed bundles
hermes bundles list
# Inspect one bundle
hermes bundles show backend-dev
# Create a bundle interactively (omit --skill flags to enter them one per line)
hermes bundles create research
# Overwrite an existing bundle
hermes bundles create backend-dev --skill ... --force
# Delete a bundle
hermes bundles delete backend-dev
# Re-scan ~/.hermes/skill-bundles/ and report changes
hermes bundles reload
チャットセッション内から、/bundles はインストールされているすべてのバンドルとそのスキルを一覧表示します。
動作
- スラッグが衝突する場合、スキルバンドルは個々のスキルよりも優先されます。例えば、バンドルに research という名前を付け、かつ research というスキルがある場合、/research はバンドルを呼び出します。これは意図的な動作です – バンドルに名前を付けることで、そのバンドルを有効にしたことを意味しています。
- 欠落しているスキルはスキップされますが、致命的なエラーにはなりません。バンドルに skill-foo が含まれていてそれがインストールされていない場合、バンドルは解決可能なスキルをロードし、エージェントにはスキップされたスキルの一覧が表示されます。
- バンドルはあらゆるサーフェスで動作します – インタラクティブな CLI、TUI、ダッシュボードチャット、およびすべてのゲートウェイ・プラットフォーム (Telegram、Discord、Slack 等) – これは、ディスパッチが個々のスキルコマンドと同じ場所に一元化されているためです。
- バンドルはプロンプトキャッシュを無効化しません。
/<skill-name>と同様に、呼び出し時に新しいユーザーメッセージを生成します – システムプロンプトの変更は発生しません。
バンドルが、各スキルを手動でインストールするよりも優位な場合
以下のような場合にバンドルを使用してください :
- 繰り返し行うタスク (/backend-dev、/release-prep、/incident-response) で常に同じスキルを組み合わせる場合。
- /skill コマンドを複数回連続して入力するよりも、1 文字だけ短いメンタルモデルを望む場合。
- バンドルの YAML を共有ドットファイル・リポジトリにチェックし、
~/.hermes/skill-bundles/にシンボリックリンクを作成することで、チーム全体で使用できる「タスクプロファイル」を公開したい場合。
バンドルは単なる YAML エイリアスでです – スキルをインストールするものではありません。スキル自体は既に存在している必要があります (~/.hermes/skills/ または外部のスキルディレクトリ内)。そうでない場合、バンドルの呼び出しは欠落しているスキルをスキップします。
以上