> ## Documentation Index
> Fetch the complete documentation index at: https://cogno.studio/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHubをCognoに連携する

> Cogno GitHub Appをインストールすると、Cognoがrepo・issue・pull requestを読み取り、提案taskに変えます。

![GitHub](https://mintcdn.com/genaxis/oMT3YnoHFDqPiaPK/images/integrations/github-mono.svg?fit=max\&auto=format\&n=oMT3YnoHFDqPiaPK\&q=85\&s=c1b61148cc175a3e02fddc259a53addb)

## 概要

| | |
| - | - |
| **方向** | 双方向 — Cognoがrepository・issue・pull requestを読み取り、承認したpull requestのmergeなど、GitHubへの操作も行えます。 |
| **接続方法** | Cogno **GitHub App** — organizationまたは個人アカウントごとに1回インストール。 |
| **設定できる人** | 連携を管理する権限を持つメンバー（AppのインストールにはGitHub側の権限も必要）。 |
| **必要なもの** | GitHub Appをインストールできるorganizationまたは個人アカウント。 |

Cognoは、チームがすでに作業しているrepositoryに直接つながります。GitHubを連携すると、pull request・issue・commitをそのまま読み取って **提案task** に変え、承認済みのPRのmergeといった操作まで行えます。普段のworkflowから離れる必要はありません。

## 事前確認

* 対象ワークスペースで連携を管理する権限がある。
* 対象organizationにGitHub Appをインストールできる（またはorg ownerに承認してもらえる）。
* Cognoに監視させるrepositoryが分かっている。

## CognoでGitHubを接続する

**1. GitHub連携を開く**

**連携** を開き、**GitHub** を選択します。

**2. GitHub Appをインストールする**

**アカウントを追加**を押します。デスクトップアプリでは標準ブラウザで接続画面が開くので、GitHubでインストールを完了します。

**3. GitHubで承認する**

organizationまたは個人アカウントを選んでAppを承認します。GitHub側で全リポジトリ、または特定のリポジトリを選べます。organizationの所有者による承認が必要な場合はGitHub側でリクエストとして受理され、Cognoにその旨が表示されます。承認後に **アカウントを追加** をもう一度実行すると接続が完了します。

**4. organizationを確認する**

Cognoに戻ると、**GitHubアカウント**の一覧にそのアカウントとリポジトリの設定が表示されます。接続したアカウントはすべて同じページに並びます。別のorganizationや個人アカウントは**アカウントを追加**から接続できます。

## repositoryを選ぶ

**1. organizationを開く**

接続したアカウントは**GitHubアカウント**の一覧にすべて表示され、それぞれにリポジトリ・メンバーの対応づけ・Issueの取り込み設定があります。アカウントの\*\*⋯**メニューに**接続を解除\*\*があります。

**2. repo一覧は自動で同期される**

**リポジトリ** の一覧は、アカウントを開いたときと、GitHub側で許可されたリポジトリがCognoの取り込み済みより多いときに、Cognoが自動でGitHub Appのインストールから取得します。実行中は **リポジトリを同期中…** と表示されます。

**3. 利用するrepositoryを選ぶ**

Cognoに監視させるrepositoryのトグルをオンにします。変更は自動で保存されます。保存に失敗すると元の状態に戻り、エラーを表示します。

1つのWorkspaceに複数のorganizationを接続し、複数のリポジトリを選択できます。GitHub Appの各インストールは1つのWorkspaceに所属します。選択したリポジトリは、Workspaceのすべてのメンバーとエージェントの実行から使えます。選択していないリポジトリは使えません。1つも選択していない場合は、GitHub Appのインストールが許可しているすべてのリポジトリを使えます。Issueの取り込みは別途設定します。

## IssueをTaskとしてImportする

**Issueの取り込み設定**を展開し、**Issue のインポート**で、新しいOpen IssueをTaskにするrepositoryを有効にします。変更は自動で保存されます。現在OpenのIssueも取り込む場合は **既存IssueをImport** を押します。

**Issue フィールド対応** でrepositoryを選び、Cognoが取得した値を対応付けます。

* Issue state → Task status
* labels → tags
* assignees → ワークスペース members
* milestones → projects

対応設定を保存してからImportします。IssueのtitleとbodyはTaskにコピーされ、その後のTask編集は独立して保持されます。Taskの **GitHub work** には接続元Issueへのリンクと現在のOpen・Closed stateが表示されます。

Issueの値を取得できない場合は、保存済み表示の代わりにエラーを表示します。**エラーの詳細**で内容を確認し、値の再取得を試してください。

## GitHub memberをワークスペース memberに対応付ける

organizationの接続では**メンバーの対応づけ**を展開し、GitHubのメンバーをワークスペースのメンバーに対応づけます。個人アカウントの接続にはこの欄は表示されません。

各行の**メンバーを選択**で対応づけます。解除する場合はメニューの**対応づけを解除**、一覧を更新する場合は**メンバーを同期**を使います。

## 自分のGitHubアカウントにログインする

**アカウント → プロフィール**の **GitHub** 行で**接続**を選びます。デスクトップアプリでは標準ブラウザが開くので、ログインを完了してCognoに戻ります。確認後は同じ行にGitHubのユーザー名と**接続済み**が表示されます。この個人ログインはすべてのワークスペースで共通で、ワークスペースの連携画面とは別に設定します。

| 設定 | 役割 |
| - | - |
| 個人のGitHubログイン | GitHub上の本人確認を行い、Cognoがあなたの代わりに作るcommitをあなたのGitHubアカウントに紐づけます。任意の設定で、リポジトリへのアクセス権限を増やしたり減らしたりはしません。 |
| ワークスペースのリポジトリ接続 | GitHub Appを通じてCognoにリポジトリへのアクセスを許可します。対象のリポジトリはWorkspaceのすべてのメンバーとエージェントの実行から使えます。 |
| メンバーの対応づけ | GitHubとCognoのメンバーを表示上対応づけます。手動の対応づけは本人確認やアクセス権限の付与にはなりません。 |

**メンバーの対応づけ**にはAccount設定へのリンクがあります。個人ログインを解除してもワークスペースのリポジトリ接続は残り、リポジトリ接続を解除しても個人のGitHubログインは残ります。

## CognoがGitHubで行うこと

| | |
| - | - |
| **活動を読み取る** | 選択したrepositoryのpush・pull request・issue・PR review・commentを取り込みます。 |
| **taskを提案する** | その活動がtaskになり、Cognoがふさわしいと考えたstatusに、**from GitHub** の印が付いたふつうの行として並びます。 |
| **taskから操作する** | Diffの正確な行へのコメント、PR reviewの送信、review threadへの返信・解決、pull requestのmergeをtaskから実行できます。 |
| **複数organization** | 1つのワークスペースに複数のorganizationを接続できます。 |

## taskからpull requestをレビューする

taskに開いているpull requestがある場合、**GitHub work** の **Review** からコメント・Approve・変更リクエストを送信できます。reviewerが変更をリクエストすると、taskにはreview内容の要約が表示されます。現在の未解決inline threadがすべて読み込まれ、文脈を確認しながら各threadへ返信または解決できます。

**変更ファイル** を開くと、pull requestの変更ファイルとDiffを取得します。追加・削除・contextの任意行を選択し、coding AIへの具体的な実装指示を新しいinline commentとして投稿できます。

Cognoはreviewを書き込む直前にpull requestの最新head commitを再確認します。inline commentは現在のDiffに存在する行かどうかも検証します。taskを開いた後にPRが更新された場合は、GitHubの状態を更新し、新しいheadを確認してから送信してください。

> [!NOTE]
>
> review・返信・thread解決は、接続済みCogno GitHub Appとして投稿されます。PR作成者は自身のPRをApproveできないため、Appが作成したPRは人のreviewerが承認してください。AppのApproveが必須review条件を満たすかどうかは、GitHub repositoryのルールで決まります。

## エージェントがGitHubでできること

Engineが実行するrunには、GitHub接続ごとにGitHubのtoolが渡されます。**Read GitHub**、**Publish to GitHub**、**Write to GitHub**、**Merge on GitHub** の4つとも最初から許可です。書き込みやmergeの前に人の確認を挟みたいときは **確認** を選びます。対面の実行では事前に確認が表示され、無人の実行では拒否されます。このページの **エージェントツール** で、ワークスペースのownerまたはadminが接続ごとに **ブロック**・**確認**・**許可** から選べます。Project設定の **Integrations** ではさらに狭められ、各行は最初ワークスペースの値に従います。

| Capability | 渡されるtool |
| - | - |
| **Read GitHub** | `github_read_repository`, `github_get_pull_request`, `github_get_issue`, `github_list_issues`, `github_list_pull_requests` |
| **Publish to GitHub** | `github_push_files`, `github_create_pull_request`, `github_update_pull_request`, `github_reply_review_thread`, `github_rerun_checks` |
| **Write to GitHub** | `github_create_issue`, `github_add_comment`, `github_request_review` |
| **Merge on GitHub** | `github_merge_pull_request` |

どのProjectのエージェントも、接続が届くすべてのrepositoryを使えます。あるProjectのエージェントをそのProjectのrepositoryだけに限るには、Project設定の **Integrations** でGitHubの行を開き、**エージェントが使えるリポジトリ** の **このProjectのリポジトリだけ** をオンにします。制限はその時点のrepositoryの一覧として保存されます。あとでProjectのrepositoryが変わったら、**Projectのリポジトリに合わせる** で更新してください。

**Read GitHub** はGitHubから直接読み取ります。対象は接続が届くrepositoryです（選択したrepository。1つも選択していなければインストールが許可するすべてのrepository）。file・commit・code検索・pull request・issueを読めます。Task自身のpull requestについては、変更ファイル、review、inline review thread、GitHubが報告した失敗内容と行annotation付きのCI checkも読めます。

**Publish to GitHub** は、エージェントがコード変更を届けるための手段です。現在のTaskのためにCognoが予約したbranchへcommitし、そのTaskのpull requestをrepositoryのbase branchに対して開き、タイトルと説明を書き直し、クローズや再オープンを行い、review threadに返信・解決し、最新commitで失敗したGitHub Actionsのrunを再実行します。commitはCogno GitHub Appが作成し、作業を始めたmemberがGitHubアカウントを連携していればco-authorとして記録されます。base branchを指定することもでき、Taskのないrunは指定したbranchからpull requestを開きます（どのTaskにも記録しません）。run終了後にCognoが自分でcommit・push・pull requestの作成を行うことはなくなりました。

**Write to GitHub** は、接続が届くrepositoryでissueの作成、issueとpull requestへのコメント、レビュー依頼を行います。

**Merge on GitHub** は、Task自身またはエージェントが指定したpull requestをmergeします。pull requestがopenでdraftではなく、競合がなく、最新commitのcheckがすべて完了して成功している場合だけmergeできます。mergeはそのcommitに固定されるため、途中でpushが入るとGitHubが拒否します。

## 管理・削除

* **GitHubで権限を管理** はGitHub上のappインストール設定を開きます。
* **接続を解除** はそのorganizationの接続と同期データ（repository、member mapping）を削除します。

> [!WARNING]
>
> organizationを削除すると、同期済みのrepoとmember mappingがワークスペースから削除されます。連携ページからいつでも再接続できます。

## よくある状態

| State | Meaning | Next action |
| - | - | - |
| GitHubで完了してもCognoがInstallのまま | インストールがまだ確定していない | 数秒待つか、Cognoのタブを再度アクティブにします |
| **リポジトリ** が空 | 初回の同期がまだ完了していない | GitHubのページを開き直すと、Cognoが自動で同期します |
| あるrepoのイベントが出ない | そのrepoが未選択 | **リポジトリ** でトグルをオンにします |
| **メンバーの対応づけ** が空 | org memberが未同期 | **Sync Members** を押します |
| 新しいOpen IssueがTaskにならない | そのrepositoryのIssue Importが無効 | **Issue のインポート** でトグルをオンにします |
| エージェントのrunがGitHubの作業を一時停止する | GitHubがこの接続にレート制限をかけている | 操作は不要です。Cognoは再試行せず、GitHubが求める時間ほど待ちます。数秒以内の同じpull requestの再読み込みは直前の結果を再利用します |

## 参照URL

* [About GitHub Apps](https://docs.github.com/apps/overview)
* [Installing a GitHub App](https://docs.github.com/apps/using-github-apps/installing-your-own-github-app)

## 関連docs

* [Troubleshooting](/docs/ja/troubleshooting.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.