---
name: openakita/skills@chinese-writing
description: Enforce modern Chinese writing standards including tone, spacing rules (Pangu), full-width punctuation, paragraph structure, and active voice. Provides specific guidelines for blog posts, error messages, UI text, and technical documentation.
license: MIT
metadata:
  author: openakita
  version: "1.0.0"
---

# 中文写作规范

系统化的中文写作规范技能，确保所有中文输出遵循统一的语言风格、排版规则和表达习惯。适用于技术文档、博客文章、UI 文本、错误提示等多种写作场景。

## 适用场景

- 撰写中文技术文档和 README
- 编写产品 UI 文案（按钮、提示、说明文字）
- 撰写博客文章和教程
- 生成错误信息和异常提示
- 翻译英文内容为规范中文
- 校对和修正已有中文文本
- 编写产品更新日志（Changelog）
- 撰写邮件和通知文案

## 核心语调

所有中文输出应遵循以下三个语调特征：

| 特征 | 说明 | 正面示例 | 反面示例 |
|------|------|---------|---------|
| **有帮助的** | 提供实用信息，解决用户问题 | `点击「设置」可修改默认值` | `请查看文档` |
| **清晰的** | 表述准确无歧义，逻辑顺畅 | `文件大小不能超过 10 MB` | `文件不要太大` |
| **温和的** | 友好但不过度亲昵 | `操作已完成，是否继续？` | `恭喜！你太棒了！！！` |

**禁止的语调：**
- 过度热情（堆叠感叹号、滥用 emoji）
- 冷漠生硬（`不允许`、`错误`、`失败`）
- 模糊笼统（`某些情况下`、`可能会`）
- 过度谦卑（`不好意思打扰了`）

## 盘古之白：中英文间距规则

中文（CJK 字符）与半角字符（ASCII 字母、数字）之间**必须**加一个空格，这被称为「盘古之白」。

### 空格规则详表

| 规则 | 正确 ✅ | 错误 ❌ |
|------|--------|--------|
| 中文与英文之间 | `使用 Python 编写` | `使用Python编写` |
| 中文与数字之间 | `共有 5 个选项` | `共有5个选项` |
| 数字与单位之间 | `容量为 10 GB` | `容量为10GB` |
| 数字与百分号 | `增长了 30%` | `增长了30 %` |
| 全角标点与英文之间 | `使用了 React，性能提升` | `使用了 React ，性能提升` |
| 英文内部标点 | `如 �Mr.�Smith` | `如 Mr .Smith` |
| 链接前后 | `详见 https://example.com 页面` | `详见https://example.com页面` |
| 路径前后 | `位于 /usr/local 目录` | `位于/usr/local目录` |
| 代码前后 | `` 执行 `npm install` 命令 `` | `` 执行`npm install`命令 `` |
| 品牌名称 | `下载 VS Code 编辑器` | `下载VSCode编辑器` |

### 不加空格的情况

| 情况 | 正确 ✅ | 错误 ❌ |
|------|--------|--------|
| 全角标点前后不加空格 | `你好，世界` | `你好 ，世界` |
| 数字与度数符号 | `旋转 45°` | `旋转 45 °` |
| 货币符号在数字前 | `价格为 ¥99` | `价格为 ¥ 99` |
| 全角括号内侧 | `（见附录）` | `（ 见附录 ）` |

### 自动检查要点

生成中文文本后，自检以下模式：
1. `[汉字][A-Za-z]` → 之间需要加空格
2. `[A-Za-z][汉字]` → 之间需要加空格
3. `[汉字][0-9]` → 之间需要加空格
4. `[0-9][汉字]` → 之间需要加空格
5. `[汉字] [，。！？；：]` → 全角标点前不要有空格

## 标点符号规范

### 全角与半角

中文语境下使用**全角标点**，英文/代码语境下使用**半角标点**。

| 标点 | 全角（中文） | 半角（英文） | 使用规则 |
|------|------------|------------|---------|
| 逗号 | ， | , | 中文句中用全角 |
| 句号 | 。 | . | 中文句末用全角 |
| 冒号 | ： | : | 中文用全角 |
| 分号 | ； | ; | 中文用全角 |
| 感叹号 | ！ | ! | 中文用全角，且不重复使用 |
| 问号 | ？ | ? | 中文用全角 |
| 引号 | 「」『』 | "" '' | 中文优先用直角引号 |
| 括号 | （） | () | 中文文本用全角，代码/英文用半角 |
| 省略号 | …… | ... | 中文用两个全角省略号 |
| 破折号 | —— | -- | 中文用两个全角破折号 |
| 书名号 | 《》〈〉 | 无 | 中文特有 |

