jpskill.com
🛠️ 開発・MCP コミュニティ

trpc-scaffolder

Scaffolds tRPC routers, procedures, and Zod schemas with full type safety following DevPrep AI patterns

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o trpc-scaffolder.zip https://jpskill.com/download/17257.zip && unzip -o trpc-scaffolder.zip && rm trpc-scaffolder.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/17257.zip -OutFile "$d\trpc-scaffolder.zip"; Expand-Archive "$d\trpc-scaffolder.zip" -DestinationPath $d -Force; ri "$d\trpc-scaffolder.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して trpc-scaffolder.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → trpc-scaffolder フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
6

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

tRPC Scaffolder

Zod の検証を用いて、型安全な tRPC エンドポイントの作成を自動化します。

要約: スクリプトを実行してルーター/スキーマを作成し、_app.ts に登録し、スクリプトで検証します。


自動トリガー

キーワードによって自動的にトリガーされます:

  • "new endpoint", "create endpoint", "tRPC procedure"
  • "new router", "API", "Zod schema"

簡単な標準

ファイルの場所

lib/trpc/routers/
  _app.ts          # ここにすべてのルーターを登録します ⚠️
  {name}.ts        # ルーターファイル

lib/trpc/schemas/
  {entity}.schema.ts  # Zod スキーマ

ルーターのパターン

export const nameRouter = router({
  doThing: publicProcedure
    .input(inputSchema)
    .output(outputSchema)
    .mutation(async ({ input }) => { /* ロジック */ }),
});

スキーマのパターン

export const inputSchema = z.object({
  field: z.string().min(1),
});

export type Input = z.infer<typeof inputSchema>;  // ⚠️ 必須!

登録 (必須!)

// _app.ts 内
export const appRouter = router({
  ai: aiRouter,
  name: nameRouter,  // ⬅️ ここに新しいルーターを追加します
});

スクリプトの実行

ルーターの作成

./.claude/skills/trpc-scaffolder/scripts/create-router.sh user
# 作成されるファイル: lib/trpc/routers/user.ts
# ⚠️ _app.ts への登録を忘れないでください!

プロシージャの追加

./.claude/skills/trpc-scaffolder/scripts/add-procedure.sh ai getHints query
# ルーターに追加するコードスニペットを出力します

スキーマの作成

./.claude/skills/trpc-scaffolder/scripts/create-schema.sh hint
# 作成されるファイル: lib/trpc/schemas/hint.schema.ts

セットアップの検証

./.claude/skills/trpc-scaffolder/scripts/validate-trpc.sh
# チェック項目: ルーターの登録、型のエクスポート

簡単なリファレンス

Query と Mutation

Type Use For Method
Query データの取得 (GET) .query(async ({ input }) => ...)
Mutation データの変更 (POST/PUT/DELETE) .mutation(async ({ input }) => ...)

一般的な Zod パターン

Type Pattern Example
String z.string().min(1).max(100) 名前の検証
Number z.number().int().min(0).max(10) 難易度 0-10
Email z.string().email() メールアドレスの検証
Optional z.string().optional() オプションのフィールド
Array z.array(z.string()).min(1) 少なくとも 1 つのアイテム
Enum z.enum(["a", "b", "c"]) 固定の選択肢
Object z.object({ field: z.string() }) ネストされたオブジェクト

命名規則

  • ルーター: {domain}Router (例: aiRouter, userRouter)
  • プロシージャ: camelCase (例: generateQuestions, getHints)
  • スキーマ: {action}{Entity}{Input\|Output}Schema
  • ファイル: {entity}.schema.ts, {domain}.ts

エラーコード

Code When Example
NOT_FOUND リソースが存在しない User not found
BAD_REQUEST 無効な入力 Validation failed
UNAUTHORIZED 認証されていない Login required
FORBIDDEN 許可されていない Access denied
INTERNAL_SERVER_ERROR サーバーエラー API failure

よくある修正

ルーターが登録されていない

// ❌ このステップを忘れていました
// ✅ _app.ts に追加:
import { userRouter } from "./user";
export const appRouter = router({ ai: aiRouter, user: userRouter });

型のエクスポートが不足している

// ❌ 型のないスキーマ
export const userSchema = z.object({ name: z.string() });

// ✅ 推論された型を常にエクスポートする
export type User = z.infer<typeof userSchema>;

プロシージャの型が間違っている

// ❌ データの取得に mutation を使用している
getData: publicProcedure.mutation(...)

// ✅ GET 操作には query を使用する
getData: publicProcedure.query(...)

スキーマの検証エラー

// ❌ 検証がない
field: z.string()

// ✅ 制約を追加する
field: z.string().min(1, "Field is required")

追加ドキュメントを読み込むタイミング

SKILL.md は以下について自己完結しています:

  • ルーターとスキーマの作成
  • スクリプトの実行
  • よくあるエラーの修正

必要に応じて追加のドキュメントを読み込んでください:

