skills/git/git-commit/SKILL.md
提交变更前先自动识别并排除临时/备份/日志/构建产物等不该进版本库的文件,再合理更新忽略清单(项目通用噪声→.gitignore、个人机器噪声→全局 excludesFile/.git/info/exclude),疑似密钥则拒交并报警,最后生成规范 commit message 提交。触发词:「提交」「commit」「把改动交了」「暂存并提交」。仅本地提交,不 push、不开 PR。
npx skillsauth add lazygophers/ccplugin git-commitInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
提交前先把噪声挡在版本库外,再写规范信息。核心是排除清单 + 忽略落点决策两件事,git 提交本身是末端。
add + commit,推送归用户显式指令。git rm --cached)前必确认。改动会传播到协作者工作区,报清单待批准。git add -A / git add . 一把梭,逐项 add,防裹挟噪声与密钥。git status --porcelain
git diff --stat # 已追踪改动量
逐个文件归类。高频噪声速判(完整分语言全表见 references/noise-and-ignore.md §1):
| 类别 | 典型 pattern | 处置 |
| --- | --- | --- |
| 临时/备份 | *.tmp *.bak *.orig *.rej *~ *.swp .#* | 排除 |
| 日志 | *.log logs/ npm-debug.log* | 排除 |
| 构建产物 | dist/ build/ out/ target/ *.pyc __pycache__/ .next/ *.class *.o | 排除 |
| 依赖目录 | node_modules/ vendor/ .venv/ venv/ | 排除 |
| 覆盖率/缓存 | coverage/ .coverage .pytest_cache/ .ruff_cache/ .mypy_cache/ | 排除 |
| OS/编辑器 | .DS_Store ._* Thumbs.db .idea/ *.iml | 排除(个人级,落全局) |
| 密钥/凭证 | .env .env.*(除 .env.example) *.pem *.key id_rsa* *credentials* | 🔴 STOP,走硬规 2 |
⚠️ 锁文件应提交,非噪声:
package-lock.jsonpnpm-lock.yamlyarn.lockuv.lockCargo.lockpoetry.lockcomposer.lockGemfile.lockgo.sum。误删破坏 CI 可复现。完整保留清单见 references/noise-and-ignore.md §2。
排除的噪声要不要写忽略清单、写到哪。git 三档 exclude 源(细则 + git check-ignore 去重命令见 references/noise-and-ignore.md §3):
| 判据 | 落点 | 理由 |
| --- | --- | --- |
| 项目所有人都产生(构建/依赖/覆盖率/.env) | .gitignore | 随 clone 分发,防他人误提交 |
| 只你的机器/编辑器/OS(.DS_Store .idea/ *.swp) | 全局 core.excludesFile 或 .git/info/exclude | 本地生效,不污染项目 |
| 已被上一档覆盖 | 不重复写 | 先 git check-ignore -v <path> 查来源 |
git check-ignore -v <path>:有输出=已被某规则忽略(附来源档),不重复加。git config --get core.excludesfile。dir/* + !dir/keep(父目录整个忽略后无法再 include,见 reference §3)。.gitignore 只管未追踪文件;已追踪的需从索引移除(必带 --cached,否则删本地文件):
git rm -n --cached <path> # 先 dry-run 预演(🔴 硬规 3 报清单确认)
git rm --cached <path> # 单文件;目录加 -r
# 再把 pattern 写入对应忽略落点
git diff --cached | grep -nE -- '-----BEGIN [A-Z ]*PRIVATE KEY-----|AKIA[0-9A-Z]{16}|ghp_|glpat-|sk-(ant-|proj-)?' # 密钥预扫,命中 STOP
git add <应提交项...> # 逐个加,禁 -A
git diff --cached --quiet && echo "无暂存改动,不空提交" # 防空提交
git commit -m "<type>(<scope>): <subject>"
commit message:用户已在入参给出 message → 直接采用,不再自造;未给才自动生成——feat/fix/docs/refactor/chore/test/perf/build/ci + 祈使句主题,先 git log --oneline -20 采样项目风格再写(本项目实测:type/scope 用英文、subject 用中文,如 feat(trellisx): 异步等待...)。规范细则见 references/secrets-and-cleanup.md §message。
| 触发条件 | 一线修复 | 仍失败兜底 |
| --- | --- | --- |
| 命中疑似密钥 | 🔴 STOP,列文件报警,git restore --staged <file> 移出 | 已追踪 → 提示密钥已入历史,须 rotate + git filter-repo 清史(不代执行) |
| git add 报路径不存在/特殊字符 | 用 -- 分隔 + 引号:git add -- '<path>' | 逐文件 add,跳过报错项并列出 |
| 无实质改动(全是噪声) | 报「无可提交内容,已更新忽略清单」,不空提交 | 用户坚持 → --allow-empty 需显式要求 |
| pre-commit hook 拦截失败 | 读 hook 输出,修根因(lint/format)后重提 | 修不动 → 报原文,禁 --no-verify 绕过除非用户明示 |
| 大文件(>50MB)误入暂存 | 提示 Git LFS(git lfs track)或移出 | 用户坚持 → 警告仓库膨胀不可逆后再交 |
| 整文件虚假 diff(CRLF/mode) | .gitattributes * text=auto / core.fileMode false | 确认非真内容改动则不提交该项 |
git filter-repo)。tools
UI/UX 与布局设计——做界面布局/结构/导航/组件/交互的设计决策。触发:做UI/UX/布局/排版/导航/组件/交互/栅格/响应式/图表选型/字体配对。按媒介路由 HTML/Web、原生 App(iOS/Android/桌面)、CLI、TUI。需后端动态系统不适用;配色/主题/色板走姊妹 skill design-color。
tools
主题与配色设计——做颜色搭配/调色板/主题/品牌色阶/暗模式的设计决策。触发:选配色/调色/主题/色板/品牌色/暗模式/对比度/色盲/UI风格。按媒介路由 HTML/Web(CSS变量)、原生App(平台token)、CLI(ANSI)、TUI(真彩/256/16降级)。保证可访问性(对比度/色盲安全)。需后端动态系统不适用;UI/UX 布局/组件/交互走姊妹 skill design-uiux。
tools
跨任意组件(plugin/skill/agent/command)的验证驱动优化循环纪律 skill。当用户要优化某个已有组件却无明确方向、或要防止改了反而更差(自评乐观偏差 / 多维同改归因失效 / 为凑分加废话膨胀)、或要把一套通用「评分→单变量改→改后验证严格更好才留否则回滚→触顶停」的纪律套到任意组件上时使用。管优化过程本身的纪律(validation gate / ratchet / 独立验证 / 触顶停),不评单组件深度(交 skill-dev),不查插件接线(交 plugin-dev)。仅手动 /optimize-any 触发。
data-ai
两层规则记忆 (基于 .skein/spec)。planning 时 recall 召回相关规则、task finish 后 sediment 沉淀学习 + prune 自动精简过期/重复/断链规则。core 常驻硬规 + recall 按需召回, 经判定门自动写盘 (不逐次问用户)。产出 .skein/spec 下 core/recall 规则文件 + index。另支持空仓 bootstrap 播种规则基线、记忆大面积失效 (大重构/换栈) 时 reconstruct 可逆归档后按项目类型分型重建、maintain 手动体检 (超预算/stale/断链/重复/废弃, --apply 自动修复)、auto-fix (Stop hook 写 .pending-fix 标记 → main 派 skein-specer bg 跑 maintain --apply 全自动修, 断链只报告)。