RuleStack

Configs

Stacks

Compare

Diff

RuleStack

Configs

Stacks

Compare

Diff

Read API

RuleStack

Configs

Stacks

Compare

Diff

Read API

Configs/Cursor rules/chihebnabil/lovable-boilerplate

Cursor rule

.cursor/rules/hooks.mdc

Custom hooks patterns for data fetching, forms, and UI state management

Cursor rules

Quality

61/100

Scores the file, not the repository.

Length

329 words

10 headings · 4 code blocks

Repository

63

— · pushed 15 days ago

Last changed

3 days ago

First indexed 3 days ago.
chihebnabil/lovable-boilerplate/.cursor/rules/hooks.mdcRawGitHub
1---
2description: Custom hooks patterns for data fetching, forms, and UI state management
3globs: ["src/hooks/**/*.{ts,tsx}"]
4alwaysApply: false
5---
6 
7# Custom Hooks Rules
8 
9## Hook Organization Patterns
10 
11### Data Fetching Hooks
12```tsx
13// hooks/useUsers.ts
14export const useUsers = () => {
15 return useQuery({
16 queryKey: ['users'],
17 queryFn: () => userService.getAllUsers(),
18 staleTime: 5 * 60 * 1000, // 5 minutes
19 })
20}
21 
22export const useUser = (id: string) => {
23 return useQuery({
24 queryKey: ['users', id],
25 queryFn: () => userService.getUser(id),
26 enabled: !!id,
27 })
28}
29```
30 
31### Form Hooks
32```tsx
33// hooks/useUserForm.ts
34export const useUserForm = (initialData?: Partial<User>) => {
35 const form = useForm<UserFormData>({
36 resolver: zodResolver(userSchema),
37 defaultValues: initialData || {},
38 })
39 
40 const { mutate: saveUser, isPending } = useMutation({
41 mutationFn: userService.updateUser,
42 onSuccess: () => toast.success('User saved'),
43 onError: (error) => toast.error(error.message),
44 })
45 
46 return { form, saveUser, isPending }
47}
48```
49 
50### UI State Hooks
51```tsx
52// hooks/useDisclosure.ts
53export const useDisclosure = (initialState = false) => {
54 const [isOpen, setIsOpen] = useState(initialState)
55
56 const open = useCallback(() => setIsOpen(true), [])
57 const close = useCallback(() => setIsOpen(false), [])
58 const toggle = useCallback(() => setIsOpen(prev => !prev), [])
59
60 return { isOpen, open, close, toggle }
61}
62```
63 
64### Local Storage Hook
65```tsx
66// hooks/useLocalStorage.ts
67export const useLocalStorage = <T>(key: string, initialValue: T) => {
68 const [storedValue, setStoredValue] = useState<T>(() => {
69 try {
70 const item = window.localStorage.getItem(key)
71 return item ? JSON.parse(item) : initialValue
72 } catch (error) {
73 return initialValue
74 }
75 })
76 
77 const setValue = useCallback((value: T | ((val: T) => T)) => {
78 try {
79 const valueToStore = value instanceof Function ? value(storedValue) : value
80 setStoredValue(valueToStore)
81 window.localStorage.setItem(key, JSON.stringify(valueToStore))
82 } catch (error) {
83 console.error(error)
84 }
85 }, [key, storedValue])
86 
87 return [storedValue, setValue] as const
88}
89```
90 
91## Hook Naming Conventions
92- **Data**: `useUsers`, `useUser`, `useProducts`
93- **Forms**: `useUserForm`, `useProductForm`
94- **UI State**: `useDisclosure`, `useToggle`, `useLocalStorage`
95- **Business Logic**: `useAuth`, `useCart`, `useNotifications`
96 
97## Hook Extraction Rules
98 
99### Extract Logic When:
100- Same logic used in 2+ components
101- Component exceeds 100 lines due to logic
102- Complex state management patterns
103- API interaction patterns
104 
105### Don't Extract When:
106- Logic is component-specific
107- Only used once
108- Simple useState patterns
109 

Sections

  • Custom Hooks Rules
  • Hook Organization Patterns
  • Data Fetching Hooks
  • Form Hooks
  • UI State Hooks
  • Local Storage Hook
  • Hook Naming Conventions
  • Hook Extraction Rules
  • Extract Logic When:
  • Don't Extract When:

What it covers

code-styleuido-not

Stack — with the evidence

typescript

(1.00)

react

(1.00)

supabase

(1.00)

tailwind

(1.00)

vite

(1.00)

eslint

(1.00)

node

(0.70)

javascript

(0.60)

github-actions

(0.60)

Glob targeting

  • src/hooks/**/*.{ts,tsx}

Format

Cursor rules

The most expressive format here. Many small .mdc files, each with frontmatter declaring when it should load, so a rule about migrations only enters context when a migration is open. Costs the most to maintain and only one editor reads it.

What the corpus says about it

Repository

Owner
chihebnabil
Language
—
License
—
Archived
no

All configs in this repo

