SKILL.md file に変換できます。
- Memory は、事実、好み、entity、過去のコンテキストを保存する。
- Skills は、エージェントが今後のタスクで従うべき再利用可能な手順を保存する。
- Skill Workshop は、有用なターンを永続的な workspace skill に変える橋渡しであり、安全確認と任意の承認を備える。
- 外部ソースの animated GIF asset をどう検証するか
- screenshot asset をどう置き換え、寸法を確認するか
- repo 固有の QA シナリオをどう実行するか
- 繰り返し発生する provider 障害をどうデバッグするか
- 古くなったローカル workflow note をどう修復するか
- 「ユーザーは青が好き」のような事実
- 広範な自伝的 memory
- 生のトランスクリプト保存
- シークレット、認証情報、または隠し prompt text
- 繰り返されない一度きりの指示
デフォルト状態
バンドル済み Plugin は 実験的 であり、plugins.entries.skill-workshop で
明示的に有効化されない限り デフォルトで無効 です。
Plugin manifest は enabledByDefault: true を設定していません。Plugin config schema 内の
enabled: true デフォルトは、その Plugin エントリーがすでに選択・ロードされた後にのみ適用されます。
実験的であることの意味:
- この Plugin はオプトインのテストと dogfooding には十分サポートされている
- proposal ストレージ、reviewer しきい値、capture ヒューリスティクスは進化し得る
- 推奨される開始モードは pending approval
- auto apply は、共有環境や hostile な入力が多い環境ではなく、信頼できる個人/workspace 構成向け
有効化
最小限で安全な config:skill_workshopツールが利用可能になる- 明示的な再利用可能修正が pending proposal としてキューされる
- しきい値ベースの reviewer pass が skill 更新を提案できる
- pending proposal が適用されるまで skill file は書き込まれない
approvalPolicy: "auto" でも同じ scanner と quarantine 経路を使います。
critical な finding がある proposal は適用しません。
設定
| Key | Default | Range / values | Meaning |
|---|---|---|---|
enabled | true | boolean | Plugin エントリーがロードされた後に Plugin を有効化します。 |
autoCapture | true | boolean | 成功したエージェントターン後の capture/review を有効化します。 |
approvalPolicy | "pending" | "pending", "auto" | proposal をキューするか、安全な proposal を自動書き込みします。 |
reviewMode | "hybrid" | "off", "heuristic", "llm", "hybrid" | 明示的修正 capture、LLM reviewer、両方、またはどちらも使わないかを選びます。 |
reviewInterval | 15 | 1..200 | この回数の成功ターンごとに reviewer を実行します。 |
reviewMinToolCalls | 8 | 1..500 | 観測されたツール呼び出しがこの回数に達したら reviewer を実行します。 |
reviewTimeoutMs | 45000 | 5000..180000 | 埋め込み reviewer 実行のタイムアウト。 |
maxPending | 50 | 1..200 | workspace ごとに保持する pending/quarantined proposal の最大数。 |
maxSkillBytes | 40000 | 1024..200000 | 生成される skill/support file の最大サイズ。 |
capture 経路
Skill Workshop には 3 つの capture 経路があります。ツール提案
再利用可能な手順を見つけたときや、ユーザーが skill の保存/更新を求めたときに、 モデルはskill_workshop を直接呼び出せます。
これは最も明示的な経路であり、autoCapture: false でも動作します。
ヒューリスティック capture
autoCapture が有効で、reviewMode が heuristic または hybrid の場合、
Plugin は成功ターンをスキャンして、明示的なユーザー修正フレーズを探します。
next timefrom now onremember tomake sure toalways ... use/check/verify/record/save/preferprefer ... when/for/instead/usewhen asked
- animated GIF タスク ->
animated-gif-workflow - screenshot または asset タスク ->
screenshot-asset-workflow - QA または scenario タスク ->
qa-scenario-workflow - GitHub PR タスク ->
github-pr-workflow - fallback ->
learned-workflows
LLM reviewer
autoCapture が有効で、reviewMode が llm または hybrid の場合、Plugin
はしきい値到達後にコンパクトな埋め込み reviewer を実行します。
reviewer が受け取るもの:
- 最近のトランスクリプト text(最後の 12,000 文字までに制限)
- 最大 12 個の既存 workspace Skills
- 各既存 skill から最大 2,000 文字
- JSON-only 指示
disableTools: truetoolsAllow: []disableMessageTool: true
{ "action": "none" } または 1 件の proposal を返します。action フィールドは create, append, replace のいずれかです。関連する既存 skill がある場合は append/replace を優先し、適合する既存 skill がない場合にのみ create を使ってください。
create の例:
append は section + body を追加します。replace は、指定された skill 内で oldText を newText に置き換えます。
proposal ライフサイクル
生成された各更新は、次を持つ proposal になります。idcreatedAtupdatedAtworkspaceDir- 任意の
agentId - 任意の
sessionId skillNametitlereasonsource:tool,agent_end, またはreviewerstatuschange- 任意の
scanFindings - 任意の
quarantineReason
pending- 承認待ちapplied-<workspace>/skillsに書き込み済みrejected- operator/model によって拒否済みquarantined- critical scanner finding によりブロック済み
maxPending まで保持します。
ツールリファレンス
この Plugin は 1 つのエージェントツールを登録します。status
アクティブ workspace の proposal 数を状態ごとに数えます。
list_pending
pending proposal を一覧表示します。
status 値:
pendingappliedrejectedquarantined
list_quarantine
quarantined proposal を一覧表示します。
skill-workshop: quarantined <skill> が出ている場合は、これを使ってください。
inspect
id で proposal を取得します。
suggest
proposal を作成します。approvalPolicy: "pending"(デフォルト)では、これは書き込みではなくキューされます。
安全な書き込みを強制する(apply: true)
安全な書き込みを強制する(apply: true)
auto policy 下で pending を強制する(apply: false)
auto policy 下で pending を強制する(apply: false)
名前付き section に追記する
名前付き section に追記する
完全一致テキストを置き換える
完全一致テキストを置き換える
apply
pending proposal を適用します。
apply は quarantined proposal を拒否します。
reject
proposal を rejected としてマークします。
write_support_file
既存または提案中の skill ディレクトリ内に supporting file を書き込みます。
許可されるトップレベル support ディレクトリ:
references/templates/scripts/assets/
maxSkillBytes によるバイト制限があり、スキャンされ、atomic に書き込まれます。
skill 書き込み
Skill Workshop は次の場所にのみ書き込みます。- 小文字化される
[a-z0-9_-]以外の連続は-になる- 先頭/末尾の非英数字は削除される
- 最大長は 80 文字
- 最終名は
[a-z0-9][a-z0-9_-]{1,79}に一致しなければならない
create の場合:
- skill が存在しなければ、新しい
SKILL.mdを書き込む - すでに存在する場合は、body を
## Workflowに追記する
append の場合:
- skill が存在すれば、要求された section に追記する
- 存在しなければ、最小限の skill を作成してから追記する
replace の場合:
- skill はすでに存在していなければならない
oldTextは完全一致で存在していなければならない- 最初の完全一致のみが置き換えられる
安全モデル
Skill Workshop には、生成されたSKILL.md 内容と support
file に対する安全 scanner があります。
critical finding は proposal を quarantine します。
| Rule id | 次のような内容をブロックする… |
|---|---|
prompt-injection-ignore-instructions | prior/higher instructions を無視するようエージェントに指示する |
prompt-injection-system | system prompt、developer message、または hidden instruction に言及する |
prompt-injection-tool | tool permission/approval の回避を促す |
shell-pipe-to-shell | curl/wget を sh, bash, zsh に pipe したものを含む |
secret-exfiltration | env/process env データをネットワーク越しに送信しているように見える |
| Rule id | 次に対して警告する… |
|---|---|
destructive-delete | 広範な rm -rf 形式コマンド |
unsafe-permissions | chmod 777 形式の権限使用 |
scanFindingsを保持するquarantineReasonを保持するlist_quarantineに表示されるapply経由では適用できない
prompt ガイダンス
有効な場合、Skill Workshop は短い prompt section を注入し、永続的な手続き型 memory のためにskill_workshop を使うようエージェントに伝えます。
このガイダンスが強調するもの:
- 事実/好みではなく手順
- ユーザー修正
- 明白ではない成功手順
- 繰り返し起こる落とし穴
- append/replace による古い/薄い/誤った skill の修復
- 長いツールループや難しい修正の後に再利用可能手順を保存すること
- 短い命令形の skill text
- トランスクリプト dump をしないこと
approvalPolicy に応じて変わります。
- pending mode: 提案をキューし、明示的な承認後にのみ適用する
- auto mode: 明確に再利用可能な場合に安全な workspace-skill 更新を適用する
コストとランタイム挙動
ヒューリスティック capture はモデルを呼び出しません。 LLM review は、アクティブ/デフォルト agent model 上で埋め込み実行を使います。 しきい値ベースであるため、デフォルトでは毎ターン実行されません。 reviewer は:- 利用可能な場合、同じ設定済み provider/model context を使用する
- runtime agent デフォルトにフォールバックする
reviewTimeoutMsを持つ- 軽量な bootstrap context を使用する
- ツールを持たない
- 直接は何も書き込まない
- 通常の scanner と approval/quarantine 経路を通る proposal しか出力できない
運用パターン
ユーザーが次のように言うときに Skill Workshop を使ってください。- “next time, do X”
- “from now on, prefer Y”
- “make sure to verify Z”
- “save this as a workflow”
- “this took a while; remember the process”
- “update the local skill for this”
- transcript 形になっている
- 命令形ではない
- ノイズとなる一度きりの詳細を含んでいる
- 次のエージェントに何をすべきかを伝えていない
デバッグ
Plugin がロードされているか確認する:| Symptom | Likely cause | Check |
|---|---|---|
| Tool が利用できない | Plugin エントリーが有効でない | plugins.entries.skill-workshop.enabled と openclaw plugins list |
| 自動 proposal が現れない | autoCapture: false, reviewMode: "off", またはしきい値未達 | config, proposal status, Gateway logs |
| ヒューリスティックが capture しなかった | ユーザー文言が修正パターンに一致しなかった | 明示的な skill_workshop.suggest を使うか LLM reviewer を有効化 |
| reviewer が proposal を作成しなかった | reviewer が none、不正 JSON、またはタイムアウトを返した | Gateway logs, reviewTimeoutMs, しきい値 |
| proposal が適用されない | approvalPolicy: "pending" | list_pending, その後 apply |
| proposal が pending から消えた | 重複 proposal の再利用、max pending による削除、または applied/rejected/quarantined 済み | status, status filter 付き list_pending, list_quarantine |
| skill file は存在するが model が見逃す | skill snapshot 未更新、または skill gating がそれを除外している | openclaw skills status と workspace skill eligibility |
skill-workshop: queued <skill>skill-workshop: applied <skill>skill-workshop: quarantined <skill>skill-workshop: heuristic capture skipped: ...skill-workshop: reviewer skipped: ...skill-workshop: reviewer found no update
QA シナリオ
repo ベース QA シナリオ:qa/scenarios/plugins/skill-workshop-animated-gif-autocreate.mdqa/scenarios/plugins/skill-workshop-pending-approval.mdqa/scenarios/plugins/skill-workshop-reviewer-autonomous.md
reviewMode: "llm" を有効にし、埋め込み reviewer pass を検証するためです。
auto apply を有効にしないほうがよい場合
次の場合はapprovalPolicy: "auto" を避けてください。
- workspace に機密性の高い手順が含まれる
- エージェントが信頼できない入力を処理している
- skills が広いチームで共有されている
- まだ prompt や scanner rule を調整中である
- モデルが hostile な web/email content を頻繁に扱う