Skip to content

R44VC0RP/cursor.link

Repository files navigation

cursor.link

Share and discover Cursor rules – like Gist, but for Cursor IDE rules

πŸš€ Live Demo

cursor.link is a platform for creating, sharing, and discovering Cursor IDE rules. Create custom rules with different application types, share them with the community, and install them directly via CLI using a shadcn-style registry system.

✨ Features

  • πŸ–‹οΈ Rich Rule Editor - Create cursor rules with live preview and token counting
  • πŸ”„ Rule Types - Support for Always Apply, Intelligent, File-specific, and Manual rules
  • πŸ”— Easy Sharing - Share rules with unique URLs and public/private visibility
  • πŸ“¦ CLI Integration - Install rules directly via npx shadcn add command
  • πŸ‘€ User Dashboard - Manage all your rules in one place
  • πŸ” Public Discovery - Browse and discover community-shared rules
  • 🎨 Modern UI - Beautiful dark theme with Tailwind CSS and Radix components

πŸ› οΈ Tech Stack

Frontend

  • Next.js 15 - App Router with React 19
  • TypeScript - Full type safety
  • Tailwind CSS v4 - Modern styling system
  • Radix UI - Accessible component primitives
  • React Hook Form + Zod - Form handling and validation

Backend

  • PostgreSQL - Primary database (via Neon.tech)
  • Drizzle ORM - Type-safe database queries
  • Better Auth - Modern authentication with magic links
  • Inbound Email - Transactional email service

Tools & Services

  • Vercel - Deployment and hosting
  • React Scan - Performance monitoring
  • Sonner - Toast notifications

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL database (we recommend Neon)
  • Inbound Email account (get your API key from inbound.new)

Environment Setup

Create a .env.local file in the root directory:

# Database
DATABASE_URL="postgresql://username:password@host/database"

# Email Service (get from inbound.new)
INBOUND_API_KEY="your_inbound_api_key"

# Auth (automatically generated)
BETTER_AUTH_SECRET="your_auth_secret"
BETTER_AUTH_URL="http://localhost:3000"

Installation

  1. Clone the repository

    git clone https://github.com/your-username/cursor.link.git
    cd cursor.link
  2. Install dependencies

    npm install
  3. Set up the database

    # Generate migrations
    npm run db:generate
    
    # Apply migrations
    npm run db:migrate
  4. Start the development server

    npm run dev
  5. Open your browser Navigate to http://localhost:3000

πŸ“ Project Structure

cursor.link/
β”œβ”€β”€ app/                          # Next.js app directory
β”‚   β”œβ”€β”€ [userId]/[ruleId]/       # Public rule viewer pages
β”‚   β”œβ”€β”€ api/                     # API routes
β”‚   β”‚   β”œβ”€β”€ auth/               # Authentication endpoints
β”‚   β”‚   β”œβ”€β”€ cursor-rules/       # CRUD operations for rules
β”‚   β”‚   β”œβ”€β”€ my-rules/           # User's personal rules
β”‚   β”‚   β”œβ”€β”€ public-rule/        # Public rule access
β”‚   β”‚   └── registry/           # shadcn-style CLI registry
β”‚   β”œβ”€β”€ dashboard/              # User dashboard
β”‚   β”œβ”€β”€ login/                  # Authentication pages
β”‚   └── page.tsx               # Homepage/editor
β”œβ”€β”€ components/                  # Reusable UI components
β”‚   β”œβ”€β”€ auth/                   # Authentication components
β”‚   β”œβ”€β”€ ui/                     # Base UI components
β”‚   └── header.tsx             # Site header
β”œβ”€β”€ lib/                        # Shared utilities
β”‚   β”œβ”€β”€ auth.ts               # Authentication configuration
β”‚   β”œβ”€β”€ db.ts                 # Database connection
β”‚   β”œβ”€β”€ schema.ts             # Database schema
β”‚   └── utils.ts              # Helper utilities
└── drizzle/                    # Database migrations

πŸ”Œ API Reference

Rules Management

Get Rules

GET /api/cursor-rules
GET /api/cursor-rules?ruleId=<id>

