Communitygithub.com

Gentle AI — ブランチ & PR スキル

Gentle-AI は、Claude Code、Cursor、OpenCode、Codex、Pi など、既存の AI コーディングエージェントを設定します。永続的なメモリ、仕様駆動開発、厳選されたスキル、MCP サーバー、ペルソナ、オプションの bounded review を選択できます。オープンソースで、エージェントのロックインはありません。

Gentle AI — ブランチ & PR スキル とは?

このスキルは、Gentleman-Programming/gentle-ai リポジトリにおけるブランチ作成とプルリクエスト (PR) のプロセスを完全に自動化および標準化します。具体的には、承認済み Issue (`status:approved` ラベル) に PR をリンクすること、400行以内の変更に収めること (または `size:exception` ラベルとポリシー権限を文書化すること)、そして CI による自動チェックをすべて通過させることなど、厳格なルールを強制します。このスキルは、Conventional Commits 形式のコミットメッセージ、適切なブランチ命名規則、所定の PR 本文テンプレートの使用を義務付けており、開発プロセス全体に一貫性と品質をもたらします。また、AI エージェントによる誤った属性付与を防ぐため、コミットへの `Co-Authored-By` トレーラーの追加を禁止しています。このスキルは主に Claude Code、Cursor、Codex などの AI コーディングエージェントと連携し、開発ワークフローをガイドすることで、人的ミスを減らし、迅速で信頼性の高いコラボレーションを実現します。

対応✓Claude Code✓Codex CLI✓Cursor✓OpenCode
npx skills add Gentleman-Programming/gentle-ai

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Gentle AI — ブランチ & PR スキル は何をしますか?

使用タイミング

以下の作業が必要な場合に、このスキルをロードしてください。

  • 新しい修正や機能のためのブランチを作成する
  • Gentleman-Programming/gentle-ai でプルリクエストをオープンする
  • レビューのために変更を準備する

重要なルール

  1. すべての PR は承認済み Issue にリンクする必要があります — PR 本文に Closes/Fixes/Resolves #<N> を含め、その Issue には status:approved ラベルが付与されている必要があります。これがない PR は CI によって自動的に却下されます。
  2. 通常の type:* 分類 — CI は、type ラベルがゼロまたは複数の場合を拒否します。正規の Issue 作成ワークフロー契約に従ってください。現在の直接的な人間の指示が正確なターゲット/アクションを指定し、ターゲットホストの機能が検証され、1 つの bounded mutation とターゲットホストの読み戻しを使用する必要があります。それ以外の場合は、変更を行わずに待機します。
  3. 保護されたポリシーラベル — status:approved または size:exception ラベルを追加または削除するには、ターゲットホストリポジトリのメンテナーまたはリポジトリ承認者からの検証済みポリシー権限 (正確なターゲット/アクションに対するもの)、および認証されたアクターのターゲットホスト viewerPermission が MAINTAIN または ADMIN であることが必要です。size:exception には、さらに予算超過の理由を文書化する必要があります。
  4. 400行のレビュー予算 — PR の変更行数 (additions + deletions) は 400 行以内に保つか、size:exception ラベルに必要な理由を文書化します。
  5. 自動チェックが合格している必要があります — 下記の自動チェックテーブルを参照してください。
  6. Co-Authored-By トレーラーは禁止 — コミットに AI の帰属を決して追加しないでください。
  7. main/master への force-push は禁止 — 保護されたブランチです。

ワークフロー

1. Issue に status:approved が付いていることを確認する
   gh issue view <N> --repo Gentleman-Programming/gentle-ai

2. 以下の命名規則に従い、main からブランチを作成する

3. 仕様と設計に従って変更を実装する

4. ローカルでチェックを実行する(フォーマット + 単体テスト + E2E)

5. Conventional Commits 形式でコミットする

6. Issue を参照する PR をオープンする
   → PR 本文に 1 つの type:* 結果を宣言する
   → PR ラベル変更の前に、正規の Issue 作成ワークフロー契約を使用する
   → テンプレートを使用して PR 本文を記入する

7. マージ前にすべての自動チェックが合格していること

ブランチ命名規則

