Resume project
當工作階段開啟時,先前階段的重要資訊散落在各處。本技能提供一條「回歸之路」:收集這些資訊、與最新的可用資料進行比對,並以數行摘要呈現,讓使用者無需記憶就能決定今天要做什麼。
技能運作由四項原則決定:
- 唯讀。 它不會寫入任何檔案、筆記、資料庫或記憶體。因此它不需為每一步請求權限:讀取不會改變任何東西。將使用者電腦上的檔案複製到工作階段中以供讀取,視為讀取。唯一允許的寫入操作是
git fetch --prune,且僅在references/claude-code.md中指定時才能執行。授予工作階段存取新儲存庫的權限不僅僅是讀取:請勿自行執行(請參閱步驟 0 中的 GitHub 行)。其他外掛的鉤子可能在工作階段開啟時寫入(例如合併記憶體、儲存日誌),這並非本技能所為,無需提及,除非它改變了你即將讀取的來源。 - 讀取檔案,不啟動工作流程。 許多技能在啟動時會寫入遙測資料或狀態、建立資料夾、詢問自己的輸出格式或以自己的問題結尾。當你知道某個技能儲存資料的位置時,直接讀取該檔案。只有在別無他法的情況下才啟動該技能,取得資料後跳過其最終問題與格式,並停止任何會執行寫入的步驟。
- 優先遵循專案指示。 如果專案指示、
CLAUDE.md或使用者的偏好說明了狀態存放位置、可讀取的資料夾、衝突解決方式或當日規劃方式,則以此為優先。 - 以提問和交接結尾。 工作階段結束技能(例如 wrap-up)會以說明工作階段可歸檔作結;本技能則以詢問今天想做什麼並將答案傳遞至步驟 6 作結。
0. 盤點:你實際能讀取哪些內容
不要根據環境名稱選擇來源。同一個工作階段可能同時存在於雲端、claude.ai 專案中並連接到使用者的電腦。在讀取任何內容之前,查看目前階段擁有的工具(也包括延遲載入的工具,透過搜尋來查找),並記錄以下哪些能力是具備的:
| 能力 | 如何辨識 | 能夠開啟的來源 |
|---|---|---|
| 儲存庫中的終端機 | 工作資料夾為使用者的一個儲存庫,或存在連接到使用者電腦的終端機(device_bash 或類似工具),且儲存庫位於已連接的資料夾內 | Git 與遠端 (C),搭配 references/claude-code.md |
| 無終端機的電腦檔案 | 能夠列出並複製電腦檔案的工具,但沒有終端機 | 筆記庫 (D)、階段日誌 (B,若設定有寫入) 和交接文件 (E,如果它們位於已連接的資料夾內),以及已連接資料夾內儲存庫的 CLAUDE.md (D)。不包含本機 Git |
| 無終端機的 GitHub | 階段中安裝了 gh,或有工具可將儲存庫加入階段 | 遠端上的 Pull Request、分支與提交 (C2) |
| 專案管理工具 | 存在 Notion 連接器或其他專案管理工具,加上說明或 CLAUDE.md 指出哪個資料庫或頁面存放專案 | 狀態、下一步行動與任務 (A) |
| 先前的對話 | 能夠搜尋或列出對話的工具 | 對話 (F),搭配 references/claude-ai.md |
| Claude Code 工作階段 | 能夠列出或搜尋桌面應用程式工作階段的工具(list_sessions, search_session_transcripts, list_events 或類似工具) | 先前的工作階段 (F2),搭配 references/claude-code.md |
| 已發布的成品 | 能夠列出已發布成品、頁面或文件的工具(Artifact 搭配 list,或類似工具) | 儲存庫之外的交付物 (I) |
| 記憶體 | 上下文中的記憶體,或記憶體工具 | 記憶體 (G) |
| claude.ai 專案 | 上下文中的專案指示或檔案,或專案工具 | 指示與檔案 (H) |
參考文件說明了 Git (references/claude-code.md)、claude.ai 對話 (references/claude-ai.md) 以及由鉤子寫入的按專案階段日誌 (references/session-log.md) 的詳細資料。僅讀取你所擁有能力對應的參考文件,且僅在設定有寫入此類日誌時才讀取 session-log.md。如果某個參考文件說某項內容不存在(例如筆記庫、磁碟、Git),而盤點結果顯示它存在,則以盤點結果為準。如果參考文件缺失,則按照此文件的說明繼續進行。
如果階段有許多延遲載入的工具,請不要全部載入來進行盤點:搜尋表格中的關鍵字(notion、session、transcript、chat、memory、project、repository、artifact),並僅載入你將要使用的工具對應的結構描述。gh 不是階段工具,而是一個程式:使用 gh auth status 檢查。如果延遲載入工具的名稱在上下文中已可見,則從該清單中選擇並僅載入這些工具,無需搜尋。
此檔案中的來源代號 (A 到 I) 與 claude-code.md 中的代號 (A 到 H) 不同:此處的 E 是交接文件,而在該參考文件中 E 是 CLAUDE.md。當此檔案引用 claude-code.md 的某個類別時,會使用其名稱引用;請依名稱查找,而非依代號。
允許的資料夾。 僅讀取使用者連接到工作階段的資料夾,或使用者指示允許讀取、且階段實際能夠存取的資料夾。請勿為了解除阻塞而要求存取任何這些資料夾。將所有無法存取的內容整理到一個「提醒」行中:
- 已連接資料夾外部的有用來源(例如,在沒有終端機的工作階段中,家目錄下的
~/.gstack); - 指示允許讀取但尚未連接的資料夾(例如某個專案本身的資料夾)。如果其中一個資料夾屬於摘要中出現的專案,則加上說明:關於該專案,我們只知道專案管理工具所提供的資訊。
1. 是哪個專案
- 一個儲存庫、一個資料夾或一個名稱。 如果工作階段位於某個儲存庫中,該儲存庫即為專案。如果使用者命名了一個專案,請在專案管理工具 (A) 和筆記庫 (D) 中進行不區分大小寫的搜尋,並嘗試使用記憶體提供的別名:名稱可能不一致,且專案可能正處於重新命名過程中。
- 一個總括專案。 如果上下文是一個包含多個專案的空間(例如用來組織所有工作的 claude.ai 專案、具有專案資料庫的專案管理工具、包含多個資料夾的筆記庫),且使用者未指定單一專案,請勿默默選擇。請撰寫一個多專案摘要(步驟 4),並包含那些有最近活動的專案以及指示標記為短期優先的專案。
- 使用者預設的狀態。 如果開啟訊息中斷言了一個狀態(例如未完成的 Git 操作、一個分支、一個 PR、一次部署),請在讀取來源後立即與之校驗:快速的 Git 快照、GitHub,或如果有階段日誌的話。如果不相符,請在摘要之前用一行說明,指出每個來源所說的內容。如果命名的內容屬於另一個專案(另一個資料夾、儲存庫或筆記),請在進一步讀取之前詢問要恢復哪一個;在沒有使用者的工作階段中,請繼續使用工作資料夾的專案,並在摘要頂部說明。
- 無任何可恢復的項目。 沒有筆記、日誌、對話或提交:用一句話說明,然後直接跳到步驟 6,並處理使用者想做的任何事。
跨來源匹配同一個專案的方式
專案管理工具、筆記庫,以及(如果有的話)階段日誌,各自以不同的方式命名專案。請依以下順序比對鍵值,而非僅依名稱比對:
- 路徑。 如果設定有寫入階段日誌,則將其路徑與筆記庫筆記 (D) 的 frontmatter 中的
path:欄位進行比對,如同references/session-log.md中「依路徑比對」所述。 - 專案管理工具連結。 指向該筆記的專案管理工具欄位(例如在 Notion 中,一個名為「Obsidian 筆記」的欄位),與該筆記的資料夾進行比對。
- 名稱。 不區分大小寫,並使用記憶體中的別名。
如果專案管理工具中的某個專案未連結其筆記,但筆記確實存在(透過路徑或名稱比對成功),請在「提醒」中用一行說明。
2. 來源,依讀取順序
首先讀取能告訴你每個筆記價值(實際發生的事與發生時間)的資料,然後是告訴你下一步該做什麼的資料,最後是為什麼要做這些。
B. 階段日誌(可選)。 如果設定有寫入,請遵循 references/session-log.md。
C. Git 與遠端。 僅在儲存庫中有終端機時使用。遵循 references/claude-code.md 中的「快速 Git 快照」與「Git 與遠端的實際狀態」類別。
C2. 無終端機的 GitHub。 用來確認本機來源無法得知的資訊:某個分支是否已被推送、是否有 Pull Request、以及是否已被合併。從專案的筆記庫筆記(url: 欄位或 github.com/... 行)、CLAUDE.md 或階段日誌中的 Merge pull request #N from <owner>/... 提交記錄中取得 owner/repository。
- 首先,透過讀取檢查階段是否已有存取權:
gh api "repos/<owner>/<repo>/pulls?state=all&sort=updated&direction=desc&per_page=10"。使用 REST API (gh api repos/...):gh pr list可能因 GraphQL 並非總是可用而失敗。每個 PR 都有created_at和merged_at:合併時間由merged_at決定,而非建立日期。 - 如果可以回應,也請讀取分支(
repos/<owner>/<repo>/branches)以及主分支的最新提交(repos/<owner>/<repo>/commits?per_page=5)。有了這些資訊,另一個來源所提到的未合併分支就可以標註為「有開啟的 PR #N」、「已合併」或「不在遠端上」。 - 也讀取主分支的 CI(
repos/<owner>/<repo>/actions/runs?branch=<main>&per_page=1)。如果最後一次執行失敗,將其放在「待辦」中;如果成功,則不提及;如果完全沒有執行(儲存庫沒有 CI),也不要提及。 - 如果回應指出該儲存庫未啟用於此階段,請勿自行新增:授予儲存庫存取權不僅僅是讀取。在「提醒」中記錄下來,並在步驟 5 中將其作為一個選項提供(「在 GitHub 上確認」)。在沒有使用者的工作階段中,請跳過此步驟。
A. 專案管理工具。 如果指示指出狀態、優先級或下一步行動位於專案管理工具(Notion 或其他)中,請讀取它:這是了解下一步要做什麼的來源。從指示或 CLAUDE.md 中取得資料庫位址;如果你已經有了,就不要按名稱搜尋。
- 在 Notion 中:取得資料庫結構描述,並查詢包含其連結 (
url)、名稱、領域或分支、狀態、優先級、關鍵日期、下一步行動和筆記的行。 - 已歸檔。 移除 Notion 已歸檔的行,並且如果資料庫也有自己的核取方塊或狀態來表示(例如「已歸檔」核取方塊或「已關閉」狀態),也移除那些已設為該狀態的行。
- 編輯日期。 查詢不會返回最後編輯日期。打開你將要與其他來源校驗的行的頁面,對於總括專案,也打開指示標記為短期優先的專案的頁面,即使它們沒有日誌或筆記:這樣一來,沒有程式碼的專案也可以出現在「上次進度」中。
- 大量編輯。 如果同一個資料庫中的多個頁面在相隔數秒內有編輯日期,這是一次性對所有頁面進行的更改(例如新增欄位、匯入、範本),而不是對這些專案的工作。請勿將該日期視為活動:除非另一個來源提供了日期,否則將這些專案保持為無日期狀態。
- 任務。 如果指示命名了一個任務資料庫,請取得其結構描述,並查詢逾期或未來七天內到期的未完成任務。只有摘要中出現的專案相關任務才算數:暫停、關閉或不在摘要中的專案的任務,即使逾期也不算待辦事項。它們會在其專案項目下的「待辦」中顯示,並附上日期。對於沒有下一步行動的優先專案,也查詢其沒有日期篩選條件的開放任務(見下文)。
- 沒有關聯專案的任務。 它們不屬於「待辦」。但如果某個任務匹配了一個「提醒」警告(例如,當某個專案未連結其筆記時,有任務要求連結筆記),請在該警告中提及該任務,而不是將其作為新發現呈現。
- 一個沒有下一步行動的行不是待辦事項:請勿憑空捏造。如果該專案是優先專案,請在「待辦」中標記為「無下一步行動」。如果它有開放任務,無論是否有日期,請列出第一個(最接近截止日期的,或第一個無日期任務):「無下一步行動;開放任務:<任務>」。這是來自專案管理工具的資料,不是建議。優先指的是指示標記為短期優先的專案,加上其長期優先項目中的第一個;如果指示未設定優先級,則為專案管理工具中的最高優先級。當指示設定了其他優先級時,僅憑專案管理工具標記為「高」是不夠的。
- 如果項目過多。 「待辦」最多包含五個項目。如果有更多專案需要納入,優先納入短期專案以及有下一步行動或未完成事項的專案;僅會新增「無下一步行動」的優先專案會被歸納為一個「提醒」行:「無下一步行動:X、Y 和 Z」。
- 如果專案管理工具的狀態與另一個更新的來源明顯矛盾(例如,專案管理工具標記為「想法」,而筆記庫筆記中已有已完成的工作),請在「提醒」中說明,並附上兩者的日期。
D. Obsidian 筆記庫。 專案筆記,位於筆記庫的專案資料夾中(指示或 CLAUDE.md 通常會說明是哪個;例如在 PARA 風格的筆記庫中,位於 2 Projects/<project>/),以及其 updated: 欄位。它的 path: 欄位(如果有的話)是比對的鍵值(請參閱步驟 1)。讀取標題和最新的條目,而非整篇筆記。無需特定技能即可讀取。在 Claude Code 中,參考文件說明了何時啟動筆記庫技能,何時不啟動。
- 儲存庫的
CLAUDE.md。 如果可以存取(透過終端機,或已連接的儲存庫資料夾),其狀態和待辦事項章節(「Current state」、「Pending」)是本地可用的最可靠待辦事項清單;僅讀取這些章節。使用終端機時
...
[原文截斷,此處為翻譯內容的結尾]