Community程式設計與開發github.com

開源前檢查

在儲存庫公開前進行檢查,補足缺失的授權、README、安全政策、貢獻指南、問題與 PR 模板、套件與 Agent Skill 中繼資料、CI 與工作流程安全性、檔案與整個 Git 歷史中的機密與個人資料,以及 GitHub 設定(如私有漏洞通報與分支保護)。

開源前檢查 是什麼?

此技能的目標是確保一個儲存庫在變為公開之前,已經通過全面的檢查和補救措施。它不只是一份靜態檢查清單,而是提供一個逐步的工作流程:首先執行腳本掃描機密、驗證中繼資料和檢查 CI 設定;接著,它引導使用者手動檢查腳本無法處理的部分,例如授權條款的合法性、README 對陌生人的友善程度,以及歷史紀錄中可能存在的個人資料;然後,它會以結構化的方式產生報告,區分阻塞性問題、應該修復的問題和已經完成的事項;最後,它會根據使用者的選擇,使用預設範本並根據專案具體情況進行調整,來建立或修改檔案。這項技能整合了 `gitleaks` 等工具,並明確區分自動化檢查和人為判斷,非常適合在初次發布或將私有儲存庫設為公開之前使用。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/KyrieLii/oss-prep/tree/HEAD

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

在你喜歡的 AI 中提問

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

說明文件

開源前準備

針對即將公開的儲存庫進行的發布前檢查。腳本負責執行機械性檢查;你則負責閱讀專案、判斷腳本無法處理的事項、撰寫報告,然後僅根據使用者的選擇進行補填。

執行順序很重要,因為有一個錯誤是無法挽回的:一旦儲存庫公開,其歷史中的所有內容都已被看到。洩漏的憑證和個人資料優先處理;樣板檔案則最後處理。

1. 掃描

從儲存庫根目錄執行附帶的掃描器(需要 Node 20 或更新版本,無依賴項,唯讀):

node <skill-dir>/scripts/scan.mjs <repo-dir>

它會輸出 JSON:summary 按層級統計失敗的發現項目,每個發現項目包含 id、level(block、warn、info)、status(pass、fail、skip)和 evidence。如果使用者同意跳過非常龐大的歷史紀錄,請加上 --no-history,並說明已跳過。如果已安裝 gitleaks,也請執行 gitleaks git <repo-dir> --redact --no-banner 並合併其發現結果;它能識別更多種類的 token 格式。

掃描器的機密規則基於模式,因此預期會有誤判(如測試用 fixture、文件範例),且不要假設它能捕捉到所有情況。在報告每個命中結果之前,請親自檢查。可以透過 oss-prep: allow 註解將某行程式碼標記為有意為之。

2. 閱讀與判斷

閱讀 references/checklist.md 以瞭解每個檢查項目的含義、如何區分真實問題與雜訊,以及只有你能執行的檢查。簡而言之,除了腳本的發現結果之外,還需注意:

  • 歷史紀錄與檔案所揭露的資訊。 打開每個機密命中結果和歷史中的敏感檔案(git show <commit>:<path>)。尋找真實姓名、電子郵件、電話號碼、地址、客戶或財務資料、內部主機名稱,以及文件或 fixture 中帶有私人資料的螢幕截圖。
  • 授權條款的一致性。 LICENSE 檔案內容、package.json、SKILL.md 的 frontmatter、README 以及任何個別檔案的標頭應彼此一致。注意綑綁的第三方程式碼、字型或圖片,並確認其授權條款是否允許重新散佈。
  • 為陌生人準備的 README。 從搜尋結果而來的人應該能夠瞭解這是什麼、看到它的樣子(螢幕截圖或 Demo 連結)、安裝並執行它,以及找到授權條款,而無需具備任何內部背景知識。
  • 僅適用於作者的事物。 硬編碼的本機路徑、專案需要但未說明的 .env 值、假設在作者機器上執行的腳本。

3. 報告

以使用者的語言撰寫報告,格式如下:

# 開源就緒狀態:<repo>

**結論:** <就緒 / 解決阻塞項目後就緒 / 尚未就緒>,一句話說明原因。

## 阻塞性問題(公開前必須修復)
- ❌ <標題>: <發現了什麼,附上 file:line 或 commit> → <修復方式>

## 建議修復
- ⚠️ ...

## 額外建議
- 💡 ...

## 已到位
- ✅ <每行一項,分組列出>

## 需要在 GitHub 上處理
<使用者自行修改的設定,附上確切的 gh 命令或設定路徑>

將最嚴重的項目放在最前面。請具體說明:例如「src/config.ts:12 有一個 OpenAI 金鑰,也存在於 commit a1b2c3d 中」,而不是只說「發現機密」。說明你未檢查的項目(例如沒有 gh、歷史紀錄已跳過、二進位檔)。

然後詢問使用者要填補哪些項目。將明顯的集合提供為預設值(例如「所有缺失的檔案」),並逐一列出每個選項,以便使用者選擇。

4. 填補使用者選擇的項目

將 assets/templates/ 中的範本作為起點,並根據此專案進行調整;請先閱讀 references/fixing.md。簡而言之:

  • 只寫入檔案,永不發布。 僅在工作目錄中建立或編輯檔案。除非使用者明確要求,否則不要提交、推送、變更儲存庫的可見性或設定,或建立發行版本。
  • 符合專案特性。 使用專案實際的指令、Node 版本、套件管理器、授權條款和聯絡方式;以 README 所使用的語言撰寫(如果 README 是雙語的,則使用兩種語言)。省略不適用的章節,而不是放置佔位符。
  • 切勿為使用者選擇授權條款。 如果沒有授權條款,請用一兩句話說明常見的選擇(MIT、Apache-2.0、GPL-3.0、AGPL-3.0、雙重授權),然後詢問使用者。請完全複製官方的授權條款文字;不要根據記憶進行改寫或重新打字。
  • 歷史紀錄中的機密無法透過刪除檔案來修復。 憑證必須先撤銷和更換;這是使用者在雲端服務商控制檯中的工作。重寫歷史(git filter-repo)或發布一個全新的儲存庫是使用者的決定;請解釋兩種選項,並在沒有得到明確同意之前,不要執行任何一項。
  • GitHub 設定屬於使用者。 從參考文件中提供確切的 gh 命令或設定路徑;僅在使用者要求時才執行它們。

最後,重新執行掃描器,並顯示哪些發現結果發生變化,以及還有哪些事項留待使用者處理。

相關技能