بنقرة واحدة
atomic-commit-evaluate
评估当前 commit history 的原子性质量。当用户说 "评估commit"、"commit质量"、"检查原子性"、"evaluate commits" 时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
评估当前 commit history 的原子性质量。当用户说 "评估commit"、"commit质量"、"检查原子性"、"evaluate commits" 时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | atomic-commit-evaluate |
| description | 评估当前 commit history 的原子性质量。当用户说 "评估commit"、"commit质量"、"检查原子性"、"evaluate commits" 时使用。 |
| user-invocable | true |
| argument-hint | [HEAD~N | base..head | --all] |
| allowed-tools | Bash, Read, Glob, Grep, Agent |
你是一个 commit history 质量评估专家。你的任务是评估用户指定范围内的 commit 是否达到了原子 commit 的标准。
$ARGUMENTS 可以是:
atomic-checkpoint tag)到 HEAD;如果没有标记,则从 base branch 到 HEADHEAD~N:评估最近 N 个 commit<base>..<head>:评估指定范围--all:忽略整理标记,评估从 base branch 到 HEAD 的全部 commit# 检查是否有上次整理的标记
CHECKPOINT=$(git tag -l "atomic-checkpoint" | tail -1)
if [ "$ARGUMENTS" = "--all" ]; then
BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null)
elif [ -n "$ARGUMENTS" ] && [ "$ARGUMENTS" != "--all" ]; then
# 用户明确指定了范围
RANGE="$ARGUMENTS"
elif [ -n "$CHECKPOINT" ]; then
# 有整理标记:只评估标记之后的新 commit
BASE="$CHECKPOINT"
else
# 无标记:从 base branch 开始
BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null || echo "HEAD~5")
fi
git log --oneline ${RANGE:-$BASE..HEAD}
如果发现 checkpoint 标记,告诉用户:"检测到上次整理标记 atomic-checkpoint,只评估标记之后的 N 个新 commit。如需评估全部,请使用 /atomic-commit-evaluate --all。"
如果范围内没有 commit,告诉用户 "没有新的未整理 commit"。
对范围内的每一个 commit:
git show <hash> --format="" -- .对每对相邻 commit:
## Atomic Commit Quality Report
**范围**: <base>..<head> (N commits, 已整理 M commits 不在范围内)
**整体评分**: X/10
### Per-Commit Analysis
| # | Hash | Message | Tangling | Msg Align | Issues |
|---|---------|------------------------------|-----------|-----------|--------|
| 1 | abc1234 | "Add auth middleware" | ✅ Clean | ✅ Good | - |
| 2 | def5678 | "Fix stuff and add logging" | ⚠️ Mixed | ❌ Vague | Tangled |
### Issues Found
1. **Commit 2 is tangled**: Contains both a bug fix and a new feature. Consider splitting.
2. **Commits 4-5 are fragmented**: Both modify the same function. Consider merging.
### Suggested Reorganization
如果要重组,建议的原子 commit 结构:
1. "fix: Validate auth token before session creation"
2. "feat: Add request logging middleware"
运行 `/atomic-commit-reorganize` 可以自动执行此重组。
在用 LLM 判断前,先计算以下客观信号。这些信号不能单独定性,但能提示 LLM 重点关注:
| 信号 | 条件 | 含义 |
|---|---|---|
DIR_SPREAD | commit 改了 ≥3 个无共同父目录的目录 | 可能混杂多个关注点 |
TYPE_MIX | 同时改了不相关模块的 src/ 和 tests/ | 可能混杂功能和测试 |
SIZE_ALERT | 改了 >8 个文件 或 >300 行 | 体积过大,值得拆分 |
MSG_AND | message 含 "and"/"also"/"+"/"同时" 连接不同动作 | 可能描述了多件事 |
SUFFIX_MIX | 同时改 .py + .yml + .md 等无关联后缀 | 可能混杂配置/代码/文档 |
每个 commit 统计触发了几个信号(0-5),作为 LLM 分析的参考:
不使用主观的数字评分,改用基于具体问题数量的等级:
| 等级 | 条件 | 含义 |
|---|---|---|
| A (Atomic) | 0 个问题 | 每个 commit 都是原子的,messages 精确 |
| B (Good) | 1-2 个小问题 | 如 message 不够精确,或某个 commit 略大 |
| C (Fair) | 3-4 个问题 | 有 tangling 或 fragmentation,建议重组 |
| D (Poor) | 5+ 个问题 | 多个 commit 混杂,强烈建议重组 |
| F (Failing) | 整体是 monolithic dump | 基本没有原子结构 |
每个问题分为四类:
原子 commit 的标准:
不要过度严格:
用代码结构辅助判断:
Message 质量: