关于 commit-detection
这项技能根据已暂存和未暂存的 Git 更改推断 Conventional Commits 类型与作用域,帮助贡献者选择合适的提交命令;它只负责检测和建议,不会执行提交。
主要功能
- 01按模式归类更改文件
- 02依据差异关键词判断类型
- 03从更改目录建议作用域
- 04应用 Conventional Commits 类型规则
- 05转交至匹配的提交命令
适用场景
- 01为仅修改文档的更改选择提交类型
- 02根据文件与差异文本识别缺陷修复
- 03为源代码目录中的更改建议作用域
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ fusengine/ agents --skill commit-detection安装后在 Claude Code 中输入/commit-detection确认已加载。
详细介绍
根据暂存和未暂存的 Git 更改检测最合适的 Conventional Commit 类型(feat/fix/docs/style/refactor/perf/test/build/ci/chore),使用文件模式分类(docs/test/config/ci/build/src)以及 diff 关键词启发式规则(“fix”“bug”“optimize”等),并根据主要更改目录生成 scope 建议(例如,`src/api/auth.ts` → `auth`)。涵盖完整的检测算法、规则级联、scope 提取和示例。不会执行提交操作——而是路由到匹配的 `/commit-pro:` 命令;如果没有规则能明确匹配,则路由到 `commit` 技能以进行完整的智能分析。
提交类型检测技能
用于检测最合适的 Conventional Commit 类型的专业知识。
检测算法
第 1 步:收集数据
# Get modified files
git diff --name-only
git diff --staged --name-only
# Get change statistics
git diff --stat
git diff --staged --stat
# Check for keywords in diff
git diff | grep -i "fix\|bug\|error" | head -5
第 2 步:分类文件
| 类别 | 文件模式 |
|---|---|
| docs | *.md、*.txt、*.rst、README*、CHANGELOG* |
| test | *.test.*、*.spec.*、__tests__/*、test/* |
| config | *.json、*.yml、*.yaml、*.toml、.*rc |
| ci | .github/*、.gitlab-ci.yml、Jenkinsfile |
| build | package.json、Makefile、webpack.*、vite.* |
| style | 仅空白字符或格式更改 |
| src | *.ts、*.js、*.py、*.go、*.rs 等 |
第 3 步:应用规则
IF only docs files changed:
→ docs
IF only test files changed:
→ test
IF only config/build files changed:
→ chore
IF only CI files changed:
→ ci
IF diff contains "fix", "bug", "error", "issue", "resolve":
→ fix
IF new files added with business logic:
→ feat
IF files renamed/moved without logic change:
→ refactor
IF performance keywords ("optimize", "perf", "speed", "cache"):
→ perf
IF formatting only (whitespace, semicolons):
→ style
DEFAULT:
→ Use /commit-pro:commit for smart analysis
第 4 步:确定 Scope
从主要目录提取 scope:
src/components/Button.tsx → ui or button
src/api/auth.ts → auth
lib/utils/date.ts → utils
server/routes/user.ts → user
快速参考
| 类型 | 适用情况 | 版本升级 |
|---|---|---|
feat | 新功能 | PATCH |
fix | 修复 Bug | PATCH |
docs | 仅文档 | PATCH |
style | 仅格式调整 | PATCH |
refactor | 代码重构 | PATCH |
perf | 性能优化 | PATCH |
test | 仅测试 | PATCH |
build | 构建/依赖项 | PATCH |
ci | CI/CD 配置 | PATCH |
chore | 维护 | PATCH |
MINOR/MAJOR 升级由用户手动决定,绝不自动执行。
提交后操作
请参阅 post-commit 技能,了解适用于所有仓库的通用 CHANGELOG、版本升级和标签逻辑。
示例
示例 1:仅更改 README
Files: README.md
→ /commit-pro:docs
示例 2:新增组件和测试
Files: src/Button.tsx, src/Button.test.tsx
→ /commit-pro:feat (primary is new feature)
示例 3:修复现有文件中的问题
Files: src/api/auth.ts
Diff contains: "fix login bug"
→ /commit-pro:fix
评论
支持 Markdown