Community编程与开发github.com

学习

进行案头研究,并在开放项目中编写技术指南到 `.knowledge/{domain}/{topic}/guide.md`。当用户输入 `/learn`、要求学习指南或案头研究、或提供要研究的主题或链接时使用。

学习 是什么?

该技能是用于生成技术指南的案头研究工具,主要面向 AI 辅助开发环境。它通过系统化的方式,对用户提供的主题、链接或项目进行深入研究,并将结果输出到项目的 `.knowledge/` 目录下。其核心工作流程包括:对输入进行分类(链接、主题或项目)、在搜索前明确研究问题、阅读至少五个高度相关的原始资料、构建指南骨架(包括问题、定义、宏观流程图、工作原理、术语表等),并在达到所有完成条件后标记指南为“已完成”。该技能支持多种平台(如 Claude Code、Cursor 等),并强调严格的质量控制:每条指南中的陈述都必须与 `## Sources` 表格中的来源对应,未阅读的页面不能作为来源,并且严禁虚构参与者、引用或严重性等证据。通过维护 `.cursorindexingignore` 和 `.gitignore` 文件,该技能可以确保生成的指南不被仓库的常规搜索或索引工具干扰,保持工作区和功能输出的整洁。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/ploau/knowledge-skills/tree/main/skills/learn

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

用户语言

聊天回复使用用户的语言。从对话中或命令后的文本推断该语言。每条聊天回复的段落保持使用一种语言。

指南正文使用英文。当用户要求学习某个本地项目所采用的内容,或者用户提供的来源主题是该项目时,请使用该项目已有的语言编写指南正文。阅读其文档和界面字符串,并使用这些制品所使用的语言。当它们混合使用多种语言时,请使用证明采用情况的文件的语言。

主要标题保持为技能中的原样。词汇标记保持为英文。此文件中的说明保持为英文。

学习 是做什么的?

在开放项目的 .knowledge/ 中编写一份技术指南。文本需命名概念、列出组成部分和步骤,并通过图表展示流程。只有在你阅读过某个来源后,该来源才能被纳入指南。

步骤

  1. 将输入归类为链接、主题或开放项目。
  2. 在打开页面之前写出问题。
  3. 打开 .knowledge/{domain}/{topic}/guide.md。在 Pending 状态下新建文件。
  4. 阅读主要来源,直到 ## Sources 中有五行标记为 High 和 Yes 的行,否则保持为 Pending 状态。
  5. 在满足五条后,设为 Draft 状态并编写主体。
  6. 编写时应用写作最佳实践。
  7. 更新 .knowledge/README.md 和域名的 README.md。
  8. 仅当所有完成检查在磁盘上都为真时,才将状态设为 Completed。
  9. 回复指南路径和状态。

角色

扮演案头研究员。阅读主要来源并解释其机制。

  • 在打开页面之前写出问题。
  • 优先选择官方文档、规范、标准、RFC、维护者文本,以及当主题是开放项目时,证明采用情况的那个文件。
  • 将页面陈述的内容与你推断的内容分开。
  • 将指南中的每个论断与 ## Sources 中的一行对应。
  • 将通用页面、无日期页面或未定义机制的页面放入 ## Do not use。
  • 不要虚构参与者、引用、严重性或测试协议。

输入

接受 /learn 加上一个主题、一个链接,或一个从开放项目所采用内容构建指南的请求。

  • 链接:设置 Method 为 Pasted。打开页面,提取主题,并对域名进行分类。然后搜索,直到 ## Sources 中有五个高度相关的来源。
  • 主题:对域名进行分类并搜索来源。
  • 项目:在任何外部搜索之前遵循 ## Project。

文件夹别名使用小写字母并用连字符连接,语言与指南正文相同。指南标题在该语言中使用句首字母大写。保持专有名词的拼写与来源一致。

写入位置

这是 /learn 的持久输出。将其写入开放项目。不要将指南写在技能文件夹内。

.knowledge/
  README.md
  {domain}/
    README.md
    {topic}/
      guide.md

当主题已存在时,更新 guide.md。再次打开页面时,重新读取来源并刷新 Accessed 字段。

仅在此流程中,通过域名和主题路径读取 .knowledge/。

忽略

在每个接收 .knowledge/ 的项目中,确保两个文件都存在于项目根目录。当文件已存在时,仅当行缺失时才添加。

.cursorindexingignore:

.knowledge/

.gitignore:

.knowledge/

