think

think

熱門

將粗略想法轉化為已核准、決策完整的計畫,並在編碼前驗證結構。當使用者以任何語言要求規劃、架構、設計方向、可行性、價值判斷,或某個功能在實作前是否值得做時使用。不適用於錯誤修正或小型編輯。

6382星標
0分支
更新於 2026/7/10
SKILL.md
readonlyread-only
name
think
description

將粗略想法轉化為已核准、決策完整的計畫,並在編碼前驗證結構。當使用者以任何語言要求規劃、架構、設計方向、可行性、價值判斷,或某個功能在實作前是否值得做時使用。不適用於錯誤修正或小型編輯。

Think:先設計驗證,再動手實作

第一行前綴加上 🥷,內嵌於行內,不要自成段落。

更新檢查(非阻塞)。 每次對話執行一次 bash <skill-base-dir>/scripts/check-update.sh,將 <skill-base-dir> 替換為此技能的基礎目錄;若有任何輸出則轉達,否則靜默繼續(若腳本已執行過、不存在或出錯亦同)。此檢查每天最多一次,僅讀取公開版本檔案,不發送任何資料。

將粗略想法轉化為已核准的計畫。在使用者核准前,不寫程式碼、不建立框架、不寫虛擬碼。

直接表達意見。明確表態,並說明什麼證據會改變立場。避免使用「這很有趣」、「有很多思考方式」、「你可以考慮」等用語。

成果合約

  • 成果:粗略想法變成決策完整的建議或實作計畫。
  • 完成條件:目標、成功標準、限制條件、選定方法、被拒絕的取捨、測試、交接步驟都已具體到無需重新決策即可執行。
  • 證據:當前儲存庫狀態、專案文件、相關的外部即時文件、先前決策、限制條件、以及使用者的明確偏好。
  • 輸出:一個建議方向或交接計畫,包含假設與驗證步驟。

持久上下文預檢

請參閱 references/durable-context.md 了解何時讀取持久上下文、讀取順序預算、以及記憶類型對應(規劃限制、可重複使用的模式、需與當前狀態重新驗證的事實)。

對於 /think:當前儲存庫狀態與即時文件優先於記憶。在提問前先鎖定持久決策與偏好,除非有風險、過時或與當前狀態矛盾,否則不要要求使用者重述持久上下文已確立的意圖。

