diff --git a/SKILLS.md b/SKILLS.md index f043e56..21e85a4 100644 --- a/SKILLS.md +++ b/SKILLS.md @@ -112,6 +112,7 @@ sh docs/standards/playbook/scripts/install_codex_skills.sh 位于 `codex/skills/`: +- `commit-message`:基于 staged diff 自动建议提交信息(`:emoji: type(scope): subject`) - `code-review-workflow`:结构化代码评审(正确性/安全/性能/测试) - `style-cleanup`:整理代码风格(优先使用仓库既有 formatter/lint 工具链) - `systematic-debugging`:系统化调试(先复现 → 再定位 → 再修复 → 再验证) diff --git a/codex/skills/commit-message/SKILL.md b/codex/skills/commit-message/SKILL.md new file mode 100644 index 0000000..71b5f28 --- /dev/null +++ b/codex/skills/commit-message/SKILL.md @@ -0,0 +1,63 @@ +--- +name: commit-message +description: 根据 staged diff 自动建议提交信息(:emoji: type(scope): subject),并可生成可选 body/footer。Triggers: commit message, 提交信息, 写提交说明, 生成提交信息, 提交 msg, emoji commit, git commit. +--- + +# Commit Message(提交信息建议器) + +目标:基于 `git diff --cached`(staged diff)自动生成 1–3 条符合 Playbook 规范的提交信息建议:`:emoji: type(scope): subject`(可选 body/footer)。 + +权威规范:`docs/common/commit_message.md`(type/emoji 对应关系、格式与约定)。 + +## When to use +- 用户要“写提交信息 / 生成 commit message / 按规范写提交说明 / emoji commit” +- 已经 `git add` 了一批改动,准备 `git commit` + +## Inputs(缺失就先问) +- 目标变更集:staged(默认)|unstaged|全部 +- scope:自动推断(默认)|用户指定 +- 是否允许拆分提交:是/否(当 staged 变更明显包含多个逻辑变更时) + +## Procedure(default) +1. **获取 staged 变更概览(优先小上下文)** + - 文件清单:`git diff --cached --name-status` + - 统计:`git diff --cached --stat` + - 如需语义:只对关键文件看 diff:`git diff --cached -- ` + +2. **推断 type(给出主建议 + 备选)** + - 只改文档/注释:`docs`(`:memo:`) + - 只改测试:`test`(`:white_check_mark:`) + - 纯格式/排版:`style`(`:art:`) + - 不改行为的结构调整:`refactor`(`:recycle:`) + - 修 bug:`fix`(`:bug:`) + - 新增功能:`feat`(`:sparkles:`) + - 配置/脚本/维护性改动:`chore`(`:wrench:`) + - 性能:`perf`(`:rocket:`);依赖:`deps`(`:package:`);安全:`security`(`:lock:`);删除:`remove`(`:wastebasket:`) + +3. **推断 scope(可选)** + - 规则:优先用“变更文件的共同父目录/组件名”;避免过长;用 `lower_snake_case` + - 示例:`tsl`、`office_xml`、`scripts`、`docs`、`skills` + - 若无法稳定推断:省略 scope + +4. **生成 subject(一句话,祈使句/现在时)** + - 首字母小写,不加句号,尽量 ≤ 72 字符 + - 用词模板: + - `add ...` / `fix ...` / `refactor ...` / `sync ...` / `update ...` + - 避免“调整一下/优化一些”等不明确描述 + +5. **可选:生成 body/footer** + - body:说明“为什么改、影响什么、验证方式”,每行建议 ≤ 72 字符 + - footer:任务号或 `BREAKING CHANGE:`(若有) + +6. **输出并确认** + - 输出 1 条主建议 + 2 条备选(不同 type/scope/subject),并说明取舍 + - 不要自动执行 `git commit`,除非用户明确要求 + +## Output contract(固定输出) +- Detected: staged files summary(文件数 + 关键路径) +- Proposed: + - Option A(recommended):`:emoji: type(scope): subject` + - Option B:... + - Option C:... +- Optional body/footer(如适用) +- Notes:是否建议拆分提交 + 建议拆分方式