GitHub 衛生管理(GitHub Hygiene)
これらのルールは、リポジトリ、ブランチ、タスクコンテキストに関わらず、すべての GitHub または Git 操作に適用されます。
使用タイミング
タスクに以下が含まれる場合に適用します。
- GitHub リポジトリの作成または変更
- Git リポジトリのクローンまたは操作
- コミットの作成、修正、またはプッシュ
- プルリクエストの作成または更新
- ブランチ、ワークフロー、コラボレーター、リポジトリ設定の管理
- GitHub リポジトリを変更または操作するその他の操作
1. コードエージェントのコントリビューター制限
コードエージェントを GitHub コントリビューターまたはコラボレーターとして追加しないでください。
禁止事項:
- AI/コードエージェントアカウントをリポジトリコラボレーターとして招待すること
- AI/コードエージェントアカウントを GitHub 組織またはリポジトリに追加すること
- AI/コードエージェントアカウントにリポジトリ権限を付与すること
- AI/コードエージェントアカウントがコントリビューターになるようにリポジトリ権限を変更すること
- 専用の AI エージェント GitHub アカウントをコントリビューター ID として作成または使用すること
これは、Cursor、Codex、ChatGPT、その他の AI コーディングエージェント、自動化コーディングボット、およびコーディングエージェントを代表する目的のアカウントを含む、すべての AI/コードエージェント ID に適用されます。
ユーザーが明示的に別の人間の ID を要求しない限り、ユーザーの既存の Git/GitHub ID を使用して操作してください。
2. コミット作成者および ID の制限
コミットは、コードエージェントを作成者、共同作成者、または生成元として識別してはなりません。
AI エージェントの帰属をコミットの件名、本文、トレーラー、Git 作成者メタデータ、または Git コミッターメタデータに追加しないでください。
ユーザーの既存のリポジトリ設定で明示的に要求されており、かつ安全に変更できない場合を除き、以下は禁止されています:
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 ID をコードエージェントを表すように設定しないでください。
3. コミットメッセージ形式
ユーザーが明示的に別の形式を指定しない限り、すべてのコミットメッセージは次の形式に従う必要があります:
[xx]xxxxx
ここで:
xxは事前に定義された2文字の大文字接頭辞です- 接頭辞は角括弧で囲まれます
- 接頭辞の直後に簡潔なコミット説明が続きます
- 説明は変更の主な目的を説明します
- AI エージェント名、帰属、または無関係なメタデータを追加しないでください
許可される例
[FT]ユーザー認証を追加
[FX]トークン期限切れを修正
[FE]ログインページを更新
[BE]ユーザーサービスを追加
[AP]認証エンドポイントを追加
[DB]ユーザーテーブルを追加
[TS]認証テストを追加
[RF]認証ミドルウェアを簡略化
[CI]GitHub ワークフローを更新
[DC]API ドキュメントを更新
禁止される例
ログインページを更新
AI: ログインページを更新
[AI]認証を追加
[Cursor]ログインバグを修正
[Codex]API エンドポイントを追加
[FT] Codex で生成
Co-authored-by: Codex
4. 事前定義されたコミット接頭辞
信頼できるデフォルトの接頭辞リスト:
[FE] フロントエンド
[BE] バックエンド
[AP] API
[DB] データベース
[UI] UI
[CF] 設定
[CI] CI/CD
[TS] テスト
[DC] ドキュメント
[RF] リファクタリング
[FX] バグ修正
[FT] 機能
[OP] 最適化
[SC] セキュリティ
[DP] 依存関係
[CH] 雑務
選択ルール
ユーザーが明示的に別の接頭辞を指定しない限り:
- 可能な場合は常に事前定義された接頭辞を使用する
- 新しい接頭辞を決して作成しない
- 事前定義された接頭辞のスペルや大文字小文字を変更しない
- 括弧内は正確に2文字の大文字を使用する
- 変更の主な目的に基づいて接頭辞を選択する
- 複数の接頭辞が該当する場合は、主な目的を最もよく表すものを選択する
| 変更タイプ | 接頭辞 |
|---|---|
| 新機能 | [FT] |
| バグ修正 | [FX] |
| フロントエンド実装 | [FE] |
| バックエンド実装 | [BE] |
| API 変更 | [AP] |
| データベース変更 | [DB] |
| UI のみの変更 | [UI] |
| 設定変更 | [CF] |
| CI/CD 変更 | [CI] |
| テスト | [TS] |
| ドキュメント | [DC] |
| 振る舞いを変更しないリファクタリング | [RF] |
| パフォーマンス最適化 | [OP] |
| セキュリティ関連の変更 | [SC] |
| 依存関係の変更 | [DP] |
| 一般的なメンテナンス | [CH] |
5. ユーザー指定の接頭辞が優先される
事前定義された接頭辞リストはデフォルトであり、絶対的な制限ではありません。
ユーザーが明示的に異なるコミット接頭辞またはコミット形式を指定した場合は、ユーザーの明示的な指示に従ってください。
例: ユーザーが「このコミットには [HOT] を使って」と言った場合 → [HOT]本番環境の問題を修正 を使用します。
- ユーザーが明示的に要求した接頭辞を事前定義された接頭辞で置き換えないでください
- ユーザーが接頭辞を指定しない場合は、事前定義されたリストを使用します
- ユーザーが説明のみを指定した場合は、適切な事前定義された接頭辞を選択します
6. コミット説明
接頭辞の後の説明は次のようにします:
- 簡潔かつ具体的であること
- ユーザーが明示的に別の言語を要求しない限り、英語で記述すること
- 実際の変更に焦点を当てること
- AI エージェントの帰属を含まないこと
推奨:
[FX]期限切れアクセストークンの処理を修正
[FT]パスワードリセットエンドポイントを追加
[FE]アカウント設定ページを更新
[RF]リクエスト検証を簡略化
回避すべきもの:
[FX]諸々を修正
[FT]変更
[RF]コードを更新
[BE]AI 生成のバックエンド変更
7. コミットの範囲
実用的な場合は、1コミットにつき1つの論理的な変更を推奨します。
タスクに複数の無関係な変更が含まれる場合:
- 誤解を招く単一のコミット説明を作成しない
- 実用的な場合は、個別のコミットを推奨する
- 各コミットごとに独立して接頭辞を選択する
- 各コミットメッセージが実際の内容を適切に表すようにする
ユーザーが明示的に単一のコミットを要求した場合は、その指示に従い、結合された変更の主な目的を最もよく表す接頭辞を選択します。
8. コミット前の検証
コミットを作成する前に、以下を確認します:
ID
- Git 作成者はユーザーの設定済み ID であること
- Git コミッターが AI/コードエージェント ID ではないこと
- AI エージェントの帰属が追加されないこと
メッセージ
- 有効な接頭辞で始まっていること
- ユーザーが明示的に別のものを指定しない限り、事前定義された接頭辞を使用していること
- デフォルトの接頭辞は正確に2文字の大文字であること
- 接頭辞が
[]で囲まれていること - 接頭辞の後に簡潔な説明が含まれていること
- Cursor、Codex、ChatGPT、AI エージェント、または類似のエージェント ID に言及していないこと
- 禁止された帰属トレーラーが含まれていないこと
GitHub 権限
リポジトリの権限またはコラボレーターを変更する前に:
- 対象が AI/コードエージェント ID でないことを確認する
- コードエージェントにコントリビューターまたはコラボレーターアクセスを決して付与しない
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 エージェント ID ではない。
[ ] Git コミッターが AI エージェント ID ではない。
[ ] デフォルトでコミットメッセージが [xx]xxxxx 形式に従っている。
[ ] デフォルトの接頭辞が事前定義されたリストから来ている。
[ ] ユーザー指定の接頭辞が事前定義リストより優先されている。
[ ] コミットメッセージに AI エージェントの帰属が含まれていない。
[ ] コミットトレーラーに AI エージェントの帰属が含まれていない。
[ ] GitHub 操作が不必要にリポジトリ権限を変更していない。