AI 工具 14 min read ★ Featured

我把「截圖寫操作手冊」做成 Claude Code skill:screendoc 拆解(4 視角審查 + 一鍵重跑)

每次系統改版都要重截一遍操作手冊、還老是截圖跟說明對不上?我把這件苦差事做成 Claude Code skill:/screendoc。一句指令偵測前端框架、跑 Playwright 截圖、用 UI/UX + 系統分析 + 新手 + 開發者 4 個視角逐張比對「截圖 vs 說明 vs 原始碼」、不一致就局部重截迭代到全過,最後產一份對外可發表的離線 HTML 手冊。本文拆它在幹嘛、Phase 0–5 跑了什麼、為什麼要 4 視角不是過度設計,以及怎麼透過 yc-plugin 一鍵裝起來用。附我在一個無關的 React + Vite 專案上 round-trip 跑通的實測。

本文目錄 · 11

# 我把「截圖寫操作手冊」這件苦差事做成 Claude Code skill:screendoc 拆解

yc-plugin repo social preview

TL;DR

  • 我把「給前端專案截圖、寫操作手冊」這件每次改版都要重做一遍的苦差事,做成一個 Claude Code skill:/screendoc
  • 一句指令 /screendoc .,它會自己偵測你的前端框架、跑 Playwright 截圖、對每張圖寫敘事說明、再用 4 個審查視角(UI/UX、系統分析、新手、開發者)逐張比對「截圖 vs 說明 vs 原始碼」,不一致就局部重截、迭代到全過,最後吐一份對外可發表的 HTML 操作手冊
  • 它解決的核心痛點是手寫手冊的三個老問題:截圖跟當前 UI 對不上、說明文字跟截圖內容不一致、改版後整本要重截。
  • 已經包進我的 Claude Code plugin yc-plugin裝了 plugin 就自動有這個 skill,下方有完整安裝步驟。
  • 這篇講三件事:它在幹嘛、為什麼要這樣設計(4 視角 + 強制對齊不是過度設計)、你怎麼把它裝起來用。
  • 手寫操作手冊的三個老問題
  • screendoc 在幹嘛:一句話到一份 HTML
  • Phase 0 到 5:它到底跑了什麼
  • 為什麼要 4 個審查視角
  • 為什麼縮圖審查、發布內嵌兩種模式
  • 我真的在一個 React 專案上跑了一次
  • 怎麼裝、怎麼用
  • 跟其他做法比較
  • FAQ
  • 延伸資源
  • ---

    手寫操作手冊的三個老問題

    我教職訓局,也接案做內部系統。每次系統交付都要附一份操作手冊給不寫 code 的使用者看 —— 醫護人員、行政、業務。手冊長這樣:一張截圖配一段「點這裡、填這個、按送出」。

    聽起來很簡單,做過的人都知道有三個坑:

  • 截圖跟當前 UI 對不上。你三週前截的圖,按鈕從藍變綠、欄位多了一個、選單改了位置 —— 手冊還是舊的。使用者照著手冊找不到按鈕,回來罵你。

  • 說明文字跟截圖內容不一致。你寫「點右上角的『匯出』」,但截圖裡那顆按鈕其實寫「下載」,因為文案後來改了,你只改了截圖沒改文字(或反過來)。

  • 改版後整本要重截。UI 大改一次,30 張圖全部作廢,要重新登入、重新走流程、重新截、重新排版。一個下午沒了。
  • 這三個坑的共通點:手冊是「手工拼貼」的,截圖、文字、真實系統三者各走各的,沒有任何機制保證它們同步。

    我想要的是:手冊的每張圖都從真實渲染的頁面來、每句說明都對得上截圖裡實際存在的元素、改版後一句指令重跑。這就是 screendoc。

    ---

    screendoc 在幹嘛:一句話到一份 HTML

    最短的描述:

    /screendoc .

    . 是你的前端專案根目錄。下完這句,screendoc 一條龍跑完,產出一份 manual.html,丟給使用者或掛上內網就能看。

    它不是「幫你截圖的工具」那麼簡單。截圖只是第一步,真正的價值在後面的對齊與審查

    • 截圖:用 Playwright 開真實的 dev server、走頁面、截圖。不是你手動按 PrintScreen,是程式化地走過每個頁面、每個狀態。
    • 對齊:每張圖配一段敘事性說明(caption),而且強制要求 caption 講的元素真的出現在那張圖裡
    • 審查:4 個視角輪流看每一張圖 + 對應的 caption + 對應的原始碼,挑出「圖跟說明對不上」「說明跟程式行為對不上」的地方,標出來、局部重截、再審,迭代到全部通過。
    • 產出:通過審查後全部重跑一次,產出最終 HTML。
    換句話說,它把「保證截圖/文字/系統三者同步」這件事,從你的人腦記憶體,搬到一個可重複執行、有審查關卡的流程裡。

    ---

    Phase 0 到 5:它到底跑了什麼

    screendoc 內部分成 6 個階段,每階段都有明確產出物落檔,斷了可以續跑:

    Phase名稱做什麼
    0PRECHECK偵測專案類型:前端框架(React / Next / Vue / 其他)、dev server 怎麼啟、有沒有現成的 e2e 測試可以接
    1ANALYZE產出截圖清單(shotlist),每一張鎖定一個 DOM anchor,確保截到的是對的頁面、對的狀態
    2SCREENSHOT跑 Playwright spec 截圖,外加一次全頁面樹掃描(確認沒漏掉重要畫面)
    3CAPTION對每張圖寫敘事性說明,並產一份縮圖審查手冊(給後面審查用)
    4REVIEW LOOP4 視角並行審查 → 找問題 → 局部重截 → 再審,迭代到全數通過(預設上限 20 輪)
    5FULL REBUILD全部通過後清空重跑一次,產出最終 manual.html
    設計上有兩個刻意的選擇:

    Phase 1 鎖 anchor。截圖最容易出包的是「截到一半的 loading 畫面」或「截錯頁」。screendoc 在分析階段就為每張圖指定一個必須出現的 DOM 元素當錨點,Playwright 等到那個元素出現才截 —— 截到的保證是穩定狀態。

    Phase 4 是個迴圈不是一次性。審查發現問題不是丟給你「這裡有 12 個問題自己改」,而是自動局部重截、重寫 caption、再送審,直到通過或達上限。這個「死磕到對」的精神來自社群的 ralph-loop。

    ---

    為什麼要 4 個審查視角

    這是整個 skill 最不像「過度設計」的過度設計 —— 一開始我也覺得一個視角夠了,實際跑才發現不同視角抓到的問題完全不重疊:

    • UI/UX 視角:看視覺。這張圖構圖有沒有切到、重點元素在不在畫面裡、有沒有截到無關的彈窗。
    • 系統分析(SA)視角:看流程完整性。功能名稱對不對、頁面之間的跳轉邏輯有沒有斷、權限頁面有沒有漏。
    • 新手視角:看「看得懂嗎」。一個第一次用這系統的人,照著這段 caption 能不能找到按鈕、做完這一步知不知道下一步去哪。
    • 開發者視角:看真實性。這是最關鍵的一條 —— caption 說的功能、欄位、預設值,跟原始碼裡實際寫的對不對得上。它會去讀對應的 component / schema,揪出「手冊寫了一個 UI 上根本不存在的欄位」這種 schema 與 UI 不同步的問題。
    第 4 條(開發者視角讀原始碼)是手寫手冊永遠做不到的事 —— 人寫手冊不會回頭去翻 source 確認每個欄位真的存在。screendoc 會。
    4 個視角不是為了「看起來嚴謹」,是因為一個 LLM 一次戴一頂帽子看得比較準。同時要它「又看美感又看流程又看新手又看程式碼」,它會每個都看得淺。分開跑、各司其職,抓出來的問題才有深度。

    ---

    為什麼縮圖審查、發布內嵌兩種模式

    產 HTML 的時候有個現實問題:審查階段要讓 reviewer 看圖,但全尺寸 PNG base64 內嵌會讓 HTML 肥到讀不動。

    所以 screendoc 的 HTML 建置器有兩個模式:

    • 審查模式:圖縮成 800×500 的 WebP(q80)、走相對路徑引用。HTML 輕、reviewer(包括 AI reviewer 用 Read 讀)載得動、看得清。
    • 發布模式:圖以 base64 直接內嵌進 HTML。產出單一檔案、完全離線可看 —— 使用者拿到一個 .html 雙擊就開,不依賴任何外部圖檔、不怕圖檔搬家後失聯。
    這裡有個我踩過的坑值得記:審查模式的 HTML 用相對路徑 thumbnails/xxx.webp 引縮圖,這個相對路徑是相對 HTML 檔所在目錄的。HTML 如果輸出到別的地方,瀏覽器跟 reviewer 都會 404、圖全壞。所以審查 HTML 必須跟縮圖目錄輸出在同一層 —— 這條約定我寫死在 skill 裡了,免得每次重踩。

    ---

    我真的在一個 React 專案上跑了一次

    寫工具最怕「只在自己熟的專案上能跑」。screendoc 早期是為了我接的一個 NocoBase 系統寫的,所以我刻意找了一個完全無關的 React + Vite + Tailwind 純前端單頁站來驗證它在非原生環境跑不跑得通。

    結果(round-trip 驗證,不是看 log 綠燈):

    • 框架偵測:Phase 0 正確認出是 React + Vite,用對的 dev server 啟法。
    • 設計系統適配:screendoc 內建一組設計系統 adapter(generic / antd / mui / chakra / radix / mantine),靠環境變數選。這個站沒用 UI 框架,走 generic preset,shot() / waitReady() 這些 helper 一樣生效。
    • 兩種模式:審查模式產縮圖手冊、發布模式產 base64 單檔,都正確生成。
    • 瀏覽器渲染:最後我開瀏覽器點開產出的 manual,4 張縮圖 naturalWidth > 0零 broken image —— 這才算「人看得到的輸出」,不是 build 成功就喊好。
    驗證過程也順手抓出兩個真實的 gotcha(dev server 沒裝 @playwright/test 要隔離安裝、審查 HTML 路徑約定),都回寫進 skill 文件了。一個工具值不值得分享,標準就是「在我沒預期的環境也站得住」。

    ---

    怎麼裝、怎麼用

    screendoc 包在我的 Claude Code plugin yc-plugin 裡。Claude Code 的 plugin 支援內嵌 skill(auto-discovered),所以裝了 plugin,/screendoc 就自動可用,不用額外設定。

    安裝

    在 Claude Code 裡:

    /plugin marketplace add yanchen184/yc-plugin
    /plugin install yc-plugin

    裝完重啟 session,輸入 /screendoc 就會觸發。

    使用

    /screendoc .                          # 當前目錄就是前端專案根
    /screendoc /path/to/my-react-app      # 指定專案路徑
    /screendoc ./apps/web --code-mode=write   # 審查發現 UI bug 時允許改 source
    /screendoc . --max-iterations=30          # 放寬審查迭代上限(預設 20)
    參數預設說明
    <入口路徑>必填專案根目錄、或現成的 e2e/ 目錄
    --code-modereadread 只改 spec/caption 不動你的 source;write 審查發現 UI bug 可改 source
    --max-iterations204 視角審查 → 修 → 局部重截 的迴圈上限

    系統需求

    • Node.js + Playwright —— skill 會引導在隔離目錄裝 @playwright/test,不污染你的專案。
    • Python 3.10+ + Pillow —— 產縮圖手冊用(pip install pillow)。
    ---

    跟其他做法比較

    做法截圖來源圖文同步保證改版重做成本適合誰
    手動截圖 + Word/Notion人手按 PrintScreen無,全靠你記得高,整本重來一次性、不會再改的系統
    錄影 + 旁白螢幕錄影無,且不能 grep極高,要重錄重剪操作示範影片
    Storybook / 元件文件元件層截圖元件層對齊,但非「使用者流程」給開發者看的元件庫
    screendocPlaywright 跑真實頁面4 視角審查強制對齊圖/文/碼低,一句指令重跑要給終端使用者、會持續改版的系統
    不是說別的做法不好 —— 如果你的系統做完就凍結、永不改版,手動截一次最省事。screendoc 的價值在會持續改版、且要給不寫 code 的人看的系統,這時「一句指令重跑、且保證圖文碼同步」的複利才划算。

    ---

    FAQ

    (見頁面下方 FAQ 區塊)

    ---

    延伸資源

    author
    陳彥彤

    AI 工程師 · AI 顧問。Java 後端 8 年、AI 工程師 2 年。AI 內訓 · AI 導入顧問 · 前後端與雲端培訓。

    support

    覺得文章有用可以到 GitHub 給個 star,或是透過信箱聊聊 AI 內訓、AI 導入顧問或前後端 / 雲端培訓。

    related

    相關文章

    [工程實作] · 15min
    用 Claude Code 從零做一款遊戲:不是會 prompt,是會這三件工程紀律
    我用 Claude Code 從零做了一款 Splendor(璀璨寶石)網頁版 —— 規則引擎、React UI、單元測試、E2E、連 100 張卡牌插圖都生好,全程沒手寫幾行 code。但能跑得順的關鍵不是 prompt 寫得好,而是三件工程紀律:規則引擎跟 UI 徹底分離、用「不變量測試 + fuzzing」逼出 AI 看不到的暗 bug、E2E 走完整 round-trip 而不是繞過引擎。這篇拆解這套協作方法,附這個專案的真實程式碼。
    [AI 工具] · 22min
    ultracode vs ultrathink:不是想更久,是派 16 隻 agent
    ultracode 跟 ultrathink 名字像、做的事完全不同。ultrathink 是 prompt 關鍵字,只讓模型這一回合想更深(最高 31999 thinking token);ultracode 是 /effort 設定,把整個 session 切成 xhigh 推理 + 自動 dynamic workflow 編排,替每個任務派出一隊 agent(最多 16 並行 / 單次上限 1000)。附本機 Claude Code binary 實測字串為證。
    [工作流] · 21min
    Claude Code Hook 怎麼用?git push 後自動驗 GitHub Actions 部署(PostToolUse 實戰)
    每次 git push 完都要手動切到 GitHub Actions 頁面盯著部署跑完,綠了放心、紅了回來修——這件事重複到讓人煩。我用 Claude Code 的 PostToolUse hook 把它自動化:hook 攔到 git push 成功就注入一段任務指示,叫 Claude 排程約 70 秒後查 Actions 結果,全綠回報、紅了抓 log 修。關鍵是一次性驗證(ScheduleWakeup 而非無限輪詢),而且改版後不綁特定 workflow 名、用 commit SHA 對齊,任何有 push-triggered Actions 的 repo 都通用。本文把實作三段、additionalContext 機制、從寫死 deploy.yml 到通用的兩刀改法,以及踩到的欄位名坑(tool_response 才是對的)全寫下來。