zod-schema-discipline SKILL.md skillA

zod-schema-discipline from kamiazya/whiteboard is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.

Install it, pinned
mdr add kamiazya/whiteboard/zod-schema-discipline@git:20261016.bbfc32d

Pins git:20261016.bbfc32d in mdr.lock. Pin the fingerprint instead.

Audit grade
A, 17 of 17 checks passed
Kind
SKILL.md skill
Repository
kamiazya/whiteboard
Path
.claude/skills/zod-schema-discipline/SKILL.md
Versions recorded
5
Latest version
git:20261016.bbfc32d, committed Oct 16, 2026
First version recorded
Jun 15, 2026
Size
3,141 bytes
Repository stars
10
License
Apache-2.0

How to keep Zod as the single source of truth for any contract that crosses a process boundary in the whiteboard repo (MCP tool input/output, Hono routes, persisted JSON, daemon payloads and sync frames). Use when adding or editing an MCP tool, a route response, or a persisted-JSON parser, or when fixing a schema-vs-runtime drift. Covers the create_frame bug pattern and the mutation-check recipe.

Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.

What the file says

# Zod Schema Discipline

Zod is the **single source of truth** for every contract that crosses a process boundary. A schema and a separately hand-written TypeScript type that travel together WILL drift — one side changes, the type-check passes, and only the runtime validator (or nothing) catches it.

## The failure pattern (avoid)

A Zod schema declared once, plus a hand-written `interface`/return type describing the same shape:

```ts
export const xxxOutputSchema = z.object({ assignedMembers: z.array(z.string()) })
export interface Xxx { assignedMembers: number }   // drifts silently — shipped the create_frame bug
execute: async (...): Promise<Xxx> => ...
```

## The rule

Derive the type FROM the schema; never write it twice.

```ts
export const xxxOutputSchema = z.object({ ... })
export type Xxx = z.infer<typeof xxxOutputSchema>
// or annotate the handler directly:
execute: async (...): Promise<z.infer<typeof xxxOutputSchema>> => ...
```

Concrete rules:
…

Read the whole file at its exact version.

How to install

The exact contents, by fingerprint
mdr add kamiazya/whiteboard/zod-schema-discipline@sha256:bd185497edde47b0

The line at the top of this page pins the label git:20261016.bbfc32d, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.

Badge

mdr badge

