## 概要
[[📚The Five Levels from Spicy Autocomplete to the Dark Factory]]で定義されているLV4 [[エンジニアチーム]]を目指すロードマップ、課題、達成状況をまとめる。
## 目標と現状
### 目標(LV4)
1. 『仕様』を入力とし、『Web・BFF・DB・E2Eテストを含めた実装計画を出力する』(AIと対話)
2. 『実装計画』を入力とし、『プロダクトコード』と『E2Eテスト結果』を出力する (AIが全自動)
- 自動レビューもここに含める
3. 出力内容を確認し、問題なければ対応完了。問題があれば1か2のいずれかに戻る
### 今まで(LV3)
1. 『仕様』を入力とし、開発者がDBの設計を行う
2. 開発者が『BFF』の設計を行う
3. 開発者が『Web』の設計を行う
4. 🤖 AIが『BFFの設計』をもとに『BFFの実装』『ユニットテスト作成』を行う
- 開発者が『BFFの動作確認』を行う
5. 開発者が『BFFのE2Eテスト』を作成する
- 開発者が『BFFのE2Eテスト』を通す
6. レビュアーが『BFFの実装・ユニットテスト・E2Eテストのレビュー』をする
7. 🤖 AIが『Webの設計』をもとに『Webの実装』『ユニットテスト作成』を行う
- 開発者が『Webの動作確認』を行う
8. レビュアーが『Webの実装・テストのレビュー』をする
9. 開発者が『WebのE2Eテスト』を作成する
- 開発者が『WebのE2Eテスト』を通す
10. レビュアーが『WebのE2Eテストをレビュー』をする
## 1. 人的レビューの排除
正確には『人がレビューしなくても同等以上の品質がアウトプットとして出力されること』を保証できるようにする。(ただし、センシティブな機能除く)
### 対応内容
- 環境はLocal
- [[git worktree]]を使って、他と干渉しないつくり
- AIレビューは[[Docker]]コンテナ内の隔離環境で実行されるため安全性が高い
- 以下をコンテキストとして読み込みレビューする
- プルリクエストの説明
- 参照が必要なリポジトリ(1つ以上)の最新と、ブランチ分岐元の差分
- 結果は[[Slack]]に通知
- 指摘レベルは4段階 (CRITICAL, HIGH, MEDIUM, LOW)
- 通知総数は `総括(1)` + `指摘数(N)`
### 対応後のフロー
1. 『仕様』を入力とし、開発者がDBの設計を行う
2. 開発者が『BFF』の設計を行う
3. 開発者が『Web』の設計を行う
4. 🤖 AIが『BFFの設計』をもとに『BFFの実装』『ユニットテスト作成』を行う
- 開発者が『BFFの動作確認』を行う
5. 開発者が『BFFのE2Eテスト』を作成する
- 開発者が『BFFのE2Eテスト』を通す
6. 🤖 **AIが『BFFの実装・ユニットテスト・E2Eテストのレビュー』をする**
7. 🤖 AIが『Webの設計』をもとに『Webの実装』『ユニットテスト作成』を行う
- 開発者が『Webの動作確認』を行う
8. 🤖 **AIが『Webの実装・テストのレビュー』をする**
9. 開発者が『WebのE2Eテスト』を作成する
- 開発者が『WebのE2Eテスト』を通す
10. 🤖 **AIが『WebのE2Eテストをレビュー』をする**
### 課題
どちらも対応が必要。
- レビュー対象コードの品質がそこまで高くないため、レビューと実装の往復回数が多い
- **実装精度を上げる必要あり**
- Custom Agent または Skill の内容を見直す
- 『レビューの開始』『レビュー指摘に関する対応』のタイミングで人間の介入が必要
- **『レビューの開始』や『レビュー結果の対応』を連続実行できる仕組みが必要**
- 選択肢
- 1. [[GitHub Copilot CLI]]の[[Rubber Duck (GitHub Copilot CLI)|Rubber Duck]]を使う
- 2. [[cmux]]の `cmux` コマンドで[[ワークスペース (cmux)|ワークスペース]]の作成・読み取り・送信などを行う
- [[#1. 人的レビューの排除]] の仕組みをそのまま組み合わせやすい
- **PR作成前提という制約がある**
- 3. [[サブエージェント (GitHub Copilot CLI)|サブエージェント]]にレビューさせる
- 『実装時のレビュー』と『PR作成後のレビュー』はどちらも必要なのか?