Claude Codeでコードレビューの指摘状況をHPゲージ風に可視化する方法

  • URLをコピーしました!
目次

Claude Code ユーザーが日常でぶつかる悩み

コードレビューやリポジトリの全体把握を Claude Code で進めていると、どうしても「今の進捗やレビュー状況がぱっと見で分からない」「作業の雰囲気が単調になりがち」といった悩みが出てきます。特に可視化・レポート系の Skill が不足していると、レビューの負荷や緊張感が伝わりにくく、チームのモチベーション維持も一苦労です。

  • コードレビューの指摘数や進捗状況が数値や一覧でしか把握できず、直感的なフィードバックが得られない
  • 真面目な開発現場ほど、レビューの雰囲気が淡々としすぎて盛り上がりに欠ける
  • 指摘が多いPRや大規模リファクタ時に「今どれくらいダメージを受けているか」感覚的に分からず、レビュー疲れが蓄積する
  • 複数人でのレビューやオンボーディング時に、どのPRが“危険水域”かを一目で判断しにくい
  • 長時間のAI coding workflowや複数のrepositoryを跨ぐ作業では、contextや進捗の共有が形骸化しやすい

こうした悩みは、Claude Code の context や path management の複雑さとも絡み合い、単なる数値レポートだけでは解決しきれません。

この Skill が一言でいうと何を解決するか

一言サマリ: コードレビューの指摘数をRPGのHPゲージ風に可視化し、進捗や緊張感を直感的かつ遊び心たっぷりに伝えるSkill。

もう少し具体化すると、このSkillを入れることで以下のような状態になる:

  • 指摘数やレビュー負荷を、HPゲージというビジュアルで即座に把握できるため、repository understanding が圧倒的にラクになる
  • レビューのたびに「HP減少」や「力尽きた」演出が入り、AI coding workflow の雰囲気が一気に盛り上がる
  • monorepo や複数directoryのレビューでも、どのPRが“危険”かを一目で判断できる
  • onboarding やチーム開発時、HPゲージを話題にしてコミュニケーションのきっかけを作れる
  • 長時間のreviewやlong context状況でも、進捗や体力感をビジュアルで共有できる
QUICK INSTALL
このSkillをすぐ試す

GitHub から degit でコマンド1行、Claude Code の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。

npx degit aazutaku/ai-note/claude-code/rpg-review-hp-gauge .claude/skills/rpg-review-hp-gauge

実行したらこうなる (3つの利用シーン)

使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。

シーン1: session 開始時 (CLAUDE.md と組み合わせて)


# /rpg-review-hp-gauge
> このPRのレビュー状況をHPゲージで見せて

[HPゲージ]  ██████████░░░░░ (60/100)
指摘数: 8件 / 最大HP: 100
あと3件でHP半分を下回ります
ラスボス戦のような緊張感!油断せず修正しましょう

シーン2: monorepo / package 跨ぎ作業時


> packages/service-a, packages/service-b のレビュー体力を表示

[service-a] HP: ████████░░░░ (40/100) 指摘12件
[service-b] HP: ██████████░░ (60/100) 指摘8件
service-a の体力が危険水域です!パーティ全滅に注意

シーン3: お遊び的な使い方


> 今日のコードレビューHPをチェック

本日のHPゲージ: █████░░░░░░ (25/100)
指摘が多すぎて力尽きました…
「勇者は倒れた!次回こそ完全クリアを目指しましょう」

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる HPゲージで進捗や体力感を共有、重要な指摘や疲弊度を直感的に把握

発動方式

明示呼び出し (/rpg-review-hp-gauge) と暗黙発動 (「HPゲージで見せて」「体力表示」などのdescriptionマッチ) の両方に対応。

Skill の中身を全部見せる

.claude/skills/rpg-review-hp-gauge/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。

.claude/skills/rpg-review-hp-gauge/
├── SKILL.md
├── scripts/
│   └── rpg_review_hp_gauge.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/rpg_review_hp_gauge.py RPG風HPゲージでPRレビュー指摘数を可視化
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: rpg-review-hp-gauge
description: コードレビューの指摘数をRPGのHPゲージ風に可視化したい時に発動。PRやレビューの集計、指摘数、レビュー完了などのキーワードを含む会話やコマンドで自動/明示的に起動します。
---

# 機能概要
このSkillは、コードレビューの指摘数を“RPGのHPゲージ”として可視化します。Pull Requestごとに「あなたのコードの体力(HP)」を算出し、指摘が多いほどHPが減少。HPが0になると「力尽きた」演出が表示され、開発現場にゲーム的な緊張感とユーモアをもたらします。レビューの負担感や指摘の多さを、数字ではなく視覚的・エンタメ的に伝えることで、チームの雰囲気を和らげたり、指摘数の多いPRへの注意喚起に役立ちます。

