kamae-review について
kamae-reviewは、kamaeの原則に照らしてTypeScriptコードを確認するレビュー用スキルです。分野別チェックリストを使い、問題の場所、理由、重大度、修正案を示します。
主な機能
- 01kamaeの原則に基づくコード確認
- 02分野別チェックリストによるレビュー
- 03重大度ごとの問題分類
- 04場所・理由・修正案の提示
活用シーン
- 01TypeScriptのドメインモデリング変更のレビュー
- 02境界検証やエラー処理の問題の発見
- 03プロジェクト固有の規約に沿ったコード確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ iwasa-kosui/ kamae-ts --skill kamae-reviewインストール後、Claude Code で/kamae-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
checklist/boundary.mddeclarative-and-tests.mddomain-modeling.mderror-handling.mdpii-protection.mdstate-transitions.md詳細
Kamae コードレビュー
kamae の原則に照らした敵対的レビューです。ナレッジベースは ../kamae/ にあり、このスキルは内容を重複させずにリンクします。
ステップ 0:適用されるルールを読み込む
他のステップに進む前に、優先順位に従って glob でルールを検索し、読み込みます。
.claude/rules/*.md(作業ツリーのルートにあるプロジェクトレベルのオーバーライド)~/.claude/rules/*.md(ユーザーのグローバル設定)- この
SKILL.mdからの相対パス../../rules/defaults/*.md(プラグインのデフォルト)
各ファイルについて:
- YAML frontmatter を読みます。
applies-toがkamae-reviewまたは*でないルールはスキップします。 nameごとにグループ化します。同じnameでは、最も優先度の高い階層のものだけを残します(1 > 2 > 3)。同じ階層内では、ファイル名の辞書順で最後のものを残します。enabled: falseのcheck-toggleルールは、以下のステップ 3 のチェック項目から指定されたチェックを除外します。conventionルールは、レビューで尊重するプロジェクト固有の期待事項を定めます(例:Branded Types の指定場所)。
ルールが見つからない場合は、すべてのチェックを有効にして続行します。ルールの形式については、../../rules/README.md を参照してください。
レビュープロセス
-
原則に関するナレッジを読み込みます。 レビュー対象のコードを読む前に、以下を読みます。
../kamae/SKILL.md— 原則のインデックス../kamae/validation-libraries/にある、プロジェクトのpackage.jsonに一致するバリデーションライブラリのガイド(zod.md/valibot.md/arktype.md)../kamae/result-libraries/にある、プロジェクトのpackage.jsonに一致する Result ライブラリのガイド(neverthrow.md/byethrow.md/fp-ts.md/option-t.md)- 読み込んだチェックリストのサブファイルで参照されている、
../kamae/配下の各トピックファイル
-
レビュー対象のファイルを読みます。
-
チェックリストを確認します。 チェックリストの各サブファイルを順に読み、指摘事項を項目に照らし合わせます。
checklist/domain-modeling.md— 判別可能なユニオン、コンパニオンオブジェクト、Branded Types、ファイル構成、ドメイン所有のポート、単一操作ごとに分けたリゾルバー/ストア(項目 1.x)checklist/state-transitions.md— 純粋な状態遷移、網羅性(項目 2.x)checklist/error-handling.md— Result 型、エラー境界の分類、DU エラー型(項目 3.x)checklist/boundary.md— スキーマ検証、asアサーションの禁止、スキーマから導出される型(項目 4.1、4.2、4.4)checklist/pii-protection.md— PII に対するSensitive<T>(項目 4.3)checklist/declarative-and-tests.md— 配列操作、イベント、フィクスチャ(項目 5.x、6.x)
-
指摘事項を報告します。 違反ごとに、以下を示します。
- 場所(
path:line)。 - 問題である理由 — 原則を引用(
../kamae/...へのリンク)し、違反によるリスクを説明します。 - 修正方法 — 修正後のコード例を示します。
- 場所(
-
提案(違反ではないものの改善の余地がある項目)も、指摘事項ではなく提案として示し、同じ形式で伝えます。
重大度の分類
各チェックリスト項目には、High/Medium/Low のいずれかが付けられています。
- High — 実行時エラーまたはコンプライアンス違反の直接的な原因(
as、PII 保護の欠如、スキーマ検証の欠如、意味的に異なるプリミティブに対する Branded Types の欠如)。 - Medium — 無効な状態表現、一貫性のないエラー処理、網羅性の欠如、すべてを含む型ファイル、ドメインモデルにクラスを使用、ドメインコントラクトがインフラストラクチャ型に結合している状態。
- Low — スタイル、可読性、エッジケースの正確性に関する問題(メソッド記法、ドメイン型での
interfaceの使用、Readonly<>の欠如、kind以外の判別子、命令型の配列ループ、as const satisfiesを使わないフィクスチャ、スキーマと型の重複、外向きの依存関係がない場所へのポート配置、必要以上に広範な依存コントラクト)。既存のスキーマと型の不一致は、誤った受け入れ、拒否、またはデータ露出による影響に基づいて指摘します。
Example Finding
### Use of method notation
`src/domain/task/task-store.ts:15`
`save(task: Task): Promise<void>` uses method notation. Per
[`../kamae/SKILL.md` §1 "Use function property notation"](../kamae/SKILL.md),
parameters become bivariant under method notation, so a narrower implementation
such as `save(task: DoingTask): Promise<void>` will pass type checking at the
injection site.
Suggested fix:
\`\`\`typescript
type TaskStore = {
save: (task: Task) => Promise<void>;
};
\`\`\`
コメント
Markdown 対応