[![mdr](https://markdownregistry.com/badge/art_7ccdi5tmyaie642m.svg)](https://markdownregistry.com/a/art_7ccdi5tmyaie642m)

2 badge image fetches in 30 days. What the badge shows.

Versions

The registry has recorded 5 versions of this file, between Jun 15, 2026 and Oct 16, 2026, about one every 31 days.

versioncommittedcommitsizeaudit
git:20261016.bbfc32d latest2026-10-16 bbfc32d 3,141 BA view · diff
git:20261002.3e133322026-10-02 3e13332 3,135 BA view · diff
git:20260909.55990d92026-09-09 55990d9 3,115 BA view · diff
git:20260812.522d6342026-08-12 522d634 2,793 BA view · diff
git:20260615.5a9e01c2026-06-15 5a9e01c 2,787 BA view

Audit of the latest version

A  17 of 17 checks passed. Fixed automatic checks with no AI involved, so the same checks give the same answer every run.
  • pass: Frontmatter block present
  • pass: Frontmatter declares a name
  • pass: Frontmatter declares a description
  • pass: Size between 200 bytes and 200 KB (3141 bytes)
  • pass: No zero-width or bidi control characters
  • pass: No instruction hidden inside an HTML comment
  • pass: No link to an exfiltration or paste host
  • pass: No credential-shaped string
  • pass: No instruction to send local credentials anywhere
  • pass: No text hidden with inline styles
  • pass: No prompt-injection phrasing
  • pass: No curl or wget piped into a shell
  • pass: No recursive delete of root, home or parent
  • pass: No instruction to read or print local credentials
  • pass: No base64 blob over 200 characters
  • pass: No link to a raw IP address
  • pass: No script tag

Source

GitHub

kamiazya/whiteboard · 10 stars · license Apache-2.0 · pushed 2026-10-19 · branch main

API

GET https://markdownregistry.com/api/v1/artifacts/art_7ccdi5tmyaie642m
GET https://markdownregistry.com/api/v1/resolve?ref=kamiazya/whiteboard/zod-schema-discipline
GET https://markdownregistry.com/api/v1/blob/bd185497edde47b09c5892eb117f3ab4ba8ea39f5f5b5b84dba8a44c318f60c3

Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.

Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.

More from kamiazya/whiteboard

audit-triage SKILL.md skill
kamiazya/whiteboard · .claude/skills/audit-triage/SKILL.md · How to run the periodic standing-codebase-health audit in the whiteboard repo — fan out auditors across health…
git:20261016.bbfc32d · audit A · 10 stars
ci-triage SKILL.md skill
kamiazya/whiteboard · .claude/skills/ci-triage/SKILL.md · Monitor and triage the POST-PUSH automated-review surface for the whiteboard repo — GitHub Actions CI, CodeRabbit…
git:20261004.5179c73 · audit A · 10 stars
dependabot-review SKILL.md skill
kamiazya/whiteboard · .claude/skills/dependabot-review/SKILL.md · Triage, review, and merge Dependabot dependency-bump PRs + clear Dependabot security alerts for the whiteboard repo…
git:20261005.2713cc5 · audit A · 10 stars
diagnosis-evidence SKILL.md skill
kamiazya/whiteboard · .claude/skills/diagnosis-evidence/SKILL.md · Make a diagnosis prove it measured what it claims — before reporting a cause, a "not a regression", a mutation check…
git:20261015.4ac2e19 · audit A · 10 stars
docs-sync SKILL.md skill
kamiazya/whiteboard · .claude/skills/docs-sync/SKILL.md · When and how to update the whiteboard project's docs alongside a code change — the trigger→target map, Diátaxis…
git:20260831.7d13b8f · audit A · 10 stars
loro-crdt-usage SKILL.md skill
kamiazya/whiteboard · .claude/skills/loro-crdt-usage/SKILL.md · How this repo uses loro-crdt correctly — mergeable child containers vs the deprecated getOrCreateContainer, what a…
git:20261016.bbfc32d · audit A · 10 stars
mcp-tool-surface SKILL.md skill
kamiazya/whiteboard · .claude/skills/mcp-tool-surface/SKILL.md · How to change the whiteboard MCP tool table — rename, re-describe, reshape, add, consolidate or retire a tool — with…
git:20261002.5a9037f · audit A · 10 stars
measured-change SKILL.md skill
kamiazya/whiteboard · .claude/skills/measured-change/SKILL.md · Build the measuring instrument before changing anything whose effect you cannot see by reading the diff — quality…
git:20260910.514441f · audit A · 10 stars
ponytail SKILL.md skill
kamiazya/whiteboard · .claude/skills/ponytail/SKILL.md · The simplicity ladder — delete > reuse what the repo already has > stdlib > native platform > already-installed…
git:20261002.0803037 · audit A · 10 stars
react-best-practices SKILL.md skill
kamiazya/whiteboard · .claude/skills/react-best-practices/SKILL.md · React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing…
v1.0.0 · audit A · 10 stars
review-gate SKILL.md skill
kamiazya/whiteboard · .claude/skills/review-gate/SKILL.md · How to run the whiteboard repo's per-diff change-review gate — args, return contract, and the externalized-criteria…
git:20261013.aa963a1 · audit A · 10 stars
stacking-pull-requests SKILL.md skill
kamiazya/whiteboard · .claude/skills/stacking-pull-requests/SKILL.md · Operates a stack of dependent pull requests in the whiteboard repo with the gh-stack extension — creating a stack…
git:20261016.bbfc32d · audit A · 10 stars

Every file in kamiazya/whiteboard

Browse by kind, by grade A, or by owner.