Community寫作與編輯github.com

mrgnhnt96/impa

撰寫並更新專案程式碼中隨附的技術文件,逐一檢查每個指令、旗標、路徑和預設值是否與程式碼一致,然後自動啟動獨立的審查流程。

impa 是什麼?

Impa 是一個專門用於技術文件撰寫與維護的 AI 代理技能,由 mrgnhnt96 開發。它的核心任務是確保專案文件與實際程式碼完全一致、正確且完整。此技能支援 Claude Code、Cursor 和 Codex 等平台,會自動執行一個完整的循環:先讀取專案結構、現有文件和程式碼,然後根據專案類型(如函式庫、CLI、服務等)選擇適當的文件類型(README、API 參考、快速入門、教學、故障排除、變更日誌、遷移指南、執行手冊、決策記錄、貢獻指南、AGENTS.md 等),並嚴謹遵守一系列撰寫原則,包括「答案優先」、「簡潔無贅字」、「可生成的內容就自動生成」、「每個事實只有一個來源」、「比對 house style」、「絕不虛構」。撰寫完成後,Impa 會自動執行驗證步驟,對照程式碼逐一檢查文件中每個陳述(指令、路徑、預設值、錯誤訊息等),並執行內建審計指令 `impa audit`。最重要的是,每個工作循環結束時,它會在背景自動啟動獨立的審查,無需使用者要求。如果文件與程式碼衝突,Impa 會優先記錄程式碼的實際行為並通知使用者,不會擅自更改程式碼。整個過程的規劃會記錄在 `.impa/plan.md` 中,供後續回合使用。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mrgnhnt96/impa/tree/HEAD

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

impa 是做什麼的?

撰寫開發者或代理能夠執行且與程式碼一致的技術文件。目標是讓文件對讀者的任務來說正確、最新且完整、易於尋找、具有可用的範例、清晰直接,且長度不超過所需。

一個回合就是使用者要求的一項工作。每個回合結束時,系統會自動進行審查,無需要求。

步驟

1. 讀取專案

在寫任何東西之前,先讀取專案中已有的內容:

  • .impa/plan.md,如果專案有的話。
  • 文件:README、docs/、網站原始碼與設定、變更日誌、貢獻指南以及指令檔。注意任何產生器,以及 CI 中的文件檢查。
  • 讀者會碰到的程式碼:進入點、指令解析器、設定架構、環境變數、錯誤訊息、公開 API 以及清單。

釐清專案類型(函式庫、CLI、服務、終端使用者應用程式、內部工具)以及文件的讀者群,包括代理是否會閱讀。只在專案本身無法回答時才詢問使用者。

維持使用專案現有的文件工具。如果沒有任何工具,則使用純 Markdown 檔案。

2. 選擇文件類型

閱讀 reference/doc-types.md。從這個專案類型所需的列開始,僅在觸發條件成立時才加入觸發列,然後停止。一個頁面只做一件事。如果使用者要求一個頁面,就只寫那個頁面,不要增加其他頁面。

不要重新組織使用者沒有要求你重新組織的文件。

3. 維護計畫

在專案中撰寫或更新 .impa/plan.md。這是下一個回合會讀取的內容:

# 文件計畫

專案類型:CLI
讀者:使用 CLI 的開發者,以及在此儲存庫中工作的程式碼代理
文件工具:純 Markdown
範例驗證層級:第三級

## 頁面

| 頁面 | 類型 | 用途 | 讀者 |
| --- | --- | --- | --- |
| README.md | README | 說明這是什麼以及如何開始 | 剛接觸的人 |

## 內部風格

標題大小寫、任務標題形式、縮寫形式、使用「我們」、佔位符格式、`$` 提示。與專案現有的方式保持一致。

## 等待真人處理

## 經驗教訓

計畫包含頁面和選擇。將選擇的理由留在計畫之外,因為審查者會讀取它。

4. 依規則撰寫

如果專案已有文件,首先複製它們,如 review/round.md 中的「Before you edit」所述。該回合的差異來自那份複製。

首先閱讀 reference/principles.md,然後再讀取工作所需的內容。一個小編輯只會讀取它需要的部分。

閱讀時機
structure.md、wording.md、leave-out.md你寫的每個頁面
examples.md任何包含程式碼的頁面
accuracy.md在你驗證之前,以及當你設定產生的參考資料時
agent-readers.md指令檔、技能、工具描述,以及代理會獲取的網站

