news 2026/5/23 0:11:44

从零到一:手撸一个让队友追着夸的 Claude Skill

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零到一:手撸一个让队友追着夸的 Claude Skill

📖 前置阅读:《Claude Skills 入门指南》

前言:一个让我每天节省10分钟的小发明

我们团队有个规定:commit message 必须按规范来。格式是<type>(<scope>): <subject>,类型只能是 feat/fix/docs 那一套。

理想很丰满。

现实是——总有人写"修了个bug"、“update”、甚至"111"(对,就是三个1)。每次Code Review我都要花时间纠正这些"灵魂commit",暴躁(peace🤒)。

后来我花了20分钟,给 Claude 写了一个 Skill。

现在?我只要说一句"帮我写个commit message",它就能自动分析 git diff,输出规范的提交信息。每天省下来的吐槽时间,起码能多喝两杯咖啡。

今天,我就手把手带你复刻这个 Skill。

完成后你会获得:

  • 一个真正能用的 Git Commit 助手
  • 创建任何 Skill 的通用方法论
  • 在团队里装一波的资本

预计时间:读 15 分钟,做 20 分钟。

Let’s go.


一、先搞清楚东西往哪放

创建 Skill 之前,你得知道它应该住在哪儿。

Claude Skills 有三种"户籍":

类型住址谁能用
个人 Skill~/.claude/skills/你自己,在所有项目里
项目 Skill.claude/skills/项目里的所有人(可以git共享)
插件 Skill通过市场安装看插件作者心情

今天我们做一个个人 Skill——这样不管你在哪个项目,都能用。就像你的编辑器配置一样,跟着你走。


二、Skill 长什么样?

一个 Skill 其实就是一个文件夹。

完整版长这样:

我的牛逼技能/ ├── SKILL.md # 灵魂文件,必须有 ├── reference.md # 参考资料(可选) ├── examples.md # 示例(可选) ├── scripts/ # 脚本(可选) │ └── helper.py # 比如统计用的Python脚本 └── templates/ # 模板(可选) └── template.txt

极简版?一个文件就够:

我的技能/ └── SKILL.md # 就这一个

我们从极简版开始。能用三行解决的问题,绝不写三十行。


三、SKILL.md 怎么写?模板来了

这是整个Skill的灵魂。它由两部分组成:

头部:元数据(Frontmatter)

---name:git-commit-helperdescription:分析git diff,生成规范的commit message---

就这两个字段,告诉 Claude:“嘿,我叫xxx,我能干xxx”。

注意

  • name:小写+连字符,别用空格
  • description:写清楚能干啥、什么时候用。这玩意儿决定了 Claude 会不会"认出"需要用你的 Skill

正文:具体指令

# Git Commit Helper ## 什么时候用我 当用户让你帮忙写 commit message 的时候 ## 怎么做 1. 先跑 `git diff --staged` 看看改了啥 2. 分析改动类型(功能还是bug修复?) 3. 按规范格式输出 commit message ## 格式要求 ...

就像写一份给新员工的SOP——你怎么教实习生,就怎么写这个文件。


四、实战!创建 Git Commit 助手

第一步:建文件夹

打开终端:

# 创建目录mkdir-p ~/.claude/skills/git-commit-helper# 进去cd~/.claude/skills/git-commit-helper

第二步:创建 SKILL.md

用你喜欢的编辑器:

# VS Code 用户code SKILL.md# Vim 党vimSKILL.md# 或者简单粗暴nanoSKILL.md

第三步:把这段复制进去

--- name: git-commit-helper description: 分析git diff,自动生成符合 Conventional Commits 规范的 commit message。当用户需要写commit、提交代码、或让你看看改了什么的时候使用。 --- # Git Commit 助手 我是一个帮你写 commit message 的技能,确保每次提交都规范、专业、有意义。 ## 什么时候用我 - 用户让你帮忙写 commit message - 用户想看看暂存了什么改动 - 用户准备提交代码但不知道怎么描述 ## 工作流程 ### 1. 先看看改了啥 运行 `git diff --staged` 查看暂存的改动。 如果啥都没暂存?告诉用户:"大哥,你得先 `git add` 啊"。 ### 2. 分析改动 看 diff 的时候注意: - 改了哪些文件 - 是加功能、修bug、还是重构 - 影响范围多大 ### 3. 生成 commit message 格式必须是: <type>(<scope>): <subject> <body> <footer> #### 类型对照表 | type | 什么时候用 | |------|-----------| | feat | 新功能 | | fix | 修bug | | docs | 只改了文档 | | style | 格式调整(空格、分号这种) | | refactor | 重构代码(不改功能也不修bug) | | perf | 性能优化 | | test | 加测试 | | chore | 杂活(依赖更新、构建脚本等) | #### 写 subject 的规则 - 用祈使句("Add feature" 不是 "Added feature") - 不超过50字符 - 首字母大写 - 结尾不加句号 ## 示例 ### 例子1:加了个功能 feat(auth): Add password reset functionality 实现了密码重置流程,用户可以通过邮箱验证来重置密码。 Closes #42 ### 例子2:修了个bug fix(api): Handle null response from external service 外部服务有时候返回空数据,之前会报 TypeError。 现在加了空值检查,优雅处理这种情况。 ### 例子3:改了文档 docs(readme): Update installation instructions 新增了 Docker 安装方式,明确了 Node.js 版本要求。 ## 特殊情况处理 - 没有暂存的改动*:提醒用户先 `git add` - 改动太多太杂:建议拆成多个commit - 不知道改了啥:问用户"这次改动主要是想做什么" ## 小贴士 1. 一个 commit 只做一件事 2. commit message 是写给未来的自己看的 3. 如果关联了 Issue,记得在 footer 里加 `Closes #xxx`

