TinkerHoodSubscribe

Cursor rules vs Cursor skills

How Cursor's project rules differ from its agent skills, when each applies, and what we could and couldn't test.

Arun KumarMember of Technical Staff
Published
Sep 27, 2026
Checked
Sep 27, 2026
Words
688

How far we checked this page

Signed by Arun Kumar, Sep 27, 2026. Passing one check says nothing about the next.

  1. FormatNot checkedThe file format was not checked for this page.
  2. InstallsNot checkedInstallation was not checked for this page.
  3. LoadsNot checkedLive loading was not checked for this page.
  4. HelpsNot checkedA with/without task comparison was not run.

A Cursor rule is reusable instructions scoped by project, file pattern, relevance, or manual selection: it’s how you tell Cursor’s agent about codebase conventions that should apply predictably. A Cursor skill packages a task-specific workflow in SKILL.md, with scripts and references, that the agent loads when doing that task. Reach for a rule when you want a convention to apply automatically to matching files. Reach for a skill when you want a full procedure the agent pulls in only when relevant. As of September 2026, Cursor documents both side by side rather than treating one as a replacement for the other.

Choose a rule when

  • You want a convention to apply automatically to particular files or the whole project, for example “use our error-handling pattern in every **/*.tsx file.”
  • The behavior should be predictable from scope alone: Always Apply, Apply to Specific Files, Apply Intelligently, or Apply Manually, per Cursor’s rules docs.
  • The instruction is short, closer to a standing convention than a multi-step procedure.

Choose a skill when

  • The task is a multi-step procedure that benefits from supporting files (a references/ checklist, a scripts/ helper), not just a paragraph of guidance.
  • You want the same SKILL.md format to be portable to other hosts, since Cursor skills follow the Agent Skills specification.
  • The agent should load it only when doing that specific task, not on every matching file.

Worked example

Say a project wants two things: every .tsx file reviewed against an internal error-handling convention, and a separate, occasional “explain this error” workflow. The first is a natural fit for a rule: a file at .cursor/rules/error-handling.mdc with frontmatter description, globs: ["**/*.tsx"], set to Apply to Specific Files, so it’s pulled in when a matching file is in the agent’s context, with no explicit invocation needed. Cursor rules.

The second is a better fit for a skill: our explain-error SKILL.md, with instructions and a references/checklist.md, placed at .cursor/skills/explain-error/ (or the shared .agents/skills/explain-error/ path Cursor also documents). It only enters play when the agent judges that an error-explaining task matches its description. Cursor skills.

We tested explain-error’s discovery and invocation on Codex, not Cursor. Cursor wasn’t installed in our test environment, so every Cursor-specific claim in this example is what Cursor’s docs describe rather than something we watched happen.

At a glance

Cursor ruleCursor skill
File.cursor/rules/*.mdc.cursor/skills/<name>/SKILL.md (or shared .agents/skills/<name>/SKILL.md)
FormatMDC frontmatter: description, globs, alwaysApplyAgent Skills frontmatter: name, description
ActivationAlways Apply, Apply to Specific Files (by glob), Apply Intelligently, or Apply ManuallyLoaded when the agent judges the task matches the description
Supporting filesNo standard equivalentreferences/, scripts/, assets/
Portable to other hosts?No: .mdc and its fields are Cursor-specificYes in format; folder location and Cursor-specific fields (like paths) aren’t
Version noteLegacy .cursorrules still works but is deprecated in favor of project rulesCursor v2.4 added /migrate-to-skills for dynamic rules and slash commands, not a reason to drop Always-Apply or glob rules

What we checked

Everything on this page is from Cursor’s own documentation (rules and skills), checked September 27, 2026, not from our own testing. Cursor wasn’t installed in our test environment on that date, so none of the Cursor-specific behavior here (rule attachment, skill discovery, the /migrate-to-skills command) has been confirmed hands-on by us.

The one hands-on result we have is Codex, not Cursor: our explain-error SKILL.md was discovered and correctly invoked on Codex CLI 0.157.1 at .agents/skills/explain-error/, the same shared path Cursor also documents for skills. That’s suggestive that the shared convention is real across hosts, but it isn’t evidence that Cursor itself loads from it; only a direct Cursor test would confirm that.

What we didn’t check: no Cursor testing at all, no rule attachment, no skill discovery, no /migrate-to-skills run. Treat every claim above as documentation until someone runs it on an installed Cursor build.

Sources

Field Notes. One email a week.

One tested workflow, one ecosystem change that matters, and one honest failure. Nothing on this site sits behind the signup.