关于 gstack-openclaw-retro
gstack-openclaw-retro 是一项根据仓库提交历史和代码指标生成工程回顾的技能。它支持指定时间范围和周期比较,并保存快照以追踪趋势。
主要功能
- 01自定义回顾时间范围
- 02提交与代码指标统计
- 03按贡献者分析
- 04工作时段与会话分析
- 05保存历史快照并比较
适用场景
- 01回顾团队近期工程工作
- 02比较不同时间段的活动
- 03追踪代码与测试趋势
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ garrytan/ gstack --skill gstack-openclaw-retro安装后在 Claude Code 中输入/gstack-openclaw-retro确认已加载。
详细介绍
每周工程回顾
生成一份全面的工程回顾,分析提交历史、工作模式和代码质量指标。可感知团队:识别运行命令的用户,然后分析每位贡献者,并分别指出优点和成长机会。
参数
- 默认:过去 7 天
24h:过去 24 小时14d:过去 14 天30d:过去 30 天compare:比较当前时间窗口与此前相同长度的时间窗口
指令
解析参数以确定时间窗口。默认为 7 天。所有时间都应以用户的本地时区报告。
按午夜对齐的时间窗口: 对于以天为单位的时间窗口,计算一个以当地午夜为起点的绝对日期。例如,如果今天是 2026-03-18,时间窗口为 7 天,则起始日期为 2026-03-11。对 git log 查询使用 --since="2026-03-11T00:00:00"。对于以小时为单位的时间窗口,使用 --since="N hours ago"。
步骤 1:收集原始数据
首先,获取 origin 并识别当前用户:
git fetch origin main --quiet
git config user.name
git config user.email
git config user.name 返回的名称就是**“你”**……也就是阅读这份回顾的人。其他所有作者都是队友。
运行以下所有 git 命令(这些命令彼此独立):
# All commits with timestamps, subject, hash, author, files changed
git log origin/main --since="<window>" --format="%H|%aN|%ae|%ai|%s" --shortstat
# Per-commit test vs total LOC breakdown with author
git log origin/main --since="<window>" --format="COMMIT:%H|%aN" --numstat
# Commit timestamps for session detection and hourly distribution
git log origin/main --since="<window>" --format="%at|%aN|%ai|%s" | sort -n
# Files most frequently changed (hotspot analysis)
git log origin/main --since="<window>" --format="" --name-only | grep -v '^$' | sort | uniq -c | sort -rn
# PR numbers from commit messages
git log origin/main --since="<window>" --format="%s" | grep -oE '[#!][0-9]+' | sort -t'#' -k1 | uniq
# Per-author file hotspots
git log origin/main --since="<window>" --format="AUTHOR:%aN" --name-only
# Per-author commit counts
git shortlog origin/main --since="<window>" -sn --no-merges
# Test file count
git ls-files 2>/dev/null | grep -E '(\.test\.|\.spec\.|_test\.|_spec\.)' | wc -l
# Test files changed in window
git log origin/main --since="<window>" --format="" --name-only | grep -E '\.(test|spec)\.' | sort -u | wc -l
步骤 2:计算指标
在摘要中计算并展示以下指标:
- 合并到 main 的提交数: N
- 贡献者: N
- 已合并的 PR: N
- 新增行总数: N
- 删除行总数: N
- 净增代码行数: N
- 测试代码行数(新增): N
- 测试代码行占比: N%
- 版本范围: vX.Y.Z → vX.Y.Z
- 活跃天数: N
- 检测到的工作时段: N
- 每个时段小时数的平均代码行数: N
然后立即在下方展示作者排行榜:
Contributor Commits +/- Top area
You (garry) 32 +2400/-300 browse/
alice 12 +800/-150 app/services/
bob 3 +120/-40 tests/
按提交数降序排序。当前用户始终排在第一位,标签为“You (name)”。
步骤 3:提交时间分布
以本地时间显示每小时的直方图:
Hour Commits ████████████████
00: 4 ████
07: 5 █████
...
识别:
- 高峰时段
- 空档时段
- 双峰模式(早晨/傍晚)还是连续分布
- 深夜编码集中时段(晚上 10 点后)
步骤 4:检测工作时段
使用连续提交之间45 分钟的间隔作为阈值来检测时段。
对时段分类:
- 深度时段(50 分钟以上)
- 中等时段(20–50 分钟)
- 微型时段(不足 20 分钟,单次提交)
计算:
- 活跃编码总时长
- 平均时段长度
- 活跃时长内每小时的代码行数
步骤 5:提交类型细分
按 Conventional Commits 前缀(feat/fix/refactor/test/chore/docs)分类。以百分比条形图显示:
feat: 20 (40%) ████████████████████
fix: 27 (54%) ███████████████████████████
refactor: 2 ( 4%) ██
如果 fix 占比超过 50%,请标记……这表明存在“快速发布、快速修复”的模式,可能意味着代码审查存在缺口。
步骤 6:热点分析
展示改动最多的 10 个文件。标记:
- 改动 5 次以上的文件(高频变更热点)
- 热点列表中的测试文件与生产文件
- VERSION/CHANGELOG 的变更频率
步骤 7:PR 大小分布
估算 PR 大小并分档:
- 小型(不足 100 LOC)
- 中型(100–500 LOC)
- 大型(500–1500 LOC)
- 超大型(1500 LOC 以上)
步骤 8:专注度得分 + 本周交付
专注度得分: 触及变更最多的单个顶层目录的提交所占百分比。得分越高,表示工作越专注深入;得分越低,表示上下文切换越分散。
本周交付: 时间窗口内 LOC 最高的单个 PR。突出显示 PR 编号、变更的 LOC,以及其重要性。
步骤 9:团队成员分析
针对每位贡献者(包括当前用户),计算:
- 提交和代码行数 ... 提交总数、新增行数、删除行数、净代码行数
- 关注领域 ... 他们修改最多的目录/文件(前 3 项)
- 提交类型构成 ... 个人的 feat/fix/refactor/test 分类情况
- 工作时段模式 ... 编码时间(高峰时段)、会话数量
- 测试规范性 ... 个人测试代码行数占比
- 最大交付成果 ... 影响最大的单次提交或 PR
对于当前用户(“你”): 深入分析。包含所有会话分析、时间模式和专注度评分。使用第一人称表述。
对于每位队友: 用 2-3 句话介绍他们交付的成果和工作模式。然后列出:
- 值得肯定之处(1-2 项具体表现):以实际提交为依据。不要只说“做得很好” ... 要具体说明做得好的地方。
- 成长机会(1 项具体建议):以成长进阶的角度提出,而非批评。以实际数据为依据。
如果是个人项目仓库: 跳过团队分析。
AI 协作: 如果提交中有 Co-Authored-By AI 署名行,请将“AI 辅助提交”作为单独指标统计。
步骤 10:逐周趋势(如果时间范围 >= 14d)
按周分组并展示趋势:
- 每周提交数(总数和按作者统计)
- 每周代码行数
- 每周测试占比
- 每周修复占比
- 每周会话数
步骤 11:连续提交天数追踪
从今天开始向前统计连续至少有 1 次提交的天数:
# Team streak
git log origin/main --format="%ad" --date=format:"%Y-%m-%d" | sort -u
# Personal streak
git log origin/main --author="<user_name>" --format="%ad" --date=format:"%Y-%m-%d" | sort -u
同时展示:
- “团队连续交付天数:47 天”
- “你的连续交付天数:32 天”
步骤 12:加载历史并进行比较
检查 memory/ 中是否有以往的回顾记录:
如果有以往的回顾记录,加载最近一份并计算变化量:
Last Now Delta
Test ratio: 22% → 41% ↑19pp
Sessions: 10 → 14 ↑4
LOC/hour: 200 → 350 ↑75%
Fix ratio: 54% → 30% ↓24pp (improving)
如果没有以往的回顾记录,请注明“首次记录回顾,请下周再次运行以查看趋势。”
步骤 13:保存回顾历史
将包含指标、作者、版本范围、连续提交天数和适合发推的摘要的 JSON 快照保存到 memory/retro-YYYY-MM-DD.json。
步骤 14:撰写回顾内容
Telegram 格式(使用项目符号、粗体,最终输出中不要使用 Markdown 表格)。
结构:
适合发推的摘要(首行):
3 月 1 日当周:47 次提交(3 位贡献者)、3.2k 代码行、38% 测试、12 个 PR,高峰时段:晚上 10 点 | 连续交付:47 天
然后分为以下部分:
- 摘要 ... 关键指标
- 与上次回顾相比的趋势 ... 变化量(首次回顾时跳过)
- 时间与会话模式 ... 团队的编码时间、会话时长、深度工作与碎片工作
- 交付速度 ... 提交类型、PR 大小、修复链检测
- 代码质量信号 ... 测试占比、热点、代码变更量
- 专注度与亮点 ... 专注度评分、本周交付成果
- 你的一周 ... 当前用户的个人深入分析
- 团队成员分析 ... 每位队友的分析,包括值得肯定之处和成长建议(个人项目时跳过)
- 团队 3 大成果 ... 影响最大的 3 项交付
- 3 项改进建议 ... 具体、可执行,并以提交为依据
- 下周 3 个习惯 ... 小巧、实用、现实(养成时间少于 5 分钟)
比较模式
用户说“比较”时:
- 对当前时间范围运行回顾
- 对此前相同长度的时间范围运行回顾
- 并列展示指标,并用箭头标示提升或回退
- 简要说明最大的变化
重要规则
- 所有时间均使用本地时区。 绝不设置
TZ。 - 使用 Telegram 格式。 使用项目符号和粗体。最终输出中避免使用 Markdown 表格。
- 表扬必须以提交为依据。 不要只说“做得很好”,而不说明具体好在哪里。
- 成长建议必须以数据为依据。 没有证据时不要批评。
- 保存历史。 每次回顾都保存到
memory/,用于追踪趋势。 - 完成状态:
- DONE ... 已生成回顾并保存历史
- DONE_WITH_CONCERNS ... 已生成回顾,但数据不完整(例如,没有以往的回顾记录可供比较)
- BLOCKED ... 当前目录不是 git 仓库,或指定时间范围内没有提交