SuperAPI AI 工具集

aif-commit

编程与开发

查看项目

更新于 10-16 09:20

技能介绍

用途

aif-commit 用于分析 Git 暂存区的改动并生成符合 Conventional Commits 规范的提交消息。它面向需要规范化提交历史的项目,可在提交前结合项目的架构、规则、路线图等上下文做只读检查。

主要能力

  • 读取项目配置:若存在 .ai-factory/config.yaml,会解析其中的路径(paths.description、paths.architecture、paths.rules_file、paths.roadmap、paths.rules、paths.plan、paths.plans)、语言(language.ui)、工作流(workflow.plan_id_format,默认 slug)、Git 偏好(git.enabled、git.create_branches、git.skip_push_after_commit)以及规则层级(rules.base 与命名规则)。若配置文件不存在,则使用默认路径 .ai-factory/、.ai-factory/PLAN.md、.ai-factory/plans/,语言 en,workflow.plan_id_format: slug,git.enabled: true,git.create_branches: true,skip_push_after_commit: false。
  • 读取技能上下文:若存在 .ai-factory/skill-context/aif-commit/SKILL.md,则必须读取;其中由 /aif-evolve 累积的项目级规则被视为对本技能通用说明的覆盖,冲突时以技能上下文规则为准,且这些规则适用于本技能的所有输出(包括提交消息格式),生成后需校验并在违规时修正。
  • 分析改动:运行 git status 查看暂存文件,运行 git diff --cached 查看暂存改动;若无暂存内容则给出警告并建议先暂存。
  • 解析活动计划(只读、可选):按优先级解析,包括以 @ 开头的参数、基于分支的完整计划或 ultra bundle、单一完整计划或 ultra bundle、paths.plan 中的 fast plan,以及旧版 @<plan-file> 语法。分支查找会以当前分支名(将 / 替换为 -)匹配计划文件;对 sequential 格式会同时查找编号计划与目录 index.md,并要求目录入口恰好包含一个 <!-- aif:plan-mode:ultra --> 标记,多个有效候选时发出 WARN 并优先 ultra。若无法解析活动计划或计划入口没有 ## Commit Plan,则维持当前暂存差异行为不变;该命令永不修改活动计划。
  • 使用 Commit Plan 分组:若活动计划含 ## Commit Plan,会解析提交组编号/名称、任务范围与建议的规范提交消息,并读取 ## Tasks 或 ## Implementation Tasks 将任务范围映射到描述与 Files: 提示;对 ultra 计划需读取各阶段文件与其 Files to Change 表及 Task N 规格来建立暂存路径映射。比较暂存文件/hunk 与计划分组后,会询问用户如何提交:Follow Commit Plan、Commit everything together 或 Adjust grouping。
  • 运行上下文门禁(只读):检查架构与描述产物、RULES.md 与路线图产物、规则层级中的提交约定;缺失可选文件(ROADMAP.md、RULES.md)仅记为 WARN 而非阻断;该命令不会修改上下文产物,若需单独的规则检查可建议 /aif-rules-check,门禁标签保持 WARN / ERROR。
  • 确定提交类型:feat、fix、docs、style、refactor、perf、test、build、ci、chore。
  • 确定作用域:可从文件路径(如 src/auth/ → auth)或参数推断;可选,跨多区域时可省略。
  • 生成消息:主题行不超过 72 字符,使用祈使语气(add 而非 added),类型后首字母不大写,主题行末尾不加句号;格式为 <type>(<scope>): <subject>,可含 <body> 与 <footer>。
  • 提交行为:检查暂存改动、分析差异、解析可选活动计划并按可用分组处理、运行只读上下文门禁并以 WARN/ERROR 汇总、若类型为 feat/fix/perf 且存在路线图则检查里程碑关联(缺失时警告并建议在正文/脚注补充),提出提交消息并让用户确认:Commit as is、Edit message、Cancel;确认后执行 git commit。
  • 提交后推送:若解析配置中 git.skip_push_after_commit = true,则完全跳过推送提示,本地提交成功后结束工作流;否则默认显示分支/ahead 状态(git status -sb)并询问是否推送,无上游时使用 git push -u origin <branch>,否则使用 git push。
  • 参数使用:若提供参数(如 /aif-commit auth),可将其作为作用域或提交消息上下文。
  • 拆分建议:若暂存改动包含不相关工作(如功能与修复,或独立模块改动),建议拆分为多个提交,展示文件/hunk 归属并让用户确认:Yes, split as suggested、No, commit everything together、Let me adjust the grouping。在改动暂存区前需要确认每个计划分组的文件集是否互斥、是否有文件跨多个分组、分组文件是否与 git diff --name-only 中的未暂存路径重叠;文件集互斥且不重叠时,可用 git reset HEAD 后逐组 git add <files> + git commit;重叠时保留原缓存补丁并用 git apply --cached 重新应用,或使用 hunk 级暂存,或在改动暂存前停止并请用户调整分组。

使用方式

在暂存改动后调用该技能;可通过参数(如 /aif-commit auth)指定作用域或上下文。技能会读取配置与技能上下文,分析暂存差异,必要时解析活动计划的 Commit Plan,运行只读门禁并生成消息,最终在用户确认后执行提交并在配置允许时询问推送。

适用场景

适用于需要按 Conventional Commits 规范生成提交消息、并希望结合项目架构/规则/路线图做提交前检查、或存在带 Commit Plan 的活动计划需要按组提交的 Git 工作流。

限制

  • 该命令将解析出的架构、路线图、RULES.md、描述与计划产物视为只读上下文,不会修改它们。
  • /aif-commit 没有隐式严格模式,上下文门禁默认仅警告,除非用户明确要求阻断行为。
  • 不得提交密钥或凭证,提交大差异前需仔细审查。
  • 绝不允许添加 Co-Authored-By 或任何将作者归属给 AI 的尾注,提交不得包含 AI 联合作者行。
  • 若无法解析活动计划或活动计划没有 ## Commit Plan,则维持当前暂存差异行为不变。
  • 若 hunk 级暂存或缓存补丁应用无法可靠执行,需在改动暂存前停止并请用户调整分组或一起提交。
  • 关于是否收费、价格、支持的平台等事实,资料中暂未提供。