关于 navvy
navvy 是一项通过 Git 历史评估代码库的 Skill,面向需要了解维护风险和项目活动的开发者。它分析五类提交信号,并汇总为简明诊断报告。
主要功能
- 01识别频繁变更的文件
- 02统计贡献者提交次数
- 03定位与缺陷相关的文件
- 04追踪每月提交趋势
- 05查找回滚与热修复
适用场景
- 01发现高变更且常出缺陷的文件
- 02检查项目知识是否集中于少数人
- 03审视开发活跃度的变化
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ andrewgleave/ skills --skill navvy安装后在 Claude Code 中输入/navvy确认已加载。
附带文件README.md
详细介绍
Navvy
五条 Git 命令,不到一分钟就能让你比花一小时读代码更了解一个代码库。提交历史是诊断数据——它揭示团队动态、风险集中情况和维护模式,而这些信息无法仅从代码本身看出。
运行全部五条命令,然后综合结果,撰写一份诊断报告。
命令
尽可能并行运行这些命令。根据项目的历史时长调整 --since——活跃项目使用 1 year ago,更新较慢的项目则延长时间范围。
1. 变更热点
git log --format=format: --name-only --since="1 year ago" | sort | uniq -c | sort -nr | head -20
过去一年中修改最多的 20 个文件。某个文件变更频繁,却没人愿意负责,这是代码库拖累最明显的信号——这类文件的影响范围难以预测,还会抬高工作量估算。
2. 贡献者分布
git shortlog -sn --no-merges
按提交次数对贡献者排序。留意总线因子风险:如果某个人的提交占比达到 60% 以上,知识就过度集中,风险很高。还要检查核心贡献者目前是否仍然活跃。
3. Bug 集中点
git log -i -E --grep="fix|bug|broken" --name-only --format='' | sort | uniq -c | sort -nr | head -20
Bug 相关提交中最常被修改的文件。同时出现在此列表和变更热点中的文件风险最高——它们不断出错,也不断被修补。
4. 开发速度趋势
git log --format='%ad' --date=format:'%Y-%m' | sort | uniq -c
按月统计整个历史期间的提交次数。稳定的节奏是健康的。大幅下降可能意味着有人离职或项目失去动力。偶尔出现峰值,可能说明发布是批量进行的,而非持续交付。
5. 救火信号
git log --oneline --since="1 year ago" | grep -iE 'revert|hotfix|emergency|rollback'
回滚和热修复。频繁出现说明团队不信任自己的部署流程——这是测试或部署可靠性存在更深层问题的征兆。
综合报告
运行全部五条命令后,撰写一份简短的诊断报告。围绕数据揭示的情况来组织内容,而不是围绕命令本身。
需要关注的内容
- 变更与 Bug 的重合点。 同时出现在两个列表中的文件,是重构或加强测试覆盖最有价值的目标。
- 总线因子。 如果某个占主导地位的贡献者已经不再活跃,就会带来风险。贡献者分布均衡则是健康的表现。
- 开发速度变化。 结合你对项目的了解,分析速度下降或激增的原因——例如团队变动、重写或发布。
- 救火频率。 每年出现几次回滚很正常。每月都有热修复则说明存在系统性问题。
报告格式
# Codebase Diagnostic: [repo name]
## Key Findings
[2-4 bullet points: the most important things to know before touching this code]
## Churn Hotspots
[Top files, what they are, whether they overlap with bug clusters]
## Team & Ownership
[Bus factor assessment, active vs inactive contributors]
## Health Signals
[Velocity trend interpretation, firefighting frequency]
## Recommendations
[Where to focus attention, what to investigate further]
保持简洁。重点是帮助读者了解情况,而非进行详尽分析。读者看完报告后,应该知道问题所在,以及哪些地方需要谨慎处理。
评论
支持 Markdown