Community程式設計與開發github.com

引導式逐步解說

在混亂的技術情境(如損毀的設定、git 或分支混亂、失敗的指令、誤解的工具、越修越糟的修復)中引導使用者,僅進行唯讀的逐步解說。透過不改變任何東西的檢查來調查,解釋實際情況,並提供編號且可複製貼上的步驟讓使用者自行執行。當使用者要求引導而非代勞時使用,例如「不要編輯任何東西」、「只要告訴我」。

引導式逐步解說 是什麼?

這個技能是為需要指導而非直接代勞的開發者設計的唯讀疑難排解工具。當使用者遇到技術問題(如 git 分支混亂、建置失敗或設定錯誤)時,代理人會執行一系列不改變系統狀態的唯讀檢查(例如查閱版本、git 狀態、設定檔),以精確定位問題的根源。代理人會提供一份包含已驗證事實的現況摘要,接著提供一系列編號的步驟,這些步驟包含可直接複製貼上的指令、預期結果,以及常見陷阱的提醒。這個技能支援 Claude Code 和其他提供 SKILL.md 檔案的 AI 代理平台。它強調不修改任何檔案或系統狀態,所有修復動作都保留給使用者親自執行。回覆的結構包含三個部分:以具體證據說明使用者目前的處境、解釋問題的真實原因,以及一份精簡但完整的步驟清單。每個步驟都有明確的目標、指令和驗證方式。代理人會根據使用者的作業系統和 shell(macOS 使用 bash,Windows 使用 PowerShell)來調整指令語法,並優先使用安全的指令形式(如 `git restore <指定檔案>` 而非 `git checkout .`)來避免意外。對於無法直接驗證的資訊,代理人會誠實說明,並使用「通常」或「可能」等詞彙。這個技能非常適合用於教學、逐步除錯,或當使用者對自動化修改缺乏信任時使用。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/FarsinRex/guided-walkthrough/tree/HEAD/skills/guided-walkthrough

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

引導式逐步解說 是做什麼的?

使用者希望在你引導下自行修復問題。他們通常有點迷失。某個東西壞了,他們根據合理但錯誤的猜測嘗試了修復,現在他們不確定實際情況。以下三點最有幫助:

  • 清楚了解他們目前的狀況
  • 事情出錯的真實原因
  • 一系列簡短的步驟,讓他們無需自行查詢語法即可遵循

基本規則

不要改變任何東西。 使用者要求自己動手,通常是為了學習,有時是因為他們還不信任自動化修改。請完全尊重這一點:

  • 不編輯檔案
  • 不執行會改變狀態的 git 指令(commit, restore, checkout, switch, stash, reset, pull, push)
  • 不安裝套件
  • 不啟動或停止容器或服務
  • 不寫入資料庫

當你找到修復方法時,請將其放入供他們執行的步驟中。

先觀察,再建議。 唯讀檢查才能讓建議針對他們的機器,而非泛泛之談。請親自執行這些檢查,而非要求使用者貼出輸出。好的檢查包括:

  • 版本和 PATH(node -v, Get-Command npm, where python)
  • git status, git diff, git log, git branch -a -vv, git stash list, git check-ignore -v <path>
  • 讀取設定檔、腳本和 README
  • 資料夾或檔案是否存在
  • docker ps
  • 訪問本機健康檢查 URL

git fetch 也沒問題:它只會重新整理遠端倉庫的檢視,不會影響他們的分支或檔案。開頭先告訴使用者你只會執行唯讀檢查,這樣工具呼叫才不會嚇到他們。

有些檢查會建立東西:建置映像檔、安裝套件、執行會寫入檔案的測試。如果你需要這些檢查來確認某件事,請將其設為一個步驟給使用者,並說明成功時應該看到什麼。

說明你無法驗證的部分。 有些事情超出範圍,例如先前終端機工作階段的錯誤訊息。請使用「通常」或「可能」來提供合理的解釋,並用一句話提及另一個可能性。

當修復方法取決於目標時,詢問目標。 如果他們嘗試的動作只對你無法理解的目標有意義,請先提供無論如何都安全的步驟,例如撤銷損害。然後詢問他們原本想達成什麼,而不是自行猜測。

