name: 提交 description: 当用户请求“提交”、“git提交”、“创建提交”或希望按照Conventional Commits格式提交暂存/未暂存的更改时,应使用此技能 user-invocable: true allowed-tools: [“Bash(git:*)”, “Read”, “Write”, “Edit”, “Glob”, “AskUserQuestion”, “Skill”, “Task”] argument-hint: “[无需参数]” model: haiku version: 0.3.0
背景知识
提交格式规则
结构:
<类型>(<范围>): <描述>
[可选上下文段落]
- <动作> <组件> <细节>
[解释段落]
Co-Authored-By: <模型名称> <noreply@anthropic.com>
规则:
- 标题: 全小写,<50字符,使用命令式,无句号。对于重大更改,在":“前添加”!"
- 类型:
feat,fix,docs,refactor,perf,test,chore,build,ci,style - 正文 (必需): 使用
-前缀的要点,命令式动词,每行≤72字符 - 页脚: 对于所有AI提交,
Co-Authored-By是必需的
阶段1:配置验证
目标: 加载项目特定的git配置和有效范围。
动作:
- 首先: 读取
.claude/git.local.md以加载项目配置 - 如果文件未找到,使用Skill工具加载
git:config-git技能以创建它 - 从YAML frontmatter中的
scopes:列表提取有效范围
阶段2:变更分析
目标: 识别工作的逻辑单元并推断提交范围。
动作:
- 运行
git diff --cached和git diff以获取代码差异(不得直接遍历文件) - 分析差异以识别连贯的逻辑单元
- 使用阶段1加载的有效范围,从文件路径和变更中推断范围
- 如果推断的范围不在有效范围列表中,使用Skill工具加载
git:config-git技能以更新配置
阶段3:AI代码质量检查
目标: 在提交前移除AI生成的冗余内容。
动作:
- 使用Task工具(模型:sonnet)启动代理以审查变更
- 移除AI模式:额外注释、不必要的防御性检查、
any类型转换、不一致的风格 - 代理在无用户确认的情况下自主运行
阶段4:提交创建
目标: 创建遵循Conventional Commits格式的原子提交。
动作(为每个逻辑单元重复):
- 根据上述
提交格式规则草拟提交消息 - 验证:标题<50字符小写命令式;正文有点和解释段落;页脚有
Co-Authored-By - 暂存相关文件并创建提交