将本地已编写完成的 SKILL.md 技能目录一键发布到多个公开市场(ClawHub、腾讯 SkillHub、 skills.sh、LobeHub、SkillsMP、Agensi、Coze、ClawMart),自动完成格式校验、双语 README、 敏感文件清理、Git 版本打标、串行发布与结果汇总。 当用户要把已经写好的 SKILL.md 同时分发到多个公开市场时使用——即使他们只说 "发布 skill"、"publish to clawhub"、"ship to marketplace"、"一键发布"或"上架 skill"。 不用于:纯本地 skill 管理、未完成 skill 的撰写、单个市场的单独发布指引。
Coding
auto-publisher-self-learning
Try it自进化技能自动发布器。一键将本地 skill 发布到 ClawHub 市场,自动处理 各类已知错误和异常,并在每次执行中记录失败模式、学习最优策略、 持续迭代改进发布流程。内置质量门禁、智能重试、版本冲突自动解决。 触发词:发布技能、上架skill、publish skill、部署skill、自动发布。
What it does
自进化技能自动发布器。一键将本地 skill 发布到 ClawHub 市场,自动处理 各类已知错误和异常,并在每次执行中记录失败模式、学习最优策略、 持续迭代改进发布流程。内置质量门禁、智能重试、版本冲突自动解决。 触发词:发布技能、上架skill、publish skill、部署skill、自动发布。
The skill document
自进化技能发布器
核心哲学
本技能不仅仅是一个发布工具——它拥有学习记忆系统,每次发布过程中:
- 记录所有遇到的错误和成功处理方式
- 下次遇到同类错误时自动应用已知方案
- 统计发布成功率、各步骤耗时、常见失败模式
- 持续优化发布策略(重试间隔、patch方案、质量门禁阈值)
简单说:用得越多,发布越顺,出错越少。
学习记忆系统(核心创新)
学习记忆文件
存储在 ~/.workbuddy/skills/auto-publisher-self-learning/learned_patterns.json
{
"version": 1,
"totalPublishes": 0,
"totalSuccesses": 0,
"patterns": {
"errors": {
"slug already taken": {
"count": 0,
"lastSolution": "append -v2 suffix",
"lastUsed": "",
"successRate": 0.0
},
"rate limit exceeded": {
"count": 0,
"lastSolution": "retry after 65min",
"lastUsed": "",
"optimalWaitMs": 3900000,
"successRate": 0.0
},
"400 acceptLicenseTerms": {
"count": 0,
"lastSolution": "patch CLI publish.js",
"lastUsed": "",
"successRate": 0.0
},
"401 Unauthorized": {
"count": 0,
"lastSolution": "ask user for new token",
"lastUsed": "",
"successRate": 0.0
},
"GitHub account must be at least 14 days old": {
"count": 0,
"lastSolution": "notify user to wait 14 days",
"lastUsed": "",
"successRate": 0.0
},
"Path must be a folder": {
"count": 0,
"lastSolution": "cd to skill dir and use . as path",
"lastUsed": "",
"successRate": 0.0
},
"Version already exists": {
"count": 0,
"lastSolution": "auto-bump patch version",
"lastUsed": "",
"successRate": 0.0
}
},
"quality_fails": {
"description_too_short": 0,
"missing_trigger_keywords": 0,
"frontmatter_invalid": 0,
"name_not_hyphen_case": 0,
"missing_description": 0
},
"env_checks": {
"clawhub_installed": true,
"clawhub_working": true,
"last_known_registry": "https://clawhub.ai"
}
}
}
自学习流程
每次发布后:
- 记录结果:成功/失败/部分成功
- 提取错误模式:从错误信息中匹配已知模式
- 更新统计:更新计数、成功率、最优方案
- 调整策略:如果某种方案的失败率上升,尝试替代方案
- 版本升级:当学习数据积累到一定程度,自动建议优化skill自身
执行流程
阶段一:环境准备与自检
# 1. 检查 clawhub CLI
which clawhub 2>/dev/null || npm install -g clawhub
clawhub version 2>/dev/null || clawhub --version
# 2. 检查学习记忆文件
LEARN_FILE="$HOME/.workbuddy/skills/auto-publisher-self-learning/learned_patterns.json"
if [ ! -f "$LEARN_FILE" ]; then
mkdir -p "$(dirname "$LEARN_FILE")"
echo '{"version":1,"totalPublishes":0,"totalSuccesses":0,"patterns":{"errors":{},"quality_fails":{},"env_checks":{}}}' > "$LEARN_FILE"
echo "🆕 初始化学习记忆文件"
fi
# 3. 读取学习数据
LEARN_DATA=$(cat "$LEARN_FILE")
# 4. 环境自检 — 根据学习数据快速跳过或执行
# 如果learning记录显示clawhub_working=true且已安装,跳过重复安装检查
阶段二:用户输入收集
从用户对话中提取以下信息(缺什么问什么,不问重复的):
| 参数 | 示例 | 说明 |
|---|---|---|
| skill目录路径 | ~/.workbuddy/skills/my-skill | 包含SKILL.md的文件夹 |
| 多技能批量发布 | ~/.workbuddy/skills/ | 可指定多个或整个目录 |
| slug(URL名称) | my-awesome-tool | 小写字母+连字符 |
| 版本号 | 1.0.0 | semver格式,自动递增 |
| changelog | Initial release | 发布说明 |
批量模式:如果用户提供的是skills目录(含多个子目录),自动扫描所有含SKILL.md的子目录,逐个发布。
阶段三:质量门禁(Quality Gate)
对每个要发布的skill执行三轮检查——每轮结果都记录到学习记忆:
Level 1 — 硬性拦截(必须通过)
- SKILL.md 文件存在
- YAML frontmatter 存在并可解析
- 含 name 字段(非空)
- 含 description 字段(非空)
- 含 version 字段(有效 semver)
- description 不含尖括号
<>
Level 2 — 警告(建议修复)
- description 至少 20 字
- 含触发词("触发词:" 或 "trigger:")
- yaml 中 agent_created: true
- visibility 字段存在
Level 3 — 质量评分
- 有 allowed-tools 声明
- 有使用示例或操作步骤
- 错误处理方法或边界说明
- 版本号 ≥ 1.0.0
学习记录:每次quality fail都记录到 quality_fails,当同一类型失败超过3次时,在下一次自动在质量门禁中提前预警。
阶段四:Patch CLI 的已知 Bug(根据学习记忆判断)
从学习记忆中读取是否有已知bug需要patch:
# clawhub CLI 已知 bug: publish 时缺少 acceptLicenseTerms
PUBLISH_JS=$(find /usr/local/lib /usr/lib /usr/local/nvm* ~/.nvm -name "publish.js" -path "*/clawhub/*" 2>/dev/null | head -1)
# 如果没找到,检查当前node安装路径
if [ -z "$PUBLISH_JS" ]; then
PUBLISH_JS=$(find / -path "*/node_modules/clawhub/*" -name "publish.js" 2>/dev/null | head -1)
fi
if [ -n "$PUBLISH_JS" ]; then
grep -q "acceptLicenseTerms" "$PUBLISH_JS" && echo "✅ 已 patch" || {
sed -i 's/skillName:/acceptLicenseTerms: true, skillName:/' "$PUBLISH_JS"
echo "🔧 已应用 acceptLicenseTerms patch"
# 记录到学习记忆
}
fi
阶段五:执行发布
cd "$SKILL_DIR" && clawhub publish "." \
--slug "$SLUG" \
--name "$DISPLAY_NAME" \
--version "$VERSION" \
--changelog "$CHANGELOG" \
--tags "latest" \
--json
阶段六:智能错误处理(3次重试 + 学习)
捕获错误 → 匹配学习记忆中的模式 → 应用已知方案 → 如新错误则记录并尝试通用方案:
| 错误模式 | 学习后的处理方案 |
|---|---|
Path must be a folder | 自动cd到目录后用 . 替代完整路径 |
slug already taken / 409 | slug追加 -v2 或递增后缀 |
rate limit exceeded / 429 | 从学习记忆中读取 optimalWaitMs,等待后重试;更新最优等待时间 |
acceptLicenseTerms (400) | 重新patch CLI后重试 |
401 Unauthorized | 提示用户重新生成token |
Version already exists | 自动 bump patch 版本(1.0.0 → 1.0.1)后重试 |
GitHub account must be at least 14 days old | 记录到学习,进入等待模式 |
| 未知错误 | 记录完整错误信息到 unknown_errors,尝试通用重试(最多3次) |
学习更新逻辑(每次重试后):
# 伪代码
if retry_successful:
pattern["successRate"] = (pattern["successRate"] * pattern["count"] + 1) / (pattern["count"] + 1)
pattern["lastSolution"] = current_solution
else:
pattern["successRate"] = (pattern["successRate"] * pattern["count"]) / (pattern["count"] + 1)
# 如果某种方案成功率低于30%,自动尝试下一种方案
if pattern["successRate"] < 0.3:
try_alternative_solution(pattern)
pattern["count"] += 1
pattern["lastUsed"] = current_time
阶段七:验证上架
clawhub search "$SLUG" 2>/dev/null | grep "$SLUG"
# 或
curl -s "https://clawhub.ai/api/v1/skills/$SLUG" | grep -q "$SLUG"
阶段八:总结与学习报告
每次发布完成后,输出:
📊 发布报告
━━━━━━━━━━━━━━━━━
✅ 成功: my-skill@1.0.0 → https://clawhub.ai/skills/my-skill
📦 安装: clawhub install my-skill
🧠 自学习统计(累计)
━━━━━━━━━━━━━━━━━
📈 总发布次数: 15
✅ 成功率: 86.7%
🔁 自动重试次数: 3
🎯 重试挽救成功率: 66.7%
📝 已学习模式: 7个
⚠️ 常见失败: rate_limit_exceeded (2次)
🧪 建议: 尝试在非高峰时段发布(UTC 02:00-06:00)
💡 自我改进建议
━━━━━━━━━━━━━━━━━
- "description_too_short" 失败次数已达3次,建议在质量门禁中加强预警
- 发布耗时中位数 12秒,较上次优化了 15%
快速调用示例
用户说:"把我新做的my-tool技能发布到市场"
本技能自动:
- 扫描
~/.workbuddy/skills/找到 my-tool - 检查质量门禁 → 通过
- 检查学习记忆 → clawhub已安装,无需重复检查
- 执行发布 → 成功
- 更新学习记忆
- 输出报告
用户说:"把新创建的10个技能全部发布"
本技能自动:
- 扫描用户指定的目录 → 找到10个含SKILL.md的子目录
- 按批处理逐个发布
- 每个失败自动重试(使用学习记忆中的方案)
- 输出汇总报告
学习记忆存储
| 文件 | 用途 |
|---|---|
learned_patterns.json | 错误模式、成功率、最优方案 |
publish_history.json | 每次发布的详细记录(技能名、耗时、结果) |
quality_trends.json | 质量门禁统计数据、趋势分析 |
自我迭代机制
当本技能检测到以下条件时,自动建议更新自身:
- 累计发布 ≥ 20 次:建议根据错误统计优化流程
- 某个新模式出现 ≥ 3 次:建议将新模式固化到代码中
- 成功率连续下降:建议审查质量门禁阈值
- CLI 更新检测到:建议重新验证 patch 是否仍需要
自我更新方式:向用户提交修改建议(可读报告),由用户决定是否执行。
Related skills
将当前项目中的 Skill 发布到 GitHub 并同步到 ClawHub。新项目自动走完流程,已有仓库的项目会总结变更、确认提交信息和建议版本号。
给任意 WorkBuddy 技能注入「自进化学习系统」,让它越用越好用、越用越高效。 通过通用 learner.py 记录每次使用的成败与用户偏好,自动复盘并给出改进建议。 一键批量注入:复制学习模块、初始化记忆文件、在 SKILL.md 追加自进化章节。 适用:准备发布或已上线的技能、想加自我迭代能力的任何技能。 触发词:自进化、自我复盘、自动迭代、越用越好用、学习系统、skill 自我改进。
技能发布 — 将已有 Skill 三平台同步推送到 GitHub + ClawHub + SkillHub。当用户说 技能发布到三平台/发布技能更新/迭代技能发布 时触发。⚠️ 本技能的行为范围(用户须知):① 推送代码到外部平台(GitHub/ClawHub/SkillHub),操作对外可见且可能不可逆 ② 同步到本地 TRAE 安装目录(会覆盖已有版本) ③ 在本地 docs/knowledge/ 追加发布日志。执行前会向用户确认。含安全审查、隐私清洗、版本号查重、仓库结构生成、ClawHub 自动文件排除、SkillHub dry-run 预检。Do NOT use for creating skill content, general coding, or non-skill projects.
Multi-hub skill publisher. Sign → Audit (placeholder) → Pack (clean tar.gz with exclude rules) → Publish to clawhub.com, skillhub.cn (Tencent Cloud), or GitH...
Publish-ready review for ClawHub skills and plugins. 在正式发布前揪出文件缺失、版本不一致、环境声明、安全风险和同质化问题。