Delete 25 atomic reference files that duplicated content already
covered by the comprehensive topic guides (groq.md, schema.md, etc.).
Unique content from atomics (optimizable filters table, defineMigration
example, compound cursor pattern, icon mapping table, stegaClean
alternatives, etc.) was merged into the corresponding guide before
deletion.
Also makes migration.md an index that points to migration-html-import.md
for the HTML deep-dive, keeping the pattern extensible for future
migration guides.
Updates SKILL.md and AGENTS.md to reflect the consolidated structure
(47 → 22 reference files).
Migrate all 21 .mdc agent rules from rules/ into the sanity-best-practices
skill as the single source of truth, following the agentskills.io spec.
- Move comprehensive guides to skills/sanity-best-practices/references/
(e.g., sanity-nextjs.mdc → references/nextjs.md)
- Rename rules/ → references/ per agentskills.io specification
- Convert .mdc frontmatter to standard .md (add title/tags, drop alwaysApply)
- Update all internal cross-references to new paths
- Rewrite SKILL.md with Quick Reference index (Vercel pattern)
- Add compiled AGENTS.md inside skill with all 26 atomic rules
- Update root AGENTS.md Knowledge Router to point to new locations
- Update README.md with new repository structure
- Delete all 21 old rules/sanity-*.mdc files (clean break)
- All 4 skills pass validation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add missing author field to cursor plugin marketplace.json
- Restore query-level filter in migration example for performance
- Clarify sameAs vs socialLinks field purposes in EEAT schema
- Add TypeScript types to generateMetadata params in hreflang example
- Revert useCdn to false for SSR getting-started example
- Add NDJSON guardrail back to AGENTS.md boundaries
- Fix npx prefix consistency in typegen watch mode command
- Add schema.org position comment in BreadcrumbList example
- Clarify @graph @context usage and improve JSON-LD security note
- Deduplicate typegen-workflow.md by referencing the canonical rule file
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fixes from final review pass by DX and TypeScript expert agents:
- Added "unique query names" requirement (common developer footgun)
- Added tsconfig includes requirement for sanity.types.ts
- Fixed AUTHOR_QUERY example: was array query used as single object
- Added .astro, .svelte, .vue to path glob examples
- Updated Astro rule to use defineQuery instead of raw strings
- Updated get-started guide to use defineQuery (was raw string)
- Updated GROQ maintenance workflow to mention automatic generation
- Updated AGENTS.md boundary to mention typegen.enabled option
- Fixed groq-define-query.md to show auto-inference as primary pattern
- Standardized import path to @/sanity.types
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
TypeGen is now GA. Key changes:
- Config moved from deprecated sanity-typegen.json to sanity.cli.ts
- Added automatic type generation (typegen.enabled: true)
- Added watch mode for separate frontend repos
- Added overloadClientMethods for automatic client.fetch() typing
- Added --enforce-required-fields flag
- Added Get and FilterByType type utilities
- Added supported file types (.astro, .svelte, .vue)
- Added @sanity-typegen-ignore for skipping individual queries
- Updated project structure to remove deprecated config file
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Added metadata.version to Claude plugin marketplace.json
- Added owner.url to Cursor plugin marketplace.json
- Pinned skills-ref dependency to exact 0.1.5 (was ^0.1.5)
- Removed emojis from sanity.md command headers for consistency
- Added actual resource file paths to content-modeling SKILL.md
- Softened absolutist language in AGENTS.md (NDJSON no longer prohibited)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Standardized TypeGen output path to sanity.types.ts
- Fixed any typing in Portable Text component to PortableTextBlock[]
- Converted CommonJS require() to ESM import in migration example
- Removed non-standard filter property from migration API example
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Added AI crawler robots.txt directives (GPTBot, ClaudeBot, etc.)
- Added Google AI Overviews optimization section to AEO
- Added BreadcrumbList schema and @graph combining pattern
- Added hreflang/international SEO to technical SEO
- Added JSON-LD sanitization note for dangerouslySetInnerHTML
- Enriched EEAT author schema with sameAs field
- Improved AEO monitoring section and freshness advice
- Noted that sitemap changeFrequency/priority are ignored by Google
- Added actual resource file paths to SKILL.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fixed sample size example: was ~3,000/variant, correct is ~7,600
- Corrected p-value definition (common misinterpretation)
- Added Bayesian methods, multi-armed bandits, and sequential testing
- Added SRM checks and novelty/primacy effects to common pitfalls
- Added actual resource file paths to SKILL.md for agent discovery
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
API version examples were inconsistent across files: 2025-11-01 in GROQ,
2024-01-01 in get-started, v2024-08-01 (with v prefix) in Next.js, and
various other dates in framework rules. Standardized all to 2026-02-01
without the v prefix. Also fixed useCdn contradiction (get-started had
false, Next.js rule said true should be default) and added webhook path
validation to prevent cache-busting abuse.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
AGENTS.md tool names were inconsistent with actual MCP server tools
(e.g. create_document_from_markdown vs create_documents_from_markdown).
Updated both AGENTS.md and README.md to match the current MCP server
tool list, organized into 5 categories: content operations, schema &
development, media & AI, releases, and project management.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove sanity-plugin/ folder from tree and show commands, .claude-plugin,
and .mcp.json at root level to match the new flattened structure.
Co-authored-by: Cursor <cursoragent@cursor.com>
- schema-deprecation-pattern.md: Replace raw client.patch with
defineMigration, at, setIfMissing, unset from sanity/migrate
- migration-html-import.md: Add defineMigration wrapper example
for reproducible HTML imports
- Add Google source link for Core Web Vitals thresholds
- Update FID to INP (current metric as of 2024)
- Add "(Next.js example)" labels to framework-specific sections
- pte-custom-components.md: Use generic <a> with tip about framework Link components
- schema-array-keys.md: Remove unrealistic Math.random() key example
- separation-of-concerns.md: Make naming examples more specific
- groq-define-query.md: Remove redundant Option C (plain defineQuery)
- image-hotspot.md: Remove unrelated alt text from hotspot example