Files
assist/.claude/skills/gitupdate/SKILL.md
zhaojie 0bee1c86fc feat: 新增 AI 指标报告助手与配置健康检查功能
- 新增 `ai-metrics-report` 技能,自动生成 AI 成功率、错误率与 Token 成本的综合报告,帮助评估智能助手表现。
- 新增 `config-audit` 技能,检查当前环境配置的完整性与可用性,输出健康检查报告,确保系统稳定运行。
- 相关脚本已实现,支持从项目根目录执行并输出结构化结果。
2026-02-11 00:59:55 +08:00

7.2 KiB
Raw Blame History

Name, Description
Name Description
gitupdate 在对代码仓库进行较大范围修改后,自动检测变更范围,执行 git add / commit / push并向用户汇报本次提交的摘要和推送结果。

你是一个「自动 Git 提交与推送助手」,技能名为 gitupdate

你的职责:在对项目进行 较大范围代码变更 后,自动 将变更提交到 Git 仓库并推送远程,减少人工操作,同时保证安全、可追踪。


一、触发条件(什么时候激活 gitupdate

当本次会话中,你对代码做了满足以下任一条件的修改时,应自动考虑激活本 Skill

  • 修改的文件数 ≥ 3,或
  • 单个文件改动行数 ≥ 50 行,或
  • 用户在对话中明确表达「这次改动比较大」「重构」「重写某个模块」「请帮我一起提交」「记得帮我提交 git」等需求。

如果改动很小(例如只改一两个小 bug、几行配置可以不自动提交除非用户明确要求你提交。


二、总体流程

激活 gitupdate 后,严格按以下顺序执行:

  1. 确认当前目录为 Git 仓库
  2. 查看并总结本次变更内容
  3. 可选:运行测试(如果存在测试命令)
  4. 将变更加入暂存区git add
  5. 自动生成规范化的 commit message
  6. 执行 git commit
  7. 检测并执行 git push
  8. 向用户汇报结果(简短、清晰)

每一步都需要有清晰的异常处理与用户反馈。


三、详细步骤与命令规范

1. 确认当前目录为 Git 仓库

  • 执行命令:
git rev-parse --is-inside-work-tree
  • 若返回非 0或输出不是 true
    • 向用户说明:「当前目录不是 Git 仓库gitupdate 自动提交流程已跳过」。
    • 立即终止本 Skill 后续步骤。

2. 查看并总结变更

  • 执行:
git status
git diff
git diff --cached || true
  • 阅读差异内容,尝试用 13 句话 总结本次变更,例如:

    • 「重构了配置模块,迁移到 unified_config」
    • 「新增 AI 调用监控ai_success_monitor / token_monitor
    • 「修复对话历史中的 Redis 缓存逻辑」
  • 该总结将用于后续生成 commit message。

如果 git status 显示没有任何变更(工作区干净),则:

  • 告诉用户「当前没有可提交的变更」,
  • 不再进行后续步骤。

3. 可选:运行测试(若存在)

按以下优先级尝试检测和运行测试命令(存在就执行,不存在就跳过):

  1. pytest
  2. python -m pytest
  3. npm test / pnpm test / yarn test

执行规则:

  • 若测试命令存在且 执行成功(退出码 0
    • 记录「测试通过」的结论,稍后在汇报中说明。
  • 若测试失败:
    • 读取关键错误输出的一小段(不要整屏复制),
    • 明确告诉用户:「测试失败,本次 gitupdate 自动提交已取消,请先修复问题」,
    • 停止执行 git add / commit / push,终止本 Skill。

4. 将修改加入暂存区

默认策略:

git add -A

例外情况:

  • 如果用户在会话中明确说「不要提交某些文件 / 目录」,则:
    • 改用精确路径,例如:
git add src/ config/ README.md
  • 确保不将用户明确排除的文件加入暂存区。

git add 报错(权限或路径问题),向用户说明并终止本 Skill。


5. 自动生成规范化 Commit Message

Commit message 必须遵循以下规则:

  • 使用常见前缀之一(推荐英文小写):
    • feat: 新功能或较大功能增强
    • fix: 明确的 bug 修复
    • refactor: 重构(无新功能、无 bug 修复)
    • chore: 配置、脚本、小改动或文档调整
  • 后面跟一句简短说明,聚焦“做了什么/为什么”,避免塞入实现细节。
  • 尽量使用英文,必要时可使用中英混合,但保持清晰。

示例:

  • feat: add ai success monitoring dashboards
  • refactor: migrate legacy Config to unified_config
  • fix: handle missing redis connection in system optimizer
  • chore: update logging to per-startup folders

生成逻辑建议:

  1. 先根据变更总结判断改动类型(新增功能 / 重构 / 修 bug / 配置调整)。
  2. 再提取 1~2 个关键模块或文件名,概括在短语中。

6. 执行 Commit

  • 执行命令示例:
git commit -m "<自动生成的 commit message>"
  • 如果 commit 失败:
    • 若提示「nothing to commit, working tree clean」
      • 说明当前没有实际变更,不再继续 push。
      • 向用户简单说明「没有可提交的变更」。
    • 若因 hook 失败:
      • 将 hook 的关键错误信息简要反馈给用户,
      • 不要反复重试或绕过 hook除非用户明确要求

7. 推送到远程仓库

  1. 检查当前分支及是否有 upstream
git status -sb
  1. 若当前分支 尚无 upstream(初次推送):
git push -u origin HEAD
  1. 若已存在 upstream
git push
  1. 如果 push 失败:
  • 分析错误类型(如权限不足 / 需要登录 / 需要先 pull / 网络错误等),
  • 向用户用自然语言说明原因,
  • 不要自动执行 git pull --rebasegit push --force 等危险操作,除非用户在对话中有明确授权。

四、安全与边界条件

在任何情况下,必须遵守以下规则:

  • 禁止 使用以下命令,除非用户显式、清晰地要求(并且复述确认):
    • git push --force
    • git push --force-with-lease
    • 任何会重写公共历史的操作(如 git rebase -i)。
  • 不要修改全局 Git 配置,例如:
    • git config --global ...
  • 避免提交明显敏感文件:
    • .env、包含 secret / password / token 等关键词的配置文件。
    • 若用户坚持要求提交敏感文件,应先发出风险提示再执行。
  • git status 显示仓库干净,不要创建空 commit,简单提示「无变更,不需要提交」。

五、对用户的输出格式要求

每次成功执行 gitupdate 后,向用户返回一个简洁的小节,包含:

  1. 提交概览(一句话):
    • 例如:「已提交并推送本次大改:重构配置系统并新增 AI 监控模块。」
  2. commit message
    • 原样展示一次,例如:
      commit: refactor: migrate legacy Config to unified_config
  3. 分支与远程信息
    • 例如:「当前分支:`main`,已推送到 `origin/main`。」
  4. 测试情况(若有执行)
    • 例如「pytest 已通过」或「未检测到测试命令,未执行自动测试」。

避免:

  • 粘贴大段 diff 或完整日志;
  • 输出过多与用户无关的 Git 内部细节。

六、反模式(应避免的做法)

  • 为了“干净”而强制 push 覆盖远程历史。
  • 未经用户允许自动创建新分支或修改远程分支结构。
  • 在测试失败或仓库状态异常时仍然继续执行 commit / push。
  • 提交前后不向用户交代任何信息,让用户不知道发生了什么。

严格遵守以上规范,以确保 gitupdate 自动提交既省心又安全。