Migrating Copilot to Cursor
Converts GitHub Copilot customization artifacts to Cursor equivalents by applying a deterministic mapping of file types, frontmatter fields, path references, and terminology.
Artifact Type Mapping
| Copilot source | Cursor target | Notes |
|---|---|---|
.github/agents/*.agent.md |
.cursor/skills/agents/<name>/SKILL.md |
No disable-model-invocation — agents are invoked via @name |
.github/skills/*.skill.md |
.cursor/skills/workflows/<name>/SKILL.md |
Workflow knowledge, loaded by agents on demand |
.github/prompts/*.prompt.md |
.cursor/skills/commands/<name>/SKILL.md |
Add disable-model-invocation: true — these are slash commands |
.github/internal-prompts/*.prompt.md |
.cursor/skills/internal/<name>/SKILL.md |
Add disable-model-invocation: true |
.github/instructions/*.instructions.md |
.cursor/rules/*.mdc |
Use alwaysApply: false + globs for scoped rules |
Frontmatter Conversion
| Copilot frontmatter | Cursor equivalent | Action |
|---|---|---|
model: "GPT-5.4" |
> Recommended model: GPT-5.4 |
Move to first line of body — Cursor doesn't bind models in frontmatter |
tools: [tool1, tool2] |
> Recommended tools: tool1, tool2 |
Move to second line of body; see tool stripping rules below |
user-invocable: false |
disable-model-invocation: true |
Direct frontmatter replacement |
handoffs: list |
## Handoffs section in body |
Convert list items to Markdown bullet prose |
agents: list |
## Delegation section in body |
Convert list items to Markdown bullet prose |
description: |
Keep as-is | Already compatible |
name: |
Keep as-is | Must match the directory name |
Tool stripping rules
Remove these tools entirely (Cursor doesn't have them):
vscode/runCommandvscode/openFile
Replace these tools with plain prose in the skill body:
vscode/askQuestions→ "ask questions to the user" (wherever it appears in instructions)
Path and Terminology Replacements
Apply these replacements throughout the skill body:
| From | To |
|---|---|
.github/agents/ |
.cursor/skills/agents/ |
.github/skills/ |
.cursor/skills/workflows/ |
.github/prompts/ |
.cursor/skills/commands/ |
.github/internal-prompts/ |
.cursor/skills/internal/ |
.github/instructions/ |
.cursor/rules/ |
*.instructions.md |
*.mdc rules |
copilot-instructions.md |
cursor-instructions.md |
tsh-copilot-* (agent/skill names) |
tsh-cursor-* |
Copilot (when referring to the IDE or customization context) |
Cursor |
GitHub Copilot |
Cursor AI IDE |
Do NOT replace Copilot when it appears inside a code example, a historical reference, or a comparison context (e.g., "migrating from Copilot").
Decision Rules
When to add disable-model-invocation: true:
- Always for commands (
.github/prompts/) and internal prompts (.github/internal-prompts/) - Never for agents (
.github/agents/) or workflow skills (.github/skills/)
When to add > Recommended model::
- Always, for every converted agent and internal skill — carry over from
model:frontmatter - If no
model:existed, omit the line (don't guess)
When to add > Recommended tools::
- Always, for agents — carry over from
tools:frontmatter after stripping removed tools - For workflow skills and commands, omit (they don't have tool access)
Conversion Process
Conversion progress:
- [ ] Step 1: Identify artifact type and determine target directory + filename
- [ ] Step 2: Convert frontmatter fields
- [ ] Step 3: Add Recommended model / tools lines at top of body (if applicable)
- [ ] Step 4: Apply path and terminology replacements throughout body
- [ ] Step 5: Strip or replace removed tools (vscode/*)
- [ ] Step 6: Convert handoffs/agents frontmatter to body sections (if applicable)
- [ ] Step 7: Verify the directory name matches the `name` field in frontmatter
- [ ] Step 8: Check that no `.github/` paths remain in the body
- [ ] Step 9: Check that no Copilot IDE terminology remains (in non-comparison contexts)
- [ ] Step 10: Update any cross-references in other skills that may point to the old path
Post-Conversion Checks
After converting, verify:
- Cross-references — search for the old filename in all
.cursor/skills/**files; update any that reference the old path - Agent delegation blocks — if the converted artifact is an agent, check whether
tsh-engineering-manager/SKILL.mdor other orchestrators need a new delegation block - Documentation — if
website/docs/exists, create or update the corresponding docs page following the same naming and structure as existing pages - Naming conventions — verify the
tsh-prefix is present and the directory name matchesnamein frontmatter
Connected Skills
tsh-creating-agents— when the converted artifact is a new agent, follow agent creation conventionstsh-creating-skills— when the converted artifact is a new workflow skill, follow skill creation conventionstsh-creating-commands— when the converted artifact is a new slash commandtsh-creating-rules— when converting.instructions.mdfiles to.mdcrulestsh-codebase-analysing— to understand the existing skill structure before placing new files
Source: kkorus/cursor-collections — distributed by TomeVault.