3.1 实战一:变更总结技能包
引言
小王每天下班前都要回顾今天改了什么、有没有遗漏风险、提交信息怎么写。这个流程每天都在重复——完美的技能包候选。
通用需求(所有工具适用)
变更总结能力应该做到:
- 自动获取当前 git diff 和未跟踪文件
- 总结主要变更(2-3 个要点)
- 标记潜在风险
- 建议提交信息
Claude Code 实现(详细示例)
创建 .claude/skills/summarize-changes/SKILL.md:
markdown
---
name: summarize-changes
description: 总结未提交的变更并标记风险。当说"总结变更"、"看看改了什么"、"变更概览"时使用
disable-model-invocation: true
---
## 当前变更
!`git diff HEAD`
## 未跟踪文件
!`git ls-files --others --exclude-standard`
## 指令
1. 用 2-3 个要点总结主要变更(关注改了什么、为什么改)
2. 标记任何潜在风险:
- 是否删除了重要代码
- 是否修改了公共接口
- 是否涉及安全敏感操作
3. 建议一条 conventional commits 格式的提交信息设计决策解析
为什么设 disable-model-invocation: true?
虽然总结变更是只读操作,但小王希望主动控制何时查看变更,而不是 Claude 在每次对话中自动触发。
💡 只读操作的 disable-model-invocation 判断原则
有副作用 → 必须 disable-model-invocation: true(部署、提交、发送消息)
只读操作 → 根据使用频率决定:
- 高频只读(如代码 lint)→ 可自动触发,因为经常需要
- 低频只读(如变更总结)→ 建议手动触发,避免干扰正常对话
为什么用 !git diff HEAD``?
Claude 需要看到实时的 diff 数据才能做出准确判断。如果只是写"请查看 git diff",Claude 还要自己执行命令——多一步,多一次不确定性。
为什么不把 git log 也注入?
git log 可能很长,会消耗大量 token。如果需要,可以单独写一个 /project-status 技能包(我们在 3.3 节会做)。
其他工具等效做法
Cursor 用户
在设置中创建 Custom Command,Prompt 内容:
markdown
请执行以下操作总结当前变更:
1. 运行 `git diff HEAD` 查看变更内容
2. 运行 `git ls-files --others --exclude-standard` 查看未跟踪文件
3. 用 2-3 个要点总结主要变更
4. 标记潜在风险(删除重要代码、修改公共接口、安全敏感操作)
5. 建议 conventional commits 格式的提交信息Windsurf 用户
在 .windsurfrules 中添加:
yaml
change-summary:
globs: "**/*"
instructions: |
当用户询问变更总结时:
- 先执行 git diff HEAD 查看变更
- 分析并总结主要变更(2-3 个要点)
- 标记潜在风险
- 建议提交信息格式测试(Claude Code)
- 修改几个文件,不提交
- 输入
/summarize-changes - 检查 Claude 的输出是否包含:变更总结、风险标记、提交信息建议
练习
🎯 练习题
(Claude Code 用户)在 summarize-changes 技能包中增加一个功能:显示当前分支名和与 main 分支的差异数量。
提示:
- 用
!git branch --show-current`` 获取分支名 - 用
!git rev-list --count HEAD ^main`` 获取差异提交数
(其他工具用户)为你的工具创建类似的变更总结能力。
本节小结
📌 本节核心要点
- 变更总结技能包:5 行指令 + 2 个动态注入(Claude Code),覆盖日常变更回顾需求
- 设计决策:只读也建议手动控制——避免干扰正常对话
- 动态注入选择:只注入 AI 绝对需要的实时数据,避免 token 浪费
- 其他工具:在 Prompt 中描述"执行命令获取数据"的要求,让 Agent 自行执行
思考题
- 如果你的项目用的是 pnpm 而不是 npm,这个技能包需要改吗?为什么?
- 你会把这个技能包放在项目级还是个人级?为什么?
- (其他工具用户)你使用的工具如何实现"主动控制何时查看变更"?有没有等价的禁止自动触发机制?
下一节预告
下一个实战更复杂——Issue 修复技能包。它会用到参数、动态注入和工具预授权(Claude Code 特性),覆盖一个完整的工作流。