Skills
スキルワークショップ
スキルワークショップは、ワークスペースのスキルを作成および更新するための OpenClaw の管理された経路です。
エージェントとオペレーターは、この経路でアクティブな SKILL.md ファイルを直接書きません。まず proposal を作成します。proposal は、提案されたスキル内容、対象バインディング、スキャナー状態、ハッシュ、サポートファイルのメタデータ、ロールバックメタデータを含む保留中のドラフトです。適用された場合にのみ、ライブスキルになります。
スキルワークショップが書き込むのはワークスペーススキルのみです。バンドル、Plugin、ClawHub、追加ルート、管理対象、個人エージェント、またはシステムスキルは変更しません。
仕組み
- まず proposal: 生成されたスキル内容は
SKILL.mdではなくPROPOSAL.mdとして保存されます。 - apply だけがライブ書き込み: create、update、revise はアクティブなスキルを変更しません。
- ワークスペーススコープ: 作成対象はワークスペースの
skills/ルートです。更新は、書き込み可能なワークスペーススキルに対してのみ許可されます。 - 上書きなし: 対象スキルがすでに存在する場合、create は失敗します。
- ハッシュ束縛: update proposal は現在の対象ハッシュに束縛され、apply の前にライブスキルが変更されると stale になります。
- スキャナーゲート: apply は書き込み前にスキャンを再実行します。
- 復旧可能: apply はライブファイルを変更する前にロールバックメタデータを書き込みます。
- 一貫したサーフェス: チャット、CLI、Gateway はすべて同じスキルワークショップサービスを呼び出します。
ライフサイクル
create/update -> pendingrevise -> pendingapply -> appliedreject -> rejectedquarantine -> quarantinedtarget change -> stalepending の proposal のみが、改訂、適用、却下、または隔離できます。
チャット
必要なスキルをエージェントに依頼します。エージェントは skill_workshop を呼び出し、proposal id を返します。
作成:
Make a skill called morning-catchup that runs my Monday inbox routine.既存のワークスペーススキルを更新:
Update trip-planning to also check seat maps before booking.保留中の proposal を反復:
Show me the morning-catchup proposal.Revise it to also flag anything marked urgent.Apply the morning-catchup proposal.デフォルトでは、エージェント起点の apply、reject、quarantine は実行前に承認プロンプトを表示します。信頼できる環境でプロンプトをスキップするには、skills.workshop.approvalPolicy を "auto" に設定します。
CLI
新しいスキル proposal を作成します:
openclaw skills workshop propose-create \ --name morning-catchup \ --description "Daily inbox catch-up: triage, archive, surface, draft, plan" \ --proposal ./PROPOSAL.md既存のワークスペーススキルに対する更新 proposal を作成します:
openclaw skills workshop propose-update trip-planning --proposal ./PROPOSAL.md一覧表示と確認:
openclaw skills workshop listopenclaw skills workshop inspect <proposal-id>承認前に改訂:
openclaw skills workshop revise <proposal-id> --proposal ./PROPOSAL.mdproposal を完了します:
openclaw skills workshop apply <proposal-id>openclaw skills workshop reject <proposal-id> --reason "Duplicate"openclaw skills workshop quarantine <proposal-id> --reason "Needs security review"Proposal の内容
保留中、proposal は proposal 専用 frontmatter を持つ PROPOSAL.md として保存されます:
---name: "morning-catchup"description: "Daily inbox catch-up: triage, archive, surface, draft, plan"status: proposalversion: "v1"date: "2026-05-30T00:00:00.000Z"---apply 時に、スキルワークショップはアクティブな SKILL.md を書き込み、proposal 専用フィールドである status、proposal version、proposal date を削除します。
サポートファイル
提案されたスキルが PROPOSAL.md の横にファイルを必要とする場合は、--proposal-dir を使用します:
openclaw skills workshop propose-create \ --name weekly-update \ --description "Friday wrap-up: stats, highlights, next week's top three" \ --proposal-dir ./weekly-update-proposalディレクトリには PROPOSAL.md が含まれている必要があります。サポートファイルは次の配下にある必要があります:
assets/examples/references/scripts/templates/
スキルワークショップは proposal とともにサポートファイルをスキャン、ハッシュ化、保存します。これらは apply 時にのみ、ライブ SKILL.md の横に書き込まれます。
拒否されるサポートファイルパスには、絶対パス、隠しパスセグメント、パストラバーサル、重複するパス、proposal ディレクトリ由来の実行可能ファイル、非 UTF-8 テキスト、null バイト、標準サポートフォルダー外のファイルが含まれます。
エージェントツール
モデルは skill_workshop を使用します:
action: create | update | revise | list | inspect | apply | reject | quarantineエージェントは、生成されるスキル作業に skill_workshop を使用する必要があります。write、edit、exec、シェルコマンド、または直接のファイルシステム操作で proposal ファイルを作成または変更してはいけません。
承認と自律性
{ skills: { workshop: { autonomous: { enabled: false, }, allowSymlinkTargetWrites: false, approvalPolicy: "pending", maxPending: 50, maxSkillBytes: 40000, }, },}autonomous.enabled: 成功したターン後に、永続的な会話シグナルから OpenClaw が保留中の proposal を作成できるようにします。デフォルト:false。allowSymlinkTargetWrites: 実際の対象がskills.load.allowSymlinkTargetsに listed されているワークスペーススキルのシンボリックリンクを通じて、apply が書き込めるようにします。デフォルト:false。approvalPolicy: "pending": エージェント起点のapply、reject、またはquarantineの前に承認プロンプトを要求します。approvalPolicy: "auto": その承認プロンプトをスキップします。エージェントは引き続きアクションを呼び出す必要があります。maxPending: ワークスペースごとの保留中および隔離済み proposal 数を制限します。maxSkillBytes: proposal 本文サイズを制限します。デフォルト:40000。
Proposal の説明は常に 160 バイトに制限されます。
Gateway メソッド
skills.proposals.listskills.proposals.inspectskills.proposals.createskills.proposals.updateskills.proposals.reviseskills.proposals.applyskills.proposals.rejectskills.proposals.quarantine読み取り専用メソッドには operator.read が必要です。変更メソッドには operator.admin が必要です。
ストレージ
<OPENCLAW_STATE_DIR>/skill-workshop/ proposals.json proposals/<proposal-id>/ proposal.json PROPOSAL.md rollback.json assets/ examples/ references/ scripts/ templates/デフォルトの状態ディレクトリ: ~/.openclaw。
proposal.json: 正規の proposal レコード。proposals.json: proposal フォルダーから再構築可能な高速一覧インデックス。PROPOSAL.md: 保留中のスキル proposal。rollback.json: apply がライブファイルを変更する前に書き込む復旧メタデータ。
制限
- 説明: 160 バイト。
- Proposal 本文:
skills.workshop.maxSkillBytes(デフォルト 40,000)。 - サポートファイル: proposal ごとに 64 個。
- サポートファイルサイズ: 各 256 KB、合計 2 MB。
- 保留中および隔離済み proposal: ワークスペースごとに
skills.workshop.maxPending(デフォルト 50)。
トラブルシューティング
| 問題 | 解決方法 |
|---|---|
Skill proposal description is too large |
description を 160 バイト以下に短縮します。 |
Skill proposal content is too large |
proposal 本文を短縮するか、skills.workshop.maxSkillBytes を引き上げます。 |
Target skill changed after proposal creation |
現在の対象に対して proposal を改訂するか、新しい proposal を作成します。 |
Proposal scan failed |
スキャナーの検出事項を確認してから、proposal を改訂または隔離します。 |
untrusted symlink target |
意図的な共有スキルルートに対してのみ、skills.load.allowSymlinkTargets を設定し、skills.workshop.allowSymlinkTargetWrites を有効にします。 |
Support file paths must be under one of... |
サポートファイルを assets/、examples/、references/、scripts/、または templates/ の配下に移動します。 |
| Proposal が一覧に表示されない | 選択された --agent ワークスペースと OPENCLAW_STATE_DIR を確認します。 |
エージェントが skill_workshop を呼び出せない |
アクティブなツールポリシーと実行モードを確認します。coding にはこのツールが含まれます。制限的な tools.allow ポリシーでは明示的に listed する必要があり、サンドボックス実行では通常のホスト側エージェントセッションまたは CLI を使用する必要があります。 |
関連
- 読み込み順序、優先順位、可視性については Skills
- 手書きの
SKILL.mdの基本については スキルの作成 - 完全な
skills.workshopschema については Skills 設定 openclaw skillsコマンドについては Skills CLI