mcpField
S
senior-fullstack

senior-fullstack

github.com/pixel-process-ug開発386 回インストール34 週間前に更新
リポジトリ

senior-fullstack について

データベース、API、UI、本番デプロイまでを扱う、TypeScriptアプリ開発向けスキルです。Next.js App Router、tRPC、Prismaを軸に、スタック全体の型安全性と段階ごとの確認を重視します。

主な機能

  1. 01Prismaスキーマとマイグレーション
  2. 02tRPCとZodによるAPI開発
  3. 03Next.js Server/Client Components
  4. 04認証と本番デプロイ
  5. 05監視、エラートラッキング、CI/CD

活用シーン

  1. 01フルスタックTypeScriptアプリの構築
  2. 02検証と認可を備えたAPIの実装
  3. 03データベース連携のNext.js UI開発
  4. 04アプリのデプロイと監視の準備

インストール

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

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill senior-fullstack

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

詳細

シニアフルスタックエンジニア

概要

データベース設計、API レイヤー、フロントエンド UI、認証、デプロイを網羅する、完全なエンドツーエンドの TypeScript アプリケーションを開発します。このスキルは、Next.js App Router、型安全な API を実現する tRPC、データベースアクセスに使う Prisma、モニタリングを含む本番環境へのデプロイを用いた、モダンな TypeScript フルスタックを専門としています。

開始時に宣言:「エンドツーエンドの TypeScript 開発に、シニアフルスタックスキルを使用しています。」


フェーズ 1:データレイヤー

目標: データベーススキーマとデータアクセスパターンを設計します。

アクション
  1. Prisma でデータベーススキーマを設計する
  2. リレーションとインデックスを定義する
  3. 開発用のシードデータを作成する
  4. マイグレーションのワークフローを設定する
  5. データアクセスにリポジトリパターンを実装する
Prisma スキーマの例
model User {
  id        String   @id @default(cuid())
  email     String   @unique
  name      String
  role      Role     @default(USER)
  posts     Post[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  @@index([email])
  @@index([createdAt])
}

model Post {
  id        String   @id @default(cuid())
  title     String
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id], onDelete: Cascade)
  authorId  String
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  @@index([authorId])
  @@index([published, createdAt])
}
インデックス戦略の判断表
クエリパターンインデックスの種類例
一意のフィールドによる検索一意インデックス@@unique([email])
外部キーによる絞り込み標準インデックス@@index([authorId])
絞り込みとソートの組み合わせ複合インデックス@@index([published, createdAt])
全文検索全文インデックスデータベース固有
地理空間クエリ空間インデックスデータベース固有
停止 — 次の条件を満たすまでフェーズ 2 に進まないでください:
  • すべてのリレーションを含むスキーマが定義されている
  • インデックスがすべてのクエリパターンをカバーしている
  • シードデータのスクリプトが存在する
  • マイグレーションが生成され、テスト済みである

フェーズ 2:API レイヤー

目標: tRPC と Zod のバリデーションを使用して、型安全な API を構築します。

アクション
  1. tRPC のルーターとプロシージャを定義する
  2. Zod で入力バリデーションを実装する
  3. 認証ミドルウェアを追加する
  4. サービスレイヤーにビジネスロジックを構築する
  5. エラーハンドリングとロギングを追加する
