agentsclimarketplace

Migrate cursor

Skill vecten/sdlc-toolkit/skills/migrate-cursor

Migrate workspace configuration, local skills, and rules from Cursor to Claude Code. Two-phase workflow: export in Cursor, import in Claude Code. Use when the user says "migrate cursor", "migrate from cursor", "import cursor config", "export cursor skills", or "switch to claude code".From its SKILL.md

Install
npx -y skills add vecten/sdlc-toolkit --skill migrate-cursor

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • reads credentialsReads from 1 credential source: `.cursor/skills-config.yaml`.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 6 commands, including `ls .cursor/skills/*.skill 2>/dev/null` and 5 more.

SKILL.md

7.7 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it

Migrate Cursor

Migrate workspace skills, rules, and configuration from a Cursor setup to Claude Code. This skill runs in two phases:

  1. Export (run in Cursor) — scans .cursor/ for local skills, rules, and config, then writes a portable .cursor-export.md file.
  2. Import (run in Claude Code) — reads the export file (or .cursor/ directly), creates .claude/, and recreates all artifacts in Claude Code format.

Config dependency

This skill works without skills-config.yaml — it is designed to run before config exists in the target environment.

If skills-config.yaml exists in .cursor/, it will be migrated to .claude/.

Guardrails

  1. Never delete or modify any files in .cursor/ — this is a non-destructive migration.
  2. Never overwrite existing files in .claude/ or CLAUDE.md without explicit user confirmation.
  3. Always show the user what will be created before writing.
  4. If .cursor-export.md already exists, ask before overwriting.

Required Inputs

  • Phase: Detect automatically based on context, or accept an explicit "export" / "import" instruction from the user.

Workflow

Step 1 — Detect phase

Check the workspace for:

ls .cursor/skills/*.skill 2>/dev/null
ls .cursor-export.md 2>/dev/null
ls .claude/ 2>/dev/null

Determine which phase to run:

ConditionPhase
.cursor/skills/*.skill files existExport (Step 2)
.cursor-export.md existsImport (Step 5)
.cursor/ exists but no .skill filesDirect import (Step 5, reading from .cursor/ directly)
Neither .cursor/ nor .cursor-export.md existNothing to migrate — tell the user

If the user explicitly says "export" or "import", follow their instruction regardless of auto-detection.


Export Phase (Steps 2–4)

Run this phase in Cursor to extract all local artifacts into a portable file.

Step 2 — Extract local Cursor skills

For each .skill file in .cursor/skills/:

  1. The .skill format is a ZIP archive containing a SKILL.md and optional references/ files. Extract the SKILL.md:
unzip -p "<name>.skill" "*/SKILL.md"
  1. List all files in the archive to find references:
unzip -l "<name>.skill"
  1. For each reference file found, extract its content with unzip -p.

  2. If extraction fails (corrupted or unsupported format), note the filename and skip it with a warning.