ブランチ名は以下のパターンに一致する必要があります:

^(feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)\/[a-z0-9._-]+$
タイプ例
feat/feat/user-login
fix/fix/duplicate-observation-insert
docs/docs/api-reference-update
refactor/refactor/extract-query-sanitizer
chore/chore/bump-bubbletea-v0.26
style/style/fix-linter-warnings
perf/perf/optimize-catalog-loading
test/test/add-pipeline-coverage
build/build/update-goreleaser-config
ci/ci/add-e2e-docker-job
revert/revert/undo-model-picker-change

ルール:

  • すべて小文字
  • 区切り文字にはハイフン、ドット、アンダースコアを使用 (スペース、大文字は不可)
  • 説明は短く説明的にすること

PR 本文フォーマット

PR 本文は、.github/PULL_REQUEST_TEMPLATE.md のテンプレートに従う必要があります。特記がない限り、すべてのセクションが必要です。

## 🔗 リンクされた Issue

Closes #<N>

## 🏷️ PR タイプ

- [ ] `type:bug` — バグ修正 (問題を修正する非互換性のない変更)
- [ ] `type:feature` — 新機能 (機能を追加する非互換性のない変更)
- [ ] `type:docs` — ドキュメントのみ
- [ ] `type:refactor` — コードリファクタリング (機能変更なし)
- [ ] `type:chore` — ビルド、CI、またはツールの変更
- [ ] `type:breaking-change` — 互換性を破る変更

## 📝 概要

<!-- この PR が何を行い、なぜそれを行うのかを明確に説明してください。 -->

## 📂 変更内容

| ファイル / エリア | 変更内容 |
|-------------|-------------|
| `path/to/file` | 簡単な説明 |

## 🧪 テスト計画

