mcpField
G
generic-fullstack-feature-developer

generic-fullstack-feature-developer

github.com/travisjneuman開発106176 回インストール1 日前に更新
リポジトリ

generic-fullstack-feature-developer について

Next.js/NestJS のフルスタックアプリ開発向けの機能開発ガイドです。汎用的な開発手順を補い、データフロー、Prisma、認証、実装チェックリストを扱います。

主な機能

  1. 01Next.js App Router のパターン
  2. 02NestJS モジュール構成
  3. 03Prisma スキーマとマイグレーション手順
  4. 04JWT 認証フロー
  5. 05フルスタック機能のチェックリスト

活用シーン

  1. 01機能のデータモデルと API の計画
  2. 02NestJS モジュールとフロントエンドコンポーネントの実装
  3. 03Prisma スキーマ変更のマイグレーション作成
  4. 04認証、エラー処理、型の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/travisjneuman/.claude --skill generic-fullstack-feature-developer

インストール後、Claude Code で/generic-fullstack-feature-developerを入力して読み込まれたか確認します。

詳細

フルスタック機能開発者

Next.js/NestJS のフルスタックアプリケーションで機能を開発するためのガイドです。

拡張元: 汎用機能開発者 - 開発ワークフロー、意思決定のフレームワーク、データフローパターン、エラー処理については、基本スキルをお読みください。

フルスタックのデータフロー

User Action → Event Handler → API Call → NestJS Controller
                                              ↓
UI Update ← Response ← Service ← Prisma ← Database
リクエスト/レスポンスサイクル
// Frontend: Call API
const response = await fetch('/api/users', {
  method: 'POST',
  body: JSON.stringify(userData),
});

// Backend: Handle request
@Post()
@UseGuards(JwtAuthGuard)
async createUser(@Body() dto: CreateUserDto) {
  return this.userService.create(dto);
}

Next.js App Router のパターン

ファイル規約
ファイル目的
page.tsxルート UI(デフォルトではサーバーコンポーネント)
layout.tsx共通 UI ラッパー
loading.tsxSuspense ローディング UI
error.tsxエラーバウンダリー
route.tsAPI エンドポイント
サーバーコンポーネントとクライアントコンポーネント
// Server Component (default) - can fetch data
export default async function Page() {
  const data = await getData(); // Direct DB/API call
  return <div>{data.title}</div>;
}

// Client Component - needs 'use client'
'use client';
export default function Interactive() {
  const [state, setState] = useState();
  return <button onClick={() => setState(...)}>Click</button>;
}

NestJS モジュールパターン

Module → Controller → Service → Prisma
機能モジュールの追加
// 1. Module definition
@Module({
  controllers: [UsersController],
  providers: [UsersService],
  exports: [UsersService],
})
export class UsersModule {}

// 2. Controller with guards
@Controller("users")
@UseGuards(JwtAuthGuard)
export class UsersController {
  @Post()
  create(@Body() dto: CreateUserDto) {
    return this.usersService.create(dto);
  }
}

// 3. Service with Prisma
@Injectable()
export class UsersService {
  constructor(private prisma: PrismaService) {}

  create(dto: CreateUserDto) {
    return this.prisma.user.create({ data: dto });
  }
}

Prisma ワークフロー

スキーマの変更
# 1. Edit schema.prisma
# 2. Create migration
npx prisma migrate dev --name add_user_role

# 3. Regenerate client
npx prisma generate

# 4. Update services to use new fields
型安全なクエリ
// ✓ Type-safe with generated types
const user = await this.prisma.user.findUnique({
  where: { id },
  include: { posts: true },
});

// ✗ Avoid raw SQL
await this.prisma.$queryRaw`SELECT * FROM users`; // No type safety

認証フロー

Login Request → Validate Credentials → Generate JWT → Set Cookie
      ↓
Protected Route → JwtAuthGuard → Extract User → Inject to Controller
認証の統合ポイント
// Frontend: Include credentials
fetch('/api/protected', { credentials: 'include' });

// Backend: Guard + decorator
@UseGuards(JwtAuthGuard)
@Get('profile')
getProfile(@CurrentUser() user: User) {
  return user;
}

機能チェックリスト(フルスタック)

開始前
  • データモデル(Prisma スキーマ)を計画する
  • API コントラクト(DTO)を定義する
  • 認証要件を特定する
開発中
  • Prisma スキーマを作成/更新する
  • マイグレーションを実行する
  • NestJS モジュール(コントローラー+サービス)を実装する
  • フロントエンドコンポーネントを作成する
  • ローディング状態/エラー状態を追加する
完了前
  • DTO バリデーションデコレーターを追加する
  • DTO と呼び出し元に照らして、サービスと API のエラー処理経路を確認する
  • バックエンドのユニットテストと API E2E テストは、ユーザーから依頼された場合にのみ行う
  • TypeScript の型が一致していることを確認する

関連項目

コメント