tRPC ルーターの例
export const userRouter = router({
  list: protectedProcedure
    .input(z.object({
      page: z.number().min(1).default(1),
      pageSize: z.number().min(1).max(100).default(20),
      search: z.string().optional(),
    }))
    .query(async ({ ctx, input }) => {
      const { page, pageSize, search } = input;
      const where = search ? { name: { contains: search, mode: 'insensitive' } } : {};
      const [users, total] = await Promise.all([
        ctx.db.user.findMany({
          where, skip: (page - 1) * pageSize, take: pageSize, orderBy: { createdAt: 'desc' },
        }),
        ctx.db.user.count({ where }),
      ]);
      return { users, total, totalPages: Math.ceil(total / pageSize) };
    }),

  create: protectedProcedure
    .input(createUserSchema)
    .mutation(async ({ ctx, input }) => {
      return ctx.db.user.create({ data: input });
    }),
});
認可パターンの判断表
パターン使用する場面例
ロールベース(RBAC)シンプルな権限モデル管理者とユーザー
リソースレベル所有者のみアクセス可能ユーザーが自分の投稿を編集できる
属性ベース(ABAC)複雑なルール組織のメンバーシップ+ロール+リソースの状態
フィーチャーフラグ段階的なロールアウトプレミアム機能
停止 — 次の条件を満たすまでフェーズ 3 に進まないでください:
  • すべての tRPC ルーターが Zod バリデーションとともに定義されている
  • 適切なルートが認証ミドルウェアで保護されている
  • ビジネスロジックがルーターではなくサービスレイヤーにある
  • エラーハンドリングが構造化されたエラーを返す

フェーズ 3:UI レイヤー

目標: デフォルトではサーバーコンポーネントを使用し、インタラクティブな機能にはクライアントコンポーネントを使用してページを構築します。

アクション
  1. サーバーコンポーネント(デフォルト)でページを構築する
  2. インタラクティブな機能にクライアントコンポーネントを追加する
  3. tRPC フック経由で API に接続する
  4. 楽観的更新を実装する
  5. ローディング状態とエラー状態を追加する
コンポーネントタイプの判断表
要件コンポーネントタイプデータソース
静的コンテンツ、データ表示サーバーコンポーネントDB/API を直接呼び出す
インタラクティブなフォームクライアントコンポーネントtRPC ミューテーションフック
リアルタイム更新クライアントコンポーネントtRPC サブスクリプションまたはポーリング
検索/絞り込みクライアントコンポーネントデバウンス付き tRPC クエリ
ナビゲーションの共通部分サーバーコンポーネントセッションデータ
停止 — 次の条件を満たすまでフェーズ 4 に進まないでください:
  • ページでデフォルトとしてサーバーコンポーネントを使用している
  • クライアントコンポーネントが最小限で、その使用理由が明確である
  • すべてのデータ取得経路にローディング状態とエラー状態がある
  • ミューテーションの楽観的更新が機能する

フェーズ 4:本番環境

目標: 認証、モニタリング、CI/CD を整えてデプロイに備えます。

アクション
  1. 認証を設定する(NextAuth.js / Clerk / Lucia)
  2. デプロイを設定する(Vercel / Docker)
  3. モニタリングとエラー追跡を追加する
  4. CI/CD パイプラインを実装する
  5. パフォーマンス監査を行う
認証ソリューションの選択表
ソリューション最適な用途SSR サポートセルフホスト
NextAuth.js (Auth.js)OAuth プロバイダー、JWT/セッションはいはい
Clerk迅速なセットアップ、マネージドサービスはいいいえ
Luciaカスタム、軽量はいはい
Supabase AuthSupabase エコシステムはい一部
モニタリングチェックリスト
  • ソースマップを使用したエラー追跡(Sentry)
  • パフォーマンスモニタリング(Vercel Analytics またはカスタム)
  • データベースクエリのパフォーマンス(Prisma メトリクス)
  • API エンドポイントのレイテンシとエラー率
  • 稼働状況のモニタリング(外部からの ping)
  • 構造化ロギングによるログ集約
  • エラー率急増時のアラート
Docker デプロイ
FROM node:20-alpine AS base
RUN corepack enable

FROM base AS deps
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile

FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN pnpm prisma generate
RUN pnpm build

FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"]
STOP — 次の条件を満たしたら本番環境の準備完了です:
  • 認証の設定とテストが完了している
  • デプロイパイプラインが機能する(プレビュー+本番環境)
  • モニタリングとアラートが有効になっている
  • パフォーマンス監査が完了している