在輸出任何計畫前,掃描專案的 AGENTS.mdCLAUDE.md.claude/rules/*.md,以及使用者指定的本地代理記憶摘要。若提出的計畫與這些檔案中的「硬性規則」、「絕不 X」、「必須 Y」或「偏好 Z」衝突,請在計畫輸出中揭露衝突(一句話:哪條規則、哪個步驟與之衝突、建議的解決方案)。不要默默覆寫規則。若規則阻擋了計畫,請先停止並詢問再繼續。

輕量模式

當使用者想修正某個問題而非建構新功能、問題已定義、且唯一待解決的問題是「如何修正」時啟動。

用 2-3 句話給出一個建議修正:修改什麼、位置(若已知則附上檔案:行號)、以及原因。第一行先列出暴力解法;除非使用者想要優雅方案,否則預設使用暴力解法。列出受影響的檔案,若超過 5 個則明確標示。說明一個風險。等待核准後再實作。

若發現 3 個或以上真正不同且有意義取捨的方法,則升級為完整模式。

評估模式

當使用者想判斷某事物是否應該存在、保留、公開或移除時啟動。典型觸發詞:「判斷一下」、「有沒有必要」、「值不值得」、「should we keep this」、「is this worth it」、「我不想做」、「商業前景」、「有沒有必要繼續」。

說明評估目標及所需判斷類型(價值、風險或取捨)。先取得當前狀態快照:它做什麼、誰使用它、哪些東西依賴它;在發表意見前先 grep 並閱讀相關內容。

對於產品轉型、商業化或業務方向請求,在提出技術方案前先界定市場、使用者、通路、支付意願與維護負擔。不要假設開源、不要假設實作優先、不要在技術計畫中隱藏商業判斷。

商業就緒門檻。 當判斷某產品、付費功能、發布或版本是否可收費時,在實作前先評估收費可行性。檢查交付與更新路徑、首次執行啟用/引導、付款/授權/試用邊界、隱私與網路承諾、主打功能可靠性與誠實降級、支援/退款觸發條件、競爭者差距、以及單一維護者的維護負擔。產品不能因為快樂路徑在本地運作就準備好收費;缺少通路、更新、授權、隱私揭露或主打功能可靠性,是「繼續建構」或「轉型」的阻擋條件。

輸出格式(Kill/Keep/Pivot):

第一行:Kill / Keep / Pivot 其中之一作為裁決。不加前言。

接著根據使用者的實際限制(時間、動機、商業模式、維護成本)給出三個理由。不是泛泛的取捨。

若裁決為 Pivot:列出具體方向,每行一個,每個方向都可執行。

若裁決為 Kill 或需要大幅重構:在要求確認前先列出影響範圍(檔案、依賴項目、遷移成本)。

不要在此使用建構計畫模板。不要列出選項。給出一個裁決。

與輕量模式的區別:輕量模式回答「如何修正」(方法)。評估模式回答「是否應該存在」(價值判斷)。

分類模式

當使用者轉發一批請求時啟動:包含多個請求的議題、一批截圖、使用者說「看看這幾個需求」、或任何包含 3 個以上可獨立接受或拒絕項目的輸入。

不要將這批請求視為待辦清單。先將每個項目分類:

類別 意義 行動
Bug 有證據的錯誤行為 修正
Already works 功能已存在但回報者沒發現 指出現有功能
Accepted improvement 真正的缺口、低風險、符合產品方向 實作
Cosmetic / preference 主觀、無功能影響 記錄但不實作,除非維護者同意
Out of scope 與產品邊界衝突或增加不合理複雜度 用一句話拒絕

先輸出分類表。在實作任何項目前,等待使用者確認接受的子集。最常見的浪費是將「Already works」誤認為缺失;在將項目歸類為缺口前,先 grep 現有功能。

負面使用者回饋不自動納入範圍。 退款、流失以及「競爭對手 X 更直覺」的抱怨,通常針對的是刻意的產品差異化,而非疏忽。在將抱怨轉化為重構計畫前,先閱讀專案自身文件中對該行為的說明,確認是否為刻意選擇;若是,則裁決為 Keep,並用一句話說明差異化的重要性,同時備註維護者可以覆寫。不要撰寫「修正摩擦」的計畫而默默移除差異化。

在閱讀任何程式碼之前

  • 確認工作路徑:pwdgit rev-parse --show-toplevel。永遠不要假設 ~/project~/www/project 是相同的。
  • 若專案有追蹤先前決策(ADR、設計文件、議題討論串),在提出方案前先瀏覽與問題相關的部分。若不存在則跳過。
  • 若計畫涉及預設值、環境變數或設定欄位,請開啟專案實際的設定檔(例如 app.config.jsontauri.conf.jsonpackage.json.env)並取得實際值。不要引用記憶或文件中的預設值。

優先檢查官方解決方案

在提出自訂實作前,先搜尋框架內建功能、官方模式及生態系標準。若可用,使用 Context7 MCP 工具查詢最新文件。若官方解決方案存在,則為預設建議,除非你能說明為何在特定情況下它不足夠。

對於困難問題,或你已調整數次仍感覺不對的問題,在設計前先研究成熟開源專案或直接競爭對手如何解決相同問題。取得他們的方法,閱讀實際實作,並提取可轉移的機制。當已有經過驗證的實作時,從第一原理設計會浪費他人已付出的迭代。說明你研究了哪些專案以及從中各學到了什麼。

提出方法

給出一個建議方法並附上理由。包含工作量、風險以及它建立在哪些現有程式碼之上。僅在取捨確實接近(使用者有超過 40% 機率會偏好)時才提及一個替代方案。始終包含一個最小化選項。

當計畫是將一個專案的經驗提煉成可重複使用的技能集或共享規則時,將計畫拆分為 promotedo not promote。僅 promote 可重複使用的工作流程限制。明確拒絕專案特定的指令、路徑、發布檢查清單、安全邊界以及私有本地上下文,除非使用者要求更新該專案本身。

對於建議,找出最脆弱的假設(前提崩潰)並明確說明:「此計畫假設 X。若 X 不成立,則發生 Y。」若該假設是承重且脆弱的,則調整設計使其能在失敗時存活。

阻礙性模糊: 若需求存在使用者必須解決的衝突(兩個矛盾的來源、兩個有效但成本不同的解釋),用一句話說明具體衝突,並詢問哪個優先。不要默默選擇。

額外攻擊角度(僅在計畫涉及外部依賴、高併發或資料遷移時執行):

攻擊角度 問題
依賴失敗 若外部 API、服務或工具故障,計畫能否優雅降級?
規模爆炸 在 10 倍資料量或使用者負載下,哪個步驟會先出問題?
回滾成本 若方向在發布後錯誤,我們能回到什麼狀態?難度如何?

若某個攻擊成立,則調整設計使其能存活。若它完全摧毀了方法,則放棄並告訴使用者原因。不要提出一個未揭露失敗的計畫。

在獲得核准前繼續。

交接前驗證

  • 超過 8 個檔案或 1 個新服務?明確承認。
  • 超過 3 個元件交換資料?繪製 ASCII 圖表。檢查是否有循環。
  • 列出每個有意義的測試路徑:快樂路徑、錯誤、邊界情況。
  • 能否在不觸碰資料的情況下回滾?
  • 計畫所需的每個 API 金鑰、令牌和第三方帳號都列出並附上一行說明。實作過程中不應出現憑證請求。
  • 計畫依賴的每個 MCP 伺服器、外部 API 和第三方 CLI 在核准前都驗證為可連線。

實作交接

完成的計畫必須能讓另一位工程師或代理無需重新決策方向即可執行。包含:

  • 範圍與非範圍。
  • 選定的方法以及一個被拒絕的替代方案(若取捨接近)。
  • 公開 API、結構描述、指令、設定或檔案介面的變更(若有)。
  • 驗證指令與手動驗收檢查。
  • 發布、發布、遷移或議題/PR 後續步驟(若任務自然延伸至此)。
  • 任何可能改變外部狀態的步驟的回滾或失敗處理。

當使用者要求匯出交接,或環境阻止進一步執行時,製作可立即執行的交接,而非解釋限制。包含檔案目標、關鍵常數或選擇器、確切指令、執行時或視覺檢查清單、以及風險邊界。若工作依賴截圖或成品,請命名成品及通過/失敗的差異。

當使用者後來說「Implement the plan」、「可以幹」、「直接改」、「整」或類似用語時,視為對書面計畫的核准。不要重新爭論設計。說明正在執行哪個計畫,檢查儲存庫是否有明顯偏離,然後繼續。若環境已改變到計畫不安全,請說明具體偏離並在編輯前停止。

硬性規則

  • 已核准計畫中不得有佔位符。 每個步驟在核准前必須具體。禁止模式:TBD、TODO、「稍後實作」、「類似步驟 N」、「細節待定」。含有佔位符的計畫只是承諾稍後再規劃。
  • 階段獨立性。 若計畫有多個階段,每個階段必須可獨立合併:階段 N 發布後,系統處於可用狀態,即使 N+1 從未完成。需要所有階段完成才能運作的計畫是脆弱的(一個卡住的階段會阻塞整個發布)且浪費審查精力。若工作無法切割成可合併的階段,請說明並以一個階段發布,而不是假裝它是分階段的。
  • 計畫紅旗(交接前自我檢查): 一個階段依賴下一個階段才能有用,或存在「階段 0:調查/探索」(調查應在計畫之前,而非計畫內部)。任一紅旗表示計畫尚未準備好;在交接前解決它。

注意事項

發生情況 規則
將檔案移動到 ~/project,但儲存庫在 ~/www/project 在第一次檔案系統操作前執行 pwd
在 3 個實作步驟後要求 API 金鑰 在交接前列出所有依賴
使用者說「just do it」或等效核准 視為對建議選項的核准。說明選擇了哪個選項,完成計畫。不要在 /think 內實作。
規劃了 MCP 工作流程但未檢查 MCP 是否載入 在交接前驗證工具可用性,而非實作中途
被拒絕的設計從頭開始重做 詢問具體失敗原因,以縮小的限制條件重新進入
使用者說「just fix X」並跳過 /think 若修正涉及 3 個以上檔案或需要方法選擇,暫停並執行輕量模式
使用者核准了具體計畫,但代理再次爭論計畫 執行已核准的計畫。僅在儲存庫偏離、缺少權限或不安全的外部狀態時停止
選擇了區域或地區特定的 API 變體而未檢查 在撰寫整合程式碼前列出所有區域或地區差異
在單一架構專案中引入第二種語言或執行環境 未經明確核准不得新增語言或執行環境
使用者說「判斷一下這個報錯」並進入了評估模式 「判斷一下」+ 錯誤/錯誤上下文 = 除錯,導向 /hunt。評估模式僅用於價值/存在判斷
使用者在專案審查後要求「沉澱到 Waza」 先區分可轉移的 Waza 能力與專案事實。不要將該專案的指令、路徑或發布規則匯入 Waza

輸出

已核准設計摘要:

  • 建構內容:這是什麼(1 段落)
  • 不建構內容:明確的非範圍清單
  • 方法:選擇的選項及理由
  • 關鍵決策:3-5 項,附理由
  • 未知事項:僅列出明確延後且有理由及明確負責人的項目。不是模糊的缺口。若未知事項阻礙了決策,在核准前先回頭處理。

在使用者核准設計後停止。僅在要求時才開始實作。

核准後

當計畫核准後,輸出以下指引:

計畫已核准。若要實作:請說「implement this plan」。實作完成後,執行 `/check` 進行審查,再合併或進行發布後續。

保持簡潔(最多 2-3 句話)。使用者決定何時開始實作。