黃予岑KEN
← 所有作品
開發者工具

Clean-Contributors

Claude Code plugin:把 Claude(或任何不想要的帳號)從 GitHub repo 的 Contributors 名單移除,而且不會再跑回來。先診斷原因,再視情況清理 commit 歷史,最後強制 GitHub 重新計算快取。

角色:獨立開發、開源發佈技術主軸:Claude Code Plugin · Git / GitHub API平台:Claude Code / Bash / PowerShell
GitHub

重點

+

三個 Skill 分工

診斷 → 清理歷史 → 刷新快取

check-contributors 唯讀診斷;strip-coauthors 改寫歷史移除 Co-authored-by;refresh-contributors-cache 強制 GitHub 重算名單。

+

失敗自動回復

任何一步出錯就把分支與設定還原

刷新流程會暫時切換預設分支並改名,任何一步失敗都會回復原狀,commit、tag、開著的 PR 都不受影響。

+

不用 Claude Code 也能用

附獨立的 refresh.sh / refresh.ps1

刷新步驟只呼叫 GitHub API,不需要 clone;macOS / Linux / Windows 都有對應腳本。

+

模擬 GitHub 的測試

fake gh 注入錯誤,連回復路徑都測

CI 用假的 gh 指令模擬 GitHub API 並故意注入失敗,確認兩支腳本在各步驟出錯時都能正確回復。

↑ 點任一張卡片看它怎麼做到的

為什麼做這個

用 Claude Code 寫程式時,commit 會自動加上 Co-authored-by: Claude,於是 Claude 出現在 repo 的 Contributors 名單上。就算把那幾行刪掉、甚至改寫 commit,GitHub 仍然照樣顯示,因為那份名單是快取,不會因為歷史改變就重新計算。

網路上的建議多半是「等它自己更新」,實際上並不會。查清楚 GitHub 在預設分支變更時才會重算之後,就把整套流程做成 plugin,讓自己和其他人都能一句話解決。

功能總覽

🔍 check-contributors+唯讀診斷名單為何出現

判斷原因是歷史裡還有 trailer、帳號本身有 commit,還是單純快取過期,再建議下一步。

✂️ strip-coauthors+改寫歷史、移除 trailer

用 git-filter-repo 只移除符合的 Co-authored-by 行並 force push;執行前先建立備份 bundle,並另外取得明確同意。

🔄 refresh-contributors-cache+強制 GitHub 重算名單

建立暫時分支設為預設、把真正的預設分支改名再改回、最後切回並刪除暫時分支,觸發 GitHub 重新計算。

關鍵技術決策

唯讀、可回復、不可回復分開處理

診斷完全唯讀;刷新只暫時改設定、失敗會回復;改寫歷史是唯一無法回復的步驟,因此獨立成一個 skill、先備份,並且額外確認一次。

系統架構

Claude Code Plugin(marketplace 安裝)
├─ check-contributors:GitHub API 唯讀查詢
├─ strip-coauthors:git-filter-repo + force push(先備份)
└─ refresh-contributors-cache
└─ refresh.sh / refresh.ps1(gh CLI,失敗自動回復)
測試:fake gh 模擬 API + 錯誤注入,CI 每次 push 執行

技術棧

Claude Code PluginBashPowerShellGitHub CLIGitHub REST APIgit-filter-repoGitHub Actions
← 回到作品列表