Skill Learning

pr

1. Bilingual SKILL.md

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

入口 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> <optional: description> **:** <> <optional: 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: e91dc57fa0ee1d8d2fd35562425c943d377f0acdfba6245858a619990fcff0e8

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. 最后判断可逆性与影响半径:先给 one-way / two-way 和一个词的影响范围,再按需补充原因与后果,让快速扫描和深入评审共用同一结构。

最巧妙的设计点

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

one-word description

直接来源: 新模板把 Door 与 Blast Radius 都设计成先填短值、再填写可选说明;正文随后解释可逆性与影响范围。解释: 这把“风险高不高”拆成“退得回来吗”和“出错会波及谁”,同时让评审者先扫描结论,再决定是否阅读具体后果。此次上游更新的巧妙之处不在增加风险维度,而在提高已有信息的可扫描性。

防失败机制与 trade-off

源中明确的不变量: 跳过开场白;使用 CONTEXT.md 中的领域语言;选择能讲清关键点的最小视图;diff 的形态要匹配主题;不要让用户信息过载;证据必须有 before/after;Door 必须先分类,Blast Radius 必须先给一个词的描述,详细解释可以按需补充。

权衡: 高度压缩会依赖作者的判断,选错视图可能把关键上下文藏掉;截图和执行输出可能随环境变化而失效;“S-tier/A-tier”是启发式等级,不代表截图天然可信;one-word description 提升扫描速度,却也可能诱使作者省略关键背景,因此复杂 PR 应使用紧随其后的可选说明补足法规、数据迁移或长期运维成本。

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

可迁移原则

今日实践题

选一个最近的 PR:分别用一个短值填写 Door 和 Blast Radius,再判断需要补哪一句可选说明,才能既让人快速扫描,又不隐藏真正的合并后果?

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-19 08:23 Asia/Shanghai
Upstream commit
c55ee46073ed923f86ce59a5eb3b6d895095d1b7
Source
View on GitHub