Need Load
ステップバイステップのチュートリアル docs/quick-start-guide.md
高度な Zod パターン docs/trpc-patterns.md (1-80 行目)
エラー処理戦略 docs/trpc-patterns.md (150-220 行目)
テスト手順 docs/trpc-patterns.md (220-270 行目)
コンテキストとミドルウェア docs/trpc-patterns.md (80-150 行目)

コード例:

  • ✅ 完璧: examples/good-router.ts, examples/good-schema.ts

完全なプロジェクトドキュメント: Docs/api-design.md, Docs/api-transition/trpc-migration.md


バージョン: 1.0.0 | 更新日: 2025年10月 パターン: 品質レビュー担当者の構造に従う (最適化済み)

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

tRPC Scaffolder

Automate creation of type-safe tRPC endpoints with Zod validation.

TL;DR: Run scripts to create routers/schemas, register in _app.ts, validate with scripts.


Auto-Triggers

Auto-triggered by keywords:

  • "new endpoint", "create endpoint", "tRPC procedure"
  • "new router", "API", "Zod schema"

Quick Standards

File Locations

lib/trpc/routers/
  _app.ts          # Register all routers here ⚠️
  {name}.ts        # Router files

lib/trpc/schemas/
  {entity}.schema.ts  # Zod schemas

Router Pattern

export const nameRouter = router({
  doThing: publicProcedure
    .input(inputSchema)
    .output(outputSchema)
    .mutation(async ({ input }) => { /* logic */ }),
});

Schema Pattern

export const inputSchema = z.object({
  field: z.string().min(1),
});

export type Input = z.infer<typeof inputSchema>;  // ⚠️ Required!

Registration (Required!)

// In _app.ts
export const appRouter = router({
  ai: aiRouter,
  name: nameRouter,  // ⬅️ Add new routers here
});

Run Scripts

Create Router

./.claude/skills/trpc-scaffolder/scripts/create-router.sh user
# Creates: lib/trpc/routers/user.ts
# ⚠️ Remember to register in _app.ts!

Add Procedure

./.claude/skills/trpc-scaffolder/scripts/add-procedure.sh ai getHints query
# Outputs code snippet to add to router

Create Schema

./.claude/skills/trpc-scaffolder/scripts/create-schema.sh hint
# Creates: lib/trpc/schemas/hint.schema.ts

Validate Setup

./.claude/skills/trpc-scaffolder/scripts/validate-trpc.sh
# Checks: router registration, type exports

Quick Reference

Query vs Mutation

Type Use For Method
Query Fetch data (GET) .query(async ({ input }) => ...)
Mutation Modify data (POST/PUT/DELETE) .mutation(async ({ input }) => ...)

Common Zod Patterns

Type Pattern Example
String z.string().min(1).max(100) Name validation
Number z.number().int().min(0).max(10) Difficulty 0-10
Email z.string().email() Email validation
Optional z.string().optional() Optional field
Array z.array(z.string()).min(1) At least 1 item
Enum z.enum(["a", "b", "c"]) Fixed choices
Object z.object({ field: z.string() }) Nested object

Naming Conventions

  • Routers: {domain}Router (e.g., aiRouter, userRouter)
  • Procedures: camelCase (e.g., generateQuestions, getHints)
  • Schemas: {action}{Entity}{Input\|Output}Schema
  • Files: {entity}.schema.ts, {domain}.ts

Error Codes

Code When Example
NOT_FOUND Resource doesn't exist User not found
BAD_REQUEST Invalid input Validation failed
UNAUTHORIZED Not authenticated Login required
FORBIDDEN Not authorized Access denied
INTERNAL_SERVER_ERROR Server error API failure

Common Fixes

Router Not Registered

// ❌ Forgot this step
// ✅ Add to _app.ts:
import { userRouter } from "./user";
export const appRouter = router({ ai: aiRouter, user: userRouter });

Missing Type Exports

// ❌ Schema without types
export const userSchema = z.object({ name: z.string() });

// ✅ Always export inferred types
export type User = z.infer<typeof userSchema>;

Wrong Procedure Type

// ❌ Using mutation for fetching data
getData: publicProcedure.mutation(...)

// ✅ Use query for GET operations
getData: publicProcedure.query(...)

Schema Validation Error

// ❌ No validation
field: z.string()

// ✅ Add constraints
field: z.string().min(1, "Field is required")

When to Load Additional Docs

SKILL.md is self-sufficient for:

  • Creating routers and schemas
  • Running scripts
  • Fixing common errors

Load additional docs when needed:

Need Load
Step-by-step tutorial docs/quick-start-guide.md
Advanced Zod patterns docs/trpc-patterns.md (lines 1-80)
Error handling strategies docs/trpc-patterns.md (lines 150-220)
Testing procedures docs/trpc-patterns.md (lines 220-270)
Context & middleware docs/trpc-patterns.md (lines 80-150)

Code examples:

  • ✅ Perfect: examples/good-router.ts, examples/good-schema.ts

Full project docs: Docs/api-design.md, Docs/api-transition/trpc-migration.md


Version: 1.0.0 | Updated: October 2025 Pattern: Follows quality-reviewer structure (optimized)

同梱ファイル

※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。