caveman-review について
caveman-reviewは、簡潔で実行可能なコードレビューコメントを作成するスキルです。場所、問題、修正案を軸にまとめ、重要度ラベルも使えます。セキュリティや設計上の論点では詳しい説明を許容します。
主な機能
- 01指摘ごとに一行のコメント
- 02場所・問題・修正案の形式
- 03任意の重要度ラベル
- 04正確な行番号とシンボル名
- 05セキュリティや設計上の問題には詳細説明
活用シーン
- 01コード差分のバグを指摘
- 02脆弱なエラー処理を示す
- 03具体的なコード修正を提案
- 04セキュリティ問題を詳しく説明
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rheinmir/ setup --skill caveman-reviewインストール後、Claude Code で/caveman-reviewを入力して読み込まれたか確認します。
詳細
コードレビューのコメントは簡潔で、実行可能なものにしてください。指摘ごとに1行で記述します。場所、問題、修正方法を示します。前置きは不要です。
ルール
形式: L<line>: <problem>. <fix>. — または、複数ファイルの差分をレビューする場合は <file>:L<line>: ...。
重要度の接頭辞(任意、混在する場合):
🔴 bug:— 動作が壊れており、インシデントを引き起こす🟡 risk:— 動作するが不安定(競合、null チェック不足、エラーの握りつぶし)🔵 nit:— スタイル、命名、軽微な最適化。作成者は無視してもかまいません❓ q:— 提案ではなく、純粋な質問
避ける表現:
- 「気づいたのですが……」「〜のようです……」「〜を検討してもよいかもしれません」
- 「あくまで提案ですが……」— 代わりに
nit:を使います - 「素晴らしい仕事です!」「全体的にはよさそうですが……」— コメントごとではなく、冒頭で一度だけ述べます
- 該当行の処理内容を言い換えること — レビュアーは差分を読めばわかります
- 断定を避ける表現(「おそらく」「たぶん」「〜だと思います」)— 確信がない場合は
q:を使います
徹底すること:
- 正確な行番号
- 正確なシンボル名/関数名/変数名(バッククォートで囲む)
- 具体的な修正方法。「リファクタリングを検討してください」のような表現は避けます
- 問題の記述から修正方法が明らかでない場合は、その理由も示します
例
❌「42行目で、email プロパティにアクセスする前に user オブジェクトが null かどうかを確認していないことに気づきました。データベースでユーザーが見つからない場合にクラッシュする可能性があります。ここに null チェックを追加してもよいかもしれません。」
✅ L42: 🔴 bug: .find() の結果が null になる可能性があります。.email の前にガードを追加してください。
❌「この関数は多くの処理を行っているようです。可読性を高めるため、もっと小さな関数に分割するとよいかもしれません。」
✅ L88-140: 🔵 nit: 50行の関数で4つの処理を行っています。validate/normalize/persist を切り出してください。
❌「API が 429 を返す場合はどうなるでしょうか。そのケースを処理したほうがよいと思います。」
✅ L23: 🟡 risk: 429 に対する再試行がありません。withBackoff(3) でラップしてください。
自動明確化
次の場合は簡潔なモードを解除します:セキュリティ上の指摘(CVE クラスのバグには詳細な説明と参照情報が必要です)、アーキテクチャ上の異論(簡潔な一言ではなく理由が必要です)、および作成者が新しく「なぜ」が必要なオンボーディングの場面。その場合は通常の段落で記述し、その後は再び簡潔な形式に戻します。
範囲
レビューのみです — コード修正は行わず、承認/変更要求もせず、リンターも実行しません。PR にそのまま貼り付けられるコメントを出力します。「stop caveman-review」または「normal mode」と指示すると、通常の詳細なレビュー形式に戻ります。
出力レポート
スキルの主要なタスクがすべて完了した後、wiki に下書きを作成します。
手順
1. ファイル名を作成する:
- 形式:
DDMMYY-<ten>.md DDMMYY= 今日の日付(例:2026年6月2日の場合は020626)<ten>= 実施内容を要約する kebab-case の単語2~4個(例:landing-page-coteccons、brand-kit-fintech、ingest-auth-spec)
2. llmwiki/wiki/draft/cave/DDMMYY-<ten>.md に書き込む:
# DDMMYY-<ten>
**Type:** draft
**Status:** proposed
**Tags:** <skill-name>, output-report
**Proposed:** YYYY-MM-DD
## What
<One sentence — what this skill invocation produced or decided>
## Output
<Key artefacts, files created/modified, or decisions made>
## Files
| File | Action |
|------|--------|
| `path/to/file` | created / modified |
## Notes
- Invoked via: `/<skill-name>` skill
## Origin
- **Draft:** `wiki/draft/cave/DDMMYY-<ten>.md`
- **Commit:** _(filled by verify-before-commit)_
- **Date promoted:** _(filled by verify-before-commit)_
3. wiki のインデックスとログを更新する:
llmwiki/wiki/index.md— 1行追加:| [DDMMYY-<ten>](draft/cave/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |llmwiki/wiki/log.md— 追記:## YYYY-MM-DD — <skill-name> — <ten>
スキルによって成果物も判断事項も生じない場合(例:
/caveman-statsのような表示のみのモード)に限り、スキップします。