# Sanity Schema Manager

> Manages schema lifecycle including scaffolding, safe field deprecation, and data migrations. Use when modifying existing schemas.

- Skill: `majiayu000/sanity-schema-manager` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/sanity-schema-manager`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/sanity-schema-manager/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/sanity-schema-manager

---


# Schema Manager

This skill handles the lifecycle of Sanity Schema types.

## Procedure

1.  **Scaffold (Create)**
    *   Use templates to create `document`, `object`, or `singleton` types.
    *   **Constraint:** Ensure `defineType` and `defineField` are used.
    *   **Constraint:** Ensure an icon is imported from `@sanity/icons`.

2.  **Deprecate (Update)**
    *   Ask: "Which field do you want to deprecate?"
    *   **Action:** Apply the "ReadOnly -> Hidden -> Deprecated" pattern to the field definition.
    *   **Output:**
        ```typescript
        defineField({
          name: 'oldField',
          deprecated: { reason: 'Use newField instead' },
          readOnly: true,
          hidden: ({value}) => value === undefined,
          initialValue: undefined
        })
        ```

3.  **Migrate (Data)**
    *   Generate a migration script using `@sanity/migrate` or standard client patches.
    *   **Template:** Iterate over documents -> `patch(doc.id).set({ newField: doc.oldField }).unset(['oldField'])`.

4.  **Clean (Delete)**
    *   Only allow deleting a field definition if the user confirms "I have migrated the data and the field is undefined in all documents."

