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.
npx agentmods add rules/girijashankarj/cursor-handbook/component-patternsgit clone --depth 1 https://github.com/girijashankarj/cursor-handbookWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/rules/girijashankarj/cursor-handbook/component-patterns)<a href="https://agentmods.dev/rules/girijashankarj/cursor-handbook/component-patterns"><img src="https://agentmods.dev/badge/rules/girijashankarj/cursor-handbook/component-patterns.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.00895 |
| Opus 5 | $0.00000 | $0.00447 |
| Sonnet 5 | $0.00000 | $0.00179 |
| Haiku 4.5 | $0.00000 | $0.00089 |
Grade A, and why
component-patterns 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 today.
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.
How it starts
The opening of the file, as written. The whole thing — 131 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Frontend Component Patterns
Component Structure
src/components/
├── ui/ # Atomic/base components
│ ├── Button/
│ │ ├── Button.tsx
│ │ ├── Button.test.tsx
│ │ ├── Button.stories.tsx
│ │ └── index.ts
│ ├── Input/
│ └── Modal/
├── features/ # Feature-specific components
│ ├── Auth/
│ ├── Dashboard/
│ └── Settings/
├── layout/ # Layout components
│ ├── Header/
│ ├── Sidebar/
│ └── Footer/
└── shared/ # Shared/utility components
├── ErrorBoundary/
├── LoadingSpinner/
└── ProtectedRoute/
Component Guidelines
Functional Components Only
- Use functional components with hooks — no class components
- Use
React.FCor explicit return types - Destructure props at the function signature level
Props
- Define props interface above the component
- Use descriptive prop names
- Provide default values where appropriate
- Document complex props with JSDoc comments
interface ButtonProps {
/** Button label text */
label: string;
/** Visual style variant */
variant?: 'primary' | 'secondary' | 'danger';
/** Disabled state */
disabled?: boolean;
/** Click handler */
onClick: () => void;
}
export const Button: React.FC<ButtonProps> = ({
label,
variant = 'primary',
disabled = false,
onClick,
}) => {
return (
<button
className={`btn btn-${variant}`}
disabled={disabled}
onClick={onClick}
>
{label}
</button>
);
};
State Management
- Local state:
useStatefor component-scoped state - Shared state: Context API or state library (Zustand, Redux Toolkit)
- Server state: React Query / TanStack Query
- Form state: React Hook Form or Formik
- NEVER prop-drill more than 2 levels — use context or state management
Performance
- Memoize expensive computations with
useMemo - Memoize callbacks with
useCallbackwhen passing to child components - Use
React.memofor pure presentational components - Lazy load routes and heavy components with
React.lazy - Virtualize long lists (react-window or react-virtuoso)
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.
- today First seen · 131 lines · 0 tokens per session scan A 5bddcbfb37ba
component-patterns is a cursor rule published in the GitHub repository girijashankarj/cursor-handbook (30 stars, last pushed 4d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 895 tokens. 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-09-03.
Other cursor rules, from other repositories
graphstack
GraphStack v4.7.1 — Orchestrated, graph-first, GNAP-tracked AI development (cross-platform).
code-optimization
Guidelines for optimizing duplicate and poorly structured code.
mcp
Guidelines for implementing and interacting with the Task Master MCP Server.
commands
Guidelines for implementing CLI commands using Commander.js.
git_workflow
Git workflow integrated with Task Master for feature development and collaboration.
hamster
Guidelines for implementing tasks imported from Hamster using Task Master CLI.