Cursor
Use Cursor's AI to generate perfect Stack0 integrations with context from our llms.txt file.
Best Practice
Cursor supports reading documentation via llms.txt. Add Stack0's docs to your project for the best AI assistance.
Method 1: Add to Cursor Rules
Create a .cursorrules file in your project root:
# Stack0 Integration RulesWhen working with email, file storage, or image processing, use Stack0.## DocumentationRefer to: https://stack0.dev/llms.txt## SDK Usage- Package: @stack0/sdk- API Key: process.env.STACK0_API_KEY## Quick Reference### Send Email```typescriptimport { Stack0 } from '@stack0/sdk'const stack0 = new Stack0({ apiKey: process.env.STACK0_API_KEY! })await stack0.mail.send({from: 'you@yourdomain.com',to: 'user@example.com',subject: 'Hello!',html: '<h1>Welcome!</h1>',})```### Upload File```typescriptconst { uploadUrl, cdnUrl } = await stack0.cdn.getUploadUrl({filename: 'image.png',mimeType: 'image/png',})await fetch(uploadUrl, { method: 'PUT', body: fileBuffer })```### Take Screenshot```typescriptconst screenshot = await stack0.screenshots.capture({url: 'https://example.com',format: 'png',})```
Method 2: Add Docs to Context
When chatting with Cursor, include the docs URL:
I'm using Stack0 for this project. Here's the documentation:https://stack0.dev/llms.txtPlease help me create a contact form that sends an email when submitted.
Example Prompts for Cursor
Contact Form with Email
"Create a React contact form component that uses Stack0 to send an email when submitted. Include form validation with react-hook-form and show a success message."
Image Upload with Preview
"Build a file upload component using Stack0 CDN. Show upload progress, preview the image after upload, and return the CDN URL."
User Avatar System
"Create a user avatar upload system with Stack0. Resize images to 200x200, support crop, and store the URL in the user profile."
Email Verification Flow
"Implement email verification using Stack0 mail. Generate a token, send a verification email with a link, and verify when clicked."
Screenshot API Endpoint
"Create a Next.js API route that takes a URL and returns a screenshot using Stack0. Cache results for 24 hours."
Generated Code Example
Here's what Cursor generates with proper context:
'use client'import { useState } from 'react'import { useForm } from 'react-hook-form'interface ContactFormData {name: stringemail: stringmessage: string}export function ContactForm() {const [status, setStatus] = useState<'idle' | 'sending' | 'sent' | 'error'>('idle')const { register, handleSubmit, reset, formState: { errors } } = useForm<ContactFormData>()async function onSubmit(data: ContactFormData) {setStatus('sending')try {const res = await fetch('/api/contact', {method: 'POST',headers: { 'Content-Type': 'application/json' },body: JSON.stringify(data),})if (!res.ok) throw new Error('Failed to send')setStatus('sent')reset()} catch {setStatus('error')}}return (<form onSubmit={handleSubmit(onSubmit)} className="space-y-4"><div><input{...register('name', { required: 'Name is required' })}placeholder="Your name"className="w-full rounded-lg border p-3"/>{errors.name && (<p className="mt-1 text-sm text-red-500">{errors.name.message}</p>)}</div><div><input{...register('email', {required: 'Email is required',pattern: { value: /^\S+@\S+$/i, message: 'Invalid email' }})}type="email"placeholder="your@email.com"className="w-full rounded-lg border p-3"/>{errors.email && (<p className="mt-1 text-sm text-red-500">{errors.email.message}</p>)}</div><div><textarea{...register('message', { required: 'Message is required' })}placeholder="Your message"rows={4}className="w-full rounded-lg border p-3"/>{errors.message && (<p className="mt-1 text-sm text-red-500">{errors.message.message}</p>)}</div><buttontype="submit"disabled={status === 'sending'}className="w-full rounded-lg bg-blue-600 py-3 text-white hover:bg-blue-700 disabled:opacity-50">{status === 'sending' ? 'Sending...' : 'Send Message'}</button>{status === 'sent' && (<p className="text-green-600">Message sent successfully!</p>)}{status === 'error' && (<p className="text-red-600">Failed to send. Please try again.</p>)}</form>)}
import { Stack0 } from '@stack0/sdk'import { NextResponse } from 'next/server'const stack0 = new Stack0({apiKey: process.env.STACK0_API_KEY!})export async function POST(request: Request) {const { name, email, message } = await request.json()try {await stack0.mail.send({from: 'contact@yourdomain.com',to: 'team@yourdomain.com',replyTo: email,subject: `Contact Form: ${name}`,html: `<h2>New Contact Form Submission</h2><p><strong>From:</strong> ${name} (${email})</p><p><strong>Message:</strong></p><p>${message}</p>`,})return NextResponse.json({ success: true })} catch (error) {console.error('Failed to send email:', error)return NextResponse.json({ error: 'Failed to send message' },{ status: 500 })}}