codehava-agent-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/README.md +56 -0
  2. package/bin/cli.js +56 -0
  3. package/package.json +26 -0
  4. package/templates/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  5. package/templates/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  6. package/templates/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  7. package/templates/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  8. package/templates/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
  9. package/templates/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  10. package/templates/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  11. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  12. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  13. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  14. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  15. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  16. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  17. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  18. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  19. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  20. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  21. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  22. package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  23. package/templates/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  24. package/templates/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  25. package/templates/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  26. package/templates/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  27. package/templates/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  28. package/templates/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  29. package/templates/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  30. package/templates/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  31. package/templates/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  32. package/templates/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  33. package/templates/.agent/agents/backend-specialist.md +263 -0
  34. package/templates/.agent/agents/code-archaeologist.md +106 -0
  35. package/templates/.agent/agents/database-architect.md +226 -0
  36. package/templates/.agent/agents/debugger.md +225 -0
  37. package/templates/.agent/agents/devops-engineer.md +242 -0
  38. package/templates/.agent/agents/documentation-writer.md +104 -0
  39. package/templates/.agent/agents/explorer-agent.md +73 -0
  40. package/templates/.agent/agents/frontend-specialist.md +593 -0
  41. package/templates/.agent/agents/game-developer.md +162 -0
  42. package/templates/.agent/agents/mobile-developer.md +377 -0
  43. package/templates/.agent/agents/orchestrator.md +416 -0
  44. package/templates/.agent/agents/penetration-tester.md +188 -0
  45. package/templates/.agent/agents/performance-optimizer.md +187 -0
  46. package/templates/.agent/agents/product-manager.md +112 -0
  47. package/templates/.agent/agents/product-owner.md +95 -0
  48. package/templates/.agent/agents/project-planner.md +406 -0
  49. package/templates/.agent/agents/qa-automation-engineer.md +103 -0
  50. package/templates/.agent/agents/security-auditor.md +170 -0
  51. package/templates/.agent/agents/seo-specialist.md +111 -0
  52. package/templates/.agent/agents/test-engineer.md +158 -0
  53. package/templates/.agent/mcp_config.json +129 -0
  54. package/templates/.agent/rules/GEMINI.md +273 -0
  55. package/templates/.agent/scripts/auto_preview.py +148 -0
  56. package/templates/.agent/scripts/checklist.py +217 -0
  57. package/templates/.agent/scripts/session_manager.py +120 -0
  58. package/templates/.agent/scripts/verify_all.py +327 -0
  59. package/templates/.agent/skills/api-patterns/SKILL.md +81 -0
  60. package/templates/.agent/skills/api-patterns/api-style.md +42 -0
  61. package/templates/.agent/skills/api-patterns/auth.md +24 -0
  62. package/templates/.agent/skills/api-patterns/documentation.md +26 -0
  63. package/templates/.agent/skills/api-patterns/graphql.md +41 -0
  64. package/templates/.agent/skills/api-patterns/rate-limiting.md +31 -0
  65. package/templates/.agent/skills/api-patterns/response.md +37 -0
  66. package/templates/.agent/skills/api-patterns/rest.md +40 -0
  67. package/templates/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  68. package/templates/.agent/skills/api-patterns/security-testing.md +122 -0
  69. package/templates/.agent/skills/api-patterns/trpc.md +41 -0
  70. package/templates/.agent/skills/api-patterns/versioning.md +22 -0
  71. package/templates/.agent/skills/app-builder/SKILL.md +75 -0
  72. package/templates/.agent/skills/app-builder/agent-coordination.md +71 -0
  73. package/templates/.agent/skills/app-builder/feature-building.md +53 -0
  74. package/templates/.agent/skills/app-builder/project-detection.md +34 -0
  75. package/templates/.agent/skills/app-builder/scaffolding.md +118 -0
  76. package/templates/.agent/skills/app-builder/tech-stack.md +41 -0
  77. package/templates/.agent/skills/app-builder/templates/SKILL.md +39 -0
  78. package/templates/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  79. package/templates/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  80. package/templates/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  81. package/templates/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  82. package/templates/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  83. package/templates/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  84. package/templates/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  85. package/templates/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  86. package/templates/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  87. package/templates/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  88. package/templates/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  89. package/templates/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  90. package/templates/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  91. package/templates/.agent/skills/architecture/SKILL.md +55 -0
  92. package/templates/.agent/skills/architecture/context-discovery.md +43 -0
  93. package/templates/.agent/skills/architecture/examples.md +94 -0
  94. package/templates/.agent/skills/architecture/pattern-selection.md +68 -0
  95. package/templates/.agent/skills/architecture/patterns-reference.md +50 -0
  96. package/templates/.agent/skills/architecture/trade-off-analysis.md +77 -0
  97. package/templates/.agent/skills/bash-linux/SKILL.md +199 -0
  98. package/templates/.agent/skills/behavioral-modes/SKILL.md +242 -0
  99. package/templates/.agent/skills/better-auth-patterns/SKILL.md +121 -0
  100. package/templates/.agent/skills/brainstorming/SKILL.md +163 -0
  101. package/templates/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
  102. package/templates/.agent/skills/bullmq-worker/SKILL.md +124 -0
  103. package/templates/.agent/skills/clean-code/SKILL.md +201 -0
  104. package/templates/.agent/skills/code-review-checklist/SKILL.md +109 -0
  105. package/templates/.agent/skills/database-design/SKILL.md +52 -0
  106. package/templates/.agent/skills/database-design/database-selection.md +43 -0
  107. package/templates/.agent/skills/database-design/indexing.md +39 -0
  108. package/templates/.agent/skills/database-design/migrations.md +48 -0
  109. package/templates/.agent/skills/database-design/optimization.md +36 -0
  110. package/templates/.agent/skills/database-design/orm-selection.md +30 -0
  111. package/templates/.agent/skills/database-design/schema-design.md +56 -0
  112. package/templates/.agent/skills/database-design/scripts/schema_validator.py +172 -0
  113. package/templates/.agent/skills/deployment-procedures/SKILL.md +241 -0
  114. package/templates/.agent/skills/doc.md +177 -0
  115. package/templates/.agent/skills/documentation-templates/SKILL.md +194 -0
  116. package/templates/.agent/skills/feature-spec-writer/SKILL.md +76 -0
  117. package/templates/.agent/skills/frontend-design/SKILL.md +452 -0
  118. package/templates/.agent/skills/frontend-design/animation-guide.md +331 -0
  119. package/templates/.agent/skills/frontend-design/color-system.md +311 -0
  120. package/templates/.agent/skills/frontend-design/decision-trees.md +418 -0
  121. package/templates/.agent/skills/frontend-design/motion-graphics.md +306 -0
  122. package/templates/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  123. package/templates/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  124. package/templates/.agent/skills/frontend-design/typography-system.md +345 -0
  125. package/templates/.agent/skills/frontend-design/ux-psychology.md +1116 -0
  126. package/templates/.agent/skills/frontend-design/visual-effects.md +383 -0
  127. package/templates/.agent/skills/game-development/2d-games/SKILL.md +119 -0
  128. package/templates/.agent/skills/game-development/3d-games/SKILL.md +135 -0
  129. package/templates/.agent/skills/game-development/SKILL.md +167 -0
  130. package/templates/.agent/skills/game-development/game-art/SKILL.md +185 -0
  131. package/templates/.agent/skills/game-development/game-audio/SKILL.md +190 -0
  132. package/templates/.agent/skills/game-development/game-design/SKILL.md +129 -0
  133. package/templates/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
  134. package/templates/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
  135. package/templates/.agent/skills/game-development/pc-games/SKILL.md +144 -0
  136. package/templates/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
  137. package/templates/.agent/skills/game-development/web-games/SKILL.md +150 -0
  138. package/templates/.agent/skills/geo-fundamentals/SKILL.md +156 -0
  139. package/templates/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  140. package/templates/.agent/skills/i18n-localization/SKILL.md +154 -0
  141. package/templates/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  142. package/templates/.agent/skills/intelligent-routing/SKILL.md +335 -0
  143. package/templates/.agent/skills/lint-and-validate/SKILL.md +45 -0
  144. package/templates/.agent/skills/lint-and-validate/scripts/lint_runner.py +184 -0
  145. package/templates/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  146. package/templates/.agent/skills/mcp-builder/SKILL.md +176 -0
  147. package/templates/.agent/skills/mobile-design/SKILL.md +394 -0
  148. package/templates/.agent/skills/mobile-design/decision-trees.md +516 -0
  149. package/templates/.agent/skills/mobile-design/mobile-backend.md +491 -0
  150. package/templates/.agent/skills/mobile-design/mobile-color-system.md +420 -0
  151. package/templates/.agent/skills/mobile-design/mobile-debugging.md +122 -0
  152. package/templates/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
  153. package/templates/.agent/skills/mobile-design/mobile-navigation.md +458 -0
  154. package/templates/.agent/skills/mobile-design/mobile-performance.md +767 -0
  155. package/templates/.agent/skills/mobile-design/mobile-testing.md +356 -0
  156. package/templates/.agent/skills/mobile-design/mobile-typography.md +433 -0
  157. package/templates/.agent/skills/mobile-design/platform-android.md +666 -0
  158. package/templates/.agent/skills/mobile-design/platform-ios.md +561 -0
  159. package/templates/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
  160. package/templates/.agent/skills/mobile-design/touch-psychology.md +537 -0
  161. package/templates/.agent/skills/neo-storage/SKILL.md +115 -0
  162. package/templates/.agent/skills/nextjs-api-route/SKILL.md +134 -0
  163. package/templates/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +351 -0
  164. package/templates/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  165. package/templates/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  166. package/templates/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  167. package/templates/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  168. package/templates/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  169. package/templates/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  170. package/templates/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  171. package/templates/.agent/skills/nextjs-react-expert/9-cache-components.md +103 -0
  172. package/templates/.agent/skills/nextjs-react-expert/SKILL.md +293 -0
  173. package/templates/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  174. package/templates/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  175. package/templates/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
  176. package/templates/.agent/skills/parallel-agents/SKILL.md +175 -0
  177. package/templates/.agent/skills/performance-profiling/SKILL.md +143 -0
  178. package/templates/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  179. package/templates/.agent/skills/plan-writing/SKILL.md +152 -0
  180. package/templates/.agent/skills/powershell-windows/SKILL.md +167 -0
  181. package/templates/.agent/skills/prisma-7-patterns/SKILL.md +91 -0
  182. package/templates/.agent/skills/python-patterns/SKILL.md +441 -0
  183. package/templates/.agent/skills/red-team-tactics/SKILL.md +199 -0
  184. package/templates/.agent/skills/rust-pro/SKILL.md +176 -0
  185. package/templates/.agent/skills/seo-fundamentals/SKILL.md +129 -0
  186. package/templates/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  187. package/templates/.agent/skills/server-management/SKILL.md +161 -0
  188. package/templates/.agent/skills/systematic-debugging/SKILL.md +109 -0
  189. package/templates/.agent/skills/tailwind-patterns/SKILL.md +269 -0
  190. package/templates/.agent/skills/tdd-workflow/SKILL.md +149 -0
  191. package/templates/.agent/skills/testing-patterns/SKILL.md +178 -0
  192. package/templates/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
  193. package/templates/.agent/skills/uu-pdp-feature-check/SKILL.md +116 -0
  194. package/templates/.agent/skills/vibe-buildplan/SKILL.md +232 -0
  195. package/templates/.agent/skills/vibe-prd/SKILL.md +226 -0
  196. package/templates/.agent/skills/vibe-research/SKILL.md +162 -0
  197. package/templates/.agent/skills/vibe-techdesign/SKILL.md +195 -0
  198. package/templates/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
  199. package/templates/.agent/skills/vulnerability-scanner/checklists.md +121 -0
  200. package/templates/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  201. package/templates/.agent/skills/web-design-guidelines/SKILL.md +57 -0
  202. package/templates/.agent/skills/webapp-testing/SKILL.md +187 -0
  203. package/templates/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  204. package/templates/.agent/skills/xendit-integration/SKILL.md +100 -0
  205. package/templates/.agent/snippets/@react-component-template.tsx +29 -0
  206. package/templates/.agent/workflows/brainstorm.md +113 -0
  207. package/templates/.agent/workflows/create.md +59 -0
  208. package/templates/.agent/workflows/db-migrate.md +26 -0
  209. package/templates/.agent/workflows/debug.md +103 -0
  210. package/templates/.agent/workflows/deploy.md +35 -0
  211. package/templates/.agent/workflows/dev-reset.md +40 -0
  212. package/templates/.agent/workflows/enhance.md +63 -0
  213. package/templates/.agent/workflows/git-commit.md +24 -0
  214. package/templates/.agent/workflows/health-check.md +34 -0
  215. package/templates/.agent/workflows/new-feature.md +32 -0
  216. package/templates/.agent/workflows/orchestrate.md +237 -0
  217. package/templates/.agent/workflows/plan.md +89 -0
  218. package/templates/.agent/workflows/preview.md +81 -0
  219. package/templates/.agent/workflows/status.md +86 -0
  220. package/templates/.agent/workflows/test.md +144 -0
  221. package/templates/.agent/workflows/ui-ux-pro-max.md +296 -0
  222. package/templates/.agent/workflows/vibe-plan.md +133 -0
  223. package/templates/.agent/workflows/vibe-recap.md +17 -0
  224. package/templates/.antigravity/rules.md +64 -0
  225. package/templates/AGENTS.md +268 -0
  226. package/templates/docs/00A-PROJECT-CHARTER.md +33 -0
  227. package/templates/docs/00B-BRD.md +25 -0
  228. package/templates/docs/01-PRD.md +122 -0
  229. package/templates/docs/01B-SRS-LENGKAP.md +60 -0
  230. package/templates/docs/02-TECH-DESIGN.md +491 -0
  231. package/templates/docs/03-UI-GUIDELINES.md +301 -0
  232. package/templates/docs/04-BACKLOG.md +127 -0
  233. package/templates/docs/05-DEPLOYMENT.md +363 -0
  234. package/templates/docs/06-DEVELOPMENT-LOG.md +78 -0
  235. package/templates/specs/README.md +54 -0