Also in chihebnabil/lovable-boilerplate

Diff this repo’s formats

One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?

The other instruction files in this repository
RepositoryFormatStackCoversScoreChanged
chihebnabil/lovable-boilerplate.cursor/rules/design.mdc · 63Cursor rulestypescriptreact+7styleuido-not65/1003 days ago
chihebnabil/lovable-boilerplate.cursor/rules/forms.mdc · 63Cursor rulestypescriptreact+7setupstyledo-not73/1003 days ago
chihebnabil/lovable-boilerplate.cursor/rules/services.mdc · 63Cursor rulestypescriptreact+7archtypesdo-not73/1003 days ago
chihebnabil/lovable-boilerplate.cursor/rules/typescript.mdc · 63Cursor rulestypescriptreact+7setupstyletypessecurity+273/1003 days ago
chihebnabil/lovable-boilerplate.github/instructions/architecture.instructions.md · 63Copilot instructionstypescriptreact+7stylearchtypesdatabase+269/1003 days ago
chihebnabil/lovable-boilerplate.github/instructions/design.instructions.md · 63Copilot instructionstypescriptreact+7lint-formatstyleuido-not61/1003 days ago
chihebnabil/lovable-boilerplate.github/instructions/development.instructions.md · 63Copilot instructionstypescriptreact+7setupbuildtestlint-format+788/1003 days ago
chihebnabil/lovable-boilerplate.github/instructions/hooks.instructions.md · 63Copilot instructionstypescriptreact+7styleui54/1003 days ago
chihebnabil/lovable-boilerplate.github/instructions/lib.instructions.md · 63Copilot instructionstypescriptreact+7archtypesdo-not69/1003 days ago
chihebnabil/lovable-boilerplate.github/instructions/pages.instructions.md · 63Copilot instructionstypescriptreact+7archuido-not69/1003 days ago
chihebnabil/lovable-boilerplate.github/instructions/quality.instructions.md · 63Copilot instructionstypescriptreact+7lint-formatdeploymentdo-not63/1003 days ago
chihebnabil/lovable-boilerplate.github/instructions/reusable.instructions.md · 63Copilot instructionstypescriptreact+7uido-notagent-behaviour32/1003 days ago
chihebnabil/lovable-boilerplateCLAUDE.md · 63CLAUDE.mdtypescriptreact+7setupbuildtestlint-format+589/1003 days ago
chihebnabil/lovable-boilerplate.cursor/rules/core.mdc · 63Cursor rulestypescriptreact+7buildlint-formatarchui+192/1003 days ago
chihebnabil/lovable-boilerplate.github/instructions/components.instructions.md · 63Copilot instructionstypescriptreact+7styleuido-not61/1003 days ago
chihebnabil/lovable-boilerplate.github/instructions/global.instructions.md · 63Copilot instructionstypescriptreact+7buildlint-formatstylearch+4100/1003 days ago
chihebnabil/lovable-boilerplate.cursor/rules/components.mdc · 63Cursor rulestypescriptreact+7stylearchuido-not65/1003 days ago
chihebnabil/lovable-boilerplate.cursor/rules/quality.mdc · 63Cursor rulestypescriptreact+7buildlint-formatstyleui+388/1003 days ago
Diff against .cursor/rules/design.mdc Diff against .cursor/rules/forms.mdc Diff against .cursor/rules/services.mdc Diff against .cursor/rules/typescript.mdc Diff against .github/instructions/architecture.instructions.md Diff against .github/instructions/design.instructions.md Diff against .github/instructions/development.instructions.md Diff against .github/instructions/hooks.instructions.md Diff against .github/instructions/lib.instructions.md Diff against .github/instructions/pages.instructions.md Diff against .github/instructions/quality.instructions.md Diff against .github/instructions/reusable.instructions.md Diff against CLAUDE.md Diff against .cursor/rules/core.mdc Diff against .github/instructions/components.instructions.md Diff against .github/instructions/global.instructions.md Diff against .cursor/rules/components.mdc Diff against .cursor/rules/quality.mdc

Similar configs

Same format, overlapping stack, ranked by quality.

Same format, overlapping stack, ranked by quality
RepositoryFormatStackCoversScoreChanged
hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126Cursor rulesgobun+5setupbuildtestlint-format+6100/1003 days ago
TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 45Cursor rulestypescriptpytest+15testlint-formatstylearch+5100/1003 days ago
dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+15setuptestlint-formatstyle+799/1003 days ago
deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1Cursor rulestypescriptnextjs+5setuptestlint-formatstyle+799/1003 days ago
markstev/mark-starter.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+14setuptestlint-formatstyle+699/1003 days ago
Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+13setuptestlint-formatstyle+799/1003 days ago
langflow-ai/langflow.cursor/rules/docs_development.mdc · 153kCursor rulespythonnode+16setupbuildtestlint-format+797/1003 days ago
TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 45Cursor rulestypescriptpytest+15teststyletesting-strategysecurity+397/1003 days ago
RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack