best-practices

A collection of coding rules for keeping a codebase clear, maintainable, and consistent with its existing structure, especially in React and TypeScript projects.

In plain words
What is it for?
Guiding code style, component structure, data fetching, environment access, analytics, error reporting, and related engineering decisions.
Why use it?
It reduces improvised fixes, unsafe types, dead code, misplaced integrations, and inconsistent project patterns.

Cursor rule for Cursor

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/kws-projects/react-boilerplate/best-practices
Clone the repo
git clone --depth 1 https://github.com/kws-projects/react-boilerplate

Made for: Cursor.

Per session 734 This file is loaded in full into every session.
When invoked 734 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00734 $0.00734
Opus 5 $0.00367 $0.00367
Sonnet 5 $0.00147 $0.00147
Haiku 4.5 $0.00073 $0.00073

Measured 2d ago against content hash 882a2739524c, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

best-practices scanned grade A with 0 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 2d 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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/rules/best-practices.mdc · 62 lines

How it starts

The opening of the file, as written. The whole thing — 62 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Best Practices

Follow framework and language best practices. Write clean, readable, and maintainable code. Avoid hacky workarounds.

General

  • Match the existing code style and project structure. Read neighbouring files before adding new ones.
  • Prefer clarity over cleverness. Keep functions small and focused.
  • Do not add // @ts-ignore, any, or eslint-disable to silence problems without a justified reason. Fix the root cause.
  • No dead code, leftover debug logs, or commented-out blocks.

React / TypeScript

  • Use strict, explicit types. Avoid any; prefer precise types and generics.
  • Keep components pure; isolate side effects in useEffect, providers, or lib/ adapters.
  • Data fetching goes through React Query, not ad-hoc useEffect fetches.
  • Access env only via @/config/env; access external SDKs only via @/lib adapters. Never import @sentry/react or call window.gtag outside of src/lib/monitoring.ts and src/lib/analytics.ts respectively.
  • Track analytics events via analytics.track(...) or useAnalytics(). Define new event shapes in src/types/analytics.ts.
  • Capture errors via monitoring.captureException(...) or useMonitoring(). Add context with tags, extras, and breadcrumbs for debuggability.
  • All user-facing text uses i18n; support both LTR and RTL layouts (use logical CSS properties / Tailwind start/end utilities, not hardcoded left/right).
  • Use semantic color tokens (bg-primary, text-destructive, bg-success, etc.) — never raw hex, rgb, or oklch values in component classNames. Add new colors via src/index.css (see the color-management skill).

Responsive design

  • Mobile-first: write the base/mobile layout first, then layer on breakpoints (sm:, md:, lg:, xl:). Avoid max-*: overrides when a mobile-first approach works.
  • Use Tailwind breakpoints — do not write custom @media queries or inline window.innerWidth checks. The responsive system is built into every utility class (grid-cols-1 md:grid-cols-2 lg:grid-cols-3).
  • Content widths: constrain page content with max-w-* + mx-auto + horizontal padding (px-4). Avoid fixed-pixel widths.
  • Touch targets: interactive elements should be at least h-9 / 44px on mobile (shadcn defaults already satisfy this).
  • Text scaling: use Tailwind's responsive text utilities (text-base md:text-lg) rather than hardcoded font sizes.
  • Container queries: for component-level responsiveness (cards, widgets), prefer @container / @lg: over viewport breakpoints where appropriate. shadcn's CardHeader already uses @container.

Read the full file on GitHub · 62 lines

Changes

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.

  1. 2d ago First seen · 62 lines · 734 tokens per session scan A 882a2739524c

Subscribe to this mod's changes

best-practices is a cursor rule published in the GitHub repository kws-projects/react-boilerplate (3 stars, last pushed 3mo ago), licensed MIT. It adds 734 tokens to every session, about $0.0037 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.