第四步:验证一下

# 看看文件在不在ls~/.claude/skills/git-commit-helper/# 看看内容对不对head-10 ~/.claude/skills/git-commit-helper/SKILL.md

应该能看到我们刚写的内容。

第五步:测试!

打开 Claude Code,随便找个有 Git 的项目:

# 随便改个文件echo"// test">>test.js# 暂存gitaddtest.js# 然后问 Claude

对 Claude 说:“帮我看看暂存的改动,写个 commit message”

如果一切正常,它应该会:

  1. 自动识别到你的 Skill
  2. git diff --staged
  3. 输出一个漂亮规范的 commit message

🎉 恭喜,你的第一个 Skill 活了!


五、进阶:给 Skill 装个"外挂"

基础版能用了,但有时候你想更"牛逼"一点——比如自动统计改动行数、列出改了哪些文件。

这时候可以加个脚本。

创建脚本目录

mkdir-p ~/.claude/skills/git-commit-helper/scripts

写一个分析脚本

创建~/.claude/skills/git-commit-helper/scripts/analyze_diff.py

#!/usr/bin/env python3""" 分析 git diff 的统计信息 用法: python analyze_diff.py """importsubprocessimportsysimportreimportjsondefget_staged_diff():"""获取暂存区的 diff 统计"""result=subprocess.run(['git','diff','--staged','--stat'],capture_output=True,text=True)returnresult.stdout,result.returncodedefparse_stats(diff_output):"""解析 diff 输出"""lines=diff_output.strip().split('\n')ifnotlinesorlines[0]=='':return{'has_changes':False,'message':'没有暂存的改动。先用 git add 加点东西?'}# 解析最后一行的汇总summary=lines[-1]iflineselse''files=0insertions=0deletions=0files_match=re.search(r'(\d+) files? changed',summary)ins_match=re.search(r'(\d+) insertions?',summary)del_match=re.search(r'(\d+) deletions?',summary)iffiles_match:files=int(files_match.group(1))ifins_match:insertions=int(ins_match.group(1))ifdel_match:deletions=int(del_match.group(1))# 解析改动的文件列表changed_files=[]forlineinlines[:-1]:if'|'inline:filename=line.split('|')[0].strip()changed_files.append(filename)return{'has_changes':True,'files_count':files,'insertions':insertions,'deletions':deletions,'files':changed_files}defmain():diff_output,code=get_staged_diff()ifcode!=0:print(json.dumps({'error':'不在 Git 仓库里,或者 git 命令有问题'}))sys.exit(1)stats=parse_stats(diff_output)ifnotstats['has_changes']:print(f"⚠️{stats['message']}")returnprint(f"📊 改动统计:")print(f" 📁 文件数:{stats['files_count']}")print(f" ➕ 新增行: +{stats['insertions']}")print(f" ➖ 删除行: -{stats['deletions']}")print(f"\n📑 改动的文件:")forfinstats['files']:print(f" •{f}")if__name__=='__main__':main()

添加执行权限

chmod+x ~/.claude/skills/git-commit-helper/scripts/analyze_diff.py

在 SKILL.md 里告诉 Claude 这个脚本

在 SKILL.md 的"工作流程"部分加上:

### 0. 快速预览(可选) 想快速看看改动情况?跑这个脚本: ```bash python ~/.claude/skills/git-commit-helper/scripts/analyze_diff.py

它会告诉你改了多少文件、加了多少行、删了多少行。

--- ## 六、分享给队友(或全世界) 好东西不能自己藏着。 ### 方法1:放到项目里(团队共享) ```bash # 复制到项目的 .claude/skills 目录 cp -r ~/.claude/skills/git-commit-helper /你的项目/.claude/skills/ # commit 进去 cd /你的项目 git add .claude/skills/git-commit-helper git commit -m "chore: add git-commit-helper skill for the team" git push

队友拉代码后,Claude 会自动识别项目里的 Skill。

方法2:发到 GitHub

  1. 创建一个公开仓库
  2. 把你的 Skill 推上去
  3. 提交到这些 Awesome List:
    • ComposioHQ/awesome-claude-skills
    • VoltAgent/awesome-claude-skills

说不定哪天就有人给你发感谢邮件🤑。