# 使い方
- 明示呼び出し例: `/rpg-review-hp-gauge --pr 1234 --total-hp 100`
- 暗黙発動キーワード例: 「レビュー指摘数」「PRの体力」「HPゲージ」「レビュー集計」などの語句を含む会話や、PRレビュー完了時の自動実行

# 出力例
```
=== RPG Review HP Gauge ===
Pull Request: #1234
指摘数: 17
HP: [■■■■■■■■■■■■□□□□□□] 60/100
状態: まだまだ戦える!
-----------------------------
Pull Request: #1235
指摘数: 40
HP: [□□□□□□■■■■■■□□□□] 20/100
状態: HPがピンチ!
-----------------------------
Pull Request: #1236
指摘数: 50
HP: [□□□□□□□□□□] 0/100
状態: 力尽きた...
```

# 注意点
- HPの初期値や減少率はコマンド引数で調整可能
- 指摘数の取得にはGitHub APIのアクセストークンが必要
- 除外パスや特定のレビュワーは現状未対応
- HPゲージの出力はターミナル/Markdown両対応
- ローカルに履歴を保存しません

# 参考資料
- [GitHub Pulls API](https://docs.github.com/en/rest/pulls/reviews)
- references/design_notes.md 参照

scripts/rpg_review_hp_gauge.py

import argparse
import sys
import os
import requests
import math

def get_review_comments(owner, repo, pr_number, github_token):
    headers = {
        'Authorization': f'token {github_token}',
        'Accept': 'application/vnd.github+json'
    }
    url = f'https://api.github.com/repos/{owner}/{repo}/pulls/{pr_number}/comments'
    response = requests.get(url, headers=headers)
    if response.status_code != 200:
        raise Exception(f'GitHub API error: {response.status_code} {response.text}')
    comments = response.json()
    return len(comments)

def get_pr_title(owner, repo, pr_number, github_token):
    headers = {
        'Authorization': f'token {github_token}',
        'Accept': 'application/vnd.github+json'
    }
    url = f'https://api.github.com/repos/{owner}/{repo}/pulls/{pr_number}'
    response = requests.get(url, headers=headers)
    if response.status_code != 200:
        raise Exception(f'GitHub API error: {response.status_code} {response.text}')
    pr = response.json()
    return pr.get('title', f'PR #{pr_number}')

def calc_hp(total_hp, num_comments, damage_per_comment):
    hp = max(0, total_hp - num_comments * damage_per_comment)
    return hp

def render_hp_gauge(hp, total_hp, gauge_length=20):
    filled = int((hp / total_hp) * gauge_length) if total_hp > 0 else 0
    empty = gauge_length - filled
    return '[' + '■' * filled + '□' * empty + f'] {hp}/{total_hp}'

def hp_status_message(hp, total_hp):
    if hp == 0:
        return '力尽きた...'
    elif hp < total_hp * 0.3:
        return 'HPがピンチ!'
    elif hp < total_hp * 0.7:
        return 'まだまだ戦える!'
    else:
        return '余裕の戦い!'

def print_report(pr_number, pr_title, num_comments, hp, total_hp):
    print('=== RPG Review HP Gauge ===')
    print(f'Pull Request: #{pr_number} - {pr_title}')
    print(f'指摘数: {num_comments}')
    print(f'HP: {render_hp_gauge(hp, total_hp)}')
    print(f'状態: {hp_status_message(hp, total_hp)}')
    print('-' * 29)

def main():
    parser = argparse.ArgumentParser(description='RPG風HPゲージでPRレビュー指摘数を可視化')
    parser.add_argument('--pr', type=int, nargs='+', required=True, help='Pull Request番号(複数可)')
    parser.add_argument('--repo', type=str, required=True, help='リポジトリ (owner/repo)')
    parser.add_argument('--total-hp', type=int, default=100, help='初期HP (デフォルト: 100)')
    parser.add_argument('--damage', type=int, default=2, help='指摘1件あたりのHP減少量 (デフォルト: 2)')
    parser.add_argument('--token', type=str, default=None, help='GitHubアクセストークン (環境変数GITHUB_TOKENでも可)')
    parser.add_argument('--markdown', action='store_true', help='Markdown形式で出力')
    args = parser.parse_args()

    github_token = args.token or os.environ.get('GITHUB_TOKEN')
    if not github_token:
        print('Error: GitHubアクセストークンが必要です (--token または環境変数GITHUB_TOKEN)')
        sys.exit(1)

    owner_repo = args.repo.split('/')
    if len(owner_repo) != 2:
        print('Error: --repoは owner/repo 形式で指定してください')
        sys.exit(1)
    owner, repo = owner_repo

    reports = []
    for pr_number in args.pr:
        try:
            num_comments = get_review_comments(owner, repo, pr_number, github_token)
            pr_title = get_pr_title(owner, repo, pr_number, github_token)
            hp = calc_hp(args.total_hp, num_comments, args.damage)
            reports.append({
                'pr': pr_number,
                'title': pr_title,
                'comments': num_comments,
                'hp': hp
            })
        except Exception as e:
            print(f'PR #{pr_number} の取得に失敗: {e}', file=sys.stderr)
            continue

    if args.markdown:
        print('### RPG Review HP Gauge')
        for r in reports:
            print(f'- **PR #{r["pr"]}**: {r["title"]}')
            print(f'  - 指摘数: {r["comments"]}')
            print(f'  - HP: `{render_hp_gauge(r["hp"], args.total_hp)}`')
            print(f'  - 状態: {hp_status_message(r["hp"], args.total_hp)}')
            print('')
    else:
        for r in reports:
            print_report(r['pr'], r['title'], r['comments'], r['hp'], args.total_hp)

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、コードレビューの指摘数をゲーム的なHPゲージで表現し、開発現場に遊び心と可視化の工夫をもたらします。指摘数が多いPRはHPが減り、0になると「力尽きた」演出を表示します。

# 公式ドキュメント抜粋
GitHub REST APIのPull Request Review Commentsエンドポイント([公式ドキュメント](https://docs.github.com/en/rest/pulls/comments))を利用し、PRごとの指摘数を集計します。

# 利用例
- `/rpg-review-hp-gauge --pr 1234 --repo myorg/myrepo --total-hp 100`
- レビュー完了時の自動実行や、定期的なPRレビュー状況の可視化にも活用可能です。

# 注意点
- 指摘数の定義は「レビューコメント数」としており、レビュワーごとの重複や除外条件は現状未対応です。
- GitHub APIトークンが必須です。

# 設計方針
CLI/スクリプト形式でPR番号を指定し、HPゲージをターミナルまたはMarkdownで出力。HP減少率や初期値は柔軟に調整可能です。

導入手順

このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Claude Code はファイル配置後に再起動するだけで自動認識します。

1. 前提

  • Node.js v16 以上 (degit 実行に必要)
  • Claude Code がローカルで動いていること

2. degit でフォルダ取得

プロジェクトのルートで以下のコマンドを実行します。

npx degit aazutaku/ai-note/claude-code/rpg-review-hp-gauge .claude/skills/rpg-review-hp-gauge

.claude/skills/rpg-review-hp-gauge の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .claude/skills/rpg-review-hp-gauge
# SKILL.md, scripts/, references/, README.md があればOK

4. Claude Code を再起動 (or Skill 自動検出を待つ)

新しいSkillが自動で認識されます。リスト確認したい場合は /rpg-review-hp-gauge と Skill 名で出てきます。

5. 動作確認

/rpg-review-hp-gauge で呼び出すか、自然言語で発動条件にマッチする指示を出すと Skill が動きます。期待される出力イメージは「実行したらこうなる」セクションを参照してください。

こんな瞬間に便利

  • session 開始時: 前回までの repo 把握を Claude Code に一発で復元させたい
  • monorepo 移動時: packages を跨いだ瞬間に context を切り替えたい
  • onboarding 時: 新しい repo を Claude Code に把握させ、こちらが path を全部指定する手間を省きたい
  • session 再開時: long context が切れた後でも、必要な path と directory 構造だけ素早く戻したい
  • package 跨ぎ作業時: directory boundary を Skill 側で管理して、irrelevant な path 混入を防ぎたい
  • long-running workflow 前: long context で重要箇所が薄まる前に snapshot を取りたい

気になるポイント (壊れそうな箇所)

実運用に乗せる前に頭に入れておきたい懸念。後で検証する観点でもある:

  • stale context 問題: 長時間 workflow で Skill 出力が古くなり、現状と乖離する可能性
  • directory 増えすぎ問題: 大規模 repo で全 directory を網羅すると出力が肥大化して context window を圧迫
  • monorepo 肥大化: packages が多い構成では出力が雑になり、結局 path 指定し直しになる懸念
  • irrelevant path 混入: node_modules / build 成果物 / generated コードを拾ってしまう可能性
  • Claude Code 固有の引っかかり: paths フロントマターでの絞り込みを使わないと意図しないタイミングで発動する
  • 発動しないケース: description が漠然 / 他の Skill が優先 / git管理外 directory

試す前に確かめたいこと

この Skill を実運用に投入する前に確かめたい問いを並べる:

  • 実 repo での token 消費は許容範囲か?
  • monorepo (packages 多数) で安定して動くか?
  • stale context にならず、長時間 workflow でも有効か?
  • CLAUDE.md との連携設計はどうあるべきか?
  • 指摘数とHPゲージの連動が正しく動作するか?
  • HPゼロ演出やRPGメッセージが表示されるか?
  • UIがRPGっぽく楽しい雰囲気になっているか?

実際に Claude Code で試した検証ログは Claude CodeでコードレビューをRPG風HPゲージ化してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Claude Code 公式ドキュメント と、本シリーズ「Claude Codeを便利にするSkill提案」の他記事も参照のこと。

関連タグで他のSkill記事を探す

本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次