project-docs
Use when an existing software project needs a documentation audit, missing technical documents, an end-user or administrator manual, or an updated handoff based on its actual code and operations. Scan the project, assess applicable deliverables, and maintain linked Markdown docum
Install
npx skills add https://github.com/KerberosClaw/kc_ai_skills/tree/main/project-docs
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install kerberosclaw-kc-ai-skills@llmmart
git clone https://github.com/KerberosClaw/kc_ai_skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole kerberosclaw/kc_ai_skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
project-docs — 把現有專案整理成接得下去的文件
English summary: Audit existing code and maintain linked Markdown/Mermaid documentation. Use Traditional Chinese prose by default and add an English summary for GitHub publication, while preserving explicitly agreed bilingual README editions.
從程式、設定、測試與既有決策查證現況,補齊讀者需要的資訊。文件完整度看「關鍵問題能否找到有證據的答案」,不看產出幾份檔案。
兩種讀者,兩套寫法,別混在一份裡。
| 讀者 | 要回答什麼 | 交付物 |
|---|---|---|
| 下一位維護者 | 架構、契約、資料模型、部署、如何改 | 技術文件,圖用 Mermaid |
| 終端使用者與管理者 | 要先具備什麼、怎麼操作、按了會怎樣、卡住怎麼辦 | 操作手冊,圖用實機截圖 |
文件適用性目錄「快速開始、日常任務」那列就是後者,適用條件是「有操作使用者」。判斷適用性時不要因為預設在寫技術文件就跳過它。
🔴 第三問「按了會怎樣」是手冊唯一可被驗證的部分。 每個會造成後果的操作都附一欄「應該看到什麼」——那一欄是驗收點,不是敘述。沒有它,手冊只能被「讀起來合理嗎」檢查,沒有人能判斷它說的是不是真的。寫手冊的完整紀律見操作手冊寫法。
1. 確認範圍,承接已有授權
讀目標 repo 的規則、入口文件、現有模板與版本狀態;保留他人的 dirty 檔。先確認本次是唯讀盤點還是補寫/更新,以及內部或公開讀者。使用者已說清楚就直接做,不重新問批准問題,也不擅自把無人值守任務改成訪談。
- 只要求盤點:交付證據、缺口、建議更新位置,不直接改專案文件。
- 已授權補齊:先盤點,再依結果更新;不需要把每個例行文件選擇重新交給使用者。
- 從 repo 可查的事自己查;真正缺少的需求、支援承諾或設計理由標待決。只有答案會影響必要工作時才問,其他部分繼續。
- 內部文件保留有用的內部名稱與部署脈絡,憑證只記取得/安全保存方式。公開輸出另做去敏;掃整個專案不等於把使用者資料、秘密、原始對話或 vendor 全部抄入文件。
2. 建立全專案覆蓋與證據地圖
先用檔案清單辨認各模組和責任,再深入入口、邊界與相依關係。大型 repo 分區,清楚記已檢查/待檢查/排除及理由;不能只看 README 與一個模組就宣稱掃完。
清單要包含隱藏的 CI/設定檔,例如用 rg --files --hidden -g '!.git' 並搭配 git ls-files -z;被 ignore 的 runtime/生成物另按需要查核,不為了盤點就讀出秘密或原始使用者資料。
至少盤點:應用/服務/CLI/批次入口、跨模組介面、資料存放與 migration、設定與外部依賴、權限/敏感資料邊界、建置/部署/排程、測試與 CI、現行與歷史文件。沒有的項目記不適用及理由,未知的不要當不存在。
每個發現留下可追溯的 file/symbol/schema/test 或 command evidence,並記來源 commit/檢查日期。檔名只能指路,不能證明內容正確:比對 README 指令與 parser、CI 路徑是否存在、schema 真正約束、部署腳本和實際驗證範圍。
寫手冊時這條有兩個特有的變形,兩個都會寫出永遠不會發生的敘述:程式裡有一段 UI 文案,不等於使用者看得到它(那個分支可能走不到);舊版文件的既有句子不能沿用(既有專案裡假敘述密度最高的地方,偏偏看起來最可信)。兩者都只能逐句查證,例子見操作手冊寫法。
若要宣稱「正在部署/現在正常」,需相應 live evidence;否則寫「依某日期部署紀錄」。使用只讀入口不一定零寫入:先看 helper 是否建表、對帳或變更狀態。文件任務不自動觸發服務、正式模型、發送訊息或資料遷移。
3. 裁剪文件並決定更新位置
讀 文件適用性目錄,依專案形態與組織模板建立精簡矩陣:
| 資訊/讀者問題 | 狀態 | 證據/理由 | 更新位置與驗收 |
|---|---|---|---|
| 依專案填寫 | 可用/過時/缺少/不適用/待確認 | 具體來源 | 優先既有現行頁 |
不用把每列都變成獨立檔案。CLI 沒有 DB 就不硬畫 ER;沒有 HTTP 就寫 CLI/hook/事件契約,不硬產 OpenAPI。缺 SLA 寫未訂定;觀察到的程式行為不能倒寫成當年批准需求,找不到決策理由就記未找到,不能補造 ADR。
使用既有 docs/wiki/組織模板,保留正式章節、術語及權責;不強制把產品 repo 改成另一種知識庫型態。組織模板要求的欄位即使未知也保留並說明缺口。技術文件可引用需求原件,不取代 PRD/簽核紀錄。
3.1 承接實測素材(有的話)
寫操作手冊最缺的是「使用者實際會卡在哪」,那從程式碼讀不出來。專案若剛跑過一輪實機 QA,素材可以直接接:
| 素材 | 接到手冊哪一節 |
|---|---|
| 系統隱含要求但沒寫出來的前提 | 「使用前提」 |
| 行為正確但使用者看不懂的卡關點 | 「常見問題」 |
| 成功路徑的逐步截圖 | 操作步驟 |
| 缺陷清單 | 不進手冊,那是工程待辦 |
🔴 接素材有一條紀律:QA 挖到的是「系統實際這樣做」,不等於「本來就該這樣」。
標成待判定、還沒有人拍板的項目,不可以直接寫進手冊當成正式規格。寫進去就等於替它蓋章,之後沒人會再質疑它合不合理。沒拍板的先留在待決清單,或在手冊裡明確標成「目前行為,尚待確認」。
沒有實測素材照樣寫得出手冊,只是每條使用前提都要自己回去查證,並標明證據狀態。
現況有缺陷時,手冊寫什麼
照現況寫等於教使用者繞過缺陷,並把缺陷凍結成正式流程;寫「該有的樣子」會讓手冊與現況產生落差,但那個落差可以被發現。預設選後者。
例:已知「上傳完成頁沒有挑附圖的入口」。
- ❌ 「按完成回首頁,從最近紀錄點挑附圖」——把缺陷寫成正常流程。
- ✅ 「收完帶圖的文件後,應該可以在當下決定要不要附圖」。
⚠️ 手冊裡不標任何已知問題。 標了等於把答案先洩給後面走查的人,他會去複現而不是自己發現。缺陷留在工程待辦(見上表最後一列),不進手冊。
4. 寫成單一現況來源
產出以 Markdown 為準;架構、流程、時序、狀態、ER 等圖表以 mermaid fenced code blocks 呈現,對照表用 Markdown table。 圖是可維護的原始碼;渲染圖放既有產物位置或暫存,不拿截圖取代 Mermaid 來源。若使用者明確指定其他格式,先遵循該要求並保留可追溯來源。
⚠️ 上句「不拿截圖取代 Mermaid 來源」只管架構、流程、時序、狀態、ER 這類結構圖 —— 它們的正本必須是可維護的原始碼。操作手冊的實機截圖不在此限:使用者要對著畫面找按鈕,Mermaid 畫不出那個。手冊截圖要標註它證明了什麼、取自哪個版本與環境;版本改了畫面就過期,重截並更新標註,不要留著舊圖。
技術文件預設使用正體中文(臺灣用語);要發布到 GitHub 的文件,開頭放簡短英文摘要,正文用正體中文。 私有文件也沿用中文正文,不因去敏/OSS 匯出而改成全英文。已約定的雙語 README 保留獨立英文版與中文版,內容同步並互連;英文版不套中文正文規則。程式碼、指令、API/schema 識別字與授權原文保留原樣。使用者或組織明確指定其他語系時才依該要求;既有檔案碰巧是英文不構成例外。這是本 skill 的預設交付慣例,驗收時核對本次產出,不藉此翻譯未授權的歷史檔案。
依實作與風險深度補內容,而非套固定長度。特別注意:
- 跨程序/非同步:觸發、完成邊界、持久狀態、重試/去重、取消、競態和未知結果。區分寫入成功、外部送達、使用者驗收與備份成功。
- 資料:欄位、型別、唯一鍵、FK、索引、資料版本/migration、保留/刪除。ER 的 DB 外鍵與應用層邏輯關係分開;不要把名稱相似畫成強制約束。
- 介面:輸入/輸出、必要與選用欄位、預設值、錯誤/exit code、重試語意、相容性。多階段 CLI exit 0 是否仍有部分失敗要查證。
- 維運:前置條件、健康判讀、備份、還原、升級、退回/停用,以及操作的資料影響。沒有恢復工具或沒演練過就直說,不能編造一鍵命令。
- 證據:已實作、已離線測試、實際部署紀錄、真人驗收、提案/待決分開。歷史原件保留,用現行連結說明被哪份後續文件取代。
從主要入口連到索引或相關文件,各頁有意義地交叉引用依賴、契約、程式、測試和驗證;讀者能循連結找答案,不只列一長串檔名。預設用可在 GitHub 顯示的相對 Markdown links;已有 wiki link 慣例時尊重其解析方式。移動檔案要修入站連結和 anchors。
5. 驗證並交接
讀 驗證方法,按變更的風險執行。最少核對:正文語系與 GitHub 文件的英文摘要、連結/anchors 與入口可達性、Mermaid 真正渲染、關鍵命令/schema 對照、歷史與現況一致、缺口與證據範圍。測試結果要有命令、環境、時間、來源版本與實際結果;未執行或 skip 不填通過。
操作手冊另有一道交付前關卡:一致性走查。 把環境清回全新安裝,找一個沒有脈絡的人或 agent,只給網址、帳號與手冊,不給缺陷清單、不准看程式,請他照手冊走一遍;做不到的地方就是差異。差異必須分三類——既有缺陷確認還在/新缺陷/手冊自己寫錯——否則會把自己寫錯的當成產品缺陷去報。做法見操作手冊寫法。
🔴 走查不可以由寫手冊的這個 session 自己做。 它知道手冊想表達什麼,會自動照腦中的意思去操作,等於自己驗自己。抓圖可以自己來,走查要換人。
發現程式/CI 問題時記獨立工程待辦、影響與證據;除非使用者同時授權,文件工作不修程式或改服務。舊 CI 失敗與文件檢查成功分開回報。只改低風險文字不用重跑所有昂貴測試;新的契約問題或失敗才擴大驗證。
最後留下:更新哪些現行頁、覆蓋哪些模組、哪些沒看/沒驗、仍缺什麼、由哪個入口接續,以及何種變更需要更新文件。再次執行先比較來源版本與現行頁,增量修訂;不要重建第二套 docs 或為同一次證據再生一份「最新版」。
分流與邊界
需要新功能設計走 spec,需求不明確才走 grill;要查 bug 根因走 diagnose;明確要求公開發布整備可接 prep-repo。可用 workflow-router 選擇,但缺少其他 skill 也能完成本文的文件任務,不以安裝它們作前置條件。
本 skill 不自行 commit/push/部署/發布,也不決定敏感資料公開;依該次使用者的既有授權和 repo 流程執行。不要把只補文件變成重構、稽核認證或一整套新專案。
本 skill 不執行測試、不做實機 QA。 寫操作手冊時若發現「使用者到底會卡在哪」只有實跑才知道,先跑一輪實機 QA 再回來接素材(見 §3.1),不要憑程式碼想像使用者的體驗。
例外:寫操作手冊時可以驅動瀏覽器抓實機截圖。 但這是動真的系統,開始前一定要先跟使用者講清楚並得到同意,至少講三件事:
- 要連哪一套環境。 同一個產品常有多套站(測試/示範/正式),連錯會動到別人正在用的那套。
- 會不會寫入。 空環境截不出有用的圖,通常得先鋪代表性資料、清掉先前的測試殘骸——那些都是寫入。
- 畫面上可能有真實資料。 客戶名、人名、實際文件內容會連同截圖一起留在文件裡,之後很難收回。
使用者沒有明確同意就不要開瀏覽器。抓圖以外的實機操作(跑流程驗功能、一致性走查)不在這個例外裡。
Files (kc_ai_skills)
-
agents
-
openai.yaml 238 B
interface: display_name: "Project Docs" short_description: "Audit and maintain linked project documentation" default_prompt: "Use $project-docs to inspect this project and update its technical documentation from code and evidence."
-
-
references
-
deliverables.md 5.5 KB
# 文件適用性目錄 回 [project-docs](../SKILL.md)。在決定要補哪些資訊時讀本頁;每列是讀者問題,不是必須新增的檔名。組織/契約要求優先,同一頁可以回答多列。 | 資訊類型 | 何時適用 | 最少回答/查證來源 | |---|---|---| | 概觀、術語、文件索引 | 所有需交接專案 | 系統做什麼、不做什麼、誰讀哪頁、版本與入口;README/現行設計 | | 需求與驗收追溯 | 有使用者/交付行為 | 已批准需求、實作、測試如何對應;沒有批准原件時只列觀察行為與待確認 | | 架構、外部與信任邊界 | 多元件或有外部依賴 | 元件責任、呼叫/資料方向、執行與部署拓樸;modules/entrypoints/deploy config | | 流程、時序、狀態圖 | 非同步、跨程序、多步驟工作 | 觸發、完成、超時、重試、取消、並行;handlers/transactions/故障測試 | | 資料字典、ER、演進 | DB 或持久化檔案 | schema、key/index/FK、JSON/file formats、migration/回填、保留與刪除;沒有關聯 DB 可只寫檔案模型 | | 介面契約 | API、CLI、SDK、事件、hook、檔案交換 | 輸入輸出、預設、錯誤、副作用、身份、冪等與版本;parser/routes/schema/adapter | | 環境、設定、相容性 | 需安裝或執行 | 支援平台/runtime、依賴版本、設定來源及優先序、憑證取得與輪替入口;lockfile/launcher | | 品質屬性與容量 | 有品質目標或操作限制 | 已訂目標、量測方式、限制;實測延遲不是 SLA、沒有指標就列待決 | | 快速開始、日常任務 | 有操作使用者 | 最小成功路徑、預期結果、常見錯誤;以實際入口驗證,不執行正式副作用 | | 操作手冊(使用者/管理者) | 非工程讀者要自己完成任務 | **動手前要先具備什麼**(權限、前置資料、誰先做過什麼)、逐步操作與畫面、卡住時怎麼判斷與求助、哪些動作不可逆;前提必須查證,不能從程式行為倒推成「本來就該這樣」 | | 開發、建置、測試 | 有維護者 | 依賴、命令、fixtures、CI、擴充點;檢查可執行檔/測試路徑存在 | | 驗證/交接證據 | 所有補文件任務 | 版本、環境、命令、結果、測試層級、未驗項目;記錄不能冒充簽核 | | 維運、監控、故障恢復 | 服務、排程或重要持久資料 | health/告警、值班入口、備份還原、停啟、解除安裝;未演練的恢復標待驗 | | 安全與隱私設計 | 憑證、外部輸入或個人/機敏資料 | 身份/授權、資料去向、工具界線、留存、撤回與剩餘風險;不把技術檢查冒充全面合規 | | 升級、遷移與退版 | 已有使用者與資料 | breaking change、版本前置條件、步驟、前後核對、不能回退的資料;migration/相容測試 | | 發布說明與交付清單 | 某版本將交付 | 來源 revision、產物/雜湊、範圍、已知問題、安裝升級與驗收狀態;文件化不等於批准發布 | | 依賴、授權、來源 | 使用第三方元件 | lockfile/授權/來源版本;需要時附正式 SBOM/provenance,不能把 lockfile 改名當完整 SBOM | | 維護/支援/安全回報 | 團隊交接或 OSS | 維護責任、回報入口、支援版本/淘汰流程;從組織現有紀錄查,不能自己承諾 SLA 或杜撰聯絡人 | | 技術債/未知事項 | 發現不一致或能力缺口 | 影響、來源、是否阻擋文件/交付、可執行下一步;分開追程式修復 | | 領域特殊文件 | 由專案/契約觸發 | 前端可及性、SDK 版本矩陣、資料 lineage、ML 評估/資料授權、硬體接線、法規文件;確認適用性,別只因有類似字眼就整套套用 | ## 某次 release 要凍結什麼 選擇與該交付物相關的資訊:來源 revision/產物識別、變更與限制、相容性、安裝/升級/退回、實際測試與未驗項目、第三方來源/授權、已有批准紀錄、維護入口。這些可在一份 release handoff 中連回持續維護的技術文件,不複製整套手冊。 沒有 release 時,不製造空白 release notes、簽章、認證或虛構批准者。若只有 source 交付就如實說明;有正式 artifact 才記實際 artifact 雜湊。 ## 方法來源 此目錄綜合下列第一手框架作裁剪參考,不宣稱等同標準符合性清單,亦不複製完整模板或付費標準全文: - [ISO/IEC/IEEE 15289:2019 公開摘要](https://www.iso.org/standard/74909.html):生命週期文件資訊可組合/裁剪,這裡只引用公開摘要。 - [arc42 overview](https://arc42.org/overview/):架構、限制、執行、部署與風險的檢視面向。 - [Diátaxis](https://diataxis.fr/start-here/):使用任務、教學、參考與原理解說的讀者需求。 - [Google SRE launch checklist](https://sre.google/sre-book/launch-checklist/):上線/維運與恢復問題,按專案規模裁剪。 - [NIST SSDF 1.1](https://csrc.nist.gov/pubs/sp/800/218/final):安全準則、證據、元件來源與安全設定資訊;不推定適用法規或認證。 - [SLSA v1.2 provenance](https://slsa.dev/spec/v1.2/provenance):產物與來源/建置的追溯。 - [GitHub community profiles](https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/about-community-profiles-for-public-repositories):OSS 使用者/貢獻者入口。 使用特定標準版本或政策作合規聲明前,重新核對官方現行要求與適用範圍;上述方法來源本身不構成合規證明。 -
manual.md 6.4 KB
# 操作手冊寫法 > **English summary:** Write end-user and administrator manuals so they double as acceptance criteria: every consequential step states what the reader should see. Copy on-screen names verbatim, order prerequisites by walking them, and verify the finished manual with a context-free walkthrough. 回 [project-docs](../SKILL.md)。**只有在寫給終端使用者與管理者的操作手冊時讀本頁**;技術文件不適用。 ## 骨架:每一頁回答四個問題 | # | 問題 | 寫在哪 | |---|---|---| | 1 | 這是幹嘛的 | 章節開頭第一段 | | 2 | 用之前要先有什麼 | 「用之前要先有」小節。**最容易漏,而全新環境必定沒有** | | 3 | 按了會怎樣 | 操作步驟的「應該看到什麼」欄 | | 4 | 失敗了怎麼辦 | 章末「不順利的時候」 | 第 3 問用兩欄表寫,一欄「你做什麼」、一欄「應該看到什麼」: | 你做什麼 | 應該看到什麼 | |---|---| | 只填標籤就送出 | 擋下並說明分組的代碼與顯示名要填 | | 填了標籤與分組、但不選來源 | 擋下並說明來源必填 | 三條寫法紀律: - **寫到可以判斷真假**。「會有提示」不算,「擋下並說明來源必填」才算。 - **被擋下的情況也要寫**,那是使用者最需要、也最少被記載的部分。 - **「什麼都沒發生」也要寫**。按了沒反應是最難自救的狀況,手冊要寫出該去哪裡確認。 ## 名稱一律抄畫面上的字 使用者在畫面看到一個名字,去手冊找另一個名字,就找不到。導覽寫「使用者管理」而手冊叫「帳號管理」,那一章等於不存在。 - 章名、欄位名、按鈕名照抄,**不要替它取更好的名字**。 - **畫面自己前後不一致時,兩個名字都寫進同一句**。例:同一個狀態,清單的徽章寫「啟用」、篩選下拉寫「使用中」——寫成「狀態欄是綠色的『啟用』徽章(狀態篩選那個下拉把它叫『使用中』,是同一件事)」,兩種找法都成立。 - 手冊開頭放一張**導覽名稱 ↔ 章節對照表**,順便當覆蓋率檢查:導覽上有、表裡沒有的,就是漏寫的一章。 ## 前置條件章節:有序,而且要走過 **全新安裝那一章通常是整份手冊最有價值的一章**,因為缺東西多半不會報錯,只是某些功能靜靜地做不下去,而使用者不會知道要去補什麼。 - 寫成**有序清單**,每一步附「不做的後果」,不要寫成無序的「需求清單」。 - 走完附一組**驗收題**(開哪一頁、應該看到什麼),讓人能自己判斷「可以開始用了」。 - 🔴 **順序必須實際走一遍,不能用推的。** 真實案例:把「建知識庫」排在「建群組」前面,但建庫時一定要勾授權群組——照那個順序做,第一步就卡住。這種相依性用讀程式碼看不出來。 ## 兩個會寫出假敘述的來源 兩者都會產生「永遠不會發生」的敘述,而且寫的當下都覺得有根據。 **(a)把走不到的分支當成行為。** 前端有一段「這個庫還沒接上檢索系統」的提示,於是寫進手冊說選到未連上的庫會看到它。實際上那個下拉在送進元件之前已先過濾掉未連上的庫,**提示永遠不會出現**。 > 判準:**程式裡有一段 UI 文案,不等於使用者看得到它。** 要確認的是「什麼資料會流到這個元件」,不是「這個元件寫了什麼」。 **(b)沿用舊版文件未查證的句子。** 舊手冊寫「零授權的庫,清單會標『沒有任何群組可讀這個庫』」——那句話確實存在,但在另一個視窗裡,清單那欄只顯示「—」。 > 既有專案一定有舊文件,而**舊文件是假敘述密度最高的地方,偏偏看起來最可信**。改版時把每一句當成待查證,不要因為它已經在那裡就留著。事前點名的錯誤只是已經有人發現的那幾處;沒人發現的要靠走查挖。 ## 抓實機截圖 動手前先取得使用者同意,要講哪三件事見 [skill 的分流與邊界](../SKILL.md#分流與邊界)。同意之後: - **先鋪代表性資料再拍。** 空清單、零筆紀錄的截圖沒有價值,讀者看不出這一頁正常長什麼樣。 - **拍之前清掉測試殘骸**,否則整頁都是「測試項目 001」,交出去很難看。 - **對話框用元素截圖,不要整頁截**,否則底部的錯誤訊息會被切掉——而錯誤訊息常是那張圖唯一要證明的東西。 - **視窗高度調到貼近內容**,不然截圖一半是空白。 - **圖檔名加前綴**(例 `am2-`)避免多份文件共用圖片目錄時撞檔;路徑寫**最終位置**,不是暫存位置。 - 🔴 **截圖可能跟內文打架。** 依「現況有缺陷時寫該有的」寫了理想行為,而畫面是壞的,那張圖就不能放在那句話旁邊;改放在描述版面規則的段落,圖說只講版面,不講那個行為。 ## 交付前的一致性走查 與 [驗證方法](verification.md#接手者測試) 的「接手者測試」**不是同一件事**:那個驗的是技術文件**找不找得到答案**,這個驗的是照著做**做不做得到**。 **環境**:清回全新安裝。🔴 **不要相信單一個 reset 指令,逐項驗。** 真實案例:重置腳本清了入料產物與照片,卻不清標籤字典,而「字典是空的」正是要驗的前提——差一步整輪白跑。 **給走查的人**:網址、帳號、手冊。**不給**:缺陷清單、寫手冊時的規格、程式碼。設一個操作次數上限,快到上限就停下來寫報告。 **差異必須分三類**,否則會把自己寫錯的當成產品缺陷去報: | 類別 | 意義 | 處置 | |---|---|---| | A 既有缺陷確認還在 | 有價值:證明沒有任何提示也會被撞到 | 併工程待辦 | | B 新缺陷 | 有基準才找得到的 | 開新單 | | **C 手冊自己寫錯** | 把「該有的」寫得比實際設計更理想,或上一節那兩種假敘述 | **改手冊,不是改程式** | ⚠️ **C 佔一半是正常的**(實測一輪 14 條差異裡 7 條是 C)。C 佔比低反而要懷疑走查的人是不是看過不該看的東西。 **涵蓋率要誠實記**:哪幾步走完、哪幾步卡住、哪些頁面沒走到與為什麼。前置條件那條路徑本身就會吃掉大部分操作次數,沒走到的頁面通常要另外再跑一輪,不要假裝一輪就掃完了。 -
verification.md 4.2 KB
# 文件驗證與交接 > **English summary:** Verify documentation language, navigation, rendered diagrams, and evidence against the actual implementation. Scale validation to the change and distinguish offline checks from live acceptance. 回 [project-docs](../SKILL.md)。文件初稿完成後用本頁挑驗證方式;按實際風險,不用把每個專案變成全量測試工程。 ## 導覽與格式 - 依 [skill 的語系規則](../SKILL.md#4-寫成單一現況來源) 逐頁核對本次正文與 GitHub 文件的英文摘要;雙語 README 核對內容一致。中文標題搭配全英文正文不算完成。翻譯不得改變指令、API/schema 識別字或授權原文。 - 檢查新增/修改的相對連結、章節 anchors、圖片來源、reference-style links。標題改名/檔案搬動要追入站引用;用 repo 真正的 Markdown/wiki 解析方式。git ls-files 有非 ASCII 路徑時用 `-z`,不能把 Git 顯示用的引號/八進位 escape 當檔名。 - 從 README/AGENTS/既有索引走到現行頁;有歷史頁也要能找到現行替代文件。連結圖可達只證明可找到,不代表分類或敘述易懂。 - worktree 裡的 sibling-repo 相對連結要分辨部署慣例與暫存路徑。若用主 checkout 映射檢查,記清楚映射及限制,不偷偷略過失敗。 - Mermaid 不只檢查 code fence:用可用的 Mermaid renderer/CLI 實際渲染,檢查文字截斷、重疊、箭頭、實體與狀態標示。保留原 `.md`,暫存渲染物不自動進版控。無渲染工具就記「語法/視覺未驗」,不要填通過;安裝額外工具依既有授權處理。 - 圖中狀態/欄位若為教學用概念而非程式 literal,要明示。資料模型標實際 FK 與邏輯關係,欄位 NULL/UNIQUE 不憑印象補。 ## 行為與證據 | 驗證層 | 能說明 | 不能代替 | |---|---|---| | 靜態 parser/schema 對照 | 指令、欄位、預設與程式符合 | 正式環境正常 | | 合成/離線測試 | 被測的故障、邊界、狀態轉移 | 外部服務/真實使用驗收 | | 原生/整合 canary | 指定版本與環境的有限互動 | 長期可靠性或語意無誤 | | 部署查核 | 實際版本、健康/READY、保留狀態 | 使用者滿意或所有功能正確 | | 真人驗收 | 指定使用情境的實際結果 | 未測平台、負載或全面安全 | 執行命令前辨認副作用;`--help`/`status` 也可能有啟動或資料寫入。優先在 fixture/暫存 DB 核對 schema 和失敗,不對正式資料跑 install/init/reset。只記取得的證據:exit 0 但有 errors/skip/部分失敗時如實區分。 臨時探針需要日後重現時,把來源與輸出保存在 repo/組織允許的證據位置;只留暫存的驗證要標明一次性及保存限制,並留下必要重現步驟。不要把 `/tmp` 檔案寫成乾淨 checkout 已內附的測試。 有既存紅色 CI,先辨認是否本次導致。只補文件的任務列出問題和真實檢查結果;不順便修 CI、跳過必要檢查或宣稱全綠。 ## 接手者測試 有條件且已授權時,讓獨立 reviewer 從入口開始,僅提供專案、讀者角色和典型任務:如何安裝/跑測試、在哪改設定、資料如何保存、失敗怎麼恢復、哪些能力未完成。要求回答來源檔案/章節,再對照程式。不要先餵正確答案或預期缺口。 沒使用獨立 agent 時可自行走一遍,報告應寫自查而非獨立審查。根據實際發現修正,再驗相關部分;不要用固定必須零風險/無限輪次拖住交付。 ## 驗證 skill 本身 通用流程改動可用隔離的合成專案 forward-test:只有 CLI 無 DB、API+DB+migration、有既存公司模板的多模組 repo。加入可查的舊指令/失效 CI 與未確認需求,檢查輸出能否保留未知、尊重模板與範圍、區分內部/公開、建立可走的連結和可渲染的圖。這是能力測試建議,不是每次跑 project-docs 都要重建三個專案。 對照測試前後的檔案 hashes/diff,確認產品程式沒被文件任務改掉;再跑一次檢查是否增量更新而非重複建立文件。不要只斷言出現某個標題或固定用詞。
-
-
SKILL.md 13.1 KB
--- name: project-docs description: "Use when an existing software project needs a documentation audit, missing technical documents, an end-user or administrator manual, or an updated handoff based on its actual code and operations. Scan the project, assess applicable deliverables, and maintain linked Markdown documentation with Mermaid diagrams. Not for designing a new feature, changing product code, or publishing a release." version: 0.3.0 status: mvp triggers: - "/project-docs" - "補齊技術文件" - "盤點專案文件" - "更新技術文件" - "文件化現有系統" - "文件交接" - "寫使用者手冊" - "使用者手冊" - "操作手冊" - "管理者手冊" --- # project-docs — 把現有專案整理成接得下去的文件 > **English summary:** Audit existing code and maintain linked Markdown/Mermaid documentation. Use Traditional Chinese prose by default and add an English summary for GitHub publication, while preserving explicitly agreed bilingual README editions. 從程式、設定、測試與既有決策查證現況,補齊讀者需要的資訊。文件完整度看「關鍵問題能否找到有證據的答案」,不看產出幾份檔案。 **兩種讀者,兩套寫法,別混在一份裡。** | 讀者 | 要回答什麼 | 交付物 | |---|---|---| | 下一位維護者 | 架構、契約、資料模型、部署、如何改 | 技術文件,圖用 Mermaid | | 終端使用者與管理者 | 要先具備什麼、怎麼操作、**按了會怎樣**、卡住怎麼辦 | 操作手冊,圖用實機截圖 | [文件適用性目錄](references/deliverables.md)「快速開始、日常任務」那列就是後者,適用條件是「有操作使用者」。判斷適用性時不要因為預設在寫技術文件就跳過它。 🔴 **第三問「按了會怎樣」是手冊唯一可被驗證的部分。** 每個會造成後果的操作都附一欄「應該看到什麼」——那一欄是驗收點,不是敘述。沒有它,手冊只能被「讀起來合理嗎」檢查,沒有人能判斷它說的是不是真的。寫手冊的完整紀律見[操作手冊寫法](references/manual.md)。 ## 1. 確認範圍,承接已有授權 讀目標 repo 的規則、入口文件、現有模板與版本狀態;保留他人的 dirty 檔。先確認本次是**唯讀盤點**還是**補寫/更新**,以及內部或公開讀者。使用者已說清楚就直接做,不重新問批准問題,也不擅自把無人值守任務改成訪談。 - 只要求盤點:交付證據、缺口、建議更新位置,不直接改專案文件。 - 已授權補齊:先盤點,再依結果更新;不需要把每個例行文件選擇重新交給使用者。 - 從 repo 可查的事自己查;真正缺少的需求、支援承諾或設計理由標待決。只有答案會影響必要工作時才問,其他部分繼續。 - 內部文件保留有用的內部名稱與部署脈絡,憑證只記取得/安全保存方式。公開輸出另做去敏;掃整個專案不等於把使用者資料、秘密、原始對話或 vendor 全部抄入文件。 ## 2. 建立全專案覆蓋與證據地圖 先用檔案清單辨認各模組和責任,再深入入口、邊界與相依關係。大型 repo 分區,清楚記**已檢查/待檢查/排除及理由**;不能只看 README 與一個模組就宣稱掃完。 清單要包含隱藏的 CI/設定檔,例如用 `rg --files --hidden -g '!.git'` 並搭配 `git ls-files -z`;被 ignore 的 runtime/生成物另按需要查核,不為了盤點就讀出秘密或原始使用者資料。 至少盤點:應用/服務/CLI/批次入口、跨模組介面、資料存放與 migration、設定與外部依賴、權限/敏感資料邊界、建置/部署/排程、測試與 CI、現行與歷史文件。沒有的項目記不適用及理由,未知的不要當不存在。 每個發現留下可追溯的 file/symbol/schema/test 或 command evidence,並記來源 commit/檢查日期。檔名只能指路,不能證明內容正確:比對 README 指令與 parser、CI 路徑是否存在、schema 真正約束、部署腳本和實際驗證範圍。 寫手冊時這條有兩個特有的變形,兩個都會寫出**永遠不會發生的敘述**:**程式裡有一段 UI 文案,不等於使用者看得到它**(那個分支可能走不到);**舊版文件的既有句子不能沿用**(既有專案裡假敘述密度最高的地方,偏偏看起來最可信)。兩者都只能逐句查證,例子見[操作手冊寫法](references/manual.md)。 若要宣稱「正在部署/現在正常」,需相應 live evidence;否則寫「依某日期部署紀錄」。使用只讀入口不一定零寫入:先看 helper 是否建表、對帳或變更狀態。文件任務不自動觸發服務、正式模型、發送訊息或資料遷移。 ## 3. 裁剪文件並決定更新位置 讀 [文件適用性目錄](references/deliverables.md),依專案形態與組織模板建立精簡矩陣: | 資訊/讀者問題 | 狀態 | 證據/理由 | 更新位置與驗收 | |---|---|---|---| | 依專案填寫 | 可用/過時/缺少/不適用/待確認 | 具體來源 | 優先既有現行頁 | 不用把每列都變成獨立檔案。CLI 沒有 DB 就不硬畫 ER;沒有 HTTP 就寫 CLI/hook/事件契約,不硬產 OpenAPI。缺 SLA 寫未訂定;觀察到的程式行為不能倒寫成當年批准需求,找不到決策理由就記未找到,不能補造 ADR。 使用既有 docs/wiki/組織模板,保留正式章節、術語及權責;不強制把產品 repo 改成另一種知識庫型態。組織模板要求的欄位即使未知也保留並說明缺口。技術文件可引用需求原件,不取代 PRD/簽核紀錄。 ## 3.1 承接實測素材(有的話) 寫操作手冊最缺的是「使用者實際會卡在哪」,那從程式碼讀不出來。專案若剛跑過一輪實機 QA,素材可以直接接: | 素材 | 接到手冊哪一節 | |---|---| | 系統隱含要求但沒寫出來的前提 | 「使用前提」 | | 行為正確但使用者看不懂的卡關點 | 「常見問題」 | | 成功路徑的逐步截圖 | 操作步驟 | | 缺陷清單 | **不進手冊**,那是工程待辦 | 🔴 **接素材有一條紀律:QA 挖到的是「系統實際這樣做」,不等於「本來就該這樣」。** 標成待判定、還沒有人拍板的項目,**不可以直接寫進手冊當成正式規格**。寫進去就等於替它蓋章,之後沒人會再質疑它合不合理。沒拍板的先留在待決清單,或在手冊裡明確標成「目前行為,尚待確認」。 沒有實測素材照樣寫得出手冊,只是每條使用前提都要自己回去查證,並標明證據狀態。 ### 現況有缺陷時,手冊寫什麼 照現況寫**等於教使用者繞過缺陷,並把缺陷凍結成正式流程**;寫「該有的樣子」會讓手冊與現況產生落差,但那個落差**可以被發現**。預設選後者。 例:已知「上傳完成頁沒有挑附圖的入口」。 - ❌ 「按完成回首頁,從最近紀錄點挑附圖」——把缺陷寫成正常流程。 - ✅ 「收完帶圖的文件後,應該可以在當下決定要不要附圖」。 ⚠️ **手冊裡不標任何已知問題。** 標了等於把答案先洩給後面走查的人,他會去複現而不是自己發現。缺陷留在工程待辦(見上表最後一列),不進手冊。 ## 4. 寫成單一現況來源 **產出以 Markdown 為準;架構、流程、時序、狀態、ER 等圖表以 `mermaid` fenced code blocks 呈現,對照表用 Markdown table。** 圖是可維護的原始碼;渲染圖放既有產物位置或暫存,不拿截圖取代 Mermaid 來源。若使用者明確指定其他格式,先遵循該要求並保留可追溯來源。 ⚠️ **上句「不拿截圖取代 Mermaid 來源」只管架構、流程、時序、狀態、ER 這類結構圖** —— 它們的正本必須是可維護的原始碼。**操作手冊的實機截圖不在此限**:使用者要對著畫面找按鈕,Mermaid 畫不出那個。手冊截圖要標註它證明了什麼、取自哪個版本與環境;版本改了畫面就過期,重截並更新標註,不要留著舊圖。 **技術文件預設使用正體中文(臺灣用語);要發布到 GitHub 的文件,開頭放簡短英文摘要,正文用正體中文。** 私有文件也沿用中文正文,不因去敏/OSS 匯出而改成全英文。已約定的雙語 README 保留獨立英文版與中文版,內容同步並互連;英文版不套中文正文規則。程式碼、指令、API/schema 識別字與授權原文保留原樣。使用者或組織明確指定其他語系時才依該要求;既有檔案碰巧是英文不構成例外。這是本 skill 的預設交付慣例,驗收時核對本次產出,不藉此翻譯未授權的歷史檔案。 依實作與風險深度補內容,而非套固定長度。特別注意: - 跨程序/非同步:觸發、完成邊界、持久狀態、重試/去重、取消、競態和未知結果。區分寫入成功、外部送達、使用者驗收與備份成功。 - 資料:欄位、型別、唯一鍵、FK、索引、資料版本/migration、保留/刪除。ER 的 DB 外鍵與應用層邏輯關係分開;不要把名稱相似畫成強制約束。 - 介面:輸入/輸出、必要與選用欄位、預設值、錯誤/exit code、重試語意、相容性。多階段 CLI exit 0 是否仍有部分失敗要查證。 - 維運:前置條件、健康判讀、備份、還原、升級、退回/停用,以及操作的資料影響。沒有恢復工具或沒演練過就直說,不能編造一鍵命令。 - 證據:已實作、已離線測試、實際部署紀錄、真人驗收、提案/待決分開。歷史原件保留,用現行連結說明被哪份後續文件取代。 從主要入口連到索引或相關文件,各頁有意義地交叉引用依賴、契約、程式、測試和驗證;讀者能循連結找答案,不只列一長串檔名。預設用可在 GitHub 顯示的相對 Markdown links;已有 wiki link 慣例時尊重其解析方式。移動檔案要修入站連結和 anchors。 ## 5. 驗證並交接 讀 [驗證方法](references/verification.md),按變更的風險執行。最少核對:正文語系與 GitHub 文件的英文摘要、連結/anchors 與入口可達性、Mermaid 真正渲染、關鍵命令/schema 對照、歷史與現況一致、缺口與證據範圍。測試結果要有命令、環境、時間、來源版本與實際結果;未執行或 skip 不填通過。 **操作手冊另有一道交付前關卡:一致性走查。** 把環境清回全新安裝,找一個**沒有脈絡**的人或 agent,只給網址、帳號與手冊,不給缺陷清單、不准看程式,請他照手冊走一遍;做不到的地方就是差異。差異**必須分三類**——既有缺陷確認還在/新缺陷/**手冊自己寫錯**——否則會把自己寫錯的當成產品缺陷去報。做法見[操作手冊寫法](references/manual.md)。 🔴 **走查不可以由寫手冊的這個 session 自己做。** 它知道手冊想表達什麼,會自動照腦中的意思去操作,等於自己驗自己。抓圖可以自己來,走查要換人。 發現程式/CI 問題時記獨立工程待辦、影響與證據;除非使用者同時授權,文件工作不修程式或改服務。舊 CI 失敗與文件檢查成功分開回報。只改低風險文字不用重跑所有昂貴測試;新的契約問題或失敗才擴大驗證。 最後留下:更新哪些現行頁、覆蓋哪些模組、哪些沒看/沒驗、仍缺什麼、由哪個入口接續,以及何種變更需要更新文件。再次執行先比較來源版本與現行頁,增量修訂;不要重建第二套 docs 或為同一次證據再生一份「最新版」。 ## 分流與邊界 需要新功能設計走 `spec`,需求不明確才走 `grill`;要查 bug 根因走 `diagnose`;明確要求公開發布整備可接 `prep-repo`。可用 `workflow-router` 選擇,但缺少其他 skill 也能完成本文的文件任務,不以安裝它們作前置條件。 本 skill 不自行 commit/push/部署/發布,也不決定敏感資料公開;依該次使用者的既有授權和 repo 流程執行。不要把只補文件變成重構、稽核認證或一整套新專案。 **本 skill 不執行測試、不做實機 QA。** 寫操作手冊時若發現「使用者到底會卡在哪」只有實跑才知道,先跑一輪實機 QA 再回來接素材(見 §3.1),不要憑程式碼想像使用者的體驗。 **例外:寫操作手冊時可以驅動瀏覽器抓實機截圖。** 但這是動真的系統,**開始前一定要先跟使用者講清楚並得到同意**,至少講三件事: 1. **要連哪一套環境。** 同一個產品常有多套站(測試/示範/正式),連錯會動到別人正在用的那套。 2. **會不會寫入。** 空環境截不出有用的圖,通常得先鋪代表性資料、清掉先前的測試殘骸——那些都是寫入。 3. **畫面上可能有真實資料。** 客戶名、人名、實際文件內容會連同截圖一起留在文件裡,之後很難收回。 使用者沒有明確同意就不要開瀏覽器。抓圖以外的實機操作(跑流程驗功能、一致性走查)不在這個例外裡。
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.