Borrowing it
Nothing to install: this file belongs to julesvcode/framer-plugin-starter-kit. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/julesvcode/framer-plugin-starter-kit/main/.cursorrulesgit clone --depth 1 https://github.com/julesvcode/framer-plugin-starter-kitWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/rules/julesvcode/framer-plugin-starter-kit/cursorrules)<a href="https://agentmods.dev/rules/julesvcode/framer-plugin-starter-kit/cursorrules"><img src="https://agentmods.dev/badge/rules/julesvcode/framer-plugin-starter-kit/cursorrules/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/rules/julesvcode/framer-plugin-starter-kit/cursorrules"><img src="https://agentmods.dev/badge/rules/julesvcode/framer-plugin-starter-kit/cursorrules.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.02693 | $0.02693 |
| Opus 5.5 | $0.01077 | $0.01077 |
| Sonnet 5.5 | $0.00539 | $0.00539 |
| Haiku 4.5 | $0.00269 | $0.00269 |
Grade D, and why
cursorrules scanned grade D with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Sends data to an external URLmediumData exfiltration
A POST to an outside endpoint may be telemetry or may be exfiltration; either way the mod talks to somewhere, and you should know where.
const response = await fetch('https://your-api.com/check-license', { method: 'POST', Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
- Clear Vite cache if issues: `rm -rf node_modules/.vite` How it starts
The opening of the file, as written. The whole thing — 378 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Framer Plugin Development Rules
Project Overview
This is a Framer plugin starter kit using React, TypeScript, Vite, and Tailwind CSS.
Tech Stack
- Framework: React 18 with TypeScript
- Build Tool: Vite 6
- Styling: Tailwind CSS v3
- Plugin SDK: framer-plugin v3
- Dev Server: HTTPS via vite-plugin-mkcert (required for Framer)
Important Configuration Notes
PostCSS & Tailwind Setup
- Use
postcss.config.jsandtailwind.config.jswith ES module syntax (export default) - These work with
"type": "module"in package.json - Always import CSS at the main entry point (
src/main.tsx), not in components - Port 5173 must be available - kill any conflicting processes before starting dev server
Development Server
- Run:
npm run dev - Server MUST run on port 5173 (default Vite port) with HTTPS
- If port is in use, kill the process:
lsof -ti:5173 | xargs kill -9 - Clear Vite cache if issues:
rm -rf node_modules/.vite
Framer Plugin API
Core API (framer object)
UI Configuration
import { framer } from "framer-plugin"
// Show plugin UI (call this at the top level, not in a component)
framer.showUI({
position: "top right" | "top left" | "bottom right" | "bottom left" | "center",
width: number,
height: number,
resizable?: boolean,
minWidth?: number,
minHeight?: number,
maxWidth?: number,
maxHeight?: number,
})
// Hide the plugin UI
framer.hideUI()
Selection Management
import { CanvasNode } from "framer-plugin"
// Subscribe to selection changes (returns cleanup function)
const unsubscribe = framer.subscribeToSelection((selection: CanvasNode[]) => {
console.log("Selection changed:", selection)
})
// Get current selection once
const selection = await framer.getSelection()
Canvas Manipulation
// Add SVG to canvas
await framer.addSVG({
svg: string, // SVG markup
name?: string, // Layer name in Framer
x?: number, // Position
y?: number,
width?: number, // Dimensions
height?: number,
fill?: string, // Override fill color
})
// Add image to canvas
await framer.addImage({
image: string | Uint8Array, // Data URL or binary data
name?: string,
x?: number,
y?: number,
width?: number,
height?: number,
})
// Add component instance
await framer.addComponentInstance({
url: string, // Component URL
name?: string,
attributes?: Record<string, any>,
x?: number,
y?: number,
})
// Clone nodes
await framer.cloneNode(node: CanvasNode)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 378 lines · 2,693 tokens per session scan D ddbe42a078bb
cursorrules is a cursor rule published in the GitHub repository julesvcode/framer-plugin-starter-kit (9 stars, last pushed 1y ago), licensed MIT. It adds 2,693 tokens to every session, about $0.0108 per session on Opus 5.5. A static security scan graded it D with 2 findings (sends data to an external url, recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
cursorrules compared with cursor rules from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| cursorrulesjulesvcode/framer-plugin-starter-kit | Cursor rule | 9 | 1y ago | MIT | D | 2,693 | Cursor |
| vue-typescript-patternssoaring-xiongkulu/easyaiot | Cursor rule | 756 | 6d ago | MIT | A | 381 | Cursor |
| nextjs-typescript-app-cursorrules-prompt-filePatrickJS/awesome-cursorrules | Cursor rule | 41k | 5mo ago | CC0-1.0 | A | 66 | Cursor |
| tsun-pany/v3-admin-vite | Cursor rule | 7.1k | 3mo ago | MIT | A | 287 | Cursor |
| typescript-securityfmflurry/settings-opencode | Cursor rule | 170 | 2d ago | MIT | A | 0 | Cursor |
| general-rulevinhnx/vtchat | Cursor rule | 59 | 17d ago | MIT | A | 2,939 | Cursor |
| naming-conventions-ruleholtwood/awesome-cursorrules-zh | Cursor rule | 241 | 19d ago | MIT | A | 64 | Cursor |