|
| 1 | +--- |
| 2 | +name: docs-git-commit |
| 3 | +description: 在 SilverRainZ/silverrainz.github.io 和 SilverRainZ/bullet.in 项目中,当我要求提交文档修改时使用 |
| 4 | +--- |
| 5 | + |
| 6 | +# 文档项目专用的 Git 提交 |
| 7 | + |
| 8 | +## 概述 |
| 9 | + |
| 10 | +对 staging area 中的文档内容改动分析关联度,拆分或合并为独立 commit,每个 commit 附带中文描述。 |
| 11 | + |
| 12 | +## 触发条件 |
| 13 | + |
| 14 | +在 bullet 和 bullet.in 项目中,当我说「提交」「commit」时触发。**仅在 staging area 包含以下内容文件时才使用本 skill:** |
| 15 | + |
| 16 | +- `*.rst` — reStructuredText 文档正文 |
| 17 | +- `*.md` — Markdown 文档 |
| 18 | +- `blobs/**` 下的图片/素材(若伴随内容文件改动) |
| 19 | + |
| 20 | +以下文件属于配置/工程文件,**不计入内容改动**,不触发本 skill: |
| 21 | + |
| 22 | +- `conf.py`、`confs/*`、`Makefile`、`requirements.txt` |
| 23 | +- `templates/`、`.github/`、`utils/`、`blobs/` |
| 24 | + |
| 25 | +若 staging area 仅含配置/工程文件,降级使用 `git-commit` skill。 |
| 26 | + |
| 27 | +## 核心流程 |
| 28 | + |
| 29 | +### 第一步:判断是否触发 |
| 30 | + |
| 31 | +```bash |
| 32 | +git diff --cached --name-only |
| 33 | +``` |
| 34 | + |
| 35 | +检查文件列表中是否有 `*.rst` 或 `*.md`。若无,退回到 `git-commit` 处理。 |
| 36 | + |
| 37 | +### 第二步:阅读改动内容 |
| 38 | + |
| 39 | +```bash |
| 40 | +git diff --cached -- "*.rst" "*.md" |
| 41 | +``` |
| 42 | + |
| 43 | +理解每处改动的主题:新增文章?修正错字?补充段落?结构调整? |
| 44 | + |
| 45 | +### 第三步:分析关联度 |
| 46 | + |
| 47 | +在纯文档项目中,关联判断规则: |
| 48 | + |
| 49 | +1. **同一文章**:对同一 `.rst`/`.md` 文件的改动属于同一主题 |
| 50 | +2. **文章 + 配图**:`src/foo.rst` 的改动引入新图片,同时 `static/images/foo.png` 新增,视为关联 |
| 51 | +3. **索引联动**:`src/index.rst` 新增了某篇文章的 toctree 条目,同时该文章文件新增,视为关联 |
| 52 | +4. **同一主题系列**:`src/blog/` 下多篇关于同一事件的文章改动,视为关联 |
| 53 | +5. **跨文件修正**:同一个错别字或格式问题在多个文件中被修正,视为关联 |
| 54 | + |
| 55 | +不满足以上任何条件 → 各自单独 commit。 |
| 56 | + |
| 57 | +### 第四步:展示方案 |
| 58 | + |
| 59 | +``` |
| 60 | +计划创建以下 commit: |
| 61 | +
|
| 62 | +Commit 1: [中文描述] |
| 63 | + - src/blog/post-a.rst |
| 64 | + - src/blog/post-b.rst |
| 65 | +
|
| 66 | +Commit 2: [中文描述] |
| 67 | + - src/index.rst |
| 68 | + - src/about/contact.rst |
| 69 | +``` |
| 70 | + |
| 71 | +**必须等我确认后再执行。** 若我明确说「直接提交」或者你当前不被允许和用户交互, |
| 72 | +跳过确认。 |
| 73 | + |
| 74 | +### 第五步:逐个提交 |
| 75 | + |
| 76 | +```bash |
| 77 | +git commit -m "<中文描述>" -- <文件列表> |
| 78 | +``` |
| 79 | + |
| 80 | +`git commit -- <files>` 只提交指定文件,staging area 中其他文件不变。 |
| 81 | + |
| 82 | +在 commit body 中附加 co-author 信息(根据实际模型选择邮箱): |
| 83 | +- DeepSeek: `Co-authored-by: DeepSeek <service@deepseek.com>` |
| 84 | +- MiniMax: `Co-authored-by: MiniMax <model@minimax.io>` |
| 85 | +- GPT/Codex: `Co-authored-by: GPT <noreply@openai.com>` |
| 86 | + |
| 87 | +```bash |
| 88 | +git commit -m "<中文描述>" -m "" -m "Co-authored-by: DeepSeek <service@deepseek.com>" -- <files> |
| 89 | +``` |
| 90 | + |
| 91 | +完成后展示: |
| 92 | + |
| 93 | +``` |
| 94 | +✅ 已创建 N 个 commit: |
| 95 | + abc1234 新增「2026 年度回顾」系列文章 |
| 96 | + def5678 修正多处失效的外部链接 |
| 97 | +``` |
| 98 | + |
| 99 | +## commit message 规范 |
| 100 | + |
| 101 | +- 使用中文 |
| 102 | +- 描述改动目的,避免出现文件名 |
| 103 | +- 控制在 50 字符内 |
| 104 | + |
| 105 | +## 常见错误 |
| 106 | + |
| 107 | +| 错误 | 正确做法 | |
| 108 | +|------|----------| |
| 109 | +| 对纯配置改动触发本 skill | 检查无 `.rst`/`.md` 后降级到 git-commit | |
| 110 | +| 把不同主题的文章混在一个 commit | 按主题拆分 | |
| 111 | +| 文章和配图分两个 commit | 同一篇文章的图文合并提交 | |
| 112 | +| 不展示方案直接提交 | 必须展示等我确认 | |
| 113 | +| commit message 写「修改了 a.rst b.rst」 | 描述目的,如「修正导航栏失效链接」 | |
| 114 | + |
| 115 | +## 示例 |
| 116 | + |
| 117 | +**Staging:** |
| 118 | +- `src/blog/2026-review.rst` — 新文章:2026 年度回顾 |
| 119 | +- `static/images/2026-chart.png` — 该文章的配图 |
| 120 | +- `src/index.rst` — toctree 新增该文章条目 |
| 121 | +- `src/about/contact.rst` — 修正一个邮箱地址 |
| 122 | + |
| 123 | +**分析:** |
| 124 | +- `2026-review.rst` + `2026-chart.png` + `index.rst` → 关联(新文章 + 配图 + 索引联动) |
| 125 | +- `contact.rst` → 无关(独立修正) |
| 126 | + |
| 127 | +**展示:** |
| 128 | +``` |
| 129 | +Commit 1: 新增「2026 年度回顾」文章及配图 |
| 130 | + - src/blog/2026-review.rst |
| 131 | + - static/images/2026-chart.png |
| 132 | + - src/index.rst |
| 133 | +
|
| 134 | +Commit 2: 修正联系页面邮箱地址 |
| 135 | + - src/about/contact.rst |
| 136 | +``` |
0 commit comments