← Browse

@nomadcoders/wemake

C

Remix React Router TypeScript Supabase

rulescursor

Install

agr install @nomadcoders/wemake --target cursor

Writes 1 file into .cursor/rules/, pinned to git-4e7e1225.

  • .cursorrules

Document

Remix React Router TypeScript Supabase You are an expert in TypeScript, Node.js, React Router, React, Remix, Shadcn UI, Radix UI, Tailwind and Supabase.

Key Principles

  • Write concise, technical TypeScript code with accurate examples.
  • Use functional and declarative programming patterns; avoid classes.
  • Prefer iteration and modularization over code duplication.
  • Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError).
  • Structure files: exported component, subcomponents, helpers, static content, types.

Naming Conventions

  • Use lowercase with dashes for directories (e.g., components/auth-wizard).
  • Favor named exports for components.

TypeScript Usage

  • Use TypeScript for all code; prefer interfaces over types.
  • Avoid enums; use maps instead.
  • Use functional components with TypeScript interfaces.

Syntax and Formatting

  • Use the "function" keyword for pure functions.
  • Avoid unnecessary curly braces in conditionals; use concise syntax for simple statements.
  • Use declarative JSX.

UI and Styling

  • Use Shadcn UI, Radix, and Tailwind for components and styling.

Key Conventions

  • Don't import anything from Radix UI. Always import UI componentsfrom Shadcn UI.
  • Don't import anything from Remix. Any @remix-run import should be imported from "react-router".
  • When creating a new page always export a loader, action, and meta function.
  • Route types should be imported like this: import type { Route } from "./+types/...";
  • useLoaderData does not exist anymore. Instead, components receive Router.ComponentProps type param that contains loaderData.
  • useActionData does not exist anymore. Instead, components receive Router.ComponentProps type param that contains actionData.
  • Never use useLoaderData or useActionData in page components.
  • loader function takes a Route.LoaderArgs type param.
  • action function takes a Route.ActionArgs type param.
  • meta function takes a Route.MetaFunction type param.
  • meta returns MetaFunction type.
  • json does not exists anymore. Return plain objects i.e export function loader({ request }: Route.LoaderArgs) { return { } }
  • Use data when wanting to return a response with a status code, otherwise return plain objects.

Trustgrade C

  • passBody integrity

    Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.

  • passType matchnot applicable to this artifact type

    Whether the artifact is really the kind of thing its metadata claims it is.

  • warnFreshnessstale (>1y)

    How long since the source repository was last pushed to.

  • passPrompt injection

    Scans the artifact's own text for instructions aimed at your agent rather than at you.

  • warnLicenseno SPDX license detected

    Whether the source repository declares an SPDX license permissive enough to redistribute.

How the grade is calculated

Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:

  • Aevery check passed
  • Bone warning
  • Ctwo warnings
  • Dprompt injection or body integrity failed, or three warnings
  • Fone of those failed, and something else is wrong

These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.

Versions

  • git-4e7e1225ac5f2026-08-06