七、踩坑指南:我帮你踩过的坑

坑1:Claude 不用我的 Skill

症状:你明明创建了,但 Claude 根本不理它。

排查

# 文件在不在?ls~/.claude/skills/git-commit-helper/SKILL.md# YAML 格式对不对?head-5 ~/.claude/skills/git-commit-helper/SKILL.md

常见问题

  • ---分隔符打成了------
  • name里有大写字母或空格
  • description太模糊,Claude 没法判断什么时候用

坑2:提示 “Skill has errors”

症状:Claude 说 Skill 有错误。

多半是 YAML 语法问题

  • 冒号后面忘了加空格
  • 缩进用了Tab(应该用空格)
  • 特殊字符没转义

坑3:脚本跑不起来

排查

# 有执行权限吗?ls-la ~/.claude/skills/git-commit-helper/scripts/# 直接跑一下试试python3 ~/.claude/skills/git-commit-helper/scripts/analyze_diff.py

八、收工!

恭喜你,现在你拥有了:

✅ 一个真正能用的 Git Commit 助手
✅ 创建任何 Skill 的方法论
✅ 可能在团队里变成"这人挺会玩"的口碑

回顾一下我们做了什么

步骤内容
选址确定 Skill 放在哪个目录
建房创建文件夹和 SKILL.md
装修写清楚元数据和指令
验收测试 Skill 是否工作
升级可选地加上脚本
分享通过Git或社区共享

下一步

想继续升级?推荐阅读:

  • 《Claude Skills 高级玩法》——学习多文件组织、权限控制、性能优化
  • 《2025 必装的 20 个 Claude Skills》——看看大佬们都在用什么

小作业

试着创建一个自己的 Skill:

  1. 会议纪要格式化器——把杂乱的会议记录整理成规范格式
  2. API 文档生成器——给代码生成接口文档
  3. Code Review 检查清单——审代码时的标准化检查流程

互动

💬你的第一个 Skill 是什么?踩了什么坑?

评论区见。如果这篇帮到了你,点赞 + 收藏 + 关注,下次更新不迷路。

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

3步实现家庭AI集群智能负载均衡:Exo资源配额终极指南

3步实现家庭AI集群智能负载均衡&#xff1a;Exo资源配额终极指南 【免费下载链接】exo Run your own AI cluster at home with everyday devices &#x1f4f1;&#x1f4bb; &#x1f5a5;️⌚ 项目地址: https://gitcode.com/GitHub_Trending/exo8/exo 还在为家中设备…

作者头像 李华
网站建设 2026/5/22 18:40:13

SCPI Parser终极指南:免费开源仪器控制命令解析库完全掌握

SCPI Parser终极指南&#xff1a;免费开源仪器控制命令解析库完全掌握 【免费下载链接】scpi-parser Open Source SCPI device library 项目地址: https://gitcode.com/gh_mirrors/sc/scpi-parser 在当今自动化测试和仪器控制领域&#xff0c;SCPI Parser作为一款免费开…

作者头像 李华
网站建设 2026/5/22 8:19:09

EmotiVoice语音合成API计费模式设计思路

EmotiVoice语音合成API计费模式设计思路 在虚拟助手、数字人、有声内容创作日益普及的今天&#xff0c;用户对语音合成的要求早已超越“能说话”这一基本功能。人们期待的是富有情感、具备个性、甚至带有“人格”的声音输出——这正是EmotiVoice这类高表现力TTS引擎迅速崛起的技…

作者头像 李华
网站建设 2026/5/22 11:25:45

微积分笔记(2):数列的极限(上)

2.1 数列的极限本文旨在以通俗的语言将讲解微积分&#xff0c;尽量以零起点角度将复杂的微积分讲解明白。 引用本文内容必须注明“参考文档&#xff1a;《微积分笔记》作者&#xff1a;黄邦勇帅(原名&#xff1a;黄勇)”&#xff0c;或者注明转发出处&#xff0c;本文作者拥有完…

作者头像 李华
网站建设 2026/5/20 9:59:42

3D标签云终极指南:如何用JavaScript创建炫酷视觉特效

3D标签云终极指南&#xff1a;如何用JavaScript创建炫酷视觉特效 【免费下载链接】TagCloud ☁️ 3D TagCloud.js rotating with mouse 项目地址: https://gitcode.com/gh_mirrors/ta/TagCloud 想要为你的网站增添令人惊艳的3D视觉效果吗&#xff1f;TagCloud.js正是你需…

作者头像 李华
网站建设 2026/5/22 19:23:43

微积分笔记(3):数列的极限(下)

微积分笔记(3)&#xff1a;数列的极限(下)本文旨在以通俗的语言将讲解微积分&#xff0c;尽量以零起点角度将复杂的微积分讲解明白。 引用本文内容必须注明“参考文档&#xff1a;《微积分笔记》作者&#xff1a;黄邦勇帅(原名&#xff1a;黄勇)”&#xff0c;或者注明转发出处…

作者头像 李华