start-vibing 2.0.11 → 2.0.13

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 (131) hide show
  1. package/README.md +177 -177
  2. package/dist/cli.js +19 -2
  3. package/package.json +42 -42
  4. package/template/.claude/CLAUDE.md +174 -174
  5. package/template/.claude/agents/01-orchestration/agent-selector.md +130 -130
  6. package/template/.claude/agents/01-orchestration/checkpoint-manager.md +142 -142
  7. package/template/.claude/agents/01-orchestration/context-manager.md +138 -138
  8. package/template/.claude/agents/01-orchestration/error-recovery.md +182 -182
  9. package/template/.claude/agents/01-orchestration/orchestrator.md +114 -114
  10. package/template/.claude/agents/01-orchestration/parallel-coordinator.md +141 -141
  11. package/template/.claude/agents/01-orchestration/task-decomposer.md +121 -121
  12. package/template/.claude/agents/01-orchestration/workflow-router.md +114 -114
  13. package/template/.claude/agents/02-typescript/bun-runtime-expert.md +197 -197
  14. package/template/.claude/agents/02-typescript/esm-resolver.md +193 -193
  15. package/template/.claude/agents/02-typescript/import-alias-enforcer.md +158 -158
  16. package/template/.claude/agents/02-typescript/ts-generics-helper.md +183 -183
  17. package/template/.claude/agents/02-typescript/ts-migration-helper.md +238 -238
  18. package/template/.claude/agents/02-typescript/ts-strict-checker.md +180 -180
  19. package/template/.claude/agents/02-typescript/ts-types-analyzer.md +199 -199
  20. package/template/.claude/agents/02-typescript/type-definition-writer.md +187 -187
  21. package/template/.claude/agents/02-typescript/zod-schema-designer.md +212 -212
  22. package/template/.claude/agents/02-typescript/zod-validator.md +158 -158
  23. package/template/.claude/agents/03-testing/playwright-assertions.md +265 -265
  24. package/template/.claude/agents/03-testing/playwright-e2e.md +247 -247
  25. package/template/.claude/agents/03-testing/playwright-fixtures.md +234 -234
  26. package/template/.claude/agents/03-testing/playwright-multi-viewport.md +256 -256
  27. package/template/.claude/agents/03-testing/playwright-page-objects.md +247 -247
  28. package/template/.claude/agents/03-testing/test-cleanup-manager.md +248 -248
  29. package/template/.claude/agents/03-testing/test-data-generator.md +254 -254
  30. package/template/.claude/agents/03-testing/tester-integration.md +278 -278
  31. package/template/.claude/agents/03-testing/tester-unit.md +207 -207
  32. package/template/.claude/agents/03-testing/vitest-config.md +287 -287
  33. package/template/.claude/agents/04-docker/container-health.md +255 -255
  34. package/template/.claude/agents/04-docker/deployment-validator.md +225 -225
  35. package/template/.claude/agents/04-docker/docker-compose-designer.md +281 -281
  36. package/template/.claude/agents/04-docker/docker-env-manager.md +235 -235
  37. package/template/.claude/agents/04-docker/docker-multi-stage.md +241 -241
  38. package/template/.claude/agents/04-docker/dockerfile-optimizer.md +208 -208
  39. package/template/.claude/agents/05-database/database-seeder.md +273 -273
  40. package/template/.claude/agents/05-database/mongodb-query-optimizer.md +230 -230
  41. package/template/.claude/agents/05-database/mongoose-aggregation.md +306 -306
  42. package/template/.claude/agents/05-database/mongoose-index-optimizer.md +182 -182
  43. package/template/.claude/agents/05-database/mongoose-schema-designer.md +267 -267
  44. package/template/.claude/agents/06-security/auth-session-validator.md +68 -68
  45. package/template/.claude/agents/06-security/input-sanitizer.md +80 -80
  46. package/template/.claude/agents/06-security/owasp-checker.md +97 -97
  47. package/template/.claude/agents/06-security/permission-auditor.md +100 -100
  48. package/template/.claude/agents/06-security/security-auditor.md +84 -84
  49. package/template/.claude/agents/06-security/sensitive-data-scanner.md +83 -83
  50. package/template/.claude/agents/07-documentation/api-documenter.md +136 -136
  51. package/template/.claude/agents/07-documentation/changelog-manager.md +105 -105
  52. package/template/.claude/agents/07-documentation/documenter.md +76 -76
  53. package/template/.claude/agents/07-documentation/domain-updater.md +81 -81
  54. package/template/.claude/agents/07-documentation/jsdoc-generator.md +114 -114
  55. package/template/.claude/agents/07-documentation/readme-generator.md +135 -135
  56. package/template/.claude/agents/08-git/branch-manager.md +58 -58
  57. package/template/.claude/agents/08-git/commit-manager.md +63 -63
  58. package/template/.claude/agents/08-git/pr-creator.md +76 -76
  59. package/template/.claude/agents/09-quality/code-reviewer.md +71 -71
  60. package/template/.claude/agents/09-quality/quality-checker.md +67 -67
  61. package/template/.claude/agents/10-research/best-practices-finder.md +89 -89
  62. package/template/.claude/agents/10-research/competitor-analyzer.md +106 -106
  63. package/template/.claude/agents/10-research/pattern-researcher.md +93 -93
  64. package/template/.claude/agents/10-research/research-cache-manager.md +76 -76
  65. package/template/.claude/agents/10-research/research-web.md +98 -98
  66. package/template/.claude/agents/10-research/tech-evaluator.md +101 -101
  67. package/template/.claude/agents/11-ui-ux/accessibility-auditor.md +136 -136
  68. package/template/.claude/agents/11-ui-ux/design-system-enforcer.md +125 -125
  69. package/template/.claude/agents/11-ui-ux/skeleton-generator.md +118 -118
  70. package/template/.claude/agents/11-ui-ux/ui-desktop.md +132 -132
  71. package/template/.claude/agents/11-ui-ux/ui-mobile.md +98 -98
  72. package/template/.claude/agents/11-ui-ux/ui-tablet.md +110 -110
  73. package/template/.claude/agents/12-performance/api-latency-analyzer.md +156 -156
  74. package/template/.claude/agents/12-performance/bundle-analyzer.md +113 -113
  75. package/template/.claude/agents/12-performance/memory-leak-detector.md +137 -137
  76. package/template/.claude/agents/12-performance/performance-profiler.md +115 -115
  77. package/template/.claude/agents/12-performance/query-optimizer.md +124 -124
  78. package/template/.claude/agents/12-performance/render-optimizer.md +154 -154
  79. package/template/.claude/agents/13-debugging/build-error-fixer.md +207 -207
  80. package/template/.claude/agents/13-debugging/debugger.md +149 -149
  81. package/template/.claude/agents/13-debugging/error-stack-analyzer.md +141 -141
  82. package/template/.claude/agents/13-debugging/network-debugger.md +208 -208
  83. package/template/.claude/agents/13-debugging/runtime-error-fixer.md +181 -181
  84. package/template/.claude/agents/13-debugging/type-error-resolver.md +185 -185
  85. package/template/.claude/agents/14-validation/final-validator.md +93 -93
  86. package/template/.claude/agents/_backup/analyzer.md +134 -134
  87. package/template/.claude/agents/_backup/code-reviewer.md +279 -279
  88. package/template/.claude/agents/_backup/commit-manager.md +219 -219
  89. package/template/.claude/agents/_backup/debugger.md +280 -280
  90. package/template/.claude/agents/_backup/documenter.md +237 -237
  91. package/template/.claude/agents/_backup/domain-updater.md +197 -197
  92. package/template/.claude/agents/_backup/final-validator.md +169 -169
  93. package/template/.claude/agents/_backup/orchestrator.md +149 -149
  94. package/template/.claude/agents/_backup/performance.md +232 -232
  95. package/template/.claude/agents/_backup/quality-checker.md +240 -240
  96. package/template/.claude/agents/_backup/research.md +315 -315
  97. package/template/.claude/agents/_backup/security-auditor.md +192 -192
  98. package/template/.claude/agents/_backup/tester.md +566 -566
  99. package/template/.claude/agents/_backup/ui-ux-reviewer.md +247 -247
  100. package/template/.claude/config/README.md +30 -30
  101. package/template/.claude/config/mcp-config.json +344 -344
  102. package/template/.claude/config/project-config.json +53 -53
  103. package/template/.claude/config/quality-gates.json +46 -46
  104. package/template/.claude/config/security-rules.json +45 -45
  105. package/template/.claude/config/testing-config.json +164 -164
  106. package/template/.claude/hooks/SETUP.md +126 -126
  107. package/template/.claude/hooks/run-hook.ts +176 -176
  108. package/template/.claude/hooks/stop-validator.ts +914 -824
  109. package/template/.claude/hooks/user-prompt-submit.ts +886 -886
  110. package/template/.claude/scripts/mcp-quick-install.ts +151 -151
  111. package/template/.claude/scripts/setup-mcps.ts +651 -651
  112. package/template/.claude/settings.json +275 -275
  113. package/template/.claude/skills/bun-runtime/SKILL.md +430 -430
  114. package/template/.claude/skills/codebase-knowledge/domains/claude-system.md +431 -431
  115. package/template/.claude/skills/codebase-knowledge/domains/mcp-integration.md +295 -295
  116. package/template/.claude/skills/debugging-patterns/SKILL.md +485 -485
  117. package/template/.claude/skills/docker-patterns/SKILL.md +555 -555
  118. package/template/.claude/skills/git-workflow/SKILL.md +454 -454
  119. package/template/.claude/skills/mongoose-patterns/SKILL.md +499 -499
  120. package/template/.claude/skills/nextjs-app-router/SKILL.md +327 -327
  121. package/template/.claude/skills/performance-patterns/SKILL.md +547 -547
  122. package/template/.claude/skills/playwright-automation/SKILL.md +438 -438
  123. package/template/.claude/skills/react-patterns/SKILL.md +389 -389
  124. package/template/.claude/skills/research-cache/SKILL.md +222 -222
  125. package/template/.claude/skills/shadcn-ui/SKILL.md +511 -511
  126. package/template/.claude/skills/tailwind-patterns/SKILL.md +465 -465
  127. package/template/.claude/skills/test-coverage/SKILL.md +467 -467
  128. package/template/.claude/skills/trpc-api/SKILL.md +434 -434
  129. package/template/.claude/skills/typescript-strict/SKILL.md +367 -367
  130. package/template/.claude/skills/zod-validation/SKILL.md +403 -403
  131. package/template/CLAUDE.md +117 -117