@@ -0,0 +1,150 @@
1
+ # 8. Advanced Patterns
2
+
3
+ > **Impact:** VARIABLE
4
+ > **Focus:** Advanced patterns for specific cases that require careful implementation.
5
+
6
+ ---
7
+
8
+ ## Overview
9
+
10
+ This section contains **3 rules** focused on advanced patterns.
11
+
12
+ ---
13
+
14
+ ## Rule 8.1: Initialize App Once, Not Per Mount
15
+
16
+ **Impact:** LOW-MEDIUM
17
+ **Tags:** initialization, useEffect, app-startup, side-effects
18
+
19
+ ## Initialize App Once, Not Per Mount
20
+
21
+ Do not put app-wide initialization that must run once per app load inside `useEffect([])` of a component. Components can remount and effects will re-run. Use a module-level guard or top-level init in the entry module instead.
22
+
23
+ **Incorrect (runs twice in dev, re-runs on remount):**
24
+
25
+ ```tsx
26
+ function Comp() {
27
+ useEffect(() => {
28
+ loadFromStorage()
29
+ checkAuthToken()
30
+ }, [])
31
+
32
+ // ...
33
+ }
34
+ ```
35
+
36
+ **Correct (once per app load):**
37
+
38
+ ```tsx
39
+ let didInit = false
40
+
41
+ function Comp() {
42
+ useEffect(() => {
43
+ if (didInit) return
44
+ didInit = true
45
+ loadFromStorage()
46
+ checkAuthToken()
47
+ }, [])
48
+
49
+ // ...
50
+ }
51
+ ```
52
+
53
+ Reference: [Initializing the application](https://react.dev/learn/you-might-not-need-an-effect#initializing-the-application)
54
+
55
+ ---
56
+
57
+ ## Rule 8.2: Store Event Handlers in Refs
58
+
59
+ **Impact:** LOW
60
+ **Tags:** advanced, hooks, refs, event-handlers, optimization
61
+
62
+ ## Store Event Handlers in Refs
63
+
64
+ Store callbacks in refs when used in effects that shouldn't re-subscribe on callback changes.
65
+
66
+ **Incorrect (re-subscribes on every render):**
67
+
68
+ ```tsx
69
+ function useWindowEvent(event: string, handler: (e) => void) {
70
+ useEffect(() => {
71
+ window.addEventListener(event, handler)
72
+ return () => window.removeEventListener(event, handler)
73
+ }, [event, handler])
74
+ }
75
+ ```
76
+
77
+ **Correct (stable subscription):**
78
+
79
+ ```tsx
80
+ function useWindowEvent(event: string, handler: (e) => void) {
81
+ const handlerRef = useRef(handler)
82
+ useEffect(() => {
83
+ handlerRef.current = handler
84
+ }, [handler])
85
+
86
+ useEffect(() => {
87
+ const listener = (e) => handlerRef.current(e)
88
+ window.addEventListener(event, listener)
89
+ return () => window.removeEventListener(event, listener)
90
+ }, [event])
91
+ }
92
+ ```
93
+
94
+ **Alternative: use `useEffectEvent` if you're on latest React:**
95
+
96
+ ```tsx
97
+ import { useEffectEvent } from 'react'
98
+
99
+ function useWindowEvent(event: string, handler: (e) => void) {
100
+ const onEvent = useEffectEvent(handler)
101
+
102
+ useEffect(() => {
103
+ window.addEventListener(event, onEvent)
104
+ return () => window.removeEventListener(event, onEvent)
105
+ }, [event])
106
+ }
107
+ ```
108
+
109
+ `useEffectEvent` provides a cleaner API for the same pattern: it creates a stable function reference that always calls the latest version of the handler.
110
+
111
+ ---
112
+
113
+ ## Rule 8.3: useEffectEvent for Stable Callback Refs
114
+
115
+ **Impact:** LOW
116
+ **Tags:** advanced, hooks, useEffectEvent, refs, optimization
117
+
118
+ ## useEffectEvent for Stable Callback Refs
119
+
120
+ Access latest values in callbacks without adding them to dependency arrays. Prevents effect re-runs while avoiding stale closures.
121
+
122
+ **Incorrect (effect re-runs on every callback change):**
123
+
124
+ ```tsx
125
+ function SearchInput({ onSearch }: { onSearch: (q: string) => void }) {
126
+ const [query, setQuery] = useState('')
127
+
128
+ useEffect(() => {
129
+ const timeout = setTimeout(() => onSearch(query), 300)
130
+ return () => clearTimeout(timeout)
131
+ }, [query, onSearch])
132
+ }
133
+ ```
134
+
135
+ **Correct (using React's useEffectEvent):**
136
+
137
+ ```tsx
138
+ import { useEffectEvent } from 'react';
139
+
140
+ function SearchInput({ onSearch }: { onSearch: (q: string) => void }) {
141
+ const [query, setQuery] = useState('')
142
+ const onSearchEvent = useEffectEvent(onSearch)
143
+
144
+ useEffect(() => {
145
+ const timeout = setTimeout(() => onSearchEvent(query), 300)
146
+ return () => clearTimeout(timeout)
147
+ }, [query])
148
+ }
149
+ ```
150
+
@@ -0,0 +1,103 @@
1
+ # Cache Components: `use cache` & `cacheLife`
2
+
3
+ > [!IMPORTANT]
4
+ > This is a Next.js 16+ specific skill. Do NOT apply these patterns to Next.js 15 or earlier without explicitly checking compatibility.
5
+
6
+ ## Core Philosophy
7
+ Next.js 16 marks the transition from "Segment-level caching" to "Component-level caching". We no longer rely on `export const revalidate = 3600`. Instead, we use granular directives and profiles.
8
+
9
+ ## 1. The `use cache` Directive
10
+ The `use cache` directive can be applied to **Server Components** or **Functions**.
11
+
12
+ ### Rule: Granular Application
13
+ Wrap only the data-fetching logic or the specific component that needs caching.
14
+
15
+ ```tsx
16
+ // Good: Granular function caching
17
+ async function getProduct(id: string) {
18
+ 'use cache'
19
+ return await db.product.findUnique({ where: { id } })
20
+ }
21
+
22
+ // Good: Component-level caching
23
+ export default async function ProductCard({ id }: { id: string }) {
24
+ 'use cache'
25
+ const product = await getProduct(id)
26
+ return <div>{product.name}</div>
27
+ }
28
+ ```
29
+
30
+ ## 2. Using `cacheLife`
31
+ `cacheLife` defines the "Freshness" and "Staleness" of a cached item using pre-defined or custom profiles.
32
+
33
+ ### Usage Pattern
34
+ ```tsx
35
+ import { cacheLife } from 'next/cache'
36
+
37
+ async function getStockInfo() {
38
+ 'use cache'
39
+ cacheLife('minutes') // Using a pre-defined profile
40
+ return await fetchStocks()
41
+ }
42
+ ```
43
+
44
+ ### Profile Reference
45
+ - `default`: Base profile (1 year stale time).
46
+ - `seconds`: High-frequency updates.
47
+ - `minutes`: Standard dynamic content.
48
+ - `hours`: Stable content (e.g., blog posts).
49
+ - `days`: Semi-static content.
50
+ - `weeks`: Static-like content.
51
+ - `max`: Permanent cache until invalidated.
52
+
53
+ ## 3. On-Demand Invalidation with `cacheTag`
54
+ `cacheTag` allows you to label cached data for selective purging.
55
+
56
+ ### Implementation
57
+ ```tsx
58
+ import { cacheTag } from 'next/cache'
59
+
60
+ async function getProfile(user: string) {
61
+ 'use cache'
62
+ cacheTag(`profile-${user}`)
63
+ return await db.user.findUnique(...)
64
+ }
65
+ ```
66
+
67
+ ### Revalidation
68
+ In a Server Action:
69
+ ```tsx
70
+ import { revalidateTag, updateTag } from 'next/cache'
71
+
72
+ export async function updateProfile(user: string, data: any) {
73
+ await db.user.update(...)
74
+
75
+ // Choice A: Background revalidation (Stale-While-Revalidate)
76
+ revalidateTag(`profile-${user}`)
77
+
78
+ // Choice B: Immediate "Read-Your-Writes" update
79
+ updateTag(`profile-${user}`)
80
+ }
81
+ ```
82
+
83
+ ## 4. Partial Pre-Rendering (PPR)
84
+ Next.js 16 stabilizes PPR via the `cacheComponents` flag in `next.config.ts`.
85
+
86
+ ### Pattern: Suspense Boundaries
87
+ Always wrap dynamic "Cache Components" in `<Suspense>` to enable PPR.
88
+
89
+ ```tsx
90
+ import { Suspense } from 'react'
91
+ import { Skeleton } from '@/components/ui/skeleton'
92
+
93
+ export default function Page() {
94
+ return (
95
+ <main>
96
+ <h1>Static Header</h1>
97
+ <Suspense fallback={<Skeleton />}>
98
+ <DynamicCacheComponent />
99
+ </Suspense>
100
+ </main>
101
+ )
102
+ }
103
+ ```
@@ -0,0 +1,293 @@
1
+ ---
2
+ name: react-best-practices
3
+ description: React and Next.js performance optimization from Vercel Engineering. Use when building React components, optimizing performance, eliminating waterfalls, reducing bundle size, reviewing code for performance issues, or implementing server/client-side optimizations.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep, Bash
5
+ ---
6
+
7
+ # Next.js & React Performance Expert
8
+
9
+ > **From Vercel Engineering** - 57 optimization rules prioritized by impact
10
+ > **Philosophy:** Eliminate waterfalls first, optimize bundles second, then micro-optimize.
11
+
12
+ ---
13
+
14
+ ## 🎯 Selective Reading Rule (MANDATORY)
15
+
16
+ **Read ONLY sections relevant to your task!** Check the content map below and load what you need.
17
+
18
+ > 🔴 **For performance reviews: Start with CRITICAL sections (1-2), then move to HIGH/MEDIUM.**
19
+
20
+ ---
21
+
22
+ ## 📑 Content Map
23
+
24
+ | File | Impact | Rules | When to Read |
25
+ | --------------------------------------- | ------------------ | -------- | --------------------------------------------------------------- |
26
+ | `1-async-eliminating-waterfalls.md` | 🔴 **CRITICAL** | 5 rules | Slow page loads, sequential API calls, data fetching waterfalls |
27
+ | `2-bundle-bundle-size-optimization.md` | 🔴 **CRITICAL** | 5 rules | Large bundle size, slow Time to Interactive, First Load issues |
28
+ | `3-server-server-side-performance.md` | 🟠 **HIGH** | 7 rules | Slow SSR, API route optimization, server-side waterfalls |
29
+ | `4-client-client-side-data-fetching.md` | 🟡 **MEDIUM-HIGH** | 4 rules | Client data management, SWR patterns, deduplication |
30
+ | `5-rerender-re-render-optimization.md` | 🟡 **MEDIUM** | 12 rules | Excessive re-renders, React performance, memoization |
31
+ | `6-rendering-rendering-performance.md` | 🟡 **MEDIUM** | 9 rules | Rendering bottlenecks, virtualization, image optimization |
32
+ | `7-js-javascript-performance.md` | ⚪ **LOW-MEDIUM** | 12 rules | Micro-optimizations, caching, loop performance |
33
+ | `8-advanced-advanced-patterns.md` | 🔵 **VARIABLE** | 3 rules | Advanced React patterns, useLatest, init-once |
34
+ | `9-cache-components.md` | 🔴 **CRITICAL** | 4 sections | **Next.js 16+ Only**: `use cache`, `cacheLife`, PPR, `cacheTag` |
35
+
36
+ **Total: 57 rules across 8 categories**
37
+
38
+ ---
39
+
40
+ ## 🚀 Quick Decision Tree
41
+
42
+ **What's your performance issue?**
43
+
44
+ ```
45
+ 🐌 Slow page loads / Long Time to Interactive
46
+ → Read Section 1: Eliminating Waterfalls
47
+ → Read Section 2: Bundle Size Optimization
48
+
49
+ 📦 Large bundle size (> 200KB)
50
+ → Read Section 2: Bundle Size Optimization
51
+ → Check: Dynamic imports, barrel imports, tree-shaking
52
+
53
+ 🖥️ Slow Server-Side Rendering
54
+ → Read Section 3: Server-Side Performance
55
+ → Check: Parallel data fetching, streaming
56
+
57
+ 🔄 Too many re-renders / UI lag
58
+ → Read Section 5: Re-render Optimization
59
+ → Check: React.memo, useMemo, useCallback
60
+
61
+ 🎨 Rendering performance issues
62
+ → Read Section 6: Rendering Performance
63
+ → Check: Virtualization, layout thrashing
64
+
65
+ 🌐 Client-side data fetching problems
66
+ → Read Section 4: Client-Side Data Fetching
67
+ → Check: SWR deduplication, localStorage
68
+
69
+ ✨ Need advanced patterns
70
+ → Read Section 8: Advanced Patterns
71
+
72
+ 🚀 **Next.js 16+ Performance (Caching & PPR)**
73
+ → Read Section 9: Cache Components
74
+ ```
75
+
76
+ ---
77
+
78
+ ## 📊 Impact Priority Guide
79
+
80
+ **Use this order when doing comprehensive optimization:**
81
+
82
+ ```
83
+ 1️⃣ CRITICAL (Biggest Gains - Do First):
84
+ ├─ Section 1: Eliminating Waterfalls
85
+ │ └─ Each waterfall adds full network latency (100-500ms+)
86
+ └─ Section 2: Bundle Size Optimization
87
+ └─ Affects Time to Interactive and Largest Contentful Paint
88
+
89
+ 2️⃣ HIGH (Significant Impact - Do Second):
90
+ └─ Section 3: Server-Side Performance
91
+ └─ Eliminates server-side waterfalls, faster response times
92
+
93
+ 3️⃣ MEDIUM (Moderate Gains - Do Third):
94
+ ├─ Section 4: Client-Side Data Fetching
95
+ ├─ Section 5: Re-render Optimization
96
+ └─ Section 6: Rendering Performance
97
+
98
+ 4️⃣ LOW (Polish - Do Last):
99
+ ├─ Section 7: JavaScript Performance
100
+ └─ Section 8: Advanced Patterns
101
+
102
+ 🔥 **MODERN (Next.js 16+):**
103
+ └─ Section 9: Cache Components (Replaces most traditional revalidation)
104
+ ```
105
+
106
+ ---
107
+
108
+ ## 🔗 Related Skills
109
+
110
+ | Need | Skill |
111
+ | ----------------------- | --------------------------------- |
112
+ | API design patterns | `@[skills/api-patterns]` |
113
+ | Database optimization | `@[skills/database-design]` |
114
+ | Testing strategies | `@[skills/testing-patterns]` |
115
+ | UI/UX design principles | `@[skills/frontend-design]` |
116
+ | TypeScript patterns | `@[skills/typescript-expert]` |
117
+ | Deployment & DevOps | `@[skills/deployment-procedures]` |
118
+
119
+ ---
120
+
121
+ ## ✅ Performance Review Checklist
122
+
123
+ Before shipping to production:
124
+
125
+ **Critical (Must Fix):**
126
+
127
+ - [ ] No sequential data fetching (waterfalls eliminated)
128
+ - [ ] Bundle size < 200KB for main bundle
129
+ - [ ] No barrel imports in app code
130
+ - [ ] Dynamic imports used for large components
131
+ - [ ] Parallel data fetching where possible
132
+
133
+ **High Priority:**
134
+
135
+ - [ ] Server components used where appropriate
136
+ - [ ] API routes optimized (no N+1 queries)
137
+ - [ ] Suspense boundaries for data fetching
138
+ - [ ] Static generation used where possible
139
+
140
+ **Medium Priority:**
141
+
142
+ - [ ] Expensive computations memoized
143
+ - [ ] List rendering virtualized (if > 100 items)
144
+ - [ ] Images optimized with next/image
145
+ - [ ] No unnecessary re-renders
146
+
147
+ **Low Priority (Polish):**
148
+
149
+ - [ ] Hot path loops optimized
150
+ - [ ] RegExp patterns hoisted
151
+ - [ ] Property access cached in loops
152
+
153
+ ---
154
+
155
+ ## ❌ Anti-Patterns (Common Mistakes)
156
+
157
+ **DON'T:**
158
+
159
+ - ❌ Use sequential `await` for independent operations
160
+ - ❌ Import entire libraries when you need one function
161
+ - ❌ Use barrel exports (`index.ts` re-exports) in app code
162
+ - ❌ Skip dynamic imports for large components/libraries
163
+ - ❌ Fetch data in useEffect without deduplication
164
+ - ❌ Forget to memoize expensive computations
165
+ - ❌ Use client components when server components work
166
+
167
+ **DO:**
168
+
169
+ - ✅ Fetch data in parallel with `Promise.all()`
170
+ - ✅ Use dynamic imports: `const Comp = dynamic(() => import('./Heavy'))`
171
+ - ✅ Import directly: `import { specific } from 'library/specific'`
172
+ - ✅ Use Suspense boundaries for better UX
173
+ - ✅ Leverage React Server Components
174
+ - ✅ Measure performance before optimizing
175
+ - ✅ Use Next.js built-in optimizations (next/image, next/font)
176
+
177
+ ---
178
+
179
+ ## 🎯 How to Use This Skill
180
+
181
+ ### For New Features:
182
+
183
+ 1. Check **Section 1 & 2** while building (prevent waterfalls, keep bundle small)
184
+ 2. Use server components by default (Section 3)
185
+ 3. Apply memoization for expensive operations (Section 5)
186
+
187
+ ### For Performance Reviews:
188
+
189
+ 1. Start with **Section 1** (waterfalls = biggest impact)
190
+ 2. Then **Section 2** (bundle size)
191
+ 3. Then **Section 3** (server-side)
192
+ 4. Finally other sections as needed
193
+
194
+ ### For Debugging Slow Performance:
195
+
196
+ 1. Identify the symptom (slow load, lag, etc.)
197
+ 2. Use Quick Decision Tree above
198
+ 3. Read relevant section
199
+ 4. Apply fixes in priority order
200
+
201
+ ---
202
+
203
+ ## 📚 Learning Path
204
+
205
+ **Beginner (Focus on Critical):**
206
+ → Section 1: Eliminating Waterfalls
207
+ → Section 2: Bundle Size Optimization
208
+
209
+ **Intermediate (Add High Priority):**
210
+ → Section 3: Server-Side Performance
211
+ → Section 5: Re-render Optimization
212
+
213
+ **Advanced (Full Optimization):**
214
+ → All sections + Section 8: Advanced Patterns
215
+
216
+ ---
217
+
218
+ ## 🔍 Validation Script
219
+
220
+ | Script | Purpose | Command |
221
+ | -------------------------------------- | --------------------------- | ------------------------------------------------------------ |
222
+ | `scripts/react_performance_checker.py` | Automated performance audit | `python scripts/react_performance_checker.py <project_path>` |
223
+
224
+ ---
225
+
226
+ ## 📖 Section Details
227
+
228
+ ### Section 1: Eliminating Waterfalls (CRITICAL)
229
+
230
+ **Impact:** Each waterfall adds 100-500ms+ latency
231
+ **Key Concepts:** Parallel fetching, Promise.all(), Suspense boundaries, preloading
232
+
233
+ ### Section 2: Bundle Size Optimization (CRITICAL)
234
+
235
+ **Impact:** Directly affects Time to Interactive, Largest Contentful Paint
236
+ **Key Concepts:** Dynamic imports, tree-shaking, barrel import avoidance
237
+
238
+ ### Section 3: Server-Side Performance (HIGH)
239
+
240
+ **Impact:** Faster server responses, better SEO
241
+ **Key Concepts:** Parallel server fetching, streaming, API route optimization
242
+
243
+ ### Section 4: Client-Side Data Fetching (MEDIUM-HIGH)
244
+
245
+ **Impact:** Reduces redundant requests, better UX
246
+ **Key Concepts:** SWR deduplication, localStorage caching, event listeners
247
+
248
+ ### Section 5: Re-render Optimization (MEDIUM)
249
+
250
+ **Impact:** Smoother UI, less wasted computation
251
+ **Key Concepts:** React.memo, useMemo, useCallback, component structure
252
+
253
+ ### Section 6: Rendering Performance (MEDIUM)
254
+
255
+ **Impact:** Better rendering efficiency
256
+ **Key Concepts:** Virtualization, image optimization, layout thrashing
257
+
258
+ ### Section 7: JavaScript Performance (LOW-MEDIUM)
259
+
260
+ **Impact:** Incremental improvements in hot paths
261
+ **Key Concepts:** Loop optimization, caching, RegExp hoisting
262
+
263
+ ### Section 8: Advanced Patterns (VARIABLE)
264
+
265
+ **Impact:** Specific use cases
266
+ **Key Concepts:** useLatest hook, init-once patterns, event handler refs
267
+
268
+ ---
269
+
270
+ ## 🎓 Best Practices Summary
271
+
272
+ **Golden Rules:**
273
+
274
+ 1. **Measure first** - Use React DevTools Profiler, Chrome DevTools
275
+ 2. **Biggest impact first** - Waterfalls → Bundle → Server → Micro
276
+ 3. **Don't over-optimize** - Focus on real bottlenecks
277
+ 4. **Use platform features** - Next.js has optimizations built-in
278
+ 5. **Think about users** - Real-world conditions matter
279
+
280
+ **Performance Mindset:**
281
+
282
+ - Every `await` in sequence = potential waterfall
283
+ - Every `import` = potential bundle bloat
284
+ - Every re-render = wasted computation (if unnecessary)
285
+ - Server components = less JavaScript to ship
286
+ - Measure, don't guess
287
+
288
+ ---
289
+
290
+ **Source:** Vercel Engineering
291
+ **Date:** January 2026
292
+ **Version:** 1.0.0
293
+ **Total Rules:** 57 across 8 categories