A/B testing and content experimentation methodology for data-driven content optimization. Use when implementing experiments, analyzing results, or building experimentation infrastructure.
Add this skill
npx mdskills install sanity-io/content-experimentation-best-practicesWell-structured experimentation methodology with organized resources, but lacks actionable agent directives

Sanity Agent Toolkit
Collection of resources to help AI agents build better with Sanity. Supports Cursor, Claude Code, VS Code, Lovable, v0, and any other editor/agent compatible with MCP, Agent Skills, or .mdc rules.
.mdc files covering schema design, GROQ, Visual Editing, SEO, localization, migrations, and front-end framework integrations.Choose your path based on how you want agents to work with Sanity:
Give agents direct access to Sanity projects and always up-to-date agent rules via the MCP server.
Run in terminal to detect and configure MCP for Cursor, Claude Code and VS Code automatically:
npx sanity@latest mcp configure
Uses your logged-in CLI user for authentication — no manual tokens or OAuth needed.
Cursor
One-click install:
Or manually: Open Command Palette (Cmd+Shift+P / Ctrl+Shift+P) → View: Open MCP Settings → + New MCP Server → add to mcp.json:
{
"mcpServers": {
"Sanity": {
"type": "http",
"url": "https://mcp.sanity.io"
}
}
}
Claude Code
Run in terminal. Authenticate with OAuth on next launch:
claude mcp add Sanity -t http https://mcp.sanity.io --scope user
VS Code
Open Command Palette (Cmd+Shift+P / Ctrl+Shift+P) → MCP: Open User Configuration → add:
{
"servers": {
"Sanity": {
"type": "http",
"url": "https://mcp.sanity.io"
}
}
}
Lovable
Settings → Connectors → Personal connectors → New MCP server → Enter Sanity as name and https://mcp.sanity.io as Server URL → Add & authorize → Authenticate with OAuth.
v0
In the prompt input field, click Prompt Tools → MCPs → Add New → Select Sanity → Authorize → Authenticate with OAuth.
Replit
Go to Integrations Page → scroll to MCP Servers for Replit Agent → Add MCP server → Enter Sanity as name and https://mcp.sanity.io as Server URL → Test & Save → Authenticate with OAuth.
OpenCode
Add to your opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sanity": {
"type": "remote",
"url": "https://mcp.sanity.io",
"oauth": {}
}
}
}
Then run: opencode mcp auth sanity
Other clients
For any MCP-compatible client, add https://mcp.sanity.io as the server URL.
If your client doesn't support remote MCP servers, use a proxy like mcp-remote:
{
"mcpServers": {
"Sanity": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.sanity.io", "--transport", "http-only"]
}
}
}
See the Sanity MCP docs for authorization options and troubleshooting.
Install best practices skills that work with any Agent Skills-compatible agent.
npx skills add sanity-io/agent-toolkit
See Option 3 for plugin installation.
Install the Sanity plugin to get MCP server, agent skills, agent rules, and commands.
/plugin marketplace add sanity-io/agent-toolkit
/plugin install sanity-plugin@sanity-agent-toolkit
You should see the Sanity skills listed.
Use the sanity-scaffold skill to create a blog post schema
Or run /sanity to explore all capabilities.
In Cursor chat, run:
/add-plugin sanity-plugin
Install the agent rules locally to teach your editor Sanity best practices:
mkdir -p .cursor/rulesrules/ folder to your project's .cursor/rules/ directory.AGENTS.md to your project root to act as a knowledge router.With MCP connected, your AI can use tools like:
query_documents — run GROQ queries directlycreate_documents_from_json / create_documents_from_markdown — create draft documentspatch_document_from_json / patch_document_from_markdown — surgical edits to existing documentspublish_documents / unpublish_documents — manage document lifecycledeploy_schema / get_schema — deploy and inspect schemascreate_version — create version documents for releasesgenerate_image / transform_image — AI image generation and editingsearch_docs / read_docs — search and read Sanity documentationlist_sanity_rules / get_sanity_rules — load agent rules on demandSee the full list of available tools.
Best practices skills that agents like Claude Code, Cursor, GitHub Copilot, etc. can discover and use automatically. Skills follow the Agent Skills format. See Option 2 for installation.
| Skill | Description |
|---|---|
| sanity-best-practices | GROQ performance, schema design, Visual Editing, images, Portable Text, Studio, TypeGen, localization, and migrations |
| content-modeling-best-practices | Structured content principles: separation of concerns, references vs embedding, content reuse |
| seo-aeo-best-practices | SEO/AEO with EEAT principles, structured data (JSON-LD), technical SEO patterns |
| content-experimentation-best-practices | A/B testing methodology, statistical foundations, experiment design |
The onboarding guide follows three phases:
Just say: "Get started with Sanity" to begin.
Portable .mdc files that provide Sanity best practices to AI agents.
Core fundamentals
sanity-schema.mdc: The "Data > Presentation" philosophy, defineType syntax, and shared fields.sanity-groq.mdc: Performance rules, fragment reuse, and the "Golden Rule" of projections.sanity-visual-editing.mdc: Implementation of Content Source Maps (Stega) and Presentation Tool.sanity-typegen.mdc: TypeScript type generation from schema.sanity-project-structure.mdc: File organization for Studio and monorepos.sanity-get-started.mdc: Interactive 3-phase onboarding guide.sanity-app-sdk.mdc: Building custom apps with the Sanity App SDK, React hooks, and real-time patterns.sanity-blueprints.mdc: Infrastructure as Code for Sanity resources.Framework rules
sanity-nextjs.mdc: App Router, defineLive, and metadata handling.sanity-remix.mdc: React Router loaders and data fetching patterns.sanity-svelte.mdc: SvelteKit hooks and loaders.sanity-nuxt.mdc: Nuxt modules and useSanityQuery.sanity-astro.mdc: Astro content collections and islands.sanity-hydrogen.mdc: Shopify Hydrogen and Sanity Connect.Best practices
sanity-migration.mdc: Strategies for importing HTML/Markdown from legacy CMSs.sanity-image.mdc: Hotspots, LQIP, and the urlFor builder.sanity-studio-structure.mdc: Organizing the Studio sidebar (singletons, groupings).sanity-portable-text.mdc: Rendering rich text with custom components.sanity-page-builder.mdc: Page builder patterns and block component rendering.sanity-localization.mdc: Internationalization patterns.sanity-seo.mdc: Metadata, sitemaps, and Open Graph.| Command | What it does |
|---|---|
/sanity | List available skills and help topics |
/review | Review code for Sanity best practices |
/typegen | Run TypeGen and troubleshoot issues |
/deploy-schema | Deploy schema with verification |
sanity-io/agent-toolkit/
├── AGENTS.md # Knowledge router & agent behavior
├── README.md # This file
├── .claude-plugin/ # Claude Code plugin configuration
│ └── marketplace.json # Plugin metadata and marketplace config
├── .cursor-plugin/ # Cursor plugin configuration
│ ├── marketplace.json # Cursor marketplace metadata
│ └── plugin.json # Per-plugin manifest
├── .mcp.json # MCP server configuration
├── assets/ # Plugin branding
│ └── logo.svg # Sanity logo for marketplace display
├── commands/ # Agent commands
│ ├── sanity.md # /sanity help
│ ├── review.md # /review
│ ├── typegen.md # /typegen
│ └── deploy-schema.md # /deploy-schema
├── rules/ # Agent rules (.mdc)
│ ├── sanity-schema.mdc # Schema design patterns
│ ├── sanity-groq.mdc # GROQ query patterns
│ ├── sanity-nextjs.mdc # Next.js integration
│ └── ... # Additional framework rules
├── scripts/ # Validation and CI scripts
│ └── validate-cursor-plugin.mjs # Cursor plugin validator
└── skills/ # Agent skills (agentskills.io format)
├── sanity-best-practices/ # Comprehensive Sanity skill
│ ├── SKILL.md
│ └── rules/ # Individual rule files
├── content-modeling-best-practices/
├── seo-aeo-best-practices/
└── content-experimentation-best-practices/
Found a better pattern? Missing a framework or best practice?
.mdc files in rules/skills//rules/npm run validate:all to check skill validity and Cursor plugin structure.License: MIT
Best experience: Claude Code
/plugin marketplace add sanity-io/content-experimentation-best-practicesThen /plugin menu → select skill → restart. Use /skill-name:init for first-time setup.
Other platforms
Install via CLI
npx mdskills install sanity-io/content-experimentation-best-practicesContent Experimentation Best Practices is a free, open-source AI agent skill. A/B testing and content experimentation methodology for data-driven content optimization. Use when implementing experiments, analyzing results, or building experimentation infrastructure.
Install Content Experimentation Best Practices with a single command:
npx mdskills install sanity-io/content-experimentation-best-practicesThis downloads the skill files into your project and your AI agent picks them up automatically.
Content Experimentation Best Practices works with Claude Code, Claude Desktop, Cursor, Vscode Copilot, Windsurf, Continue Dev, Codex, Gemini Cli, Amp, Roo Code, Goose, Opencode, Trae, Qodo, Command Code, Replit. Skills use the open SKILL.md format which is compatible with any AI coding agent that reads markdown instructions.