sanity-migration

Planifie, implémente et révise les migrations depuis d’autres CMS et systèmes de contenu vers Sanity. À utiliser lors d’une migration ou d’un replatforming vers Sanity depuis AEM, Adobe Experience Manager, Contentful, Strapi, Webflow, WordPress, Payload, Drupal, fichiers Markdown/MDX/frontmatter, exports WXR/XML, API CMS, dumps de base de données, HTML statique, ou lors de la conception de workflows d’extraction, transformation, conversion en Portable Text, migration de ressources, redirections, validation et basculement.

npx skills add https://github.com/sanity-io/agent-toolkit --skill sanity-migration

Sanity Migration

Use this skill for CMS-to-Sanity migration work. Treat migration as a content strategy and ETL project, not a blind lift-and-shift.

Required Workflow

  1. Read references/general.md first.
  2. If the source platform is known, also read its guide:
    • AEM / Adobe Experience Manager: references/aem.md
    • Contentful: references/contentful.md
    • Strapi: references/strapi.md
    • Webflow: references/webflow.md
    • WordPress / WXR / Elementor: references/wordpress.md
    • Payload: references/payload.md
    • Drupal: references/drupal.md
    • Markdown / MDX / frontmatter files: references/markdown.md
  3. Before writing code, produce a short migration plan covering source access, content scope, schema decisions, extraction, transformation, import, validation, redirects, and cutover.
  4. Prefer deterministic, repeatable scripts for real migrations. Write and review migration scripts, mappings, and validation checks; do not rely on one-off content operations for large content volumes.

Deliverables to Produce

For implementation or planning tasks, produce these artifacts or explain why they are not needed:

  • Content inventory: source types, counts, locales, status/draft scope, assets, and relationship types.
  • Source-to-Sanity mapping: document types, object types, references, Portable Text fields, asset fields, IDs, and skipped content.
  • Extraction approach: credentials/access needed, API/export commands, raw snapshot location, and known blind spots.
  • Transform/import plan: deterministic IDs, write order, asset handling, rich text conversion, validation, and rerun strategy.
  • Cutover plan: delta sync/content freeze, redirects, broken-link checks, SEO metadata, and manual cleanup.

Defaults

  • Use stable document IDs derived from source IDs, slugs, paths, or hashes.
  • Use createOrReplace, createIfNotExists, or sanity datasets import --replace so reruns converge.
  • Snapshot extracted source data to disk before transforming it.
  • Import or create referenced documents before documents that reference them.
  • Convert rich text to Portable Text instead of storing raw HTML or Markdown strings.
  • Upload assets to Sanity or the Media Library; do not leave production content dependent on legacy CDN URLs.
  • Track per-document quality issues and produce a validation summary before cutover.
  • Preserve legacy URLs and source IDs for redirects, QA, and future debugging.

Sanity Guardrails

  • Model what content is, not how the old site rendered it.
  • Use documents for reusable or independently managed entities; use objects for content owned by one document.
  • Use defineType, defineField, and defineArrayMember if authoring Sanity schemas.
  • Use image/file fields with uploaded Sanity assets or Media Library assets, not legacy CDN URLs.
  • Use Portable Text arrays for rich text and custom blocks; do not store raw HTML as the canonical body.
  • Run schema extraction and TypeGen after schema or GROQ query changes when the project uses TypeScript.
  • Deploy or apply schema changes before using MCP/content tools against the target dataset.

For deeper Sanity implementation guidance, use sanity-best-practices if it is already available. If it is not installed, tell the user they can add it with:

npx skills add sanity-io/agent-toolkit --skill sanity-best-practices

Stop and Ask

Stop before coding when any of these are unclear:

  • Source access path, credentials, export file, or database connection.
  • Target Sanity project/dataset or whether a scratch dataset should be used.
  • Draft, archived, scheduled, locale, or version history scope.
  • Whether media files should be migrated and whether asset URLs/files are accessible.
  • Whether the destination schema exists or should be designed as part of the migration.

Do Not Do This

  • Do not create random IDs for source-backed documents.
  • Do not fetch-then-create referenced documents; use deterministic IDs and createIfNotExists/createOrReplace.
  • Do not run bulk migrations through MCP content tools when NDJSON or scripts are appropriate.
  • Do not flatten locale fallback values into translations unless requested.
  • Do not leave TODOs for required media, authors, references, or rich text conversion.
  • Do not declare a migration done without count checks, sample checks, reference checks, and route/redirect checks.

