# cms-migration

Interactive guide for designing Payload CMS collections before migrating from WordPress, Strapi, or Contentful. It shapes schema configs prior to importing data.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1900 installs · ★ 170
- Author: payloadcms
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/payloadcms/skills/tree/HEAD/skills/cms-migration/SKILL.md
- Updated: 2026-08-10
- HTML: https://affpapa.org/en/nevibecode/skills/cms-migration

## What it does

This skill establishes a config-first workflow for moving content into Payload CMS. Instead of jumping straight into raw imports, you provide sample JSON or CSV data from systems like WordPress or Strapi. The assistant analyzes field types, flags nested structures, and drafts a TypeScript collection config.

Relationship design gets special attention. The skill treats repetitive string values like tags or authors as dynamic records, proposing dedicated collections linked by `relationship` fields rather than rigid `select` enums. It will also ensure an upload collection exists before referencing media assets.

Import strategies and seed scripts are discussed only after every collection config is confirmed. You choose whether media files get re-uploaded or kept as external URLs. Passing incomplete data samples is risky because you will have to reshape types manually later.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add payloadcms/skills --skill cms-migration -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/cms-migration/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/cms-migration/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add payloadcms/skills --skill cms-migration -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/cms-migration/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add payloadcms/skills --skill cms-migration -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/cms-migration/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install payloadcms/skills cms-migration
```

2. **Manually: put the files in place**
- File: `.github/skills/cms-migration/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add payloadcms/skills --skill cms-migration -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/payloadcms/skills --path skills/cms-migration
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/cms-migration/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add payloadcms/skills --skill cms-migration -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/payloadcms/skills/tree/HEAD/skills/cms-migration/SKILL.md

## When to use it
- turn schema exports from WordPress, Strapi, or Sanity into Payload configs
- generate TypeScript collection definitions from raw JSON or CSV samples
- distinguish static `select` options from dynamic `relationship` collections
- plan migration execution order for collections with nested references

## Example prompts
- I have a JSON export of blog posts from WordPress. Help me design the Payload CMS collection for it.
- Here is our Strapi schema for articles and authors. Propose Payload collection configs with proper relationships.
- All collection configs look good. Help me plan the migration order and write an import script.

## Similar
- [contentful-migration](https://affpapa.org/en/nevibecode/skills/contentful-migration.md) — skill · 309 installs
- [cms-development](https://affpapa.org/en/nevibecode/plugins/cms-development.md) — plugin · ★ 40418
- [sanity-migration](https://affpapa.org/en/nevibecode/skills/sanity-migration.md) — skill · 22200 installs
- [wordpress-plugin-to-emdash](https://affpapa.org/en/nevibecode/skills/wordpress-plugin-to-emdash.md) — skill · 688 installs
- [wordpress-theme-to-emdash](https://affpapa.org/en/nevibecode/skills/wordpress-theme-to-emdash.md) — skill · 691 installs
- [blog-taxonomy](https://affpapa.org/en/nevibecode/skills/blog-taxonomy.md) — skill · 2400 installs

From the same set: [payloadcms/skills](https://affpapa.org/en/nevibecode/by/payloadcms/skills.md) — 2 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