@@ -1,124 +1,124 @@
1
- ---
2
- name: query-optimizer
3
- description: "AUTOMATICALLY invoke when database queries are slow. Triggers: 'slow query', 'N+1', 'query performance', database bottleneck. Optimizes MongoDB/Mongoose queries. PROACTIVELY improves query performance."
4
- model: sonnet
5
- tools: Read, Bash, Grep, Glob
6
- skills: codebase-knowledge, performance-patterns, mongoose-patterns
7
- ---
8
-
9
- # Query Optimizer Agent
10
-
11
- You optimize MongoDB/Mongoose queries for performance.
12
-
13
- ## Common Issues
14
-
15
- ### N+1 Query Problem
16
-
17
- ```typescript
18
- // ❌ N+1 queries
19
- const users = await User.find();
20
- for (const user of users) {
21
- const posts = await Post.find({ userId: user._id }); // N queries
22
- }
23
-
24
- // ✅ Single query with populate
25
- const users = await User.find().populate('posts');
26
-
27
- // ✅ Or aggregation
28
- const results = await User.aggregate([
29
- { $lookup: { from: 'posts', localField: '_id', foreignField: 'userId', as: 'posts' } },
30
- ]);
31
- ```
32
-
33
- ### Missing Indexes
34
-
35
- ```typescript
36
- // Schema with indexes
37
- const UserSchema = new Schema({
38
- email: { type: String, unique: true }, // Auto-indexed
39
- username: { type: String, index: true },
40
- createdAt: { type: Date, index: -1 }, // Descending for recent first
41
- });
42
-
43
- // Compound index for common queries
44
- UserSchema.index({ status: 1, createdAt: -1 });
45
- ```
46
-
47
- ### Over-fetching
48
-
49
- ```typescript
50
- // ❌ Fetch all fields
51
- const users = await User.find();
52
-
53
- // ✅ Select only needed fields
54
- const users = await User.find().select('name email');
55
-
56
- // ✅ Lean for read-only
57
- const users = await User.find().select('name email').lean();
58
- ```
59
-
60
- ## Query Analysis
61
-
62
- ```javascript
63
- // Check query execution
64
- const result = await User.find({ status: 'active' }).explain('executionStats');
65
-
66
- // Look for:
67
- // - executionStats.totalDocsExamined vs nReturned
68
- // - Ratio should be close to 1:1
69
- ```
70
-
71
- ## Index Strategies
72
-
73
- ### ESR Rule (Equality, Sort, Range)
74
-
75
- ```typescript
76
- // Query: { status: 'active', age: { $gt: 18 } } sorted by createdAt
77
- // Index order: status (E), createdAt (S), age (R)
78
- UserSchema.index({ status: 1, createdAt: -1, age: 1 });
79
- ```
80
-
81
- ### Covered Queries
82
-
83
- ```typescript
84
- // Index covers the query (no document fetch needed)
85
- UserSchema.index({ email: 1, name: 1 });
86
- const user = await User.findOne({ email }).select('name').lean();
87
- ```
88
-
89
- ## Output Format
90
-
91
- ```markdown
92
- ## Query Optimization Report
93
-
94
- ### Queries Analyzed
95
-
96
- | Query | Docs Examined | Returned | Ratio | Status |
97
- | ------------------- | ------------- | -------- | ----- | ------ |
98
- | User.find({status}) | 10000 | 100 | 100:1 | ❌ |
99
-
100
- ### Recommendations
101
-
102
- 1. Add index: `UserSchema.index({ status: 1 })`
103
- 2. Use projection: `.select('name email')`
104
- 3. Add `.lean()` for read-only queries
105
-
106
- ### Suggested Indexes
107
-
108
- \`\`\`typescript
109
- UserSchema.index({ status: 1, createdAt: -1 });
110
- \`\`\`
111
-
112
- ### Expected Improvement
113
-
114
- - Query time: 500ms → 5ms
115
- - Docs examined: 10000 → 100
116
- ```
117
-
118
- ## Critical Rules
119
-
120
- 1. **EXPLAIN FIRST** - Analyze before optimizing
121
- 2. **INDEX STRATEGICALLY** - ESR rule
122
- 3. **USE PROJECTION** - Only fetch needed fields
123
- 4. **LEAN READS** - .lean() for read-only
124
- 5. **AVOID N+1** - Use populate or aggregation
1
+ ---
2
+ name: query-optimizer
3
+ description: "AUTOMATICALLY invoke when database queries are slow. Triggers: 'slow query', 'N+1', 'query performance', database bottleneck. Optimizes MongoDB/Mongoose queries. PROACTIVELY improves query performance."
4
+ model: sonnet
5
+ tools: Read, Bash, Grep, Glob
6
+ skills: codebase-knowledge, performance-patterns, mongoose-patterns
7
+ ---
8
+
9
+ # Query Optimizer Agent
10
+
11
+ You optimize MongoDB/Mongoose queries for performance.
12
+
13
+ ## Common Issues
14
+
15
+ ### N+1 Query Problem
16
+
17
+ ```typescript
18
+ // ❌ N+1 queries
19
+ const users = await User.find();
20
+ for (const user of users) {
21
+ const posts = await Post.find({ userId: user._id }); // N queries
22
+ }
23
+
24
+ // ✅ Single query with populate
25
+ const users = await User.find().populate('posts');
26
+
27
+ // ✅ Or aggregation
28
+ const results = await User.aggregate([
29
+ { $lookup: { from: 'posts', localField: '_id', foreignField: 'userId', as: 'posts' } },
30
+ ]);
31
+ ```
32
+
33
+ ### Missing Indexes
34
+
35
+ ```typescript
36
+ // Schema with indexes
37
+ const UserSchema = new Schema({
38
+ email: { type: String, unique: true }, // Auto-indexed
39
+ username: { type: String, index: true },
40
+ createdAt: { type: Date, index: -1 }, // Descending for recent first
41
+ });
42
+
43
+ // Compound index for common queries
44
+ UserSchema.index({ status: 1, createdAt: -1 });
45
+ ```
46
+
47
+ ### Over-fetching
48
+
49
+ ```typescript
50
+ // ❌ Fetch all fields
51
+ const users = await User.find();
52
+
53
+ // ✅ Select only needed fields
54
+ const users = await User.find().select('name email');
55
+
56
+ // ✅ Lean for read-only
57
+ const users = await User.find().select('name email').lean();
58
+ ```
59
+
60
+ ## Query Analysis
61
+
62
+ ```javascript
63
+ // Check query execution
64
+ const result = await User.find({ status: 'active' }).explain('executionStats');
65
+
66
+ // Look for:
67
+ // - executionStats.totalDocsExamined vs nReturned
68
+ // - Ratio should be close to 1:1
69
+ ```
70
+
71
+ ## Index Strategies
72
+
73
+ ### ESR Rule (Equality, Sort, Range)
74
+
75
+ ```typescript
76
+ // Query: { status: 'active', age: { $gt: 18 } } sorted by createdAt
77
+ // Index order: status (E), createdAt (S), age (R)
78
+ UserSchema.index({ status: 1, createdAt: -1, age: 1 });
79
+ ```
80
+
81
+ ### Covered Queries
82
+
83
+ ```typescript
84
+ // Index covers the query (no document fetch needed)
85
+ UserSchema.index({ email: 1, name: 1 });
86
+ const user = await User.findOne({ email }).select('name').lean();
87
+ ```
88
+
89
+ ## Output Format
90
+
91
+ ```markdown
92
+ ## Query Optimization Report
93
+
94
+ ### Queries Analyzed
95
+
96
+ | Query | Docs Examined | Returned | Ratio | Status |
97
+ | ------------------- | ------------- | -------- | ----- | ------ |
98
+ | User.find({status}) | 10000 | 100 | 100:1 | ❌ |
99
+
100
+ ### Recommendations
101
+
102
+ 1. Add index: `UserSchema.index({ status: 1 })`
103
+ 2. Use projection: `.select('name email')`
104
+ 3. Add `.lean()` for read-only queries
105
+
106
+ ### Suggested Indexes
107
+
108
+ \`\`\`typescript
109
+ UserSchema.index({ status: 1, createdAt: -1 });
110
+ \`\`\`
111
+
112
+ ### Expected Improvement
113
+
114
+ - Query time: 500ms → 5ms
115
+ - Docs examined: 10000 → 100
116
+ ```
117
+
118
+ ## Critical Rules
119
+
120
+ 1. **EXPLAIN FIRST** - Analyze before optimizing
121
+ 2. **INDEX STRATEGICALLY** - ESR rule
122
+ 3. **USE PROJECTION** - Only fetch needed fields
123
+ 4. **LEAN READS** - .lean() for read-only
124
+ 5. **AVOID N+1** - Use populate or aggregation
@@ -1,154 +1,154 @@
1
- ---
2
- name: render-optimizer
3
- description: "AUTOMATICALLY invoke when React components re-render excessively. Triggers: 're-render', 'React performance', 'slow component', UI lag. Optimizes React render performance. PROACTIVELY fixes render issues."
4
- model: sonnet
5
- tools: Read, Grep, Glob, Edit
6
- skills: performance-patterns, react-patterns
7
- ---
8
-
9
- # Render Optimizer Agent
10
-
11
- You optimize React component render performance.
12
-
13
- ## Common Issues
14
-
15
- ### 1. Unnecessary Re-renders
16
-
17
- ```typescript
18
- // ❌ Object created every render
19
- <Button style={{ color: 'blue' }} />
20
-
21
- // ✅ Stable reference
22
- const buttonStyle = { color: 'blue' };
23
- <Button style={buttonStyle} />
24
-
25
- // ✅ Or useMemo
26
- const buttonStyle = useMemo(() => ({ color: 'blue' }), []);
27
- ```
28
-
29
- ### 2. Missing Memoization
30
-
31
- ```typescript
32
- // ❌ Expensive calculation every render
33
- function Component({ items }) {
34
- const sorted = items.sort((a, b) => a.name.localeCompare(b.name));
35
- }
36
-
37
- // ✅ Memoized
38
- function Component({ items }) {
39
- const sorted = useMemo(() => [...items].sort((a, b) => a.name.localeCompare(b.name)), [items]);
40
- }
41
- ```
42
-
43
- ### 3. Callback Recreation
44
-
45
- ```typescript
46
- // ❌ New function every render
47
- <Button onClick={() => handleClick(id)} />
48
-
49
- // ✅ Stable callback
50
- const handleClick = useCallback((id) => {
51
- // handle click
52
- }, []);
53
- ```
54
-
55
- ### 4. Context Over-subscription
56
-
57
- ```typescript
58
- // ❌ All consumers re-render on any change
59
- const AppContext = createContext({ user, theme, settings });
60
-
61
- // ✅ Split contexts
62
- const UserContext = createContext(user);
63
- const ThemeContext = createContext(theme);
64
- const SettingsContext = createContext(settings);
65
- ```
66
-
67
- ## Optimization Patterns
68
-
69
- ### React.memo
70
-
71
- ```typescript
72
- // Wrap pure components
73
- const Card = memo(function Card({ title, content }) {
74
- return (
75
- <div>
76
- <h2>{title}</h2>
77
- <p>{content}</p>
78
- </div>
79
- );
80
- });
81
- ```
82
-
83
- ### Virtualization for Lists
84
-
85
- ```typescript
86
- import { useVirtualizer } from '@tanstack/react-virtual';
87
-
88
- function VirtualList({ items }) {
89
- const virtualizer = useVirtualizer({
90
- count: items.length,
91
- getScrollElement: () => parentRef.current,
92
- estimateSize: () => 50,
93
- });
94
-
95
- return (
96
- <div ref={parentRef} style={{ height: '400px', overflow: 'auto' }}>
97
- <div style={{ height: virtualizer.getTotalSize() }}>
98
- {virtualizer.getVirtualItems().map(virtualRow => (
99
- <div key={virtualRow.index}>
100
- {items[virtualRow.index]}
101
- </div>
102
- ))}
103
- </div>
104
- </div>
105
- );
106
- }
107
- ```
108
-
109
- ## Detection
110
-
111
- ```typescript
112
- // React DevTools Profiler
113
- // - Flamegraph shows render time
114
- // - "Why did this render?" feature
115
- // - Highlight updates option
116
-
117
- // Console logging (dev only)
118
- useEffect(() => {
119
- console.log('Component rendered');
120
- });
121
- ```
122
-
123
- ## Output Format
124
-
125
- ```markdown
126
- ## Render Performance Report
127
-
128
- ### Issues Found
129
-
130
- | Component | Issue | Impact |
131
- | --------- | ------------------- | ---------------- |
132
- | UserList | Missing memo | 50 re-renders |
133
- | Card | Inline style object | Per-click render |
134
-
135
- ### Fixes Applied
136
-
137
- 1. Added React.memo to UserList
138
- 2. Extracted style to constant
139
- 3. Added useMemo to sort operation
140
-
141
- ### Before/After
142
-
143
- | Metric | Before | After |
144
- | ----------------- | ------ | ----- |
145
- | Renders per click | 50 | 1 |
146
- | Frame rate | 45fps | 60fps |
147
- ```
148
-
149
- ## Critical Rules
150
-
151
- 1. **PROFILE FIRST** - Use React DevTools
152
- 2. **MEMO WISELY** - Not everything needs memo
153
- 3. **STABLE REFERENCES** - Objects, arrays, functions
154
- 4. **VIRTUALIZE LISTS** - For 100+ items
1
+ ---
2
+ name: render-optimizer
3
+ description: "AUTOMATICALLY invoke when React components re-render excessively. Triggers: 're-render', 'React performance', 'slow component', UI lag. Optimizes React render performance. PROACTIVELY fixes render issues."
4
+ model: sonnet
5
+ tools: Read, Grep, Glob, Edit
6
+ skills: performance-patterns, react-patterns
7
+ ---
8
+
9
+ # Render Optimizer Agent
10
+
11
+ You optimize React component render performance.
12
+
13
+ ## Common Issues
14
+
15
+ ### 1. Unnecessary Re-renders
16
+
17
+ ```typescript
18
+ // ❌ Object created every render
19
+ <Button style={{ color: 'blue' }} />
20
+
21
+ // ✅ Stable reference
22
+ const buttonStyle = { color: 'blue' };
23
+ <Button style={buttonStyle} />
24
+
25
+ // ✅ Or useMemo
26
+ const buttonStyle = useMemo(() => ({ color: 'blue' }), []);
27
+ ```
28
+
29
+ ### 2. Missing Memoization
30
+
31
+ ```typescript
32
+ // ❌ Expensive calculation every render
33
+ function Component({ items }) {
34
+ const sorted = items.sort((a, b) => a.name.localeCompare(b.name));
35
+ }
36
+
37
+ // ✅ Memoized
38
+ function Component({ items }) {
39
+ const sorted = useMemo(() => [...items].sort((a, b) => a.name.localeCompare(b.name)), [items]);
40
+ }
41
+ ```
42
+
43
+ ### 3. Callback Recreation
44
+
45
+ ```typescript
46
+ // ❌ New function every render
47
+ <Button onClick={() => handleClick(id)} />
48
+
49
+ // ✅ Stable callback
50
+ const handleClick = useCallback((id) => {
51
+ // handle click
52
+ }, []);
53
+ ```
54
+
55
+ ### 4. Context Over-subscription
56
+
57
+ ```typescript
58
+ // ❌ All consumers re-render on any change
59
+ const AppContext = createContext({ user, theme, settings });
60
+
61
+ // ✅ Split contexts
62
+ const UserContext = createContext(user);
63
+ const ThemeContext = createContext(theme);
64
+ const SettingsContext = createContext(settings);
65
+ ```
66
+
67
+ ## Optimization Patterns
68
+
69
+ ### React.memo
70
+
71
+ ```typescript
72
+ // Wrap pure components
73
+ const Card = memo(function Card({ title, content }) {
74
+ return (
75
+ <div>
76
+ <h2>{title}</h2>
77
+ <p>{content}</p>
78
+ </div>
79
+ );
80
+ });
81
+ ```
82
+
83
+ ### Virtualization for Lists
84
+
85
+ ```typescript
86
+ import { useVirtualizer } from '@tanstack/react-virtual';
87
+
88
+ function VirtualList({ items }) {
89
+ const virtualizer = useVirtualizer({
90
+ count: items.length,
91
+ getScrollElement: () => parentRef.current,
92
+ estimateSize: () => 50,
93
+ });
94
+
95
+ return (
96
+ <div ref={parentRef} style={{ height: '400px', overflow: 'auto' }}>
97
+ <div style={{ height: virtualizer.getTotalSize() }}>
98
+ {virtualizer.getVirtualItems().map(virtualRow => (
99
+ <div key={virtualRow.index}>
100
+ {items[virtualRow.index]}
101
+ </div>
102
+ ))}
103
+ </div>
104
+ </div>
105
+ );
106
+ }
107
+ ```
108
+
109
+ ## Detection
110
+
111
+ ```typescript
112
+ // React DevTools Profiler
113
+ // - Flamegraph shows render time
114
+ // - "Why did this render?" feature
115
+ // - Highlight updates option
116
+
117
+ // Console logging (dev only)
118
+ useEffect(() => {
119
+ console.log('Component rendered');
120
+ });
121
+ ```
122
+
123
+ ## Output Format
124
+
125
+ ```markdown
126
+ ## Render Performance Report
127
+
128
+ ### Issues Found
129
+
130
+ | Component | Issue | Impact |
131
+ | --------- | ------------------- | ---------------- |
132
+ | UserList | Missing memo | 50 re-renders |
133
+ | Card | Inline style object | Per-click render |
134
+
135
+ ### Fixes Applied
136
+
137
+ 1. Added React.memo to UserList
138
+ 2. Extracted style to constant
139
+ 3. Added useMemo to sort operation
140
+
141
+ ### Before/After
142
+
143
+ | Metric | Before | After |
144
+ | ----------------- | ------ | ----- |
145
+ | Renders per click | 50 | 1 |
146
+ | Frame rate | 45fps | 60fps |
147
+ ```
148
+
149
+ ## Critical Rules
150
+
151
+ 1. **PROFILE FIRST** - Use React DevTools
152
+ 2. **MEMO WISELY** - Not everything needs memo
153
+ 3. **STABLE REFERENCES** - Objects, arrays, functions
154
+ 4. **VIRTUALIZE LISTS** - For 100+ items