SuperAPI AI 工具集

conventional-commit

编程与开发

查看项目

更新于 10-16 02:14

技能介绍

用途

该技能用于按照 Conventional Commits 1.0.0 规范生成 Git 提交信息。它面向需要统一提交信息格式、便于自动生成变更日志或进行语义化版本管理的开发场景。

主要能力

  • 分析变更:运行 git status 和 git diff HEAD 查看当前改动。
  • 暂存文件:仅暂存用户指定的文件,或使用 git add -A 暂存全部改动。
  • 确定类型与作用域:根据变更内容判断提交类型和可选作用域。
  • 生成提交信息:结合用户提示生成符合规范的提交信息。
  • 执行提交:使用 HEREDOC 格式提交,以保留换行与格式。
  • 输出结果:输出 <hash> <subject>。

提交格式

<type>[optional scope][!]: <description>

[optional body]

[optional footer(s)]

类型选择

  • 新功能:feat,对应 SemVer MINOR
  • Bug 修复:fix,对应 SemVer PATCH
  • 性能改进:perf,对应 SemVer PATCH
  • 代码重构(无行为变化):refactor
  • 代码风格/格式(无逻辑变化):style
  • 添加/更新测试:test
  • 仅文档:docs
  • 构建系统/依赖:build
  • CI/CD 配置:ci
  • 回滚之前的提交:revert
  • 其他维护任务:chore

注意:只有 feat 和 fix 具有 SemVer 影响。破坏性变更(任意类型加感叹号或使用 BREAKING CHANGE 页脚)会触发 MAJOR。

主题行

  • 最大长度:72 个字符(推荐 50 个字符以提升可读性)
  • 格式:type(scope): description 或 type: description
  • 语气:祈使句现在时(用 "add",不用 "added" 或 "adds")
  • 大小写:首字母小写
  • 标点:结尾不加句号

作用域

作用域用于说明受影响的代码库部分,使用描述模块、组件或区域的名词。常见模式:

  • 组件/模块:feat(auth):、fix(parser):、refactor(api):
  • 文件/区域:docs(readme):、test(unit):、build(webpack):
  • 功能:feat(dark-mode):、fix(checkout):

正文

  • 与主题行之间空一行
  • 解释 what 和 why,而非 how
  • 可包含多个段落(用空行分隔)
  • 每行 72 个字符换行

页脚

页脚遵循 git trailer 格式,使用 :<space> 或 <space># 分隔。常见页脚:

  • BREAKING CHANGE: <description> - 破坏性 API 变更
  • Refs: #123 或 Refs: JIRA-456 - 引用 issue
  • Closes: #123 或 Fixes: #123 - 关闭 issue
  • Co-authored-by: Name <email> - 标注共同作者
  • Reviewed-by: Name <email> - 标注审阅者
  • Acked-by: Name - 确认

注意:页脚标记使用 - 而非空格(例如 Reviewed-by 而非 Reviewed by)。例外:BREAKING CHANGE 允许空格。

破坏性变更

两种标记方式(可同时使用以强调):

  1. 感叹号:在主题行的冒号前加感叹号 feat(api)!: remove deprecated endpoints

  2. 页脚:在页脚添加 BREAKING CHANGE: 或 BREAKING-CHANGE: feat(api): redesign authentication flow

    BREAKING CHANGE: OAuth tokens now expire after 1 hour instead of 24 hours.

使用方式

工作流程:

  1. 运行 git status 和 git diff HEAD 分析变更
  2. 暂存文件:仅用户指定的文件,或 git add -A 暂存全部
  3. 根据变更确定类型和作用域
  4. 结合用户提示生成提交信息
  5. 使用 HEREDOC 格式提交:

git commit -m "$(cat <<'EOF' <type>(<scope>): <description>

<body>

Output: <hash> <subject>

作用边界

应做:分析 git 变更、生成提交信息、暂存文件、提交。

不应做:修改代码、推送(除非被要求)、创建分支、未经请求执行 amend。

示例

简单功能: feat: add email notifications for new messages

带作用域的 Bug 修复: fix(cart): prevent ordering with empty shopping cart

文档更新: docs(api): add authentication examples to README

带正文和页脚的破坏性变更: feat(api)!: redesign user authentication endpoints

Migrate from session-based auth to JWT tokens for better scalability. The new system supports refresh tokens and configurable expiration.

BREAKING CHANGE: /api/login now returns JWT instead of session cookie. Clients must include Authorization header with Bearer token. Refs: JIRA-1337

回滚提交: revert: let us never again speak of the noodle incident

Refs: 676104e, a215868

多作用域变更(使用最重要的作用域): feat(auth): add OAuth2 support with Google provider

Adds Google OAuth2 login flow with automatic account linking.

Co-authored-by: Jane Doe jane@example.com Closes: #42

反模式

应避免的常见错误:

  • 写 "Update code",应改为具体描述,如 fix(auth): validate token expiration
  • 写 "Fixed bug",应使用现在时,如 fix: prevent null pointer in parser
  • 写 "WIP",不应提交 WIP,应提交完整单元
  • 写 "Add feature.",结尾不加句号,如 feat: add dark mode toggle
  • 写 "Added tests",应使用祈使语气,如 test: add unit tests for parser
  • 写 "FEAT: Add...",类型应小写,如 feat: add...
  • 写 "misc changes",应具有描述性,如 chore: update dependencies

适用场景

适用于需要遵循 Conventional Commits 规范进行 Git 提交的团队或个人项目,尤其适合需要自动生成变更日志、进行语义化版本管理或统一提交风格的开发流程。

限制

该技能不修改代码、不推送(除非被要求)、不创建分支、未经请求不执行 amend。关于收费、价格、平台支持等具体信息,资料中暂未提供。