Skill Learning

pr

1. Bilingual SKILL.md

左右滑动可直接切换英文版与中文版;两种语言按段落自动对齐。英文中的蓝色虚线词语可点击查看解释。共标记 15 处。

入口 skill:pr左右滑动切换语言 · 段落位置自动对齐
Use this template for writing the :
```markdown ## Summary <diagram, diff-sketch, or tree> ## Evidence - **Before:** <screenshot/output/failing test run> **After:** <screenshot/output/passing test run> ## Merge Danger **Door:** one-way or two-way **:** <potential ramifications of merge> ```
## Sections Skip all preambles and keep prose brief. Use the user's domain language from `CONTEXT.md`. ### Summary
Pick . - Show logic or an algorithm as pseudocode:
```text on(save) if content is unchanged return cached result write new content return fresh result ```
- Show runtime control flow as a call tree: ```text submitForm createSession persistPrompt launchAgent navigateToSession ``` - Show UI structure as a component tree, including state and module boundaries that matter:
```tsx <SessionPage>(apps / example / src / routes / session.tsx); useSessionEvents() < SessionToolbar > <RunSkillButton>(packages / ui); ``` - Show file responsibility or a broad refactor as a shallow file tree:
```text src/ ├── commands/ # parses user actions ├── sessions/ # owns session state └── transport/ # sends API requests ``` - Show component interaction, control flow, or data flow with Mermaid:
```mermaid sequenceDiagram participant User participant UI participant Daemon User->>UI: choose command UI->>Daemon: send expanded prompt Daemon-->>UI: stream result ``` - Use `diff` when the point is what changes and . Match the diff shape to the topic.
For a component change:
```diff <SessionPage> useSessionEvents() <SessionToolbar> + <RunSkillButton /> <SessionTimeline> + <SkillResultCard /> ``` For a file-layout change:
```diff src/ ├── commands/ +│ └── show-me.ts # expands the slash command ├── sessions/ -└── transport.ts +└── transport/ + ├── client.ts + └── stream.ts ``` For a call-tree or call-stack change:
```diff submitForm createSession persistPrompt + expandSkillMention launchAgent - navigateToSession + navigateToSession + subscribeToEvents ``` For a state or control-flow change:
```diff on(save) - write content + if content is unchanged + return cached result + write new content + invalidate cache ``` - Show the whole block when most of it is new, when , or when the user needs :
```ts function expandSkill(command: string): string { const skillName = command.slice(1); return `use the ${skillName} skill`; } ``` #### Guidance
Place each visual next to the short text it supports. Keep only the calls, files, props, states, and boundaries needed to answer the user's current question or the options to resolve the current discussion point. You may use one of these, you may use several, it is unlikely you will use all of them. Use your judgement and . ### Evidence
that the change works. Show a . - when the environment is set up for it and the change is visual.
. Test results, console output. Show the exact test that now fails and passes, using pseudocode.
### Merge Danger
Describe whether it's a . You can walk back through two-way doors, but not one-way doors. A PR that is is lower risk. Changes that involve destructive actions or hard-to-reverse decisions are one-way doors. The is the potential impact or scope of the changes introduced by this PR. Consider all possibilities. Examples are layout shift, breakages for consumers, mobile responsiveness, etc.
撰写 PR 正文时使用以下模板:
```markdown ## 摘要 <图示、diff 草图或目录树> ## 证据 - **之前:** <截图/输出/失败的测试运行> **之后:** <截图/输出/通过的测试运行> ## 合并风险 **门:** 单向或双向 **影响半径:** <合并可能带来的后果> ```
## 各部分 跳过所有开场白,保持文字简短。使用 `CONTEXT.md` 中用户所在领域的语言。
### 摘要 选择能够清楚表达关键点的最小视图。
- 用伪代码展示逻辑或算法: ```text on(save) if content is unchanged return cached result write new content return fresh result ```
- 用调用树展示运行时控制流: ```text submitForm createSession persistPrompt launchAgent navigateToSession ```
- 用组件树展示 UI 结构,并包含重要的状态和模块边界: ```tsx <SessionPage>(apps / example / src / routes / session.tsx); useSessionEvents() < SessionToolbar > <RunSkillButton>(packages / ui); ```
- 用浅层文件树展示文件职责或大范围重构: ```text src/ ├── commands/ # 解析用户操作 ├── sessions/ # 管理会话状态 └── transport/ # 发送 API 请求 ```
- 用 Mermaid 展示组件交互、控制流或数据流: ```mermaid sequenceDiagram participant User participant UI participant Daemon User->>UI: 选择命令 UI->>Daemon: 发送展开后的 prompt Daemon-->>UI: 流式返回结果 ```
- 当重点在于“发生了什么变化”,且周围结构已经存在时,使用 `diff`。让 diff 的形态匹配主题。
对于组件变更: ```diff <SessionPage> useSessionEvents() <SessionToolbar> + <RunSkillButton /> <SessionTimeline> + <SkillResultCard /> ```
对于文件布局变更: ```diff src/ ├── commands/ +│ └── show-me.ts # 展开斜杠命令 ├── sessions/ -└── transport.ts +└── transport/ + ├── client.ts + └── stream.ts ```
对于调用树或调用栈变更: ```diff submitForm createSession persistPrompt + expandSkillMention launchAgent - navigateToSession + navigateToSession + subscribeToEvents ```
对于状态或控制流变更: ```diff on(save) - write content + if content is unchanged + return cached result + write new content + invalidate cache ```
- 当大部分内容都是新的、缺失的上下文会掩盖职责归属或顺序,或者用户需要一个可复制的目标形态时,展示整个代码块: ```ts function expandSkill(command: string): string { const skillName = command.slice(1); return `use the ${skillName} skill`; } ```
#### 指南 把每个可视化内容放在它所支撑的简短文字旁边。只保留回答用户当前问题或解决当前讨论点的选项所必需的调用、文件、属性、状态和边界。 你可以使用其中一种,也可以使用几种,但你不太可能全部使用。运用判断,不要让用户承受过多信息。
### 证据 证明变更有效的具体证据。展示变更前和变更后的对比。
当环境已为此做好准备且变更是视觉上的,截图属于 S 级证据。
基于执行的证据属于 A 级。包括测试结果、控制台输出。使用伪代码展示现在会失败和会通过的确切测试。
### 合并风险 说明它是单向门还是双向门。双向门可以退回去,单向门则不能。回滚成本低的 PR 风险更低。涉及破坏性操作或难以逆转决策的变更属于单向门。 影响半径是这个 PR 引入的变更可能造成的影响或作用范围。考虑所有可能性,例如布局偏移、消费者侧故障、移动端响应性问题等。