フルスタックの型安全性パイプライン

Prisma Schema -> Prisma Client (types) -> tRPC Router -> tRPC Hooks -> React Components
     |                  |                     |              |              |
  Migration        Type-safe DB          Validated API    Auto-typed    Rendered UI
                   queries               with Zod         queries

プロジェクト構成

prisma/
  schema.prisma
  migrations/
  seed.ts
src/
  app/                    # Next.js App Router
    (auth)/               # Auth route group
    (dashboard)/          # Protected route group
    api/trpc/[trpc]/      # tRPC handler
  server/
    db.ts                 # Prisma client singleton
    trpc.ts               # tRPC init
    routers/              # tRPC routers
    services/             # Business logic
  components/
    ui/                   # Design system atoms
    features/             # Feature components
  hooks/                  # Custom React hooks
  lib/
    trpc.ts               # tRPC client
    auth.ts               # Auth configuration
    validators.ts         # Zod schemas
tests/
  unit/
  integration/
  e2e/

アンチパターン/よくある間違い

アンチパターン問題点適切なアプローチ
コンポーネント内での生 SQL型安全性とセキュリティを損ないますtRPC 経由で Prisma を使用します
Server Components が使える場面でのクライアント側 fetch不要な JavaScript が増え、遅くなります静的データには Server Components を使用します
Prisma クライアントをフロントエンドと共有するセキュリティ侵害につながり、データベースが露出しますPrisma はサーバーコード内でのみ使用します
外部キーのインデックス不足JOIN と検索が遅くなりますすべての外部キーにインデックスを設定します
トークンを localStorage に保存するXSS の脆弱性につながりますHttpOnly Cookie を使用します
Zod による検証を省略する実行時に型エラーが発生しますAPI 境界ですべての入力を検証します
モノリシックな tRPC ルーター保守が難しく、マージコンフリクトが発生しますドメイン(user、post など)ごとに分割します
tRPC プロシージャ内にビジネスロジックを記述するテストが難しく、再利用できませんサービスレイヤーに切り出します

ドキュメントの参照(Context7)

最新のドキュメントを確認するには、mcp__context7__resolve-library-id の後に mcp__context7__query-docs を使用します。返されたドキュメントは、記憶している知識より優先されます。

  • react — コンポーネントのパターン、フック、または React 19 以降の機能について
  • next.js — App Router、API ルート、またはサーバーコンポーネントについて
  • prisma — スキーマ設計、クライアントクエリ、またはマイグレーションについて
  • tailwindcss — ユーティリティファースト CSS のパターンまたは設定について

インテグレーションポイント

スキル関係
senior-frontendUI レイヤーはフロントエンドのパターンに従います
senior-backendAPI レイヤーはバックエンドのパターンに従います
senior-architectアーキテクチャの決定がサービス境界を導きます
security-review認証の実装はセキュリティパターンに従います
testing-strategyフルスタックテストでは戦略フレームワークを使用します
code-reviewレビューではスタックのすべてのレイヤーを対象にします
performance-optimization最適化はすべてのレイヤーに適用されます

主要原則

  • データベースからブラウザーまで、単一の言語(TypeScript)を使用します
  • スタック全体で型安全性を確保します(実行時の型の不一致を防ぎます)
  • デフォルトでは Server Components を使用し、必要に応じて Client Components を使用します
  • Zod を使用して API 境界ですべての入力を検証します
  • すべてのクエリパターンに対応するデータベースインデックスを設定します
  • 環境ベースの設定を使用します(ハードコードされた値は使用しません)

スキルタイプ

FLEXIBLE — 技術選定はプロジェクトの状況に合わせて調整してください。4 フェーズのプロセスを強く推奨します。スタック全体での型安全性は必須です。すべての API 入力を Zod で検証する必要があります。データベーススキーマの変更にはマイグレーションを使用する必要があります。

コメント