content-modeling-best-practices

Structured content modeling guidance for schema design, reusability, and multi-channel delivery. Covers core principles: treating content as data rather than pages, maintaining single sources of truth, designing for future channels, and optimizing for editor workflows Includes decision frameworks for references versus embedded objects, separation of concerns, and content reuse patterns Provides taxonomy and classification guidance for flat, hierarchical, and faceted approaches Applies to...

npx skills add https://github.com/sanity-io/agent-toolkit --skill content-modeling-best-practices

Content Modeling Best Practices

Principles for designing structured content that's flexible, reusable, and maintainable. These concepts apply to any headless CMS but include Sanity-specific implementation notes.

When to Apply

Reference these guidelines when:

  • Starting a new project and designing the content model
  • Evaluating whether content should be structured or free-form
  • Deciding between references and embedded content
  • Planning for multi-channel content delivery
  • Refactoring existing content structures

Core Principles

  1. Content is data, not pages — Structure content for meaning, not presentation
  2. Single source of truth — Avoid content duplication
  3. Future-proof — Design for channels that don't exist yet
  4. Editor-centric — Optimize for the people creating content

References

Start with the reference that matches the modeling decision in front of you, instead of loading every topic at once. See references/ for detailed guidance on specific topics:

  • references/separation-of-concerns.md — Separating content from presentation
  • references/reference-vs-embedding.md — When to use references vs embedded objects
  • references/content-reuse.md — Content reuse patterns and the reuse spectrum
  • references/taxonomy-classification.md — Flat, hierarchical, and faceted classification

More skills from sanity-io

sanity-migration
sanity-io
Plans, implements, and reviews migrations from other CMSes and content systems into Sanity. Use when migrating or replatforming to Sanity from AEM, Adobe Experience Manager, Contentful, Strapi, Webflow, WordPress, Payload, Drupal, Markdown/MDX/frontmatter files, WXR/XML exports, CMS APIs, database dumps, static HTML, or when designing extraction, transformation, Portable Text conversion, asset migration, redirects, validation, and cutover workflows.
officialdevelopmentdatabase
create-agent-with-sanity-context
sanity-io
Build AI agents with structured access to Sanity content via Agent Context. Use when setting up a Sanity-powered chatbot, connecting an AI assistant to Sanity…
official
dial-your-context
sanity-io
Interactive session to create Instructions field content for a Sanity Agent Context MCP. Use this skill whenever users mention tuning agent context, improving…
official
optimize-agent-prompt
sanity-io
Tune your Sanity Agent Context agent through guided conversation. Transforms exploration data into production-ready instructions and crafts a system prompt…
official
shape-your-agent
sanity-io
Interactive session to craft a system prompt for an AI agent powered by Sanity Agent Context MCP. Use this skill when users want to define agent personality,…
official
content-experimentation-best-practices
sanity-io
Structured guidance for designing, executing, and analyzing content experiments to improve conversion and engagement. Covers hypothesis frameworks, metric selection, sample size calculation, and statistical significance testing across A/B and multivariate experiments Includes detailed resources on p-values, confidence intervals, power analysis, and Bayesian methods for interpreting results Provides CMS integration patterns for managing variants at the field level and connecting external...
official
portable-text-conversion
sanity-io
Convert HTML and Markdown content into Portable Text blocks for Sanity. Use when migrating content from legacy CMSs, importing HTML or Markdown into Sanity,…
official
portable-text-serialization
sanity-io
Render and serialize Portable Text to React, Svelte, Vue, Astro, HTML, Markdown, and plain text. Use when implementing Portable Text rendering in any frontend…
official