索引忽略将文件夹排除在自动搜索之外。gitignore 使仓库搜索不会将指南视为项目源代码。在此流程中,通过域名和主题路径的直接读取仍然有效。

研究

此流程是案头研究。在搜索前写一个问题。将指南中的每个论断指向 ## Sources 中的一行。在没有参与者环节的情况下,指南中不得有引用、严重性或测试协议。

搜索官方文档、规范、标准、RFC 或维护者文本。在分类之前打开每个页面。未读的 URL 不进入表格。

记录至少五个具有 Relevant 为 High 且 Useful 为 Yes 的来源。当搜索无法完成五个时,研究保持不完整,状态保持为 Pending。仓库文件与外部页面计入同一表格。

示例

输入中命名的插件、文件或产品指向主题。用于教学机制的示例来自主要来源,并缩减为该机制。将产品名称、内部密钥和功能流程排除在示例之外。

主要来源是官方文档、规范、标准、RFC 或维护者文本。

文件树和差异遵循相同规则。树是官方模型。差异比较主要来源显示的两种形式。差异的两端都放入 ## Sources。

项目

仅当请求是关于仓库采用的内容基础时才使用此部分。从仓库中命名一个示例会使此部分未使用。

在任何外部搜索之前,阅读证明采用情况的文件。清单文件、配置文件和使用了该机制的调用点都算数。评论或松散提及不纳入这种证明。

以项目使用的方式描述机制。文档允许但项目未配置的行为不在地图上。将采用情况放在其自己的子部分中。用于教学机制的示例仍然是主要来源的示例。

在 URL 列中,记录从仓库根目录开始的路径。Method 是找到该文件的工具。官方页面仍然解释机制。五行可以混合路径和 URL。

High 文件是清单、配置文件或展示采用的调用。泛泛提及则放入 ## Do not use。不要使用 .knowledge/ 作为项目的证据。当仓库未采用该主题时,状态保持为 Pending,并且指南不将该选择视为已做出。

词汇

这些值使用此处显示的大写字母。在每个指南中保持标记为英文。

字段值
状态Pending, Draft, Completed
相关性High, Low
实用性Yes, No
方法Pasted,或返回 URL 的工具的官方名称

Pasted 是用户提供的链接。在其他所有情况下,Method 是找到来源的的工具名称。仅打开你已经拥有的 URL 的工具不占据该列。记录框架赋予该工具的名称。

High:该页面定义了机制。Low:通用摘要、无日期页面或未展示机制的文本。

Yes:该页面支持指南中的论断。No:该页面不支持指南。

状态

状态条件
Pending## Sources 少于五行。
Draft## Sources 中有五条合格行,且指南仍在撰写中。
Completed五个来源已验证,## Question 已编写,## What it is 已编写,宏观地图已存在,## How it works 的子部分按机制顺序排列,至少有一个微观图表已存在,且 ## Terms 已填写。对于代码主题,文件树在指南中,并且当主要来源显示同一机制的两种形式时,至少有一个差异也存在。

以 Pending 状态开始文件。当五个来源都进入时移至 Draft。仅当整个指南在磁盘上时才移至 Completed。少于五个高相关性来源的研究保持为 Pending。

指南主体

每个 guide.md 使用此顺序。

  1. ## Question。一句话。
  2. ## What it is。直接定义、机制解决的问题以及系统组成部分。当有三个或更多部分时,使用列表。每项是一个概念,术语加粗,一句话说明其作用。
  3. ## Macro map。整个系统的一个流程图,节点少。图表后的散文命名节点。可以跟随一个部分列表。
  4. ## How it works。按机制实际顺序排列的子部分,从首次接触到结果。每个子部分解释一个步骤或一个概念。当有三个或更多步骤、状态、消息或角色时使用列表。列表前的简短段落说明该子部分涵盖的内容。图表放在其展示步骤的子部分中。
  5. ## Terms。
  6. ## Sources 和 ## Do not use。

写作

这些最佳实践适用于指南正文。在指南语言中应用它们。

语态

使用主动语态和现在时态。命名主语和动作。仅对读者需要运行的步骤使用第二人称,以命令式的编号列表形式呈现,每行一个动作。

句子

每个句子表达一个想法。先命名概念,再描述细节。当想法变化时,开始新句子。用逗号或连词连接,保持同一想法在句子中有限。

第一句话陈述事实。不预览该节的其余部分,也不重复标题。

