원클릭으로
git-review
分析指定时间范围内的 git 提交,生成工作复盘报告。触发词:复盘、review commits、git回顾、今天做了什么、工作总结、daily review、retrospective
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
分析指定时间范围内的 git 提交,生成工作复盘报告。触发词:复盘、review commits、git回顾、今天做了什么、工作总结、daily review、retrospective
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
一键综合分析加密货币。通过并行子代理采集价格、新闻情绪、赛道对比、市场环境、项目基本面五个维度,交叉分析后输出 HTML 报告(含24小时行情和7日趋势)。触发词:分析BTC、analyze ETH、比特币怎么样、SOL值得买吗。
一键综合分析某只股票/公司。通过并行子代理同时采集股价、新闻舆论、行业对比、市场环境、公司官网五个维度的数据,然后在主线程进行交叉分析、因果归因和趋势预测,输出标准化 HTML 分析报告(含当日行情和7日趋势)。触发词:分析XX股票、analyze TICKER、XX怎么样、XX值得买吗。支持A股、港股和美股。
深度学习一本书。通过并行子代理采集章节结构、背景要点、问题影响、解决方案、术语索引、延伸阅读六个维度,交叉分析后输出 Markdown 深度学习笔记。触发词:分析XX这本书、学习XX、读书笔记XX、book analysis。
Go 后端需求分析:功能边界、验收标准、领域模型、API 契约、数据一致性规则、非功能需求、交付风险。在技术设计或编码前使用。
Expert Go backend code reviewer specializing in microservices, GORM/DAL patterns, dependency injection, and resource management. Focuses on logic correctness, goroutine leak detection, and Go-specific best practices for production-grade services.
Go 后端技术设计:包边界、handler-service-repository 分层、API 契约、存储设计、事务、一致性、可观测性、发布策略与 ADR 权衡。需求稳定后使用。
| name | git-review |
| description | 分析指定时间范围内的 git 提交,生成工作复盘报告。触发词:复盘、review commits、git回顾、今天做了什么、工作总结、daily review、retrospective |
| allowed-tools | Bash |
| disable-model-invocation | true |
| context | fork |
分析当前 git 仓库指定时间范围内的所有 commits,生成结构化的工作复盘报告。适用于代码、文档、设计、调研等任何 git 管理的内容。
当用户请求以下操作时触发:
根据用户输入确定分析的时间范围:
默认值:昨天 22:00 到当前时间(覆盖跨午夜的工作段)
自然语言映射:
| 用户输入 | --after | --before |
|---|---|---|
| 今天 / today | 今天 00:00 | now |
| 昨天 / yesterday | 昨天 00:00 | 昨天 23:59 |
| 这周 / this week | 本周一 00:00 | now |
| 最近N天 / last N days | N天前 00:00 | now |
| 具体日期 (如 2月20日) | 该日 00:00 | 该日 23:59 |
| 日期范围 (如 2/20-2/23) | 起始日 00:00 | 结束日 23:59 |
| 默认(无指定) | 昨天 22:00 | now |
使用 date 命令计算具体时间戳,转换为 git log 可用的格式(如 2026-02-22T22:00:00)。
前置检查:先运行 git rev-parse --is-inside-work-tree 确认当前目录是 git 仓库。如果不是,告知用户并停止。
拉取最新代码:运行 git pull 确保分析基于最新的提交历史。如果拉取失败(网络问题、冲突等),忽略错误继续后续步骤,不要重试。
顺序执行以下 5 条命令(本地操作,无需并行):
git log --after="{after}" --before="{before}" --format="%H|%an|%ai|%s|%b|||" --name-status
如果结果为空,必须立即停止所有后续步骤。不要尝试扩大时间范围、不要查找最近的提交、不要自行调整参数继续分析。只需:
git log --after="{after}" --before="{before}" --stat --format="%H %s"
git diff --stat $(git log --after="{after}" --before="{before}" --format="%H" | tail -1)^..$(git log --after="{after}" --before="{before}" --format="%H" | head -1)
如果只有一条提交,使用 git show --stat {hash} 替代。
git branch -a --sort=-committerdate | head -20
git status --short && echo "---STASH---" && git stash list
检查仓库是否有 notes/daily_notes/ 目录及对应的每日记录文件(命名格式:{YEAR}H{1|2}-daily-notes.md,如 2026H1-daily-notes.md):
find notes/daily_notes -name "*-daily-notes.md" 2>/dev/null | head -5
如果找到文件,提取时间范围内所有涉及日期的记录块。对于每个目标日期(格式 YYYY-MM-DD),执行:
# 提取该日期的记录块(从日期标题到下一个日期标题前)
awk '/^### {YYYY-MM-DD}/{f=1;next} /^### [0-9]{4}-[0-9]{2}-[0-9]{2}/{f=0} f' notes/daily_notes/{FILE}
如果文件不存在、或指定日期无记录,跳过此步骤,不影响后续分析。
基于采集到的数据,逐一完成以下分析。
仅当 Phase 1 步骤 6 采集到记录时执行此维度。
[x] 已完成 / [ ] 未完成 / [-] 无对应 commit[x] 项是否能在提交中找到对应 commit?| 时间 | Hash (短) | 提交信息 |按文件后缀和路径将变更分为以下类型,统计各类文件数和行数变更:
| 类型 | 匹配规则 |
|---|---|
| 代码 | .go, .py, .js, .ts, .java, .rs, .c, .cpp, .swift, .kt 等 |
| 测试 | 路径含 test/spec/_test,或文件名含 test/spec |
| 文档 | .md, .txt, .rst, .adoc, .doc |
| 配置 | .yaml, .yml, .json, .toml, .ini, .env, Dockerfile, Makefile |
| 设计/调研 | 路径含 design/research/rfc/proposal/audit/review |
| 依赖 | go.mod, go.sum, package.json, package-lock.json, requirements.txt, Cargo.toml, Gemfile |
| 其他 | 以上都不匹配的文件 |
输出分类表格和饼图式占比。
对提交习惯进行 1-5 分评分:
| 评估项 | 5分标准 | 1分标准 |
|---|---|---|
| Message 质量 | 清晰描述 what + why | 模糊或无意义 (如 "update", "fix") |
| 粒度 (Granularity) | 每次提交是独立的逻辑单元 | 巨型提交混合多个不相关改动 |
| Conventional Commits | 遵循 type(scope): description | 无任何规范 |
给出每项的评分、好的示例(来自实际提交)和可改进的示例。
扫描变更内容,识别以下类型的技术决策:
每项列出具体 commit 和影响评估。如果没有识别到技术决策,简要说明。
以 checklist 格式检查:
git status)TODO/FIXME/HACK/XXX 注释_test 文件是否存在)对每项给出 Pass/Warning/Info 标记和具体内容。
基于以上 6 个维度的分析结果,给出 3-5 条可操作的改进建议。每条建议需要:
按以下 HTML 格式输出最终报告。使用内联 CSS 确保在浏览器和飞书中均可良好显示:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Git 工作复盘 — {repo} {date}</title>
<style>
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; max-width: 860px; margin: 0 auto; padding: 20px; color: #1a1a1a; background: #f8f9fa; }
.report { background: #fff; border-radius: 12px; padding: 32px; box-shadow: 0 2px 12px rgba(0,0,0,0.08); }
h1 { font-size: 24px; border-bottom: 3px solid #0d7377; padding-bottom: 12px; margin-bottom: 4px; }
h2 { font-size: 17px; color: #0d7377; margin-top: 28px; border-left: 4px solid #0d7377; padding-left: 10px; }
h3 { font-size: 14px; color: #444; margin-top: 14px; }
.meta { color: #666; font-size: 13px; margin-bottom: 16px; }
.summary { background: #e0f7f7; border-radius: 8px; padding: 16px; font-size: 15px; margin: 16px 0; }
.summary ol { margin: 8px 0 0 0; padding-left: 20px; }
.summary li { margin: 4px 0; }
table { width: 100%; border-collapse: collapse; margin: 12px 0; font-size: 14px; }
th { background: #f1f3f4; text-align: left; padding: 10px 12px; font-weight: 600; border-bottom: 2px solid #ddd; }
td { padding: 8px 12px; border-bottom: 1px solid #eee; vertical-align: top; }
tr:hover td { background: #f8f9fa; }
.mono { font-family: "SFMono-Regular", Consolas, monospace; font-size: 12px; color: #555; }
.tag { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 12px; font-weight: 500; }
.tag-pass { background: #e8f5e9; color: #2e7d32; }
.tag-warn { background: #fff3e0; color: #e65100; }
.tag-info { background: #f5f5f5; color: #616161; }
.timeline { font-family: "SFMono-Regular", Consolas, monospace; font-size: 13px; background: #f8f9fa; padding: 12px 16px; border-radius: 6px; overflow-x: auto; white-space: pre; }
.stars { color: #f5a623; letter-spacing: 2px; }
.suggestion { background: #f3f8ff; border-left: 3px solid #0d7377; padding: 10px 14px; margin: 8px 0; border-radius: 0 6px 6px 0; }
.suggestion strong { display: block; margin-bottom: 4px; }
.checklist { list-style: none; padding: 0; }
.checklist li { padding: 6px 0; border-bottom: 1px solid #f0f0f0; font-size: 14px; }
ul, ol { padding-left: 20px; }
li { margin: 5px 0; line-height: 1.6; }
code { background: #f1f3f4; padding: 1px 5px; border-radius: 3px; font-size: 12px; font-family: "SFMono-Regular", Consolas, monospace; }
.daily-notes { background: #fafafa; border: 1px solid #e8e8e8; border-radius: 8px; padding: 14px 18px; font-size: 13px; white-space: pre-wrap; font-family: inherit; line-height: 1.7; }
.daily-notes .done { color: #2e7d32; }
.daily-notes .pending { color: #888; }
.match-table td:first-child { width: 60px; text-align: center; }
</style>
</head>
<body>
<div class="report">
<h1>Git 工作复盘</h1>
<div class="meta">{时间范围} | 仓库: <strong>{repo}</strong> | {提交数} commits | {文件变更数} files changed | <span style="color:#2e7d32">+{新增行}</span> <span style="color:#c62828">-{删除行}</span></div>
<!-- 仅当存在当日记录时输出此 section,否则完全省略 -->
<h2>0. 当日记录</h2>
<div class="daily-notes">{当日个人记录原文,保留原始缩进和 checkbox}</div>
<h3>计划 vs 实际对比</h3>
<table class="match-table">
<tr><th>状态</th><th>记录条目</th><th>对应 Commit</th></tr>
<tr><td><span class="tag tag-pass">✓ 已提交</span></td><td>...</td><td class="mono">abc1234</td></tr>
<tr><td><span class="tag tag-warn">○ 未提交</span></td><td>...</td><td>—</td></tr>
<tr><td><span class="tag tag-info">+ 额外</span></td><td>记录未提及的 commit</td><td class="mono">def5678</td></tr>
</table>
<div class="summary">
<strong>核心发现</strong>
<ol>
<li>...</li>
<li>...</li>
<li>...</li>
</ol>
</div>
<h2>1. 工作总结</h2>
<p>{叙述式总结:按逻辑主题分组说明做了什么、为什么做}</p>
<h3>提交时间线</h3>
<table>
<tr><th>时间</th><th>Hash</th><th>提交信息</th></tr>
<tr><td>HH:MM</td><td class="mono">abc1234</td><td>...</td></tr>
</table>
<h2>2. 变更类型分布</h2>
<table>
<tr><th>类型</th><th>文件数</th><th>占比</th><th>增删行数</th></tr>
<tr><td>代码</td><td>...</td><td>...%</td><td>+... -...</td></tr>
<tr><td>测试</td><td>...</td><td>...%</td><td>+... -...</td></tr>
<tr><td>文档</td><td>...</td><td>...%</td><td>+... -...</td></tr>
<tr><td>配置</td><td>...</td><td>...%</td><td>+... -...</td></tr>
<tr><td>其他</td><td>...</td><td>...%</td><td>+... -...</td></tr>
</table>
<p>{分析说明}</p>
<h2>3. 工作节奏</h2>
<table>
<tr><th>指标</th><th>数值</th></tr>
<tr><td>首次提交</td><td>...</td></tr>
<tr><td>末次提交</td><td>...</td></tr>
<tr><td>总跨度</td><td>...</td></tr>
<tr><td>Flow Sessions</td><td>... 个</td></tr>
<tr><td>最长 Session</td><td>...</td></tr>
<tr><td>最长间隔</td><td>...</td></tr>
</table>
<div class="timeline">{时间线可视化,用 ASCII 字符表示,如每格代表一小时}</div>
<h2>4. 提交实践评估</h2>
<table>
<tr><th>评估项</th><th>评分</th><th>说明</th></tr>
<tr><td>Message 质量</td><td><span class="stars">★★★★☆</span></td><td>...</td></tr>
<tr><td>提交粒度</td><td><span class="stars">★★★☆☆</span></td><td>...</td></tr>
<tr><td>Conventional Commits</td><td><span class="stars">★★★★★</span></td><td>...</td></tr>
</table>
<p><strong>好的示例:</strong> <code>feat(auth): add JWT refresh token rotation</code></p>
<p><strong>可改进:</strong> <code>fix</code> → 改为 <code>fix(module): describe what was fixed</code></p>
<h2>5. 技术决策</h2>
<ul>
<li><strong>新依赖引入</strong>: ... (<code>abc1234</code>)</li>
<li><strong>架构变更</strong>: ... (<code>def5678</code>)</li>
</ul>
<h2>6. 完成度检查</h2>
<ul class="checklist">
<li><span class="tag tag-pass">Pass</span> 未提交改动: 工作区干净</li>
<li><span class="tag tag-warn">Warning</span> Stash 暂存: ...</li>
<li><span class="tag tag-info">Info</span> TODO/FIXME: ...</li>
<li><span class="tag tag-pass">Pass</span> 测试配套: ...</li>
</ul>
<h2>7. 改进建议</h2>
<div class="suggestion"><strong>1. {建议标题}</strong>{具体内容}(证据:{引用分析数据})</div>
<div class="suggestion"><strong>2. {建议标题}</strong>...</div>
<div class="suggestion"><strong>3. {建议标题}</strong>...</div>
</div>
</body>
</html>
HTML 填写规则:
★ (实心) 和 ☆ (空心) 表示,5分=★★★★★tag-pass(绿),Warning=tag-warn(橙),Info=tag-info(灰)█,无提交用 ·将报告保存为 git-review-{date}.html 到当前工作目录的 output/ 子目录(如无则使用当前目录),其中 {date} 为当天日期(如 2026-02-23)。
保存 HTML 后,使用 Chrome headless 转换为 PDF:
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--headless --disable-gpu --no-sandbox \
--print-to-pdf="$(pwd)/output/git-review-{date}.pdf" \
--no-pdf-header-footer \
"file://$(pwd)/output/git-review-{date}.html"
如果 Chrome 不可用,使用备选方案:
npx -y md-to-pdf "$(pwd)/output/git-review-{date}.html"
最终输出两份文件:
output/git-review-{date}.html — HTML 版本output/git-review-{date}.pdf — PDF 版本(用于飞书发送)notes/daily_notes/ 不存在或指定日期无匹配标题,跳过维度 0 和报告 section 0,其余维度不受影响