Skills

Skills 設定

Skills の設定の大部分は ~/.openclaw/openclaw.jsonskills 配下にあります。エージェント固有の可視性は agents.defaults.skillsagents.list[].skills で設定します。

json5
{  skills: {    allowBundled: ["gemini", "peekaboo"],    load: {      extraDirs: ["~/Projects/agent-scripts/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],      watch: true,      watchDebounceMs: 250,    },    install: {      preferBrew: true,      nodeManager: "npm",      allowUploadedArchives: false,    },    workshop: {      autonomous: { enabled: false },      allowSymlinkTargetWrites: false,      approvalPolicy: "pending",      maxPending: 50,      maxSkillBytes: 40000,    },    entries: {      "image-lab": {        enabled: true,        apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" },        env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" },      },      peekaboo: { enabled: true },      sag: { enabled: false },    },  },}

読み込み(skills.load

skills.load.extraDirsstring[]

スキャン対象に追加する Skill ディレクトリです。優先順位は最も低くなります (バンドル Skill および Plugin Skill より下位)。パスでは ~ の展開がサポートされます。

skills.load.allowSymlinkTargetsstring[]

シンボリックリンクされた Skill フォルダーの解決先として許可する、信頼済みの実体ディレクトリです。 シンボリックリンクが設定済みルートの外部にある場合でも使用できます。 <workspace>/skills/manager -> ~/Projects/manager/skills のような、意図的に兄弟リポジトリを 使用するレイアウトで指定します。このリストは必要最小限にしてください。~~/Projects のような広範なルートを指定しないでください。

skills.load.watchbooleandefault: true

Skill フォルダーを監視し、SKILL.md ファイルの変更時に Skills スナップショットを 更新します。グループ化された Skill ルート配下のネストされたファイルも対象です。

skills.load.watchDebounceMsnumberdefault: 250

Skill ウォッチャーイベントのデバウンス時間(ミリ秒)です。

インストール(skills.install

skills.install.preferBrewbooleandefault: true

brew が利用可能な場合は Homebrew インストーラーを優先します。

skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"

Skill のインストールに使用する Node パッケージマネージャーの設定です。これは Skill の インストールにのみ影響します。Gateway ランタイムでは引き続き Node を使用してください (WhatsApp/Telegram では Bun は推奨されません)。openclaw setup --node-manageropenclaw onboard --node-managernpmpnpmbun を受け付けます。 Yarn を使用する Skill インストールでは、設定に "yarn" を直接指定してください。

skills.install.allowUploadedArchivesbooleandefault: false

信頼済みの operator.admin Gateway クライアントが、skills.upload.* 経由でステージングされた 非公開 zip アーカイブをインストールできるようにします。通常の ClawHub インストールでは、 この設定は不要です。

オペレーターのインストールポリシー(security.installPolicy

オペレーターが、ホスト固有のポリシーに基づいて Skill と Plugin のインストールを承認または ブロックするための信頼済みローカルコマンドを必要とする場合は、security.installPolicy を使用します。 このポリシーは、OpenClaw がソース素材をステージングした後、インストールまたは更新を続行する前に 実行されます。ClawHub Skills、アップロードされた Skills、Git/ローカル Skills、 Skill の依存関係インストーラー、および Plugin のインストール/更新元に適用されます。

json5
{  security: {    installPolicy: {      enabled: true,      // Omit targets to cover every supported target.      targets: ["skill", "plugin"],      exec: {        source: "exec",        command: "/usr/local/bin/openclaw-install-policy",        args: ["--json"],        timeoutMs: 10000,        noOutputTimeoutMs: 10000,        maxOutputBytes: 1048576,        passEnv: ["OPENCLAW_STATE_DIR", "PATH"],        env: { POLICY_MODE: "strict" },        trustedDirs: ["/usr/local/bin"],      },    },  },}
security.installPolicy.enabledbooleandefault: false

オペレーターが管理するインストールポリシーを有効にします。有効な exec コマンドなしで 有効化すると、インストールはフェイルクローズします。

security.installPolicy.targets("skill" | "plugin")[]

任意の対象フィルターです。省略すると、新しいインストールが予期せずフェイルオープンしないように、 サポートされるすべての対象にポリシーが適用されます。

security.installPolicy.exec.commandstring

信頼済みポリシー実行ファイルの絶対パスです。OpenClaw はシェルを介さずに実行し、 使用前にパスを検証します。

security.installPolicy.exec.argsstring[]

command の後に渡す固定引数です。

security.installPolicy.exec.timeoutMsnumberdefault: 10000

1 回のポリシー判定に許可される最大実時間です。

security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMs

標準出力または標準エラー出力がない状態で許可される最大時間です。超過するとポリシーは フェイルクローズします。

security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576

ポリシープロセスから受け入れる標準出力と標準エラー出力の合計最大バイト数です。

security.installPolicy.exec.env"Record<string,
security.installPolicy.exec.passEnvstring[]

OpenClaw プロセスからポリシープロセスへコピーする環境変数名です。 名前を指定した変数だけが渡されます。

security.installPolicy.exec.trustedDirsstring[]

ポリシー実行ファイルの配置を許可するディレクトリの任意の許可リストです。

security.installPolicy.exec.allowInsecurePathbooleandefault: false

コマンドパスの所有権および権限チェックを回避します。パスが別の仕組みで保護されている場合にのみ 使用してください。

security.installPolicy.exec.allowSymlinkCommandbooleandefault: false

設定されたコマンドパスがシンボリックリンクであることを許可します。解決後の対象は、 引き続きその他のパスチェックを満たす必要があります。インタープリタースクリプトの引数は、 シンボリックリンクではなく、直接の通常ファイルでなければなりません。

ポリシーは標準入力で、protocolVersion: 1openclawVersiontargetTypetargetNamesourcePathsourcePathKind、任意の構造化された source、 構造化された origin、および request を含む 1 つの JSON オブジェクトを受け取ります。 標準出力には、{ "protocolVersion": 1, "decision": "allow" } または { "protocolVersion": 1, "decision": "block", "reason": "..." } のいずれかの JSON オブジェクトを 1 つ書き込む必要があります。終了コードが 0 以外、タイムアウト、 不正な JSON、必須フィールドの欠落、または未対応のプロトコルバージョンの場合は、 フェイルクローズします。

OpenClaw は通常の Gateway 起動時にはインストールポリシーを実行しません。 ポリシーが有効でありながら利用できない場合、インストールと更新はフェイルクローズします。 openclaw doctor は静的検証を実行し、openclaw doctor --deep は設定されたコマンドに対して 合成インストールプローブを実行します。

一括更新では、対象ごとにポリシーが適用されます。ブロックされた Skill または Plugin の更新は、 ポリシーを無効化したり、バッチ内の後続の対象をスキップしたりせず、その対象だけが失敗します。

標準入力の例:

json
{  "protocolVersion": 1,  "openclawVersion": "2026.6.1",  "targetType": "skill",  "targetName": "weather",  "sourcePath": "/var/folders/.../openclaw-skill-clawhub/root",  "sourcePathKind": "directory",  "source": {    "kind": "clawhub",    "authority": "openclaw",    "mutable": false,    "network": true  },  "origin": {    "type": "clawhub",    "registry": "https://clawhub.openclaw.ai",    "slug": "weather",    "version": "1.0.0"  },  "request": {    "kind": "skill-install",    "mode": "install",    "requestedSpecifier": "clawhub:weather@1.0.0"  },  "skill": {    "installId": "clawhub"  }}

最小構成のポリシーコマンド:

js
#!/usr/bin/env node let input = "";process.stdin.setEncoding("utf8");process.stdin.on("data", (chunk) => {  input += chunk;});process.stdin.on("end", () => {  const request = JSON.parse(input);  if (request.targetType === "plugin" && request.source?.kind === "local-path") {    process.stdout.write(      JSON.stringify({        protocolVersion: 1,        decision: "block",        reason: "local plugin paths are not approved on this host",      }),    );    return;  }  process.stdout.write(JSON.stringify({ protocolVersion: 1, decision: "allow" }));});

バンドル Skill の許可リスト

skills.allowBundledstring[]

バンドル Skill のみに適用される任意の許可リストです。設定すると、リスト内の バンドル Skill だけが利用可能になります。管理対象、エージェントレベル、および ワークスペースの Skills には影響しません。

Skill ごとのエントリ(skills.entries

entries 配下のキーは、デフォルトでは Skill の name と一致します。Skill が metadata.openclaw.skillKey を定義している場合は、代わりにそのキーを使用します。 ハイフンを含む名前は引用符で囲んでください(JSON5 では引用符付きキーを使用できます)。

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .enabled" type="boolean"> false にすると、バンドル済みまたはインストール済みであっても Skill が無効になります。 バンドル Skill の coding-agent はオプトインです。true に設定し、claudecodexopencode、またはその他の対応 CLI のいずれかがインストールされ、認証済みであることを 確認してください。

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .apiKey" type='string | { source, provider, id }'> metadata.openclaw.primaryEnv を宣言する Skills 向けの簡易フィールドです。 平文文字列または SecretRef { source: "env", provider: "default", id: "VAR_NAME" } をサポートします。

"skills.entries.<key�����r�
"skills.entries.<key�w₫��ܩ

エージェントの許可リスト(agents

同じマシン/ワークスペースの Skill ルートを使用しながら、エージェントごとに表示する Skill セットを変更する場合は、エージェント設定を使用します。

json5
{  agents: {    defaults: {      skills: ["github", "weather"], // shared baseline    },    list: [      { id: "writer" }, // inherits github, weather      { id: "docs", skills: ["docs-search"] }, // replaces defaults entirely      { id: "locked-down", skills: [] }, // no skills    ],  },}
agents.defaults.skillsstring[]

agents.list[].skills を省略したエージェントが継承する共有の基本許可リストです。 デフォルトで Skills を制限しない場合は、この設定自体を省略してください。

agents.list[].skillsstring[]

そのエージェントに対する明示的な最終 Skill セットです。明示的なリストは継承した デフォルトを置き換えます。マージは行われません。そのエージェントに Skills を 何も公開しない場合は [] を設定します。

ワークショップ(skills.workshop

skills.workshop.autonomous.enabledbooleandefault: false

true の場合、エージェントはターンが正常に完了した後、永続的な会話シグナルから保留中の提案を作成できます。ユーザーが指示したスキル作成は、この設定に関係なく常に Skill Workshop を経由します。

skills.workshop.approvalPolicy"pending" | "auto"default: "pending"

pending では、エージェントが開始した適用、却下、または隔離を行う前にオペレーターの承認が必要です。auto では、承認なしでこれらの操作を実行できます。

skills.workshop.allowSymlinkTargetWritesbooleandefault: false

Skill Workshop の適用時に、実体のターゲットが skills.load.allowSymlinkTargets によってすでに信頼されているワークスペースのスキルシンボリックリンクを通じた書き込みを許可します。生成された提案の適用によって、その共有スキルルートを変更する必要がない限り、この設定は無効のままにしてください。

skills.workshop.maxPendingnumberdefault: 50

ワークスペースごとに保持する保留中および隔離済みの提案の最大数です(許容範囲: 1~200)。

skills.workshop.maxSkillBytesnumberdefault: 40000

提案本文の最大サイズ(バイト単位)です(許容範囲: 1024~200000)。提案の説明は検出結果と一覧出力に表示されるため、別途160バイトに厳しく制限されます。

この設定によって制御される提案のライフサイクル、CLI コマンド、エージェントツールのパラメーター、および Gateway メソッドについては、Skill Workshopを参照してください。

シンボリックリンクされたスキルルート

デフォルトでは、ワークスペース、プロジェクトエージェント、追加ディレクトリ、および同梱スキルのルートが包含境界になります。<workspace>/skills 配下にあり、ルート外を参照するシンボリックリンクされたスキルフォルダーは、ログメッセージを出力してスキップされます。

意図したシンボリックリンク構成を許可するには、信頼するターゲットを宣言します。

json5
{  skills: {    load: {      extraDirs: ["~/Projects/manager/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],    },  },}

この設定では、実体パスの解決後に <workspace>/skills/manager -> ~/Projects/manager/skills が受け入れられます。extraDirs は隣接するリポジトリを直接スキャンし、allowSymlinkTargets は既存の構成向けにシンボリックリンクされたパスを維持します。

デフォルトでは、Skill Workshop の適用処理はこれらのシンボリックリンクを通じて書き込みません。Workshop の適用処理が、すでに信頼されているシンボリックリンク先にあるスキルを変更できるようにするには、別途明示的に有効化します。

json5
{  skills: {    load: {      allowSymlinkTargets: ["~/Projects/manager/skills"],    },    workshop: {      allowSymlinkTargetWrites: true,    },  },}

管理対象の ~/.openclaw/skills および個人用の ~/.agents/skills ディレクトリでは、スキルディレクトリのシンボリックリンクがすでに無条件で受け入れられます(スキルごとの SKILL.md の包含制約は引き続き適用されます)。allowSymlinkTargets が必要なのは、ワークスペース、追加ディレクトリ、およびプロジェクトエージェント(<workspace>/.agents/skills)のルートのみです。

サンドボックス化されたスキルと環境変数

Docker サンドボックスにシークレットを渡すには、次のように設定します。

json5
{  agents: {    defaults: {      sandbox: {        docker: {          env: { GEMINI_API_KEY: "your-key-here" },        },      },    },  },}

読み込み順序の確認

text
workspace/skills      (最優先)workspace/.agents/skills~/.agents/skills~/.openclaw/skills同梱スキルskills.load.extraDirs (最低優先)

スキルと設定への変更は、ウォッチャーが有効な場合は次の新しいセッションで、ウォッチャーが変更を検出した場合は次のエージェントターンで有効になります。

関連項目

Was this useful?
On this page

On this page