回覆的格式

  1. 他們目前的處境。 以一兩句已驗證的事實開頭。如果情況良好,請直接表明(「你的設定沒問題:Node v24 和 npm 11 已安裝並在 PATH 中」)。具體的證據比一句「別擔心」更能安撫人心。
  2. 編號步驟,每個步驟以 ## 步驟 N:<用白話說明的目標> 為標題,包含:
    • 一行說明為什麼這個步驟很重要
    • 針對他們 shell 的指令,放在程式碼區塊中
    • 他們之後應該看到的結果,以便知道一切正常
    • 任何要避免的陷阱,直接寫在該處
  3. 合理排列步驟順序:
    • 先撤銷損害
    • 然後解釋事情實際上的運作方式
    • 接著是他們應遵循的新流程
    • 最後是選用的清理步驟,標註「(選用)」
  4. 即將發生的問題。 如果你的檢查發現了會導致下一個問題的事情,請將其放在相關的步驟中。例如:一個需要為新分支重設的資料庫,或一個會觸發損壞路徑的腳本。

以最後一個步驟結束。重點回顧或列出你檢查過的每一項沒有幫助。當有幫助時,一句結尾語即可,例如「如果任何步驟顯示不同的結果,請貼在這裡。」

撰寫指令

  • 符合他們的 shell 和作業系統。 在 Windows 上,VS Code 終端機通常是 PowerShell。使用反斜線路徑和 venv\Scripts\activate。將指令放在不同的行,而不是用 && 串聯,因為 Windows PowerShell 5.1 不接受這種寫法。在 macOS 和 Linux 上,請為 bash 或 zsh 撰寫。
  • 以 cd <絕對路徑> 開頭,當資料夾很重要時。人們經常有數個終端機開啟在不同資料夾中。
  • 當需要同時執行數個終端機時(資料庫、API、前端),為每個終端機使用一個程式碼區塊,並加上註解標籤。
  • 偏好指令的安全形式,並用幾個字說明原因:
    • 使用 git restore <指定檔案> 而非 git checkout .
    • 使用 git add <指定檔案> 而非 git add .
    • 當 lockfile 不應變動時,使用 npm ci 而非 npm install
  • 在步驟內清楚標示破壞性指令(「這會刪除資料庫磁碟區及其中的所有內容」)。

解釋

  • 使用白話。在術語首次出現時簡短定義(「追蹤分支:你的本地分支會記住它從哪個 GitHub 分支拉取和推送」)。
  • 透過解釋實際發生的事情來糾正誤解,而不是指責他們錯了。肯定他們推理中合理的部分(「執行 npm install 是正確的步驟」)。
  • 每個解釋保持簡短,使用幾個要點即可。他們是來找步驟的。

範例(簡化版)

範例 1:npm install 和 Dockerfile 搞混

使用者:「每當我輸入 npm run dev 時都會出現錯誤,於是我執行了 npm install,我以為這會一直重複在我的電腦上安裝 node modules。所以我將 node modules 加入 Dockerfile 讓它可丟棄,但我把它打在了 server/Dockerfile 中,而它並不需要。不要編輯任何東西,只要引導我」

執行的唯讀檢查:

  • node -v, npm -v, Get-Command npm
  • Test-Path node_modules\.bin\vite.cmd,node_modules 的大小
  • package.json 中的腳本
  • git status, git check-ignore -v node_modules, git stash list

回覆:

我沒有改變任何東西。這些是唯讀檢查,下面的步驟供你執行。

你的設定沒問題: Node v24.21.0 和 npm 11.19.0 已安裝並在 PATH 中。專案的 node_modules 資料夾存在(181 MB),而且 Git 已經忽略它,所以它永遠不會被推送。

步驟 1:復原三個 Docker 檔案修改

cd C:\Projects\budget-app
git restore server/Dockerfile server/docker-compose.yml server/.dockerignore
git status

你應該會看到 nothing to commit, working tree clean。你不需要推送任何東西,因為這些檔案會回到與 GitHub 上完全相同的狀態。

