Skills
Skills 設定
ほとんどのスキル設定は ~/.openclaw/openclaw.json の
skills 配下にあります。エージェント固有の表示設定は
agents.defaults.skills と agents.list[].skills 配下にあります。
{ 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[]追加でスキャンするスキルディレクトリです。優先順位は最も低くなります(バンドル済み
およびプラグインスキルの後)。パスは ~ 対応で展開されます。
skills.load.allowSymlinkTargetsstring[]シンボリックリンクされたスキルフォルダが解決されてもよい、信頼済みの実ターゲットディレクトリです。
シンボリックリンクが設定済みルートの外にある場合でも適用されます。これは
<workspace>/skills/manager -> ~/Projects/manager/skills のような
意図的な兄弟リポジトリレイアウトに使用します。このリストは
狭く保ってください。~ や ~/Projects のような広いルートを指定しないでください。
skills.load.watchbooleandefault: trueスキルフォルダを監視し、SKILL.md ファイルが変更されたときにスキルスナップショットを
更新します。グループ化されたスキルルート配下のネストされたファイルも対象です。
skills.load.watchDebounceMsnumberdefault: 250スキルウォッチャーイベントのデバウンス時間(ミリ秒)です。
インストール (skills.install)
skills.install.preferBrewbooleandefault: truebrew が利用できる場合は Homebrew インストーラーを優先します。
skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"スキルインストールで優先する Node パッケージマネージャーです。これはスキル
インストールにのみ影響します。Gateway ランタイムでは引き続き Node を使用してください(Bun は
WhatsApp/Telegram には推奨されません)。npm、pnpm、
または bun には openclaw setup --node-manager を使用し、Yarn ベースのスキルインストールには
"yarn" を手動で設定します。
skills.install.allowUploadedArchivesbooleandefault: false信頼済みの operator.admin Gateway クライアントが、skills.upload.* 経由でステージされた非公開 zip
アーカイブをインストールできるようにします。通常の ClawHub インストールでは
この設定は不要です。
オペレーターインストールポリシー (security.installPolicy)
オペレーターが、ホスト固有のポリシーでスキルおよびプラグインのインストールを
承認またはブロックする信頼済みローカルコマンドを必要とする場合は、security.installPolicy を使用します。このポリシーは、
OpenClaw がソース素材をステージした後、インストールまたは更新が
続行される前に実行されます。ClawHub スキル、アップロードされたスキル、Git/ローカルスキル、
スキル依存関係インストーラー、プラグインのインストール/更新ソースに適用されます。
{ 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: 100001 回のポリシー判定に対する最大実時間です。
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsポリシーがフェイルクローズするまでに stdout または stderr の出力がない最大時間です。
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576ポリシープロセスから受け入れる stdout と stderr の合計最大バイト数です。
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設定されたコマンドパスがシンボリックリンクであることを許可します。解決後のターゲットは 引き続き他のパスチェックを満たす必要があります。インタープリタースクリプト引数は、 シンボリックリンクではなく、直接の通常ファイルでなければなりません。
ポリシーは stdin で protocolVersion: 1、
openclawVersion、targetType、targetName、sourcePath、sourcePathKind、
任意の構造化された source、構造化された origin、および request を含む JSON オブジェクトを 1 つ受け取ります。stdout には
JSON オブジェクトを 1 つ書き出す必要があります: { "protocolVersion": 1, "decision": "allow" } または
{ "protocolVersion": 1, "decision": "block", "reason": "..." }。ゼロ以外の
終了、タイムアウト、不正な JSON、欠落フィールド、または未対応のプロトコルバージョンは
フェイルクローズします。
OpenClaw は通常の Gateway 起動時にインストールポリシーを実行しません。ポリシーが有効だが利用できない場合、
インストールと更新はフェイルクローズします。openclaw doctor
は静的検証を行い、openclaw doctor --deep は設定されたコマンドに対して合成
インストールプローブを実行します。
一括更新ではターゲットごとにポリシーが適用されます。ブロックされたスキルまたはプラグインの更新は、 ポリシーを無効化したりバッチ内の後続ターゲットをスキップしたりせず、 そのターゲットだけを失敗させます。
stdin の例:
{ "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" }}最小限のポリシーコマンド:
#!/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" }));});バンドル済みスキルの許可リスト
skills.allowBundledstring[]バンドル済みスキルのみに対する任意の許可リストです。設定すると、リスト内のバンドル済みスキル のみが対象になります。管理対象、エージェントレベル、およびワークスペースのスキルには 影響しません。
スキルごとのエントリ (skills.entries)
entries 配下のキーは、デフォルトではスキルの name と一致します。スキルが
metadata.openclaw.skillKey を定義している場合は、代わりにそのキーを使用します。ハイフンを含む名前は
引用符で囲みます(JSON5 では引用符付きキーが許可されています)。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.enabled" type="boolean">
false は、バンドル済みまたはインストール済みであってもスキルを無効にします。coding-agent
バンドル済みスキルはオプトインです。true に設定し、claude、
codex、opencode、または別の対応 CLI のいずれかがインストールされ、認証済みであることを確認してください。
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.apiKey" type='string | { source, provider, id }'>
metadata.openclaw.primaryEnv を宣言しているスキル向けの便利フィールドです。
平文文字列または SecretRef をサポートします: { source: "env", provider: "default", id: "VAR_NAME" }。
"skills.entries.<key�����r�"skills.entries.<key�w₫��ܩエージェント許可リスト (agents)
同じマシン/ワークスペースのスキルルートを使いつつ、エージェントごとに 表示されるスキルセットを変えたい場合は、エージェント設定を使用します。
{ 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 を省略したエージェントが継承する共有ベースライン許可リストです。
既定でスキルを制限しない場合は、完全に省略します。
agents.list[].skillsstring[]そのエージェントの明示的な最終スキルセットです。明示的なリストは継承された
既定値を置き換えます。マージはされません。そのエージェントにスキルを公開しない場合は [] に設定します。
ワークショップ (skills.workshop)
skills.workshop.autonomous.enabledbooleandefault: falsetrue の場合、エージェントは成功したターンの後、永続的な会話
シグナルから保留中の提案を作成できます。ユーザーが促したスキル作成は、
この設定に関係なく常に Skill Workshop を経由します。
skills.workshop.approvalPolicy"pending" | "auto"default: "pending"pending は、エージェントが開始する適用、拒否、隔離の前にオペレーター承認を要求します。auto は、それらのアクションを承認なしで許可します。
skills.workshop.allowSymlinkTargetWritesbooleandefault: falseSkill Workshop の適用で、実体のターゲットが skills.load.allowSymlinkTargets によってすでに信頼されているワークスペースのスキルシンボリックリンクをたどって書き込めるようにします。生成された提案の適用で、その共有スキルルートを変更する必要がある場合を除き、これは無効のままにしてください。
skills.workshop.maxPendingnumberdefault: 50ワークスペースごとに保持される保留中および隔離済みの提案の最大数。
skills.workshop.maxSkillBytesnumberdefault: 40000提案本文の最大サイズ(バイト単位)。提案の説明は、検出と一覧出力に表示されるため、160 バイトに厳しく制限されます。
シンボリックリンクされたスキルルート
デフォルトでは、ワークスペース、プロジェクトエージェント、追加ディレクトリ、バンドルされたスキルルートは包含境界です。<workspace>/skills 配下のシンボリックリンクされたスキルフォルダーがルート外に解決される場合、ログメッセージとともにスキップされます。
意図的なシンボリックリンク構成を許可するには、信頼するターゲットを宣言します。
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}この設定では、<workspace>/skills/manager -> ~/Projects/manager/skills は realpath 解決後に受け入れられます。extraDirs は兄弟リポジトリを直接スキャンします。allowSymlinkTargets は既存の構成のためにシンボリックリンクされたパスを保持します。
Skill Workshop の適用は、デフォルトではこれらのシンボリックリンクをたどって書き込みません。すでに信頼されているシンボリックリンクターゲット配下のスキルを Workshop の適用で変更できるようにするには、別途オプトインします。
{ skills: { load: { allowSymlinkTargets: ["~/Projects/manager/skills"], }, workshop: { allowSymlinkTargetWrites: true, }, },}管理対象の ~/.openclaw/skills ディレクトリと個人用の ~/.agents/skills ディレクトリでは、スキルディレクトリのシンボリックリンクがすでに受け入れられます(スキルごとの SKILL.md 包含は引き続き適用されます)。
サンドボックス化されたスキルと環境変数
Docker サンドボックスにシークレットを渡すには、次を使用します。
{ agents: { defaults: { sandbox: { docker: { env: { GEMINI_API_KEY: "your-key-here" }, }, }, }, },}読み込み順序のリマインダー
workspace/skills (highest)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsbundled skillsskills.load.extraDirs (lowest)スキルと設定への変更は、ウォッチャーが有効な場合は次の新しいセッションで、またはウォッチャーが変更を検出した場合は次のエージェントターンで有効になります。