Skip to content

Commit 657e61c

Browse files
author
Donglu
committed
docs(blog): 更新 Jekyll 博客项目约束文档
- 修正文件标题为「项目约束」以强调规范性质 - 补充博客项目特有的写作加工和文件格式要求 - 明确项目事实,包括技术栈、存储路径和部署流程 - 细化写作目标,聚焦经验加工和读者理解导向 - 详细描述内容加工原则与方法,突出案例与判断 - 定义写作风格、语气、标点、留白及术语规范 - 规范文章结构与创建流程,提升文档一致性 - 补充构建流程说明和技术内容边界的具体要求 - 明确 Front Matter 和文件命名规范及内容边界 - 约束修改范围,区分文章与站点功能改动边界 - 提供完整的验证步骤及可能的环境问题应对方案
1 parent d70042e commit 657e61c

1 file changed

Lines changed: 151 additions & 138 deletions

File tree

‎GEMINI.md‎

Lines changed: 151 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -1,138 +1,151 @@
1-
# Jekyll Blog Project Context
2-
3-
## 1. 项目概览 (Project Overview)
4-
这是 Donglu (DL) 的个人技术博客。基于 [Jekyll](https://jekyllrb.com/) (Ruby 静态网站生成器) 构建,使用默认的 `minima` 主题,通过 Markdown 文件生成静态页面。
5-
6-
- **主要语言:** Ruby, Markdown, HTML, YAML
7-
- **框架版本:** Jekyll ~> 4.4.1
8-
- **使用主题:** minima
9-
- **使用插件:** jekyll-feed, nokogiri, mermaid_processor.rb (自定义插件)
10-
11-
## 2. 核心行为准则 (Core Directives)
12-
13-
### 2.1 写作风格
14-
- **硬核技术风**:行文简洁客观。避免夸张营销用语和过多 emoji,保持清晰干练的技术叙述。
15-
- **逻辑严密**:文章结构必须具备强逻辑性。通常遵循「问题现象 → 根本原因 → 解决方案 → 原理扩展/总结」的金字塔结构,层层递进。
16-
- **精炼准确**:结论要一针见血,避免啰嗦和无关紧要的发散。如果问题出在特定场景/特定前置条件,必须在开篇明确指出,不泛泛而谈。
17-
- **写作目标优先级**:准确先于修辞,清晰先于热闹,可扫读先于堆砌解释。
18-
19-
### 2.2 语气规范
20-
- 使用克制、直接、可执行的中文;以说明、界定、引导为主,不用夸张宣传语。
21-
- 不使用第二人称(`你`、`您`、`同学`),如无必要不直接点名读者,用无主句或说明句即可。
22-
- 避免问候式开场(`Hello`、`Hi`)和口号式抽象表达。
23-
- **禁用黑话词**(除非该词在当前语境中有严格业务定义):`赋能`、`抓手`、`闭环`、`沉淀`、`对齐`、`对标`、`拉通`、`打通`、`协同`、`联动`、`洞察`、`赛道`、`心智`、`调性`、`战役`、`链路`、`势能`、`兜底`。
24-
- 优先替换为更具体表达:`赋能` → `提供`,`抓手` → `关键措施`,`闭环` → `完整流程`,`对齐` → `统一`,`兜底` → `保障机制`。
25-
26-
### 2.3 标点规范
27-
- 中文引号统一使用直角引号:`「」`,不使用中文双引号 `""`。
28-
- 正文中避免连续使用多个感叹号、省略号、宣传口号式断句;避免使用感叹号。
29-
30-
### 2.4 中英文留白
31-
在可见正文中,中文与半角英文单词、英文缩写、独立数字和版本号之间保留空格,提高可读性。
32-
33-
- 正确:`获取批量 ID`、`HTTP 请求`、`版本 2.0`、`AI 服务`
34-
- **不要**对以下内容机械加空格:行内代码块、JSON 键名、URL、API 路径、数据库字段名。
35-
- 例:`user_id`、`/api/example`、`statusCode` 保持原样。
36-
37-
### 2.5 术语大小写归一
38-
仅对可见正文中的自然语言短语做归一,不作用于代码、路径、字段和配置项字面量。
39-
40-
| 错写 | 推荐 |
41-
|------|------|
42-
| `id` / `Id` | `ID` |
43-
| `http` / `Http` | `HTTP` |
44-
| `url` / `Url` | `URL` |
45-
| `json` / `Json` | `JSON` |
46-
| `api` / `Api` | `API` |
47-
| `yaml` / `Yaml` | `YAML` |
48-
| `java` | `Java` |
49-
| `kotlin` | `Kotlin` |
50-
| `python` | `Python` |
51-
| `ruby` | `Ruby` |
52-
| `swift` | `Swift` |
53-
| `dart` | `Dart` |
54-
| `javascript` / `JS` | `JavaScript` |
55-
| `typescript` | `TypeScript` |
56-
| `go`(语言名) | `Go` |
57-
| `sql` | `SQL` |
58-
| `bash` | `Bash` |
59-
| `github` | `GitHub` |
60-
| `docker` | `Docker` |
61-
| `redis` | `Redis` |
62-
| `mysql` | `MySQL` |
63-
| `grpc` | `gRPC` |
64-
| `graphql` | `GraphQL` |
65-
| `websocket` | `WebSocket` |
66-
| `H5`(移动 Web 页面) | `移动 Web 页面` |
67-
68-
### 2.6 中文易错词表
69-
| 错误写法 | 正确写法 |
70-
|----------|----------|
71-
| `阀值` | `阈值` |
72-
| `登陆系统` | `登录系统` |
73-
| `布署` | `部署` |
74-
| `配制参数` | `配置参数` |
75-
| `回朔` | `回溯` |
76-
| `标示字段` | `标识字段` |
77-
| `帐户`(金融语境) | `账户` |
78-
| `帐号`(平台用户语境) | `账号` |
79-
| `做为` | `作为` |
80-
| `截止 X 日` | `截至 XXXX 年 X 月 X 日` |
81-
| `缩小了 3 倍` | `缩小到原来的 1/3` |
82-
| `翻了 1 倍` | `变为原来的 2 倍` |
83-
| `不超过 100 以上` | `不超过 100` |
84-
85-
### 2.7 内容规范
86-
- 除非有特殊要求,文章内容及代码注释请优先使用简体中文。
87-
88-
### 2.8 文章创建规范
89-
- 新文章必须存放在 `_posts/` 目录下,文件命名格式必须为 `YYYY-MM-DD-title.md`。
90-
- 必须在文件顶部使用 YAML Front Matter 指定 `layout`、`title` 等元数据。
91-
92-
### 2.9 排版与结构规则
93-
- 一个段落只承载一个主要信息点。
94-
- 长句可以保留,但避免连续堆叠两个以上长句。
95-
- 列表项要平行,不要有的写定义、有的写宣传、有的写结论。
96-
- 标题要能反映用途,不要只写抽象名词。
97-
98-
### 2.10 最终检查清单
99-
交付文章前检查:
100-
101-
- [ ] 是否出现 `你`、`您`、`同学`
102-
- [ ] 是否出现中文双引号 `""`(应改为直角引号 `「」`)
103-
- [ ] 中文与英文、数字之间是否需要留白
104-
- [ ] 是否存在禁用黑话词
105-
- [ ] 是否存在过强的宣传口吻或感叹号
106-
- [ ] 文案是否便于扫读
107-
- [ ] 术语大小写是否归一
108-
109-
## 3. 构建与运行 (Building and Running)
110-
本项目使用 Bundler 管理 Ruby gem 依赖。每次执行 Jekyll 相关命令前,必须使用 `bundle exec` 以确保使用正确的 gem 版本。
111-
112-
- **安装依赖:**
113-
```bash
114-
bundle install
115-
```
116-
- **本地开发服务器运行:**
117-
```bash
118-
bundle exec jekyll serve --livereload
119-
```
120-
*(注:开启 livereload 会自动刷新,但修改 `_config.yml` 后需要重启服务器)*
121-
- **构建静态站点:**
122-
```bash
123-
bundle exec jekyll build
124-
```
125-
*(生成的静态文件会存放在 `_site/` 目录下)*
126-
127-
## 4. 项目结构 (Project Structure)
128-
- `_config.yml`: 站点全局配置 (title, url, theme, plugins 等)。
129-
- `Gemfile` / `Gemfile.lock`: Ruby 依赖管理文件。
130-
- `_posts/`: Markdown 格式的博客文章存放目录。
131-
- `_layouts/`: 自定义 HTML 布局模板 (如 `post.html`)。
132-
- `_includes/`: 可复用的 HTML 代码片段 (如 `google-analytics.html`, `mermaid.html`)。
133-
- `_plugins/`: 自定义 Ruby 插件 (如用于渲染 Mermaid 图表的 `mermaid_processor.rb`)。
134-
- `_site/`: 生成的静态站点目录 (已被 Git 忽略)。
135-
- `.github/workflows/jekyll.yml`: 用于自动化构建和部署的 GitHub Actions 工作流。
136-
137-
## 5. 特定功能 (Specific Features)
138-
- **Mermaid 支持:** 站点内置了对 Mermaid 的支持。通过 `_plugins/mermaid_processor.rb` 和 `_includes/mermaid.html` 渲染图表,在编写 Markdown 时可直接使用 mermaid 语法块。
1+
# Jekyll Blog Project Contract
2+
3+
本文件约束本项目内的写作和站点修改。全局规则继续生效;本文件只补充博客项目特有的内容加工、文件格式和验证要求。
4+
5+
## 项目事实
6+
7+
- 这是基于 Jekyll 4.4.1 和 Minima 的中文技术博客。
8+
- 文章存放在 `_posts/`,文件名使用 `YYYY-MM-DD-english-slug.md`。
9+
- 站点使用 `jekyll-feed`、Giscus 和自定义 Mermaid 处理插件。
10+
- GitHub Actions 使用 Ruby 3.4 执行 `bundle exec jekyll build`,并在每天北京时间 08:00 重新部署未来日期文章。
11+
- `_site/`、缓存目录和 IDE 文件不是文章交付物。
12+
13+
## 写作目标
14+
15+
技术博客的任务不是保存完整工作记录,而是把作者的隐性经验加工成读者能够理解、代入和复用的内容。
16+
17+
写作前先明确:
18+
19+
1. 这篇文章帮助哪类读者解决什么问题;
20+
2. 读者最可能在哪一步卡住或产生误判;
21+
3. 作者经过什么证据、失败或取舍才得到当前结论;
22+
4. 读完后能够带走什么判断方法或可执行做法。
23+
24+
优先写出一个清晰主张。不要为了覆盖所有相关知识,把一篇文章写成完整手册。
25+
26+
动笔前用一句话写出文章主张:希望读者读完后相信什么、改变什么判断,或者能够完成什么动作。案例、解释和章节都应服务于这句话;无法推进主张的内容应删除或移到其他文章。
27+
28+
## 内容加工
29+
30+
- 从具体症状、失败、冲突或常见误区切入,让读者先认出问题,再介绍概念。
31+
- 把「同行一看就懂」的经验拆开说明:当时看到什么、为什么容易判断错、后来如何验证、什么条件下结论不成立。
32+
- 原始材料是素材,不是文章结构。不要按聊天记录、提交顺序或工作步骤机械复述。
33+
- 优先使用真实案例、代码路径、命令输出、前后差异和量化结果。无法验证的数据不要写成事实。
34+
- 区分通用原则与当前环境限制。机器、版本或项目特有结论必须说明适用范围。
35+
- 保留必要的失败过程,但只保留能够解释判断变化的部分。流水账、重复尝试和无关日志应删除。
36+
- 抽象观点必须落到检查动作。不要停在「保持警惕」「结合实际」「提高判断力」;继续说明先检查什么、依据什么继续、出现什么结果必须停止。
37+
- 用第一人称提供经历和证据,不用第一人称代替论证。重点写清楚哪条新证据改变了原有判断。
38+
39+
## 观点与论证
40+
41+
- 开头优先呈现读者已经遇到的症状、冲突或误判。不要先铺陈行业背景、工具定义和宏观趋势。
42+
- 在前几段给出核心判断,让读者尽早知道文章准备证明什么。反常识判断必须由后文的事实、案例或推理支撑,不能只作为吸引点击的口号。
43+
- 观点型文章优先围绕判断标准推进。每个标准说明三件事:检查什么、为什么容易判断错、什么结果下可以继续或必须停止。
44+
- 一个可执行的方法至少应说明输入、负责人或执行主体、使用的工具、第一步动作和完成标准。答不出这些问题时,应明确它仍是思路或假设,不写成可直接落地的方案。
45+
- 对数字、案例、政策、性能和外部行为,优先追溯原始出处。找不到来源时,可以作为待验证线索,但不能写成已确认事实。
46+
- 用改变前提的方式检验结论。预算、目标、平台、版本或约束变化后结论仍完全不变时,检查它是否只是通用套话;结论依赖特定条件时,把这些条件写出来。
47+
- 为重要结论补充失效条件或反例。边界越清楚,结论越可信,不要把特定项目中的经验包装成普遍规律。
48+
- 结尾留下可复用的判断原则、最小检查清单或明确的责任边界。不要重复全文摘要,也不要用「未来值得期待」一类空泛展望收尾。
49+
50+
## 文章结构
51+
52+
根据内容选择结构,不固定套用同一个模板。
53+
54+
### 经验与方法文章
55+
56+
建议使用:读者痛点 → 常见误判 → 作者经历或转折 → 方法 → 适用边界 → 可复用结论。
57+
58+
### 观点与判断文章
59+
60+
建议使用:具体问题 → 表面解释 → 核心判断 → 判断标准 → 验证动作 → 失效条件 → 责任边界。
61+
62+
### 故障与修复文章
63+
64+
建议使用:现象 → 影响范围 → 排查证据 → 根因 → 最小修复 → 验证 → 避免复发。
65+
66+
### 源码与架构文章
67+
68+
建议使用:要回答的问题 → 关键调用路径或组件关系 → 设计取舍 → 失败边界 → 可迁移的工程经验。
69+
70+
### 教程文章
71+
72+
建议使用:完成后的结果 → 前置条件 → 最短可运行步骤 → 原理解释 → 常见错误 → 验证方式。
73+
74+
结构服务于主张。章节只有在推进论证时才保留,不要为了显得完整而增加「背景」「优势」「未来展望」等空泛章节。
75+
76+
## 表达方式
77+
78+
- 默认使用简体中文,准确、自然、克制。中文与英文、数字之间保留合理空格。
79+
- 中文正文使用直角引号 `「」`。代码、路径、字段、URL 和原始引用保持原样。
80+
- 技术博客允许自然使用第一人称,以说明真实经历、判断和取舍。
81+
- 允许少量第二人称帮助读者代入,但不要连续说教、假设读者无知或使用营销式召唤。此规则覆盖通用中文写作 Skill 对第二人称的机械禁用。
82+
- 专业术语首次出现时,用一句大众语言说明它实际解决什么问题。不要只做英文翻译。
83+
- 一个段落承载一个主要信息点。长短句交替,避免整篇都是列表、定义和规章语气。
84+
- 重要判断可以单独成段,普通解释保持两到四句一个段落。短句用于强调,不要把整篇文章切成一句一段的口播稿。
85+
- 列表用于并列条件、步骤或比较;能够用两三句自然说明的内容不要强行列点。
86+
- 标题优先表达问题、冲突、结果或反常识判断。可以用「现象 + 真正原因」「常见误判 + 修正方法」制造张力,但不能夸大收益或使用「终极」「颠覆」「必看」「最大漏洞」等无法证明的词。
87+
- 避免宣传腔、假装深刻的抽象词、无信息量的总结和过多粗体。
88+
89+
## 技术内容边界
90+
91+
- 代码应来自真实实现、最小复现或明确标注的示意代码。不要把未经运行的代码描述为可直接使用。
92+
- 命令、版本、路径、性能数据和外部 API 行为应尽量现场验证;无法验证时明确说明。
93+
- 引用外部资料时优先使用官方文档或源码,并提供链接。不要虚构来源。
94+
- Mermaid 只用于调用关系、状态变化或架构层级等文字难以说明的关系。使用 `mermaid` 代码围栏,保持节点文字简短。
95+
- 不公开凭据、内部地址、个人数据或其他敏感信息。示例必须脱敏。
96+
97+
## Front Matter 与文件规范
98+
99+
新文章至少包含:
100+
101+
```yaml
102+
---
103+
layout: post
104+
title: "文章标题"
105+
date: YYYY-MM-DD HH:MM:SS +0800
106+
categories: [分类]
107+
tags: [标签一, 标签二]
108+
---
109+
```
110+
111+
- 文件日期与 `date` 的日期保持一致。
112+
- Slug 使用小写英文和连字符,保持稳定、可读,不在 URL 中放中文。
113+
- `categories` 和 `tags` 复用现有命名,避免同义标签重复。
114+
- 如果有意定时发布,可以使用未来时间;本地构建验证需加 `--future`。否则不要因为随手填写未来时刻导致文章被跳过。
115+
- 修改现有文章时保留原 URL,除非用户明确要求重命名。
116+
117+
## 修改范围
118+
119+
- 文章任务默认只修改对应的 `_posts/*.md`。不要顺手改主题、布局、依赖或站点配置。
120+
- 站点功能任务才修改 `_config.yml`、`_layouts/`、`_includes/`、`_plugins/`、`assets/` 或依赖文件。
121+
- 保留工作区中无关的未跟踪和未提交内容,尤其是 `.idea/`、其他文章和本地缓存。
122+
- 不自动把文章写入向量记忆,不自动提交、推送或发布;这些操作需要明确请求。
123+
124+
## 验证
125+
126+
文章修改完成后按成本从低到高验证:
127+
128+
1. 检查 Front Matter、代码围栏、占位符、标题层级和中英文排版;确认前三段已经呈现具体问题和核心判断,主要观点后有证据、例子或动作;
129+
2. 运行 `git diff --check -- <article>`;
130+
3. 首选 `bundle exec jekyll build`,未来文章使用 `bundle exec jekyll build --future`;
131+
4. 检查生成页面存在,并搜索标题、关键段落、代码块或 Mermaid 输出;
132+
5. 涉及布局、样式或交互时,再进行浏览器视觉验证。
133+
134+
当前本机可能出现 Ruby/Bundler 安装版本与 gem specification 不一致的问题。若 `bundle exec` 因环境损坏失败:
135+
136+
- 先区分文章错误与 Ruby 环境错误;
137+
- 不要为了单篇文章自动重装 Ruby、修改 `Gemfile.lock` 或升级依赖;
138+
- 可以在不改项目文件的前提下,用本机已安装且与锁文件匹配的 gem 版本完成临时构建;
139+
- 如果无法安全构建,至少完成 Front Matter、Markdown 和 diff 检查,并准确报告构建阻塞。
140+
141+
主题自身的 Sass 弃用警告属于已知环境噪声,除非本次任务涉及主题升级,否则不要扩展范围处理。
142+
143+
## 完成交付
144+
145+
最终说明应包含:
146+
147+
- 修改或新增的文章路径;
148+
- 文章主张和主要结构变化;
149+
- 实际执行的验证及结果;
150+
- 未验证项、环境阻塞和剩余风险;
151+
- 是否提交或发布。

0 commit comments

Comments
 (0)