Git Daily Commit Summary
用于任意 Git 项目里“先读真实 commit,再整理成日报/工作记录”的通用流程。
触发场景
- 用户说“整理成日报”“汇总今天提交”“commit 汇总”“daily report”“work log”。
- 用户要求按项目、端、模块、平台、业务线或团队格式重组提交。
- 用户要求“读取提交代码进一步修正总结”。
输出目标
默认产出可直接转发的纯文本日报。除非用户要求 Markdown,否则不要用标题、表格或加粗。
基本原则:
- 不把 commit message 原样逐条贴出来。
- 不按“一条 commit = 一条日报”机械输出。
- 不输出无内容的空分组。
- 不把 merge、stash、WIP 临时提交混进正式日报正文。
- 后端、脚本或公共模块改动按实际影响面归入对应项目/模块/端;无法判断时明确说明不确定性。
工作流
1. 确认统计口径
先确认日期、作者和仓库范围:
date +%F
git config --global user.name
git config --global user.email
git rev-parse --show-toplevel
规则:
- 用户指定日期或时间范围时,以用户指定为准。
- 默认只汇总当前 git 用户的提交。
- 单仓项目只看当前仓库。
- 多仓工作区优先看本轮相关仓库、当前目录下包含
.git的子仓库、用户点名的仓库。 - 如果用户说“所有项目提交”,再扩大到用户指定的根目录或当前工作区下的所有仓库。
2. 拉取提交记录
使用日期窗口和 author 过滤提交:
git -C <repo> log --since="<start>" --until="<end>" --author="<user.name>" --pretty=format:'%H%x09%ad%x09%s' --date=iso
git -C <repo> log --since="<start>" --until="<end>" --author="<user.email>" --pretty=format:'%H%x09%ad%x09%s' --date=iso
然后区分:
- 正式代码提交。
- merge 提交。
- stash/index/WIP 临时提交。
正式日报默认只使用正式代码提交。merge、stash、WIP 只在用户追问或要求完整清单时补充说明。
3. 读取真实改动
这是本 skill 最重要的规则:必须继续读取 changed files,必要时读取关键 diff。
git -C <repo> show --stat --oneline --name-only <commit>
git -C <repo> show --format=fuller --stat <commit>
git -C <repo> show -- <path>
不要只根据仓库名、提交标题或文件扩展名归类。公共服务、后端接口、脚本和配置可能影响多个端或多个模块。
4. 发现项目分组规则
优先按下面顺序确定日报分组:
- 用户当次明确要求的格式。
- 仓库内的
AGENTS.md、.codex/daily-summary-rules.md、.codex/skills/*/SKILL.md或团队文档。 - 路径、路由、包名、服务名、README、提交历史中稳定出现的项目/模块/平台。
- 如果仍不确定,用“项目/模块/公共能力”这类中性分组,并在输出前说明假设。
常见分组维度:
- 产品或业务线。
- Web、移动端、小程序、服务端、CLI、文档。
- 页面、接口、服务、任务、配置、测试。
- 功能域,例如登录、支付、导出、通知、审核、搜索。
5. 合并表达
把同类改动合并成业务结果或工程结果:
项目A:
Web端:
- 修复登录页验证码刷新后状态不同步的问题
- 完成订单详情导出入口和异常提示调整
公共能力:
服务端:
- 补充导出任务的失败兜底和重复提交校验
表达要求:
- 先写用户能理解的结果,再补必要技术口径。
- 同一件事的多次修正合并成一条。
- 公共后端改动能明确影响某个端时,归入该端;不能明确时放入公共能力或服务端分组。
- 不编造未在 diff 中出现的范围、页面或能力。
6. 校验清单
输出前逐项自查:
- 是否读取了每个正式 commit 的 changed files 或关键 diff。
- 是否把 merge、stash、WIP 混进了正式日报。
- 是否错误地按仓库名代替真实影响面归类。
- 是否遗漏了公共服务对前端/移动端的实际影响。
- 是否包含空分组。
- 是否把技术实现写得过细,导致不像可转发日报。
最终输出
用户只要日报时,最终回复只保留日报正文。
如果存在不确定分组,先用一句话说明假设,再给日报。不要把排查过程、命令输出或 commit hash 混入正文,除非用户明确要求。