generic-fullstack-code-reviewer について
Next.js/NestJSのフルスタックプロジェクト向けコードレビュー技能です。バックエンド、フロントエンド、スタック間の整合性を差分から確認し、汎用レビュー手法を補います。
主な機能
- 01NestJSの認証と認可の確認
- 02DTOの入力検証の確認
- 03Prismaのデータベース利用の確認
- 04Next.jsのコンポーネントとAPIルートの確認
- 05共有型とAPI契約の整合性確認
- 06環境設定とマイグレーションの確認
活用シーン
- 01コミット前のNext.js・NestJSコードレビュー
- 02保護ルートの認可と入力検証の確認
- 03フロントエンドとバックエンドの型の照合
- 04Prismaスキーマ変更のレビュー
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ travisjneuman/ .claude --skill generic-fullstack-code-reviewerインストール後、Claude Code で/generic-fullstack-code-reviewerを入力して読み込まれたか確認します。
詳細
フルスタックコードレビュアー
Next.js/NestJS のコードを本番環境向けの品質基準に照らしてレビューします。
拡張元: 汎用コードレビュアー - コードレビューの基本的な方法論、P0/P1/P2 の優先度システム、判断が必要なケースについては、基本スキルをお読みください。
コミット前の検証
テスト/lint/ビルドを順に実行するのではなく、差分を読んで検証します。以下の項目を確認してください。
フルスタック固有のチェック項目
バックエンド(NestJS)
認証と認可:
// Protected routes MUST have auth guard
@UseGuards(JwtAuthGuard)
@Get('profile')
getProfile(@CurrentUser() user: User) {
return this.userService.findById(user.id);
}
入力の検証(DTO):
// All inputs validated via class-validator
export class CreateUserDto {
@IsEmail()
email: string;
@IsString()
@MinLength(8)
password: string;
}
データベースの安全性:
// Use Prisma, never raw SQL
// ✓ Good
await this.prisma.user.findUnique({ where: { id } });
// ✗ Bad
await this.prisma.$queryRaw`SELECT * FROM users WHERE id = ${id}`;
フロントエンド(Next.js)
サーバーコンポーネントとクライアントコンポーネント:
// Default: Server Component (can fetch data, no hooks)
export default async function Page() {
const data = await getData();
return <div>{data}</div>;
}
// Client: Interactive (hooks, event handlers)
'use client';
export default function Interactive() {
const [state, setState] = useState();
return <button onClick={() => setState(...)}>Click</button>;
}
API ルートのパターン:
// app/api/[route]/route.ts
export async function POST(request: Request) {
const body = await request.json();
// Validate body before processing
return NextResponse.json({ success: true });
}
スタック間の一貫性
共有型:
// types/api.ts - Shared between frontend/backend
interface UserResponse {
id: string;
email: string;
createdAt: string;
}
API コントラクト:
- リクエスト DTO がフロントエンドのペイロードと一致している
- レスポンス型がフロントエンドの想定と一致している
- エラー形式(status、message、errors[])に一貫性がある
環境変数とシークレット
# .env (never committed)
DATABASE_URL=postgres://...
JWT_SECRET=...
# Check .env.example exists with placeholder values
# Verify .gitignore includes .env
Prisma のチェック項目
# After schema changes
npx prisma migrate dev --name description
npx prisma generate
- マイグレーションを元に戻せる
- スキーマ変更後に型が再生成されている
- リレーションが適切に定義されている
テストのパターン(ユーザーがテストを求めた場合)
バックエンド:
- サービスの単体テスト
- API エンドポイントの E2E テスト
- テスト用のデータベースのモック
フロントエンド:
- インタラクティブ機能のコンポーネントテスト
- 統合テスト用の API モック
フルスタックのクイックチェックリスト
- 保護されたルートに認証ガードが設定されている
- DTO ですべての入力を検証している
- 生の SQL クエリを使用していない
- 共有型が一致している
- .env がコミットされていない
- Prisma の型が最新である
関連項目
- 汎用コードレビュアー - 基本的な方法論
- コードレビュー基準 - 要件の全容
- デザインパターン - UI の一貫性
コメント
Markdown 対応