OpenClaw Skill Workshop 教程
我让小龙虾帮我写一个技能,作用是调用内置工具video-generation生成视频,然后它给我扔了一个 proposal_id(shiping-20260623-76c37e7bde) 回来。

我说,那你倒是写啊。
小龙虾说,写了啊,你看一眼,觉得行我就写进去。
我说,那你现在写的是假的?
小龙虾说,不是假的,是提案。提案你看过、说行,我才写成正式的 SKILL.md。
我说,那你直接写成真的不行吗?
小龙虾说,不行,这是 Skill Workshop 的规矩,提案先行,审批后写。
我当时就愣了一下。但转念一想,这个设计还挺有意思的。
今天就聊聊 OpenClaw 的这个 Skill Workshop,官方叫「技能工坊」。
这玩意到底是干什么的
Skill Workshop 是 OpenClaw 的技能提案审核系统。
以前的流程是,你说「帮我写个技能」,Agent 直接写 SKILL.md,写了就是生效。你都不知道它写了啥,更别说审一下了。
Skill Workshop 改成了这样。
Agent 先生成提案,存成 PROPOSAL.md,你看过觉得没问题,点一下「使用」,它才真正写成 SKILL.md。

官方文档的原话是这么说的
Agents and operators do not write active
SKILL.mdfiles directly through this path. They create a proposal first.
不是不让写,是不能直接写。必须走提案。
提案里包含了技能内容、目标绑定、哈希校验、支持文件元数据,还有回滚元数据。它不是一个简单的文本文件,而是一个带有完整安全信息的「技能候选包」。
只有你调用 apply 之后,它才会变成真正的技能。

而且 Skill Workshop 只写 workspace skills,不动 bundled、plugin、ClawHub 或者系统内置的 skill。
提案的一生
提案的生命周期其实很简单,一共就五种状态:
create → pending(待审批)revise → pending(修订后还是待审批)apply → applied(已生效)reject → rejected(已拒绝)quarantine → quarantined(已隔离)target change → stale(过期)

只有 pending 状态的提案才能被操作。你要么通过它,要么拒绝它,要么隔离它。
如果目标 skill 在提案创建后被改了,提案就会变成 stale 状态,需要重新创建或修订。
怎么用
官方文档给了三种玩法,聊天里用、CLI 用、带文件打包用。
在聊天里让 Agent 帮你写
这是最常用的方式,也是我现在一直在用的。
你直接跟 Agent 说一句。
“帮我写个技能叫 morning-catchup,作用是把我的周一收件箱整理一下。”
Agent 会调 skill_workshop 工具,生成一个提案,返回给你一个 proposal_id。
你想改一下。
“把 morning-catchup 改一下,顺便把标记为紧急的邮件也提出来。”
Agent 会调 revise 更新提案。
你看过觉得行了通过了。
Agent 就调 apply,提案变成真的 SKILL.md。
默认情况下,Agent 要调 apply、reject、quarantine 之前,都会先弹个审批提示,让你确认一下。不是偷摸就写进去了。
用 CLI 操作
如果你更喜欢敲命令,官方也给了完整的 CLI:
# 创建新提案openclaw skills workshop propose-create \ --name morning-catchup \ --description "Daily inbox catch-up: triage, archive, surface, draft, plan" \ --proposal ./PROPOSAL.md# 更新已有技能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# 通过openclaw skills workshop apply <proposal-id># 拒绝openclaw skills workshop reject <proposal-id> --reason "已经不需要了"# 隔离openclaw skills workshop quarantine <proposal-id> --reason "需要安全审查"
带支持文件打包
如果技能需要脚本、模板这些附件,用 –proposal-dir:
openclaw skills workshop propose-create \ --name weekly-update \ --description "周五总结,数据统计、亮点回顾、下周计划" \ --proposal-dir ./weekly-update-proposal
目录结构必须是这样
weekly-update-proposal/├── PROPOSAL.md├── assets/├── examples/├── references/├── scripts/└── templates/
支持文件只能放在这五个目录下面。绝对路径、隐藏路径、可执行文件、非 UTF-8 编码这些都是不允许的。
每个提案最多带 64 个支持文件,每个文件最大 256KB,总共不超过 2MB。
提案内容长什么样
一个 pending 状态的提案,存成 PROPOSAL.md,头部是这样的
---name: "shiping"description: "调用内置video_generate工具生成视频,根据用户需求确定参数并执行生成"status: proposalversion: "v1"date: "2026-06-23T20:04:36.574Z"---
注意 status 是 proposal,还有 version 和 date。当你调 apply 的时候,Skill Workshop 会把这些提案专用字段去掉,写成标准的 SKILL.md。
安全机制
有三层防护。
第一层,扫描。apply 之前会重新跑扫描,检查文件哈希、恶意模式、文件类型白名单。不是创建提案的时候扫一次就完了,而是每次 apply 之前都要扫。
第二层,隔离。有安全疑虑的提案可以放进隔离区,隔离区的文件不会被引用和执行。
第三层,回滚。apply 之前自动保存 rollback 元数据,出问题了可以恢复原状。每次变更都可审计追踪。
怎么配置才能用
Skill Workshop 默认就是启用的,你不需要额外安装什么插件,也不需要做任何配置就能使用。
你也可以自己修改配置文件的skills.workshop 项。
{ skills: { workshop: { autonomous: { enabled: false, }, allowSymlinkTargetWrites: false, approvalPolicy: "pending", maxPending: 50, maxSkillBytes: 40000, }, },}
每个配置项什么意思。
autonomous.enabled默认 false。设为 true 之后,Agent 可以在成功的对话轮次之后,根据对话信号自动创建 pending 提案。注意,用户主动要求创建技能不受这个开关影响,你让 Agent 写技能,它永远走 Skill Workshop。
allowSymlinkTargetWrites默认 false。控制 apply 的时候是否允许通过 symlink 写入到技能目录之外的目标路径。只有你已经信任了某个路径(配了 skills.load.allowSymlinkTargets),才考虑开这个。新手不用管。
approvalPolicy这是最常用的配置。默认是 pending,意思是 Agent 要调 apply、reject、quarantine 之前,需要你的审批确认。如果你在可信环境里,可以改成 auto,跳过审批提示,但 Agent 仍然需要调用 action,只是不弹窗问你了。
Set skills.workshop.approvalPolicy to "auto" to skip the prompt for trusted environments.
我建议先别改,就用默认的 pending。等用熟了,确定没有安全风险了,再考虑 auto。
maxPending每个 workspace 最多保留多少个 pending 和 quarantined 的提案。默认 50。
maxSkillBytes提案正文的最大字节数,默认 40000。description 字段上限是 160 字节,因为 description 会出现在发现和列表输出里,太长不合适。
存储位置
所有提案数据存在这里
~/.openclaw/skill-workshop/ proposals.json # 快速索引 proposals/<proposal-id>/ proposal.json # 提案记录 PROPOSAL.md # 提案正文 rollback.json # 回滚元数据 assets/ # 支持文件 examples/ references/ scripts/ templates/
proposals.json 是快速列表索引,可以从各个提案文件夹重建。
rollback.json 是 apply 之前自动写的恢复数据。
总结
Skill Workshop 不是什么花里胡哨的东西,它就是一个提案审核流程。设计思路其实很简单
不让 Agent 直接写生效的 SKILL.md,而是先生成提案,你看过确认了,才写进去。
以上,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章,我们,下次再见。
文章内容基于OpenClaw版本2026.6.9
夜雨聆风