Skip to content
Back to skills

Peer Facing Writing

ASecurity

写给同事看的文本(GitLab 单据、飞书文档、评审意见、群消息、PR review、跨团队报告)的语气与结构规范,基于职场协作与社会心理学。触发:"提单 / 写报告 / 写文档给 QA 或后端 / 评审意见 / 回评 / 跨团队沟通 / 文案不合理 / 这样礼貌吗 / 语气太硬"。反触发:写给 owner 本人的对话回复走 reply-format-low-cost,那是另一套(对上要极简,对同侧要留余地)。

  • 16 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 19, 2026
ai-agentsgit

Works with

  • cli

Security analysis

A100/100

Scanned October 19, 2026

npx -y skills add webkubor/writing-standard-skills --skill peer-facing-writing --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Peer Facing Writing?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Peer Facing Writing
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/webkubor-peer-facing-writing/badge)](https://www.skillsdirectory.com/skills/webkubor-peer-facing-writing)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: peer-facing-writing
description: 写给同事看的文本(GitLab 单据、飞书文档、评审意见、群消息、PR review、跨团队报告)的语气与结构规范,基于职场协作与社会心理学。触发:"提单 / 写报告 / 写文档给 QA 或后端 / 评审意见 / 回评 / 跨团队沟通 / 文案不合理 / 这样礼貌吗 / 语气太硬"。反触发:写给 owner 本人的对话回复走 reply-format-low-cost,那是另一套(对上要极简,对同侧要留余地)。
---

# 对同事的书面沟通

给同事看的文本和给 owner 的汇报是**两套语气**。对 owner 要极简、结论先行、不铺过程(`cs rule reply-format-low-cost`);对同侧同事要**留余地、给台阶、不越位**——因为他们不欠你执行,你也不是他们的上级。

判断标准只有一条:**这段话如果原样念给对方听,他会想解决问题,还是想先自我辩解?** 后者就是写坏了。

## 零、先用金字塔原理搭骨架(结构定了再谈语气)

语气问题好改,结构错了整篇要重写。**动笔前先按金字塔原理搭骨架**:结论先行、以上统下、归类分组、逻辑递进。

### 结论先行 —— 答案放在第一屏

读者的第一个问题永远是「结论是什么、要不要我动」。把它放在开头,证据放在后面供需要的人下钻。

```
✅ 7 条已全部复验:3 条已修复、1 条真缺陷已转后端、3 条要更新用例。前端无遗留。
   (下面才是逐条明细、判据、复现步骤)

❌ 先讲复验方法 → 再讲每条怎么测的 → 最后一段才说结论
```

**检验**:只读前 5 行,读者知不知道结论和自己要做什么?不知道就是没做到结论先行。

### SCQA —— 开篇四句话把人带进上下文

用在文档开头或单据的「背景」段。四句,各一到两行,不要展开:

| | 写什么 | 例(本次冒烟报告) |
|---|---|---|
| **S** 情境 | 对方已知的事实,建立共同起点 | 1.0.6 冒烟 120 条上轮跑完,7 条 failed |
| **C** 冲突 | 发生了什么变化,让现状不成立 | 之后前端又修了几轮,环境已经不是上轮那个构建 |
| **Q** 疑问 | 因此自然产生的问题 | 这 7 条现在还失败吗?分别该谁处理? |
| **A** 答案 | 你的结论,一句话 | 3 条已修复、1 条真缺陷转后端、3 条要改用例 |

**S 一定要是对方已知的**。写成「我做了 X」就不是 SCQA,那是自述。SCQA 的作用是让对方觉得「对,我知道这个背景」,然后顺着你的逻辑走下来。

### MECE —— 分组必须不重不漏

**Mutually Exclusive(相互独立)**:任何一条内容只能出现在一个分组里。
**Collectively Exhaustive(完全穷尽)**:分组加起来覆盖全部,数字能对上。

两个高频违反:

1. **重叠**:同一件事在「三项待办」和「后续动作表」里各写一遍 —— 读者不知道哪份是准的,改了一处另一处就过期。**同类信息只留一处,别处只引用。**
2. **不穷尽**:说「7 条已复验」,分组却只写了 6 条,或分组数字加起来不等于总数。**每次分组后做一次加法**。

**检验**:把分组的条数加起来,等于总数吗?把每条内容圈出来,它只出现在一个组里吗?

### 以上统下 + 逻辑递进

- **以上统下**:每个标题必须是它下面所有内容的概括。「三项待办的归属与状态」下面就只能放这三项的归属与状态,放别的(如文档修订说明)就是标题名不副实。
- **逻辑递进**:同一层的条目按一个明确顺序排 —— 严重度、时间、责任方,选一个并贯彻。混着排读者会以为顺序有含义而去找规律。

### 骨架模板(可直接套)

```
标题
├─ SCQA 四句(背景 → 变化 → 问题 → 结论)
├─ 结论(分组必须 MECE,条数能加起来)
├─ 明细(一条一行,与结论的分组对应)
├─ 待办(按责任方分组,每人只出现在自己那组)
└─ 附录/留档(过程性内容放这里,不占正文)
```


## 一、四个心理学机制(语气规则都从这来)

| 机制 | 说明 | 写作后果 |
|---|---|---|
| **基本归因错误** | 人解释别人的行为时高估「能力/态度」,低估「情境/信息不对称」;解释自己时相反 | 别写「测试方法不对」,写「这个坑在页面上看不出来」。把成因归到**信息或环境**,不归到人 |
| **面子威胁(face threat)** | 命令式、纠错式、否定式表达会触发防御,对方先保护自尊、后处理信息 | 别用「不要 X」「必须 Y」「应该早就」;用「我这次踩到 X」「建议 Y,因为 Z」 |
| **逆火效应** | 直接指出「你错了」会让人更坚持原判断,尤其在有第三方围观的单据里 | 结论摆事实和数据,让对方自己得出结论;不写「你判错了」 |
| **自曝降防御** | 先承认自己的失误,对方的防御姿态显著下降,且更愿意接受同一条信息 | 同一个坑如果自己也踩过,**先写自己踩过**,再说怎么避开 |

## 二、先定读者:人 还是 agent(这一步定了,语气和结构才有意义)

**同一份内容,给人读和给 agent 读要写成两份,不要混在一段里。** 混写的后果是双向失效:人被参数和路径淹没、agent 抓不到可执行指令。

| 维度 | 给人读(QA / 后端 / 产品 / owner) | 给 agent 读(skill / 规则 / AGENTS.md / 单据里的执行段) |
|---|---|---|
| **首要目标** | 让他知道**发生了什么、要不要他动、动什么** | 让它**能照做且不跑偏**,判据可机器核验 |
| **开头放什么** | 结论 + 是否需要他处理 | 触发条件 + 禁止项 |
| **语气** | 留余地、给台阶、自曝先行(见下方各节) | 命令式**正确**:「必须」「禁止」「先 X 再 Y」,越硬越少歧义 |
| **归因** | 归到情境,不归到人 | 不需要归因,只要判据 |
| **详略** | 只给影响判断的信息,细节折叠或另开一节 | 穷举边界与反例,宁长不漏 |
| **数据** | 结论化:「93 个模型被漏掉」 | 可复现:完整命令、参数、期望值、退出码 |
| **失败处理** | 说清影响和下一步 | 说清「遇到 X 就停下并上报」,别让它自己发挥 |
| **礼貌** | 必要 | 无意义,浪费 token |

### 怎么在一份文档里区分

1. **分节,并在小节标题上标明读者**:如「给 QA 的结论」「复现步骤(自动化脚本可直接用)」。
2. **人读的部分不放长命令**:命令折进代码块,前面用一句话说明它验证什么。
3. **agent 读的部分不放心理铺垫**:不写「我也踩过这个坑」,直接写判据和顺序。
4. **同一件事两种写法并存时,标清哪份是真源**:通常 agent 段是可执行真源,人读段是摘要——摘要过期不算错,真源过期是事故。
5. **落地位置也要分**:给人的结论进飞书文档/单据正文;给 agent 的规则进 `skill` / `cs rule` / `AGENTS.md`,别塞在飞书里(agent 读不到)。

> 判断自己写混了没:把文档里所有代码块和参数删掉,人读段还成立吗?把所有解释性句子删掉,agent 段还能照做吗?两个都「是」才算分清了。


## 三、写之前先分清三类内容

同一份文档里混着三类东西,语气完全不同,**分不清就会写成「教别人做事」**:

| 类型 | 本质 | 正确写法 | 错误写法 |
|---|---|---|---|
| **我的发现** | 我踩过的坑、我实测的数据 | 「我这次踩到…」「实测是…」,标明「供参考」 | 「给你的三条提醒」「注意不要…」 |
| **我的请求** | 需要对方做的事 | 「麻烦你看下…,因为…」+ 具体动作 + 为什么找他 | 「请修复」「按 PRD 改」(无主语的命令) |
| **客观事实** | 真源判据、接口实测、PRD 原文 | 直接陈述 + 出处,不加评价词 | 「显然违反了 PRD」「明显是 bug」 |

## 四、逐句可套的替换表

| 别写 | 改写 | 为什么 |
|---|---|---|
| 给测试执行的三条提醒 | 复验时我踩到的三个坑(供参考) | 「提醒」隐含上下关系,「我踩到」是平等分享 |
| 不要用 `querySelector().click()` | 这里用 `querySelector().click()` 点不动(Radix 吃 pointer 事件),我第一轮就这么测的、得出了假结论 | 自曝先行 + 归因到技术情境 |
| 复验前先核环境版本 | 复验前建议核一眼环境版本,测试环境跟的是版本分支而不是 test | 「建议」保留对方判断空间 |
| 用例过时了,请更新 | 用例与当前 PRD §x 的口径不一致,PRD 是真源,所以这条要改用例;证据如下 | 给判据,不下判决 |
| 这是 bug,请修复 | 实测与 PRD §x 不符(数据见下),麻烦看下是实现要改还是口径变过 | 留「也许口径变了」的余地 |
| 你们上次没验就交付了 | 这条在 test 打过来是 40401,可能是路由还没注册 | 去掉「你们」,只说现象 |
| 显然 / 明显 / 当然 / 众所周知 | (删掉) | 暗示「这都不懂」,纯负分 |
| 已经说过很多次 | (删掉,重述一遍事实即可) | 除了泄愤没有任何功能 |
| 加粗 + 感叹号 + 全大写 | 平铺陈述,最多加粗一处关键结论 | 视觉上等于吼人 |

## 五、结构要求

1. **结论在最前**,但**请求要具体**:谁、做什么、什么时候、为什么找他。「@某人 麻烦看下」后面一定跟「因为这块是你负责的 X 模块」或「因为前端改不了,原因是 Y」。
2. **先给证据再提请求**(互惠原则):把实测数据、真源出处、复现步骤放在请求前面,对方读完自然知道该做什么。
3. **写清「不用你做什么」**:明确划掉不在对方范围的部分,减少对方的心理负担和来回确认。
4. **自己的错单独一段、不埋在里面**:把「这条我先前判错了」写成独立小节,不要藏在长文中间显得在掩饰。
5. **结尾留回路**:「如果口径变过 / 如果我漏了什么,直接在单里说」——给对方反驳的正当出口,比堵死更容易推进。
6. **别替别人做决定**:写「建议 A,因为…;如果你们更倾向 B,我按 B 改」,而不是「就按 A 了」。

## 六、提单/回评的固定骨架

```
## 现象
(客观陈述 + 环境 + 版本 + 数据,不带评价词)

## 判据
(PRD/设计文档原文 + 章节号;接口实测;两者不一致处)

## 为什么找你
(这块归你 / 前端改不了的技术原因 / 与你之前那个单同族)

## 建议怎么做
(具体动作,给选项和推荐,不下命令)

## 不用你处理的部分
(明确划走,减负)

## 我这边的失误(如有)
(自曝,单独一段)
```

## 七、自检四问(提交前必过)

0. **这段是给人读还是给 agent 读?** 混在一起就拆开(见第二节)。
1. 给人读的部分有没有一句话是**命令式**或以「不要/必须/应该」开头的?→ 改成陈述或建议(给 agent 的段落不受此限,命令式反而更好)。
2. 有没有把成因归到**人**(测试方法不对、后端没验)而不是**情境**(页面上看不出、发布期迁移滞后)?→ 改归因。
3. 我自己在这件事上有没有犯过同类错?→ 有就写进去,放在对方的坑之前。
4. **我从头到尾当读者读过一遍了吗?** → 没读过就不算写完,按第九节的清单读。
5. **被点名的每个人读到自己那段,会觉得「有我一份」还是「又给我派活」?** → 后者就按第十一节重写。
6. **结论在第一屏吗?分组的条数加起来对得上吗?同一件事有没有在两个地方各写一遍?** → 按第零节的 MECE 检验。

## 八、边界

- **对 owner 的回复不适用本 skill**,走 `cs rule reply-format-low-cost`:那边要的是极简结论,客套是噪声。
- **安全/资金/生产事故**的通报可以直接、可以硬,但仍然只陈述事实与影响,不评价人。
- **不要因为要礼貌而模糊结论**。「可能也许或许」堆三层等于没结论。语气软、结论硬,两者不冲突。

## 九、写完必须自己当读者通读一遍(这一步最容易省,代价最大)

写完不等于交付。**以「第一次看到这份文档的人」的身份从头读一遍**,读的时候手里拿着下面这份清单。2026-09-10 一份 9900 字的复验报告,靠通读揪出 20 处问题,其中三处是硬伤——章节内容错位、引用了已删章节、同一份文档里两处结论互相打脸。这些机器和作者本人都查不出来,只有换成读者视角才看得见。

### 通读清单

| 查什么 | 典型症状 |
|---|---|
| **归属错位** | 某节的条目挂到了下一节(多见于删改标题之后)。逐节问:这条属于本节标题说的那件事吗 |
| **失效引用** | 「详见下方 X」而 X 已被删/改名;「见上方 ①」而编号变过 |
| **前后矛盾** | 标题说「已定」正文说「待回复」;表格结论与正文结论不一致 |
| **编号断裂** | 1 / 某标题 / 3;或两套编号(正文 ①②③ 与补充 1234)混用 |
| **数字不一致** | 同一件事在不同段落数字不同;分母口径变了但旧百分比还留着 |
| **过时留存** | 已完成的事仍写「待办」;已拍板的仍写「待确认」 |
| **字段堆砌** | 出现 8 位小数、hex、下划线字段名、接口参数——问一句:读者拿它能判断什么?不能就删 |
| **命令口吻** | 「不要」「必须」「请先」开头(给 agent 的段落除外) |
| **元信息过量** | 一行塞六项;文档修订史占了正文位置 |

### 三条硬规矩

1. **通读要读全文,不是读 diff。** 只看自己刚改的段落,永远发现不了「这段和三屏之外那段打架」。
2. **删改章节后必须重读相邻两节。** 删标题会让它下面的条目并进邻节,这是错位的头号来源。
3. **能自动查的先自动查,但别以为够了。** 写个脚本扫「矛盾词/过时词/字段名」能捞一批(如 `待产品澄清`、`仍待回复`、`详见下方`、长小数),但错位、编号、逻辑打架只有人眼能看见。

## 十、改超过三轮就重写,不要继续打补丁

反复追加「更正记录」「补充说明(第二轮)」的文档,最后会变成一份**返工日志**:读者要在你的心路历程里找结论。

**判断标准**:如果「更正/补充/作废」类章节超过总篇幅的四分之一,或者读者需要先理解「初版说错了什么」才能看懂现在的结论——重写。

重写时:

- 只留**当前结论**和**读者要做的事**;
- 我的误判压成一句话(如「本报告初版有两条结论判错,已按 PRD 更正」),需要追溯的放文末或另开一份;
- 留档不等于留在正文。过程性内容进单据评论或独立文档,正文只放结果。

**代价对比**:重写一份 3000 字的干净文档,比让十个人各花十分钟在 9900 字里找结论便宜得多。

## 十一、读者要能感到自己是参与者,不是被通知的执行方(owner 2026-09-10)

去掉命令口吻只是及格线。及格之上的要求是:**QA、后端、产品读完这份文档,觉得自己是这件事的共同推进者,而不是收到一张任务派单。**

差别不在客套话,在四个具体动作:

| 动作 | 怎么写 | 反例 |
|---|---|---|
| **认对方的贡献** | 「本轮能直接对着复现点核,是因为 QA 上一轮的 actual_result 把成因和代码位置都记了」 | 直接开始讲自己的复验结果,像是从零开始 |
| **把判据摊开,允许被推翻** | 「判定依据都摊在这里,如果和你手上的信息不一致,或我漏看了某份文档,以你们的判据为准」 | 「结论如下」——不给反驳的入口 |
| **点名请教而不是派活** | 「这块是你写的,产品有没有改过口径你最清楚,想请你判断」 | 「待陆浩确认」——像在派单给他 |
| **替对方卸掉不该背的锅** | 「组卷时模块的排期归属确实不容易提前确认,这条不是执行问题」 | 「QA 把不属于本版本的用例放进来了」 |

三条心法:

1. **共享清单,不是单向输出**。「我踩到的坑」写完可以加一句「你们在别的模块遇到类似的也欢迎往里补」——把一份自述变成大家的资产。
2. **谁的错说清楚,别让别人替你背**。自己的失误单独交代(「免得后面有人照初版结论去改用例」),同时明确不牵连他人。
3. **人称要与署名一致**。署名是「某人(前端)」的报告,正文里的「我」就等于那个人 —— 如果误判其实是 agent 犯的,写「我漏切了下拉」会变成让署名人在对外文档里认错。**署名报告用客观陈述**(「本轮曾这么测」「初版有两条判错」),第一人称留给单据评论、群消息这类明确是自己在说话的场合。

> 检验方法:把文档里每个被点到的人的名字圈出来,逐个问 —— 他读到自己那段,会觉得「这事有我一份」,还是「又给我派活」?后者就重写那段。

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.