Skills(OpenClaw)
OpenClaw は、エージェントにツールの使い方を教えるために AgentSkills-互換の skill フォルダーを使用します。各 skill は、YAML フロントマターと手順を含むSKILL.md を持つディレクトリです。OpenClaw は 同梱 skills に加えて任意のローカル上書きを読み込み、環境・設定・バイナリの存在に基づいてロード時にフィルタリングします。
配置場所と優先順位
Skills は 3 か所から読み込まれます:- 同梱 skills:インストール(npm パッケージまたは OpenClaw.app)に同梱
- マネージド/ローカル skills:
~/.openclaw/skills - ワークスペース skills:
<workspace>/skills
<workspace>/skills(最優先)→ ~/.openclaw/skills → 同梱 skills(最下位)
さらに、~/.openclaw/openclaw.json のskills.load.extraDirs で追加の skill フォルダー(最下位の優先順位)を設定できます。
エージェント別と共有 skills
マルチエージェント構成では、各エージェントは独自のワークスペースを持ちます。つまり:- エージェント別 skills は、そのエージェント専用として
<workspace>/skillsに配置されます。 - 共有 skills は
~/.openclaw/skills(マネージド/ローカル)に配置され、同一マシン上の すべてのエージェント から参照できます。 - 共有フォルダー は、複数エージェントで共通の skills パックを使いたい場合、
skills.load.extraDirs(最下位の優先順位)でも追加できます。
プラグインと skills
プラグインは、プラグインルートからの相対パスとしてopenclaw.plugin.json に skills ディレクトリを列挙することで、独自の skills を同梱できます。プラグインが有効になるとプラグイン skills がロードされ、通常の skill 優先順位ルールに従います。プラグインの設定エントリの metadata.openclaw.requires.config によってゲートできます。検出/設定については Plugins、それらの skills が教えるツールの表面については Tools を参照してください。
ClawHub(インストール+同期)
ClawHub は OpenClaw 向けの公開 skills レジストリです。閲覧はhttps://clawhub.com から行えます。Skills の発見、インストール、更新、バックアップに使用します。完全なガイドは ClawHub を参照してください。 一般的なフロー:
- ワークスペースに skill をインストール:
clawhub install <skill-slug>
- インストール済み skills をすべて更新:
clawhub update --all
- 同期(スキャン+公開更新):
clawhub sync --all
clawhub は現在の作業ディレクトリ配下の ./skills にインストールします(または設定された OpenClaw ワークスペースにフォールバックします)。OpenClaw は次のセッションでそれを <workspace>/skills として認識します。
セキュリティ上の注意
- サードパーティ製 skills は 信頼できないコード として扱ってください。有効化する前に内容を確認してください。
- 信頼できない入力やリスクの高いツールには、サンドボックス化された実行を優先してください。Sandboxing を参照してください。
skills.entries.*.envとskills.entries.*.apiKeyは、そのエージェントのターンにおいて ホスト プロセスにシークレットを注入します(サンドボックスではありません)。シークレットをプロンプトやログに含めないでください。- より広範な脅威モデルとチェックリストについては Security を参照してください。
形式(AgentSkills + Pi-compatible)
SKILL.md には、少なくとも次が含まれている必要があります:
- レイアウト/意図については AgentSkills 仕様に従います。
- 組み込みエージェントが使用するパーサーは、単一行のフロントマターキーのみをサポートします。
metadataは 単一行の JSON オブジェクトである必要があります。- 手順内で skill フォルダーパスを参照するには
{baseDir}を使用してください。 - 任意のフロントマターキー:
-
homepage— macOS Skills UI に「Website」として表示される URL(metadata.openclaw.homepageでも対応)。 -
user-invocable—true|false(既定:true)。trueの場合、skill はユーザーのスラッシュコマンドとして公開されます。 -
disable-model-invocation—true|false(既定:false)。trueの場合、skill はモデルプロンプトから除外されます(ユーザー呼び出しでは引き続き利用可能)。 -
command-dispatch—tool(任意)。toolに設定すると、スラッシュコマンドはモデルをバイパスして直接ツールにディスパッチされます。 -
command-tool—command-dispatch: toolが設定されている場合に呼び出すツール名。 -
command-arg-mode—raw(default)。ツールディスパッチの場合、raw args 文字列をツールに転送します(コアパースなし)。 ツールは次のパラメータで呼び出されます:
{ command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }。
-
ゲーティング(ロード時フィルター)
OpenClaw は、metadata(単一行 JSON)を使用して ロード時に skills をフィルタリングします:
metadata.openclaw 配下のフィールド:
always: true— 常に skill を含めます(他のゲートをスキップ)。emoji— macOS Skills UI で使用される任意の絵文字。homepage— macOS Skills UI に「Website」として表示される任意の URL。os— 任意のプラットフォーム一覧(darwin,linux,win32)。設定した場合、その OS のみで有効です。requires.bins— リスト。各項目はPATH上に存在する必要があります。requires.anyBins— リスト。少なくとも 1 つがPATH上に存在する必要があります。requires.env— リスト。環境変数が存在する または 設定で提供されている必要があります。requires.config— 真である必要があるopenclaw.jsonパスのリスト。primaryEnv—skills.entries.<name>.apiKeyに関連付けられた環境変数名。install— macOS Skills UI で使用されるインストーラ仕様の任意の配列(brew/node/go/uv/download)。
requires.binsは、skill のロード時に ホスト でチェックされます。- エージェントがサンドボックス化されている場合、バイナリも コンテナ内 に存在する必要があります。
agents.defaults.sandbox.docker.setupCommand(またはカスタムイメージ)でインストールします。
setupCommandはコンテナ作成後に一度実行されます。
パッケージのインストールには、ネットワーク egress、書き込み可能なルート FS、およびサンドボックス内の root ユーザーも必要です。
例:summarizeskill(skills/summarize/SKILL.md)は、サンドボックスコンテナ内にsummarizeCLI が必要です。
- 複数のインストーラが列挙されている場合、ゲートウェイは 単一 の優先オプション(利用可能な場合は brew、そうでなければ node)を選択します。
- すべてのインストーラが
downloadの場合、OpenClaw は各エントリを一覧表示します。 - インストーラ仕様には、
os: ["darwin"|"linux"|"win32"]を含めてプラットフォーム別にフィルタリングできます。 - Node のインストールは、
openclaw.jsonのskills.install.nodeManagerを尊重します(既定:npm;選択肢:npm/pnpm/yarn/bun)。
これは skill installs のみに影響します。Gateway ランタイムは引き続き Node を使用してください(WhatsApp/Telegram では Bun は推奨されません)。 - Go のインストール:
goがなくbrewが利用可能な場合、先に Homebrew で Go をインストールし、可能であればGOBINを Homebrew のbinに設定します。 - Download のインストール:
url(必須)、archive(tar.gz|tar.bz2|zip)、extract(既定:アーカイブ検出時は自動)、stripComponents、targetDir(既定:~/.openclaw/tools/<skillKey>)。
metadata.openclaw が存在しない場合、その skill は常に有効です(設定で無効化されている場合、または同梱 skills に対する skills.allowBundled によってブロックされている場合を除く)。
設定による上書き(~/.openclaw/openclaw.json)
バンドル/マネージド skills は有効化の切り替えや env 値の指定ができます:
metadata.openclaw.skillKey を定義している場合は、skills.entries 配下でそのキーを使用してください。
ルール:
enabled: falseは、同梱/インストール済みであっても skill を無効化します。env:その変数がプロセス内ですでに設定されていない場合に のみ 注入されます。apiKey:metadata.openclaw.primaryEnvを宣言する skills 向けの簡便機能です。config:カスタムの skill ごとのフィールドを入れる任意の入れ物です。カスタムキーはここに配置する必要があります。allowBundled:同梱 skills のみを対象とした任意の許可リスト。設定されている場合、リスト内の同梱 skills のみが有効になります(マネージド/ワークスペース skills には影響しません)。
環境変数の注入(エージェント実行ごと)
エージェント実行が開始されると、OpenClaw は:- Skill メタデータを読み取ります。
skills.entries.<key>.envまたはskills.entries.<key>.apiKeyをprocess.envに適用します。- 有効な skills を用いてシステムプロンプトを構築します。
- 実行終了後、元の環境を復元します。
セッションスナップショット(パフォーマンス)
OpenClaw は、セッション開始時に有効な skills をスナップショットし、同一セッション内の後続ターンでその一覧を再利用します。Skills や設定の変更は、次の新しいセッションから有効になります。 スキルウォッチャーが有効な場合や、新しい対象リモートノードが出現した場合(下記参照)には、セッション中にリフレッシュされることもあります。これは ホットリロード と考えてください。更新された一覧は次のエージェントターンで使用されます。リモート macOS ノード(Linux gateway)
Gateway が Linux 上で稼働しており、macOS ノード がsystem.run を許可した状態(Exec approvals のセキュリティが deny でない)で接続されている場合、OpenClaw は必要なバイナリがそのノード上に存在すれば macOS 専用 skills を有効として扱えます。エージェントはそれらの skills を nodes ツール(通常は nodes.run)経由で実行する必要があります。
これは、ノードがコマンド対応状況を報告し、system.run による bin プローブを行えることに依存します。後で macOS ノードがオフラインになっても skills は表示されたままですが、再接続されるまで呼び出しが失敗する可能性があります。
Skills ウォッチャー(自動更新)
既定では、OpenClaw は skill フォルダーを監視し、SKILL.md が変更されると skills スナップショットを更新します。skills.load で設定します:
Token impact(skills list)
Skills が有効な場合、OpenClaw は利用可能な skills のコンパクトな XML 一覧をシステムプロンプトに注入します(pi-coding-agent の formatSkillsForPrompt 経由)。コストは決定的です:
- Base overhead(1 つ以上の skill がある場合のみ): 195 characters。
- Per skill: 97 characters + XML エスケープされた
<name>、<description>、<location>の長さ。
- XML エスケープにより
& < > " 'はエンティティ(&,<など)に展開され、長さが増加します。 - トークン数はモデルのトークナイザーによって異なります。OpenAI 風の概算では約 4 chars/token のため、97 chars ≈ 24 tokens/skill に加えて実際のフィールド長が加算されます。
マネージド skills のライフサイクル
OpenClaw は、インストール(npm パッケージまたは OpenClaw.app)の一部として、ベースラインの skills を bundled skills として提供します。~/.openclaw/skills はローカル上書き用(例:同梱コピーを変更せずにスキルをピン留め/パッチする場合)です。ワークスペース skills はユーザー所有で、同名競合時には他を上書きします。