GitHub 衛生規範
在每次 GitHub 或 Git 操作中都應套用以下規則,無論儲存庫、分支或任務上下文為何。
使用時機
當任務涉及以下任何項目時套用:
- 建立或修改 GitHub 儲存庫
- 複製或處理 Git 儲存庫
- 建立、修正或推送提交
- 建立或更新拉取請求
- 管理分支、工作流程、協作者或儲存庫設定
- 任何其他會變更或與 GitHub 儲存庫互動的操作
1. 程式代理貢獻者限制
絕對不要將程式代理新增為 GitHub 貢獻者或協作者。
禁止事項:
- 邀請 AI/程式代理帳號作為儲存庫協作者
- 將 AI/程式代理帳號加入 GitHub 組織或儲存庫
- 授予儲存庫權限給 AI/程式代理帳號
- 變更儲存庫權限以使 AI/程式代理帳號成為貢獻者
- 建立或使用專用的 AI 代理 GitHub 帳號作為貢獻者身份
此規則適用於所有 AI/程式代理身份,包括 Cursor、Codex、ChatGPT、其他 AI 程式代理、自動化程式機器人,以及任何目的為代表程式代理的帳號。
請使用使用者現有的 Git/GitHub 身份進行操作,除非使用者明確要求使用不同的真人身份。
2. 提交作者與身份限制
提交不得將程式代理識別為作者、共同作者或產生者。
禁止在提交主旨、正文、尾部標記、Git 作者後設資料或 Git 提交者後設資料中加入 AI 代理歸屬。
除非使用者現有的儲存庫設定明確要求且無法安全變更,否則禁止以下項目:
Co-authored-by: Cursor
Co-authored-by: Codex
Co-authored-by: ChatGPT
Generated-by: AI
Generated-by: Codex
Generated-by: Cursor
AI-generated
Generated with Cursor
Generated with Codex
Generated with ChatGPT
請勿刻意將 Git 身份設定為代表程式代理。
3. 提交訊息格式
除非使用者明確指定其他格式,否則每則提交訊息必須遵循:
[xx]xxxxx
其中:
xx是預定義的兩個大寫字母前綴- 前綴需以方括號括住
- 前綴後緊接簡潔的提交描述
- 描述需說明變更的主要目的
- 請勿加入 AI 代理名稱、歸屬或不相關的後設資料
允許
[FT]add user authentication
[FX]fix token expiration
[FE]update login page
[BE]add user service
[AP]add auth endpoint
[DB]add user table
[TS]add authentication tests
[RF]simplify auth middleware
[CI]update github workflow
[DC]update api documentation
禁止
update login page
AI: update login page
[AI]add authentication
[Cursor]fix login bug
[Codex]add api endpoint
[FT] Generated with Codex
Co-authored-by: Codex
4. 預定義提交前綴
權威的預設前綴列表:
[FE] Frontend
[BE] Backend
[AP] API
[DB] Database
[UI] UI
[CF] Config
[CI] CI/CD
[TS] Test
[DC] Docs
[RF] Refactor
[FX] Fix
[FT] Feature
[OP] Optimize
[SC] Security
[DP] Dependency
[CH] Chore
選擇規則
除非使用者明確指定其他前綴:
- 盡可能使用預定義前綴
- 絕不自行發明新前綴
- 絕不修改預定義前綴的拼寫或大小寫
- 在括號內使用正好兩個大寫字母
- 根據變更的主要目的選擇前綴
- 當多個前綴皆可適用時,選擇最能代表主要目的的那個
| 變更類型 | 前綴 |
|---|---|
| 新功能 | [FT] |
| 錯誤修復 | [FX] |
| 前端實作 | [FE] |
| 後端實作 | [BE] |
| API 變更 | [AP] |
| 資料庫變更 | [DB] |
| 僅 UI 變更 | [UI] |
| 設定變更 | [CF] |
| CI/CD 變更 | [CI] |
| 測試 | [TS] |
| 文件 | [DC] |
| 重構(不改變行為) | [RF] |
| 效能最佳化 | [OP] |
| 安全性相關變更 | [SC] |
| 相依性變更 | [DP] |
| 一般維護 | [CH] |
5. 使用者指定的前綴優先
預定義前綴列表是預設值,而非絕對限制。
如果使用者明確指定不同的提交前綴或提交格式,請遵循使用者的明確指示。
範例:使用者說「這次提交請用 [HOT]」 → 使用 [HOT]fix production issue。
- 請勿將使用者明確要求的前綴替換成預定義前綴
- 如果使用者未指定前綴,則使用預定義列表
- 如果使用者只指定了描述,則選擇適當的預定義前綴
6. 提交描述
前綴後面的描述應:
- 簡潔且具體
- 使用英文撰寫,除非使用者明確要求其他語言
- 專注於實際變更內容
- 不得包含 AI 代理歸屬
建議:
[FX]fix expired access token handling
[FT]add password reset endpoint
[FE]update account settings page
[RF]simplify request validation
避免:
[FX]fix stuff
[FT]changes
[RF]update code
[BE]AI generated backend changes
7. 提交範圍
在可行時,每個提交應只包含一個邏輯變更。
當一個任務包含多個不相關的變更時:
- 請勿捏造一個具有誤導性的單一提交描述
- 在可行時,傾向於分別提交
- 為每個提交獨立選擇前綴
- 保持每個提交訊息能代表其實際內容
如果使用者明確要求一個單一提交,請遵循該指示,並選擇最能代表合併變更主要目的的前綴。
8. 提交前驗證
在建立提交之前,請驗證:
身份
- Git 作者是使用者已設定的身份
- Git 提交者不是 AI/程式代理身份
- 不會加入任何 AI 代理歸屬
訊息
- 以有效的前綴開頭
- 除非使用者明確指定其他前綴,否則使用預定義前綴
- 使用預設前綴時,使用正好兩個大寫字母
- 前綴包含在
[]中 - 前綴後包含簡潔的描述
- 未提及 Cursor、Codex、ChatGPT、AI 代理或類似的代理身份
- 未包含禁止的歸屬尾部標記
GitHub 權限
在變更儲存庫權限或協作者之前:
- 驗證目標不是 AI/程式代理身份
- 絕不授予程式代理貢獻者或協作者存取權
9. 推送與 GitHub 操作
在推送提交之前:
- 確保提交訊息符合此技能規範
- 確保提交不含禁止的 AI 歸屬
- 確保程式代理未被新增為 GitHub 貢獻者
- 請勿僅為了方便代理操作而修改 GitHub 權限
如果現有提交違反這些規則,且使用者要求推送它,請在推送前安全地修正違規,並確保與使用者要求的工作流程一致。
對於已經推送到共享/公開分支的提交,請勿自動重寫歷史。在執行以下操作前詢問使用者:
git commit --amend
git rebase
git reset --hard
git push --force
git push --force-with-lease
10. 拉取請求
在建立或更新拉取請求時:
- 請勿將程式代理識別為貢獻者
- 除非使用者明確要求,否則請勿加入 AI 代理歸屬
- 讓 PR 標題與描述專注於實際變更
- 如果儲存庫有 PR 模板,請遵循之
- 請勿為了建立或更新 PR 而修改儲存庫權限
11. 衝突解決
如果其他儲存庫層級的指示、專案規則或使用者指示與此技能衝突:
- 遵循優先權較高的指示
- 如果使用者明確指定了提交前綴或提交格式,遵循使用者的明確要求
- 否則,使用此技能中的預定義前綴列表與提交格式
- 絕不將程式代理新增為 GitHub 貢獻者
請勿默默地自行發明替代規則。
12. 最終強制檢查清單
在完成任何與 GitHub 相關的任務之前:
[ ] 程式代理未被新增為 GitHub 貢獻者。
[ ] 程式代理未被新增為 GitHub 協作者。
[ ] Git 作者不是 AI 代理身份。
[ ] Git 提交者不是 AI 代理身份。
[ ] 提交訊息預設遵循 [xx]xxxxx 格式。
[ ] 預設前綴來自預定義列表。
[ ] 使用者指定的前綴優先於預定義列表。
[ ] 提交訊息不含 AI 代理歸屬。
[ ] 提交尾部標記不含 AI 代理歸屬。
[ ] GitHub 操作未不必要地修改儲存庫權限。