結案彙整 (Wrap-up)
使用者即將封存此對話。僅存在於對話中的一切(已做出的決定、磁碟上的變更、下一個工作階段應接續的事項)都將遺失。已安裝的多個技能各自負責儲存其中一塊。此技能的任務是找到它們、按照正確順序執行,並在一次確認後停止。
技能清單並非固定:外掛來來去去,使用者也會編寫新的技能。切勿硬編碼名稱;每次應從已安裝的技能中發現,然後與 references/close-out-catalogue.md 中的類別進行比對。目錄檔案說明了每個類別的用途、執行順序以及成本;本檔案則說明每個類別在不同環境下如何執行。若兩者似乎存在矛盾,則遵循目錄檔案來決定「做什麼」以及「順序」,遵循本檔案來決定「怎麼做」,並在報告中提及該矛盾,以便使用者修正目錄檔案。
0. 確認所在環境及工作階段的新舊程度
接下來的內容大多會因環境及工作階段的時間長短而改變,因此請先確認這兩點,並在計畫頂部用一行話說明。三種環境:
- 使用者電腦上的 Claude Code。 該電腦上的一個 Shell,技能位於
~/.claude/skills,鉤子(hooks)可執行(包括某些已設定的SessionEnd鉤子,它會記錄每個工作階段;本機地圖或settings.json會說明是否存在),儲存庫和保險庫(vault)皆位於磁碟上。以下所有內容均按書面適用。 - claude.ai 或附有裝置 Shell 的雲端工作階段。 對話在 Linux 容器中運行,但同時列出了指向使用者電腦的 Shell 工具,因此命令可在那裡、在使用者所連接的資料夾內執行。保險庫及存儲在已連接資料夾中的任何腳本均可存取。此技能自身的檔案(目錄檔案、
scripts/)位於容器中,而非該電腦上。鉤子不會執行。記憶將透過記憶工具存取,後台程序會在各個回合後歸檔持久性事實。 - claude.ai 或沒有該 Shell 的雲端工作階段。 僅能透過那些將檔案暫存到容器並提交回來的工具,且僅在桌面應用程式已連結時,才能存取使用者電腦上的檔案。否則無法存取其磁碟上的任何內容。鉤子和記憶的處理方式同上。
信號:平台和工作目錄、列出哪些工具(裝置 Shell、裝置檔案工具、記憶工具)、系統提示中關於記憶和專案的說明。若無法判斷,請說明並提問,因為錯誤的猜測會導致資料寫入錯誤的位置。
接著是「新舊程度」(age)。結案通常在工作結束時才會被要求,但一個對話可能會開啟數日後才關閉,期間可能已有其他工作階段處理過相同的檔案、筆記和技能。當工作階段所觸及的任何事物在其最後一次實際工作後發生了變更,則該工作階段被視為陳舊:將該次工作的日期(對話的時間戳記或已標註日期的筆記)與其所觸及的檔案及儲存項目(store entries)的修改時間、後續的提交、日期更晚的儲存項目,或其曾使用但現在清單中已重新命名或不再顯示的技能進行比較。只要有一項此類變更即足以判定。僅憑時間久遠本身是審查的理由,而非最終結論:一個一週前開啟但無人接續的對話並不陳舊。請將其寫在頂行,並附上時間差距(例如「最後活躍於 11 月 4 日;所觸及的檔案此後已變更」)。
在陳舊的工作階段中,磁碟和儲存項目比對話更新,因此以它們為準:
- 在規劃任何寫入之前,請先讀取每個該步驟將觸及的檔案或儲存項目的當前版本,並根據當前存在的內容(而非對話所記憶的內容)進行規劃。
- 工作階段所做出、但後續工作階段已記錄的決定視為已完成:指出它即可,不要重複寫入。後續工作階段已變更或推翻的決定,不應由本次結案來恢復:將其標記為已被取代並予以放棄。當後續記錄僅涵蓋決定的部分內容,或無法確定涵蓋範圍時,僅放棄明確涵蓋的部分,並將其餘部分標記為「可能已被取代」;如何處理將根據單一問題的結果而定。
- 工作階段使用的路徑、名稱和技能可能已移動或重新命名。在使用前請再次解析。僅當有書面記錄(記憶、筆記、提交、技能的自身描述中提到其先前名稱)引用新形式時,才將該形式計為有效;請使用該形式並加以說明。若無任何記錄,請將舊形式標記為「不再解析」,而非進行猜測,並且不要將其視為當前名稱寫入儲存項目。
- 因此,待提議的內容是工作階段已決定、且後續尚未記錄、變更或牴觸的部分。這可能非常少;一個陳舊的對話結案只寫入一行,甚至什麼都不寫,也是正確的結案。
同一個對話可能已包含一個較早的結案(在使用者繼續工作之前已執行)。那麼,本次結案將基於該結案而非從頭開始:取用其計畫,並將每個步驟標記為「已完成」(其報告如此說,且磁碟狀況相符)、「已被取代」或「仍待處理」,僅檢查該結案之後發生的事情。若較早的結案提出的計畫使用者從未回覆,則視為未批准:將其待處理步驟納入本次計畫,並再次根據磁碟和上述規則進行檢查,而非直接執行或悄悄放棄它們,並在頂行說明存在一個較早的結案。
1. 發現 (Discover)
在發現任何內容之前,請檢查環境的常設指示(在 Claude Code 中為 CLAUDE.md 檔案和自動記憶,在此視為常設指示;在 claude.ai 中為專案指示、使用者偏好設定和記憶,以及 此安裝的本機地圖 區段,該區段可能由本 SKILL.md 的打包副本攜帶),尋找關於此例行程序的本地記錄:一個簡短區段,說明哪個已安裝技能負責哪個類別、儲存項目、已退役項目以及測量成本。當存在此類記錄時,它將取代發現流程:驗證其所命名的每個技能是否仍已安裝(並在方便時透過一個便宜的唯讀查詢來確認命名的指令或路徑),並將其標記為已退役的項目視為已解決。部分記錄(僅命名了儲存項目或退役項目,但未指明每個類別的技能)將為發現流程提供資訊,而非取代它:尊重其已命名的部分,發現其餘部分,並且第 5 節的提議將變為補全該區段,而非新增第二個區段。若不存在任何此類記錄,則按以下方式發現,並在最後提議寫入一個(第 5 節)。在 Claude Code 中,請從磁碟讀取 CLAUDE.md 檔案,而不僅從上下文讀取:注入的副本可能早於編輯,而陳舊的副本會導致你進行完整的發現流程,並提議在已存在的記錄之上寫入第二個記錄。
候選清單是已在上下文中的 可用技能列表(名稱 + 描述)。它涵蓋了本地技能、外掛技能和 gstack 技能;沒有更好的來源。列表有兩個特殊情況:一個技能同時以有無外掛前綴的形式出現,且描述相同,則視為同一個技能,因此在計畫中以裸名(bare name)稱呼它,但調用時使用列表顯示的確切名稱;此外,當一個命令觸及一個攜帶自身技能的資料夾時,列表可能會在運行中途增長,這些新來的技能僅在匹配某個類別時才會改變計畫。
閱讀 references/close-out-catalogue.md。對於其中定義的每個類別,挑選出描述與其用途相符的已安裝技能。已知的成員是提示而非答案:未列在其中的已安裝技能,若其描述相符則符合資格;已列出但不再安裝的技能則跳過。注意目錄檔案中標記的近似匹配。當列表僅顯示技能名稱時(兩種環境在某些情況下都會這樣做),則根據名稱和目錄檔案中的「識別依據」詞語進行匹配,並在計畫中將其標記為「(無描述)」,以便使用者知道該匹配較弱。
一個類別若無對應的已安裝技能,則在計畫中記為「跳過,未安裝」;請勿即興創造替代方案,除非該環境有自身的機制來處理該工作(第 2 節)。某些類別並非技能(在 Claude Code 中,自動記憶透過 Write 工具寫入,圖表刷新則是一個命令);它們同樣是計畫中的步驟,僅在該環境具備時才納入。
然後檢查本次工作階段實際上值得做些什麼:
- 圖表 (Graphs)。 在使用者電腦的 Claude Code 中,執行
python scripts/find_graphs.py <workspace-root>(路徑相對於此技能所在的目錄;任何 Python 版本均可)。工作區根目錄是工作階段的當前工作資料夾,或者當專案指示中描述了一個包含所有儲存庫的更上層資料夾時,則為該資料夾。該腳本會列出所有其專案資料夾位於工作區根目錄下最多五層的graphify-out/,並說明自其清單(manifest)以來檔案是否已變更:每個圖表一行,標示為 CURRENT(當前)、STALE(陳舊,附上已變更和已刪除的計數),或 UNKNOWN(未知,無清單或 graphify 無法匯入),或一行「未找到」。這些計數並未說明變更是筆記(每次約 85k 需重新提取)還是程式碼(無需 LLM);請根據工作階段所觸及的內容來判斷。 CURRENT 不構成一個步驟,即使你記得編輯過一個已繪製圖表的檔案:清單知道圖表是否在該編輯之後被重建。如果電腦上沒有 Python,則圖表未經檢查;請說明。在任何其他情況下,腳本無法看到工作區(它執行在容器中,而圖表位於使用者磁碟上):將每個圖表報告為未檢查,這不等於「無需更新」。 - 工作階段 (The session)。 決策、修正、關於使用者或專案的新事實、已建立或移動的檔案?這決定了記憶和學習步驟是否需要寫入任何內容。一個純粹進行閱讀的工作階段可能除了上下文儲存外無需任何操作。
- Git。 在工作階段所觸及的每個儲存庫中執行
git status。未提交的工作不屬於此技能的提交範圍;它將被放入計畫的「留待使用者處理」行中。當工作階段的記錄與 git 不一致(工作階段中檔案已變更,但 git 樹是乾淨的)時,請指出該不一致,而非默默協調。 - 聲稱的寫入 (Claimed writes)。 列出工作階段聲稱已寫入、建立、安裝或變更的內容(檔案、筆記、提交、設定、已安裝的套件),並透過一個唯讀的檢查來驗證每一項:它存在,且其內容是工作階段所寫入的(一個獨特的代碼行或檔案大小,而非僅驗證存在性,因為失敗的覆寫會留下舊檔案)。工具報告成功並非證據。當內容不同時,由修改時間決定:在工作階段最後工作之後變更,表示後續工作階段更改了它(第 0 節,陳舊);在工作階段最後工作之後未變更,表示寫入從未實際發生。一個應存在但不存在(無論是未發生寫入或工作階段留下未完成工作)的檔案,也表示寫入從未發生,除非後續的提交或筆記記錄了其刪除。一個從未實際完成的寫入,或工作階段留下的未完成工作(僅部分地方安裝、一個承諾但未執行的步驟),將被放入計畫的「留下未完成」行中(第 3 節)。聲稱無任何寫入的工作階段則跳過此步驟。
- 進行中的工作 (Work in progress),由另一個技能跨多個工作階段進行(目錄檔案,「進行中的工作」)。這不是一個獨立步驟:它會包含在交接筆記和上下文儲存中。
- 狀態已存在於何處。 專案指示可能指明使用者視為來源的儲存項目:一個保險庫、一個專案資料庫、一個存放下一步行動的欄位。在規劃任何寫入之前,請先閱讀這些指示(儲存項目本身將由負責寫入它們的步驟讀取);它們決定了類別 3 和 5 如何執行。當兩個命名的儲存項目都可能存放同一事實(例如,一個決策筆記和一個專案筆記)時,計畫應指明寫入的目標是哪一個;如果指示未解決此問題,則在單一問題中解決,切勿擅自決定。
2. 環境差異處理
在 Claude Code 中,按照目錄檔案所述執行每個類別;以下內容中,僅有明確說明的規則也在該處適用。在其他兩種第 0 節所述的情況下,進行如下調整。
1 記憶:檢查,不寫入。 後台程序已在每個回合後歸檔持久性事實。讀取它可能已使用的記憶檔案(列表會顯示路徑),並在計畫中說明本次工作階段的決策是否已存在其中。因為該程序在每個回合後執行,所以結尾回合本身所決定的內容還不在那裡,並將在其後歸檔;這是正常現象,並非缺口。該平台僅允許在使用者明確要求時進行記憶寫入,因此如果他們說過的東西遺漏了,請在計畫中指明,並讓他們說「儲存它」;這句話即為請求。在專案內,寫入將進入專案自身的子樹,格式需符合記憶指示的要求。
1b 交接筆記,2 學習:未安裝時跳過。 沒有替代方案;專案文件、新筆記或對話摘要不會變成其中之一(請參閱單一位置規則)。
3 保險庫同步:取決於可存取性。 若有裝置 Shell 且保險庫資料夾已連接,則安裝了同步技能時執行它;如果它缺少此環境所不具備的某些功能,它會自行說明,然後再手動進行同步。若無 Shell,且僅在電腦已連結時,使用檔案工具手動進行同步。無論哪種方式,請先閱讀保險庫自身的約定筆記(若無 Shell 則暫存它),並在計畫中將每個提議的變更表述為「保留什麼」、「更改什麼」以及「消失什麼」,以便單次確認涵蓋所有寫入。鉤子寫入的工作階段日誌在此環境中不存在,請說明。
4 圖表:未檢查,如第 1 節所述。不等於「無事可做」。
5 上下文儲存:寫入專案指示所指定的位置。 這在 Claude Code 中也適用:專案指示中命名的位置優先於通用的快照技能;若無此類指示,則已安裝的快照技能即為此步驟。如果專案指示指明了一個存放「上次離開處」的位置(例如專案資料庫中的一個欄位),則該位置就是上下文儲存。如果一個已安裝的技能擁有該位置(例如每日關閉常規),則該技能就是此步驟;如果它已在本次工作階段中執行過,則跳過。否則,由你自己親自寫入該位置。計畫中應包含該位置的確切提議文字,以便一個答案涵蓋所有內容;當你自己寫入該位置時適用此規則,而擁有寫入權的技能(無論在 Claude Code 或其他地方)則會自行組織其內容。如果沒有任何專案條目涵蓋工作階段所處理的內容,請說明並提出……
…[為翻譯而截斷]