Fetch all accessible rules or a specific rule by ID.

Create Rule

POST /api/cursor-rules
Content-Type: application/json

{
  "title": "my-rule",
  "content": "Rule content...",
  "ruleType": "always|intelligent|specific|manual",
  "isPublic": false
}

Update Rule

PUT /api/cursor-rules
Content-Type: application/json

{
  "id": "rule-id",
  "title": "updated-title",
  "content": "Updated content...",
  "ruleType": "always",
  "isPublic": true
}

Registry (CLI Integration)

Install via CLI

npx shadcn add https://cursor.link/api/registry/[ruleId]

Registry Item

GET /api/registry/[ruleId]

Returns a shadcn-compatible registry item for CLI installation.

Public Access

View Public Rule

GET /api/public-rule/[userId]/[ruleId]

Access a public rule and increment view count.

My Rules

GET /api/my-rules

Get all rules belonging to the authenticated user.

🎯 Usage

Creating Rules

  1. Visit the homepage - Start creating immediately without login
  2. Choose rule type - Select from Always Apply, Intelligent, File-specific, or Manual
  3. Write your rule - Use the built-in editor with syntax highlighting
  4. Save and share - Login to save privately or share publicly

Rule Types

  • Always Apply - Applied to every chat and cmd-k session
  • Apply Intelligently - Applied when AI determines relevance
  • Apply to Specific Files - Applied when file matches specified patterns
  • Apply Manually - Applied only when @-mentioned

CLI Installation

Share your rules with the community by making them public, then others can install them directly:

npx shadcn add https://cursor.link/api/registry/your-rule-id

This installs the rule to ~/.cursor/rules/ automatically.

🀝 Contributing

We welcome contributions! Here's how to get started:

Development Setup

  1. Fork the repository on GitHub
  2. Clone your fork
    git clone https://github.com/your-username/cursor.link.git
  3. Create a feature branch
    git checkout -b feature/amazing-feature
  4. Follow the setup instructions above to get the project running locally

Code Style

  • TypeScript - All new code should be typed
  • ESLint - Run npm run lint before committing
  • Prettier - Code formatting is enforced
  • Conventional Commits - Use conventional commit messages

Contribution Areas

  • πŸ› Bug fixes - Help improve stability
  • ✨ New features - Add functionality users want
  • πŸ“š Documentation - Improve guides and API docs
  • 🎨 UI/UX - Enhance the user experience
  • ⚑ Performance - Optimize loading and responsiveness
  • πŸ”§ Tooling - Improve developer experience

Pull Request Process

  1. Update documentation for any new features
  2. Add tests for new functionality
  3. Ensure CI passes - All checks must be green
  4. Request review from maintainers
  5. Address feedback and iterate

Local Development Tips

  • Hot reload - Changes reflect immediately in development
  • Database changes - Run migrations after schema updates
  • Email testing - Set up Inbound for magic link testing
  • API testing - Use the built-in API routes for testing

πŸš€ Deployment

Vercel (Recommended)

  1. Fork the repository
  2. Import to Vercel from your GitHub account
  3. Add environment variables in Vercel dashboard
  4. Deploy - Automatic deployments on every push

Environment Variables for Production

# Database (production)
DATABASE_URL="postgresql://prod_user:password@host/database"

# Email Service
INBOUND_API_KEY="your_production_api_key"

# Auth
BETTER_AUTH_SECRET="your_secure_random_string"
BETTER_AUTH_URL="https://your-domain.com"

Custom Deployment

The app is a standard Next.js application and can be deployed to any platform that supports Node.js:

  • Vercel (recommended)
  • Netlify
  • Railway
  • Digital Ocean App Platform
  • AWS Amplify

πŸ“„ License

This project is open source and available under the MIT License.

πŸ™ Acknowledgments

  • Cursor - For creating an amazing AI-powered IDE
  • shadcn/ui - For the incredible component library
  • v0.dev - For rapid prototyping assistance
  • Vercel - For seamless deployment
  • Neon - For serverless PostgreSQL

Built with ❀️ for the Cursor community. Share your rules today!

About

gists but for cursor rules, easy to share

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published