@mrtrinhvn/ag-kit 1.0.5 → 1.0.7

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 (212) hide show
  1. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  2. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  3. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  4. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  5. package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
  6. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  7. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  9. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  10. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  11. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  12. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  13. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  14. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  20. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  21. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  22. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  23. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  24. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  25. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  26. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  27. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  28. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  29. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  30. package/.agent/ARCHITECTURE.md +288 -0
  31. package/.agent/agents/backend-specialist.md +263 -0
  32. package/.agent/agents/code-archaeologist.md +106 -0
  33. package/.agent/agents/database-architect.md +226 -0
  34. package/.agent/agents/debugger.md +225 -0
  35. package/.agent/agents/devops-engineer.md +242 -0
  36. package/.agent/agents/documentation-writer.md +104 -0
  37. package/.agent/agents/explorer-agent.md +73 -0
  38. package/.agent/agents/frontend-specialist.md +556 -0
  39. package/.agent/agents/game-developer.md +162 -0
  40. package/.agent/agents/mobile-developer.md +377 -0
  41. package/.agent/agents/orchestrator.md +416 -0
  42. package/.agent/agents/penetration-tester.md +188 -0
  43. package/.agent/agents/performance-optimizer.md +187 -0
  44. package/.agent/agents/product-manager.md +112 -0
  45. package/.agent/agents/product-owner.md +95 -0
  46. package/.agent/agents/project-planner.md +406 -0
  47. package/.agent/agents/qa-automation-engineer.md +103 -0
  48. package/.agent/agents/quant-architect.md +31 -0
  49. package/.agent/agents/security-auditor.md +170 -0
  50. package/.agent/agents/seo-specialist.md +111 -0
  51. package/.agent/agents/test-engineer.md +158 -0
  52. package/.agent/mcp_config.json +24 -0
  53. package/.agent/rules/GEMINI.md +280 -0
  54. package/.agent/scripts/auto_preview.py +148 -0
  55. package/.agent/scripts/checklist.py +217 -0
  56. package/.agent/scripts/session_manager.py +120 -0
  57. package/.agent/scripts/verify_all.py +327 -0
  58. package/.agent/skills/api-patterns/SKILL.md +81 -0
  59. package/.agent/skills/api-patterns/api-style.md +42 -0
  60. package/.agent/skills/api-patterns/auth.md +24 -0
  61. package/.agent/skills/api-patterns/documentation.md +26 -0
  62. package/.agent/skills/api-patterns/graphql.md +41 -0
  63. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  64. package/.agent/skills/api-patterns/response.md +37 -0
  65. package/.agent/skills/api-patterns/rest.md +40 -0
  66. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  67. package/.agent/skills/api-patterns/security-testing.md +122 -0
  68. package/.agent/skills/api-patterns/trpc.md +41 -0
  69. package/.agent/skills/api-patterns/versioning.md +22 -0
  70. package/.agent/skills/app-builder/SKILL.md +75 -0
  71. package/.agent/skills/app-builder/agent-coordination.md +71 -0
  72. package/.agent/skills/app-builder/feature-building.md +53 -0
  73. package/.agent/skills/app-builder/project-detection.md +34 -0
  74. package/.agent/skills/app-builder/scaffolding.md +118 -0
  75. package/.agent/skills/app-builder/tech-stack.md +40 -0
  76. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  77. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  78. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  79. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  80. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  81. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  82. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  83. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  84. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  85. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  86. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  87. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  88. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  89. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  90. package/.agent/skills/architecture/SKILL.md +55 -0
  91. package/.agent/skills/architecture/context-discovery.md +43 -0
  92. package/.agent/skills/architecture/examples.md +94 -0
  93. package/.agent/skills/architecture/pattern-selection.md +68 -0
  94. package/.agent/skills/architecture/patterns-reference.md +50 -0
  95. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  96. package/.agent/skills/bash-linux/SKILL.md +199 -0
  97. package/.agent/skills/behavioral-modes/SKILL.md +242 -0
  98. package/.agent/skills/brainstorming/SKILL.md +168 -0
  99. package/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
  100. package/.agent/skills/business-ops/SKILL.md +26 -0
  101. package/.agent/skills/clean-code/SKILL.md +202 -0
  102. package/.agent/skills/cli-generator/SKILL.md +48 -0
  103. package/.agent/skills/code-review-checklist/SKILL.md +109 -0
  104. package/.agent/skills/data-science/SKILL.md +28 -0
  105. package/.agent/skills/database-design/SKILL.md +52 -0
  106. package/.agent/skills/database-design/database-selection.md +43 -0
  107. package/.agent/skills/database-design/indexing.md +39 -0
  108. package/.agent/skills/database-design/migrations.md +48 -0
  109. package/.agent/skills/database-design/optimization.md +36 -0
  110. package/.agent/skills/database-design/orm-selection.md +30 -0
  111. package/.agent/skills/database-design/schema-design.md +56 -0
  112. package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
  113. package/.agent/skills/deployment-procedures/SKILL.md +241 -0
  114. package/.agent/skills/doc.md +177 -0
  115. package/.agent/skills/documentation-templates/SKILL.md +194 -0
  116. package/.agent/skills/frontend-design/SKILL.md +418 -0
  117. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  118. package/.agent/skills/frontend-design/color-system.md +311 -0
  119. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  120. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  121. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  122. package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  123. package/.agent/skills/frontend-design/typography-system.md +345 -0
  124. package/.agent/skills/frontend-design/ux-psychology.md +541 -0
  125. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  126. package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
  127. package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
  128. package/.agent/skills/game-development/SKILL.md +167 -0
  129. package/.agent/skills/game-development/game-art/SKILL.md +185 -0
  130. package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
  131. package/.agent/skills/game-development/game-design/SKILL.md +129 -0
  132. package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
  133. package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
  134. package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
  135. package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
  136. package/.agent/skills/game-development/web-games/SKILL.md +150 -0
  137. package/.agent/skills/geo-fundamentals/SKILL.md +156 -0
  138. package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  139. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  140. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  141. package/.agent/skills/intelligent-routing/SKILL.md +335 -0
  142. package/.agent/skills/knowledge-management/SKILL.md +66 -0
  143. package/.agent/skills/lint-and-validate/SKILL.md +45 -0
  144. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +172 -0
  145. package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  146. package/.agent/skills/mcp-builder/SKILL.md +176 -0
  147. package/.agent/skills/memory-architecture/SKILL.md +107 -0
  148. package/.agent/skills/mini-antigravity-injection/SKILL.md +59 -0
  149. package/.agent/skills/mobile-design/SKILL.md +394 -0
  150. package/.agent/skills/mobile-design/decision-trees.md +516 -0
  151. package/.agent/skills/mobile-design/mobile-backend.md +491 -0
  152. package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
  153. package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
  154. package/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
  155. package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
  156. package/.agent/skills/mobile-design/mobile-performance.md +767 -0
  157. package/.agent/skills/mobile-design/mobile-testing.md +356 -0
  158. package/.agent/skills/mobile-design/mobile-typography.md +433 -0
  159. package/.agent/skills/mobile-design/platform-android.md +666 -0
  160. package/.agent/skills/mobile-design/platform-ios.md +561 -0
  161. package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
  162. package/.agent/skills/mobile-design/touch-psychology.md +537 -0
  163. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
  164. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  165. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  166. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  167. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  168. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  169. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  170. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  171. package/.agent/skills/nextjs-react-expert/9-cache-components.md +103 -0
  172. package/.agent/skills/nextjs-react-expert/SKILL.md +267 -0
  173. package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  174. package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  175. package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
  176. package/.agent/skills/parallel-agents/SKILL.md +175 -0
  177. package/.agent/skills/performance-profiling/SKILL.md +143 -0
  178. package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  179. package/.agent/skills/plan-writing/SKILL.md +153 -0
  180. package/.agent/skills/powershell-windows/SKILL.md +167 -0
  181. package/.agent/skills/product-management/SKILL.md +30 -0
  182. package/.agent/skills/python-patterns/SKILL.md +441 -0
  183. package/.agent/skills/red-team-tactics/SKILL.md +199 -0
  184. package/.agent/skills/rust-pro/SKILL.md +176 -0
  185. package/.agent/skills/seo-fundamentals/SKILL.md +129 -0
  186. package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  187. package/.agent/skills/server-management/SKILL.md +161 -0
  188. package/.agent/skills/systematic-debugging/SKILL.md +120 -0
  189. package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
  190. package/.agent/skills/tdd-workflow/SKILL.md +148 -0
  191. package/.agent/skills/testing-patterns/SKILL.md +178 -0
  192. package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
  193. package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
  194. package/.agent/skills/vulnerability-scanner/checklists.md +121 -0
  195. package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  196. package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
  197. package/.agent/skills/webapp-testing/SKILL.md +187 -0
  198. package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  199. package/.agent/workflows/brainstorm.md +113 -0
  200. package/.agent/workflows/create.md +59 -0
  201. package/.agent/workflows/debug.md +103 -0
  202. package/.agent/workflows/deploy.md +176 -0
  203. package/.agent/workflows/enhance.md +63 -0
  204. package/.agent/workflows/orchestrate.md +237 -0
  205. package/.agent/workflows/plan.md +89 -0
  206. package/.agent/workflows/preview.md +81 -0
  207. package/.agent/workflows/status.md +86 -0
  208. package/.agent/workflows/test.md +144 -0
  209. package/.agent/workflows/ui-ux-pro-max.md +296 -0
  210. package/bin/cli.js +36 -0
  211. package/package.json +1 -1
  212. package/template/.agent/skills/mini-antigravity-injection/SKILL.md +59 -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,267 @@
