Decided once. Committed.
001 / Schema as a system
Document roles, factory functions, singletons. Every schema looks the same, so every editor knows where to go. You never model the structure from scratch again.
002 / The hard fields, already built
The three fields nobody gets right the first time. A link field that handles internal refs, external URLs, email, and params. A media field that normalizes image, Mux, Rive, and Lottie into one shape, each returning dimensions, so you forget layout shift. A page builder with guardrails. Reusable, typed, composed everywhere.
003 / Agent-native
Ask an agent to build this and you get a different architecture every run, all plausible, none decided. Here the decisions are made. AGENTS.md and a dozen scoped skills let any agentic tool ingest the conventions instead of inventing them, and preconfigured MCP servers let it read the Next.js runtime and drive a real Chrome to check its own work. No drift.
004 / Fetch layer, solved
CDN bypassed in production, Data Cache doing the work, webhooks invalidating on publish, draft mode wired in. Stale content after publish stops being a midnight problem.
005 / A Studio editors actually use
Every document type where editors expect it. Pages own their routes, singletons stay locked, no hunting. Clients stop emailing to ask where their homepage lives.
006 / SEO, done not deferred
Per-page metadata from schema, sitemap driven by Sanity, OpenGraph with auto-cropped images, robots.txt included. Nothing bolted on the week before launch.
007 / Production-ready from day one
Basic auth, spam-protected forms, redirects managed in Sanity, analytics, view transitions. The plumbing you reconfigure every project, already wired.
008 / Wired up, not just cloned
An interactive setup script provisions the Sanity project, mints the tokens, adds CORS, and registers the revalidation webhook, then writes your .env. Export and migration scripts back up production and move content between environments. The first run is handled, not documented.
/$$$$$$$$ /$$ /$$ /$$$$$$ /$$
|__ $$__/| $$ | $$ /$$__ $$ | $$
| $$ | $$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$ |__/ \ $$ /$$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$$
| $$ | $$__ $$ /$$__ $$ | $$__ $$ /$$__ $$| $$ /$$/|_ $$_/ /$$$$$/ /$$__ $$ |____ $$| $$ | $$ /$$_____/
| $$ | $$ \ $$| $$$$$$$$ | $$ \ $$| $$$$$$$$ \ $$$$/ | $$ |___ $$ | $$ | $$ /$$$$$$$| $$ | $$| $$$$$$
| $$ | $$ | $$| $$_____/ | $$ | $$| $$_____/ >$$ $$ | $$ /$$ /$$ \ $$ | $$ | $$ /$$__ $$| $$ | $$ \____ $$
| $$ | $$ | $$| $$$$$$$ | $$ | $$| $$$$$$$ /$$/\ $$ | $$$$/ | $$$$$$/ | $$$$$$$| $$$$$$$| $$$$$$$ /$$$$$$$/
|__/ |__/ |__/ \_______/ |__/ |__/ \_______/|__/ \__/ \___/ \______/ \_______/ \_______/ \____ $$|_______/
/$$ | $$
| $$$$$$/
\______/
/$$$$$$ /$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$$
|____ $$ /$$__ $$ /$$__ $$ | $$ | $$ /$$__ $$| $$ | $$ /$$__ $$ /$$_____/
/$$$$$$$| $$ \__/| $$$$$$$$ | $$ | $$| $$ \ $$| $$ | $$| $$ \__/| $$$$$$
/$$__ $$| $$ | $$_____/ | $$ | $$| $$ | $$| $$ | $$| $$ \____ $$
| $$$$$$$| $$ | $$$$$$$ | $$$$$$$| $$$$$$/| $$$$$$/| $$ /$$$$$$$//$$
\_______/|__/ \_______/ \____ $$ \______/ \______/ |__/ |_______/|__/
/$$ | $$
| $$$$$$/
\______/