Comparison
Claude Skills vs Cursor Rules (May 2026): Triggered vs Always-On
Claude Skills wins on triggered loading, token efficiency, and the skill/plugin ecosystem. Cursor Rules wins on always-applied determinism, stack-specific community library, and MDC glob targeting. Decisive comparison.
Who wins at what
- Token efficiency (on-demand loading)
- Claude Skills
- Always-on determinism
- Cursor Rules
- Stack-specific community library
- Cursor Rules
- Cross-project skill reuse
- Claude Skills
- Glob-pattern file targeting
- Cursor Rules
- Composable plugin packaging
- Claude Skills
- Predictable rule application
- Cursor Rules
- Multi-skill orchestration via subagents
- Claude Skills
The question developers keep asking — "I have a CLAUDE.md, do I need .cursorrules?" — is a misframing. CLAUDE.md isn't a skill, and .cursorrules is deprecated. The real comparison is Claude Skills (the triggered, on-demand context primitive) versus Cursor Rules (the always-on or glob-conditional system prompt primitive).
They solve overlapping problems with opposite tradeoffs.
Who wins at what
Claude Skills wins on token efficiency (on-demand loading), cross-project reuse (skills live in ~/.claude/skills and travel), composable plugin packaging (a plugin bundles skills + agents + hooks), and multi-skill orchestration via subagents. Cursor Rules wins on always-on determinism, stack-specific community library breadth, glob-pattern file targeting (the MDC system), and predictable rule application.
The choice is not about which is "better" — it's about whether you want the rule to fire reliably (Cursor) or efficiently (Claude). Most production teams need both, for different jobs.
What each one actually is
Claude Skills are folders containing a SKILL.md with YAML frontmatter (description, optionally allowed-tools, disable-model-invocation) and a markdown body. Claude Code loads only the description into context at session start; the body loads only when Claude decides the description matches the task. Skills live at ~/.claude/skills/, .claude/skills/, or inside a plugin. Anthropic's docs at code.claude.com/docs/en/skills are the canonical reference. Cursor Rules are .mdc files (markdown with frontmatter) in .cursor/rules/ that load into Cursor's system prompt based on their frontmatter. Frontmatter fields: description, globs, alwaysApply, mode. If alwaysApply: true, the rule is in every request. If globs is set, the rule applies when the matched file is in context. Cursor's docs at cursor.com/docs/rules are the canonical reference. The legacy single-file .cursorrules format is deprecated.Where Claude Skills wins
Token efficiency. This is the load-bearing advantage. A skill's description costs ~50-200 tokens at session start; the full body (which could be 500-2,000 lines) loads only when the skill triggers. For Claude Code's 1M-context Opus 4.7, this matters less than it did at 200k, but it still compounds — 50 skills with full bodies always loaded would burn through context budget instantly. Cursor's always-on rules with alwaysApply: true cost 500-1,000 tokens per request per 100-line rule, per developertoolkit.ai's measurement. Cross-project reuse. Skills in ~/.claude/skills/ are available in every project. Cursor rules are project-scoped by default (global rules exist but are limited). For "I always want this code-review skill, regardless of repo," Claude Skills wins. Composable plugin packaging. A Claude Code plugin (plugin.json) can bundle multiple skills, agents, hooks, MCP servers, and slash commands as one distributable unit. Obra's Superpowers (120k+ stars) is a plugin; Anthropic's own claude-plugins-official ships this way. Cursor has no equivalent — rules ship as raw .mdc files, not bundled. Subagent orchestration. Claude Code's Task tool can dispatch a subagent that loads a different skill set. This is how multi-stage workflows (research → plan → implement → review) work. Cursor's Composer is a single agent; the rule set is one set per project. Skill description as the trigger surface. The description field is the skill's discoverability — Claude reads it and decides whether the skill fits. This is probabilistic but has emergent benefits: skills you didn't think to invoke trigger when the task matches. The art is description-engineering (Obra's debugging post is the reference) but the upside is real.Where Cursor Rules wins
Always-on determinism. A rule with alwaysApply: true fires every request, every time, no LLM-judgment-call involved. For "every commit message must follow this format" or "never use theany type in TypeScript," determinism beats probability. Claude Skills can be marked disable-model-invocation: true so only user-invocation works, but there's no "always-applied to every prompt" equivalent.
Stack-specific community library. cursor.directory has 4,000+ rule entries with author bylines across hundreds of stacks — Next.js 15 RSC, Tailwind v4, Phoenix 1.7 LiveView, Rails 8 Hotwire, Tauri 2, SwiftUI iOS 18. PatrickJS/awesome-cursorrules carries 39.5k stars across 202 entries. Claude Skills has anthropics/skills (small but high-quality), obra/superpowers (120k stars but methodology-focused, not stack-specific), and aggregators like claudemarketplaces.com (~4,000 entries) — but the stack-specific depth is currently thinner than Cursor's.
Glob-pattern file targeting. Cursor's MDC frontmatter globs: ['*/.tsx', '*/.ts'] is a clean primitive: this rule applies when these files are in context. Claude Skills has no equivalent — triggering is description-matching, not file-matching. For "apply this rule only when editing Python files," Cursor is the clean answer.
Predictable rule application. If your rule has alwaysApply: true and the right globs, it applies. Full stop. No "did the description match well enough" question. For teams who want their rules to fire deterministically, Cursor's model removes a class of debugging.
Mode targeting. The mode frontmatter field in Cursor 2.0 rules targets specific Cursor modes (agent, plan, debug, ask). This is granular control Claude Code doesn't have — skills trigger or don't, regardless of mode.
Where the comparison gets uncomfortable
Cursor rules eat tokens. The mirror of Claude Skills' efficiency win — Cursor rules with alwaysApply: true permanently consume context. 5 always-on rules at 100 lines each = 2,500-5,000 tokens of overhead every request. For long sessions, this compounds into real cost. Cursor's own docs recommend keeping rules under 500 lines. Claude Skills can silently fail to trigger. The flip side of "probabilistic triggering" is "didn't trigger when you needed it to." Obra's debugging post lists 8 common causes: vague description, multi-line YAML reformatted by Prettier, skill description budget overflow, wrong directory, double-nested folder after unzip, no restart after creating skills/, disable-model-invocation: true, the task being simple enough that Claude solves it without the skill. Debugging "why didn't my skill fire" is a category of work Cursor users don't have. Both ecosystems have security gaps. Snyk's 2026 ToxicSkills audit found 13.4% of public Claude Skills had a critical security issue (snyk.io/blog/toxicskills). Cursor rules have the Rules File Backdoor prompt-injection vector documented by The Hacker News — and cursor.directory runs no scans. Both communities need curation; neither has it well solved. The mental model split adds cognitive overhead. If you use both tools, you're maintaining two formats with different semantics. AGENTS.md helps for the always-on baseline conventions. But skills (triggered procedures) and rules (deterministic stack-specific guidance) don't have a unified primitive yet.When to use both together
The pattern that holds up:
- Cursor Rules for stack-specific, deterministic, file-pattern-targeted guidance — "every Python file follows PEP 8," "every .tsx component uses functional components."
- Claude Skills for triggered procedures — "when the user wants a security audit, run this skill," "when the user says 'plan first,' use the planning skill."
- AGENTS.md for the always-on universal conventions both tools should know.
- CLAUDE.md as a pointer to AGENTS.md plus Claude-Code-specific glue.
Where this comparison fails / what we don't know
We don't have a controlled benchmark of "same task, Claude Skills vs Cursor Rules, measured outcome." The dimensions in this page come from documentation, community discourse, and our own usage — not from a randomized trial. Different task shapes favor different primitives more dramatically than any one-line winner can capture.
We also don't know how the two primitives evolve. Anthropic could ship glob-conditional skill triggering. Cursor could ship triggered (vs always-on) rules. Either change would reshape the comparison. The current state is a snapshot, not a prediction.
What to read next
- /topic/claude-code-skills-explained — what skills are and why they beat MCP for most workflows
- /topic/cursor-rules — the modern .mdc rules format and how to write one
- /topic/skill-description-engineering — write a description that actually triggers
- /for/anthropics-skills — Anthropic's official skills repo
- /for/awesome-cursorrules — the 39.5k-star Cursor rules collection
Sources
- Anthropic. "Claude Code Skills documentation."
- Cursor. "Cursor Rules documentation."
- Obra. "Your Claude skill isn't triggering. Here are the 8 reasons."
- Snyk. "ToxicSkills audit — 13.4% of public skills."
- The Hacker News. "Rules File Backdoor in .cursorrules."
- developertoolkit.ai. "Cursor rule token cost: 500-1,000 per 100 lines."
- PatrickJS. "awesome-cursorrules — 39.5k stars, 202 entries."
- Pontus Abrahamsson. "cursor.directory — 250k MAU."
- Claude Code Community. "Plugins are containers for distributing skills."
Frequently asked
- I have a CLAUDE.md, do I need .cursorrules?
- If you only use Claude Code, no. If you also use Cursor, yes — Cursor doesn't read CLAUDE.md. But the modern .cursorrules format is deprecated; the current path is .cursor/rules/*.mdc. The cleaner cross-tool answer is AGENTS.md as the source of truth, with per-tool config files (CLAUDE.md, .cursor/rules/) pointing to it. See [/vs/agents-md-vs-claude-md](/vs/agents-md-vs-claude-md).
- Are Claude Skills and Cursor Rules the same thing?
- No. Cursor Rules are markdown files that load into Cursor's system prompt — always-on or glob-conditional. Claude Skills are triggered: Claude loads only the description at startup, the full body only when the task matches. Cursor Rules are deterministic ('apply if glob matches'). Claude Skills are probabilistic ('apply if Claude decides the description fits'). Different mechanisms, different tradeoffs.
- Why are Claude Skills more token-efficient?
- Claude Skills load descriptions only into context at session start (default 1% of context window = the 'skill listing budget'). The full SKILL.md body loads only when the skill is invoked. A Cursor rule with alwaysApply: true is in context for every request. For a 100-line rule, that's 500-1,000 tokens per request, per [developertoolkit.ai](https://developertoolkit.ai/cursor-ide). 10 always-on rules = 5,000-10,000 tokens of permanent overhead. Claude Skills avoid this by triggering on demand.
- Why do developers prefer Cursor Rules for stack-specific guidance?
- Determinism. If the rule has globs: ['**/*.tsx'], you know it applies to every .tsx file. Claude's skill triggering depends on description quality and the LLM's interpretation. For 'every time I edit a Python file, follow PEP 8' patterns, Cursor's glob-conditional rules are predictable in a way Claude Skills are not. The tradeoff is token overhead — see above.
- Can I write one source of truth and use it as both?
- Partially. The content (the prose of the rule) is portable. The wrapper isn't — Cursor uses MDC frontmatter (globs, alwaysApply, description), Claude Skills use YAML frontmatter (description, allowed-tools, etc.). RuleSell ships rules tagged for both formats; the underlying content is the same. The mechanical conversion is straightforward but the frontmatter has to be authored per-tool.
- What's the 'skill listing budget'?
- Claude Code's default budget for skill descriptions in context is 1% of the context window. For Opus 4.7's 1M context, that's ~10,000 tokens for all skill descriptions combined. The environment variable SLASH_COMMAND_TOOL_CHAR_BUDGET=30000 raises it. If you have many skills and they aren't triggering, the budget may be full — run /doctor in Claude Code to check. Cursor has no equivalent budget; rules either apply or they don't.