メインコンテンツへスキップ
スキルワークショップは、ワークスペースのスキルを作成および更新するための 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 -> pending
revise        -> pending
apply         -> applied
reject        -> rejected
quarantine    -> quarantined
target change -> stale
pending の 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.
デフォルトでは、エージェント起点の applyrejectquarantine は実行前に承認プロンプトを表示します。信頼できる環境でプロンプトをスキップするには、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 list
openclaw skills workshop inspect <proposal-id>
承認前に改訂:
openclaw skills workshop revise <proposal-id> --proposal ./PROPOSAL.md
proposal を完了します:
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: proposal
version: "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 を使用する必要があります。writeeditexec、シェルコマンド、または直接のファイルシステム操作で proposal ファイルを作成または変更してはいけません。
skill_workshop は組み込みエージェントツールであり、tools.profile: "coding" に含まれています。より厳しいポリシーで隠されている場合は、アクティブな tools.allow リストに skill_workshop を追加するか、明示的な tools.allow のない profile をスコープが使用している場合は tools.alsoAllow: ["skill_workshop"] を使用します。サンドボックス実行ではホスト側のスキルワークショップツールを構築しないため、proposal review actions は通常のホスト側エージェントセッションまたは CLI から実行してください。

承認と自律性

{
  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": エージェント起点の applyreject、または quarantine の前に承認プロンプトを要求します。
  • approvalPolicy: "auto": その承認プロンプトをスキップします。エージェントは引き続きアクションを呼び出す必要があります。
  • maxPending: ワークスペースごとの保留中および隔離済み proposal 数を制限します。
  • maxSkillBytes: proposal 本文サイズを制限します。デフォルト: 40000
Proposal の説明は常に 160 バイトに制限されます。

Gateway メソッド

skills.proposals.list
skills.proposals.inspect
skills.proposals.create
skills.proposals.update
skills.proposals.revise
skills.proposals.apply
skills.proposals.reject
skills.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 largedescription を 160 バイト以下に短縮します。
Skill proposal content is too largeproposal 本文を短縮するか、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.workshop schema については Skills 設定
  • openclaw skills コマンドについては Skills CLI