git-blame-storylisted
Install: claude install-skill YuAICode/ai-skills
# git-blame-story — 文件修改史故事化
把枯燥的 `git log -- <file>` 变成一篇有温度的中文故事,帮你理解一段代码是怎么走到今天的。
## 何时触发
用户说下列任意一句时触发:
- "讲讲这个文件的故事"
- "git-blame-story"
- "这个文件经历了什么"
- "帮我追溯一下这个文件的历史"
- "这段代码是怎么来的"
- "来龙去脉"
- "帮我了解一下 <文件名>"
## 用法
### 第一步:采集文件历史素材
```bash
bash <skill>/bin/collect.sh <文件路径>
```
输出五段结构化文本:
- `META` — 文件路径、仓库名、采集时间、提交总数
- `COMMITS` — 逐条提交:hash、作者、日期、subject(含重命名追踪)
- `CONTRIBUTORS` — 贡献者排行(提交数降序)
- `TIMELINE` — 首次提交与最近提交的详情
- `CHURN` — 近期 5 次提交的增删行数趋势
### 第二步:Claude 叙述成故事
拿到素材后,按以下叙事框架输出中文故事:
---
## 叙事框架
```markdown
## <文件名> 的故事
### 诞生
(首次提交的背景:谁创建、何时、commit message 透露了什么动机?)
### 成长历程
(按时间顺序,用段落式叙述主要里程碑:重要功能新增、重构、模块迁移等。
重点关注 message 含 refactor / move / rename / migrate 的提交。)
### 风雨时刻
(commit message 含 fix / hotfix / revert / emergency / bug 的提交,
以及深夜(00:00–05:59)或密集修复期,推测当时遭遇了什么挑战。)
### 主要角色
(谁贡献最多?谁留下了最关键的一次提交?用贡献者排行和关键 commit 描述。)
### 现在的状态
(从最近几次提交推测:这个文件是活跃维护中、趋于稳定、还是已被遗忘?)
---
### 人物小传
(一句话:如果这个文件是个人,ta 是谁?例如:"一位经历过三次重构、身经百战的老将,如今安静守护着核心认证逻辑。")
```
---
## 剧情推断规则
| commit message 关键词 | 推断方向 |
|----------------------|---------|
| `init` / `initial` / `add` (首次) | 诞生背景 |
| `feat` / `add` / `implement` | 功能扩张期 |
| `refactor` / `move` / `rename` / `migrate` | 架构调整,可能有大手术 |
| `fix` / `hotfix` / `bug` | 遭遇问题,推测是 bug 还是需求误解 |
| `revert` | 走了弯路,后来回头了 |
| `cleanup` / `chore` / `remove` | 瘦身或收尾 |
| 深夜提交(00:00–05:59) | deadline 压力 or 紧急修复 |
| 短时间内多条密集提交 | 紧张的攻坚期 |
---
## 硬规则
- **忠于事实**:故事里提到的人物、时间、事件必须有对应 commit 佐证;可以演绎语气和情绪,但不能凭空捏造关键情节。
- **不足时如实说**