名称: git工作流技能 描述: 为任务操作创建范围化的git提交。在任务状态变更或工件创建后调用。 允许工具: Bash(git:*)
上下文按需加载通过@-引用(见上下文加载部分)
Git工作流技能
为任务操作创建适当范围化的git提交。
上下文加载
按需加载上下文:
@.claude/context/core/standards/git-safety.md- Git安全规则和最佳实践@.claude/context/index.md- 完整上下文发现索引
触发条件
此技能在以下情况下激活:
- 任务状态变更(研究、计划、实施完成)
- 工件创建
- 任务生命周期操作发生
提交消息格式
任务操作
| 操作 | 格式 | 触发CI |
|---|---|---|
| 创建任务 | 任务 {N}: 创建 {标题} |
否 |
| 完成研究 | 任务 {N}: 完成研究 |
否 |
| 创建计划 | 任务 {N}: 创建实施计划 |
否 |
| 完成阶段 | 任务 {N} 阶段 {P}: {阶段名称} |
否 |
| 完成任务 | 任务 {N}: 完成实施 |
否 |
| 完成任务(带CI) | 任务 {N}: 完成实施 [ci] |
是 |
| 修订计划 | 任务 {N}: 修订计划 (v{V}) |
否 |
系统操作
| 操作 | 格式 |
|---|---|
| 归档任务 | 待办: 归档 {N} 已完成任务 |
| 错误修复 | 错误: 创建 {N} 个错误的修复计划 |
| 代码审查 | 审查: {范围} 代码审查 |
| 状态同步 | 同步: 协调 TODO.md 和 state.json |
执行流程
1. 接收提交请求:
- 操作类型
- 任务号(如果适用)
- 范围(要包含的文件)
- 消息模板
2. 暂存适当文件:
- git add {范围}
3. 创建提交:
- 格式化消息
- 添加共同作者
- 执行提交
4. 验证成功:
- 检查退出代码
- 记录结果
5. 返回结果
提交范围规则
任务特定提交
仅包括任务相关文件:
specs/TODO.md
specs/state.json
specs/{NNN}_{SLUG}/**
实施提交
包括修改的源文件:
Logos/**/*.lean (用于Lean任务)
src/**/* (用于一般任务)
阶段提交
范围仅限于阶段变更:
该阶段修改的文件
更新带有阶段状态的计划
安全检查
提交前
1. git status - 验证暂存文件
2. 检查无敏感文件暂存(.env、凭证)
3. 验证提交消息格式
切勿运行
git push --forcegit reset --hard(无明确请求)git rebase -i
消息模板
{范围}: {动作} {描述}
共同作者: Claude Opus 4.5 <noreply@anthropic.com>
CI触发
概述
CI默认在推送事件中跳过。要触发CI,在提交消息中添加[ci]标记。
trigger_ci 参数
创建提交时,trigger_ci参数控制是否运行CI:
| 值 | 行为 | 用例 |
|---|---|---|
false(默认) |
无CI标记添加 | 常规提交、研究、规划 |
true |
在消息后附加[ci] |
Lean变更、实施完成 |
CI决策标准
触发CI(trigger_ci: true)当:
- 修改Lean文件(.lean) - 确保构建通过
- 实施完成 - 合并前最终验证
- CI配置更改(.github/workflows/) - 验证工作流变更
- Mathlib依赖更新(lakefile.lean, lake-manifest.json) - 确保兼容性
- 关键错误修复 - 验证修复有效
跳过CI(默认)当:
- 仅文档更改(.md文件)
- 研究/规划工件
- 配置更改(非CI)
- 常规任务管理操作
带有CI标记的提交消息
任务 {N}: 完成实施 [ci]
共同作者: Claude Opus 4.5 <noreply@anthropic.com>
当CI始终运行
CI始终运行,无论标记:
- 拉取请求事件(所有PR运行CI)
- 手动workflow_dispatch触发
- 带有
[ci]标记的提交
执行命令
标准提交
git add {文件}
git commit -m "$(cat <<'EOF'
{消息}
共同作者: Claude Opus 4.5 <noreply@anthropic.com>
EOF
)"
任务提交
git add specs/
git commit -m "$(cat <<'EOF'
任务 {N}: {动作}
共同作者: Claude Opus 4.5 <noreply@anthropic.com>
EOF
)"
返回格式
{
"status": "completed|failed",
"summary": "创建提交: {短消息}",
"commit_hash": "abc123",
"files_committed": [
"路径/到/文件1",
"路径/到/文件2"
],
"message": "完整提交消息",
"ci_triggered": true|false
}
错误处理
无内容提交
{
"status": "committed",
"summary": "无更改提交",
"commit_hash": null
}
提交前钩子失败
{
"status": "failed",
"error": "提交前钩子失败",
"recovery": "修复问题并重试(不要使用--no-verify)"
}
Git错误
{
"status": "failed",
"error": "Git命令失败: {错误}",
"recovery": "检查git状态并手动解决"
}
非阻塞行为
Git失败不应阻止任务操作:
- 记录失败
- 继续任务
- 向用户报告提交失败
- 任务状态无论如何都保留