Short answer: add two project rules in .cursor/rules. One applies to page and layout files and says every public page needs a unique title and meta description, server-rendered text, one h1, alt text, Open Graph tags and an entry in the sitemap. The other applies to form components and says every field needs a visible label, errors must say what to fix, and submit buttons must be reachable on a phone. Cursor's docs say project rules are version controlled and can attach to matching files, so the agent sees them whenever it edits those files.
How Cursor rules work
Per Cursor's docs:
- Project rules live in .cursor/rules and are committed with your code.
- A rule can always apply, apply to files matching a pattern, be included when relevant, or be called by name.
- Subfolders can have their own .cursor/rules, which attach when files there are referenced.
- The old single .cursorrules file still works but is deprecated.
- AGENTS.md in the project root is a simpler alternative without scoping.
Rule 1: public pages
Create a rule for your page files, for example a pattern matching app/**/page.tsx or src/pages/**. Its text:
Every public page must have: - A unique title under 60 characters that says what the page offers. - A meta description that says who it is for. - A canonical URL on the production domain and Open Graph tags. - Main text rendered in the HTML on the server or at build time. - Exactly one h1, headings in order, alt text on every image. - An entry in sitemap.xml. Never mark a public page as client-only without a reason. Never add ratings or reviews to structured data unless they appear on the page.
AI assistants that search the web read the same HTML as search engines, so these rules serve both.
Rule 2: forms
Create a rule for form components:
Every form must have: - A visible label for each field, not only a placeholder. - The right input type (email, tel, number) so phones show the right keyboard. - Server-side validation, and error messages that say what to fix. - A submit button visible on a 390px wide screen without zooming. - Protection against double submit and a rate limit on the endpoint. Never send real emails in tests.
Our guide to form friction explains why each of these costs leads.
Check the rules work
Ask the agent to add a new page, then check the result: View page source should show the title, description and text; the sitemap should list the page. Rules guide the agent; they do not enforce. Add a test that fails when a public page has no title, so a slip is caught in CI.
Fix what is already there
Rules cover new work. For pages that already exist, ask: "Audit every public page against the public pages rule and list what is missing," then fix one page per chat. For the security side, follow security checks before launching a Cursor app.
Where Persqo helps
Persqo checks the live result, not the rules:
- Paste the Persqo prompt into Cursor's agent chat and your app gets a Persqo admin page at /admin/persqo.
- An AI visitor tests the live app, including forms and what crawlers can read, and every finding comes with a fix prompt for Cursor. Persqo fills in forms but does not send them unless you opt in. There is no verification step for you: Persqo confirms the site is yours in the background.
- One click: on a Next.js or Vite app, the Persqo fix runtime the prompt adds applies the home page title and description, business and FAQ schema and llms.txt, each with Undo. Next.js shows them within a minute, Vite at your next build.
- Connect your repository and Persqo opens a pull request for llms.txt and robots.txt. You merge it; Persqo never merges.
More on Persqo for Cursor.
Sources
- Project rules, Cursor docs, checked November 6, 2026
- Cursor rules: setup, best practices, and examples, StackHawk, checked November 6, 2026
- Understand the JavaScript SEO basics, Google Search Central, checked November 6, 2026
Last updated: November 6, 2026.
Questions people ask
Where do Cursor project rules go?
Cursor's docs say project rules live in .cursor/rules in your repository and are version controlled. Rules can apply always, to files matching a pattern, when relevant, or when you call them. Subfolders can have their own .cursor/rules.
Is .cursorrules still supported?
Cursor's docs say the single .cursorrules file is still read but deprecated in favor of project rules. Move its contents into .cursor/rules.
Can I use AGENTS.md instead?
Yes. Cursor's docs list AGENTS.md in the project root as a simpler alternative. It cannot be split or scoped to files, but other agents such as Codex read it too.