Community寫作與編輯github.com

zby/commonplace

LLM 維基理論,一體運行。一個為代理操作而設計的框架:經過型別化、連結化、審查關卡的 Markdown,你的代理可直接執行。

commonplace 是什麼?

zby/commonplace 是一個專為 AI 代理(如 Claude Code、Cursor、Codex)設計的知識庫(KB)框架,將維基理論化為一組可執行的慣例。它支援代理透過結構化 Markdown 檔案進行讀取、寫入和編輯,所有文件都存放在 `kb/` 下的「集合」(collection)中,每個集合都有 `COLLECTION.md` 定義其型別、品質目標和連結規則。檔案透過前端資訊(frontmatter)中的 `type:` 路徑指向型別規範文件,例如 `type: kb/types/note.md`,以確保一致性。該技能強調在寫入前進行重複檢查(使用 `rg` 指令),編輯時提供反向連結查詢,並透過 `commonplace-validate` 指令進行驗證。對話框(collection)中的連結規則嚴格控制檔案間連結的目的地與標籤,從而實現精確的知識圖譜操作。整體上,它讓 AI 代理能像開發者一樣操作維基,將知識管理自動化。」

相容平台~Claude Code~Codex CLI~Cursor
npx skills add zby/commonplace

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

立即執行

目標:$ARGUMENTS

KB 中的所有文件都儲存在一個「集合」中:即 kb/ 下的一個目錄,並附有本地的 COLLECTION.md,例如 kb/notes/、kb/reference/、kb/instructions/,或一個已安裝的函式庫集合,例如 kb/commonplace/notes/。每個接受寫入的集合都有一個 COLLECTION.md,其中包含其登記簿、品質目標、提供的型別以及連結慣例。

帶有前端資訊的文件會攜帶一個路徑值的 type:,指向一個型別規範文件,例如 type: kb/types/note.md 或 type: kb/reference/types/adr.md。沒有前端資訊的檔案被視為隱含的 text。

第一步 - 解析引數

編輯模式:第一個引數是現有 .md 檔案的路徑。讀取它,從路徑推斷集合,並從其前端資訊讀取 type: 路徑。如果它有前端資訊但沒有 type:,則停止,並在編輯前修復此結構性問題。如果它沒有前端資訊,則將其視為隱含的 text。在進行結構性編輯之前,先開啟由 type: 命名的型別規範文件。

新建模式:所有其他情況。從引數中提取集合、型別和主題。預設值:集合為 notes,型別為 kb/types/note.md。如果請求的型別是「instructions」且未明確指定集合,則使用集合 instructions。

對於新建,將目標集合解析為 kb/ 下的一個目錄,並附有本地的 COLLECTION.md;簡稱(如 notes)表示 kb/notes/。讀取該集合的 ## Types 部分,並選擇一個列出的型別路徑。如果請求的型別未列出,且使用者未給出明確路徑,則停止並列出可用的型別。如果使用者給出明確的 kb/.../*.md 型別路徑,則在將其用於型別規範文件之前,先打開該文件並驗證。

第二步 - 載入集合慣例

讀取目標集合的 COLLECTION.md,以取得該集合的寫作慣例,包括外部連結規則。找到外部連結部分(標題不固定 — 尋找那個命名目的地和標籤的部分),並將其視為權威。它告訴你這個來源集合可以連結到哪些目的地集合、哪些目的地被排除、哪些標籤被授權用於哪些來源->目的地配對,以及每個標籤所服務的讀者需求。內部格式各不相同(每個目的地的區塊、帶有目的地欄位的單一標籤表、散文) — 為了內容而讀取,而不是為了格式。沒有單獨的連結文件可供查閱。

硬性失敗:如果目標集合沒有 COLLECTION.md。每個接受寫入的集合都必須有 COLLECTION.md;其登記簿、品質目標和連結規則正是區分集合的要素。不要使用預設慣例繼續進行。

第三步 - 載入型別規範

讀取選定的型別規範文件。其前端資訊必須包含 type: kb/types/type-spec.md、name、description 和 schema。它的主體提供了工件形狀,並可能包含一個模板區塊。將該主體視為結構性撰寫合約。

不要從缺少的型別路徑回退到 note。

對於 text,只有在使用者明確想要非結構化捕獲時,才撰寫沒有前端資訊的原始 Markdown。否則使用 kb/types/note.md。