1
+ ---
2
+ name: nextjs-react-expert
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
+
35
+ **Total: 57 rules across 8 categories**
36
+
37
+ ---
38
+
39
+ ## 🚀 Quick Decision Tree
40
+
41
+ **What's your performance issue?**
42
+
43
+ ```
44
+ 🐌 Slow page loads / Long Time to Interactive
45
+ → Read Section 1: Eliminating Waterfalls
46
+ → Read Section 2: Bundle Size Optimization
47
+
48
+ 📦 Large bundle size (> 200KB)
49
+ → Read Section 2: Bundle Size Optimization
50
+ → Check: Dynamic imports, barrel imports, tree-shaking
51
+
52
+ 🖥️ Slow Server-Side Rendering
53
+ → Read Section 3: Server-Side Performance
54
+ → Check: Parallel data fetching, streaming
55
+
56
+ 🔄 Too many re-renders / UI lag
57
+ → Read Section 5: Re-render Optimization
58
+ → Check: React.memo, useMemo, useCallback
59
+
60
+ 🎨 Rendering performance issues
61
+ → Read Section 6: Rendering Performance
62
+ → Check: Virtualization, layout thrashing
63
+
64
+ 🌐 Client-side data fetching problems
65
+ → Read Section 4: Client-Side Data Fetching
66
+ → Check: SWR deduplication, localStorage
67
+
68
+ ✨ Need advanced patterns
69
+ → Read Section 8: Advanced Patterns
70
+ ```
71
+
72
+ ---
73
+
74
+ ## 📊 Impact Priority Guide
75
+
76
+ **Use this order when doing comprehensive optimization:**
77
+
78
+ ```
79
+ 1️⃣ CRITICAL (Biggest Gains - Do First):
80
+ ├─ Section 1: Eliminating Waterfalls
81
+ │ └─ Each waterfall adds full network latency (100-500ms+)
82
+ └─ Section 2: Bundle Size Optimization
83
+ └─ Affects Time to Interactive and Largest Contentful Paint
84
+
85
+ 2️⃣ HIGH (Significant Impact - Do Second):
86
+ └─ Section 3: Server-Side Performance
87
+ └─ Eliminates server-side waterfalls, faster response times
88
+
89
+ 3️⃣ MEDIUM (Moderate Gains - Do Third):
90
+ ├─ Section 4: Client-Side Data Fetching
91
+ ├─ Section 5: Re-render Optimization
92
+ └─ Section 6: Rendering Performance
93
+
94
+ 4️⃣ LOW (Polish - Do Last):
95
+ ├─ Section 7: JavaScript Performance
96
+ └─ Section 8: Advanced Patterns
97
+ ```
98
+
99
+ ---
100
+
101
+ ## 🔗 Related Skills
102
+
103
+ | Need | Skill |
104
+ |------|-------|
105
+ | API design patterns | `@[skills/api-patterns]` |
106
+ | Database optimization | `@[skills/database-design]` |
107
+ | Testing strategies | `@[skills/testing-patterns]` |
108
+ | UI/UX design principles | `@[skills/frontend-design]` |
109
+ | TypeScript patterns | `@[skills/typescript-expert]` |
110
+ | Deployment & DevOps | `@[skills/deployment-procedures]` |
111
+
112
+ ---
113
+
114
+ ## ✅ Performance Review Checklist
115
+
116
+ Before shipping to production:
117
+
118
+ **Critical (Must Fix):**
119
+ - [ ] No sequential data fetching (waterfalls eliminated)
120
+ - [ ] Bundle size < 200KB for main bundle
121
+ - [ ] No barrel imports in app code
122
+ - [ ] Dynamic imports used for large components
123
+ - [ ] Parallel data fetching where possible
124
+
125
+ **High Priority:**
126
+ - [ ] Server components used where appropriate
127
+ - [ ] API routes optimized (no N+1 queries)
128
+ - [ ] Suspense boundaries for data fetching
129
+ - [ ] Static generation used where possible
130
+
131
+ **Medium Priority:**
132
+ - [ ] Expensive computations memoized
133
+ - [ ] List rendering virtualized (if > 100 items)
134
+ - [ ] Images optimized with next/image
135
+ - [ ] No unnecessary re-renders
136
+
137
+ **Low Priority (Polish):**
138
+ - [ ] Hot path loops optimized
139
+ - [ ] RegExp patterns hoisted
140
+ - [ ] Property access cached in loops
141
+
142
+ ---
143
+
144
+ ## ❌ Anti-Patterns (Common Mistakes)
145
+
146
+ **DON'T:**
147
+ - ❌ Use sequential `await` for independent operations
148
+ - ❌ Import entire libraries when you need one function
149
+ - ❌ Use barrel exports (`index.ts` re-exports) in app code
150
+ - ❌ Skip dynamic imports for large components/libraries
151
+ - ❌ Fetch data in useEffect without deduplication
152
+ - ❌ Forget to memoize expensive computations
153
+ - ❌ Use client components when server components work
154
+
155
+ **DO:**
156
+ - ✅ Fetch data in parallel with `Promise.all()`
157
+ - ✅ Use dynamic imports: `const Comp = dynamic(() => import('./Heavy'))`
158
+ - ✅ Import directly: `import { specific } from 'library/specific'`
159
+ - ✅ Use Suspense boundaries for better UX
160
+ - ✅ Leverage React Server Components
161
+ - ✅ Measure performance before optimizing
162
+ - ✅ Use Next.js built-in optimizations (next/image, next/font)
163
+
164
+ ---
165
+
166
+ ## 🎯 How to Use This Skill
167
+
168
+ ### For New Features:
169
+ 1. Check **Section 1 & 2** while building (prevent waterfalls, keep bundle small)
170
+ 2. Use server components by default (Section 3)
171
+ 3. Apply memoization for expensive operations (Section 5)
172
+
173
+ ### For Performance Reviews:
174
+ 1. Start with **Section 1** (waterfalls = biggest impact)
175
+ 2. Then **Section 2** (bundle size)
176
+ 3. Then **Section 3** (server-side)
177
+ 4. Finally other sections as needed
178
+
179
+ ### For Debugging Slow Performance:
180
+ 1. Identify the symptom (slow load, lag, etc.)
181
+ 2. Use Quick Decision Tree above
182
+ 3. Read relevant section
183
+ 4. Apply fixes in priority order
184
+
185
+ ---
186
+
187
+ ## 📚 Learning Path
188
+
189
+ **Beginner (Focus on Critical):**
190
+ → Section 1: Eliminating Waterfalls
191
+ → Section 2: Bundle Size Optimization
192
+
193
+ **Intermediate (Add High Priority):**
194
+ → Section 3: Server-Side Performance
195
+ → Section 5: Re-render Optimization
196
+
197
+ **Advanced (Full Optimization):**
198
+ → All sections + Section 8: Advanced Patterns
199
+
200
+ ---
201
+
202
+ ## 🔍 Validation Script
203
+
204
+ | Script | Purpose | Command |
205
+ |--------|---------|---------|
206
+ | `scripts/react_performance_checker.py` | Automated performance audit | `python scripts/react_performance_checker.py <project_path>` |
207
+
208
+ ---
209
+
210
+ ## 📖 Section Details
211
+
212
+ ### Section 1: Eliminating Waterfalls (CRITICAL)
213
+ **Impact:** Each waterfall adds 100-500ms+ latency
214
+ **Key Concepts:** Parallel fetching, Promise.all(), Suspense boundaries, preloading
215
+
216
+ ### Section 2: Bundle Size Optimization (CRITICAL)
217
+ **Impact:** Directly affects Time to Interactive, Largest Contentful Paint
218
+ **Key Concepts:** Dynamic imports, tree-shaking, barrel import avoidance
219
+
220
+ ### Section 3: Server-Side Performance (HIGH)
221
+ **Impact:** Faster server responses, better SEO
222
+ **Key Concepts:** Parallel server fetching, streaming, API route optimization
223
+
224
+ ### Section 4: Client-Side Data Fetching (MEDIUM-HIGH)
225
+ **Impact:** Reduces redundant requests, better UX
226
+ **Key Concepts:** SWR deduplication, localStorage caching, event listeners
227
+
228
+ ### Section 5: Re-render Optimization (MEDIUM)
229
+ **Impact:** Smoother UI, less wasted computation
230
+ **Key Concepts:** React.memo, useMemo, useCallback, component structure
231
+
232
+ ### Section 6: Rendering Performance (MEDIUM)
233
+ **Impact:** Better rendering efficiency
234
+ **Key Concepts:** Virtualization, image optimization, layout thrashing
235
+
236
+ ### Section 7: JavaScript Performance (LOW-MEDIUM)
237
+ **Impact:** Incremental improvements in hot paths
238
+ **Key Concepts:** Loop optimization, caching, RegExp hoisting
239
+
240
+ ### Section 8: Advanced Patterns (VARIABLE)
241
+ **Impact:** Specific use cases
242
+ **Key Concepts:** useLatest hook, init-once patterns, event handler refs
243
+
244
+ ---
245
+
246
+ ## 🎓 Best Practices Summary
247
+
248
+ **Golden Rules:**
249
+ 1. **Measure first** - Use React DevTools Profiler, Chrome DevTools
250
+ 2. **Biggest impact first** - Waterfalls → Bundle → Server → Micro
251
+ 3. **Don't over-optimize** - Focus on real bottlenecks
252
+ 4. **Use platform features** - Next.js has optimizations built-in
253
+ 5. **Think about users** - Real-world conditions matter
254
+
255
+ **Performance Mindset:**
256
+ - Every `await` in sequence = potential waterfall
257
+ - Every `import` = potential bundle bloat
258
+ - Every re-render = wasted computation (if unnecessary)
259
+ - Server components = less JavaScript to ship
260
+ - Measure, don't guess
261
+
262
+ ---
263
+
264
+ **Source:** Vercel Engineering
265
+ **Date:** January 2026
266
+ **Version:** 1.0.0
267
+ **Total Rules:** 57 across 8 categories