步驟 2:npm install 實際上的作用

  • 它只影響這個專案。 套件會放入 budget-app\node_modules,這是一個資料夾,而不是散落在你的電腦各處。
  • 為什麼你一開始看到錯誤: 剛 clone 之後,node_modules 還不存在,所以 npm run dev 會失敗。它通常會顯示 'vite' is not recognized…。執行一次 npm install 可以解決這個問題,而且這是正確的步驟。

步驟 3:何時安裝,以及使用哪個指令

……只在 package.json 或 package-lock.json 變動時。使用 npm ci,它不會修改 lockfile……

步驟 4:你的日常啟動(三個終端機)

……資料庫、API 和前端,各一個程式碼區塊……

步驟 5(選用):清理舊的 stash

……

這個回覆有效的原因:

  • 已驗證的事實優先
  • 在不責怪的前提下澄清了誤解
  • 在引入任何新內容之前先撤銷了損害
  • 每個指令都可以直接貼上,並有預期結果
  • 選用步驟放在最後

範例 2:一個突然什麼都不知道的 RAG 聊天機器人

使用者:「我的 RAG 聊天機器人(langchain + chroma)昨天還能運作,但今天它對每個問題都回答『我不知道』。我猜是 OpenAI embeddings 有問題,於是我將 ingest.py 切換成一個免費的 huggingface 模型並重新執行,現在 ingest 因某個維度錯誤而崩潰。我會自己來,只要告訴我該怎麼做」

執行的唯讀檢查:

  • git status, git diff ingest.py
  • ingest.py 和 app\chat.py 中的 Chroma 設定:persist_directory、集合名稱、嵌入模型
  • Get-ChildItem -Recurse -Directory -Filter chroma_db,以及每個資料夾的大小和最後寫入時間
  • git check-ignore -v chroma_db app\chroma_db

回覆:

我沒有改變任何東西。這些是唯讀檢查,下面的步驟供你執行。

你的文件很安全: C:\Projects\rag-bot\chroma_db 是 48 MB,最後寫入時間是昨天你初次 ingest 的時候。還有一個幾乎是空的 app\chroma_db,建立於今早 09:12。第二個資料夾就是聊天機器人「什麼都不知道」的原因。

步驟 1:復原 embedding 變更

cd C:\Projects\rag-bot
git restore ingest.py
git status

ingest.py 應該不再被列為已修改。git status 仍然會顯示 app/chroma_db/ 為未追蹤:留到步驟 5 再處理,不要執行 git add .,否則會提交它。

步驟 2:為什麼聊天機器人突然什麼都不知道

  • ./chroma_db 是相對於你啟動 Python 的資料夾,而不是相對於腳本。 昨天你可能是從專案資料夾執行 python app\chat.py。今天你從 app 內部啟動,因此 Chroma 在那裡找不到資料庫,並悄悄地建立了一個空的資料庫。檢索器沒有回傳任何內容,所以模型沒有上下文可以回答。
  • 維度錯誤是另一個問題,由切換模型造成。 你的集合是用 text-embedding-3-small 建立的,它會將每個區塊轉換成 1536 個數字。all-MiniLM-L6-v2 則產生 384 個數字,而 Chroma 不會在同一個集合中混合兩者。錯誤訊息通常會列出兩個數字,類似 expecting embedding with dimension of 1536, got 384。懷疑 embeddings 是合理的;只是它們不是原因。

步驟 3:從專案資料夾啟動聊天機器人

……cd 到專案根目錄,啟動 .venv,執行 python app\chat.py,答案應該會再次引用你的文件。若要使其永久生效,請在兩個檔案中都使用 Path(__file__) 來建構路徑……

步驟 4(選用):安全地切換到免費模型

……ingest 到一個新資料夾,例如 chroma_db_minilm,並在 ingest.py 和 chat.py 中使用相同的模型……

步驟 5(選用):移除空的資料庫

……Remove-Item -Recurse app\chroma_db,這會刪除今早建立的空資料夾……

這個回覆有效的原因:

  • 檢查找到了真正的原因,而非處理症狀
  • 原始問題和修復造成的問題被分開解釋
  • 使用者的直覺獲得肯定,相對路徑陷阱被解釋而非責怪
  • 關於 git add . 的警告放在相關的步驟中

相關技能