mcpField
S
senior-fullstack

senior-fullstack

github.com/pixel-process-ug开发386 次安装34 周前更新
代码仓库

关于 senior-fullstack

面向端到端 TypeScript 应用开发的技能,涵盖数据库、API、界面和生产部署。它以 Next.js App Router、tRPC、Prisma 为主要技术路径,并强调全栈类型安全和分阶段检查。

主要功能

  1. 01Prisma 数据库模式与迁移
  2. 02使用 tRPC 和 Zod 构建 API
  3. 03Next.js Server 与 Client Components
  4. 04身份验证与生产部署
  5. 05监控、错误追踪和 CI/CD

适用场景

  1. 01搭建全栈 TypeScript 应用
  2. 02实现带验证和授权的 API
  3. 03开发连接数据库的 Next.js 界面
  4. 04为应用准备部署与监控

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/senior-fullstack确认已加载。

详细介绍

高级全栈工程师

概述

交付完整的端到端 TypeScript 应用,涵盖数据库设计、API 层、前端 UI、身份验证和部署。此技能专注于现代 TypeScript 全栈开发:Next.js App Router、用于类型安全 API 的 tRPC、用于数据库访问的 Prisma,以及包含监控的生产环境部署。

开始时宣告:“我将使用 senior-fullstack 技能进行端到端 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 之前,必须满足以下条件:
  • 已定义所有带 Zod 验证的 tRPC 路由器
  • 身份验证中间件保护适当的路由
  • 业务逻辑位于服务层(而非路由器中)
  • 错误处理会返回结构化错误

阶段 3:UI 层

**目标:**默认使用 Server Components 构建页面,并使用 Client Components 实现交互功能。

操作
  1. 使用 Server Components 构建页面(默认)
  2. 添加 Client Components 实现交互功能
  3. 通过 tRPC hooks 连接 API
  4. 实现乐观更新
  5. 添加加载和错误状态
组件类型决策表
需求组件类型数据来源
静态内容、数据显示Server Component直接调用 DB/API
交互式表单Client ComponenttRPC mutation hook
实时更新Client ComponenttRPC subscription 或轮询
搜索/筛选Client Component带防抖的 tRPC query
导航界面Server Component会话数据
停止 — 在进入阶段 4 之前,必须满足以下条件:
  • 页面默认使用 Server Components
  • Client Components 保持精简且有充分理由
  • 所有数据获取路径都具备加载和错误状态
  • mutation 的乐观更新正常工作

阶段 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 生态系统是部分
监控清单
  • 使用 source maps 进行错误跟踪(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"]
停止 — 满足以下条件后即可用于生产环境:
  • 身份验证已配置并经过测试
  • 部署流水线正常运行(预览 + 生产环境)
  • 监控和告警已启用
  • 已完成性能审计

全栈类型安全流程

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 可用时仍在客户端获取数据产生不必要的 JavaScript,速度更慢静态数据使用 Server Components
与前端共享 Prisma 客户端安全漏洞,会暴露数据库仅在服务端代码中使用 Prisma
外键缺少索引联接和查询速度慢为每个外键建立索引
在 localStorage 中存储令牌存在 XSS 漏洞使用 HttpOnly cookies
跳过 Zod 验证运行时类型错误在 API 边界验证所有输入
单体式 tRPC 路由器难以维护,容易产生合并冲突按领域拆分(用户、帖子等)
在 tRPC 过程函数中编写业务逻辑难以测试,无法复用提取到服务层

文档查询(Context7)

使用 mcp__context7__resolve-library-id,然后使用 mcp__context7__query-docs 获取最新文档。返回的文档优先于记忆中的知识。

  • react — 用于组件模式、hooks 或 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 边界验证所有输入
  • 为每种查询模式建立数据库索引
  • 基于环境进行配置(不使用硬编码值)

技能类型

灵活 — 根据项目上下文调整技术选择。强烈建议采用四阶段流程。整个技术栈的类型安全不可妥协。所有 API 输入都必须使用 Zod 验证。数据库模式变更必须使用迁移。

评论

支持 Markdown