name: migrate-to-skills description: >- Convert 'Applied intelligently' Cursor rules (.cursor/rules/.mdc) and slash commands (.cursor/commands/.md) to Agent Skills format (.cursor/skills/). Use when you want to migrate rules or commands to skills, convert .mdc rules to SKILL.md format, or consolidate commands into the skills directory. disable-model-invocation: true
Migrate Rules and Slash Commands to Skills
Convert Cursor rules ("Applied intelligently") and slash commands to Agent Skills format.
CRITICAL: Preserve the exact body content. Do not modify, reformat, or "improve" it - copy verbatim.
Locations
| Level | Source | Destination |
|---|---|---|
| Project | {workspaceFolder}/**/.cursor/rules/*.mdc, {workspaceFolder}/.cursor/commands/*.md | |
| User | ~/.cursor/commands/*.md |
Notes:
- Cursor rules inside the project can live in nested directories. Be thorough in your search and use glob patterns to find them.
- Ignore anything in ~/.cursor/worktrees
- Ignore anything in ~/.cursor/skills-cursor. This is reserved for Cursor's internal built-in skills and is managed automatically by the system.
Finding Files to Migrate
Rules: Migrate if rule has a description but NO globs and NO alwaysApply: true.
Commands: Migrate all - they're plain markdown without frontmatter.
Conversion Format
Rules: .mdc → SKILL.md
# Before: .cursor/rules/my-rule.mdc
---
description: What this rule does
globs:
alwaysApply: false
---
# Title
Body content...
# After: .cursor/skills/my-rule/SKILL.md
---
name: my-rule
description: What this rule does
---
# Title
Body content...
Changes: Add name field, remove globs/alwaysApply, keep body exactly.
Commands: .md → SKILL.md
# Before: .cursor/commands/commit.md
# Commit current work
Instructions here...
# After: .cursor/skills/commit/SKILL.md
---
name: commit
description: Commit current work with standardized message format
disable-model-invocation: true
---
# Commit current work
Instructions here...
Changes: Add frontmatter with name (from filename), description (infer from content), and disable-model-invocation: true, keep body exactly.
Note: The disable-model-invocation: true field prevents the model from automatically invoking this skill. Slash commands are designed to be explicitly triggered by the user via the / menu, not automatically suggested by the model.
Notes
namemust be lowercase with hyphens onlydescriptionis critical for skill discovery- Optionally delete originals after verifying migration works
Migrate a Rule (.mdc → SKILL.md)
- Read the rule file
- Extract the
descriptionfrom the frontmatter - Extract the body content (everything after the closing
---of the frontmatter) - Create the skill directory:
.cursor/skills/{skill-name}/(skill name = filename without .mdc) - Write
SKILL.mdwith new frontmatter (nameanddescription) + the EXACT original body content (preserve all whitespace, formatting, code blocks verbatim) - Delete the original rule file
Migrate a Command (.md → SKILL.md)
- Read the command file
- Extract description from the first heading (remove
#prefix) - Create the skill directory:
.cursor/skills/{skill-name}/(skill name = filename without .md) - Write
SKILL.mdwith new frontmatter (name,description, anddisable-model-invocation: true) + blank line + the EXACT original file content (preserve all whitespace, formatting, code blocks verbatim) - Delete the original command file
CRITICAL: Copy the body content character-for-character. Do not reformat, fix typos, or "improve" anything.
Workflow
If you have the Task tool available: DO NOT start to read all of the files yourself. That function should be delegated to the subagents. Your job is to dispatch the subagents for each category of files and wait for the results.
- Create the skills directories if they don't exist (
.cursor/skills/for project,~/.cursor/skills/for user) - Dispatch three fast general purpose subagents (NOT explore) in parallel to do the following steps for project rules (pattern:
{workspaceFolder}/**/.cursor/rules/*.mdc), user commands (pattern:~/.cursor/commands/*.md), and project commands (pattern:{workspaceFolder}/**/.cursor/commands/*.md): I. [ ] Find files to migrate in the given pattern II. [ ] For rules, check if it's an "applied intelligently" rule (hasdescription, noglobs, noalwaysApply: true). Commands are always migrated. DO NOT use the terminal to read files. Use the read tool. III. [ ] Make a list of files to migrate. If empty, done. IV. [ ] For each file, read it, then write the new skill file preserving the body content EXACTLY. DO NOT use the terminal to write these files. Use the edit tool. V. [ ] Delete the original file. DO NOT use the terminal to delete these files. Use the delete tool. VI. [ ] Return a list of all the skill files that were migrated along with the original file paths. - Wait for all subagents to complete and summarize the results to the user. IMPORTANT: Make sure to let them know if they want to undo the migration, to ask you to.
- If the user asks you to undo the migration, do the opposite of the above steps to restore the original files.
If you don't have the Task tool available:
- Create the skills directories if they don't exist (
.cursor/skills/for project,~/.cursor/skills/for user) - Find files to migrate in both project (
.cursor/) and user (~/.cursor/) directories - For rules, check if it's an "applied intelligently" rule (has
description, noglobs, noalwaysApply: true). Commands are always migrated. DO NOT use the terminal to read files. Use the read tool. - Make a list of files to migrate. If empty, done.
- For each file, read it, then write the new skill file preserving the body content EXACTLY. DO NOT use the terminal to write these files. Use the edit tool.
- Delete the original file. DO NOT use the terminal to delete these files. Use the delete tool.
- Summarize the results to the user. IMPORTANT: Make sure to let them know if they want to undo the migration, to ask you to.
- If the user asks you to undo the migration, do the opposite of the above steps to restore the original files.
Overview
Free skill — migrate-to-skills. Convert 'Applied intelligently' Cursor rules (.cursor/rules/*.mdc) and slash commands (.cursor/commands/*.md) to Agent Skills format (.cursor/skills/). Use when you want to mi
What this skill does
Looking for a dependable skill? "migrate-to-skills" gives you a tested starting point instead of a blank prompt box. Convert 'Applied intelligently' Cursor rules (.cursor/rules/*.mdc) and slash commands (.cursor/commands/*.md) to Agent Skills format (.cursor/skills/). Use when you want to migrate rules or commands to skills, convert .mdc rules to SKILL.md format, or consolidate commands into the skills directory. OpenRuna cross-links it to related prompts, agents, and tools, which makes assembling a full workflow around it straightforward. Paste it straight into a chat, drop it into a system prompt, or store it as a reusable skill.
Use cases
- Use "migrate-to-skills" when you need a repeatable skill for professional work without rewriting instructions every time.
- Hand "migrate-to-skills" to a new teammate so their skill output matches your team's quality bar from day one.
- Combine it with related tools and prompts in the same OpenRuna category to build an end-to-end workflow.
- Reach for it during planning or review sessions when you want consistent, AI-assisted structure.
Example output
Running this skill produces output shaped like the source material below:
# Migrate Rules and Slash Commands to Skills
Convert Cursor rules ("Applied intelligently") and slash commands to Agent Skills format.
**CRITICAL: Preserve the exact body content. Do not modify, reformat, or "improve" it - copy verbatim.**
## Locations
| Level | Source | Destination |
|-------|--------|-------------|
| Project | `{workspaceFolder}/**/.cursor/rules/*.mdc`, `{workspaceFolder}/.cursor/commands/*.md` |
| User | `~/.cursor/commands/*.md` |
Notes:
- Cursor rules inside the project can live in nested directories. Be thorough in your search and use glob patterns to find them.
- I…
Results vary by model and temperature; treat the first response as a draft and refine it with follow-up prompts.Tips by platform
Claude
With Claude, drop this skill into Project knowledge so every chat in the project inherits it. Ask Claude to restate the goal first, then run — it catches edge cases early.
ChatGPT
ChatGPT responds well when you paste this skill and immediately give one concrete example of your input. Use a reasoning-capable model for multi-step work.
Cursor
In Cursor, lift the key instructions from this skill into .cursorrules or a SKILL.md file, then reference it in Agent mode with @ mentions. Keep the title in a comment so teammates can find it on OpenRuna.
Frequently asked questions
- What is "migrate-to-skills"?
- It is a skill listed on OpenRuna — Convert 'Applied intelligently' Cursor rules (.cursor/rules/*.mdc) and slash commands (.cursor/commands/*.md) to Agent Skills format (.cursor/skills/). Use when you want to migrate rules or commands to skills, convert .mdc rules to SKILL.md format, or consolidate commands into the skills directory. You can copy and adapt it for ChatGPT, Claude, Cursor, or any other AI assistant.
- Is "migrate-to-skills" free to use?
- Most OpenRuna resources are open or CC0-licensed. Check the license shown on this page before commercial use; premium collections are clearly marked as such.
- How do I get the best results from this skill?
- Replace any placeholders, add your project context, and ask the model to confirm its assumptions first. Iterate over 2–3 follow-up turns rather than expecting a perfect first response.
- Does "migrate-to-skills" work with both Claude and ChatGPT?
- Yes — it is model-agnostic text, so it runs on Claude, ChatGPT, Gemini, and Cursor. The tips on this page cover each of those assistants specifically.
- Where can I find resources related to "migrate-to-skills"?
- Scroll to the Related resources section on this page, or open the matching category hub on OpenRuna to find connected prompts, tools, agents, and datasets in the same topic area.
Related resources
- Tool
v0 Prompts and Tools — ReadFile
Reads file contents intelligently - returns complete files when small, paginated chunks, or targeted chunks when large based on your query. **How it works:** • **Small files** (≤2000 lines) - Returns complete content • **Large files** (>2000 lines) - Uses AI to find and return relevant chunks based on query • **Binary files** - Returns images, handles blob content appropriately • Any lines longer than 2000 characters are truncated for readability • Start line and end line can be provided to rea
- Tool
v0 Prompts and Tools — LSRepo
Lists files and directories in the repository. Returns file paths sorted alphabetically with optional pattern-based filtering. Common use cases: • Explore repository structure and understand project layout • Find files in specific directories (e.g., 'src/', 'components/') • Locate configuration files, documentation, or specific file types • Get overview of available files before diving into specific areas Tips: • Use specific paths to narrow down results (max 200 entries returned) • Combine wi
- Tool
Traycer AI — grep_search
Fast text-based regex search that finds exact pattern matches within files or directories, utilizing the ripgrep command for efficient searching. Results will be formatted in the style of ripgrep and can be configured to include line numbers and content. To avoid overwhelming output, the results are capped at 50 matches. Use the include patterns to filter the search scope by file type or specific paths. This is best for finding exact text matches or regex patterns. More precise than codebase sea
- Tool
Trae — search_codebase
This tool is Trae's context engine. It: 1. Takes in a natural language description of the code you are looking for; 2. Uses a proprietary retrieval/embedding model suite that produces the highest-quality recall of relevant code snippets from across the codebase; 3. Maintains a real-time index of the codebase, so the results are always up-to-date and reflects the current state of the codebase; 4. Can retrieve across different programming languages; 5. Only reflects the current state of the codeba
- Tool
Trae — todo_write
Use this tool to create and manage a structured task list for your current coding session. This helps you track progress, organize complex tasks, and demonstrate thoroughness to the user. It also helps the user understand the progress of the task and overall progress of their requests.
- Tool
Same.dev — task_agent
Launches a highly capable task agent in the USER's workspace. Usage notes: 1. When the agent is done, it will return a report of its actions. This report is also visible to USER, so you don't have to repeat any overlapping information. 2. Each agent invocation is stateless and doesn't have access to your chat history with USER. You will not be able to send additional messages to the agent, nor will the agent be able to communicate with you outside of its final report. Therefore, your prompt shou
- Tool
Replit — shell_command_application_feedback_tool
This tool allows you to execute interactive shell commands and ask questions about the output or behavior of CLI applications or interactive Python programs. ## Rules of usage: 1. Provide clear, concise interactive commands to execute and specific questions about the results or interaction. 2. Ask one question at a time about the interactive behavior or output. 3. Focus on interactive functionality, user input/output, and real-time behavior. 4. Specify the exact command to run, including any ne
- Tool
Replit — str_replace_editor
Custom editing tool for viewing, creating and editing files * State is persistent across command calls and discussions with the user * If `path` is a file, `view` displays the result of applying `cat -n`. If `path` is a directory, `view` lists non-hidden files and directories up to 2 levels deep * The `create` command cannot be used if the specified `path` already exists as a file * If a `command` generates a long output, it will be truncated and marked with `<response clipped>` * The `undo_edi
