sanity-best-practices

Verified·Scanned 2/18/2026

Comprehensive Sanity development best practices covering GROQ performance, schema design, Visual Editing, images, Portable Text, page builders, Studio configuration, TypeGen, localization, and migrations. Use this skill when building, reviewing, or optimizing Sanity applications.

by sanity-io·v1.0.0·53.0 KB·564 installs
Scanned from main at 0a140e3 · Transparency log ↗
$ vett add sanity-io/agent-toolkit/sanity-best-practices

Sanity Best Practices

Comprehensive best practices guide for Sanity development, maintained by Sanity. Contains rules across 10 categories, prioritized by impact to guide schema design, query optimization, and frontend integration.

When to Apply

Reference these guidelines when:

  • Writing GROQ queries or optimizing performance
  • Designing content schemas
  • Implementing Visual Editing and live preview
  • Working with images, Portable Text, or page builders
  • Configuring Sanity Studio structure
  • Setting up TypeGen for type safety
  • Implementing localization
  • Migrating content from other systems

Rule Categories by Priority

PriorityCategoryImpactPrefix
1GROQ PerformanceCRITICALgroq-
2Schema DesignHIGHschema-
3Visual EditingHIGHvisual-
4ImagesHIGHimage-
5Portable TextHIGHpte-
6Page BuilderMEDIUMpagebuilder-
7Studio ConfigurationMEDIUMstudio-
8TypeGenMEDIUMtypegen-
9LocalizationMEDIUMi18n-
10MigrationLOW-MEDIUMmigration-

How to Use

Read individual rule files for detailed explanations and code examples:

rules/groq-optimizable-filters.md
rules/schema-data-over-presentation.md
rules/_sections.md

Each rule file contains:

  • Brief explanation of why it matters
  • Incorrect code example with explanation
  • Correct code example with explanation
  • Additional context and references
  • Framework-specific notes (when applicable)

Framework Integration

Framework-specific guidance (Next.js, Astro, Remix, etc.) is available via the Sanity MCP server using list_sanity_rules and get_sanity_rules tool calls when available. If the MCP server is not configured, run npx sanity@latest mcp configure to set it up.