### 引号使用规范

优先使用直角引号，嵌套时交替使用：

```
第一层：「引用内容」
第二层：「他说『这是重点』」
第三层：「他说『她提到「那个方案」很好』」
```

**特殊场景：**
- UI 元素名称使用直角引号：`点击「确定」按钮`
- 文件名/路径使用反引号：`` 打开 `config.json` 文件 ``
- 强调词汇可用粗体：`这是一个**重要**功能`

### 标点禁则

| 禁止 | 说明 |
|------|------|
| `！！！` | 不重复使用感叹号 |
| `。。。` | 省略号用 `……` 而非句号堆叠 |
| `~` | 避免在正式文本中使用波浪号 |
| `,` 在中文句中 | 中文句子中不使用半角逗号 |
| `.` 结尾中文句 | 中文句末用 `。` 不用 `.` |

## 段落结构规范

### 段落长度

- 每段控制在 **3-5 行**（约 100-200 字）
- 超过 5 行的段落考虑拆分
- 单句不成段（除非是强调句）

### 段落组织原则

1. **一段一主题**：每段围绕一个核心观点展开
2. **首句概括**：段落第一句点明要旨
3. **逻辑递进**：段落间有清晰的逻辑关系
4. **过渡自然**：使用连接词衔接段落

**常用过渡词：**

| 关系 | 过渡词 |
|------|--------|
| 递进 | 此外、另外、不仅如此、更重要的是 |
| 转折 | 然而、不过、但是、尽管如此 |
| 因果 | 因此、所以、由于、基于此 |
| 并列 | 同时、与此同时、一方面……另一方面 |
| 总结 | 总之、综上所述、简而言之 |
| 举例 | 例如、比如、以……为例 |

### 列表使用规范

- 3 项以上的并列内容使用列表
- 有序列表用于步骤或优先级
- 无序列表用于并列项目
- 列表项句末不加句号（除非是完整句子）
- 列表项保持结构一致（都用动词开头，或都用名词开头）

## 主动语态优先

中文写作优先使用主动语态，被动语态仅在主语不重要或无法确定时使用。

| 被动（避免） ❌ | 主动（推荐） ✅ |
|---------------|---------------|
| `文件被成功上传` | `文件上传成功` |
| `配置被保存到磁盘` | `系统已保存配置` |
| `错误被检测到` | `检测到错误` |
| `密码被修改` | `密码修改成功` |
| `该功能被设计用于...` | `该功能用于...` |

## 场景化写作指南

### 场景一：博客文章

**风格要求：**
- 语调亲切但不随意
- 可以使用第一人称（`我`、`我们`）
- 适当使用口语化表达增加可读性
- 技术名词保留英文原文

**结构模板：**
```
标题（明确+吸引）
引言（为什么写这篇/背景）
正文章节（3-5 个，有小标题）
总结（核心要点回顾）
延伸阅读/参考链接
```

**示例对比：**

差 ❌：
```
本文将会对 React 18 的并发特性进行一个详细的介绍和分析，
希望能够对读者有所帮助。
```

好 ✅：
```
React 18 引入了并发渲染，这是自 Fiber 架构以来最大的变化。
本文通过实际案例，带你理解它的工作原理和应用场景。
```

### 场景二：错误提示信息

**核心原则：** 告诉用户发生了什么 + 为什么 + 怎么解决

**格式模板：**
```
[现象描述]。[原因说明（可选）]。[解决建议]。
```

**示例对比：**

| 差 ❌ | 好 ✅ |
|------|------|
| `错误：操作失败` | `保存失败：文件大小超过 10 MB 限制。请压缩文件后重试。` |
| `网络错误` | `无法连接到服务器，请检查网络连接后重试。` |
| `无效输入` | `用户名仅支持字母、数字和下划线，长度 3-20 位。` |
| `权限不足` | `你没有编辑权限。请联系管理员获取「编辑者」角色。` |
| `未知错误` | `出了点问题，请稍后重试。如果问题持续，请联系支持团队。` |