audit.md 和 sources.md 不是用來寫作的:前者是供 impa audit 使用的建置清單,後者則存放引用來源。

這些規則旨在防範的陷阱:

  • 答案優先。 一個頁面以一句話說明它的用途開頭。然後是常見案例,接著是邊緣案例。
  • 簡潔意謂沒有浪費文字,而不是其他。 刪除前言、歷史和重複。保留預設值、限制、錯誤、先決條件和範例:leave-out.md 中的保留清單之所以存在,是因為刪除這些會傷害讀者。
  • 可產生的就產生(A1)。 旗標、簽名、預設值和架構,如果能用工具從程式碼產生出來,就不應手動輸入。使用專案的產生器,或告訴使用者有一個產生器會很有幫助。
  • 每個事實只有一個來源。 陳述一次並連結到它。
  • 符合內部風格。 一致性優先。規則集的用詞選擇是給沒有內部風格的專案的預設值。
  • Front matter: 如果文件工具允許,為 docs 資料夾中的頁面提供 type(T2)。絕不要對 README、變更日誌或指令檔新增 front matter:GitHub 會將其顯示為第一句話上方的一個表格,而工具會一次讀取整個檔案。
  • 指令檔只包含代理無法從儲存庫中自行推斷的內容(G1)。 一個人在提交前必須編輯由代理產生的指令檔(G11),所以要告知使用者。
  • 絕不虛構。 你找不到的事實,就是你不該寫的句子。不要留下存根,也不要留下空的標題或 TODO(T4)。如果一個頁面沒有某個值就無法運作,請使用明顯的佔位符,例如 API_URL_TODO,並將其加入計畫中的「等待真人處理」。

5. 對照程式碼驗證

逐一對照頁面所描述的程式碼,檢查頁面上陳述的每一件事。在安全的條件下執行它,因為僅閱讀可能會遺漏執行時才會顯現的問題。

頁面陳述的內容對照檢查的來源
指令、子指令或旗標解析器的原始碼,以及實際的 --help
路徑或檔案目錄樹,除非頁面說明該檔案由讀者建立
預設值、限制、單位、順序、副作用設定該值的程式碼行。不是說明文字、註解或舊文件
環境變數、設定鍵程式碼讀取它的位置
錯誤訊息原始碼中的確切字串
版本、支援的平台清單或 CI 設定
API 名稱、簽名、回傳值定義
範例編譯或執行它,直到達到專案的驗證層級(examples.md)
安裝、快速入門、教學從一個乾淨的狀態開始,在一個暫時的資料夾中,遵循每一個步驟

絕不執行任何會接觸到真實資料、真實金錢或共享系統的動作。說明你沒有執行哪些項目。

現有的文件不是證據,即使是你正在保留的部分。任何無法驗證的主張都應被移除或回報,絕不能基於信任而保留。

當文件與程式碼不一致時,程式碼本身可能才是錯誤。寫下程式碼實際的行為,告知使用者,並且不要更改程式碼,除非使用者要求。

6. 執行審計

impa audit --dir <project>

修正實際的問題。如果指令執行失敗,或二進位檔案沒有 audit 指令,告知使用者審計未能執行並繼續。一個乾淨的審計結果證明力有限:它只確認一個名稱存在,而不是圍繞它的句子是真實的。絕不偽造一個值來獲得乾淨的執行結果。

7. 審查該回合

無需要求,遵循 review/round.md。第一次審查涵蓋整個文件集,之後則審查差異及其影響的範圍。它會透過 impa review 在背景執行。

只有在使用者為此回合要求時才跳過,並回報已被跳過。在審查完成之前,不要聲稱文件已就緒。

不要閱讀 review/method.md 或 review/checklist.md。這些檔案只有審查者會載入。

8. 回報

告知使用者:

  • 你撰寫或更改了什麼,以及你選擇了哪些文件類型。
  • 你無法驗證或沒有執行的項目。
  • 文件與程式碼不一致的地方,以及你如何處理。
  • 審查結果:結論、發現了什麼、你修正了什麼、仍待解決的問題、誰可以採取行動以及成本。

如果結論是「在真人採取行動前無法發布」,請以此開頭。

除非使用者要求,否則不要提交、推送或發布。

9. 學習

當使用者糾正某件事,或一個回合顯示出這個專案的一個陷阱時,將其加入 .impa/plan.md 的「經驗教訓」。如果這裡的某條規則對所有專案來說都是錯誤的,請告知使用者:修正應歸屬於此技能,而非單一專案的計畫。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能