Community生產力與協作github.com

andresanemic/lore-plugin

將艱苦獲得的經驗轉化為 AI 輔助開發中可重複使用的判斷準則。

lore-plugin 是什麼?

此技能(skill)旨在建立一個「bot」,它是一個同時作為 Claude Code 外掛(plugin)、Lore 專案(project)以及工作階段(work session)啟動位置的資料夾。不同於單純回答專案問題,bot 會**在專案中實際執行指令**。其核心理念是「簡短的指令就足夠」,若需向 bot 解釋整個專案才能獲得結果,則表示準則(criteria)有所遺漏。此技能支援兩種創建模式:「nuevo」(從零開始)與「federar」(整合現有準則),並會產出包含準則文件與路由表的完整結構。它特別強調 bot 定位為「路由工具」,而非準則的擁有者,藉此避免常見的架構錯誤,並透過清晰的邊界與所有權劃分,確保可維護性。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add andresanemic/lore-plugin

Installed? Explore more 生產力與協作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

create-bot — 建立一個機器人:一個可安裝的工作場所

建立一個 bot:一個同時是 Claude Code 外掛、Lore 專案以及工作階段啟動位置的資料夾。機器人不會回答關於專案的問題——它在專案中工作。指令輸入後,機器人會對實際檔案執行,然後回傳結果。

最重要的指標,也是唯一重要的測試: 一個簡短的指令就足夠。 如果必須向機器人解釋整個專案才能獲得結果,則表示負載中缺少了判斷標準。

什麼是機器人,以及它不是什麼

create-bot 是 create-project 的同級工具,而非 create-area 的同級工具。標準路徑是 bots/proyectos/{slug}/ — bots 是容納機器人的區域,就像 web 區域容納網站一樣。如果該區域尚不存在,create-area 會先建立它,與其他任何專案完全相同。當使用者指定時,另一個區域也可以容納機器人;請勿假設。

區域專案機器人
容納專案一個工作項目一個工作階段
其 Lore 管轄領域的方法該工作代理的行為方式
開啟後可查看註冊表推進該工作在任何幾個專案上工作

機器人是此工具組中唯一向外路由的產物。區域和專案是場所;機器人是你帶入它們的透鏡。

機器人不會自動成為外掛。 預設情況下,它只是一個包含其規範和 CLAUDE.md 的資料夾:在那裡開啟一個工作階段,判斷標準就會載入,無需安裝任何東西。使用 .claude-plugin/ 和自己的儲存庫將其包裝成一個技能(第 §10 節)是一個可選的封印,只有一個目的——將其交給團隊。對於獨自工作的人來說,這只是仍需維護的腳手架。

為什麼它不能是一個區域。 區域是專案的容器,擁有其領域的判斷標準。機器人不會擁有它路由到的任何判斷標準——它只是借用。將其建立為區域會產生一個累積它從未付出代價的判斷標準的上層,且第一個後果會很快顯現:當一個判斷標準需要泛化時,它會被提升到機器人,而不是提升到真正贏得它的區域。

兩種模式

模式何時使用產出內容
nuevo從零開始。沒有事先存在的 Lore 可供收集。從腦力激盪和來源文件產生的規範。
federar判斷標準已存在,分散在多個區域中。規範加上同步副本和跨這些 Lore 主體的路由表。

兩種模式都產生相同的產物。federar 會新增 scripts/ecosistema.json、scripts/sync.js,以及兩個生成的檔案:lore/enrutamiento.md(路由表)和 .claude/settings.local.json(對即時目錄樹的存取)。除非啟用複製功能(第 §7 節),否則不會複製任何內容。

當機器人已存在時

以上兩種模式都是從零開始建構,但這並非此技能被呼叫的唯一方式。它也可能被指向目錄樹中已存在的機器人——目的是修正其範圍、重寫其 README、或新增來源。請執行以下稽核代替創建程序,然後回到第 §7 節(同步)、第 §10 節(封裝)和第 §11 節(驗證)。

檢查項目方法失敗情況
範圍對比清單中的每個條目與機構的註冊表路由到的來源不在註冊表中
邊界閱讀規範中的範圍外宣告缺少邊界專案,或列出了但未說明混淆原因
孤兒ls 同步目標目錄並對比清單——僅在啟用複製時存在一個來源已不在清單中的資料夾
副本詢問誰在使用該機器人以及他們是否擁有目錄樹為所有共享檔案目錄樹的人開啟 lore-ecosistema/——這是沒有閱讀者的重複
README以受眾而非作者的身份閱讀它論述方法,或其範例不再關於機器人所服務的專案
安裝執行命令,而不是閱讀它們它們是憑記憶編寫或從公開機器人複製而來
閘門node scripts/validar.js,如果機器人已封裝除了退出碼 0 以外的任何結果

稽核不是一個更輕量的程序。它能發現全新建構無法發現的問題:機器人被建構來服務的內容與它現在服務的內容之間的偏差,而這正是沒有人會自行重新推導的東西。

當來源尚無 Lore 時

常見的起點不是一組整齊的 Lore 主體。而是原始素材:文件資料夾、程式碼庫、資料庫、Notion 工作區——這些都未經提煉。這些素材無法被聯邦化 (federated),而解決方案是一個鏈條,不是捷徑:

原始來源 (無 Lore)
   └─ create-area        → 將會擁有此判斷標準的工作區域
        └─ transmute-lore (add)  → 恢復其中已分散的判斷標準
             └─ create-bot (federar)  → 機器人路由到該判斷標準

法則:機器人永遠不會將東西提煉到自己體內。 無 Lore 的來源應在其所屬的區域中獲得 Lore,然後才被聯邦化。讓機器人直接提煉原始素材,會使它成為從未付出代價的判斷標準的擁有者——這正是區域/機器人區別所要防止的確切失敗,而且在實務上無法逆轉:一旦該判斷標準的唯一副本存在於機器人中,該區域就無法再成為其真相來源。

具體來說,在下面的步驟 2 中,在設計任何東西之前,先盤點所有來源。盤點有兩個問題,所有權優先。

第一個問題:這屬於該機構嗎?

機器人的範圍來自於它所服務機構的註冊表,而非來自建構它的機器的檔案目錄樹。

在詢問來源是否有 Lore 之前,先問它是誰的。打開該機構自己的註冊表——它的 FASES.md、它的目錄、它的章程——並確認該來源列在其中。如果未列出,則不應進入清單。

為何這必須是第一道關卡,而不是之後的檢查: 失敗是無聲的。透過遍歷建構者的專案目錄樹來填充的清單,會產生一個看起來完整且內部一致,但實際上是錯誤的路由表,而且之後沒有人會重新推導它。磁碟上的接近性會被誤認為機構成員資格一次,然後從此被繼承下來。

邊界來源必須被宣告,而不能僅僅被省略。 一個與機構共享人員、出現在其公開展示中、或是該機器人最初用例的專案,看起來會像屬於該機構。將其明確地放入規範中,作為明確的範圍外,並附上它會造成混淆的原因。一個附有原因的邊界是穩固的;一個僅被遺漏的邊界,下次有人查看檔案目錄樹時又會被跨越。

第二個問題:它的 Lore 處於什麼狀態?

來源狀態處理方式
在一個區域中有 Lore直接將其聯邦化。
有判斷標準但無 Lore (一個沒有它誕生的專案)先對該專案執行 transmute-lore add。判斷標準是被拯救的,而非被發明的。
原始素材,尚無區域擁有它先為該領域執行 create-area,然後 transmute-lore add,再聯邦化。
非文字 (資料庫、試算表、Notion 基地)先提取為文字 — schema 轉儲、匯出、pdftotext -layout。提取的內容會存放在該區域的 fuente/ 中,絕不存放在機器人中。sync.js 只複製 .md、.txt 和 .json 檔案,因此任何未提取的內容都會對機器人無聲地不可見。
自由筆記收件匣 (Obsidian 筆記庫的 notas/、Markdown 資料夾)絕不聯邦化。 它不包含 Lore——它是原始經驗,而且它是 .md,這正是容易犯錯的原因:sync.js 會愉快地複製它,路由表會將筆記列為判斷標準。先用 obsidian-lore 挖掘它;倖存的內容會歸屬於擁有它的區域,而機器人會路由到該區域。

將此盤點結果連同實際成本報告給使用者:每個缺乏 Lore 的來源都需要在機器人存在之前執行一次 create-area/transmute-lore。提議跳過此步驟並「將其全部提煉到機器人中」雖然更快,但會產生一個無法維護的產物。

前置條件

目標區域已存在,且其 lore/ 中至少有 identidad.md + principios.md。如果沒有,停止並提議先執行 create-area——機器人像任何專案一樣繼承該區域的方法。

語言規則: 用使用者的語言(而不是撰寫此技能的語言)撰寫所有生成的內容——包括內容和產物檔案名稱。identidad.md、principios.md、FASES.md、proyectos/、canon/、enrutamiento.md 是西班牙語的標準形式:請將其本地化。所有語言中固定不變的:CLAUDE.md、lore/、index.md、skills/、.claude-plugin/。區域內已建立的名稱優先;標記衝突,切勿無聲地解決。


此技能旨在執行的法則

一個機器人持有三個擁有不同所有者的判斷標準主體。將它們合併是預設的失敗模式,而且是無聲的:一切仍然正常運作,但副本會開始慢慢超越其來源。

主體它是什麼規則
skills/{slug}/canon/機器人本身的判斷標準——在每次決策前載入提煉所得;隨技能移動
lore/用於維護機器人的判斷標準專案自身的判斷標準,如同任何專案
借用的判斷標準每個其他專案的 Lore透過指標到達其自身地址;絕非權威來源

三個名稱是因為三個所有者。區分它們的測試:

來源是否可以丟棄? 提煉會產生一個可以取代其來源的更小東西。複製會產生一個無法取代的完全相同東西。

借用的判斷標準透過指標而非副本來存取。 路由表提供地址,生成的存取機制將其打開,並且該 Lore 保持一個所有者與一個版本——與工具組其他部分相同的 DRY 規則,即專案參照其區域的模組而非複製它們。lore-ecosistema/(第 §7 節)僅在一種情況下將這些指標轉為副本,且預設為關閉。

以及使路由生效的法則:

根據任務類型路由,而非根據專案名稱。

一個實體可以擁有多個判斷標準主體,而這些主體自身的原則禁止它們互相跨越。 常見的區分是它所做的事與它如何講述它——產品與溝通——無論該實體是一個單一專案還是機器人所服務的機構,這個區分都成立。命名它並不會選擇一個 Lore:該機構會故意在路由表中出現兩次。如果一個任務在兩者之間模棱兩可,就提問——這比根據錯誤的判斷標準寫出六段文字要便宜。

從機器人實際服務的實體角度撰寫此部分。路由表是讀者用來與自身情況比對的關鍵部分,從另一個機器人複製過來的範例會將他們導向錯誤的 Lore,同時看起來卻很權威。


程序

1. 詢問使用者——三個問題,用白話文

說白話文。 這份文件內容密集,因為它是在指導一個模型。與使用者的對話則不然。 使用此技能時,不要說 規範、聯邦化、提煉、有效性邊界、不變線索、反範圍 或 Entre。說它們代表的意思:機器人始終知道的東西、將其連接起來、值得保留的判斷標準、這在什麼情況下不再成立、一條規則、它不是用來做什麼的。如果一個句子需要詞彙表,請重寫該句子。

一次問一個,並以使用者自己的話記錄答案:

  1. 這個機器人要叫什麼名字?
  2. 你要用它來做什麼? — 自由文字。請勿整理;稍後會重新閱讀以檢查任務是否與宣告的一致。
  3. 包含它將使用的資訊的資料夾在哪裡? — 要求提供路徑。資料夾、資料庫、文件轉儲、筆記。接受「我還不知道」並繼續:一個機器人可以只有一個來源並持續成長。

其他所有東西都是從這三個答案推導出來的,或是從磁碟讀取。不要為此審問使用者:

推導項目來源
{{BOT_SLUG}}名稱的 kebab-case 形式;如果被封裝,這也是技能名稱
{{BOT_TITLE}}使用者提供的原樣名稱
{{AREA_PATH}}預設為 bots 區域——提出此建議,一行確認
{{MODE}}如果有現有來源則為 federar,如果沒有則為 nuevo
{{PURPOSE}}答案 2,逐字記錄
{{SOURCE_DOCS}} / {{ECOSYSTEM}}答案 3,在檢查磁碟上每個路徑之後

然後你自己檢查路徑,並用一個簡短的表格回報你發現的結果——多少檔案、哪些已有書面判斷標準、哪些是原始的。該報告會將答案 3 轉換為步驟 2 的盤點清單。切勿要求使用者自行分類他們的資料夾。

2. 閱讀上下文 (在建立任何東西之前必須執行)

  1. 區域的 Lore:identidad.md + principios.md (+ index.md 和主題模組)。
  2. 區域的 FASES.md,以及任何已註冊的同級機器人。
  3. 來源文件。 對於 PDF,提取文字 (pdftotext -layout)。規範是從這些文件中提煉出來的——絕非來自模型自身對該主題的知識。
  4. 僅 federar 模式——先盤點來源 (見上方表格)。根據每個預定來源是否已有 Lore 進行分類,並指出那些在機器人可以聯邦化它們之前需要 create-area / transmute-lore 的來源。在腦力激盪之前執行此操作:它會改變機器人在第一天可以路由到什麼。
  5. 僅 federar 模式: 閱讀你打算路由到的每個 Lore 主體。你需要它的目的和它的反範圍——反範圍會告訴你兩個同級之間的邊界在哪裡,而邊界是這裡唯一真正可以提煉的東西。

3. 規範腦力激盪 (硬性關卡)

啟用 brainstorming。在設計批准之前,不要建立任何檔案。 維持第 §1 節的白話文規則——用...

…(內容截斷以利翻譯)

相關技能