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