**错误信息禁忌：**
- 不使用技术术语（`NullPointerException`）
- 不使用全大写（`ERROR`）
- 不使用叹号（`失败！`）
- 不使用消极否定（`不能`→`暂时无法`）
- 不归咎用户（`你的操作有误`→`输入格式不匹配`）

### 场景三：UI 文案

**核心原则：** 简短、明确、可操作

**按钮文案：**

| 场景 | 推荐 ✅ | 避免 ❌ |
|------|--------|--------|
| 确认操作 | `确定` / `保存` | `是的` / `OK` |
| 取消操作 | `取消` | `算了` / `No` |
| 删除操作 | `删除` | `移除` / `清除`（除非语义不同） |
| 提交表单 | `提交` / `发布` | `点击提交` |
| 下一步 | `下一步` / `继续` | `Next` / `GO` |

**提示文案：**

| 类型 | 模板 | 示例 |
|------|------|------|
| 成功提示 | `[操作]成功` | `保存成功` |
| 加载提示 | `正在[操作]……` | `正在加载……` |
| 确认对话框 | `确定要[操作]吗？[后果说明]` | `确定要删除吗？删除后无法恢复。` |
| 空状态 | `暂无[内容]，[引导操作]` | `暂无项目，点击右上角创建` |
| 输入提示 | `请输入[内容]` | `请输入邮箱地址` |

**文案长度限制：**

| 元素 | 最大字数 |
|------|---------|
| 按钮 | 4 字 |
| Toast 提示 | 15 字 |
| 对话框标题 | 10 字 |
| 对话框正文 | 50 字 |
| 输入框占位符 | 20 字 |

### 场景四：技术文档

**风格要求：**
- 使用第三人称或无主语句（`配置完成后，重启服务`）
- 保持客观中立的语调
- 所有技术名词首次出现时给出中文翻译
- 代码和命令使用反引号包裹

**术语处理：**

| 规则 | 示例 |
|------|------|
| 首次出现注明英文 | `依赖注入（Dependency Injection）` |
| 通用缩写直接使用 | `API`、`URL`、`JSON` |
| 不翻译专有名词 | `Docker`、`Kubernetes`、`React` |
| 翻译通用概念 | `容器（Container）`、`中间件（Middleware）` |

**文档结构：**
```
# 标题
> 一句话描述功能

## 概述
简要说明用途和适用场景

## 前置要求
- 环境要求
- 依赖项

## 快速开始
最小可用示例

## 详细配置
完整参数说明

## 常见问题
FAQ

## 参考
相关链接
```

## 数字和单位规范

| 规则 | 正确 ✅ | 错误 ❌ |
|------|--------|--------|
| 阿拉伯数字用于数据 | `共 128 条记录` | `共一百二十八条记录` |
| 中文数字用于惯用语 | `三心二意`、`一目了然` | `3心2意` |
| 数字范围用半角 | `3-5 个工作日` | `3～5 个工作日` |
| 日期格式 | `2026 年 3 月 1 日` | `2026年3月1日`（缺空格） |
| 时间格式 | `14:30` 或 `下午 2:30` | `14点30分` |
| 千分位 | `1,000,000` | `1000000` |

## 常见错误自查清单

生成中文内容后，按以下清单逐项检查：

- [ ] 中英文之间有空格（盘古之白）
- [ ] 中文与数字之间有空格
- [ ] 使用全角标点（中文语境下）
- [ ] 引号使用直角引号「」
- [ ] 没有连续感叹号或问号
- [ ] 段落长度在 3-5 行以内
- [ ] 使用主动语态
- [ ] 列表项结构一致
- [ ] 错误提示包含解决建议
- [ ] 技术名词首次出现有中文注释

## 输出示例

### 输入

```
Write an error message when the user's upload exceeds the file size limit.
```

### 输出

```
上传失败：文件大小为 25 MB，超过了 10 MB 的限制。

请压缩文件或拆分为多个小文件后重新上传。支持的格式：JPG、PNG、PDF。
```

### 分析

- ✅ 盘古之白：`25 MB`、`10 MB`
- ✅ 全角标点：`：`、`。`
- ✅ 主动语态
- ✅ 包含现象+原因+解决方案
- ✅ 具体数值（25 MB → 10 MB）

