作者贡献审计
追踪分支中指定作者实际贡献的文件,并识别重命名后的文件归属。
技能主要执行 git log、diff-tree、diff 等读取操作,未见恶意行为、凭据窃取或隐蔽外传;但未明确用户确认、仓库边界、敏感提交信息处理、失败回滚或数据流披露,因此从满分扣除。
步骤顺序清楚,包含精确作者匹配、全分支重命名追踪、合并差异过滤和统计输出;但未执行验证,示例脚本与正文要求不完全一致,未充分处理合并提交、特殊路径、命令失败和空结果,因此限制在静态可支持范围内。
目标用户、分支比较、作者审计和重命名场景描述明确,并规定了表格输出;但未充分定义非适用场景、上游命名差异、无本地仓库或复杂 Git 历史的处理,也未提供中文语言或中国大陆网络适配说明。
文档结构清晰,包含元数据、流程、注意事项和两个脚本示例;仓库提供 MIT 许可、官方组织归属及一般维护背景,但技能自身没有版本、变更记录、负责人、安装说明、依赖版本或故障排查指南,因此扣分。
核心任务覆盖作者直接贡献、重命名贡献、实际合并差异和行数统计,预期输出可直接使用;但脚本示例没有完整输出 +/- 统计,未验证复杂历史准确性,结果仍需人工复核,因此不超过静态上限。
正文给出可审计的 Git 命令和算法步骤,具备有限可追溯性;但没有针对该技能的测试套件、固定样例、CI 覆盖或第三方执行证据,无法证明关键路径已复现,因此仅给有限分数。
- 技能要求运行大量 Git 操作并委托子代理,但未定义权限确认、超时、失败重试或仓库边界;使用前应确认命令仅针对预期仓库和引用。
- 重命名解析、合并提交、特殊文件名和三点/两点差异语义可能影响结果;输出应人工复核,尤其是行数统计和 VIA_RENAME 分类。
- 文档提及 GitHub MCP get_me,但未说明该依赖的可用性、数据访问范围或不可用时的替代流程。
它能做什么 & 适用场景
该技能用于比较分支与上游分支,找出指定作者贡献过且仍会进入合并差异的文件。它先解析作者的精确 Git 身份,再收集作者直接提交涉及的文件,并构建覆盖整个分支的文件重命名关系。对于通过重命名延续的贡献,它会将最终路径标记为 VIA_RENAME。技能应作为子代理运行,并返回包含状态、文件路径和增删行数的简洁表格。
读取上游与目标分支之间的 Git 提交记录,使用 git log 匹配作者身份并收集作者提交;使用 git diff-tree 提取提交涉及的文件和所有提交中的重命名;使用 git diff 获取最终合并差异中的文件列表及差异统计;沿重命名链逐级追踪贡献;最后生成 DIRECT 或 VIA_RENAME 分类、文件路径和 +/- 行数的 Markdown 表格,并附带文件总数和行数汇总。流程还建议使用 Python 处理繁重的 Git 操作,并可使用 GitHub MCP 的 get_me 工具辅助确认身份。
- 维护者准备将功能分支合并到 main 前,需要审计某位作者实际贡献了哪些仍会合并的文件。
- 代码负责人需要区分作者直接修改的文件与因目录或文件重命名而延续的贡献。
- 团队成员想核对某位开发者在上游分支与当前分支之间的提交范围及代码增删量。
- 审查者需要避免把已被删除、因此不会进入合并结果的作者修改列入报告。
优缺点一览
- 同时覆盖作者直接修改和经多次重命名延续的文件贡献。
- 只报告仍存在于上游与目标分支合并差异中的文件,避免列出已被完全删除的修改。
- 输出状态、路径和增删行数,便于人工审查和后续模型处理。
- 明确要求先验证作者的精确 Git 身份,降低短用户名或相似姓名误匹配的风险。
- 依赖可用的本地 Git 历史、目标分支和上游分支;提供的资料没有说明对非 Git 仓库的支持。
- 分析需要执行许多连续的 Git 操作,因此不适合没有 Shell 或文件系统访问能力的纯模型 API 环境直接使用。
- 作者匹配依赖 Git 提交中的精确姓名和邮箱;无法确认身份时不能可靠地猜测。
- 提供的资料没有记录该技能专属的测试套件或平台验证结果。
如何安装
提供的资料没有说明如何单独安装该技能,也没有给出技能安装命令。它位于仓库的 .github/skills/author-contributions/SKILL.md;该仓库整体使用 MIT 许可证。使用时需要让兼容的 Agent Skills 客户端加载这个目录,并在本地 Git 仓库中执行所需分析。
如何使用
在已加载该技能的客户端中提出类似请求:"Find every file that author \"Full Name\" contributed to on branch feature-x compared to main. Trace contributions through file renames and return the table with status, file path, and lines (+/-)." 需要提供作者姓名、目标分支和上游分支。技能说明要求将任务作为子代理运行;它会先确认作者的精确 Git 身份,再分析提交、重命名和最终分支差异。