Step 3 — Read rules and config

  1. Read all .cursor/rules/*.mdc files. For each, capture:
    • Frontmatter fields: description, alwaysApply, globs (if present)
    • The markdown body (everything after the closing ---)
  2. Read .cursor/skills-config.yaml if it exists.
  3. Read .cursor/settings.json for reference (note which plugins are enabled).

Step 4 — Write the export file

Combine everything into .cursor-export.md at the workspace root. Use the following structure so the import phase can parse it reliably:

# Cursor Export

Generated by sdlc-toolkit migrate-cursor on <YYYY-MM-DD>.

---

## Skills

### <skill-name>

<full SKILL.md content>

#### References

##### <reference-filename>

<reference file content>

---

[repeat for each skill]

## Rules

### <rule-filename>

| Field | Value |
|-------|-------|
| Description | <from frontmatter> |
| Always apply | <yes/no> |
| Globs | <glob pattern or "none"> |

<rule markdown body>

---

[repeat for each rule]

## Config

​```yaml
<full skills-config.yaml content>
​```

## Settings

​```json
<full settings.json content>
​```

After writing, tell the user:

Export complete. Open this workspace in Claude Code and run migrate cursor to complete the migration.


Import Phase (Steps 5–10)

Run this phase in Claude Code to recreate all artifacts.

Step 5 — Read source

Determine what to read:

  1. If .cursor-export.md exists: parse it to extract skills, rules, and config sections. Use the ## Skills, ## Rules, ## Config headings as delimiters.
  2. If no export file but .cursor/ exists (direct import): read directly:
    • .cursor/skills-config.yaml
    • .cursor/rules/*.mdc
    • Attempt to extract .cursor/skills/*.skill files via unzip -p. If the binary cannot be read (e.g., no unzip available), skip skills and warn the user.

Step 6 — Create .claude/ directory

  1. Check if .claude/ already exists.
  2. If it does and contains files, list them and ask the user: merge into existing, or skip conflicting files?
  3. If it doesn't exist, create it:
mkdir -p .claude

Step 7 — Migrate skills-config.yaml

  1. Read the config content (from export file or .cursor/skills-config.yaml).
  2. Update the location comment if present:
    • Replace any Location: *.cursor/skills-config.yaml with Location: <workspace>/.claude/skills-config.yaml
  3. Write to .claude/skills-config.yaml.
  4. If .claude/skills-config.yaml already exists, show a diff and ask before overwriting.

Step 8 — Convert rules to CLAUDE.md

  1. If CLAUDE.md exists at the workspace root, read its current content.
  2. For each exported rule:
    • Drop the Cursor .mdc frontmatter format.
    • Convert the rule body into a plain markdown section with a descriptive heading.
    • If the rule has alwaysApply: true, include it as a top-level section.
    • If the rule has a globs pattern, add a note about which files it applies to.
  3. Append all converted rules to CLAUDE.md (or create the file if it doesn't exist).
  4. Show the user the resulting CLAUDE.md content before writing.

Step 9 — Recreate skill behaviors

For each exported skill:

  1. Read the SKILL.md content and understand the skill's purpose, triggers, and workflow.
  2. Summarize the skill's behavior into a concise instruction block suitable for CLAUDE.md.
  3. Add under a # Local Skills heading in CLAUDE.md.

Keep each skill summary focused on what the agent should do — not how the original Cursor skill was structured. Adapt terminology:

  • "Cursor" references → "Claude Code"
  • .cursor/ paths → .claude/
  • Cursor-specific features → Claude Code equivalents (or note if no equivalent exists)
  1. Present to the user for review before writing.

Important: Migrated skills become static instructions — they are not executable slash-command skills. For equivalent interactive behavior, recommend the user creates a proper sdlc-toolkit skill using generate-skill.

Step 10 — Report

Present a migration summary.

Safety Rules

  • Never modify or delete .cursor/ contents.
  • Never overwrite existing .claude/ files or CLAUDE.md without user confirmation.
  • Remind the user to add .cursor-export.md to .gitignore if it contains sensitive data (Slack IDs, project IDs, tokens).
  • If skills-config.yaml contains secrets or tokens, warn the user before writing.

Output format

Export phase:

Export written to `.cursor-export.md`.

- Skills exported: <count> (<list of names>)
- Rules exported: <count> (<list of filenames>)
- Config: <included / not found>

Next: open this workspace in Claude Code and run `migrate cursor` to import.

Import phase:

Migration complete.

- `.claude/skills-config.yaml` — <created / updated / skipped>
- `CLAUDE.md` — <created / updated>
  - Rules migrated: <count> (<list>)
  - Skills migrated: <count> (<list>)
- Skipped: <list of items that could not be migrated, if any>

Tip: run `bootstrap-config` to verify and update the config for Claude Code.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Gives 0 of the 12 instructions most project setup skills give in ~1.9k tokens

Counted across 1,553 of the 3,091 authors here whose files we hold, read 2026-09-06

  • Write the configuration filein 36 of 1553
  • Create the directory structurein 35 of 1553, across 33 files
  • Verify the setupin 31 of 1553, across 28 files
  • Run the setup scriptin 30 of 1553, across 29 files
  • Pre-determine the required sample sizein 29 of 1553, across 12 files
  • Check if the configuration already existsin 29 of 1553
  • Document every testin 26 of 1553, across 10 files
  • Start with a hypothesisin 26 of 1553, across 11 files
  • Ask one question at a timein 22 of 1553
  • Test a single variable per testin 21 of 1553, across 9 files
  • Read product marketing context before asking questionsin 19 of 1553, across 8 files
  • Do not peek and stop earlyin 18 of 1553, across 7 files

Said here and by no other author read

  • Scan .cursor for local skills, rules, and config
  • Write a portable export file
  • Recreate all artifacts in Claude Code format
  • Parse the export file to extract sections
  • Summarize skill behavior into a concise instruction block
  • Present a migration summary

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.