第四步 - 寫入前搜尋

Write 不執行主動探索——那是 cp-skill-connect 的工作。Write 建立一則筆記,並僅提交作者已有的連結,加上一個廉價的重複防護:

  1. 近似重複檢查。 使用 rg 搜尋目標集合中是否存在新筆記的獨特標題詞語(例如 rg -i "key term" kb/notes/ --glob "*.md")。這是一個有針對性的詞語搜尋——不要列舉整個集合;完整的列表需要線性上下文,對於單一筆記的重複檢查來說是錯誤的工具。如果近似重複已經存在,則優先編輯它,而不是建立第二則筆記。
  2. 已載入的上下文。 為本次寫作而拉入工作階段的筆記、來源和匯入的內容,是首要的連結候選項。如果它值得閱讀,就值得考慮作為一個連結。
  3. 使用者命名的目標。 使用者在提示中提到的連結目標。

在編輯模式下,也要對目標筆記執行反向連結查詢——一次查詢,不進行主體搜尋——這樣編輯就不會孤立依賴項。

所有超出此範圍的探索——跨集合的描述掃描、跨目的地探查、主體搜尋、標籤遍歷、連結跟隨、反向邊推理——都屬於 cp-skill-connect,而不是此處。Write 保持專注於撰寫單一筆記。

第五步 - 草稿與儲存

遵循型別規範文件和集合慣例。除非編輯現有檔案,否則從 # Title 推導出小寫連字符的檔名。對於型別化工件,將 type: 設定為確切的全域倉儲相對型別規範路徑,而不是型別名稱。

僅在明確有理由時才設定特質。可用的特質及其含義在目標型別的規範中定義(例如 kb/types/note.md 中的特質表)——從那裡獲取詞彙,而不是從記憶中的列表獲取。

在編輯期間保留現有的前端資訊和連結,除非請求的變更需要更改它們。

第六步 - 驗證

驗證你撰寫或編輯的筆記:

commonplace-validate path/to/file.md

在停止前修復結構性失敗。

然後建議 cp-skill-connect 作為下一步。第四步僅提交作者已有的連結(已載入的上下文、使用者命名的)加上一個重複防護;該筆記在圖譜中的其餘部分——跨集合的描述掃描、跨目的地候選項、主體搜尋命中、標籤遍歷、連結跟隨、反向邊候選項——只會在 connect 技能下出現。這個建議不是可選的修飾。

通用機制

這些機制適用於所有型別化工件,無論集合為何。

前端資訊 使筆記可查詢。沒有前端資訊意味著隱含的 text;任何具有前端資訊的檔案都必須包含一個路徑值的 type:。大多數庫筆記還需要 description(雙引號,50-200 字元),以及可選的 traits、tags 和 status。

描述 是檢索過濾器,而不是摘要。測試標準:如果一個代理搜尋了這個筆記的概念並得到 5 個結果,這個描述能幫助選出這一個嗎?複述標題不會增加任何檢索價值。

詞彙。 使用根目錄 AGENTS.md 中宣告的有效詞彙。在撰寫或進行實質性編輯散文時,在第一次有意義的提及中,當讀者可能不熟悉該術語時,要解釋並連結有效詞彙。不要為了只添加詞彙連結而改動未經觸及的段落。

連結。 使用來自來源檔案的相對 Markdown 路徑。每個連結必須指向一個真實的檔案。

位置編碼承諾。內聯 散文連接詞(since [X](./x.md)、because [X](./x.md)、but [X](./x.md))是最強的——目標是當前論點的前提。頁尾 連結帶有明確的標籤和上下文短語:- [title](./path.md) — label: context phrase。

集合的 COLLECTION.md 授權每個目的地的標籤,並命名每個標籤所服務的讀者需求。選擇一個其讀者需求與連結目的匹配的標籤;撰寫上下文短語以回答「[來源] 連接到 [目標],因為 [具體原因]。」如果沒有授權的標籤合適,則該候選項超出此集合的範圍——丟棄該連結,或將其提交給集合作者以擴展授權。

檔名 為小寫、連字符、.md,從 # Title 推導,最多 70 個字元。

提煉追蹤:當從筆記提煉到一個聚焦的工件時,在每個來源筆記的頁尾添加 Distilled into:。被提煉的工件不反向連結。

重新命名:切勿手動重新命名。使用 commonplace-relocate-note 來更新反向連結。

相關技能