スキル(OpenClaw)

OpenClawは**AgentSkills互換のスキルフォルダを使用して、エージェントにツールの使い方を教えます。各スキルは、YAMLフロントマターと手順を含むSKILL.mdが入ったディレクトリです。OpenClawはバンドルされたスキル**とオプションのローカルオーバーライドをロードし、環境、設定、バイナリの存在に基づいてロード時にフィルタリングします。

ロケーションと優先順位

スキルは3つの場所からロードされます:

  1. バンドルスキル: インストール(npmパッケージまたはOpenClaw.app)に同梱
  2. マネージド/ローカルスキル: ~/.openclaw/skills
  3. ワークスペーススキル: <workspace>/skills

スキル名が競合する場合の優先順位:

<workspace>/skills(最高)→ ~/.openclaw/skills → バンドルスキル(最低)

さらに、~/.openclaw/openclaw.jsonskills.load.extraDirsで追加のスキルフォルダ(優先順位最低)を設定できます。

エージェント単位 vs 共有スキル

マルチエージェント構成では、各エージェントが独自のワークスペースを持ちます:

  • エージェント単位のスキルはそのエージェント専用の<workspace>/skillsに配置。
  • 共有スキル~/.openclaw/skills(マネージド/ローカル)に配置し、同じマシン上の全エージェントから参照可能。
  • 共有フォルダskills.load.extraDirs(優先順位最低)でも追加可能。複数エージェントで使う共通スキルパックに便利。

同じスキル名が複数の場所に存在する場合、通常の優先順位が適用されます: ワークスペースが優先、次にマネージド/ローカル、最後にバンドル。

プラグインとスキル

プラグインはopenclaw.plugin.jsonskillsディレクトリを記載して(プラグインルートからの相対パス)独自のスキルを同梱できます。プラグインスキルはプラグイン有効時にロードされ、通常のスキル優先順位ルールに従います。プラグインの設定エントリにある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.*.envskills.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-invocabletrue|false(デフォルト: true)。trueの場合、スキルはユーザースラッシュコマンドとして公開されます。

    • disable-model-invocationtrue|false(デフォルト: false)。trueの場合、スキルはモデルプロンプトから除外されます(ユーザー呼び出しは引き続き可能)。

    • command-dispatchtool(オプション)。toolに設定すると、スラッシュコマンドがモデルをバイパスして直接ツールにディスパッチされます。

    • command-toolcommand-dispatch: tool設定時に呼び出すツール名。

    • command-arg-moderaw(デフォルト)。ツールディスパッチ時、生の引数文字列をツールに転送(コアのパースなし)。

      ツールは以下のパラメータで呼び出されます: { 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 — プラットフォームのオプションリスト(darwinlinuxwin32)。設定された場合、そのOS上でのみスキルが対象に。
  • requires.bins — リスト、すべてがPATH上に存在する必要あり。
  • requires.anyBins — リスト、少なくとも1つがPATH上に存在する必要あり。
  • requires.env — リスト、環境変数が存在するか設定で提供されている必要あり。
  • requires.config — truthyである必要があるopenclaw.jsonパスのリスト。
  • primaryEnvskills.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)はサンドボックスコンテナ内で実行するためにsummarize CLIが必要。

インストーラーの例:

---
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(必須)、archivetar.gz | tar.bz2 | zip)、extract(デフォルト: アーカイブ検出時に自動)、stripComponentstargetDir(デフォルト: ~/.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は:

  1. スキルのメタデータを読み取り。
  2. skills.entries.<key>.envまたはskills.entries.<key>.apiKeyprocess.envに適用。
  3. 対象となるスキルでシステムプロンプトを構築。
  4. 実行終了後に元の環境を復元。

これはエージェント実行にスコープされたものであり、グローバルなシェル環境ではありません。

セッションスナップショット(パフォーマンス)

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-agentformatSkillsForPrompt経由)。コストは決定的です:

  • 基本オーバーヘッド(スキルが1つ以上ある場合のみ): 195文字。
  • スキルごと: 97文字 + XMLエスケープされた<name><description><location>値の長さ。

計算式(文字数):

total = 195 + Σ (97 + len(name_escaped) + len(description_escaped) + len(location_escaped))

注意事項:

  • XMLエスケープは& < > " 'をエンティティ(&amp;&lt;等)に展開するため、長さが増加します。
  • トークン数はモデルのトークナイザーによって異なります。OpenAIスタイルの大まかな見積もりは約4文字/トークンなので、97文字 ≈ 24トークン+実際のフィールド長。

マネージドスキルのライフサイクル

OpenClawはインストール(npmパッケージまたはOpenClaw.app)の一部としてバンドルスキルのベースラインセットを同梱しています。~/.openclaw/skillsはローカルオーバーライド用です(例: バンドルコピーを変更せずにスキルを固定/パッチ)。ワークスペーススキルはユーザー所有で、名前が競合した場合は両方をオーバーライドします。

設定リファレンス

完全な設定スキーマはスキル設定を参照してください。

もっとスキルを探すには

https://clawhub.comをご覧ください。