360 Secure SkillHub
360 安全技能中心

Commit Diff Analyzer

根据用户提供的两个提交 ID,校验提交是否存在,读取双方作者、日期与说明,按时间顺序执行 git diff 与 --stat,输出变更汇总、逐行差异以及按修改/新增/删除分组的文件清单,并处理无效 ID、同一提交和非 Git 目录等情况。

afine907
afine907
热度 16.16
最近更新 2026-05-15 12:21:47
分类:开发依赖:代码执行应用场景:代码审查

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add commit-diff-analyzer
Metadata
name
commit-diff-analyzer
description
Analyzes code changes between two git commits. Use when user provides two commit IDs and wants to understand what changed between them, including file modifications, additions, deletions, and commit context.

Commit Diff Analyzer

Usage Pattern

When user provides two commit IDs (in any order or format), analyze the changes between them:

  1. Validate commits exist: Run git cat-file -t <commit> for each commit ID
  2. Get commit info: Run git log -1 --format=fuller <commit> for both commits
  3. Show diff: Run git diff <older-commit>..<newer-commit> (chronological order)
  4. Show stats: Run git diff --stat <older-commit>..<newer-commit>

Output Organization

Present the analysis with:

  1. Commit metadata - Author, date, commit message for both commits
  2. Change summary - Files changed, insertions, deletions
  3. Detailed diff - Line-by-line changes with context
  4. File breakdown - Group by: Modified, Added, Deleted files

Key Commands

# Validate commits exist
git cat-file -t <commit-id>

# Get full commit info
git log -1 --format="Hash: %H%nAuthor: %an%nDate: %ad%nMessage: %s%n" <commit-id>

# Chronological diff (older..newer)
git diff <older-commit>..<newer-commit>

# Diff stat
git diff --stat <older-commit>..<newer-commit>

# Show files changed
git diff --name-only <older-commit>..<newer-commit>

Handling Edge Cases

  • Invalid commit IDs: Report error and suggest running git log to see recent commits
  • Same commit: Notify user both IDs point to the same commit
  • Non-git directory: Error - skill only works in git repositories
  • Reverse order: Detect which commit is older and adjust command accordingly

Commit ID Formats

Accept various formats:

  • Full SHA: abc123def456...
  • Short SHA: abc123d (at least 7 chars)
  • Branch names (if they point to commits)
  • HEAD references like HEAD~5

Example Output Structure

=== Commit A ===
Hash: abc123...
Author: John Doe
Date: 2024-01-15 10:30:00
Message: feat: add user login

=== Commit B ===
Hash: def456...
Author: Jane Smith
Date: 2024-01-20 14:45:00
Message: fix: resolve auth bug

=== Changes Summary ===
5 files changed, 120 insertions(+), 35 deletions(-)

=== File Breakdown ===
Modified: src/auth.js, src/login.html
Added: src/auth-utils.ts
Deleted: src/old-auth.php

=== Diff ===
... (detailed diff output)