
本文是前面《SkillHub技能开发全流程解析:从创意到上架》的进阶篇。前面这篇内容适合刚入门、想把第一个技能跑起来的朋友;这篇面向已经写过一两个skill、但卡在"为什么审核被打回""为什么没人装""多轮对话总串台"的开发者。我会把从创意到上架背后那套工程化方法论拆开讲,附可直接抄的检查清单。

前面文章内容里我写过从注册账号到上架一个PDF处理skill的全流程。那篇能让你“跑通”,但跑通不等于“做好”。
说句掏心窝子的大实话:我自己第一次把一个自认为写得不错的skill提交审核,就被打回来两次。理由我现在都记得——“触发词太宽泛,会和平台已有技能冲突”、“描述里写了效率提升10倍,无法验证”。那次之后我才醒悟,从创意到上架中间有一整套工程化方法,不是你写个SKILL.md就能万事大吉的。这篇就把那套方法讲透彻一些。文中的数据来自《SkillHub核心数据(附录A.3,2026年6月更新)》,代码分两类:能直接跑的我标注“真实可用”,用来展示设计思路的会标“示意结构(非可运行)”,绝不混着糊弄你。
新手最容易犯的错就是:我觉得这个需求存在,于是立马开写。我的经验是,开干前,停一下,先验证。
我的三板斧:
不是所有能力都适合封装成skill。我这里总结了三条硬标准,全中建议你再才做:
我自己的“云开发者社区内容创作skill”就全中:每次写文章都要走“读规范→写→14项自查”这套流程,高频且步骤固定,输出是合规文章。这种才值得固化下来。
三步走,每次不超过半小时:
痛点真实:你自己或身边人真遇到过?
差异化:和Top 3竞品比,你的独特点是什么?
可完成:3天内能不能做出可用版本?
合规:不涉及隐私爬取、不碰版权红线?
四项有一项不过,建议先放放,别硬上。
入门时大家可能只写一堆trigger词。进阶要做的是“意图树”:一个主意图下挂子意图。比如“内容创作”主意图,下挂“写新文章”、“重写旧文”、“自查合规”三个子意图。这样Agent就能根据用户一句话路由到正确分支,而不是所有指令都挤进同一个流程、靠一堆if-else硬分。
槽位就是从用户话里抽出来的关键参数。设计时要注意:
示意结构(非可运行,展示设计思路):
{
"slots": {
"topic": {"required": true, "ask": "想写哪个主题?"},
"type": {"required": false, "default": "技术案例", "enum": ["技术案例","深度教程","趋势分析"]},
"has_code": {"required": false, "default": false}
}
}别写线性的script。用状态机:START → 收集槽位 → 确认 → 执行 → 反馈 → END。每个节点定义好“进入条件”和“退出动作”。这样中途用户改主意(“算了不写了”)就能优雅退出,而不是卡死在某个步骤里。
大致分为两类,处理方式完全不同:
关键点是别吞掉异常,也别把技术堆栈直接甩给用户。给用户看“人话”,给开发者留“日志”。
多轮对话最怕状态丢失(俗称“串台”)。我用一个会话上下文对象贯穿全程:
{
"session_id": "abc123",
"intent": "write_article",
"slots": {"topic": "SkillHub进阶", "type": "深度教程"},
"filled": ["topic", "type"],
"missing": [],
"history": [
{"role": "user", "msg": "写篇SkillHub文章"},
{"role": "agent", "msg": "主题定了吗?"}
]
}每次交互后持久化这个对象(存内存或文件),下次进来先读取它,才知道上次聊到哪了。标注:这是示意结构,真实实现请按平台SDK的session接口来,别自己发明一套序列化方法。
别把所有逻辑都堆在SKILL.md里。推荐目录结构:
my-skill/
├── SKILL.md # 触发词+流程说明(给人/给Agent读)
├── scripts/ # 真正执行的代码
│ └── main.py
├── references/ # 长文档、API说明、自查清单
└── assets/ # 模板、示例图让SKILL.md保持“说明书”角色,重要逻辑放scripts里。我早期就是把流程全写进SKILL.md,改一个字要通读全文,拆出去后清晰太多了。
SkillHub提供了CLI,以下是真实可用的开发命令(来源:附录A.3开发流程):
skillhub create my-skill # 生成脚手架
skillhub test my-skill # 本地测试
skillhub publish my-skill # 上传发布(进入审核队列)懒加载依赖:用到再import,别一上来全load。
缓存:相同输入的结果缓存起来,重复调用不重算。
超时控制:任何外部调用都要加timeout,避免skill卡死拖垮整个Agent。
pathlib + 显式指定utf-8编码。把scripts里的纯函数抽出来测,别等到集成测试才发现问题:
# test_main.py
from scripts.main import extract_slots
def test_extract_slots():
text = "写篇SkillHub深度教程"
slots = extract_slots(text)
assert slots["type"] == "深度教程"运行 pytest test_main.py -q 即可。
用 skillhub test 端到端跑一遍:模拟用户说“帮我写篇关于XX的文章”,看skill是否触发、槽位是否填对、输出是否合规。这一步能抓出trigger写错、状态串台这类问题。
用并发模拟多用户,看看瓶颈在哪:
import asyncio
async def hit():
# 调用skill核心逻辑
...
async def main():
await asyncio.gather(*[hit() for _ in range(50)])
asyncio.run(main())标注:这是示意代码,实际可以用locust或平台压测工具,重点看50并发下的耗时与失败率。
找5个不懂你实现的人,给他们一份“测试脚本”让他们照做,你在旁边只看不帮。他们卡住的地方,就是文档要补充的地方。我的那个内容创作skill就是这么测出来的——让同事拿内容21的真实需求走一遍,就发现“自查清单没说清代码怎么标版本”,回去马上补上。
平台审核必过四项(前面内容提过基础版,这里说进的是阶雷区):
name:≤20字,突出动作(“PDF发票提取器”就比“文件工具”好)。
description:“动作+场景”,搜索结果里一眼就能懂。
封面图:自己截图或做图,别用网上扒来的。
关键词:3-5个真实相关的词,别堆砌。
权限最小化:只申请用到的权限(比如只要“文件系统”,别要“网络”)。
数据用途声明:如果收集任何信息,写清楚干嘛用、存多久。
不碰用户隐私文件:别默认去扫描桌面所有文件。
后台盯住四个数据:安装量、调用成功率、平均耗时、评分。
我的节奏是:上线第一周每天看评论,差评24小时内回复;每月发一个minor版本修复高频问题。附录A.3里的“PDF发票提取器”上架3个月售出1200+次(来源:附录A.3盈利案例),核心就是持续迭代+响应快,而不是上线就躺平。
下面用我自己的一个真实skill做完整推演,覆盖上面所有环节。
创意:某次文章被平台判定异常流量拦截后,我们总结出了v2.0四铁律+14项自查。但每次写文章靠人脑记容易漏。痛点真实 → 决定固化成skill。
设计决策:
topic(必填)、type(默认技术案例)、has_code。开发:让SKILL.md当说明书,自查逻辑放references/里,真正流程放在scripts/。早期版本把逻辑全塞SKILL.md,难维护,拆出去后清晰很多。
测试:拿我前面发表的两篇内容的真实需求走UAT,发现“代码版本怎么标”说不清 → 补上了标注规范。
上架决策:这个skill目前沉淀在团队本地复用,内部价值已经够了。若要公开上架SkillHub,走的还是第五章的skillhub publish流程——这部分是基于平台规范的推演,技术细节真实可复刻,但我实际还没做公开上架的动作,不假装已经完成。
关键节点复盘:
不在于你会不会写SKILL.md,而在于你有没有把“创意→设计→开发→测试→上架→迭代”当成一个系统工程来做。别急着上架。先把前面每章的检查清单过一遍,尤其是创意阶段的“差异化”和上架阶段的“描述真实”——这两处是我和身边朋友被打回的高频原因。我那个skill从创意到能稳定用,前后改了4个版本,踩的坑比写的代码还多。但这不正是进阶该有的样子吗:不是一次就写对,而是一次次改对。
创意: 搜平台看拥挤度 [ ] 读差评找机会 [ ] 适配性三标准全中 [ ] 差异化明确
设计:意图树而非平铺trigger [ ] 槽位必填/选填分清 [ ] 状态机流程 [ ] 异常分可恢复/不可恢复 [ ] 多轮状态持久化
开发:SKILL.md只做说明书 [ ] 依赖声明+安装命令 [ ] 懒加载+缓存+超时 [ ] 中文路径处理
测试: pytest单测 [ ] skillhub test集成 [ ] 并发压测 [ ] 跨Agent/跨系统兼容 [ ] 5人UAT
上架:描述不编数字 [ ] 元数据优化 [ ] 权限最小化 [ ] 语义化版本 [ ] 上线首周盯评论
迭代:看安装量/成功率/耗时/评分 [ ] 差评24h回 [ ] 每月minor版本
标签:#SkillHub #技能开发 #AI Agent #进阶教程
互动引导:你上架skill时被打回过吗?什么理由?评论区聊聊,我帮你对照清单找原因。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。