悠然南山 · 技能锻造师(升级版 Skill Creator)
> 心法一句话:好东西是"总结"出来的,不是"设计"出来的——先跑起来,再让它慢慢长大。
>
> 工具给的是"能力",技能给的是"经验"——AI 知道工具怎么用,却不知道你的业务规矩。技能锻造师,就是把你的规矩教给 AI。
本技能是"创建技能的技能",对标官方 skill-creator 并做四层架构升级。无论使用者是不是程序员,都能用它把一套反复在做的工作流,沉淀成一个能被 AI 自动调用、可评估、可迭代的 Skill。
⛩ 刻骨铁律(不可改变,优先级高于本文档一切其他规则)
> 以下四条刻在骨子里,任何阶段、任何理由都不可绕过。
| # | 铁律 | 操作含义 |
|---|---|---|
| ① | 不知道的就问 | 遇到不确定的需求、模糊的边界、缺失的关键信息——先问,不猜、不自行脑补。宁可多问一句,不可少问一段。 |
| ② | 只改被要求的部分 | 用户要求改 A,就只动 A。A 以外的内容——哪怕看着不顺眼、觉得能"顺手优化"——一律不碰。 |
| ③ | 给验收标准,别给步骤 | 与用户对齐「做完长什么样、怎么判定合格」,而非「我会分几步做」。验收标准由用户定,实现路径由本技能自主选择。 |
| ④ | 没要求但觉得该加的,先问再写 | 发现遗漏或改进空间时,先提出来问用户「要不要加」,确认后才动手写。未被确认的内容,不擅自塞进交付物。 |
为什么这四条不可改变:
- ① 防止"自以为懂"导致返工——猜错了比问慢。
- ② 防止"顺手改"制造意外——用户只验收他要求的部分,多改的每行都是隐患。
- ③ 把"怎么做"的决策权留给本技能,把"做得对不对"的裁判权留给用户——各司其职。
- ④ 防止"我以为好"变成"用户觉得多余"——好意也需先过用户的确认关。
零、何时用 / 何时不用本技能
该用本技能(典型触发):
- 「帮我创建一个 skill / 技能」「写个技能」「做一个 skill」
- 「升级 / 优化某个技能」「对标 skill-creator 做个升级版」
- 「我这套流程老是重复做,能不能做成技能」「把我的工作经验沉淀成 skill」
不该急着做技能(先看 Step 0 的"三问判断"与"三种不该做"):
- 始终生效的规则 → 放全局配置(如 CLAUDE.md / 个人记忆),不必做技能
- 工具能直接搞定 → 直接用工具,不必做技能
- 一次性任务 → 写一段提示词即可,不必做技能
用户真正想要的是「专家 / 专家团」而非技能(plugin.json + agents/ 结构,不是 SKILL.md):
- 立即转用 yrns-expertstructor —— 创建、转化、修改 扣子/WorkBuddy 专家与专家团的元技能
一、四层架构总览
本技能把"创建一个 Skill"重组为四层架构 + 六步流程 + 质量闭环。四层从"为什么"到"如何持续进化"层层递进:
┌── 第一层 哲学篇(Why · 为什么这样做) → references/philosophy.md
│ · OTF + JIT + Bootstrap 三驾马车
│ · 五层抽象金字塔(案例→模式→原则→洞察→哲学)
│ · 四大黄金法则
│ · 工具给能力,技能给经验
│
├── 第二层 设计篇(What · 设计成什么样) → references/design-guide.md
│ · 渐进式披露三层加载
│ · Description 侵略性写法
│ · 自由度分级(高/中/低)
│ · 知识资产四层复用(L0~L3)
│ · 模型 / 脚本分工决策
│ · 技能组合:串联 / 并联 / 循环 + 子智能体
│
├── 第三层 创建篇(How · 怎么动手做) → 本文件「二、核心工作流」
│ Step 0:三问判断"该不该做" → references/decision-guide.md
│ Step 1~6:增强六步流程 → references/evaluation-guide.md(Step5)
│
└── 第四层 进化篇(Evolve · 怎么持续长大) → references/evolution-guide.md
· Bootstrap 五阶演化(自动化程度)
· 技能四阶段成熟度(MVP→补齐→重构→优化)
· OTF 即时总结 + 递归压缩
· 排障与三大反模式 → references/troubleshooting.md
| 层 | 一句话职责 | 详见 |
|---|---|---|
| 哲学篇 | 想清楚"为什么要总结、怎么压缩知识" | references/philosophy.md |
| 设计篇 | 决定"技能长什么样、自由度多高、模型还是脚本" | references/design-guide.md |
| 创建篇 | 落地"先判断该不该做,再六步打造" | 本文件 + references/decision-guide.md、references/evaluation-guide.md |
| 进化篇 | 让技能"用着用着越来越好" | references/evolution-guide.md、references/troubleshooting.md |
二、核心工作流:先判断,再六步打造
Step 0 ⚠️ 三问判断「该不该做技能」(必做前置)
动手前,先过这张表。满足越多,越值得做成技能:
| 三问 | 含义 | 满足? |
|---|---|---|
| ① 是否反复做? | 一次性需求不必做技能 | ☐ |
| ② 是否要求一致性? | 每次结果都要稳定可控才值得固化 | ☐ |
| ③ 流程是否已稳定? | 还在频繁变动,先别急着固化 | ☐ |
再排除"三种不该做技能"的情况(命中任一,改用更轻方案,并向用户说明):
1. 始终生效的规则 → 放全局配置
2. 工具能直接搞定 → 用工具
3. 一次性任务 → 用提示词
产出:一句话结论「该做 / 不该做(及替代方案)」,避免"为做而做"。详细判断法见 references/decision-guide.md。
Step 0.5 🏪 确认发布平台(必做前置)
在决定"该做"之后,立即问用户:
> 这个技能确认发布吗?默认扣子技能商店 + SkillHub 双平台同步发布,并且创建完自动上架扣子技能商店(也可只发 SkillHub / 仅本地自用)
- 双平台同步(默认)+ 自动上架扣子商店 → 在 Step 6 打包后跑一次
scripts/publish_dual.py,同时产出扣子版与 SkillHub 版两份合规副本;随后默认进 Step 7 自动上架扣子技能商店(scripts/coze_store_publish.py自检 + 执行卡 →skill_draftsave → publish → 登记 skill_id / deploy_id),SkillHub 侧用--push推送(见「九、发布平台适配 · 9.0 同步发布总则」与「Step 7」);发布完成后按「十、成长型登记与灵感采集」做登记与灵感采集设置(问发布名/类别/频率/复盘周期 → 跑 setup_growth.py → 建两个定时任务)
为什么默认自动上架:本包做出来的技能本来就是为上架准备的,逐次问"要不要发布"只是增加摩擦;而上架是幂等的同一条链路——已上架过就带原 skill_id 递增版本重发,没上架过就创建草稿。全部动作走平台技能工作台,本地版与两份副本都不被改动;用户明确说"不上架 / 仅本地自用"时才跳过,这就是唯一的关闭开关。
- 只发其中一个平台 → 只跑 coze_adapter.py 或 skillhub_adapter.py,另一个平台不做;发扣子仍走 Step 7 自动上架,发布完成后同样按第十节做登记
- 仅本地自用 → 正常创建本地版本,流程不变,跳过第九节与 Step 7
为什么必须问、为什么默认双平台同步:两个平台的合规要求不同且都是硬限制,但版本号、slug、内容必须一致——分两遍单独调很容易漂移。扣子要求技能根目录含合法 SKILL.md(frontmatter 至少 name / description)、技能目录叶子与 name 一致、图标 512×512 PNG/JPG ≤500KB、不含其他平台专有元数据;SkillHub 有严格的文件类型限制(禁止 LICENSE 文件、禁止二进制文件)、许可证限制(仅允许 MIT-0)、字段限制(删除 WorkBuddy 专有字段)。一次同步生产,两边都不返工。
Step 0.55 🔑 首次发布先做一次发布配置(必做前置,只做一次)
> 本包是要分发给别人使用的:包里不带创建者任何账号、路径或密钥。所以「发布」所需的授权,由
> 使用者本人在第一次发布时提供一次,之后长期复用。完整 SOP 见 references/publish-setup.md。
python3 scripts/publish_setup.py check # 体检:缺什么 / 去哪拿 / 怎么存(不写任何文件)
必须做的三件事:
1. 跑 check,把输出里「需要你完成」的清单逐条问使用者(一次问清,不要每次发布都重复问);
2. 按答复写进使用者自己的配置档(<工作根目录>/.yrns/publish-profile.json;SkillHub 授权另存 .yrns/skillhub-token、虾评 Key 另存 .yrns/xiaping-key,权限 600,脚本不打印内容):
publish_setup.py set --display-name <名> [--copyright <值>] [--prefix <前缀>]、login-guide、save-token、mark-coze、mark-xiaping --account <名> --agent-id <id> --key <key>;
3. 复跑 check 确认缺项归零 → 再进 Step 6 打包与第九节发布。
各侧到底要什么:扣子侧没有 API Key,用的是使用者登录扣子的身份,发布走技能工作台 save → publish;
上架到公开商店另需先过虾评前置(https://xiaping.coze.com,凭证由使用者本人 mark-xiaping 配置,流程见 references/xiaping-prereq.md)+
先申请一次「技能上架资质」+ 填展示信息(名称 ≤20 字 / 描述 ≤200 字 / 封面图 / 分类 / 案例)+ 平台审核——
「发布到我的技能」与「上架到公开商店」是两件事,别混为一谈。SkillHub 侧需要一次 clawhub login(device flow 或 token)。
红线:使用者授权只存他自己的 .yrns/,不得写进技能包、不得写进 SKILL.md/references/scripts、不得随发布产物外发;
虾评/扣子/SkillHub 凭证互不通用,也绝不拿配置档里别人的凭证替当前使用者发布;
包里不预置任何作者署名(版权未设置时用中性 MIT-0,前缀未设置时不加)。
Step 0.7 🎚 级别判定与架构匹配(规划前置,必做)
> 在 Step 0(该不该做)和 Step 0.5(发布平台)之后、Step 1 之前,先判定技能要做到多完整。完整矩阵见 references/skill-levels.md。
判定原则:
- 级别是「匹配」不是「拔高」——简单技能就该简单,不为 Lv1 硬加 references/scripts。
- 缺内容就提醒,不替用户编——某级别要求的案例/示例/领域指标/来源若缺失,主动提醒用户补充。
五级速查表:
| 级别 | 场景特征 | 最低配置 |
|---|---|---|
| Lv1 轻量触发 | 单一动作、命令式 | SKILL.md ≤120 行,无 refs/scripts |
| Lv2 标准知识 | 多步、需知识、纯交付 | SKILL.md + 2–4 refs + 场景骨架 + 来源署名 |
| Lv3 工程工具 | 需脚本/自动化驱动 | Lv2 + scripts + 阶段门控 + SOP图 + FAQ |
| Lv4 产品级 | 发布/维护/可评估 | Lv3 + 内容模板 + evals + 排障 + 角色路由 |
| Lv5 生态型 | 多技能/社区/运行时闭环 | Lv4 + 社区共创 + 运行时闭环 + 个性化层 |
执行:锁定级别 → 按 references/skill-levels.md 矩阵搭脚手架 → 扫描「需用户补充」项,缺失则提醒用户补充(不编造)→ 进入 Step 1。
Step 0.9 🔍 需求洞察(规划前置,必做)
> 用户的"第一句话"几乎不是真实需求。动手前先挖清他真正要什么,否则会精准地做出一个"错误的需求"。完整框架见 references/demand-insight.md。
两条铁律:
- 以平台自身身份坦诚对话——不扮演某个人类角色,不编造、不迎合;不知道就说不知道,被限制的就明说不能答,但绝不说谎。
- 敏感/禁止内容不硬拒——换一种方式提醒用户如何处理("这块我讲不了,但可以说说遇到类似情况通常怎么绕开")。
四层需求推测(必做,即使表达极简):
| 层次 | 挖什么 |
|---|---|
| 1 表层显性 | 用户直接说出的目标/问题 |
| 2 中层暗示 | 从用词/语序/上下文可推测但未明说 |
| 3 深层潜在 | 基于人类行为模式推测,用户自己可能未察觉的动机/恐惧/长期目标 |
| 4 衍生关联 | 核心需求满足后自然延伸的下一步需求 |
另需:定位认知象限(情境1 精准执行 / 2 引导扩展认知 / 3 需外部权威 / 4 共同探索实验,必给理由)+ 扫出潜在阻碍(资源/心理/环境)。
输出:按需给出「需求探索报告」(格式见 references),并让用户在第 8 项行动建议里选 A/B/C/D:
- A 按表面需求直接执行 → 进 Step 1
- B 探索中层/深层需求 → 先确认再进 Step 1
- C 需外部数据/专家验证 → 暂停,提示补充
- D 设计实验/原型共同探索 → 建议先做 MVP(契合 JIT 小步快跑)
> 用户随时说「请总结我的需求」,立即输出精简版「用户核心需求清单」(含建议分工)。
Step 1 捕获意图(用 OTF 思维)
- 用具体例子理解技能用途,至少问清:「用户会说什么话触发它?」「它要支持哪些操作?」「成功长什么样?」
- OTF 思维:不必等"完美理解"再开始,当下就记录初步理解,边做边补。
- 区分「客观可测技能」(可写 evals)与「主观倾向技能」(靠人工评审)。
- 避免一次抛太多问题;先问最关键的 1~2 个,按需追问。
Step 2 规划资产 + 自由度 + 模型/脚本分工
针对每个具体例子,问:「从零做一遍要重写哪些东西?」把可复用的沉淀为资产:
- scripts/:反复重写的代码、需 100% 确定性的操作
- references/:每次都要重新查的 schema / 规则 / 领域知识
- assets/:产出里会用到的模板 / 样例 / 图标
同时为每个子任务做两个标注(详见 references/design-guide.md):
- 自由度:高(纯文本指令)/ 中(带参数伪代码)/ 低(确定性脚本)
- 模型 or 脚本:判断题(语义理解)交模型;执行题(确定性、可复现)交脚本——同一步可两者并存
Step 2.5 总-分-总架构设计(可选但推荐)
设计复杂技能时,用"总-分-总"思维确保各部分协调一致:
- 第一个"总"(整体规划):先想清楚技能整体要做什么——输入什么、输出什么、交付标准是什么;列出技能包含哪些子任务/组件(references/scripts/assets),定义各组件之间的数据流和依赖关系。
- "分"(各组件独立设计):每个 reference/script 独立设计,但基于已确认的整体计划;每个组件知道自己的输入从哪来、输出给谁;基于共享的上下文(如技能的 description 和 frontmatter)工作。
- 第二个"总"(整合与自检):检查各组件输出是否有矛盾(如 reference A 说用 Python 3.10,reference B 说用 Python 3.8);统一格式、语气和命名;做一次质量自检:SKILL.md 是否 ≤ 500 行?description 是否有触发词?frontmatter 是否有
agent_created和license?
详见 references/design-guide.md 第七节。
Step 3 初始化技能(脚手架)
用本技能自带脚本生成标准目录(已随技能打包):
scripts/init_skill.py <skill-name> [--path <输出目录>] [--copyright <版权>] [--prefix <前缀>]
- 省略
--path时按平台落到跨项目可用的技能目录:扣子环境为当前工作目录(即当前工作目录),WorkBuddy 环境为用户级~/.workbuddy/skills/。 - 需要团队共享时,
--path指向共享目录(扣子:工作区内的共享子目录;WorkBuddy:项目的.workbuddy/skills/)。 --copyright默认取使用者自己的发布配置档(publish_setup.py set --copyright <值>),写入 SKILL.md frontmatter 的license字段;未配置时用中性MIT-0。--prefix默认取使用者发布配置档(未配置则不加前缀),自动加在技能名前缀(如前缀my-→my-my-skill);也可传空字符串跳过。- 脚本会生成 SKILL.md 模板与 scripts/references/assets 示例,随后删除用不到的示例文件。
> ⚠️ 重要:在 SKILL.md 的 frontmatter 中必须写 agent_created: true,否则日后无法用工具维护本技能。
Step 4 编辑技能(Why 原则 + 侵略性描述 + 人机协作)
- 写法:通篇用祈使/不定式("要做 X,就 Y"),不要用第二人称"你应该"。面向"另一个 AI"写,只写它不可能知道的事。
- Description 侵略性写法:别写"本技能能做 X",要写"当用户说 A、B、C 时,立即使用本技能"。列触发词,也列反触发示例。详见
references/design-guide.md。 - 每条规则附 Why:解释原因,让 AI 理解意图而非死记 ALWAYS/NEVER。
- 拆分:复杂分支、长篇知识移到
references/,让 SKILL.md 保持精简(≤ 500 行)。 - 人机协作范式:人决策 + 验收,AI 负责写 + 改;技能的"使用说明"尽量让最终使用者自己补,确保贴合真实用法。
Step 5 评估测试(evals + 并行对比 + 自我博弈)
让技能质量"可量化"而非"凭感觉"。详见 references/evaluation-guide.md,模板见 assets/templates/:
evals/
├── evals.json # 测试用例集
├── assertions.json # 机器打分标准
└── grader.md # 自动判分 Agent
- 并行对比:基准(无技能)vs 新技能,看是否真有提升。
- 自我博弈优化:构造对抗用例 → 自动改写 description → 交叉验证(最多约 5 轮)。
Step 6 迭代收敛 + 打包
先按 JIT 收敛标准判断是否"够好了",再打包:
- 修正量指数衰减(每轮降约 40%+)
- 新出现的问题模式连续两轮 = 0
- 跨样本一致性 > 95%
满足后用自带脚本校验并打包:
scripts/quick_validate.py <技能目录> # 快速校验(含 license 检查)
scripts/package_skill.py <技能目录> [--prefix <前缀>] # 校验通过后打包成 zip
package_skill.py的--prefix默认取使用者发布配置档(未配置则不加前缀),zip 文件名格式为{prefix}{skill_name}.zip。
要发布时,一次同步产出双平台版本(详见第九节):
scripts/publish_dual.py <技能目录> # 产出扣子版 + SkillHub 版两份合规副本,并打印推送命令
scripts/publish_dual.py <技能目录> --push # 产出后自动推送 SkillHub(clawhub CLI);扣子侧走技能工作台
scripts/publish_dual.py <技能目录> --push --dry-run # 只预演,不真正发布
打包完直接进 Step 7 自动上架扣子商店(默认动作,不再问用户):
scripts/coze_store_publish.py <技能目录> --coze-dir <扣子副本目录> # 自检 + 产出扣子副本 + 打印上架执行卡
> 不求一步到位:先交付 MVP 跑通,再按"技能四阶段成熟度"迭代(见进化篇)。
Step 7 🚀 自动上架扣子技能商店(默认执行,无需逐次确认)
> 只要 Step 0.5 没选"仅本地自用",这一步就是默认动作。真正的上架由平台技能工作台完成,本包把它固化成"照卡执行"的链路:自检 → 产出副本 → save → publish → 登记。完整 SOP、参数对照与失败兜底见 references/coze-auto-publish.md。
scripts/coze_store_publish.py <技能目录> --coze-dir <扣子副本目录> # 自检 + 产出扣子副本 + 打印上架执行卡
scripts/coze_store_publish.py <技能目录> --json # 同上,输出机器可读执行卡
scripts/coze_store_publish.py <技能目录> --record --skill-id <id> --deploy-id <id> --version X.Y.Z # 上架成功后登记
执行顺序(一步都别跳):
- 虾评前置:上架扣子公开商店前,确认
publish-profile.json里xiaping.review = passed且凭证属于当前使用者本人;未提交就先引导走虾评(https://xiaping.coze.com,见references/xiaping-prereq.md),审核中(pending)则本次不上架公开商店、只发布到「我的技能」。 - 自检 + 产副本:跑第一条命令。出现 ❌(name 非法 / description 过短 / 版本缺失 / 副本目录叶子 ≠ name / root_path 不在工作目录内)先修掉,不要带着阻断项上架。
- 图标:脚本会从
--icon指定、状态记录、包内assets/、icon*.png、同级_assets/、avatars/里找 512×512 ≤500KB 的图标;没找到就用image-gen生成,别跳过(icon_url首次有效保存必填)。
2.5. 展示信息文案:虾评/扣子的「一句话描述」「详细介绍」与 SkillHub 介绍,直接复用references/store-pitch.md对应节(§1/§3/§2)逐字填写,不即兴改写、不添加无实证卖点。 - save:按执行卡参数调
skill_draft action=save。首次省略skill_id(创建草稿并拿到skill_id);已上架过必须带原来的skill_id,且root_path只能是绑定的那个目录(草稿路径不可更换;脚本把绑定值记在.growth/coze_store.json里,会自动提示)。 - publish:紧接着调
skill_draft action=publish,拿到deploy_id才算上架完成。每次 save 之后上一次发布即过期,必须重新 publish。 - 登记:跑
--record,把skill_id/deploy_id/ 版本 / 绑定目录写进<技能>/.growth/coze_store.json(隐藏目录,不进发布包),下次上架直接复用,不靠回忆。 - 回报用户:一句话说清"技能名 + 版本 + 已上架(deploy_id)+ SkillHub 侧状态",不铺过程。
为什么不用本地 zip:扣子商店的发布入口是技能工作台,coze_adapter.py 只产出干净副本与合规校验;本包不伪造上传动作——没拿到 deploy_id 就不说"已上架"。
与 SkillHub 的关系:扣子侧自动上架后,SkillHub 侧由 scripts/publish_dual.py <技能目录> --push 推送(默认一并做);两边版本号必须一致。
三、四大黄金法则(贯穿全程)
- 简洁为王 —— 只写 AI 不可能知道的事,不堆常识。
- 渐进式披露 —— 三层加载:元数据(常驻)→ SKILL.md(触发时)→ references/scripts(按需)。
- 恰当自由度 —— 高/中/低三级,决定用文本、伪代码还是脚本。
- 知其所以然 —— 解释 Why,而非罗列规则。
详细展开见 references/philosophy.md。
四、references 调用索引(按需加载,别一次全读)
| 何时读 | 读哪个 |
|---|---|
| 想讲清"为什么/知识怎么压缩" | references/philosophy.md |
| 设计结构、写 description、定自由度、模型还是脚本、技能怎么组合 | references/design-guide.md |
| 用总-分-总思维设计复杂技能架构 | references/design-guide.md(第七节) |
| Step 0 判断"该不该做技能" | references/decision-guide.md |
| Step 5 搭建评估体系 | references/evaluation-guide.md |
| 技能上线后怎么持续进化 | references/evolution-guide.md |
| 技能不触发/加载失败/常见错误 | references/troubleshooting.md |
| 双平台同步发布(扣子技能商店 + SkillHub)总则与硬约束 | 第九节「9.0 同步发布总则」 |
| 自动上架扣子商店的完整 SOP、skill_draft 参数对照与失败兜底 | references/coze-auto-publish.md |
| 扣子上架前置:虾评(xiaping.coze.com)审核/评估、凭证配置与红线 | references/xiaping-prereq.md |
| 发布/上架填「技能介绍 / 一句话描述 / 详细介绍」时取现成文案(用 vs 不用本技能对比) | references/store-pitch.md |
| 首次发布配置(两侧平台要什么、要用户提供什么、存哪、怎么复用) | references/publish-setup.md |
| 扣子技能商店发布限制与合规适配 | references/coze-store-rules.md |
| SkillHub 上传限制与合规适配 | references/skillhub-rules.md |
| 升级小说/剧本类技能(断句量化、防套娃、去小说化、书名库等 P0/P1/P2 清单) | references/小说技能升级检查清单.md |
| Step 0.7 判定技能级别(Lv1–Lv5)与匹配架构 | references/skill-levels.md |
| Step 0.9 需求洞察(坦诚对话、四层需求推测、认知象限、探索报告) | references/demand-insight.md |
| 第十节 成长型登记与灵感采集(发布名默认规则、灵感库、登记、automation) | references/growth-mechanism.md |
五、scripts / assets 资源说明
scripts/init_skill.py:初始化标准技能脚手架。支持--copyright <版权>(默认取使用者发布配置档,写入 frontmatter 的license字段)和--prefix <前缀>(默认取使用者发布配置档,自动为技能名加前缀)。scripts/版本快照脚本:修改前自动备份——读取当前version,创建.backups/v{version}_{timestamp}/完整目录快照。备份根目录平台自适应(扣子<工作目录>/.skill_backups/,WorkBuddy~/.workbuddy/skill_backups/)。排除__pycache__、.pyc/.pyo、.DS_Store、已有的.backups/。scripts/quick_validate.py:快速校验结构与 frontmatter,并检查license字段是否缺失。scripts/package_skill.py:校验并打包成可分发 zip。支持--prefix <前缀>(默认取使用者发布配置档,zip 文件名使用{prefix}{skill_name}.zip格式)。排除.backups/、.growth/、.yrns/目录与_meta.json(平台发布状态文件,不随包分发)。scripts/publish_setup.py:首次发布配置向导。check体检(SkillHub CLI/授权 + 虾评凭证/前置审核 + 扣子上架资质 + 署名:缺什么、去哪拿);set写入署名/版权/打包前缀;login-guide/save-token处理 SkillHub 授权并持久化;mark-xiaping记虾评账号/agent-id/审核状态并把 Key 存.yrns/xiaping-key(600、不打印);mark-coze记录扣子侧资质状态。配置档落在使用者私有目录<工作根目录>/.yrns/(token 权限 600,不打印、不进包、不随发布产物外发)。详见references/publish-setup.md与references/xiaping-prereq.md。scripts/skillhub_adapter.py:SkillHub 合规适配——自动将本地技能包转换为 SkillHub 可上传版本。删除 LICENSE/二进制文件、删除 WB 专有字段、改license: MIT-0、替换 WB 专有引用。输出到{技能名}_skillhub/目录。scripts/coze_adapter.py:扣子技能商店合规适配——产出扣子可发布的干净副本:剔除隐藏文件、LICENSE、其他平台专有元数据(_meta.json/.clawhubignore/marketplace.json等),检测 null byte 与非白名单类型,校验SKILL.mdfrontmatter(name/description)与目录叶子一致性,并报告包体积。输出到{技能名}_coze/目录,原目录不改。scripts/publish_dual.py:双平台同步发布驱动——一次运行产出两份合规副本(<输出根>/coze/<技能名>/+<输出根>/skillhub/<技能名>/),版本号读自SKILL.md并强制两平台一致;加--push自动调用clawhub publish推送 SkillHub(未登录或未装 CLI 时给出手动命令),扣子侧只打印技能工作台步骤(save → publish)。参数:<技能目录> [--out-root <目录>] [--push] [--dry-run] [--slug <slug>] [--version X.Y.Z] [--changelog "文本"] [--tags latest]。scripts/coze_store_publish.py:扣子商店自动上架执行器——上架自检(入口文件 / name 与目录叶子一致 / description / version / 图标规格 / 体积)+ 调coze_adapter.py产出扣子副本 + 打印「上架执行卡」(skill_draftsave / publish 的精确参数)+ 登记skill_id/deploy_id到<技能>/.growth/coze_store.json;专家包(无 SKILL.md)会自动补一份合规入口到副本,原包不改。参数:<技能/专家目录> [--coze-dir <副本目录>] [--icon <图标路径>] [--json] [--record --skill-id <id> --deploy-id <id> --version X.Y.Z]。scripts/setup_growth.py:成长机制初始化——发布技能后调用。在技能目录建隐藏.growth/(含manifest.md元数据 +inspirations.md灵感库),向登记总索引追加一行(幂等),并打印两个 automation(recurring 采集 / once 复盘提醒)的成品定义供本助手复制进automation_update。参数:--display-name --category --freq daily|weekly|everyN --review-days N [--creator 对话中自报名]。scripts/fetch_skillhub_stats.py:SkillHub 数据看板——拉取已发布技能在 SkillHub 的排名/使用/点赞等数据,生成自包含 SVG 图表看板 HTML(单技能卡片 + 多技能横向对比条形图 + 榜单排名可视化 + 点赞趋势线);多技能基于登记总索引做横向对比。输出到yrns-skillcreator/.dashboards/(隐藏目录,发布不随包);网络/鉴权失败单技能降级、整体不崩;--no-fetch仅用已有数据重绘、--slug指定单个技能。assets/templates/SKILL_skeleton.md:升级版四层架构 SKILL.md 骨架,可复制改写。assets/templates/template_evals.json、template_assertions.json:评估用例与打分模板。
六、给非技术用户的快速上手
不懂代码也能用。把本技能当成一位"会写技能的帮手",按这三句话开口即可:
- 描述你反复在做的那件事:例如"我每次审核方案,都要按可行性、合规性、成本三个维度打分。"
- 本技能会帮你判断 + 起草:先用 Step 0 判断值不值得做成技能,再起草 SKILL.md、references,把你的"评分标准"变成 AI 能执行的规则。
- 你只需验收和补一句话使用说明:人决策、AI 执行;用着不顺就说"再改改",技能会越用越贴合你的习惯(这就是 OTF + 迭代)。
> 口诀:先跑起来(MVP)→ 用真实任务试 → 哪儿别扭就改哪儿 → 越改越顺手。
七、执行铁律与红线
> 「刻骨铁律」四条(见 ⛩ 节)优先级最高,以下为补充规则。
| 序号 | 铁律 | 原因 |
|---|---|---|
| 1 | 先过 Step 0 再动手 | 避免"为做而做",省下无效技能 |
| 2 | frontmatter 必须有 agent_created: true |
否则日后无法用工具维护 |
| 3 | Description 用侵略性写法 + 真实触发词 | 直接决定技能能否被自动调用 |
| 4 | 通篇祈使/不定式,面向 AI 写 | 保持一致、清晰、可执行 |
| 5 | SKILL.md 精简(≤ 500 行),详情入 references | 渐进式披露,省上下文 |
| 6 | 先 MVP 后迭代,按收敛标准判断"够好了" | JIT 小步快跑,避免 Big Bang 风险 |
| 7 | 修改市场来源技能后,写回 userModified: true |
防止自动更新覆盖用户改动 |
| 8 | 修改后自动复核:每次修改技能后,立即执行复核(license/frontmatter/结构),不能等用户提醒再改 | 保证每改必查,不留隐患 |
| 9 | 打包前缀取自使用者发布配置档(未设置则不加前缀) | 不替使用者预设品牌 |
| 10 | 修改前自动备份:修改任何技能前,先用 scripts/版本快照脚本 创建版本快照到 .backups/,再动手改 |
改错了能回退,不丢原版 |
| 11 | 级别匹配而非拔高:按场景定级别(Lv1–Lv5),简单技能不该配满 references/scripts;完整矩阵见 references/skill-levels.md |
避免过度设计,匹配才是好 |
| 12 | 缺内容就提醒,不编造:某级别「需用户补充」项(案例/示例/领域指标/来源等)缺失时,主动提醒用户补充,绝不自己编造填充 | 防幻觉 + 尊重用户领域主权 |
| 13 | 先洞察需求再动手:Step 0.9 必做——用户的"第一句话"通常不是真实需求;至少完成四层需求推测 + 认知象限定位,再进 Step 1 | 避免"精准地做出错误的需求" |
| 14 | 坦诚不编造:以平台自身身份对话,不知道就说不知道,受限就明说不能答,绝不说谎;敏感内容换方式提醒而非硬拒 | 真诚是洞察的前提,硬拒会掐断对话 |
| 15 | 发布必问名,默认取对话身份:帮用户发布技能时务必问"希望显示什么名字";用户不回复则用本次对话中用户自报的名字 + 技能名,全程未自报名字则仅用技能名——绝不写死任何创建者固定身份作默认前缀 | 发布名属于创建者本人,不能替用户预设身份 |
| 16 | 创建即登记 + 建成长任务:用户用本技能创建并发布的技能,必须登记到总索引、建 .growth/ 灵感库、并创建两个 automation(定期采集 + 到期复盘提醒),缺一不可 |
成长型创建器的核心闭环,漏一项就不"成长" |
| 17 | 采集去重、只增不改:灵感库按「标题+来源 URL」去重,绝不重复写入;采集只往灵感库追加,不直接改 SKILL.md,是否更新由用户拍板 | 防噪声堆积、防擅自改动用户技能 |
| 18 | 图表化呈现受欢迎度:复盘提醒与用户主动查询时,用图表呈现技能在 SkillHub 的排名/使用/点赞等数据;已发布多个技能时必须做横向对比图,让用户一眼看到各技能受欢迎程度 | 用户要的是"被多少人看见/喜欢/使用"的直观感知,图表比数字表强 |
| 19 | 默认自动上架扣子技能商店:用本包做出技能后,按 Step 7 走完"自检 → 产出副本 → skill_draft save → publish → 登记"整条链路,不必逐次问用户"要不要发布";已上架过带原 skill_id + 绑定 root_path 递增版本重发,没上架过就创建草稿;用户明确说"不上架 / 仅本地自用"时才跳过 |
上架是这类技能的默认归宿,链路幂等且本地产物不动;没拿到 deploy_id 不说"已上架" |
| 20 | 首次发布先配置、包里不带创建者私有信息:本包会被分发给别人使用,包内不得出现创建者的姓名、品牌、账号 ID、绝对路径、发布状态(skill_id/deploy_id);使用者第一次要发布到 SkillHub 或扣子商店时,先跑 scripts/publish_setup.py check,把「需要你完成」的清单逐条问使用者(一次问清),按其答复写入其私有配置档 <工作根目录>/.yrns/publish-profile.json;配好后后续发布自动复用,不得反复索要同一授权 |
发布授权属于使用者本人;包里预置作者凭证既泄隐私也让别人没法用 |
八、修改已有技能 + 备份 + 自动复核
> 执行本技能修改任何技能时,修改前必须备份,修改后必须复核。二者都是自动的,不可跳过,不能等用户提醒。这是铁律。
触发条件
只要对技能文件(SKILL.md / references / scripts / assets)做了实质性修改(内容变更,非仅格式调整),就必须:先备份 → 再修改 → 后复核。
修改前:自动备份
动手改之前,先创建当前版本快照:
scripts/版本快照脚本 <技能目录>
- 自动读取当前
version,创建.backups/v{version}_{timestamp}/完整目录快照 - 排除
__pycache__/、.pyc/.pyo、.DS_Store、已有的.backups/ - 备份成功后才允许动手改文件
- 不需要用户提醒——看到"要修改某技能"就先跑备份
自动复核清单
修改完毕后,按以下顺序逐项检查,缺一补一:
| 顺序 | 检查项 | 操作 | 是否自动修正 |
|---|---|---|---|
| 1 | license 字段 |
frontmatter 必须有 license,缺失则自动补 yrns |
是,不问用户 |
| 2 | agent_created: true |
frontmatter 必须有此项,否则无法用工具维护 | 是,自动加 |
| 3 | version 字段 |
修改了内容 → 自动 bump 小版本号 +0.0.1;未改内容 → 保留原值 | 是,自动 bump |
| 4 | 结构校验 | 跑 quick_validate.py 快速检查,报错则修复后重跑 |
是,修复后重跑 |
| 5 | SKILL.md 行数 | 检查 ≤ 500 行,超了提示考虑拆分到 references | 仅提醒,不强制 |
完整执行流程
准备修改某技能
↓
第一步:自动备份
scripts/版本快照脚本 <技能目录>
→ .backups/v{old_version}_{timestamp}/ (完整快照)
↓
第二步:执行修改(Edit/Write)
↓
第三步:自动复核
读 frontmatter → license 在吗?
├─ 不在 → 自动补 license: yrns(不询问)
└─ 在 → 继续
↓
agent_created: true 在吗?
├─ 不在 → 自动加(不询问)
└─ 在 → 继续
↓
version 变了?还是只改了内容没变版本号?
├─ 只改内容没变版本 → 小版本号 +0.0.1(不询问)
└─ 已手动 bump 或未改内容 → 保留
↓
跑 quick_validate.py → 通过?
├─ 报错 → 修复 → 重跑直到通过
└─ 通过 → 继续
↓
复核完毕,用一行告知用户结果
复核后提示模板
备份:.backups/v1.2.1_20260713-093550/ ✓
复核:license ✓ frontmatter ✓ validate ✓ (v1.2.1 → v1.2.2)
如何回退
如果修改后发现改错了,从备份恢复:
# 查看有哪些备份
ls <技能目录>/.backups/
# 恢复某个版本(手动操作,需用户确认)
cp -r <技能目录>/.backups/v1.2.1_20260713-093550/* <技能目录>/
红线
- 备份是修改的前置条件:先备份再改,顺序不可颠倒。没有备份的修改等于没有安全网
- 复核是修改的后置条件:修改 = 备份 + 改内容 + 复核,三者不可分割
- 自动修正不询问:license 缺失、agent_created 缺失、version 未更新——这些都算"遗漏",直接补,不用问用户要不要补
- 只在需要判断时问:如 version bump 涉及主版本号变更(1.x → 2.0)、SKILL.md 超 500 行需要决策是否拆分——这些算"判断",需确认
九、发布平台适配(扣子技能商店 + SkillHub 同步)
> 按 Step 0.5 确认的目标平台执行对应小节;无需发布的技能跳过本节。
> 通例:产出三份包——本地版(原样)+ 扣子版 + SkillHub 版,三者并存。
9.0 同步发布总则
默认动作:一次生产,两平台同发。 不做"先在 A 平台调好再搬到 B 平台"的两遍工作。
Step 6 打包完成(本地版,version = X.Y.Z)
↓
跑一次 scripts/publish_dual.py <技能目录>
├─ coze_adapter.py → <输出根>/coze/<技能名>/ 扣子合规副本
└─ skillhub_adapter.py → <输出根>/skillhub/<技能名>/ SkillHub 合规副本
↓
分别推送(两个平台用同一个版本号)
├─ 扣子:技能工作台 save → publish(走平台,不用本地 zip 上传)
└─ SkillHub:clawhub publish <skillhub 副本> --slug <slug> --version X.Y.Z --changelog "…"
scripts/publish_dual.py <技能目录> # 只产出两份合规副本 + 打印推送命令
scripts/publish_dual.py <技能目录> --push # 产出后自动推送 SkillHub(调用 clawhub CLI)
scripts/publish_dual.py <技能目录> --push --dry-run # 只预演,不真正发布
> 单独用 coze_adapter.py / skillhub_adapter.py 时,默认输出仍是 {技能名}_coze/、{技能名}_skillhub/;publish_dual.py 只是把它们统一到 <输出根>/ 下按平台分目录,方便一起打包与推送。
> 扣子草稿已绑过目录时:草稿的 root_path 不可更换,用 --coze-dir <已绑定目录> 把扣子副本直接写回该目录再 save(例:--coze-dir _publish/<技能名> --hub-dir _publish/skillhub/<技能名>)。
同步发布的四条硬约束:
| 约束 | 要求 |
|---|---|
| 版本号一致 | 两平台用同一个 version(读自 SKILL.md frontmatter),同一次改动必须递增 |
| slug 一致 | 技能标识两平台保持一致;SkillHub 侧 slug 发布后不可改,发布前必须确认 |
| 内容同源 | 两份副本都由同一份工作副本生成,禁止手工单独编辑某一个平台版 |
| 先本地后发布 | 本地版永远保留且不被改动;两个平台版都是副本 |
扣子侧注意:每次 save 生成新版本后,上一次发布即过期,必须重新 publish 才代表当前状态;两个平台都推完才算本次发布完成。
9.1 扣子技能商店(Coze)
合规要点(完整速查见 references/coze-store-rules.md):
| 项 | 要求 | 本技能处理方式 |
|---|---|---|
| 虾评前置 | 上架公开商店前须先通过虾评(xiaping.coze.com)审核/评估,用使用者本人的虾评凭证提交 |
publish_setup.py check 体检;mark-xiaping 配凭证;Step 7 第 0 步把关 |
| 技能入口 | 根目录含 SKILL.md,frontmatter 至少 name + description |
coze_adapter.py 校验并报告 |
| 目录名一致性 | 技能目录叶子 = SKILL.md 的 name(匹配 ^[a-z0-9-]{1,64}$) |
coze_adapter.py 校验 |
| 图标 | 512×512 PNG/JPG,≤500KB | 发布前提醒用户提供或生成 |
| 其他平台元数据 | _meta.json / .clawhubignore / marketplace.json 等应剔除 |
适配版自动排除 |
| 隐藏文件 / LICENSE | 不进发布包(许可证写进 frontmatter) | 适配版自动排除 |
| null byte / 二进制 | 脚本须为纯文本 UTF-8 | 适配版自动检测并排除 |
| 包体积 | 单包不宜过大 | 适配版报告大小 |
发布路径:扣子环境走平台自带的技能工作台(技能草稿 save 生成版本 → 用户确认后 publish 到「我的技能」),不依赖本地 zip 上传;coze_adapter.py 只负责产出干净副本与合规校验。
scripts/coze_adapter.py <技能目录> [--output <输出目录>]
9.2 SkillHub(ClawHub)
适配流程
Step 6 打包完成(本地版)
↓
自动运行 skillhub_adapter.py
→ 仅复制白名单内的文本文件
→ 删除 LICENSE 文件(SkillHub 禁止)
→ 删除隐藏文件(.gitkeep/.env/.DS_Store 等 · 开头文件,SkillHub 禁止)
→ 检测并排除含 null bytes 的文件(视为二进制)
→ 删除二进制文件(.png/.jpg/.exe 等)
→ 删除 WB 专有 frontmatter 字段(agent_created / description_zh)
→ 将 license 改为 MIT-0(SkillHub 仅允许 MIT-0)
→ 替换正文中的 WB 专有工具引用
→ 输出到 {技能名}_skillhub/ 目录
↓
两份包并存
├─ yrns-{skill_name}.zip ← 本地版(完整,含 license: yrns)
└─ yrns-{skill_name}_skillhub.zip ← SkillHub 版(合规,含 license: MIT-0)
适配脚本
scripts/skillhub_adapter.py <技能目录> [--output <输出目录>]
自动执行以下适配(不询问,直接做):
1. 文件过滤:仅复制白名单内的纯文本文件,删除二进制文件和 LICENSE 文件
2. 隐藏文件排除:删除 .gitkeep、.env、.DS_Store 等所有 . 开头文件(SkillHub 拒绝隐藏文件)
3. null byte 检测:文件含 null bytes 视为二进制,自动排除
4. frontmatter 适配:删除 agent_created: true、description_zh;将 license 改为 MIT-0
5. 正文适配:将 Skill/技能管理工具/文件系统持久化 等 WB 专有引用替换为通用描述
6. slug 校验:确保技能名符合 ^[a-z0-9][a-z0-9-]*$
SkillHub 限制速查
详细规则见 references/skillhub-rules.md,核心要点:
| 限制 | 规则 | 本技能处理方式 |
|---|---|---|
| LICENSE 文件 | ❌ 禁止 | 适配版自动删除 |
| 二进制文件 | ❌ 禁止(.png/.jpg/.exe/.zip 等) | 适配版自动排除 |
| 隐藏文件 | ❌ 禁止(.gitkeep、.env、.DS_Store 等 . 开头文件) |
适配版自动排除 |
| null bytes | ❌ 含 null bytes 视为二进制拒绝 | 适配版自动检测并排除 |
| 许可证 | 仅允许 MIT-0 | 适配版自动改 license: MIT-0 |
| WB 专有字段 | agent_created 等须删除 |
适配版自动删除 |
| slug 永久性 | 一旦发布不可更改 | 发布前提醒确认 slug |
| 安全扫描 | 检查密钥/凭据泄露 | 适配版不扫描内容(提醒用户自查) |
| 付费禁令 | 不允许定价/paywall 元数据 | 适配版不处理(提醒用户自查) |
| 文件类型 | 仅纯文本白名单 | 适配版自动过滤 |
| 总包大小 | ≤ 50MB | 适配版报告大小 |
| slug | 小写+数字+连字符 | 适配版自动校验 |
发布命令
clawhub publish <skillhub 副本目录> \
--slug <slug> --name "<展示名>" \
--version X.Y.Z --changelog "<本次改动>" \
--tags latest
- 未登录时会报
Not logged in. Run: clawhub login,先clawhub login(device flow,浏览器确认)或clawhub login --token <token>。 - 同 slug 重新发布必须递增版本号,否则会被拒。
- 不确定参数时加
--dry-run先预演。
红线
- 双平台版本号必须一致:同一次发布,两个平台用同一个
version,不要一个 1.1.0 一个 1.1.1 - SkillHub 版和本地版并存:不要只做 SkillHub 版而丢掉本地版。本地版保留
license: yrns和完整内容 - 适配不改原文件:
skillhub_adapter.py生成的是独立副本,不修改原始技能目录 - LICENSE 文件必须删除:SkillHub 上传会因 LICENSE 文件直接拒绝,这不是建议而是硬限制
- 隐藏文件必须删除:
.gitkeep、.env等所有.开头的文件会被 SkillHub 拒绝,适配版自动排除 - null byte 文件视为二进制:含 null bytes 的文本文件也会被 SkillHub 拒绝,适配版自动检测并排除
十、成长型登记与灵感采集
> 本技能是「成长型创建器」。用户用本技能创建并发布一个技能后,该技能进入"持续长大"状态:按用户指定类别与频率定期采集新资讯入灵感库(去重),到期提醒用户是否更新。完整规格见 references/growth-mechanism.md。
触发时机
Step 0.5 选定发布平台(默认扣子技能商店 + SkillHub 双平台同步)且 Step 6 打包 + Step 7 自动上架扣子商店 + SkillHub 推送完成之后,立即执行本节。
发布时必须问的 4 项(铁律 #15)
- 发布显示名(displayName):问"这个技能发布时希望显示什么名字?"
- 用户不回复 → 用本次对话中用户自报的名字 + 技能名(如用户说过"我是阿杰" → "阿杰的玄幻小说编写助手")
- 全程未自报名字 → 仅用技能名(不强行加任何前缀,绝不写死任何创建者固定身份) - 采集类别(category):问"这个技能属于哪类,用于日后采集该类新资讯?"(如 玄幻小说编写 / 财务报表分析)
- 采集频率:每日 / 每周 / 每隔 N 天
- 复盘周期:如 1 个月 / 2 个月 / 3 个月(到期提醒是否更新)
执行(脚本 + automation,铁律 #16)
发布完成
↓
问 4 项(displayName / category / 频率 / 复盘周期)
↓
运行 scripts/setup_growth.py <技能目录> --display-name <名> --category <类> --freq <daily|weekly|everyN> --review-days <N> [--creator <对话中自报名>]
→ 创建 <技能>/.growth/manifest.md + 初始化 .growth/inspirations.md
→ 登记总索引 追加一行(幂等:同 slug 不重复)
→ 打印两个 automation 成品定义
↓
本助手用 automation_update 工具创建两个定时任务(复制脚本打印的成品):
① recurring 采集任务(rrule 由频率映射,见 growth-mechanism.md 第 4 节)
② once 复盘提醒(scheduledAt = 发布日 + 复盘周期)
数据存放(铁律 #16/#17)
| 数据 | 位置 | 说明 |
|---|---|---|
| 灵感库 | <技能>/.growth/inspirations.md |
隐藏文件夹,SkillHub 发布时自动排除,不随包公开 |
| 成长清单 | <技能>/.growth/manifest.md |
类别/频率/复盘周期/计数等元数据 |
| 登记总索引 | 本技能 references/created-skills-registry.md(WorkBuddy 环境同步到 ~/.workbuddy/skills/yrns-skillcreator/references/) |
跨技能调度依据 |
采集与复盘做什么
- 采集任务(recurring):WebSearch 检索该类别近期新经验/方法论/热门案例/工具 → 按「标题+来源 URL」去重 → 仅写入技能 SKILL.md 尚未涵盖、有增量价值的思路 → 更新 manifest 与登记索引。
- 复盘提醒(once):到期读灵感库「未融入」条目,对照 SKILL.md 判断"技能里还没有的有价值思路",呈现给用户决策是否更新。
- 用户主动触发:随时说"检查更新 / 采集灵感 / 成长得怎样了 / 我的技能数据 / 看板 / 谁更受欢迎",按上述立即执行一次(不等定时任务)。
数据看板(SkillHub 排名 / 使用 / 点赞可视化,铁律 #18)
复盘提醒(及用户主动说"我的技能数据 / 看板 / 谁更受欢迎")时,除了呈现灵感库思路,还顺带拉取该技能在 SkillHub 的真实运行数据,用自包含 SVG 图表呈现:
- 抓什么:
GET /api/v1/skills/{slug}(点赞 / 下载 / 浏览 / 评分 / 评论)+GET /api/v1/showcase/{hot,trending,newest}(榜单排名);多技能横向对比基于登记总索引里的 slug。 - 画什么:单技能卡片(排名 + 点赞 + 使用)+ 多技能横向对比条形图 + 榜单排名可视化 + 点赞趋势线(基于
.growth/stats_history.json多期快照)。 - 怎么跑:
scripts/fetch_skillhub_stats.py(读登记索引抓全部已发布技能;--no-fetch仅用已有数据重绘;--slug指定单个)。 - 输出:各技能
<技能>/.growth/stats_latest.json+stats_history.json;图表看板yrns-skillcreator/.dashboards/skillhub_stats_<日期>.html(隐藏目录,发布自动排除)+stats_summary.json。 - 离线降级:网络 / 鉴权失败单技能标记 error 跳过、整体不崩;已有历史仍绘趋势线;脚本只读不写 SkillHub。
- 完整规格见
references/growth-mechanism.md第 9 节。
红线
- 灵感库永不随 SkillHub 发布(
.growth/隐藏名自动排除)。 - 采集只增不改 SKILL.md;是否更新由用户拍板(铁律 #17)。
- 发布名默认取自对话中用户自报身份,绝不写死创建者固定名(铁律 #15)。
技能元数据
skill_name: 悠然南山 · 技能锻造师(升级版 Skill Creator)
version: 1.3.8
对标: 官方 skill-creator
方法论来源:
- 智能体+Skill 入门指南(语义匹配、渐进式披露、排障)
- Claude Skill Creator 终极进阶指南(四大黄金法则、侵略性描述、evals、自我博弈)
- 元 Skill 方法论(OTF+JIT+Bootstrap、五层抽象、五阶演化、递归压缩)
- 图解 Skill(宝玉)(三问判断、模型/脚本分工、技能组合、不该做技能、人机协作)
- WorkBuddy专家团产品改进建议(总-分-总架构设计方法论)
- 坦诚对话原则 + 专业需求引导师(四层需求推测、认知四象限、隐性场景扫描、需求探索报告)
核心架构: 四层架构(哲学/设计/创建/进化)+ 增强六步流程 + 质量闭环
面向人群: 所有人,对非技术用户友好
一句话心法: 好东西是总结出来的,不是设计出来的——先跑起来,再让它长大。
changelog:
- 1.3.8: 虾评 §5 实操回填(首次真实上传演练后按 OTF 沉淀)——references/xiaping-prereq.md 第 5 节由占位改为实测流程:`POST /api/skills` multipart 字段表(name/description 50–300 字/trigger/category/tags 为 JSON 数组/version/requires_api_key/file=zip)、首次上传 409 PLEDGE_REQUIRED 须把平台承诺书**原文转述主人、取得明确同意后代填 pledge**、category 以 `GET /api/categories` 枚举为准(效率工具/社交互动/学习教育/创意设计/数据分析/娱乐休闲/生活实用/其他)、更新走 `POST /api/upload`(file+skill_id+changelog)、新技能默认 trial 众测 30 天、按评分/评测数量/SBI 表现由平台自动转正后才可上扣子公开商店;review 语义细化(pending=众测中未转正、passed=平台已转正);修复 Windows/GBK 下 publish_dual.py、coze_store_publish.py、publish_setup.py 捕获子进程输出崩溃(subprocess 显式 utf-8 解码);附实测记录(v1.3.7 上传 201、进入 trial 众测;skill_id/owner 等发布状态只登记在打包排除的 `.growth/xiaping.json`,包内不留)
- 1.3.7: 新增「用/不用本技能」商店对比文案能力——新增 references/store-pitch.md(一句话简介 ≤200 字 / SkillHub 介绍 / 虾评·扣子详细介绍三段成品文案 + 对比点实证清单 + 更新规则,禁止无实证卖点);SKILL.md description 补"对比裸做"一句(SkillHub 介绍随之带出);四节索引新增 store-pitch 行;Step 7 新增 2.5「展示信息文案逐字复用 store-pitch」
- 1.3.6: 新增「虾评(xiaping.coze.com)= 扣子上架前置平台」——publish_setup.py 新增 mark-xiaping 子命令(记 account/agent_id/review 进 publish-profile.json;Key 另存 <工作根>/.yrns/xiaping-key,600、不打印、不进包),check 体检列入虾评缺项与审核状态;coze_store_publish.py 首次提示补虾评前置提醒;新增 references/xiaping-prereq.md(平台定位/凭证配置与存放/发布时执行规则 passed-pending-none 分支/红线:凭证互不通用、绝不拿别人凭证替人发布、Key 在对话中只复述前后 4 位、流程细节占位待实操回填);SKILL.md description/Step 0.55/Step 7(新增第 0 步虾评把关)/四节索引/五节脚本说明/9.1 合规表同步
- 1.3.5: 技能包**可分发给他人使用**——清理包内创建者私有信息(绝对路径、品牌署名默认值),新增「首次发布配置」能力:新增 scripts/publish_setup.py(首次发布配置向导:`check` 体检两侧平台要求 → `set` 署名/版权/前缀 → `login-guide`/`save-token` 存 SkillHub 授权 → `mark-coze` 记录扣子上架资质;配置档存使用者私有目录 `<工作根目录>/.yrns/`,token 权限 600、不打印、不进包、不随发布产物外发,配好一次长期复用、不再反复索要);新增 references/publish-setup.md(首次配置 SOP:扣子侧无 API Key、需一次性上架资质 + 展示信息 + 平台审核,与「发布到我的技能」区分;SkillHub 侧 clawhub login 两种方式与凭证持久化);新增 Step 0.55「首次发布先做一次发布配置」;铁律新增 #20「首次发布先配置、包里不带创建者私有信息」;#15 表述中性化(不再出现固定创建者身份示例);init_skill.py / package_skill.py 的 `--copyright` / `--prefix` 默认改为读使用者发布配置档(未设置则中性 MIT-0 / 不加前缀);skillhub_adapter.py 排除 `_meta.json` 等平台发布状态文件
- 1.3.4: 新增「自动上架扣子技能商店」默认能力——Step 0.5 默认动作升级为「双平台同步 + 创建完自动上架扣子商店」(保留只发单平台 / 仅本地自用降级,后者即关闭开关);新增 Step 7「自动上架扣子技能商店」(自检 → 产出副本 → `skill_draft` save → publish → 登记 skill_id/deploy_id,一步不跳,含"没拿到 deploy_id 不说已上架");新增 scripts/coze_store_publish.py(上架自检 + 产出扣子副本 + 打印上架执行卡 + `--record` 登记状态到 `.growth/coze_store.json`;专家包自动补合规 SKILL.md 入口到副本,原包不改);新增 references/coze-auto-publish.md(默认行为与开关 / 五步链路 / 自检项与阻断级别 / skill_draft 参数对照 / 失败兜底 / 红线);铁律新增 #19「默认自动上架扣子技能商店」;九节 9.1 补自动上架路径;修正铁律 #10 残留的 `版本快照脚本` 占位符为 `scripts/版本快照脚本`
- 1.3.3: 发布流程升级为「扣子技能商店 + SkillHub 双平台同步」——Step 0.5 由三选改为**默认双平台同步**(保留只发单平台 / 仅本地自用降级);第九节新增「9.0 同步发布总则」(一份工作副本 → 两份合规副本 → 两平台同发,含版本号一致/slug 一致/内容同源/先本地后发布四条硬约束),9.2 补「发布命令」小节(clawhub publish 参数、未登录处理、--dry-run),红线补「双平台版本号必须一致」;新增 scripts/publish_dual.py(一次产出 `<输出根>/coze/<技能名>/` 与 `<输出根>/skillhub/<技能名>/` 两份副本,--push 自动调 clawhub 推送,扣子侧打印技能工作台 save→publish 步骤);修正 scripts 资源说明中 `版本快照脚本` 占位符为 `版本快照脚本`
- 1.3.2: 增加扣子(Coze)环境适配——description/summary 平台表述扩展为「扣子 / WorkBuddy / Claude」并补扣子触发词;Step 0.5「确认发布平台」由 SkillHub 单选升级为「扣子技能商店 / SkillHub / 仅本地自用」三选;第九节重构为「发布平台适配」(新增 9.1 扣子技能商店合规要点与发布路径,原 SkillHub 内容归入 9.2);新增 references/coze-store-rules.md 与 scripts/coze_adapter.py(产出扣子可发布的干净副本:剔除隐藏文件/LICENSE/其他平台专有元数据、检测 null byte 与非白名单类型、校验 SKILL.md frontmatter 与目录叶子一致性、报告包体积);备份默认根目录改为平台自适应(扣子 `<工作目录>/.skill_backups/`,WorkBuddy 仍为 `~/.workbuddy/skill_backups/`);init_skill 默认输出目录与登记总索引路径同步平台自适应
- 1.3.1: 成长机制新增「SkillHub 数据看板」——定期复盘提醒(及用户主动查询"我的技能数据/看板/谁更受欢迎")时,用图表呈现技能在 SkillHub 的排名/使用/点赞等数据;已发布多个技能时做横向对比图。新增 scripts/fetch_skillhub_stats.py(拉取 GET /api/v1/skills/{slug} 统计 + GET /api/v1/showcase/{hot,trending,newest} 榜单,生成自包含 SVG 图表看板 HTML:单技能卡片+多技能横向对比条形图+榜单排名可视化+点赞趋势线),输出到 yrns-skillcreator/.dashboards/(隐藏,发布不随包);多技能基于登记总索引做横向对比;网络/鉴权失败单技能降级、整体不崩;--no-fetch 仅用已有数据重绘。references/growth-mechanism.md 新增第 9 节「SkillHub 数据看板」完整规格(数据来源/字段/图表/触发/输出/离线降级/调用示例);setup_growth.py 复盘 prompt 补看板步骤;铁律#18「图表化呈现受欢迎度、多技能必须横向对比」。
- 1.3.0: 升级为「成长型创建器」——用户创建并发布技能后自动进入持续长大状态。新增第十节「成长型登记与灵感采集」+ references/growth-mechanism.md 完整规格 + scripts/setup_growth.py(建 .growth/ 灵感库与成长清单、幂等登记总索引、打印两个 automation 成品);铁律#15「发布必问名、默认取对话身份、绝不写死创建者固定名」#16「创建即登记+建成长任务」#17「采集去重、只增不改」;灵感库存于技能自身隐藏目录 `.growth/`(SkillHub 发布自动排除,不随包公开);发布时用原生 automation 定时任务做定期采集 + 到期复盘提醒,用户随时可手动触发;package_skill.py 本地打包同步排除 `.growth/`。
- 1.2.9: 新增「需求洞察」机制——Step 0.9 在规划前置阶段以平台自身身份坦诚对话(不编造/不硬拒,敏感内容换方式提醒),完成四层需求推测(表层/中层暗示/深层潜在/衍生关联)+ 认知四象限定位 + 阻碍扫描 + 隐性场景六维扫描,输出「需求探索报告」并让用户在 A/B/C/D 行动建议中确认;新增 references/demand-insight.md 完整框架(含总结触发规则「请总结我的需求」);更新铁律#13「先洞察需求再动手」#14「坦诚不编造」;description 与方法论来源同步
- 1.2.8: 新增 references/小说技能升级检查清单.md——把一次小说类技能大修(v1.0.0→v1.8.0)沉淀为可复用清单:P0(版本发布闭环、文档↔脚本一致性、单一事实源/口径优先级、引号与字符计数口径、硬门禁可执行化)、P1(断句量化、防套娃+白名单、角色八格卡、机制真实感预检、灵感库/禁忌库、默认强需求内建)、P2(书名风格库、台账与自动化、去小说化/去人名自检),附迁移操作顺序与今日踩坑清单;references 调用索引同步
- 1.2.7: 「零、何时用/不用」补充反向指针——用户真正要创建「专家/专家团」(plugin.json + agents/ 结构)时转用 yrns-expertstructor,与 expertstructor→skillcreator 的指针形成双向路由
- 1.2.6: 新增「技能级别适配」机制——Step 0.7 在规划前置阶段按场景判定级别(Lv1–Lv5)匹配对应架构配置;新增 references/skill-levels.md 完整矩阵(含 12 个借鉴维度落位映射);更新铁律#11「级别匹配而非拔高」#12「缺内容提醒不编造」;description 补充级别规划描述;修正元数据版本号漂移
- 1.2.5: 内部对齐标杆技能逆向分析结论,沉淀 12 个借鉴维度至项目笔记;frontmatter 版本推进
- 1.2.4: 补全 SkillHub 上传限制——新增隐藏文件排除(.gitkeep/.env/.DS_Store 等 · 开头文件全部禁止)、null byte 检测(含 null bytes 视为二进制拒绝)、slug 永久性提醒、安全扫描提醒、付费禁令提醒;更新 skillhub-rules.md 为完整版(P0 从 8→12 项);更新 skillhub_adapter.py 增加 is_hidden_file() 和 has_null_bytes() 检测、白名单新增 .psm1/.psd1/.hbs/.mustache/.ejs
- 1.2.3: 增加 SkillHub 适配机制——新增 Step 0.5 确认发布平台;新增 skillhub_adapter.py 脚本(自动删除 LICENSE/二进制、改 MIT-0、删 WB 专有字段、替换 WB 专有引用);新增 references/skillhub-rules.md 速查表;新增第九节「SkillHub 适配」;description 增加发布适配描述
- 1.2.2: 增加「修改前自动备份」机制——新增 版本快照脚本 脚本,修改任何技能前自动创建版本快照到 .backups/v{version}_{timestamp}/;更新铁律#10 为"修改前自动备份";第八节重构为"备份→修改→复核"三步完整流程
- 1.2.1: 增加「修改已有技能 + 自动复核」机制——每次修改后自动检查 license/agent_created/version/frontmatter 结构,缺失项自动补全(不询问),强制跑 quick_validate.py;更新铁律#8 为"修改后自动复核"
- 1.2.0: 增加总-分-总架构设计方法论(Step 2.5);增加版权检查机制(license 默认 yrns);增加打包前缀默认值(yrns-)
- 1.1.0: 四层架构 + 六步流程 + 质量闭环
- 1.0.0: 初始版本