Skip to main content

commit

把项目当前所有变更按内容分组,一组一组地调用 /msg 生成提交消息并输出 git commit 命令,由用户逐组执行后再继续下一组。带 --auto 参数时自动执行所有组的 git add 和 git commit,无需用户介入。

معلومات المصدر

المستودع
OrangeViolin/high-school-physics-wiki
آخر نشاط في المصدر
٢٤ مايو ٢٠٢٦ في ١٦:٢٠
لغة SKILL.md المكتشفة
الصينية
النجوم
٢
التفرعات
١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
commit
description
把项目当前所有变更按内容分组,一组一组地调用 /msg 生成提交消息并输出 git commit 命令,由用户逐组执行后再继续下一组。带 --auto 参数时自动执行所有组的 git add 和 git commit,无需用户介入。
# /commit — 分组提交助手 ## 参数 | 参数 | 说明 | |------|------| | (无) | 交互模式:每组输出命令,等用户手动执行后再继续 | | `--auto` | 自动模式:依次对所有组自动执行 `git add` + `git commit`,无需用户介入 | ## 工作原理 ### 交互模式(默认) 每次调用 `/commit` 只处理**一组**变更: 1. 用 `git status` 扫描当前所有未提交变更(staged + unstaged + untracked) 2. 若无变更 → 输出"无未提交变更"并退出 3. 将变更按**内容领域**分组(见"分组策略") 4. 展示完整分组计划(首次)或当前剩余组(后续调用) 5. 取**第一组**,执行 `/msg` 流程(stage → 生成消息 → 写临时文件) 6. 输出 `bash wiki/scripts/skill_commit.sh -F <tmpfile>` 命令 7. 告知用户执行该命令后再次调用 `/commit` 处理下一组 用户工作流:`/commit` → 执行命令 → `/commit` → 执行命令 → … 直到所有组完成。 ### 自动模式(`--auto`) 一次调用处理**所有组**: 1. 用 `git status` 扫描全部变更,按分组策略归类 2. 若无变更 → 输出"无未提交变更"并退出 3. 展示完整分组计划 4. 逐组执行(无需用户确认): a. `git add <该组所有文件路径>` b. `git diff --cached` 生成提交消息草稿 c. 写入 `/tmp/gitmsg_*.txt` d. 执行 `bash wiki/scripts/skill_commit.sh -F <tmpfile>` e. 输出该组提交结果(commit hash + 消息首行) 5. 所有组完成后输出汇总 **注意**:`--auto` 模式下 Claude 有权直接执行 `git add` 和 `git commit`,这是用户明确授权的行为。 ## 分组策略 **按功能语义**分组,不按目录前缀。每组代表一类独立的变更意图,一个文件只属于一组。 | 优先级 | 组名 | 功能 | 典型路径 | |--------|------|------|----------| | 1 | **skills** | Claude skill / 基因 | `.claude/skills/`、`local/skills/`、`local/gene/` | | 2 | **scripts** | 自动化脚本与构建工具 | `local/script/*.py`、`local/script/*.sh` | | 3 | **frontend** | 浏览器端渲染(JS + CSS 合并) | `docs/wiki/js/`、`docs/wiki/css/`、`docs/wiki/plugins/` | | 4 | **pages** | Wiki 词条内容 | `docs/wiki/pages/` | | 5 | **history** | 词条修订历史 | `docs/wiki/history/` | | 6 | **logs** | 流程日志(RFC / butler / 审计) | `logs/` | | 7 | **config** | 项目配置 | `docs/wiki/pages.json`、`*.json`、`.gitignore` | | 8 | **ref** | 文档、规范、说明 | `ref/`、`README.md`、`CHANGELOG.md`、`CLAUDE.md`、`LAW.md`、`TODO.md`、`CONSTITUTION.md` | | 9 | **local** | 本地私有数据(不进主仓) | `local/config/`、`local/memory/` | | 10 | **other** | 其他所有文件 | — | **判断原则**:先看文件的**用途**,再看路径。路径是辅助线索,不是唯一依据。 若某组只有 1 个文件且与相邻组强相关,可合并(由 Claude 判断)。 ## 执行步骤 ### Step 1 — 扫描变更 ```bash git status --short ``` 收集所有 `M`、`A`、`D`、`??` 状态的文件路径。 ### Step 2 — 分组并展示计划 按分组策略归类,输出如下格式: ``` 📦 分组计划(共 N 组): [1/N] scripts(3 个文件) - wiki/scripts/record_revision.py - wiki/scripts/publish.sh - wiki/scripts/rebuild_recent.py [2/N] skills(1 个文件) - .claude/skills/wiki/SKILL.md [3/N] docs(2 个文件) - README.md - wiki/doc/recent-log.md ``` ### Step 3 — 处理组(交互模式) **判断"第一组"**:即 `git status` 中仍有变更的最高优先级组(已完成提交的组不再出现在 status 中)。 对该组执行 `/msg` 流程: 1. `git add <该组所有文件路径>`(逐个显式路径,**禁止** `-A`/`.`) 2. `git diff --cached --stat` 确认缓存区 3. `git diff --cached` 查看具体内容 4. `git log --oneline -5` 了解 commit 风格 5. 撰写中文提交消息草稿 6. 用 Bash 写入 `/tmp/`(**禁止用 Write 工具**,防止写入项目目录): ```bash MSGFILE=/tmp/gitmsg_$(date +%Y%m%d_%H%M%S)_$(git diff --cached | sha256sum | cut -c1-6).txt cat > "$MSGFILE" << 'EOF' <消息正文> EOF echo "$MSGFILE" ``` ### Step 4 — 输出并等待(交互模式) 输出格式: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [1/N] scripts — 提交消息已写入 /tmp/gitmsg_XXXXXXXX_XXXXXX.txt <消息草稿全文> 执行: bash wiki/scripts/skill_commit.sh -F /tmp/gitmsg_20260427_143521_a3f8c1.txt 完成后再次运行 /commit 处理下一组 [2/N] skills ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` 若这是最后一组,替换为"完成后所有变更已提交"。 ### Step 3-AUTO — 逐组自动提交(`--auto` 模式) 对每组依次执行,**不停顿等待用户**: 1. `git add <该组所有文件路径>`(逐个显式路径,**禁止** `-A`/`.`) 2. `git diff --cached` 查看内容,撰写中文提交消息草稿 3. 写入 `/tmp/gitmsg_*.txt` 4. **直接执行** `bash wiki/scripts/skill_commit.sh -F <msgfile>` 5. 输出该组结果: ``` ✅ [1/N] scripts — <commit hash 短码> <消息首行> ``` 6. 继续下一组,直到全部完成 ### Step 4-AUTO — 汇总(`--auto` 模式) 所有组完成后输出: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ 全部 N 组已自动提交: abc1234 [1/N] scripts: … def5678 [2/N] skills: … … ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ## 禁止事项 - ❌ 禁止 `git add -A` / `git add .` / `git add --all`(无论何种模式) - ❌ 交互模式下禁止自动执行 `git commit`(`--auto` 模式除外,该模式已获用户授权) - ❌ 禁止用 Write 工具写消息文件——必须用 Bash 写入 `/tmp/gitmsg_*.txt`,不得写入项目目录 ## 边界情况 - **缓存区已有内容**:交互模式下先询问用户是否清除(`git restore --staged .`)还是并入当前组;`--auto` 模式下将缓存区内容并入当前最高优先级组直接处理 - **文件跨组**:按优先级表取最高优先级组 - **只有一组**:直接执行,不展示分组计划
عرض على GitHub