Cursor Rules
Cursor Commands: Legacy Slash Workflows (Now Agent Skills)
Cursor commands are the legacy form of saved slash-menu prompts: Markdown files in .cursor/commands/, one repeatable job per file. Cursor now points new slash workflows to Agent Skills. Its commands page is gone, and the built-in /migrate-to-skills skill turns old commands into skills that keep their human-only trigger, though existing command files still load.

On this page
What are Cursor commands?
A command is a reusable prompt you invoke from the / menu. A rule is context Agent carries without being asked, and a command is an action you start on demand. Good candidates are the multi-step chores you repeat: run the test suite and fix what breaks, update the changelog, commit and push, or open a pull request with a written summary. Those jobs still belong in the slash menu, but new ones now live in a skill folder instead of .cursor/commands/.
The commands page is gone from cursor.com/docs, and the Agent SkillsReusable, model-invoked instructions (a SKILL.md with a name, description and steps) the agent loads only when its description matches the task. Press Enter for the full definition. docs treat commands as something to migrate. The built-in /migrate-to-skills skill, shipped in Cursor 2.4, converts both user-level and workspace-level commands. It adds disable-model-invocation: true to each one, so it keeps its human-only trigger. Existing .cursor/commands/ files still work, but new workflows belong in skills.
- Rules shape how Agent works, in the background.
- Skills package how to do a kind of task. Agent loads them when relevant, and they now cover the slash-menu job too.
- Commands are jobs you start: a saved prompt run from the slash menu, in the legacy format that skills absorbed.
The cleanest line between a command and a skill is invocation. Only a person invokes a command: you type / and pick it. A skill can be invoked by Agent or by you. That difference makes skills a superset of commands. It is also why the migration loses nothing: a converted command is a skill whose frontmatter says disable-model-invocation: true, which keeps the human-only behavior.
This exact topic is a hands-on Lesson: Slash skills and the council fan-out — about 6 minutes, free to read.
Rather do it than read about it? Run 11 interactive Cursor walkthroughs in a simulated editor. Free, no account needed.
How do I create a slash workflow now?
The current shape is a skill folder, .cursor/skills/<name>/SKILL.md, where the name is the verb you'll type. The prompt inside is the job you want done, written once. The steps below set one up, and the code shows the open-a-pull-request example written as a skill.
- 1Add a folder under
.cursor/skills/in your repo, named for the verb you'll type:run-tests,open-pr,fix-ci. - 2Create a
SKILL.mdinside it: YAML frontmatter with anameanddescription, then the prompt as Markdown below the---. - 3Add
disable-model-invocation: trueto the frontmatter if only a person should fire it, which is the old command behavior. - 4Write the prompt as clear instructions, including how you want the result reported back.
- 5Commit the folder so the whole team gets the same entry in their slash menu.
--- name: open-pr description: Commit the current changes, push, and open a pull request. disable-model-invocation: true --- Commit the current changes with a conventional-commit message. Push the branch and open a pull request. In the PR body, summarise what changed and why, and list how you verified it. Reply with only the PR link.
The legacy shape was flatter: one Markdown file per command under .cursor/commands/, with no frontmatter, only the prompt. Those files still load, and you don't port them by hand. Run the built-in /migrate-to-skills skill, and Agent converts them into skills in .cursor/skills/ that keep their explicit-invocation behavior.
Commit is deliberately the last step. A workflow you have never run yourself is a guess that every teammate then inherits, and you hear about it as someone else's confusing session. Don't rush the name either. You find these by typing / and scanning a list, so open-pr is easier to reach for than a cleverer name.
Don't skip the response instruction. Ending the prompt with "reply with only the PR link" or "report the failing test and your fix" keeps the output short and scannable instead of a wall of narration.
Cursor ships a built-in /create skill flow that captures the workflow you just ran so you can replay it. The trick is timing: the moment a session ends and you have just produced something good, a report or an analysis, codify it while it's fresh.
Right at the end of a session you could say, "Hey Cursor, /create skill to codify what we've just done."
Commands vs rules vs skills: which do I use?
The four customization primitives differ in who pulls the trigger, and when. A rule applies on its own, a skill is reached for by Agent or by you, a command was one you typed yourself, and a sub-agentA child agent a main agent spawns to work in parallel with its own context window, handing results back so the parent's context stays clean. Press Enter for the full definition. is spawned by another agent.
The command row in the table below describes a legacy format. A skill with model invocation disabled covers the same ground.
- Primitive
- Rule
- Trigger
- Always on (or by file glob)
- Use it for
- Conventions every prompt should respect
- Primitive
- Skill
- Trigger
- Agent decides, by description match (or you, from the slash menu)
- Use it for
- A capability the agent should reach for when relevant
- Primitive
- Command (legacy)
- Trigger
- You type it in the slash menu
- Use it for
- Superseded: a skill with
disable-model-invocation: truereplaces it
- Primitive
- Sub-agent
- Trigger
- Spawned by another agent
- Use it for
- A role that works in parallel with its own context
| Primitive | Trigger | Use it for |
|---|---|---|
| Rule | Always on (or by file glob) | Conventions every prompt should respect |
| Skill | Agent decides, by description match (or you, from the slash menu) | A capability the agent should reach for when relevant |
| Command (legacy) | You type it in the slash menu | Superseded: a skill with disable-model-invocation: true replaces it |
| Sub-agent | Spawned by another agent | A role that works in parallel with its own context |
Pick by who pulls the trigger and when.
Handing invocation to Agent means Agent has to recognize the moment, and a skill that never fires usually has a description problem. Disabling model invocation skips that judgment, the way a command used to. Repeatability is the usual test, but we'd give it less weight: a job you repeat but would rather not have to remember belongs in a skill that Agent can reach for on its own.
Skill or rule: which is cheaper on context?
Skills and rules are both Markdown, and what separates them is when each one costs context. A skill loads only when it is used: you call it as a slash command, or Agent decides it is relevant. A rule is included in every prompt in its scope, whether or not that prompt needs it.
- Feature
- Format
- Skill
- Markdown
- Rule
- Markdown
- Feature
- Fires when
- Skill
- Invoked: slash command, or agent infers relevance
- Rule
- Automatically, on every prompt in its scope
- Feature
- Context cost
- Skill
- Loaded only when used
- Rule
- Spent every turn it's in scope
- Feature
- Best for
- Skill
- Know-how needed some of the time
- Rule
- Conventions needed every time
| Feature | Skill | Rule |
|---|---|---|
| Format | Markdown | Markdown |
| Fires when | Invoked: slash command, or agent infers relevance | Automatically, on every prompt in its scope |
| Context cost | Loaded only when used | Spent every turn it's in scope |
| Best for | Know-how needed some of the time | Conventions needed every time |
Same file format; different context bill.
A skill is cheap because of a loading mechanism called progressive disclosureHow skills load: the agent boots knowing only each skill's name and description, then pulls a skill's full instructions into context only at the moment it decides to use it. Press Enter for the full definition.. At the start, Agent holds only each skill's name and description. When a skill becomes relevant, Agent loads the rest of its Markdown, so a library of skills costs little until Agent reaches for one.
Every rule in scope is paid for on every prompt, so a thick stack of rules fills the context window before Agent has read a line of your code. Unless the information must be present every time, a skill is the cheaper home for it. Keep rules for the conventions that apply to every relevant prompt.
One useful slash workflow strips the low-quality patterns an agent tends to leave behind, the AI "slop" you would otherwise flag by hand, so the diff is cleaner before a person reads it. Cursor's team uses one internally to remove artifacts they don't want, often comments that explain the model's thinking but won't help anyone six months later. A version ships as the deslop skill in Cursor's Team Kit pluginA Cursor marketplace package that bundles MCP servers and skills (sometimes sub-agents and hooks); one click installs all of it into your Cursor instance. Press Enter for the full definition., so you can install it from the public marketplace instead of writing your own.
The same idea works beyond code. If you curate an AI-written knowledge base, run the de-slop step when a change is submitted, before it is published. Tell the agent to be verbose only where the words earn their place and concise everywhere else.
What is the Council command pattern?
A slash workflow can fan work out to other agents. In the Council pattern, which a Cursor field engineer demonstrated as a command, a saved prompt spawns several sub-agents to study one question from different angles. A final agent then combines their findings into one answer. Today you'd write it as a skill.
A /council command might launch ten sub-agents to each review a proposed design, then collect their notes and return a single ranked recommendation. You start one command, and ten independent reads come back merged.
Ten sub-agents is ten passes over the same area, so save it for a question you would otherwise spend a morning on.
You set the count when you invoke it (use Council n=15: How does authentication work?), and some sub-agents are pushed off the obvious path on purpose so the reads vary. Each runs in its own context window and reports back through a file, which keeps the parent thread from filling up with ten transcripts.
Frequently asked questions
Where are Cursor commands stored?
As Markdown files in a .cursor/commands/ directory in your repo, one file per command. That directory still loads, but it is the legacy location. New slash workflows go in .cursor/skills/<name>/SKILL.md, and the built-in /migrate-to-skills skill converts existing commands for you.
Can a slash workflow run other agents?
Yes. A command, or the skill that replaces it, is a prompt, so it can tell the agent to spawn sub-agents and fan work out, as in the Council pattern, then combine the results.
Command or skill: which should I use?
A skill, in every new case. Skills cover both triggers: the agent can reach for one when its description matches, and disable-model-invocation: true restricts one to the slash menu, which is what a command was. Commands remain as a legacy format that still loads.
Are Cursor commands being deprecated?
Cursor's docs don't call them deprecated. The commands page is gone from cursor.com/docs, and Cursor's old commands URLs now redirect to help on migrating commands to skills. The built-in /migrate-to-skills skill converts them and keeps their human-only trigger. Existing .cursor/commands/ files keep working, so nothing breaks on upgrade, but the documented path for new work is a skill.
Why is a skill cheaper than a rule?
Both are Markdown, but a skill loads only when it is invoked or the agent decides it is relevant, while a rule is spent on every prompt in its scope. Too many rules fill the context window from the start, so unless the information is needed every time, put it in a skill.
What does a de-slop workflow do?
It strips the common low-quality patterns an agent leaves behind before a person reviews the diff. Cursor's Team Kit plugin in the public marketplace includes one, a skill named deslop, so you can install it instead of writing your own.
Sources & last verified
- Cursor Docs: Agent Skills
- Cursor Changelog: Subagents, Skills and Image Generation (2.4)
- Cursor - Learn
- Cursor Help: Migrate commands to skills
- Cursor Marketplace: Cursor Team Kit
Cursor ships frequently. Last updated October 28, 2026.