Rule Deeplinks
Share and install Cursor rules instantly via the cursor:// protocol.
Rule deeplinks let you share a single Cursor rule file as a clickable URL. When someone clicks it, Cursor creates a .cursor/rules/NAME.mdc file in their project — no manual copying, no CLI required.
Note: Rule deeplinks install individual rule files, not full plugin bundles. To install a complete plugin (rules, skills, MCP config, hooks), use the CLI:
cursorist plugin install org/team/plugin. See the CLI docs for details.
Format
cursor://anysphere.cursor-deeplink/rule?name=NAME&text=CONTENTWeb equivalent (works in browsers without Cursor protocol handler):
https://cursor.com/link/rule?name=NAME&text=CONTENTBoth create the same file: .cursor/rules/NAME.mdc.
Parameters
| Parameter | Required | Description |
|---|---|---|
name | Yes | Filename for the rule (without .mdc extension) |
text | Yes | URL-encoded rule content (Markdown with optional frontmatter) |
Constraints
- URL max length: ~8,000 characters. Content beyond this limit is truncated.
- User confirmation: Cursor always shows a review dialog before writing the file. The user must explicitly confirm.
- No server fetch: Cursor reads content from the URL — it does not call any API.
How Cursorist Generates These
When you click "Install" on a plugin page at cursor.ist:
- The app fetches the latest plugin version and its assets
- It selects the primary rule asset (
asset_type === "rule") - Constructs the deeplink with
name= plugin slug andtext= rule content - If content exceeds ~7,500 characters, it truncates and appends a note suggesting CLI install for the full plugin
Code Examples
TypeScript
function buildRuleDeeplink(name: string, content: string): string {
const url = new URL("cursor://anysphere.cursor-deeplink/rule");
url.searchParams.set("name", name);
url.searchParams.set("text", content);
return url.toString();
}
const deeplink = buildRuleDeeplink(
"project-standards",
"# Project Standards\n\nKeep modules small and testable."
);Python
from urllib.parse import urlencode
def build_rule_deeplink(name: str, content: str) -> str:
params = {"name": name, "text": content}
return f"cursor://anysphere.cursor-deeplink/rule?{urlencode(params)}"
deeplink = build_rule_deeplink(
"project-standards",
"# Project Standards\n\nKeep modules small and testable."
)Related Deeplink Types
Command Deeplinks
cursor://anysphere.cursor-deeplink/command?name=NAME&text=CONTENTRuns a Cursor command with the given name and text.
Prompt Deeplinks
cursor://anysphere.cursor-deeplink/prompt?text=TEXTOpens Cursor with a pre-filled prompt.