new-input
Create a Zod input schema file in src/backend/services/inputs/ for a domain entity
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Create a Zod input schema file in src/backend/services/inputs/ for a domain entity
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Generate a semver-compliant release note from git history; on user confirmation, bump version, update CHANGELOG, create git tag, and publish a GitHub Release with gh
Scaffold a new backend server action with auth check, Zod input validation, repository call, and error handling
Scaffold a typed React client component with props interface, Tailwind styling, and shadcn/ui primitives
Scaffold a React Hook Form with Zod validation, useMutation, and toast notifications
Scaffold a Next.js App Router page with optional server-side session check, metadata, and layout
Scaffold TanStack Query useQuery and/or useMutation hooks for a feature, calling a backend server action
| name | new-input |
| description | Create a Zod input schema file in src/backend/services/inputs/ for a domain entity |
Create a new Zod input schema file for a domain in src/backend/services/inputs/.
src/backend/services/inputs/<domain>.input.tsconst <Domain>Input = { ... } object containing all schemas for the domainparseAsync() — never parse().optional() and .nullable() explicitly where needed.transform() to normalize data (e.g. empty string → null)page: z.number().default(1) and limit: z.number().default(10)z.string()z.enum([...]) matching the domain modelimport { z } from "zod";
export const <Domain>Input = {
// Create
create<Domain>Input: z.object({
field: z.string().min(1),
optional_field: z.string().optional().nullable(),
}),
// Update (always requires an ID)
update<Domain>Input: z.object({
<domain>_id: z.string(),
field: z.string().optional(),
}),
// Paginated list
list<Domain>Input: z.object({
page: z.number().default(1),
limit: z.number().default(10),
}),
// Nested metadata with transform
withMetaInput: z.object({
metadata: z.object({
canonical_url: z
.union([z.string().url(), z.literal(""), z.null()])
.transform((v) => (v === "" ? null : v))
.optional(),
}).optional().nullable(),
}),
};
src/backend/services/inputs/<domain>.input.ts with all schemas.