Entry SHA-256: 9c36a2793b268578f6a1a1b68b1ff5acfd0e3781a470235b18a8e0e785f26d21

2. Why This Skill Is Clever

一句话核心机制

pr 用固定的三段式把 PR 正文压缩成一次可审查的决策:用最小但合适的结构图说明变化,用前后对照证明变化有效,再用可逆性与影响半径暴露合并风险。

触发与边界

直接来源: frontmatter 的 description: "Use when writing a PR body." 把触发点限制在“撰写 PR 正文”,不是执行代码评审、生成提交记录或决定是否合并。该 skill 没有 disable-model-invocation: true,结合仓库的 in-progress 清单,它当前是模型可调用的 beta 参考。

支持性上下文: skills/in-progress/README.md 将它描述为 PR 正文形态的参考,并标记为 model-invoked;CREDITS.md 说明“change shape”部分几乎逐字源自 Dex Horthy 的 show-me,但刻意复制内容而非建立运行时依赖。这些说明帮助定位成熟度与来源,不属于所选 SKILL.md 原文。

解释: 它不是“自动写一篇漂亮 PR”的大包大揽流程,而是一套信息选择协议。作者仍要读取 CONTEXT.md 和真实执行证据,判断哪一种视图最能支持当前评审问题。

信息架构与执行顺序

  1. 先采用固定骨架:Summary → Evidence → Merge Danger。
  2. 在 Summary 中识别主要变化类型:算法、运行时调用、UI 组件、文件职责、跨组件交互,或局部 diff。
  3. 选择最小充分视图;只有省略会掩盖职责、顺序或可复制目标时,才展示完整代码块。
  4. 将视图紧贴它支撑的短文本,只保留当前问题需要的调用、文件、属性、状态与边界。
  5. 在 Evidence 中给出同条件的 before/after;视觉变化优先截图,行为变化优先真实执行输出。
  6. 最后判断可逆性与影响半径,把“能不能安全合并”与“代码讲清楚了吗”放在同一正文中。

