スキル(OpenClaw)
OpenClawは**AgentSkills互換のスキルフォルダを使用して、エージェントにツールの使い方を教えます。各スキルは、YAMLフロントマターと手順を含むSKILL.mdが入ったディレクトリです。OpenClawはバンドルされたスキル**とオプションのローカルオーバーライドをロードし、環境、設定、バイナリの存在に基づいてロード時にフィルタリングします。
ロケーションと優先順位
スキルは3つの場所からロードされます:
- バンドルスキル: インストール(npmパッケージまたはOpenClaw.app)に同梱
- マネージド/ローカルスキル:
~/.openclaw/skills - ワークスペーススキル:
<workspace>/skills
スキル名が競合する場合の優先順位:
<workspace>/skills(最高)→ ~/.openclaw/skills → バンドルスキル(最低)
さらに、~/.openclaw/openclaw.jsonのskills.load.extraDirsで追加のスキルフォルダ(優先順位最低)を設定できます。
エージェント単位 vs 共有スキル
マルチエージェント構成では、各エージェントが独自のワークスペースを持ちます:
- エージェント単位のスキルはそのエージェント専用の
<workspace>/skillsに配置。 - 共有スキルは
~/.openclaw/skills(マネージド/ローカル)に配置し、同じマシン上の全エージェントから参照可能。 - 共有フォルダは
skills.load.extraDirs(優先順位最低)でも追加可能。複数エージェントで使う共通スキルパックに便利。
同じスキル名が複数の場所に存在する場合、通常の優先順位が適用されます: ワークスペースが優先、次にマネージド/ローカル、最後にバンドル。
プラグインとスキル
プラグインはopenclaw.plugin.jsonにskillsディレクトリを記載して(プラグインルートからの相対パス)独自のスキルを同梱できます。プラグインスキルはプラグイン有効時にロードされ、通常のスキル優先順位ルールに従います。プラグインの設定エントリにあるmetadata.openclaw.requires.configでゲーティングが可能です。ディスカバリー/設定はプラグイン、これらのスキルが教えるツールサーフェスはツールを参照してください。
ClawHub(インストール+同期)
ClawHubはOpenClaw公式のスキルレジストリです。https://clawhub.comで閲覧できます。スキルの発見、インストール、更新、バックアップに利用します。 詳しいガイド: ClawHub。
主なフロー:
- ワークスペースにスキルをインストール:
clawhub install <skill-slug>
- インストール済みスキルを全て更新:
clawhub update --all
- 同期(スキャン+更新の公開):
clawhub sync --all
デフォルトでは、clawhubは現在の作業ディレクトリ配下の./skillsにインストールします(または設定されたOpenClawワークスペースにフォールバック)。OpenClawは次のセッションでそれを<workspace>/skillsとして認識します。
セキュリティに関する注意
- サードパーティのスキルは信頼されないコードとして扱ってください。有効化前に内容を確認すること。
- 信頼されない入力やリスクのあるツールにはサンドボックス実行を推奨。サンドボックス化を参照。
- ワークスペースおよびextra-dirのスキル検出は、解決された実パスが設定されたルート内に留まるスキルルートと
SKILL.mdファイルのみを受け入れます。 skills.entries.*.envとskills.entries.*.apiKeyは、そのエージェントターンのホストプロセスにシークレットを注入します(サンドボックスではない)。プロンプトやログにシークレットが含まれないよう注意してください。- より広範な脅威モデルとチェックリストはセキュリティを参照。
フォーマット(AgentSkills + Pi互換)
SKILL.mdには少なくとも以下が必要です:
---
name: nano-banana-pro
description: Generate or edit images via Gemini 3 Pro Image
---
注意事項:
- AgentSkills仕様のレイアウト/意図に準拠しています。
- 組み込みエージェントが使用するパーサーは単一行のフロントマターキーのみに対応。
metadataは単一行のJSONオブジェクトである必要があります。- 手順内で
{baseDir}を使用するとスキルフォルダパスを参照できます。 - オプションのフロントマターキー:
-
homepage— macOSスキルUIで「Website」として表示されるURL(metadata.openclaw.homepage経由でも対応)。 -
user-invocable—true|false(デフォルト:true)。trueの場合、スキルはユーザースラッシュコマンドとして公開されます。 -
disable-model-invocation—true|false(デフォルト:false)。trueの場合、スキルはモデルプロンプトから除外されます(ユーザー呼び出しは引き続き可能)。 -
command-dispatch—tool(オプション)。toolに設定すると、スラッシュコマンドがモデルをバイパスして直接ツールにディスパッチされます。 -
command-tool—command-dispatch: tool設定時に呼び出すツール名。 -
command-arg-mode—raw(デフォルト)。ツールディスパッチ時、生の引数文字列をツールに転送(コアのパースなし)。ツールは以下のパラメータで呼び出されます:
{ command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }。
-
ゲーティング(ロード時フィルター)
OpenClawはmetadata(単一行JSON)を使ってロード時にスキルをフィルタリングします:
---
name: nano-banana-pro
description: Generate or edit images via Gemini 3 Pro Image
metadata:
{
"openclaw":
{
"requires": { "bins": ["uv"], "env": ["GEMINI_API_KEY"], "config": ["browser.enabled"] },
"primaryEnv": "GEMINI_API_KEY",
},
}
---
metadata.openclaw配下のフィールド:
always: true— 常にスキルを含める(他のゲートをスキップ)。emoji— macOSスキルUIで使用するオプションの絵文字。homepage— macOSスキルUIで「Website」として表示されるオプションのURL。os— プラットフォームのオプションリスト(darwin、linux、win32)。設定された場合、そのOS上でのみスキルが対象に。requires.bins— リスト、すべてがPATH上に存在する必要あり。requires.anyBins— リスト、少なくとも1つがPATH上に存在する必要あり。requires.env— リスト、環境変数が存在するか設定で提供されている必要あり。requires.config— truthyである必要があるopenclaw.jsonパスのリスト。primaryEnv—skills.entries.<name>.apiKeyに関連する環境変数名。install— macOSスキルUIで使用するオプションのインストーラー仕様の配列(brew/node/go/uv/download)。
サンドボックスに関する注意:
requires.binsはスキルロード時にホスト上でチェックされます。- エージェントがサンドボックス化されている場合、バイナリはコンテナ内にも存在する必要があります。
agents.defaults.sandbox.docker.setupCommand(またはカスタムイメージ)でインストールしてください。setupCommandはコンテナ作成後に一度実行されます。 パッケージインストールにはネットワークエグレス、書き込み可能なルートFS、サンドボックス内のrootユーザーも必要です。 例:summarizeスキル(skills/summarize/SKILL.md)はサンドボックスコンテナ内で実行するためにsummarizeCLIが必要。
インストーラーの例:
---
name: gemini
description: Use Gemini CLI for coding assistance and Google search lookups.
metadata:
{
"openclaw":
{
"emoji": "♊️",
"requires": { "bins": ["gemini"] },
"install":
[
{
"id": "brew",
"kind": "brew",
"formula": "gemini-cli",
"bins": ["gemini"],
"label": "Install Gemini CLI (brew)",
},
],
},
}
---
注意事項:
- 複数のインストーラーがリストされている場合、Gatewayは1つの優先オプションを選択(brewが利用可能ならbrew、それ以外はnode)。
- すべてのインストーラーが
downloadの場合、OpenClawは各エントリをリストして利用可能なアーティファクトを確認できるようにします。 - インストーラー仕様にはプラットフォーム別フィルタリング用の
os: ["darwin"|"linux"|"win32"]を含められます。 - NodeインストールはOpenClaw.jsonの
skills.install.nodeManagerに従います(デフォルト: npm、オプション: npm/pnpm/yarn/bun)。 スキルのインストールにのみ影響します。Gatewayランタイムは引き続きNodeを使用してください (WhatsApp/Telegram向けにBunは非推奨)。 - Goインストール:
goが存在せずbrewが利用可能な場合、GatewayはまずHomebrew経由でGoをインストールし、可能な場合はGOBINをHomebrewのbinに設定。 - Downloadインストール:
url(必須)、archive(tar.gz|tar.bz2|zip)、extract(デフォルト: アーカイブ検出時に自動)、stripComponents、targetDir(デフォルト:~/.openclaw/tools/<skillKey>)。
metadata.openclawが存在しない場合、スキルは常に対象となります(設定で無効化されているか、バンドルスキルの場合はskills.allowBundledでブロックされない限り)。
設定オーバーライド(~/.openclaw/openclaw.json)
バンドル/マネージドスキルはトグルと環境変数の値を設定可能:
{
skills: {
entries: {
"nano-banana-pro": {
enabled: true,
apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // またはプレーンテキスト文字列
env: {
GEMINI_API_KEY: "GEMINI_KEY_HERE",
},
config: {
endpoint: "https://example.invalid",
model: "nano-pro",
},
},
peekaboo: { enabled: true },
sag: { enabled: false },
},
},
}
注: スキル名にハイフンが含まれる場合はキーをクォートしてください(JSON5ではクォートされたキーが使用可能)。
設定キーはデフォルトでスキル名にマッチします。スキルがmetadata.openclaw.skillKeyを定義している場合は、skills.entries配下でそのキーを使用してください。
ルール:
enabled: falseでバンドル/インストール済みのスキルを無効化。env: 変数がプロセスに未設定の場合のみ注入。apiKey:metadata.openclaw.primaryEnvを宣言するスキル向けの便利設定。 プレーンテキスト文字列またはSecretRefオブジェクト({ source, provider, id })に対応。config: カスタムのスキル別フィールド用のオプションバッグ。カスタムキーはここに配置。allowBundled: バンドルされたスキルのみのオプション許可リスト。設定された場合、 リスト内のバンドルスキルのみが対象(マネージド/ワークスペースのスキルには影響なし)。
環境注入(エージェント実行ごと)
エージェント実行の開始時に、OpenClawは:
- スキルのメタデータを読み取り。
skills.entries.<key>.envまたはskills.entries.<key>.apiKeyをprocess.envに適用。- 対象となるスキルでシステムプロンプトを構築。
- 実行終了後に元の環境を復元。
これはエージェント実行にスコープされたものであり、グローバルなシェル環境ではありません。
セッションスナップショット(パフォーマンス)
OpenClawはセッション開始時に対象スキルのスナップショットを取得し、同じセッション内の後続のターンで再利用します。スキルや設定の変更は次の新しいセッションで反映されます。
スキルウォッチャーが有効な場合や、新しい対象リモートノードが出現した場合にもセッション中に更新されることがあります(後述)。これはホットリロードと考えてください。更新されたリストは次のエージェントターンで反映されます。
リモートmacOSノード(Linuxゲートウェイ)
GatewayがLinux上で動作しているがmacOSノードがsystem.runを許可した状態で接続されている場合(Exec承認のセキュリティがdenyに設定されていない場合)、OpenClawはmacOS専用スキルを対象として扱えます(必要なバイナリがそのノードに存在する場合)。エージェントはそれらのスキルをnodesツール(通常はnodes.run)経由で実行すべきです。
これはノードがコマンドサポートを報告し、system.run経由のバイナリプローブに依存します。macOSノードが後からオフラインになっても、スキルは引き続き表示されます。ノードが再接続するまで呼び出しは失敗する可能性があります。
スキルウォッチャー(自動更新)
デフォルトで、OpenClawはスキルフォルダを監視し、SKILL.mdファイルの変更時にスキルスナップショットを更新します。skills.load配下で設定:
{
skills: {
load: {
watch: true,
watchDebounceMs: 250,
},
},
}
トークン影響(スキルリスト)
スキルが対象の場合、OpenClawはシステムプロンプトにコンパクトなXMLのスキルリストを注入します(pi-coding-agentのformatSkillsForPrompt経由)。コストは決定的です:
- 基本オーバーヘッド(スキルが1つ以上ある場合のみ): 195文字。
- スキルごと: 97文字 + XMLエスケープされた
<name>、<description>、<location>値の長さ。
計算式(文字数):
total = 195 + Σ (97 + len(name_escaped) + len(description_escaped) + len(location_escaped))
注意事項:
- XMLエスケープは
& < > " 'をエンティティ(&、<等)に展開するため、長さが増加します。 - トークン数はモデルのトークナイザーによって異なります。OpenAIスタイルの大まかな見積もりは約4文字/トークンなので、97文字 ≈ 24トークン+実際のフィールド長。
マネージドスキルのライフサイクル
OpenClawはインストール(npmパッケージまたはOpenClaw.app)の一部としてバンドルスキルのベースラインセットを同梱しています。~/.openclaw/skillsはローカルオーバーライド用です(例: バンドルコピーを変更せずにスキルを固定/パッチ)。ワークスペーススキルはユーザー所有で、名前が競合した場合は両方をオーバーライドします。
設定リファレンス
完全な設定スキーマはスキル設定を参照してください。
もっとスキルを探すには
https://clawhub.comをご覧ください。