Install
openclaw skills install @muippt/mu-skill-creatoropenclaw skills install @muippt/mu-skill-creatorname: mu-skill-creator version: 3.7 description: "Skill创建与质量门控,含53项10层审计模型。触发词:创建skill、skill创建、skill审计、质量审计。不适用:skill发布、生态体检(用mu-skill-auditor)" tags: Skill开发,质量门控,发布流程,三层模型,组织规范,工作流 visibility: public
IRON LAW:1改完 Skill 必须立即跑 skill-audit 全绿才算完成,禁止"目测没问题"就交付;2description 只给 Agent 读(触发器),intro 只给人看(Skill市场简介),两者不可混用;3安全扫描未通过禁止 push,人员/组织/薪酬/职级信息禁止进任何 Skill 文件;4IRON LAW 必须是该 Skill 的业务专属约束,禁止只写行数/凭据等通用套话;5行数以效果为第一原则,≤300行是预算上限不是拆分目标——禁止为了让数字好看而拆分,只有"拆分后仍能一次执行不降级"才可以拆,拆完必须验证拆分后指令仍可被完整执行,做不到就保留超行数也不拆(L1-5行数项优先级低于L2-1逻辑闭环/L10-1可验证性)。
Skill 质量劣化有三个系统性失效模式,所有规则都针对它们:
三条共同根因:缺少工程脚手架,不是 Agent 能力不足。每条规则都应可追溯到「哪次事故催生了它」。
| Skill | 职责 | 何时用它 |
|---|---|---|
| mu-skill-auditor | 诊断:六模块体检 + 降本决策 | skill体检/预算/僵尸/description超胖 |
| mu-skill-creator | 创作:新建/优化 Skill 内容 | 要写新 Skill 或改 SKILL.md 正文 |
| mu-skill-shrimp | 发布:Skill市场上架/安装/卸载 | 要发布、安装、更新 Skill |
| mu-skill-hunter | 搜索:外部 GitHub/ClawHub 发现 | 要找外部没安装过的 Skill |
| mu-self-tuning | 策略:整体 token 降本 + 工作区养护 | 要制定降本计划/全局评分 |
三决策解释了「为什么用这个架构」,每条对抗至少一个失效模式:
| 层级 | 内容 | 预算 | 加载时机 |
|---|---|---|---|
| L1 | 触发词 + 使用/跳过条件 | ~100词 | 始终 |
| L2 | 工作流、原则、速查表 | ≤300行 | 激活时 |
| L3 | 详细文档、schema、示例 | 不限 | 按需read |
L1:唯一触发机制,倾向"宁多触发别漏"(漏触发=Skill不存在,误触发可纠正) L2:≤300行(官方建议500,取300留余量),引用仅一级(WHY:超注意力预算→指令被挤出)。⚠️行数是预算上限不是拆分目标,拆分用对刀:效果不减才可拆——需多一次read才能执行=拆分即质量降级。禁止为了单纯让行数好看而拆分;判断标准不是"数字降下来了没",而是"拆完之后 Agent 能不能一次把该做的事做完不降级",做不到就宁可保留超行数(见IRON LAW 5) L3:每主题一文件,超100行加索引
阶段门控 > 线性流程——每个阶段有独立入口/出口条件,未满足不可跳过。WHY:对抗规则遗忘(失效1),门控是结构约束不是"建议"。
审计脚本+清单 > 人工目测——自动化扫描+53项10层逐项确认。WHY:目测=遗漏,脚本=可重复。对抗规则遗忘+规则冲突(失效1+2),跨章节一致性只能靠脚本校验。
分正向(怎么做好)和防御(怎么防坏)两个视角,适用于所有 Skill。每条原则下方标注对应的 AP 反模式。
## 已知局限段(WHY:沉默=误导 | 对应:AP-6的镜像——不只验证"做对了什么"还要声明"做不了什么")适用于所有含循环/迭代/Cron的 Skill。
| 信号 | 规则 |
|---|---|
| 单次迭代0新产出 | stale_count+1 |
| stale_count≥2 | 换结构约束(不是调参数) |
| stale_count≥4 | 上报人类 |
| 单阶段超过15轮或30分钟 | 强制换方向 |
| Cron连续2次失败 | 自动降级(如切备用API) |
| Cron连续4次失败 | 停止+上报人类 |
"换结构不是调参数":当任务在同一框架内反复停滞,决定性收益来自修正环境/结构约束本身,不是在现有框架里更用力调参。
自动触发:新建Skill→完整流程(阶段1→8) | 修改→10层审计模型+行数+AP | 发布前→完整检查+安全扫描 禁止:改完不audit就提交 | 只目测不逐项过Checklist | 用系统自带版
/app/skills/skill-creator/替代本Skill
入口:收到Skill创建/优化需求
操作:
出口:有明确输入输出示例清单≥3条
入口:阶段1完成,且非纯工具封装 操作:黄金案例3+/失败案例5+/有效-无效对比≥1组 出口:有案例清单,或"工具封装型,已跳过"
入口:阶段 1(含1.5)完成
操作:
出口:文件树清单已确认,架构模式已选定
入口:阶段 2 完成
操作:
格式:"做什么功能。触发词:词1、词2、词3。不适用:场景描述(用哪个替代)。"
入口:阶段 3 完成
操作:
## 子Agent最小执行规范(≤30行):必读文件+硬Gate+格式约束+禁止行为## 已知局限,声明什么做不到/什么条件退化(WHY:沉默=误导)当前版本 vX.X,完整历史见 references/CHANGELOG.md)。版本历史是溯源信息,不参与任何生成/路由/决策,占行数=纯浪费注意力预算(WHY:mu-visual-card曾用35行版本历史占615行中的5.7%,迁移后省至1行)出口:wc -l SKILL.md≤300,有Checklist(IRON LAW按需)
frontmatter字段:name(必填,小写+数字+连字符,与目录名一致) | description(必填,≤1024字符,含触发词+不适用+pushy) | compatibility(可选) | metadata(可选)
入口:阶段 4 完成
操作:每主题一文件 | 引用仅一跳(禁A→B→C)(WHY:多跳=token膨胀+遗忘指令) | 底部建索引
出口:所有引用文件存在,SKILL.md有索引
入口:阶段 5 完成
操作:逐条审查指令,确认可yes/no判断。❌"写高质量代码"→✅"lint通过无error"
出口:无主观指令,全部可yes/no判断
入口:阶段 6 完成
操作(详见references/quality-gates.md):写2-3个prompt→evals/evals.json,spawn两组(cleanup=delete,最多4并发),accuracy≥85%。⚠️定性类Skill(写作/面评/引导)豁免量化,改用人工审查(WHY:强行量化=造假断言)
出口:evals.json存在且accuracy≥85%;或标注"已跳过"/"定性类,人工审查"
入口:阶段 6.5 完成(或跳过)
操作(详见references/quality-gates.md):扫禁止词(analyzer/helper/tools/assistant/单独skill/短动词/≤2字) | 中英文触发词5+种 | 测试10+10触发/不触发,accuracy≥85% | 调试:问Agent「什么时候用这个Skill?」——回答不准=description需优化
出口:无禁止词,中英文覆盖,accuracy≥85%
入口:阶段7完成+木老师明确授权发布
⚠️ Confirmation Gate:发布前必须获得木老师明确的"可以发布"指令
完整流程见references/publish-workflow.md:
1.安全扫描(人员/凭证/内网/appkey)→ 2.frontmatter校验→ 3.打包+说明→ 4.push到Skill市场(skill-cli push+--intro)
出口:Skill市场可搜到,安全徽章双绿,简介显示三段式intro
禁止进任何Skill文件:人才标准/组织信息/角色指南/职级定义/人员信息(姓名/MIS/userID)/C4高敏数据 受限系统黑名单(禁止调用API):hr/ehr/mthr/hc/ov/goal/okr/huoshui/bole/talent/hrmdm.example.com + restricted-hr.example.com 用户态数据隔离:本地已安装列表/用户偏好/快照/推荐历史等个性化文件禁止随Skill发布,必须
.skillignore排除+SKILL.md声明"首次使用自动生成"(根因:发布者数据污染下载用户行为) 正确做法:Skill只写"运行时现读"指令(documentId/知识库链接),内容不进Skill。违反=安全泄密+发布拦截
完整说明+修复示例见references/quality-gates.md。每条标注根因事故和对应的设计原则。
| # | 反模式 | 修复 | 根因事故 | 对应原则 |
|---|---|---|---|---|
| 1 | >250行 | 效果优先判断能否拆(拆完仍可一次执行不降级才拆);做不到就不硬拆 | 猎手418行Agent忽略后半段 | §3决策1 |
| 2 | description写宣传语 | description=仅触发条件 | description写"高效便捷"无法触发 | §4正向4 |
| 3 | 阶段无编号/出口 | 加编号+完成定义 | 子Agent跳步无法判进度 | §3决策2 |
| 4 | 多跳引用A→B→C | 仅一跳 | 面评虾3层嵌套Agent遗忘 | §3决策1 |
| 5 | 无完成门控 | 加验证步骤 | audit跑完不确认就交付 | §4正向2 |
| 6 | 不可验证指令 | 改yes/no可判断 | "高质量面评"Agent自认合格 | §4正向4 |
| 7 | 无Confirmation Gate | 改动前加用户确认 | 6/22未等确认自作主张发布 | §4防御6 |
| 8 | 无Pre-Delivery Checklist | 输出前加打勾清单 | 发布后才发现漏安全扫描 | §4防御7 |
| 9 | IRON LAW是套话 | 改专属约束;无风险则删 | 多个Skill写"shebang+行数"被忽略 | §1失效3 |
| 10 | 无AP列表 | 加禁止行为清单 | 新Skill反复犯同类错误 | §4防御5 |
| 11 | 无子Agent执行规范 | 加≤30行最小规范 | 子Agent跳步/自创格式 | §4防御6 |
| 12 | 循环无终止条件 | 加max/超时退出 | 6/17串行CLI无上限超时 | §4防御7+8 |
| 13 | 无数据量限制 | 加limit/截断/分页 | 小雷达91条串行查询超时 | §3决策1 |
| 14 | 冗余重复提示 | 同一指令只写一处 | SKILL.md+references两处写同一规则 | §1失效2 |
| 15 | 大文件无截断 | 加字数/行数上限 | read大文件context溢出 | §3决策1 |
| 16 | SKILL.md留intro | intro只通过push管理 | 修改SKILL.md的intro线上没同步 | §1失效2 |
| 17 | Shell无shebang/set-euo | 加shebang+安全开关 | 脚本静默失败Agent以为成功 | §4防御7 |
| 18 | 重复造轮子 | bundle到scripts/复用 | 多Skill各自实现同一功能改一处漏一处 | §1失效2 |
| 19 | 规则只有MUST没WHY | 附WHY解释意图 | Agent死记禁止令遇边界选错 | §4防御5 |
| 20 | IRON LAW照搬通用模板 | 必须含业务专属约束 | IRON LAW5条套话Agent全忽略 | §1失效3 |
| 21 | frontmatter含真实MIS | 删除metadata块 | 公开Skill暴露发布者MIS | §6安全 |
| 22 | _meta.json含凭据未排除 | .skillignore排除 | 打包含真实appkey | §6安全 |
AP-23~32: 代码质量反模式(eval/exec/异常宽度/调试残留/废弃API/契约不一致/import不匹配/无fallback/路径替换/遍历无上限/.gitignore缺失),详见references/quality-gates.md AP-33: SKILL.md留版本历史——版本历史是溯源信息不是执行指令,占行数挤占注意力预算却无任何生成/路由作用。修复:SKILL.md只留1行版本号+CHANGELOG.md链接,历史详情移到references/CHANGELOG.md。根因:mu-visual-card v12.6版本历史占35行。对应§3决策1(三层模型控制context膨胀) AP-34: Gotchas/踩坑记录堆积膨胀——Gotchas从"反直觉事实速查"退化成"逐条事故日志"(现象→根因→修复完整叙述),条目/行数失控占据L2主文件。它是AP-33的同构兄弟:都把"溯源/调试类信息"堆进主文件,占注意力预算却不参与生成/路由/决策。修复按分层处置(见§5阶段4Gotchas决策树):结论已被IRON LAW/工作流覆盖的直接删(=AP-14冗余);"该怎么做"的操作结论上浮固化进对应阶段;"某模板/环境的实现坑"下沉到references/troubleshooting.md,主文件只留"症状→查阅"索引。判据一句话:常规执行时需读它=上浮,只在改特定东西时才需=下沉,别处已说=删。根因:某开源宣传类Skill,27条Gotchas占389行/全文66%,主文件593行。对应§3决策1(三层模型控制context膨胀)+§1失效3(规则膨胀) 失效模式→AP: 遗忘→3/5/8/17/25 | 冲突→4/14/16/18/27 | 膨胀→1/9/13/15/20/31/33/34 | 跨模式→6/7/10/11/12/19/23/24/26/28/29/30/32
运行:
bash scripts/skill-audit.sh <skill-name>(在 Skill 目录下执行) 支持环境变量SKILL_BASE指定 Skills 根目录(默认从脚本位置自动探测) 完整说明见 references/quality-gates.md
| 层 | 审计目标 | 项数 | 自动 | 覆盖范围 |
|---|---|---|---|---|
| L1 | 文档结构 | 8 | 5 | frontmatter/desc/name/行数/refs索引/版本历史/Gotchas膨胀 |
| L2 | 架构一致性 | 5 | 2 | 逻辑闭环/阶段编号/跨章节/交互/版本号 |
| L3 | 代码质量 | 8 | 6 | API契约/eval/异常/调试残留/废弃API/shebang/硬编码/退化(scripts/+assets/可执行文件) |
| L4 | 跨文件一致性 | 4 | 1 | 模板双源/信息冗余/共享模式/数值一致性 |
| L5 | 文档↔代码对齐 | 3 | 2 | 参数表一致/功能路由完整/参考实现正确性 |
| L6 | 依赖完整性 | 3 | 2 | import↔requirements/技术栈/fallback |
| L7 | 文件卫生 | 6 | 5 | 僵尸/断链/孤儿/用户态/.gitignore/平台产物 |
| L8 | 安全合规 | 3 | 2 | 安全扫描/MIS/凭据 |
| L9 | 健壮性&降级 | 7 | 1 | 降级链/确认门/子Agent/数据量/大文件/路径/遍历 |
| L10 | 内容质量 | 6 | 1 | 可验证性/AP清零/文案/已知局限/停滞/边缘输入 |
| 合计 | 53 | 27 |
逐项清单(🔍=脚本可查,👤=人工判断)
L1文档结构: 🔍L1-1 IRON LAW(frontmatter后,业务专属,≤6条——超6条逐条审核是否铁律级,非铁律下沉到工作流/Gotchas) | 🔍L1-2 desc(单行无emoji+触发词+不适用) | 🔍L1-3 intro(三段式≠desc,tags≥6) | 🔍L1-4 name(小写+连字符=目录名) | 🔍L1-5 行数≤300(脚本只报数字,超标不等于判红——需先按IRON LAW 5评估能否拆分而不降效果,做不到就标注"已评估-保留超行数"视为通过) | 👤L1-6 refs索引完整 | 🔍L1-7 版本历史不入SKILL.md(只留1行版本号+CHANGELOG链接,AP-33) | 🔍L1-8 Gotchas未膨胀(踩坑段###条目≤10且占全文≤40%,超标按分层处置删/上浮/下沉到troubleshooting.md,AP-34;同L1-5为信息告警不直接判红) L2架构一致性: 👤L2-1 逻辑冲突(新旧矛盾/因果闭环/约束可满足性:对同一度量的所有数值约束取数学交集,验证交集非空——如面积上限≤X%和下限≥Y%是否X≥Y;不同约束作用于有交集的集合时组合效果是否可行) | 🔍L2-2 阶段编号+入口/出口+可验证 | 👤L2-3 跨章节(原则↔AP↔事故) | 👤L2-4 交互一致(多模式无矛盾) | 👤L2-5 版本号匹配 L3代码质量(scripts/+assets/可执行文件): 🔍L3-1 API契约(签名↔调用) | 🔍L3-2 无eval/exec | 🔍L3-3 异常宽度(无bare except) | 🔍L3-4 无调试残留 | 🔍L3-5 无废弃API | 🔍L3-6 shebang+set-euo | 👤L3-7 硬编码已参数化 | 👤L3-8 功能退化 L4跨文件一致性: 👤L4-1 模板双源(不双存) | 👤L4-2 信息冗余(清单未被覆盖) | 👤L4-3 共享模式一致(utils用法) | 🔍L4-4 数值一致性(同一语义量的所有引用点——含同文件不同章节——尺寸/字号/坐标/色值/百分比统一;版本迭代后旧章节数值未同步=此项不通过) L5文档↔代码(scripts/+test-output参考实现): 🔍L5-1 参数表一致(SKILL↔CLI) | 🔍L5-2 功能路由完整(均有实现) | 👤L5-3 参考实现正确性(示例代码/模板/SVG语法正确且与文档对齐) L6依赖完整性(scripts/): 🔍L6-1 import↔requirements匹配 | 👤L6-2 技术栈表一致 | 🔍L6-3 可选依赖有fallback L7文件卫生: 🔍L7-1 僵尸文件(refs有引用) | 🔍L7-2 断链(引用均存在) | 👤L7-3 路径孤儿(改名同步) | 👤L7-4 用户态未混入 | 🔍L7-5 .gitignore(scripts/时) | 🔍L7-6 无平台产物 L8安全合规: 🔍L8-1 安全扫描(appkey/MIS/C4/受限系统) | 🔍L8-2 frontmatter无MIS(AP-21) | 🔍L8-3 _meta.json已排除(AP-22) L9健壮性&降级: 👤L9-1 降级链(外部依赖有处理) | 👤L9-2 改动类→Confirm Gate | 👤L9-3 流水线→子Agent规范 | 👤L9-4 数据量限制(AP-13) | 👤L9-5 大文件截断(AP-15) | 🔍L9-6 路径安全(splitext) | 🔍L9-7 遍历上限 L10内容质量: 👤L10-1 可验证性(yes/no) | 🔍L10-2 AP清零(无AP-1~34) | 👤L10-3 文案(无错别字) | 👤L10-4 已知局限 | 👤L10-5 停滞检测(stale_count) | 👤L10-6 边缘输入覆盖(极短/极长/空输入/非预期语言等边界条件是否有处理指引或在已知局限中声明)
| 文件 | 说明 |
|---|---|
| quality-gates.md | AP-1~34完整说明+10层审计模型+Eval+触发词优化 |
| publish-workflow.md | 组织四步发布(安全→校验→打包→push→验证) |
| collaboration-guide.md | 推荐联动(mu-dev-workflow+mu-skill-shrimp) |