Cursorist Docs
Integration

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=CONTENT

Web equivalent (works in browsers without Cursor protocol handler):

https://cursor.com/link/rule?name=NAME&text=CONTENT

Both create the same file: .cursor/rules/NAME.mdc.

Parameters

ParameterRequiredDescription
nameYesFilename for the rule (without .mdc extension)
textYesURL-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:

  1. The app fetches the latest plugin version and its assets
  2. It selects the primary rule asset (asset_type === "rule")
  3. Constructs the deeplink with name = plugin slug and text = rule content
  4. 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."
)
cursor://anysphere.cursor-deeplink/command?name=NAME&text=CONTENT

Runs a Cursor command with the given name and text.

cursor://anysphere.cursor-deeplink/prompt?text=TEXT

Opens Cursor with a pre-filled prompt.