🏭 内部沉淀 → 通用 Skill 发布流水线
> 给 AI Agent 的使用说明:本 Skill 是纯流程 + 检查清单,零依赖。适用于任何想把内部资产对外产品化的场景(SkillHub / ClawHub / 自建市场)。
这条流水线解决的核心问题:团队沉淀往往"能用但发不出去"——因为里面绑了内部路径、内部账号、内部术语、平台专属 API。直接发布 = 泄露 + 别人跑不通。所以必须过下面的闸门。
第 0 步:资产盘点(先盘清,别急着做)
三个来源都要盘,只盘一个必然漏货:
| 来源 | 怎么盘 | 产出 |
|---|---|---|
| 本地 skill/脚本库 | 递归找 SKILL.md,提取 name/description/字数/是否有 scripts |
去重后的 skill 清单(含路径) |
| 知识库(Obsidian 等) | 列目录树 + 统计文件数,重点看"方法论/复盘/实战记录"目录 | SOP 候选清单 |
| 对象存储/云盘 | 用 API 列对象(按大小排序看头部),按前缀分类统计 | 大块资产清单(报告/知识库/数据) |
盘点要落盘成 JSON/CSV,不要靠肉眼翻——数量上千时人会崩溃,脚本不会。
关键动作:标注"已发布"状态。跟线上市场比一遍 slug,已发布的不重复选。
第 1 步:四道筛选闸门(逐层淘汰)
按顺序过,任何一道不过直接淘汰,不要"先做出来再看":
闸门①:通用性
- ✅ 纯流程 / 标准 Python 标准库 / 通用 HTTP 概念
- ❌ 绑定某个平台特有的工具名(如某框架的
browser_navigate、~/.某工具/路径) - ❌ 依赖内部系统、内网地址、私有账号
判据:别的 AI 环境(不同厂商、不同框架)装上去能跑吗? 不能就是通用性不过。
闸门②:原创归属
- 检查
author字段、目录路径(如@user_xxx/)、文件里有无第三方署名 - 别人的技能绝不能发——这不是审美问题,是侵权问题
- 平台上下载来的第三方 skill,直接从候选里剔除
闸门③:涉密扫描(必须机器扫,不能靠眼看)
扫这些模式:
内部用户名/路径 /home/<user>/ C:\Users\<user>\ 内部代号
真实姓名/客户名 同事真名、客户公司名、项目代号
内部定价/策略 "¥3K/月"、产品路线图、客户报价
私有账号标识 已登录的账号名、内部邮箱
处理:能删就删,能用通用表述替代就替代("我的浏览器"→"你的浏览器")。
闸门④:市场验证
- 在目标平台搜同类关键词,看头部竞品的下载量
- 竞品下载量为 0 或极低 → 该方向没需求;头部几万+ → 有需求
- 顺带看有没有同名 slug(撞名要换名,如
geo-optimization→geo-get-cited-by-ai)
第 2 步:通用化改造(清单照着做)
| 项目 | 改造动作 |
|---|---|
| frontmatter | 补齐 slug / displayName / version / license / 完整 description / triggers(缺 slug 会导致发布报错) |
| description 写法 | 触发场景要写全(用户会怎么问,就把那些问法写进去),并注明"适用于哪些 AI 平台" |
| 平台专属工具 | 换成通用表述:某工具的 browser_navigate(url) → "打开并抓取该网址" |
| 硬编码路径 | 删除或改成环境变量 / 相对路径 |
| 脚本依赖 | 优先标准库;第三方依赖写成"可选 + 自动回退",并在描述里声明安装方式 |
| 内部章节 | 定价、客户名、产品路线、内部账号 → 整段删除 |
| 正文开头 | 加一句"给 AI Agent 的使用说明"(本 Skill 需要什么能力、有无依赖) |
加一句反向说明:如果核心能力依赖某个外部条件(比如需要联网、需要浏览器),在开头显式写清,别让使用者自己猜。
第 3 步:干净环境实测(这一步不能省)
"我这台机器能跑"不算数——你的机器上早装满了依赖。
# 建一个干净环境
uv venv .venv # 或 python -m venv .venv
# 场景 A:零依赖跑一遍(验证兜底路径)
.venv/bin/python scripts/xxx.py --help # Windows: .venv/Scripts/python.exe
# 场景 B:只装产物自己声明的依赖,再跑一遍
uv pip install <声明的依赖>
.venv/bin/python scripts/xxx.py <真实参数> # 要真跑,看到真结果
实测要判定三件事
1. 能不能跑起来(无 import 错误、无路径错误)
2. 有没有真出结果(不是"运行成功但输出空")
3. 失败路径是否诚实(被拦截/无数据时,是明确报错还是假装成功)——必须让工具如实报错,静默返回空结果会误导使用者
> 实测发现的问题要回改脚本再重测,不要带着已知缺陷发布。
第 4 步:命名与搜索属性(决定别人能不能找到)
命名公式:<痛点或结果>·<具体对象/场景>
| ❌ 别这么起 | ✅ 这么起 |
|---|---|
| enhanced-web-search | AI联网搜不动自救·被反爬拦住时的三级绕行 |
| competitive-intelligence | 竞品分析7步框架·从资料到可交付结论 |
| geo-optimization | 让AI搜索推荐你·GEO实操(被DeepSeek/豆包引用) |
三条铁律
1. 一看就懂是给 AI 用的(描述里点明"适用于哪些 AI Agent")
2. 一看就懂干什么(功能写进名字,别用抽象名词)
3. 带搜索属性(把用户真实会搜的词放进 displayName / description / triggers:平台名、痛点词、场景词)
slug 规则:全小写英文 + 连字符,包含核心关键词,避免与平台已有 slug 撞名。
第 5 步:钩子规范(合规前提下留联系入口)
允许:文末独立的"关于作者"节 —— 一句话身份说明 + 纯文本联系方式 + 其他作品入口。
禁止(这些是平台审核的高压线,实测会驳回):
- 把推广内容塞进 skill 生成的产物里(比如生成的文档里带二维码/广告语)
- 功能阉割叙事("免费版只给一半,扫码解锁完整版")
- 远程下载推广图片、二维码生成、临时文件等触发安全扫描告警的动作
- 承诺"扫码即得"之类实现不了的话术
纯度声明:明确写"本 Skill 为完整版本,无功能删减"——既是对用户诚实,也避免审核误判为诱导。
第 6 步:发布与回读验证
--dry-run先跑(校验 frontmatter、体积、文件数)- 正式发布(记下返回的
skillId) - 回读验证:查线上状态接口,确认
reviewStatus与版本号 - ⚠️ 判断"新内容是否生效"别用"下载回来 grep" —— 新版本审核中时,下载拿到的是旧版本,会误判。正确做法:比对"发布时间 vs 文件修改时间",或直接查版本号
- 审核被拒先别急着改内容:如果同一批、同类结构的其他包都通过了,很可能是扫描波动(同一内容两次结果不同)→ 直接升版重发通常就过
- 批量发布要控速(每个之间留 20-30 秒),避免被判灌水
附:一页检查清单(发布前过一遍)
- [ ] 盘点落盘了,已发布的不在候选里
- [ ] 四道闸门全过(通用性 / 原创归属 / 涉密扫描 / 市场验证)
- [ ] frontmatter 齐全(slug、displayName、version、license、triggers)
- [ ] 内部信息零残留(路径、真名、定价、账号)
- [ ] 干净环境实跑通过(零依赖 + 声明依赖两种场景)
- [ ] 失败路径会如实报错,不静默返回空
- [ ] 命名符合公式,slug 不撞名
- [ ] 钩子在"关于作者"节,不在产物里
- [ ] dry-run 通过 → 发布 → 回读确认版本与状态
关于作者
九品锦锂e · 把团队一线实战沉淀成能直接装的 AI Skill。
- 微信:
ly5419495(Skill 定制 / 沉淀产品化,备注「Skill」) - 公众号:初五Agent(搜一搜,更新 AI 实操方法与 Skill 拆解)
- 更多 Skill:https://skillpay.alipay.com/public/jiupinjinlie
> 本 Skill 为完整版本,无功能删减。可自由用于个人与商业场景。