**単体テスト**
\`\`\`bash
go test ./...
\`\`\`

**Go フォーマット**
\`\`\`bash
go run ./internal/gofmtcheck
\`\`\`

**E2E テスト** (Docker が必要)
\`\`\`bash
cd e2e && ./docker-test.sh
\`\`\`

- [ ] 単体テスト合格 (`go test ./...`)
- [ ] Go フォーマット合格 (`go run ./internal/gofmtcheck`)
- [ ] E2E テスト合格 (`cd e2e && ./docker-test.sh`)
- [ ] ローカルで手動テスト済み

## ✅ コントリビューター確認リスト

- [ ] PR は `status:approved` の Issue にリンクされている
- [ ] PR の変更行数は 400 行以内、または `size:exception` の理由と検証済みポリシー権限が文書化されている
- [ ] API 読み戻しにより、この PR に適切な `type:*` ラベルが正確に 1 つ適用されていることを確認
- [ ] 単体テスト合格 (`go test ./...`)
- [ ] E2E テスト合格 (`cd e2e && ./docker-test.sh`)
- [ ] 必要に応じてドキュメントを更新した
- [ ] コミットは Conventional Commits 形式に従っている
- [ ] コミットに `Co-Authored-By` トレーラーは含まれていない

自動チェック

これらのチェックはすべての PR で実行され、マージ前にすべて合格する必要があります:

チェック検証内容修正方法
PR の認知的負荷をチェックPR の変更行数 (additions + deletions) が 400 行以内、または size:exception ラベルが付与されているPR を分割するか、size:exception の理由を文書化し、その正規ワークフローアクションの前にポリシー権限を確認する
Issue 参照をチェックPR 本文に Closes/Fixes/Resolves #N が含まれているPR 本文に Closes #<N> を追加する
Issue に status:approved があるかをチェックリンクされた Issue に必要なラベルが付与されている現在の直接的な指示とターゲットホストの機能が正確なアクションを許可する場合にのみ、正規の Issue 作成ワークフロー契約を使用する。それ以外の場合は待機する
PR に type:* ラベルがあるかをチェックPR に type:* ラベルが正確に 1 つ適用されている現在の直接的な指示とターゲットホストの機能が正確なアクションを許可する場合にのみ、正規の Issue 作成ワークフロー契約を使用する。それ以外の場合は待機する
単体テストgo test ./... が合格することプッシュ前に失敗するテストを修正する
Go フォーマットgo run ./internal/gofmtcheck が合格することプッシュ前にフォーマット違反の Go ファイルを修正する
E2E テストcd e2e && ./docker-test.sh が合格することプッシュ前に失敗する E2E シナリオを修正する

Conventional Commits

コミットメッセージは以下のパターンに一致する必要があります:

^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([a-z0-9\._-]+\))?!?: .+

フォーマット

<type>(<optional-scope>)!: <description>

[optional body]

[optional footer]

許可されるタイプ

タイプ目的PR ラベル
feat新機能type:feature
fixバグ修正type:bug
docsドキュメントのみtype:docs
refactorコード変更 (動作変更なし)type:refactor
choreメンテナンス、依存関係、ツールtype:chore
styleフォーマット、リンター (ロジック変更なし)type:chore
perfパフォーマンス改善type:feature
testテストの追加または更新type:chore
buildビルドシステムまたは外部依存関係type:chore
ciCI 設定type:chore
revert以前のコミットを取り消す取り消されたタイプに一致

互換性を破る変更

タイプ/スコープの後に ! を追加します:

feat(cli)!: rename --config flag to --config-file

BREAKING CHANGE: the --config flag has been renamed to --config-file.

互換性を破る変更は、type:breaking-change ラベルにマッピングされます。

例

feat(tui): add progress bar to installation steps
fix(agent): correct Claude Code detection on macOS
docs: update contributing guide
chore(deps): bump bubbletea to v0.26
refactor(pipeline): extract step executor
style: fix linter warnings in catalog package
perf(system): cache OS detection result
test(installer): add coverage for catalog step execution
build: update goreleaser config for arm64
ci: split unit and e2e test jobs
revert: undo model picker redesign
feat(cli)!: change default config path

コマンド

セットアップ

# 開始前に Issue が承認されていることを確認する
gh issue view <N> --repo Gentleman-Programming/gentle-ai

# ブランチを作成する
git checkout main && git pull
git checkout -b fix/<short-description>

ローカルテスト

# 単体テスト
go test ./...

# Go フォーマット
go run ./internal/gofmtcheck

# 単体テスト — 特定のパッケージ
go test ./internal/tui/...

# 単体テスト — 詳細出力
go test -v ./...

# E2E テスト (Docker が実行中である必要があります)
cd e2e && ./docker-test.sh

PR をオープンする

gh pr create \
  --repo Gentleman-Programming/gentle-ai \
  --title "fix(agent): correct Claude Code detection on Linux" \
  --body "$(cat <<'EOF'
## 🔗 リンクされた Issue

Closes #42

## 🏷️ PR タイプ

- [x] \`type:bug\` — バグ修正 (非互換性のない変更)

## 📝 概要

Claude Code バイナリの検出が Linux 上で HOME が設定されていない場合に失敗する問題を修正します。

## 📂 変更内容

| ファイル / エリア | 変更内容 |
|-------------|-------------|
| \`internal/agents/claude.go\` | HOME 環境変数のフォールバックを追加 |

## 🧪 テスト計画

- [x] 単体テスト合格 (\`go test ./...\`)
- [x] E2E テスト合格 (\`cd e2e && ./docker-test.sh\`)
- [x] ローカルで手動テスト済み

## ✅ コントリビューター確認リスト

- [x] PR は \`status:approved\` の Issue にリンクされている
- [x] PR の変更行数は 400 行以内、または \`size:exception\` の理由と検証済みポリシー権限が文書化されている
- [x] API 読み戻しにより、この PR に適切な \`type:*\` ラベルが正確に 1 つ適用されていることを確認
- [x] 単体テスト合格 (\`go test ./...\`)
- [x] E2E テスト合格 (\`cd e2e && ./docker-test.sh\`)
- [x] 必要に応じてドキュメントを更新した
- [x] コミットは Conventional Commits 形式に従っている
- [x] コミットに \`Co-Authored-By\` トレーラーは含まれていない
EOF
)"

PR ステータスの確認

gh pr checks --repo Gentleman-Programming/gentle-ai <PR-number>
gh pr view --repo Gentleman-Programming/gentle-ai <PR-number>

関連スキル