news 2026/9/28 21:20:16

如何为cc-skills-golang贡献技能:从技能创建流程到版本管理与ClawHub发布的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何为cc-skills-golang贡献技能:从技能创建流程到版本管理与ClawHub发布的完整指南

如何为cc-skills-golang贡献技能:从技能创建流程到版本管理与ClawHub发布的完整指南

【免费下载链接】cc-skills-golang🧑‍🎨 A collection of Golang agentic skills that works项目地址: https://gitcode.com/gh_mirrors/cc/cc-skills-golang

cc-skills-golang 是一个面向 Go 项目的AI Agent 技能(Golang Agent Skills)开源合集,它为 Claude Code、Codex、Gemini CLI、Cursor、Copilot 等编程助手提供可复用的 Golang 领域指令集:代码风格、错误处理、并发、安全、性能优化……按需加载、不占上下文。想为它贡献一个 Golang 技能?这篇文章带你走完整条路:创建 SKILL.md、控制 Token 预算、跑对抗式评测、升级版本号,最后用 ClawHub 一键发布。

先认识仓库:一个技能长什么样 🧩

仓库中每个技能都是 skills/ 目录下的一个独立文件夹,以 skills/golang-stay-updated/SKILL.md 为例,标准结构是:

目录/文件作用是否必需
SKILL.md元数据(YAML frontmatter)+ 正文指令必需
references/深度文档,按需懒加载可选
assets/模板、配置文件等非 Markdown 资源可选
scripts/可执行脚本,脚本内容不进上下文可选
evals/evals.json对抗式评测用例强烈建议

所有贡献规范都集中在 CLAUDE.md 里——它明确了一条总原则:"仓库级事实写在 CLAUDE.md,具体操作流程写在技能里",两处内容不要互相复制,避免两份事实源逐渐漂移。

创建技能:目录命名与 Frontmatter 一步到位 📝

新技能放在skills/<skill-name>/SKILL.md,目录名必须与 frontmatter 的name完全一致(小写字母、数字、连字符)。一份合格的 frontmatter 长这样:

--- name: golang-example description: "Golang skill for X. Use when doing Y." license: MIT compatibility: Designed for Claude Code, Codex or similar harness. metadata: author: your-name version: "1.0.0" openclaw: emoji: "🔧" requires: bins: [go] install: [] allowed-tools: Read Edit Write Glob Grep Bash(go:*) Bash(git:*) Agent ---

最容易踩的 3 个坑(摘自 CLAUDE.md 的 Frontmatter 章节):

  1. version必须嵌在metadata下——顶层写version:会在严格校验器处直接打包失败;
  2. description要加引号——描述里一旦出现"冒号+空格"会悄悄破坏 YAML 解析,技能会从列表中静默消失且没有任何报错;
  3. 字段只保留规范内的六个 + 项目要求项,不要添加顶层扩展字段。

写好 description:技能能不能被触发的关键 🔑

description是模型决定是否加载技能的唯一依据,写不好等于白写。项目给出的黄金法则:

  • 先说做什么,再说何时用,顺序不能反;
  • 用第三人称(❌ "I can help you…" ✅ "Use when the user mentions…");
  • 点名用户会真实输入的具体名词:文件扩展名、工具名、导入路径;
  • 必须包含 "Golang" 一词,保证只在 Go 项目触发;
  • 相邻技能要写边界条款:Do NOT use for X — use <sibling> instead.;
  • 描述只讲 what 和 when,绝不写步骤——否则模型会照着描述执行、跳过正文。

allowed-tools 声明:最小权限原则

每个技能必须声明allowed-tools,从默认集合Read Edit Write Glob Grep Bash(go:*) Bash(golangci-lint:*) Bash(git:*) Agent出发按需添加,例如 gRPC 技能加Bash(protoc:*)、调试技能加Bash(dlv:*)。注意正文里只描述能力,不出现工具名——正文写 "ask the user",而不是AskUserQuestion。

正文怎么写:Token 预算是硬约束 📏

技能正文是"每次调用都要付费"的常驻内容,所以项目对 Token 有严格预算(CLAUDE.md Token budgets 章节):

预算上限
每个 description≈100 token,≤1,000 字符
每个 SKILL.md推荐 <2,500 token,<500 行(目标 250 行内)
技能全部文件(含 references)≤10,000 token
会话中同时加载的所有 SKILL.md≈10,000 token

超出预算怎么办?不要压缩文字,把细节拆到references/——references 只在被引用时加载,不占常驻预算。同时保持引用只有一层深,嵌套链会被截断读取;超过 100 行的 reference 文件要加目录。

正文风格上,项目要求祈使句开头、每条规则自带"为什么"(用破折号或 because 接在同一句里),可枚举内容一律用表格和清单。

技能架构:原子化与交叉引用 🕸️

项目把技能设计为原子化、互相引用的单元,核心纪律是"每个概念只在一个技能里存在":

  • 概念只属于一个"拥有者"技能,其他技能用全限定标识符交叉引用:samber/cc-skills-golang@golang-security;
  • 引用写在反引号里,绝不裸写@skill——会被支持 @ 引用的运行时当作强制加载指令,整个技能被拉进上下文烧掉预算;
  • 拆分/合并技能时,记得同步更新所有相关交叉引用。

另外,如果技能范围变了或增删了技能,还要更新 skills/golang-how-to/SKILL.md——这个"编排器"技能维护着技能加载表和冲突消解表。

版本管理:三处版本号必须一致 🔢

