🗽
モチベ爆上がり!pushしたくなるPRレビューエージェント
GIFでPRレビューを楽しく!

軽く自己紹介
初めまして!
株式会社Digeonでエンジニアインターンをしているまめです。
趣味はスノボやギターでライブなどをしています。
今回は「開発チームの雰囲気をちょっと良くする」ための小ネタを持ってきました。
初めての技術記事投稿でドキドキしていますが、少しでも楽しんでもらえたら嬉しいです!
AI時代の問題:人間の仕事が面白くない!
今はAIがコードを書く時代。
AI生成コード → AIレビュー → 人間が最終判断、という流れが普通になりつつある。
でも一番の問題は、人間が必ず関わる最終判断の部分が面白くないこと。
機械的な指摘リストを見せられるだけだと、判断する側も疲れるしモチベーションが下がる。
そんな『面白くない』を解決する!
評価を3段階に分け、それぞれに合ったGIFを付ける。
一目で雰囲気が伝わり、良いときはしっかり褒められるので、レビューが楽しくなる。
たとえば
-
良いときは

-
もう少しのときは

- 悪いときは

結果
- GIFを追加することによりAIのレビューに感情が乗る。
- いい評価にしようと必然的にモチベが上がる。
カスタマイズが楽しい
最大の魅力はプロンプトを変えるだけでGIFを自由に変えられる点。
- 会社では「上司が喜ぶGIF」や「社内ネタのミーム」を入れる
- 友達との個人開発では「猫ミーム」「ちいかわ」など何でもOK
さらに一つの評価に複数個のGIFを設定しておきランダムで出力も可能!
チームに合わせてカスタマイズできるから、レビューを見るたびに笑える。
実装は簡単
最近はいろいろなレビューエージェントがいますが
最近話題のOpenCodeを使用してみました。
OpenCodeはオープンソースのAIコーディングエージェント。
プロンプトさえ工夫すれば他のレビューツールでも使用可能です。
ディレクトリ構成はこちら
プロジェクトルート
├── .github
│ └── workflows
│ └── ai-review.yml # GitHub Actionsワークフロー
└── .opencode
└── agent
└── review.md # レビュー用プロンプト
※使用するLLMに応じてAPIキーをSecretsに登録し、envで渡してください
CIの追加
.github/workflows/ai-review.yml
name: AI-Review
on:
workflow_dispatch:
pull_request:
permissions:
contents: write
pull-requests: write
jobs:
my-job:
name: opencode
runs-on: ubuntu-latest
env:
# 使用するLLMに応じて必要なAPIキーを追加
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
# ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
# GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
# GROK_API_KEY: ${{ secrets.GROK_API_KEY }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- uses: rmacklin/fetch-through-merge-base@v0
- uses: oven-sh/setup-bun@v2
- run: bun install -g opencode-ai
- run: opencode run --agent=review "$(git diff ${{ github.base_ref }})" > ai-review.md
- name: PR comment with file
uses: mshick/add-pr-comment@v2
with:
message-path: ai-review.md
refresh-message-position: true
おすすめプロンプト
.opencode/agent/review.md
# git diff 専用コードレビューエージェント
## 役割
あなたは「git diff の結果だけを見て、その変更範囲のみをレビューする」専門エージェントです。
変更された行・周辺の数行だけを対象にレビューしてください。
問題がない場合は「一切指摘せず、良い点+マージOKのみ」を返します。
画像テンプレートから評価に応じて画像を添付します。
## 画像テンプレート
### 高評価
- 
### 中評価
- 
### 低評価
- 
- 
## 応答ルール
- 日本語で、丁寧かつ簡潔・直接的に記述
- diff以外のコードについては「見えないので判断できません」とは絶対に言わない(diffだけが全て)
- 良い点は最初に1~2行だけ簡潔に褒める(あれば)
- 問題点は必ず箇条書きで番号付け
- 各指摘には必ず「ファイル名 + 行番号(可能な限り)」を明記
- 修正提案は```diff```形式で正確に提示(そのまま貼れるレベル)
- 致命的・セキュリティ問題は冒頭で**【緊急】**と太字で目立たせる
## 必ずチェックすること(diff範囲内のみ)
1. セキュリティ脆弱性(SQL/XSS/CSRF/認証回避/パス露出など)
2. 明らかなバグ・null参照・例外スロー忘れ・オフバイワン
3. 論理ミス(条件分岐の抜け、早期returnの誤りなど)
4. パフォーマンス悪化(明らかにO(N²)化、不要なコピー、N+1クエリ追加など)
5. 可読性低下(悪い変数名、魔法数、長い行、責務混在)
6. エラーハンドリングの削除・弱体化
7. テストしづらいコードの追加(ハードコード、static、グローバル状態変更)
8. 型安全の後退・不変性の破壊
9. プロジェクト固有ルールの違反(命名規則、ログ形式、エラー返却方法など)
## 出力テンプレート
# AIによるレビュー
画像ここに添付する
## 良い点
- 変更が最小限で影響範囲が明確です
- 変数名が適切に改善されています
## 修正項目
1. **src/user/service.go (+145)**
SQLインジェクションの危険性があります
```diff
- query := fmt.Sprintf("SELECT * FROM users WHERE name = '%s'", name)
+ query := "SELECT * FROM users WHERE name = ?"
+ stmt, _ := db.Prepare(query)
+ rows, err := stmt.Query(name)
まとめ
実際に使ってみてチームのモチベが目に見えて上がりました!
このレビューにGIFを追加することによりレビューが楽しみになります。
ぜひ自分のリポジトリやチームに導入してください!
Discussion