Skip to main content

commit

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

Informações da origem

Repositório
OrangeViolin/high-school-physics-wiki
Última atividade na origem
24 de maio de 2026 às 16:20
Idioma detectado do SKILL.md
chinês
Estrelas
2
Forks
1

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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` 模式下将缓存区内容并入当前最高优先级组直接处理 - **文件跨组**:按优先级表取最高优先级组 - **只有一组**:直接执行,不展示分组计划
Ver no GitHub