Community程式設計與開發github.com

學習 (Learn)

執行桌面研究,並在開放專案的 `.knowledge/{domain}/{topic}/guide.md` 中撰寫技術指南。至少閱讀五個高度相關的主要來源,記錄找到每個來源的工具,並繪製宏觀與微觀流程。當使用者說 `/learn`、要求學習指南或桌面研究,或提供一個主題或連結進行學習時使用。

學習 (Learn) 是什麼?

此技能專為執行結構化桌面研究而設計,並將研究結果輸出為開放專案中的技術指南。其主要用途在於,當使用者提出 `/learn` 命令,或要求進行主題研究時,能夠自動、嚴謹地產出 `.knowledge/` 目錄下的 `guide.md` 文件。此技能支援多種輸入方式:使用者可以直接貼上連結、提供純文字主題,或要求基於專案本身已採用的技術進行學習。其運作核心是強制要求至少閱讀並記錄五個高度相關(High relevance)且有用(Useful)的主要來源,並用表格記錄來源的發現工具與存取日期。整個流程嚴格遵循從待處理(Pending)、草稿(Draft)到完成(Completed)的狀態管理,確保指南的品質。技能內建詳細的寫作規範,包括使用主動語態、每一句只表達一個概念、將每個觀點與來源綁定等,並支持 Mermaid 流程圖繪製宏觀與微觀過程。特別的是,它會忽略 `.knowledge/` 目錄,防止其被專案的索引或版本控制系統干擾,但允許透過特定路徑直接讀取。此技能特別適合開發者、技術寫作者或任何需要快速且可信地深入研究新技術、並產出結構化摘要的 AI 代理平台(如 Cursor, Codex)。

相容平台~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/{領域}/{主題}/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。

資料夾 slug 使用小寫字母和連字號,並與指南主體使用相同的語言。指南標題在該語言中使用句子大小寫。保持專有名詞的拼寫與來源一致。

寫入位置

這是 /learn 的持久輸出。將其寫入開放專案。不要將指南寫在技能資料夾內。

.knowledge/
  README.md
  {領域}/
    README.md
    {主題}/
      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,且指南不會將該選擇視為已做出。

詞彙

這些值使用此處所示的字母大寫。在所有指南中保持標記為英文。

欄位值
StatusPending, Draft, Completed
RelevantHigh, Low
UsefulYes, No
MethodPasted,或返回 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。一個描述整個系統的 flowchart,節點數少。圖表後的散文需命名節點。可以跟隨一個列表來說明部分。
  4. ## How it works。按照機制的實際順序(從首次接觸到結果)劃分子區段。每個子區段解釋一個步驟或一個概念。當有三個或更多步驟、狀態、訊息或角色時,使用列表。列表前的簡短段落說明該子區段的內容。圖表放在其展示的步驟的子區段中。
  5. ## Terms。
  6. ## Sources 和 ## Do not use。

寫作

這些最佳實踐指導指南主體。在指南語言中套用它們。

語態

使用主動語態和現在式。說明執行者和動作。僅對讀者執行的步驟使用第二人稱,以祈使句編號列表的形式,每行一個動作。

句子

每個句子表達一個想法。在細節之前先命名概念。當想法改變時,開始一個新句子。在同一個句子中,透過逗號或連接詞連接,保持該想法不超出限制。

第一個句子陳述事實。它不預告該節的其餘部分,也不重複標題。

不要用括號、斜線或破折號重申相同的事實。括號僅用於句子無法承載的資料,例如首次提及時的縮寫。斜線保留在路徑、命令或真正的替代方案中。不要使用長破折號(em dash)。使用逗號、冒號或連字號。

直接陳述事實。不要透過否定相反情況來開頭。

保留技術術語。不要在下一句用同義詞替代。刪除強調詞並直接陳述事實。

術語

在一個節中首次使用時,在該句子中定義該術語,術語以粗體標記一次。粗體標記你正在定義的術語。它不標記句子中間的強調。

論點

將每個論點與 ## 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** 發送 segment,**Receiver** 回傳確認,而 sender 釋放該編號所涵蓋的位元組。

節點間傳遞的內容:

- **Segment**:串流的一部分,包含序列號。
- **Acknowledgment**:receiver 期望接收的下一個位元組。
- **Retransmission**:保持未確認的部分。

## How it works

### Sender 發送 segment

**Sender** 選擇下一個尚未收到確認的範圍,並將其放入一個 segment 中。序列號標識該範圍的第一個位元組。

### Receiver 回傳確認

**Receiver** 檢查已送達的內容,並回覆它仍期望的下一個位元組。該編號會在 sender 端釋放其之前的所有內容。

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

確認依此順序移動:

- **Next byte**:receiver 發送它仍期望的編號。
- **Release**:sender 將該編號之前的所有內容視為已接收。
- **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 |
| - | - | - | - | - | - | - |

...

相關技能