最巧妙的设计点

1. 固定骨架覆盖理解、证明与风险

Summary · Evidence · Merge Danger

直接来源: 模板只有三个一级部分。解释: 它分别回答“改了什么”“凭什么相信”“合并会怎样”,避免 PR 只复述实现而漏掉验证和风险。

2. 可视化选择由变化类型驱动

Match the diff shape to the topic.

直接来源: skill 为逻辑、调用流、UI、文件职责、时序和局部变化提供不同表达方式。解释: 它没有强推 Mermaid 或 diff,而是要求表示法匹配问题结构,降低读者把精力浪费在解码不合适的图形上。

3. “最小”有明确的停止条件

the smallest view that makes the key point clear

直接来源: Summary 先要求最小视图,随后又规定在省略会隐藏 ownership/order 时展示完整块。解释: 这不是单纯压缩字数,而是以信息损失为边界的最小充分原则。

4. 视图必须与论点共址

Place each visual next to the short text it supports.

直接来源: Guidance 要求视觉内容紧邻它支撑的文字。解释: 这减少评审者在长 PR 中来回建立映射,也迫使作者说清每张图到底证明什么。

5. 证据按问题类型分级

Screenshots are S-tier

Execution-based evidence is A-tier.

直接来源: 视觉变化在环境可运行时优先截图,测试与控制台输出则是高等级执行证据。解释: 排名不是绝对真理,而是在提醒作者用离目标行为最近的证据,不要用“测试通过”代替视觉验收,也不要用截图代替逻辑执行。

6. 把合并风险变成两个可回答的问题

one-way or two-way door

The blast radius is the potential impact or scope

直接来源: Merge Danger 同时要求可逆性与影响范围。解释: “风险高不高”很模糊;拆成“退得回来吗”和“出错会波及谁”,就能指导灰度、开关、回滚方案和评审深度。

防失败机制与 trade-off

源中明确的不变量: 跳过开场白;使用 CONTEXT.md 中的领域语言;选择能讲清关键点的最小视图;diff 的形态要匹配主题;不要让用户信息过载;证据必须有 before/after;必须说明门的方向与影响半径。

权衡: 高度压缩会依赖作者的判断,选错视图可能把关键上下文藏掉;截图和执行输出可能随环境变化而失效;“S-tier/A-tier”是启发式等级,不代表截图天然可信;将所有风险压成 door 与 blast radius 也可能遗漏法规、数据迁移或长期运维成本,因此复杂 PR 仍需在这两个框架下补充具体后果。

可移植性风险: CONTEXT.md 是特定工作区约定;Markdown diff、Mermaid 和 TSX 能否渲染取决于 PR 平台;“PR body”与模型自动调用依赖具体 harness。迁移时应保留最小充分表达、可执行证据和可逆性分析,而非照搬文件名或渲染语法。

可迁移原则

今日实践题

选一个最近的 PR:如果只允许保留一种 Summary 视图,你会选择调用树、文件树、Mermaid、diff 还是完整代码块?删掉其他内容后,会不会掩盖职责归属或执行顺序?

Evidence note

三段式模板、视觉表示法、最小充分原则、before/after、证据等级以及 door/blast-radius 风险框架均来自所选 pr 原文;beta/model-invoked 状态与来源说明来自仓库 skills/in-progress/README.md 和 CREDITS.md,仅作为支持性上下文;关于“信息选择协议”和“理解、证明、风险”的归纳属于设计解释。

Source & provenance
Repository path
skills/in-progress/pr/SKILL.md
Generated
2026-09-18 08:24 Asia/Shanghai
Upstream commit
74ca5fe077456a0b3b2f5310cf9430999fd0b5fd
Source
View on GitHub