ts-npm-zod-starter
$
npx mdskill add kongyo2/agent-primary-ts-starters/ts-npm-zod-starterInstall zod for runtime validation in TypeScript npm projects.
- Enforces boundary-only parsing to prevent double validation.
- Uses npm add zod to manage dependencies correctly.
- Generates schema files with inferred types and parse wrappers.
- Applies the Boundary Parsing Policy automatically.
SKILL.md
.github/skills/ts-npm-zod-starterView on GitHub ↗
--- name: ts-npm-zod-starter description: Add zod to a TypeScript npm project and install the boundary-only parsing convention. Use when starting a new TS project that needs runtime schema validation, or when layering zod onto an existing TS npm project — even if the user doesn't explicitly say "zod" or "validation". --- # TS + npm Zod Starter Use this when adding zod to a TypeScript npm project. In a monorepo, edit the workspace the user names — ask if it isn't named. ## Expected Outcome - `zod` is in `dependencies` of the target `package.json`. - The Boundary Parsing Policy below is the documented convention for the project's zod usage. ## Installation ```bash npm add zod ``` zod ships runtime code, so it belongs in `dependencies` (not `devDependencies`). When zod is already declared, keep its current version unless the user asks for a change. ## Boundary Parsing Policy - Parse untrusted input at the boundary with `z.parse` / `z.safeParse`. Downstream code takes the parsed value as trusted and does not re-parse. - `z.infer<typeof Schema>` is the single source of truth for the static type — let it stand alone instead of declaring a parallel `interface` or `type` alias. Why: parsing at every layer doubles the work and obscures where the trust boundary actually is. ## Schemas Directory When the project has a concrete shape worth validating, add its schema under `src/schemas/<name>.ts`, exporting the schema, its `z.infer` type, and a `parse(raw: unknown)` wrapper used at the boundary. When `src/schemas/` already exists, defer to the project's existing convention. ## Verification - `npx tsc --noEmit` passes. - `zod` appears under `dependencies` in `package.json`. ## References - zod docs: <https://zod.dev/>