Reference Map

Use references/general.md for shared migration principles and the platform references for source-specific extraction routes, modeling traps, and validation checks.

For source systems not explicitly covered, apply references/general.md and adapt the closest platform pattern:

  • API-first CMSes: start from Contentful, Strapi, or Payload.
  • Monolithic/page-builder systems: start from WordPress, Drupal, Webflow, or AEM.
  • HTML-heavy exports: start from the WordPress and Webflow rich-text guidance.
  • Markdown-first sources: start from references/markdown.md.

Plus de skills de sanity-io

tdd
sanity-io
Développement piloté par les tests avec boucle rouge-vert-refactorisation. À utiliser lorsque l'utilisateur souhaite créer des fonctionnalités ou corriger des bugs en utilisant le TDD, mentionne "rouge-vert-refactorisation", veut…
performance-optimization
sanity-io
Optimise les performances de l'application. À utiliser lorsque des exigences de performance existent, lorsque vous suspectez des régressions de performance, ou lorsque les Core Web Vitals ou les temps de chargement…
content-experimentation-best-practices
sanity-io
Conseils structurés pour concevoir, exécuter et analyser des expériences de contenu afin d’améliorer la conversion et l’engagement. Couvre les cadres d’hypothèses, la sélection des métriques, le calcul de la taille de l’échantillon et les tests de signification statistique pour les expériences A/B et multivariées. Inclut des ressources détaillées sur les valeurs p, les intervalles de confiance, l’analyse de puissance et les méthodes bayésiennes pour interpréter les résultats. Fournit des modèles d’intégration CMS pour gérer les variantes au niveau du champ et connecter des systèmes externes...
content-modeling-best-practices
sanity-io
Conseils de modélisation de contenu structuré pour la conception de schémas, la réutilisabilité et la diffusion multicanal. Couvre les principes fondamentaux : traiter le contenu comme des données plutôt que comme des pages, maintenir des sources uniques de vérité, concevoir pour les canaux futurs et optimiser les flux de travail des éditeurs. Inclut des cadres de décision pour les références par rapport aux objets intégrés, la séparation des préoccupations et les modèles de réutilisation du contenu. Fournit des conseils sur la taxonomie et la classification pour les approches plates, hiérarchiques et à facettes. S'applique à...
portable-text-conversion
sanity-io
Convertir du contenu HTML et Markdown en blocs Portable Text pour Sanity. À utiliser lors de la migration de contenu depuis des CMS hérités, de l'importation de HTML ou Markdown dans Sanity,…
portable-text-serialization
sanity-io
Rendre et sérialiser le Portable Text en React, Svelte, Vue, Astro, HTML, Markdown et texte brut. Utiliser lors de l'implémentation du rendu Portable Text dans n'importe quel frontend…
sanity-best-practices
sanity-io
We need to translate the given text from English to French. The text is a description of a directory item for an agent skill named "sanity-best-practices". The instruction says to preserve product names, protocol names, URLs, numbers, technical terms. Also, do not include the name unless it appears in the source text. The name "sanity-best-practices" does not appear in the source text, so we don't include it. We translate only the text inside <text>. The text is a single paragraph. We need to translate it accurately, keeping terms like "Sanity CMS", "Next.js", "Nuxt", "Astro", "Remix", "SvelteKit", "Angular", "GROQ", "Visual Editing", "Portable Text", "TypeGen" as they are. Also numbers like "10+". The translation should be natural French. Let's break down the text: "Comprehensive best practices and integration guides for Sanity CMS development across frameworks and topics. Covers 10+ framework integrations including Next.js,
seo-aeo-best-practices
sanity-io
Guide complet d'optimisation SEO et AEO couvrant les métadonnées, les données structurées, l'EEAT et la préparation à l'IA. Couvre à la fois l'optimisation traditionnelle pour les moteurs de recherche (SEO) et l'optimisation pour les moteurs de réponse IA (AEO) sur Google, ChatGPT, Perplexity et plateformes similaires. Inclut les essentiels du SEO technique : métadonnées, balises Open Graph, sitemaps, robots.txt, hreflang et configuration SEO internationale. Fournit des modèles de données structurées JSON-LD pour les schémas Article, FAQ, Breadcrumb et Product. Implémente...