不要用括号、斜杠或破折号重述相同事实。括号仅用于句子无法承载的数据,例如首次提及时的首字母缩写。斜杠仅用于路径、命令或真正的替代方案。不要使用长破折号。使用逗号、冒号或连字符。

直接陈述事实。不要通过否定反面来开头。

保留技术术语。不要在下一句中使用同义词替换。去掉强调词,直接陈述事实。

术语

在某个节中首次使用时,在该句子中定义该术语,术语加粗一次。加粗标记你正在定义的术语。它不表示句子中间的强调。

论断

将每个论断与 ## Sources 中的一行关联。写出页面陈述的内容。当你推断时,在该句子中说明推断是你自己的。

散文、列表、表格和图表

使用散文解释机制。当读者需要比较三个或更多部分、步骤、状态、消息或角色时,使用项目符号列表。用完整的句子和冒号引出该列表。在句子内部,序列使用逗号并用连词结尾。

仅能在 ## Sources、## Do not use 以及同一机制的两种形式的简短比较中使用表格。为过程使用图表,然后在后续散文中命名节点。

代码主题

先用散文解释机制。解释性段落命名角色和它们之间传递的内容。它不包含标识符、路径、密钥、命令、签名或内联代码。在该段落之后,将文件树或差异放在它所说明的 ## How it works 子部分中。当有三个或更多角色或步骤时,列表跟随段落,每个条目中术语加粗,并加一句话说明。

禁止虚构的证据

不要虚构参与者、引用、严重性或测试协议。当工作没有参与者环节时,省略这些项目。

长度

遵循 ## Guide spine 的顺序。## Question 是一句话。## What it is 包含定义、问题和组成部分。## Macro map 包含整个系统的一个流程图,节点少,以及命名这些节点的散文。## How it works 包含按机制实际顺序排列的子部分。每个子部分是一个步骤或一个概念,其图表位于该子部分中。## Terms 是定义的简短列表。## Sources 和 ## Do not use 结束指南。以最后一个事实结束。不要添加口号。

guide.md

## Sources 只接收 High 和 Yes。这些行计入五行的数量。

## Do not use 接收其余行:Low、No,或两者都有。即使为空,该节也存在,并带有表格标题。Accessed 是你阅读页面的日期,格式为 YYYY-MM-DD。

下面的示例展示了一个来源时的格式,因此其状态为 Pending。完成的指南需要五行合格的行。

---
topic: tcp
domain: networks
status: Pending
updated: YYYY-MM-DD
---

# TCP

Status: Pending

## Question

TCP 如何确认数据已到达?

## What it is

**TCP** 在两个程序之间传输字节流并确认投递。问题在于知道另一端已经收到了哪个字节,这样发送方只需重发缺失的部分。

发送的组成部分:

- **Sender**:持有缺乏确认的字节,并重发该范围。
- **Receiver**:返回它预期的下一个字节的序号。
- **Segment**:携带一部分字节流和序号。

## Macro map

```mermaid
flowchart TD
  sender[Sender] -->|segment| receiver[Receiver]
  receiver -->|acknowledgment| sender
```

**Sender** 发送段,**Receiver** 返回确认,发送方释放该序号覆盖的字节。

节点之间传递的内容:

- **Segment**:字节流的一部分,带有序号。
- **Acknowledgment**:接收方预期的下一个字节。
- **Retransmission**:仍未被确认的部分。

## How it works

### Sender 释放段

**Sender** 选择下一个仍未确认的范围,并将其放入一个段中。序号标识该范围的第一个字节。

### Receiver 返回确认

**Receiver** 检查已到达的内容,并回复它仍然预期的下一个字节。该序号在发送方释放此之前的所有内容。

```mermaid
flowchart TD
  send[Send] --> ack[Acknowledgment]
  ack --> release[Release]
```

确认过程按此顺序进行:

- **Next byte**:接收方发送它仍然预期的序号。
- **Release**:发送方将该序号之前的所有内容视为已接收。
- **Retransmission**:不在该计数内的范围保持排队以进行重发。

## Terms

- **TCP**:一种确认字节流投递的协议。

## Sources

| Source | URL | Method | Accessed | What it supports |
| --- | --- | --- | --- | --- |
| RFC 9293 | https://www.rfc-editor.org/rfc/rfc9293 | WebSearch | YYYY-MM-DD | 序列号和下一个字节的确认 |

## Do not use

| Source | URL | Method | Accessed | Relevant | Useful | Reason |
| -

…

相关技能