这是贡献流程里 CI 会强制检查的部分,改一个技能前请先搞清楚有两级版本:

  1. 技能版本——SKILL.md frontmatter 里的metadata.version,遵循 semver(a.b.c),新技能从1.0.0起步;
  2. 插件版本——.claude-plugin/plugin.json、.cursor-plugin/plugin.json 和 gemini-extension.json三处必须完全相同(当前均为2.0.1)。

修改技能后,必须在合并前同时递增这两级版本,CI 会在 PR 上检查。还有两个细节:

  • 库类技能要维护metadata.openclaw.skill-library-version,记录技能是针对哪个库版本写的,便于日后检测过期(仓库建议每月跑一次过期检查);
  • 不要自动递增版本——按规范应把"升级版本号"提醒给开发者确认。

评测与发布前检查清单 ✅

对抗式评测:先证明技能"有用"

评测用例存放在skills/{name}/evals/evals.json,可以参考 skills/golang-safety/evals/evals.json 的结构。设计要求非常严格:评测必须"对抗式"——每个用例都要有模型不带技能时会掉进去的"陷阱"(比如"实现共享计数器"诱使模型写出竞态条件),测试技能独有的判断力而非模型本来就会的常识。规模参考:每 1,000 token 技能内容约 10 条断言,最少 50 条。

跑完后把结果追加到 EVALUATIONS.md(只追加、不覆盖历史),并回写 README 的技能统计表——整体数据是 41 个技能 3,439 条断言,带技能 97% vs 不带 57%,提升 40 个百分点。

提交前 7 步检查清单

按 CLAUDE.md "After updating a skill" 章节执行:

  1. 跑可移植性 grep,确认正文没有漏写的工具名;
  2. npx prettier --write+markdownlint-cli2格式化并过 lint(先格式化再数 Token);
  3. 跑snyk-agent-scan修掉 W011/W012/W001 提示注入告警;
  4. 用tiktoken-cli实测 Description / SKILL.md / Directory 三项 Token;
  5. 更新 README 表格里的 Token 计数和 Error rate gap 列;
  6. 递增技能metadata.version与三处插件版本;
  7. 通过/skill-creator跑评测并更新 EVALUATIONS.md。

另外,所有实现工作都应在 git worktree 中进行(.claude/worktrees/),不要直接在检出分支上动手。

ClawHub 发布:一条脚本走天下 🚀

仓库根目录的 clawhub-publish.sh 就是发布入口,逻辑非常直白:

  1. 遍历skills/*/,逐个读取 SKILL.md frontmatter 中的version;
  2. 跳过没有版本或版本为0.0.0的技能;
  3. 执行npx -y clawhub publish <技能目录> --version <版本>发布到 ClawHub;
  4. 本地手动运行时,每发布 5 个技能会sleep 3600——因为 ClawHub 限流是每小时 5 个、每天 20 个;
  5. 在 CI 中运行时通过CLAWHUB_TOKEN环境变量登录,不再休眠等待。

每个技能 frontmatter 里的metadata.openclaw块(emoji、homepage、requires.bins、install)就是 ClawHub 的元数据,负责展示与依赖自动安装——这也是发布前必须写全的字段。

写在最后:贡献的三条心法 💡

  • 原子化:宁可小而聚焦,不要大而全,让其他技能来引用你;
  • 教推理而非罗列规则:每条建议带上"为什么",模型才能处理你没预料的边缘情况;
  • 把 Token 当预算花:正文精瘦、细节下沉 references、脚本不进上下文。

符合这三条的技能,才配得上仓库里那句宣言——"No AI slop here"。祝你的第一个技能顺利合入并发布到 ClawHub!

【免费下载链接】cc-skills-golang🧑‍🎨 A collection of Golang agentic skills that works项目地址: https://gitcode.com/gh_mirrors/cc/cc-skills-golang

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 21:20:13

大模型三层架构实战:输入输出处理才是AI应用落地的胜负手

1. 大模型三层架构到底在拆什么第一次听到“大模型三层架构”这个说法&#xff0c;很多人会下意识往MVC、物联网三层架构那边联想&#xff0c;觉得是不是又搞了个新名词来包装老概念。其实不是。我做了几年AI应用落地&#xff0c;从早期调API拼Demo&#xff0c;到后来自己搭推理…

作者头像 李华
网站建设 2026/9/28 21:19:16

橡胶软接头执行标准怎么看:先确认标准范围和产品类型

看橡胶软接头执行标准&#xff0c;正确顺序是先确认标准覆盖的范围&#xff0c;再把手里的产品类型对应进去。目前常被引用的参考口径是 GB/T 26121-2010《橡胶软接头》&#xff0c;它有官方全文&#xff0c;规定了术语、分类、要求、试验、检验、标志、包装与贮运。需要说明&a…

作者头像 李华
网站建设 2026/9/28 21:18:46

UVA-1149 装箱 题解答案代码 算法竞赛入门经典第二版

GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 方法比较简单&#xff1a; 首先选择当前最大的元素&#xff0c;然后再选一个最大为l-这个元素 的元素&#xff0c;且是符合条件中最大的。 存储使用map&#xff0c;好处如下&#xff1a; 1…

作者头像 李华
网站建设 2026/9/28 21:17:57

MangoDisk CLI使用教程:自动化磁盘清理,JSON输出轻松接入脚本

MangoDisk CLI使用教程&#xff1a;自动化磁盘清理&#xff0c;JSON输出轻松接入脚本 【免费下载链接】MangoDisk Safety-first disk cleaner and space analyzer for macOS and Windows, with duplicate cleanup, app uninstall, startup management, system optimization, an…

作者头像 李华