/dgclaw:aprender:將成功流程變成技能
技能是一份書面的步驟指南,我在執行任務前會先閱讀它。它讓我不必依賴記憶:那些花了一小時對話才搞定的流程,會變成一張食譜,下次我能在五分鐘內,用同樣的方式完成。
以下三條規則適用於所有情況:
- 技能只在使用者同意下才建立。我會建議、解釋為什麼值得,然後等待。沒有回應就不算同意。
- 我只建議一次。如果使用者說不要或沒有回應,我會記下來並不再堅持。
- 機密絕不寫進技能。密碼、token、金鑰、卡號:技能只會說「去哪裡取得」(例如「金鑰位於控制台的保險庫中」),絕不包含實際數值。
何時值得建議
在以下四個條件都成立時建議:
- 步驟達到 3 個或以上,而不只是一個回答。例如:查詢中央銀行的利率、重新計算、更新檔案、發送 PDF。
- 可以用其他數據重複執行。流程相同;只是主題、月份、客戶不同。
- 使用者很可能會再次要求。跡象包括:「每個月」、「再一次」、「跟上次一樣」,這是使用者工作中會重複的交付事項,或是我們第二次做類似的事。
- 最終成功了。使用者核准了結果或使用了該交付物。
另外,請先確認該技能尚未存在:ls .claude/skills/ 以及 memory/skills-aprendidas.md。
何時不建議
- 一次性任務,不會再回來(例如「幫我寫這封給管委會的信」)。
- 一或兩個步驟。我已經能一次搞定的事,不需要食譜。
- 流程取決於只適用於當次的決定。
- 對話以未解決的問題結束,或者使用者很急或很生氣。在這種情況下,將建議延後到夜間反思(它會記錄在「我想與使用者討論的事」中)。
- 使用者已經拒絕過同一個技能(已記錄在
memory/skills-aprendidas.md)。
夜間計數器:memory/skills-candidatas.md
並非所有重複都會立即被發現。夜間反思會發現第二次:它會重新閱讀這一天,尋找我手動完成的多步驟流程,並逐行計數:
- <一行描述的任務> | 次數: N | 日期: DD/MM, DD/MM | 技能的作用
已經存在的任務只會增加次數和日期,不會新增行。當候選技能累積到 2 次(或 1 次,如果流程超過 5 個步驟且使用者表示會重複),反思會將其放入「我想與使用者討論的事」:「我今天又手動做了 X;您想把它變成技能嗎?」。每晚最多一個建議,我會在下一次對話中提出,方式如下一節所述。在計數之前,我會確認技能是否已經存在:如果存在但我沒使用,那是我忘記的錯,這會記錄在日記中,而非計數器。
如何提問
在交付結果之後,用一條簡短、與交付物分開的訊息:
我們剛剛完成了這個流程:<一行描述流程,包含步驟數>。您想把它變成技能,以便下次可以重複使用嗎?我建議的原因是<具體理由:例如「您說過這是每個月都要做的」或「我們花了一小時才確定格式」>。
只需一個問題,不要列出選項,也不要施加壓力。如果使用者問什麼是技能:「這是我為自己寫的一份食譜,包含您今天教我的步驟和注意事項」。
獲得同意後:撰寫技能
-
名稱: 簡短、使用繁體中文,全小寫並以連字號分隔(例如
relatorio-mensal-vendas、conferir-taxas-bc)。確認該資料夾不存在。 -
位置:
.claude/skills/<名稱>/SKILL.md,位於我的工作區(我執行指令的資料夾)。絕對不要放在外掛資料夾中,因為每次更新都會被取代。 -
檔案,格式如下:
--- name: <名稱> description: <用第三人稱描述它的功能> 當 <使用者> 要求 <他使用的詞語和可能的變體:「製作月度報告」、「更新費率」>,或當 <觸發情境> 時使用。 <如果可能混淆,說明它不做什麼> --- # <標題> <用兩行說明用途。與 <使用者> 在 <YYYY-MM-DD> 學習所得> ## 開始之前我需要什麼 - <如果要求中沒有提供,我會詢問的輸入項目> ## 逐步操作 1. <具體步驟,包含我們實際使用的檔案、來源或指令> 2. ... ## 交付前我確認的事項 - <使用者今天要求或修正的內容> ## 如何交付 - <格式:PDF、頁面、簡短訊息;檔案存放位置> ## 已發生過的陷阱 - <YYYY-MM-DD> <錯誤與正確做法>description是關鍵,它決定技能能否在正確時機被想起:使用使用者實際說出的詞彙,而不是我的詞彙。路徑應相對於工作區。總行數約 150 行;如果需要更多,請在.claude/skills/<名稱>/references/中建立輔助檔案。 -
記錄在
memory/skills-aprendidas.md(若不存在則建立),每個技能一行:- **<名稱>**(建立於 YYYY-MM-DD):<功能>。源自 DD/MM 關於 <主題> 的對話。拒絕也要記錄:
- (於 YYYY-MM-DD 拒絕)<流程>:使用者偏好不建立技能。 -
告訴使用者,用一行話:「完成了,技能 <名稱> 已建立。下次只要說 <觸發詞> 就能使用。」如果新技能沒有立即出現在我的技能清單中,它會在下一個會話開始生效;在此之前,我會在執行任務前直接讀取該
SKILL.md。
當使用者修正我的技能執行結果時
如果我依照自己撰寫的技能執行了任務,而使用者修正了某些事項(例如「不對,圖表要在表格之前」、「正確的來源是國庫局的」):
- 先修正任務成果。使用者要的是結果。
- 更新
SKILL.md:調整錯誤的步驟,並在「已發生過的陷阱」中新增一行,包含日期。 - 記錄在
memory/skills-aprendidas.md中,該技能的那一行:於 YYYY-MM-DD 改進:<內容>。 - 用一行話告知:「我已將該修正寫入技能 <名稱>:下次我會直接使用正確的方法。」
如果修正僅適用於當次(例如「今天不用圖表」),則不更新技能。如果不確定,我會問:「這是只針對今天,還是永久適用?」
我絕不做的事
- 未經使用者同意就建立或刪除技能。
- 修改外掛的技能(
/dgclaw:*):那些不屬於我,每次更新都會恢復原狀。 - 在技能中撰寫任何規避我的規則(
LAWS.md)或使用者禁止事項的規則。