File contents Commit - 主线程提交 + Subagents 辅读分析
分析当前改动,生成 Conventional Commits 风格的提交信息;仅在大 diff 或跨多个关注点时,按需启用只读 subagents 辅助聚类与风险分析。
使用方法
/ac-commit [options]
参考资料
references/conventional-commits.md — Conventional Commits 规范
选项
选项
说明
--no-verify
跳过 Git 钩子(仅当用户显式指定时)
--all
暂存所有改动
--amend
修补上次提交(仅当用户显式指定时)
--signoff
附加签名
--emoji
包含 emoji 前缀
--scope <scope>
指定作用域
--type <type>
指定提交类型
角色分工
角色
职责
Claude(主线程)
执行 Git 检查、收集 diff、决定是否启用 subagents、生成 commit message、执行提交
subagents
只读分析大 diff 的聚类结果、拆分建议与风险点,不执行 Git 写操作
执行约束
工作目录 :
使用当前 Git 仓库根目录作为提交分析根目录
如果用户通过 /add-dir 添加了多个工作区,先确定实际要提交的仓库
如果无法确定,用 AskUserQuestion 询问用户选择目标仓库
subagents 使用条件 :
适用:diff 很大、跨多个顶级目录、混合了多类关注点(源码/测试/文档/配置)
优先:使用只读 subagents 做改动聚类、拆分建议和风险扫描
不适用:小改动、单一功能点、主线程直接看 diff 就能判断的场景
重要 :
所有 Git 写操作(git add、git commit、写 .git/COMMIT_EDITMSG、写 .context/history/*)只由主线程执行
subagents 不得执行暂存、提交、改写历史、跳过钩子等 Git 写操作
已委托给 subagents 的 diff 分析内容,主线程不要重复分析
默认尊重 Git hooks;只有用户显式传入 --no-verify 时才可跳过
只有用户显式传入 --amend 时才允许修补上次提交
执行工作流
🔍 阶段 1:仓库校验
[模式:检查]
验证当前目录是 Git 仓库
检测 rebase / merge / cherry-pick 等中间状态与冲突
读取当前分支与 HEAD 状态
📋 阶段 2:改动检测
[模式:分析]
获取已暂存与未暂存改动
若暂存区为空:
用户显式传入 --all → 暂存所有改动
否则提示用户选择是否需要暂存
收集:
git status --short
git diff --cached
必要时 git diff
🧩 阶段 3:拆分建议与按需并行分析
[模式:建议]
主线程先快速判断改动规模与关注点
若改动较小,主线程直接按以下维度聚类:
关注点(源代码 vs 文档/测试)
文件模式(不同目录/包)
改动类型(新增 vs 删除)
若检测到以下情况之一,则按需并行启动只读 subagents:
改动超过约 300 行
跨多个顶级目录
同时包含功能、测试、文档、配置等多类改动
subagents 典型拆分方式:
改动聚类 :判断哪些文件应归为同一原子提交
风险扫描 :识别 breaking change、配置风险、大量删除、测试缺口
主线程汇总后决定:
是否建议拆分提交
当前提交的最佳 type / scope / subject
✍️ 阶段 4:生成提交信息
[模式:生成]
格式 :[emoji] <type>(<scope>): <subject>
首行 ≤ 72 字符
祈使语气
消息体:动机、实现要点、影响范围
语言:根据最近提交风格与当前仓库习惯判断中文/英文
若已启用 subagents,则结合其聚类与风险分析结果生成更准确的提交信息。
📦 阶段 5:Context 自动归档(若 .context/ 存在)
[模式:上下文归档]
前置判断 :
若 .context/ 目录不存在 → 自动创建 .context/history/、.context/current/branches/ 目录结构,初始化空的 commits.jsonl 和 commits.md,然后继续执行归档
若 .context/ 存在 → 执行以下步骤
从 git diff 自动生成 ContextEntry :
获取当前分支名:git branch --show-current
获取暂存区变更:git diff --cached --stat + git diff --cached
分析 diff 生成 ContextEntry:
summary:从阶段 4 生成的 commit message 中取首行
decisions:分析 diff 中的关键变更(新增依赖、架构调整、接口变更、配置修改),推断决策理由
bugs:若 commit type 为 fix,从 diff 中提取 bug 症状、根因、修复方式
changes.files:从 git diff --cached --name-only 提取
tests:若变更包含测试文件,记录测试相关信息
若 .context/current/branches/<branch>/session.log 存在且非空,将其中的手动记录合并到 decisions / bugs 中,然后清空 session.log
脱敏:扫描 token / key / password / secret 模式 → 替换为 [REDACTED]
追加:将 ContextEntry 作为一行追加到 .context/history/commits.jsonl
重生成:更新 .context/history/commits.md 人类视图
暂存:git add .context/history/
Trailer:在 commit message 中添加 Context-Id: <uuid> trailer
失败降级 :若归档过程出错,不阻断提交。写入 minimal ContextEntry(仅 summary + files),继续正常提交。
✅ 阶段 6:执行提交
[模式:执行]
git commit [-S] [--no-verify] [-s] -F .git/COMMIT_EDITMSG
Type 与 Emoji 映射
Emoji
Type
说明
✨
feat
新增功能
🐛
fix
缺陷修复
📝
docs
文档更新
🎨
style
代码格式
♻️
refactor
重构
⚡️
perf
性能优化
✅
test
测试相关
🔧
chore
构建/工具
👷
ci
CI/CD
⏪️
revert
回滚
示例
/ac-commit
/ac-commit --all
/ac-commit --emoji
/ac-commit --scope ui --type feat --emoji
/ac-commit --amend --signoff
关键规则
Git 写操作只在主线程 – 提交、暂存、写提交信息都由当前会话主线程完成
subagents 只做大 diff 分析 – 按需使用,不默认开启,不执行 Git 写操作
尊重钩子 – 默认执行,只有用户显式指定 --no-verify 才可跳过
原子提交 – 一次提交只做一件事
不改源码 – 本流程不修改产品代码,只处理 Git 与上下文归档文件
1 --- 2 name: ac-commit 3 description: 分析 Git 改动并生成规范提交信息。 4 --- 5 6 # Commit - 主线程提交 + Subagents 辅读分析 7 8 分析当前改动,生成 Conventional Commits 风格的提交信息;仅在大 diff 或跨多个关注点时,按需启用只读 subagents 辅助聚类与风险分析。 9 10 ## 使用方法 11 12 ```bash 13 /ac-commit [options] 14 ``` 15 16 ## 参考资料 17 18 - `references/conventional-commits.md` — Conventional Commits 规范 19 20 ## 选项 21 22 | 选项 | 说明 | 23 |------|------| 24 | `--no-verify` | 跳过 Git 钩子(仅当用户显式指定时) | 25 | `--all` | 暂存所有改动 | 26 | `--amend` | 修补上次提交(仅当用户显式指定时) | 27 | `--signoff` | 附加签名 | 28 | `--emoji` | 包含 emoji 前缀 | 29 | `--scope <scope>` | 指定作用域 | 30 | `--type <type>` | 指定提交类型 | 31 32 --- 33 34 ## 角色分工 35 36 | 角色 | 职责 | 37 |------|------| 38 | Claude(主线程) | 执行 Git 检查、收集 diff、决定是否启用 subagents、生成 commit message、执行提交 | 39 | subagents | 只读分析大 diff 的聚类结果、拆分建议与风险点,不执行 Git 写操作 | 40 41 --- 42 43 ## 执行约束 44 45 **工作目录**: 46 - 使用当前 Git 仓库根目录作为提交分析根目录 47 - 如果用户通过 `/add-dir` 添加了多个工作区,先确定实际要提交的仓库 48 - 如果无法确定,用 `AskUserQuestion` 询问用户选择目标仓库 49 50 **subagents 使用条件**: 51 - 适用:diff 很大、跨多个顶级目录、混合了多类关注点(源码/测试/文档/配置) 52 - 优先:使用只读 subagents 做改动聚类、拆分建议和风险扫描 53 - 不适用:小改动、单一功能点、主线程直接看 diff 就能判断的场景 54 55 **重要**: 56 - 所有 Git 写操作(`git add`、`git commit`、写 `.git/COMMIT_EDITMSG`、写 `.context/history/*`)只由主线程执行 57 - subagents 不得执行暂存、提交、改写历史、跳过钩子等 Git 写操作 58 - 已委托给 subagents 的 diff 分析内容,主线程不要重复分析 59 - 默认尊重 Git hooks;只有用户显式传入 `--no-verify` 时才可跳过 60 - 只有用户显式传入 `--amend` 时才允许修补上次提交 61 62 --- 63 64 ## 执行工作流 65 66 ### 🔍 阶段 1:仓库校验 67 68 `[模式:检查]` 69 70 1. 验证当前目录是 Git 仓库 71 2. 检测 rebase / merge / cherry-pick 等中间状态与冲突 72 3. 读取当前分支与 HEAD 状态 73 74 ### 📋 阶段 2:改动检测 75 76 `[模式:分析]` 77 78 1. 获取已暂存与未暂存改动 79 2. 若暂存区为空: 80 - 用户显式传入 `--all` → 暂存所有改动 81 - 否则提示用户选择是否需要暂存 82 3. 收集: 83 - `git status --short` 84 - `git diff --cached` 85 - 必要时 `git diff` 86 87 ### 🧩 阶段 3:拆分建议与按需并行分析 88 89 `[模式:建议]` 90 91 1. 主线程先快速判断改动规模与关注点 92 2. 若改动较小,主线程直接按以下维度聚类: 93 - 关注点(源代码 vs 文档/测试) 94 - 文件模式(不同目录/包) 95 - 改动类型(新增 vs 删除) 96 3. 若检测到以下情况之一,则按需并行启动只读 subagents: 97 - 改动超过约 300 行 98 - 跨多个顶级目录 99 - 同时包含功能、测试、文档、配置等多类改动 100 4. subagents 典型拆分方式: 101 - **改动聚类**:判断哪些文件应归为同一原子提交 102 - **风险扫描**:识别 breaking change、配置风险、大量删除、测试缺口 103 5. 主线程汇总后决定: 104 - 是否建议拆分提交 105 - 当前提交的最佳 type / scope / subject 106 107 ### ✍️ 阶段 4:生成提交信息 108 109 `[模式:生成]` 110 111 **格式**:`[emoji] <type>(<scope>): <subject>` 112 113 - 首行 ≤ 72 字符 114 - 祈使语气 115 - 消息体:动机、实现要点、影响范围 116 - 语言:根据最近提交风格与当前仓库习惯判断中文/英文 117 118 若已启用 subagents,则结合其聚类与风险分析结果生成更准确的提交信息。 119 120 ### 📦 阶段 5:Context 自动归档(若 `.context/` 存在) 121 122 `[模式:上下文归档]` 123 124 **前置判断**: 125 - 若 `.context/` 目录不存在 → 自动创建 `.context/history/`、`.context/current/branches/` 目录结构,初始化空的 `commits.jsonl` 和 `commits.md`,然后继续执行归档 126 - 若 `.context/` 存在 → 执行以下步骤 127 128 **从 git diff 自动生成 ContextEntry**: 129 130 1. 获取当前分支名:`git branch --show-current` 131 2. 获取暂存区变更:`git diff --cached --stat` + `git diff --cached` 132 3. 分析 diff 生成 ContextEntry: 133 - `summary`:从阶段 4 生成的 commit message 中取首行 134 - `decisions`:分析 diff 中的关键变更(新增依赖、架构调整、接口变更、配置修改),推断决策理由 135 - `bugs`:若 commit type 为 `fix`,从 diff 中提取 bug 症状、根因、修复方式 136 - `changes.files`:从 `git diff --cached --name-only` 提取 137 - `tests`:若变更包含测试文件,记录测试相关信息 138 4. 若 `.context/current/branches/<branch>/session.log` 存在且非空,将其中的手动记录合并到 decisions / bugs 中,然后清空 `session.log` 139 5. 脱敏:扫描 token / key / password / secret 模式 → 替换为 `[REDACTED]` 140 6. 追加:将 ContextEntry 作为一行追加到 `.context/history/commits.jsonl` 141 7. 重生成:更新 `.context/history/commits.md` 人类视图 142 8. 暂存:`git add .context/history/` 143 9. Trailer:在 commit message 中添加 `Context-Id: <uuid>` trailer 144 145 **失败降级**:若归档过程出错,不阻断提交。写入 minimal ContextEntry(仅 summary + files),继续正常提交。 146 147 ### ✅ 阶段 6:执行提交 148 149 `[模式:执行]` 150 151 ```bash 152 git commit [-S] [--no-verify] [-s] -F .git/COMMIT_EDITMSG 153 ``` 154 155 --- 156 157 ## Type 与 Emoji 映射 158 159 | Emoji | Type | 说明 | 160 |-------|------|------| 161 | ✨ | `feat` | 新增功能 | 162 | 🐛 | `fix` | 缺陷修复 | 163 | 📝 | `docs` | 文档更新 | 164 | 🎨 | `style` | 代码格式 | 165 | ♻️ | `refactor` | 重构 | 166 | ⚡️ | `perf` | 性能优化 | 167 | ✅ | `test` | 测试相关 | 168 | 🔧 | `chore` | 构建/工具 | 169 | 👷 | `ci` | CI/CD | 170 | ⏪️ | `revert` | 回滚 | 171 172 --- 173 174 ## 示例 175 176 ```bash 177 /ac-commit 178 /ac-commit --all 179 /ac-commit --emoji 180 /ac-commit --scope ui --type feat --emoji 181 /ac-commit --amend --signoff 182 ``` 183 184 ## 关键规则 185 186 1. **Git 写操作只在主线程** – 提交、暂存、写提交信息都由当前会话主线程完成 187 2. **subagents 只做大 diff 分析** – 按需使用,不默认开启,不执行 Git 写操作 188 3. **尊重钩子** – 默认执行,只有用户显式指定 `--no-verify` 才可跳过 189 4. **原子提交** – 一次提交只做一件事 190 5. **不改源码** – 本流程不修改产品代码,只处理 Git 与上下文归档文件
yz0812/ai-dev-toolkit/tree/main/skills/ac-commit commit 256a60ef40
Frequently asked questions How do I install the Ac Commit skill? Run npx skillmds@latest add yz0812/ac-commit in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Ac Commit skill do? 分析 Git 改动并生成规范提交信息。 It is listed under Coding & Dev Tools on SkillMD.
Is Ac Commit safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Ac Commit? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Ac Commit free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Ac Commit? yz0812 (@yz0812) published this skill. Their other Agent Skills are listed on their SkillMD profile.