Antigravity ユーザーが日常でぶつかる悩み
Antigravity を使った AI coding workflow では、コードレビューや repository understanding の工程で「可視化」や「状況把握」が意外と難しいと感じる瞬間が多々あります。特に monorepo や複雑な directory 構成のプロジェクトでは、context や path management の混乱が起きやすく、レビューの指摘が増えるほど「今どんな状態?」が見えづらくなりがちです。
また、真面目な開発現場ほどレビューが淡々と進み、オンボーディングや session 再開時にも「場の空気」や「進捗感」が伝わりにくいという声もよく聞かれます。
- Antigravity が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Antigravity が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
レビューが進むほど「どれだけ指摘されたか」が分かりにくく、緊張感や達成感が薄れてしまうことも。単調なレビューをもっと直感的かつ楽しく、状況を分かりやすくしたい――そんな悩みが現場でよく挙がります。
この Skill が一言でいうと何を解決するか
一言サマリ: コードレビューの指摘数をRPGのHPゲージ風に可視化し、レビュー状況を一目で把握できるSkill。
このSkillを入れることで以下のような状態になる:
- レビュー指摘数がHPゲージとして可視化され、今の「体力」が直感的に分かる
- レビューごとにHPが減る演出で、緊張感と楽しさが加わり、開発現場の空気が一新される
- 指摘が多いと「力尽きた」などのRPG風メッセージが表示され、進捗や課題の把握が容易になる
- Antigravity の context・memory 管理と連動し、repo や directory 単位でレビュー状況を整理できる
- onboarding 時や session 再開時も、HPゲージで状況が可視化されるため、長時間 workflow でも重要な情報が埋もれにくい
GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/antigravity/rpg-review-hp-gauge .agent/skills/rpg-review-hp-gauge実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
> このPRのレビュー状況を見せて
[Review HP Gauge]
┌────────────────────┐
│■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 90/100
└────────────────────┘
指摘数: 2 / 残HP: 90
レビュー進行中。まだまだ余裕があります。
シーン2: monorepo / package 跨ぎ作業時
> packages/api/ と packages/web/ のレビュー状況をHPゲージで見せて
[packages/api/]
┌────────────────────┐
│■■■■■■■■■■■■■■■■■■■■ 60/100
└────────────────────┘
指摘数: 8 / 残HP: 60
[packages/web/]
┌────────────────────┐
│■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 80/100
└────────────────────┘
指摘数: 4 / 残HP: 80
シーン3: お遊び的な使い方
> もしHPがゼロになったらどうなる?
[Review HP Gauge]
┌────────────────────┐
│ 0/100
└────────────────────┘
指摘数: 20 / 残HP: 0
あなたのコードは力尽きた... 次の冒険者を待っています!
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Antigravity が自動で context を復元、最小プロンプトで再開 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る |
| 長時間 workflow | long context で重要箇所が薄まる | レビュー進捗や指摘数をHPゲージで可視化、状況が埋もれにくい |
発動方式
description マッチでの暗黙発動。
Skill の中身を全部見せる
.agent/skills/rpg-review-hp-gauge/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agent/skills/rpg-review-hp-gauge/
├── SKILL.md
├── scripts/
│ └── rpg_review_hp_gauge.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/rpg_review_hp_gauge.py |
RPG風コードレビューHPゲージ |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: rpg-review-hp-gauge
description: Antigravityがコードレビューの指摘数やPRコメント数を検出した際、HPゲージによる可視化を求めるキーワード(例:HPゲージ、体力バー、RPG風レビュー、指摘数可視化)が含まれている場合に発動します。
---
# 機能概要
このSkillは、コードレビュー時の指摘数をRPGのHPゲージ風に可視化します。PRごとに「あなたのコードの体力」をHPバーとして表示し、指摘が多いほどHPが減少。HPが0になると「力尽きた」演出メッセージが現れます。真面目なレビュー現場に遊び心を加え、緊張感と笑いを演出します。レビュー負荷の可視化やチームの雰囲気改善にも役立ちます。
# 使い方
明示的な呼び出しは不要です。Antigravityが「HPゲージ」「体力バー」「RPG風レビュー」「指摘数可視化」などのキーワードを含むレビュー状況やPRコメントを検出した際、自動的に発動します。レビュー指摘が多いPRや、レビュー進捗を可視化したい場面で活躍します。
# 出力例
```
[HPゲージ] あなたのコードの体力: [██████░░░░] 60/100
指摘数: 8 (最大HP: 100)
[HPゲージ] あなたのコードの体力: [░░░░░░░░░░] 0/100
指摘数: 20 (最大HP: 100)
力尽きた... 次回の冒険に期待しよう!
```
# 注意点
本Skillはレビュー指摘数の自動集計に依存します。除外パスや特定のファイルは設定により無視できますが、誤検出を防ぐためレビューコメントの形式に注意してください。HPゲージの閾値や最大HPはカスタマイズ可能です。ローカルに履歴を保存する場合、.agent/skills/rpg-review-hp-gauge/data/ 配下を利用します。
# 参考資料
詳細な設計方針やカスタマイズ方法は references/design_notes.md を参照してください。公式ドキュメントやRPG UIデザインの参考例も掲載しています。
scripts/rpg_review_hp_gauge.py
import argparse
import json
import os
import sys
from datetime import datetime
data_dir = os.path.join(os.path.dirname(__file__), 'data')
if not os.path.exists(data_dir):
os.makedirs(data_dir)
def load_reviews():
path = os.path.join(data_dir, 'reviews.json')
if not os.path.exists(path):
return []
with open(path, 'r', encoding='utf-8') as f:
return json.load(f)
def save_reviews(reviews):
path = os.path.join(data_dir, 'reviews.json')
with open(path, 'w', encoding='utf-8') as f:
json.dump(reviews, f, ensure_ascii=False, indent=2)
def calc_hp(num_issues, max_hp=100, issue_per_hp=5):
hp = max_hp - num_issues * issue_per_hp
hp = max(0, min(max_hp, hp))
return hp
def hp_bar(hp, max_hp=100, bar_len=10):
filled = int(bar_len * hp / max_hp)
bar = '█' * filled + '░' * (bar_len - filled)
return f'[{bar}] {hp}/{max_hp}'
def log_review(pr_id, num_issues, reviewer, max_hp=100, issue_per_hp=5):
reviews = load_reviews()
hp = calc_hp(num_issues, max_hp, issue_per_hp)
entry = {
'timestamp': datetime.now().isoformat(),
'pr_id': pr_id,
'num_issues': num_issues,
'reviewer': reviewer,
'hp': hp,
'max_hp': max_hp
}
reviews.append(entry)
save_reviews(reviews)
return entry
def list_reviews():
reviews = load_reviews()
if not reviews:
print('No review logs found.')
return
for r in reviews:
print(f"PR: {r['pr_id']} | 指摘数: {r['num_issues']} | HP: {r['hp']}/{r['max_hp']} | Reviewer: {r['reviewer']} | {r['timestamp']}")
def summary():
reviews = load_reviews()
if not reviews:
print('No review logs found.')
return
total = len(reviews)
avg_issues = sum([r['num_issues'] for r in reviews]) / total
avg_hp = sum([r['hp'] for r in reviews]) / total
print(f'レビュー記録数: {total}')
print(f'平均指摘数: {avg_issues:.2f}')
print(f'平均残HP: {avg_hp:.2f}')
def show_gauge(num_issues, max_hp=100, issue_per_hp=5):
hp = calc_hp(num_issues, max_hp, issue_per_hp)
bar = hp_bar(hp, max_hp)
print(f'[HPゲージ] あなたのコードの体力: {bar}')
print(f'指摘数: {num_issues} (最大HP: {max_hp})')
if hp == 0:
print('力尽きた... 次回の冒険に期待しよう!')
def parse_args():
parser = argparse.ArgumentParser(description='RPG風コードレビューHPゲージ')
subparsers = parser.add_subparsers(dest='command')
log_parser = subparsers.add_parser('log', help='レビュー指摘数を記録')
log_parser.add_argument('--pr', required=True, help='PR ID')
log_parser.add_argument('--issues', type=int, required=True, help='指摘数')
log_parser.add_argument('--reviewer', required=True, help='レビュワー名')
log_parser.add_argument('--max-hp', type=int, default=100, help='最大HP')
log_parser.add_argument('--issue-per-hp', type=int, default=5, help='指摘1件あたりHP減少量')
list_parser = subparsers.add_parser('list', help='レビュー履歴を一覧表示')
summary_parser = subparsers.add_parser('summary', help='レビュー履歴のサマリー表示')
gauge_parser = subparsers.add_parser('gauge', help='HPゲージを表示')
gauge_parser.add_argument('--issues', type=int, required=True, help='指摘数')
gauge_parser.add_argument('--max-hp', type=int, default=100, help='最大HP')
gauge_parser.add_argument('--issue-per-hp', type=int, default=5, help='指摘1件あたりHP減少量')
return parser.parse_args()
def main():
args = parse_args()
if args.command == 'log':
entry = log_review(args.pr, args.issues, args.reviewer, args.max_hp, args.issue_per_hp)
print('レビュー記録を保存しました:')
bar = hp_bar(entry['hp'], entry['max_hp'])
print(f'[HPゲージ] あなたのコードの体力: {bar}')
print(f'指摘数: {entry["num_issues"]} (最大HP: {entry["max_hp"]})')
if entry['hp'] == 0:
print('力尽きた... 次回の冒険に期待しよう!')
elif args.command == 'list':
list_reviews()
elif args.command == 'summary':
summary()
elif args.command == 'gauge':
show_gauge(args.issues, args.max_hp, args.issue_per_hp)
else:
print('コマンドを指定してください (log, list, summary, gauge)')
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
このSkillは、コードレビューの指摘数をRPGのHPゲージ風に可視化することで、開発現場に遊び心と緊張感をもたらします。指摘数が多いほどHPが減り、0になると「力尽きた」演出が表示されます。
# 公式ドキュメント抜粋
HPゲージの表示や指摘数のカウントは、Pythonスクリプトで自動化されています。履歴はJSONでローカル保存され、過去のレビュー状況も確認可能です。
# 利用例
- PRレビュー時に指摘数を入力し、HPゲージで可視化
- チームのレビュー傾向をサマリーで把握
- HPゼロ演出で場を和ませる
# 注意点
指摘数のカウント基準はプロジェクトごとに調整可能ですが、レビューコメントの形式によっては誤集計が発生する場合があります。最大HPや減少量もカスタマイズできます。
# 設計方針
シンプルなCLIとJSON保存で、他ツールとの連携や拡張も容易です。UIはRPGっぽさを重視しつつ、実用的なレビュー支援を目指しています。
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Antigravity がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/antigravity/rpg-review-hp-gauge .agent/skills/rpg-review-hp-gauge
.agent/skills/rpg-review-hp-gauge の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agent/skills/rpg-review-hp-gauge
# SKILL.md, scripts/, references/, README.md があればOK
4. Antigravity を再起動 (or Skill 自動検出を待つ)
新しいSkillが自動で認識されます。リスト確認したい場合は Antigravity に「使えるSkill一覧を見せて」と聞く と Skill 名で出てきます。
5. 動作確認
自然言語で発動条件にマッチする指示を出すと Skill が動きます。期待される出力イメージは「実行したらこうなる」セクションを参照してください。
こんな瞬間に便利
- session 開始時: 前回までの repo 把握を Antigravity に一発で復元させたい
- monorepo 移動時: packages を跨いだ瞬間に context を切り替えたい
- onboarding 時: 新しい repo を Antigravity に把握させ、こちらが 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 コードを拾ってしまう可能性
- Antigravity 固有の引っかかり: description のセマンティックマッチ精度が要件次第
- 発動しないケース: description が漠然 / 他の Skill が優先 / git管理外 directory
試す前に確かめたいこと
この Skill を実運用に投入する前に確かめたい問いを並べる:
- 実 repo での token 消費は許容範囲か?
- monorepo (packages 多数) で安定して動くか?
- stale context にならず、長時間 workflow でも有効か?
- プロジェクト指示との連携をどう組み立てるか?
- 指摘数とHPゲージの連動が正しく動作するか?
- HPゼロ演出やメッセージが表示されるか?
- UIがRPGっぽく楽しい雰囲気になっているか?
実際に Antigravity で試した検証ログは AntigravityのコードレビューをRPG風HPゲージで楽しんでみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
