@0xsown/vibe-code-fe 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 (189) hide show
  1. package/bin/index.js +181 -0
  2. package/package.json +32 -0
  3. package/skills/claude-md-improver/SKILL.md +179 -0
  4. package/skills/claude-md-improver/references/quality-criteria.md +109 -0
  5. package/skills/claude-md-improver/references/templates.md +253 -0
  6. package/skills/claude-md-improver/references/update-guidelines.md +150 -0
  7. package/skills/find-skills/SKILL.md +133 -0
  8. package/skills/frontend-design/LICENSE.txt +177 -0
  9. package/skills/frontend-design/SKILL.md +42 -0
  10. package/skills/next-best-practices/SKILL.md +153 -0
  11. package/skills/next-best-practices/async-patterns.md +87 -0
  12. package/skills/next-best-practices/bundling.md +180 -0
  13. package/skills/next-best-practices/data-patterns.md +297 -0
  14. package/skills/next-best-practices/debug-tricks.md +105 -0
  15. package/skills/next-best-practices/directives.md +73 -0
  16. package/skills/next-best-practices/error-handling.md +227 -0
  17. package/skills/next-best-practices/file-conventions.md +140 -0
  18. package/skills/next-best-practices/font.md +245 -0
  19. package/skills/next-best-practices/functions.md +108 -0
  20. package/skills/next-best-practices/hydration-error.md +91 -0
  21. package/skills/next-best-practices/image.md +173 -0
  22. package/skills/next-best-practices/metadata.md +301 -0
  23. package/skills/next-best-practices/parallel-routes.md +287 -0
  24. package/skills/next-best-practices/route-handlers.md +146 -0
  25. package/skills/next-best-practices/rsc-boundaries.md +159 -0
  26. package/skills/next-best-practices/runtime-selection.md +39 -0
  27. package/skills/next-best-practices/scripts.md +141 -0
  28. package/skills/next-best-practices/self-hosting.md +371 -0
  29. package/skills/next-best-practices/suspense-boundaries.md +67 -0
  30. package/skills/next-cache-components/SKILL.md +411 -0
  31. package/skills/shadcn-ui/README.md +248 -0
  32. package/skills/shadcn-ui/SKILL.md +326 -0
  33. package/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
  34. package/skills/shadcn-ui/examples/data-table.tsx +313 -0
  35. package/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
  36. package/skills/shadcn-ui/resources/component-catalog.md +481 -0
  37. package/skills/shadcn-ui/resources/customization-guide.md +516 -0
  38. package/skills/shadcn-ui/resources/migration-guide.md +463 -0
  39. package/skills/shadcn-ui/resources/setup-guide.md +412 -0
  40. package/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
  41. package/skills/supabase-postgres-best-practices/AGENTS.md +68 -0
  42. package/skills/supabase-postgres-best-practices/CLAUDE.md +68 -0
  43. package/skills/supabase-postgres-best-practices/README.md +116 -0
  44. package/skills/supabase-postgres-best-practices/SKILL.md +64 -0
  45. package/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  46. package/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  47. package/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  48. package/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  49. package/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  50. package/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  51. package/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  52. package/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  53. package/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  54. package/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  55. package/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  56. package/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  57. package/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  58. package/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  59. package/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  60. package/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  61. package/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  62. package/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  63. package/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  64. package/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
  65. package/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  66. package/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  67. package/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
  68. package/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  69. package/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  70. package/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  71. package/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  72. package/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  73. package/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  74. package/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  75. package/skills/supabase-postgres-best-practices/references/security-rls-performance.md +57 -0
  76. package/skills/tailwind-design-system/SKILL.md +874 -0
  77. package/skills/vercel-composition-patterns/AGENTS.md +946 -0
  78. package/skills/vercel-composition-patterns/README.md +60 -0
  79. package/skills/vercel-composition-patterns/SKILL.md +89 -0
  80. package/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  81. package/skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
  82. package/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  83. package/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
  84. package/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
  85. package/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
  86. package/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
  87. package/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
  88. package/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  89. package/skills/vercel-react-best-practices/README.md +123 -0
  90. package/skills/vercel-react-best-practices/SKILL.md +136 -0
  91. package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  92. package/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  93. package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  94. package/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  95. package/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  96. package/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  97. package/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  98. package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  99. package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  100. package/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  101. package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  102. package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  103. package/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  104. package/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  105. package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  106. package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  107. package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  108. package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  109. package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  110. package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  111. package/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  112. package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  113. package/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  114. package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  115. package/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  116. package/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  117. package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  118. package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  119. package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  120. package/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  121. package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  122. package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  123. package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  124. package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  125. package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  126. package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  127. package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  128. package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  129. package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  130. package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  131. package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  132. package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  133. package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  134. package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  135. package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  136. package/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  137. package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  138. package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  139. package/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  140. package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  141. package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  142. package/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  143. package/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  144. package/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  145. package/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  146. package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  147. package/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  148. package/skills/vercel-react-native-skills/AGENTS.md +2897 -0
  149. package/skills/vercel-react-native-skills/README.md +165 -0
  150. package/skills/vercel-react-native-skills/SKILL.md +121 -0
  151. package/skills/vercel-react-native-skills/rules/animation-derived-value.md +53 -0
  152. package/skills/vercel-react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  153. package/skills/vercel-react-native-skills/rules/animation-gpu-properties.md +65 -0
  154. package/skills/vercel-react-native-skills/rules/design-system-compound-components.md +66 -0
  155. package/skills/vercel-react-native-skills/rules/fonts-config-plugin.md +71 -0
  156. package/skills/vercel-react-native-skills/rules/imports-design-system-folder.md +68 -0
  157. package/skills/vercel-react-native-skills/rules/js-hoist-intl.md +61 -0
  158. package/skills/vercel-react-native-skills/rules/list-performance-callbacks.md +44 -0
  159. package/skills/vercel-react-native-skills/rules/list-performance-function-references.md +132 -0
  160. package/skills/vercel-react-native-skills/rules/list-performance-images.md +53 -0
  161. package/skills/vercel-react-native-skills/rules/list-performance-inline-objects.md +97 -0
  162. package/skills/vercel-react-native-skills/rules/list-performance-item-expensive.md +94 -0
  163. package/skills/vercel-react-native-skills/rules/list-performance-item-memo.md +82 -0
  164. package/skills/vercel-react-native-skills/rules/list-performance-item-types.md +104 -0
  165. package/skills/vercel-react-native-skills/rules/list-performance-virtualize.md +67 -0
  166. package/skills/vercel-react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  167. package/skills/vercel-react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  168. package/skills/vercel-react-native-skills/rules/navigation-native-navigators.md +188 -0
  169. package/skills/vercel-react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  170. package/skills/vercel-react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  171. package/skills/vercel-react-native-skills/rules/react-state-dispatcher.md +91 -0
  172. package/skills/vercel-react-native-skills/rules/react-state-fallback.md +56 -0
  173. package/skills/vercel-react-native-skills/rules/react-state-minimize.md +65 -0
  174. package/skills/vercel-react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  175. package/skills/vercel-react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  176. package/skills/vercel-react-native-skills/rules/scroll-position-no-state.md +82 -0
  177. package/skills/vercel-react-native-skills/rules/state-ground-truth.md +80 -0
  178. package/skills/vercel-react-native-skills/rules/ui-expo-image.md +66 -0
  179. package/skills/vercel-react-native-skills/rules/ui-image-gallery.md +104 -0
  180. package/skills/vercel-react-native-skills/rules/ui-measure-views.md +78 -0
  181. package/skills/vercel-react-native-skills/rules/ui-menus.md +174 -0
  182. package/skills/vercel-react-native-skills/rules/ui-native-modals.md +77 -0
  183. package/skills/vercel-react-native-skills/rules/ui-pressable.md +61 -0
  184. package/skills/vercel-react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  185. package/skills/vercel-react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  186. package/skills/vercel-react-native-skills/rules/ui-styling.md +87 -0
  187. package/skills/web-design-guidelines/SKILL.md +39 -0
  188. package/templates/AGENTS.md +31 -0
  189. package/templates/CLAUDE.md +31 -0
@@ -0,0 +1,77 @@
1
+ ---
2
+ title: Use Native Modals Over JS-Based Bottom Sheets
3
+ impact: HIGH
4
+ impactDescription: native performance, gestures, accessibility
5
+ tags: modals, bottom-sheet, native, react-navigation
6
+ ---
7
+
8
+ ## Use Native Modals Over JS-Based Bottom Sheets
9
+
10
+ Use native `<Modal>` with `presentationStyle="formSheet"` or React Navigation
11
+ v7's native form sheet instead of JS-based bottom sheet libraries. Native modals
12
+ have built-in gestures, accessibility, and better performance. Rely on native UI
13
+ for low-level primitives.
14
+
15
+ **Incorrect (JS-based bottom sheet):**
16
+
17
+ ```tsx
18
+ import BottomSheet from 'custom-js-bottom-sheet'
19
+
20
+ function MyScreen() {
21
+ const sheetRef = useRef<BottomSheet>(null)
22
+
23
+ return (
24
+ <View style={{ flex: 1 }}>
25
+ <Button onPress={() => sheetRef.current?.expand()} title='Open' />
26
+ <BottomSheet ref={sheetRef} snapPoints={['50%', '90%']}>
27
+ <View>
28
+ <Text>Sheet content</Text>
29
+ </View>
30
+ </BottomSheet>
31
+ </View>
32
+ )
33
+ }
34
+ ```
35
+
36
+ **Correct (native Modal with formSheet):**
37
+
38
+ ```tsx
39
+ import { Modal, View, Text, Button } from 'react-native'
40
+
41
+ function MyScreen() {
42
+ const [visible, setVisible] = useState(false)
43
+
44
+ return (
45
+ <View style={{ flex: 1 }}>
46
+ <Button onPress={() => setVisible(true)} title='Open' />
47
+ <Modal
48
+ visible={visible}
49
+ presentationStyle='formSheet'
50
+ animationType='slide'
51
+ onRequestClose={() => setVisible(false)}
52
+ >
53
+ <View>
54
+ <Text>Sheet content</Text>
55
+ </View>
56
+ </Modal>
57
+ </View>
58
+ )
59
+ }
60
+ ```
61
+
62
+ **Correct (React Navigation v7 native form sheet):**
63
+
64
+ ```tsx
65
+ // In your navigator
66
+ <Stack.Screen
67
+ name='Details'
68
+ component={DetailsScreen}
69
+ options={{
70
+ presentation: 'formSheet',
71
+ sheetAllowedDetents: 'fitToContents',
72
+ }}
73
+ />
74
+ ```
75
+
76
+ Native modals provide swipe-to-dismiss, proper keyboard avoidance, and
77
+ accessibility out of the box.
@@ -0,0 +1,61 @@
1
+ ---
2
+ title: Use Pressable Instead of Touchable Components
3
+ impact: LOW
4
+ impactDescription: modern API, more flexible
5
+ tags: ui, pressable, touchable, gestures
6
+ ---
7
+
8
+ ## Use Pressable Instead of Touchable Components
9
+
10
+ Never use `TouchableOpacity` or `TouchableHighlight`. Use `Pressable` from
11
+ `react-native` or `react-native-gesture-handler` instead.
12
+
13
+ **Incorrect (legacy Touchable components):**
14
+
15
+ ```tsx
16
+ import { TouchableOpacity } from 'react-native'
17
+
18
+ function MyButton({ onPress }: { onPress: () => void }) {
19
+ return (
20
+ <TouchableOpacity onPress={onPress} activeOpacity={0.7}>
21
+ <Text>Press me</Text>
22
+ </TouchableOpacity>
23
+ )
24
+ }
25
+ ```
26
+
27
+ **Correct (Pressable):**
28
+
29
+ ```tsx
30
+ import { Pressable } from 'react-native'
31
+
32
+ function MyButton({ onPress }: { onPress: () => void }) {
33
+ return (
34
+ <Pressable onPress={onPress}>
35
+ <Text>Press me</Text>
36
+ </Pressable>
37
+ )
38
+ }
39
+ ```
40
+
41
+ **Correct (Pressable from gesture handler for lists):**
42
+
43
+ ```tsx
44
+ import { Pressable } from 'react-native-gesture-handler'
45
+
46
+ function ListItem({ onPress }: { onPress: () => void }) {
47
+ return (
48
+ <Pressable onPress={onPress}>
49
+ <Text>Item</Text>
50
+ </Pressable>
51
+ )
52
+ }
53
+ ```
54
+
55
+ Use `react-native-gesture-handler` Pressable inside scrollable lists for better
56
+ gesture coordination, as long as you are using the ScrollView from
57
+ `react-native-gesture-handler` as well.
58
+
59
+ **For animated press states (scale, opacity changes):** Use `GestureDetector`
60
+ with Reanimated shared values instead of Pressable's style callback. See the
61
+ `animation-gesture-detector-press` rule.
@@ -0,0 +1,65 @@
1
+ ---
2
+ title: Use contentInsetAdjustmentBehavior for Safe Areas
3
+ impact: MEDIUM
4
+ impactDescription: native safe area handling, no layout shifts
5
+ tags: safe-area, scrollview, layout
6
+ ---
7
+
8
+ ## Use contentInsetAdjustmentBehavior for Safe Areas
9
+
10
+ Use `contentInsetAdjustmentBehavior="automatic"` on the root ScrollView instead of wrapping content in SafeAreaView or manual padding. This lets iOS handle safe area insets natively with proper scroll behavior.
11
+
12
+ **Incorrect (SafeAreaView wrapper):**
13
+
14
+ ```tsx
15
+ import { SafeAreaView, ScrollView, View, Text } from 'react-native'
16
+
17
+ function MyScreen() {
18
+ return (
19
+ <SafeAreaView style={{ flex: 1 }}>
20
+ <ScrollView>
21
+ <View>
22
+ <Text>Content</Text>
23
+ </View>
24
+ </ScrollView>
25
+ </SafeAreaView>
26
+ )
27
+ }
28
+ ```
29
+
30
+ **Incorrect (manual safe area padding):**
31
+
32
+ ```tsx
33
+ import { ScrollView, View, Text } from 'react-native'
34
+ import { useSafeAreaInsets } from 'react-native-safe-area-context'
35
+
36
+ function MyScreen() {
37
+ const insets = useSafeAreaInsets()
38
+
39
+ return (
40
+ <ScrollView contentContainerStyle={{ paddingTop: insets.top }}>
41
+ <View>
42
+ <Text>Content</Text>
43
+ </View>
44
+ </ScrollView>
45
+ )
46
+ }
47
+ ```
48
+
49
+ **Correct (native content inset adjustment):**
50
+
51
+ ```tsx
52
+ import { ScrollView, View, Text } from 'react-native'
53
+
54
+ function MyScreen() {
55
+ return (
56
+ <ScrollView contentInsetAdjustmentBehavior='automatic'>
57
+ <View>
58
+ <Text>Content</Text>
59
+ </View>
60
+ </ScrollView>
61
+ )
62
+ }
63
+ ```
64
+
65
+ The native approach handles dynamic safe areas (keyboard, toolbars) and allows content to scroll behind the status bar naturally.
@@ -0,0 +1,45 @@
1
+ ---
2
+ title: Use contentInset for Dynamic ScrollView Spacing
3
+ impact: LOW
4
+ impactDescription: smoother updates, no layout recalculation
5
+ tags: scrollview, layout, contentInset, performance
6
+ ---
7
+
8
+ ## Use contentInset for Dynamic ScrollView Spacing
9
+
10
+ When adding space to the top or bottom of a ScrollView that may change
11
+ (keyboard, toolbars, dynamic content), use `contentInset` instead of padding.
12
+ Changing `contentInset` doesn't trigger layout recalculation—it adjusts the
13
+ scroll area without re-rendering content.
14
+
15
+ **Incorrect (padding causes layout recalculation):**
16
+
17
+ ```tsx
18
+ function Feed({ bottomOffset }: { bottomOffset: number }) {
19
+ return (
20
+ <ScrollView contentContainerStyle={{ paddingBottom: bottomOffset }}>
21
+ {children}
22
+ </ScrollView>
23
+ )
24
+ }
25
+ // Changing bottomOffset triggers full layout recalculation
26
+ ```
27
+
28
+ **Correct (contentInset for dynamic spacing):**
29
+
30
+ ```tsx
31
+ function Feed({ bottomOffset }: { bottomOffset: number }) {
32
+ return (
33
+ <ScrollView
34
+ contentInset={{ bottom: bottomOffset }}
35
+ scrollIndicatorInsets={{ bottom: bottomOffset }}
36
+ >
37
+ {children}
38
+ </ScrollView>
39
+ )
40
+ }
41
+ // Changing bottomOffset only adjusts scroll bounds
42
+ ```
43
+
44
+ Use `scrollIndicatorInsets` alongside `contentInset` to keep the scroll
45
+ indicator aligned. For static spacing that never changes, padding is fine.
@@ -0,0 +1,87 @@
1
+ ---
2
+ title: Modern React Native Styling Patterns
3
+ impact: MEDIUM
4
+ impactDescription: consistent design, smoother borders, cleaner layouts
5
+ tags: styling, css, layout, shadows, gradients
6
+ ---
7
+
8
+ ## Modern React Native Styling Patterns
9
+
10
+ Follow these styling patterns for cleaner, more consistent React Native code.
11
+
12
+ **Always use `borderCurve: 'continuous'` with `borderRadius`:**
13
+
14
+ ```tsx
15
+ // Incorrect
16
+ { borderRadius: 12 }
17
+
18
+ // Correct – smoother iOS-style corners
19
+ { borderRadius: 12, borderCurve: 'continuous' }
20
+ ```
21
+
22
+ **Use `gap` instead of margin for spacing between elements:**
23
+
24
+ ```tsx
25
+ // Incorrect – margin on children
26
+ <View>
27
+ <Text style={{ marginBottom: 8 }}>Title</Text>
28
+ <Text style={{ marginBottom: 8 }}>Subtitle</Text>
29
+ </View>
30
+
31
+ // Correct – gap on parent
32
+ <View style={{ gap: 8 }}>
33
+ <Text>Title</Text>
34
+ <Text>Subtitle</Text>
35
+ </View>
36
+ ```
37
+
38
+ **Use `padding` for space within, `gap` for space between:**
39
+
40
+ ```tsx
41
+ <View style={{ padding: 16, gap: 12 }}>
42
+ <Text>First</Text>
43
+ <Text>Second</Text>
44
+ </View>
45
+ ```
46
+
47
+ **Use `experimental_backgroundImage` for linear gradients:**
48
+
49
+ ```tsx
50
+ // Incorrect – third-party gradient library
51
+ <LinearGradient colors={['#000', '#fff']} />
52
+
53
+ // Correct – native CSS gradient syntax
54
+ <View
55
+ style={{
56
+ experimental_backgroundImage: 'linear-gradient(to bottom, #000, #fff)',
57
+ }}
58
+ />
59
+ ```
60
+
61
+ **Use CSS `boxShadow` string syntax for shadows:**
62
+
63
+ ```tsx
64
+ // Incorrect – legacy shadow objects or elevation
65
+ { shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.1 }
66
+ { elevation: 4 }
67
+
68
+ // Correct – CSS box-shadow syntax
69
+ { boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)' }
70
+ ```
71
+
72
+ **Avoid multiple font sizes – use weight and color for emphasis:**
73
+
74
+ ```tsx
75
+ // Incorrect – varying font sizes for hierarchy
76
+ <Text style={{ fontSize: 18 }}>Title</Text>
77
+ <Text style={{ fontSize: 14 }}>Subtitle</Text>
78
+ <Text style={{ fontSize: 12 }}>Caption</Text>
79
+
80
+ // Correct – consistent size, vary weight and color
81
+ <Text style={{ fontWeight: '600' }}>Title</Text>
82
+ <Text style={{ color: '#666' }}>Subtitle</Text>
83
+ <Text style={{ color: '#999' }}>Caption</Text>
84
+ ```
85
+
86
+ Limiting font sizes creates visual consistency. Use `fontWeight` (bold/semibold)
87
+ and grayscale colors for hierarchy instead.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: web-design-guidelines
3
+ description: Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
4
+ metadata:
5
+ author: vercel
6
+ version: "1.0.0"
7
+ argument-hint: <file-or-pattern>
8
+ ---
9
+
10
+ # Web Interface Guidelines
11
+
12
+ Review files for compliance with Web Interface Guidelines.
13
+
14
+ ## How It Works
15
+
16
+ 1. Fetch the latest guidelines from the source URL below
17
+ 2. Read the specified files (or prompt user for files/pattern)
18
+ 3. Check against all rules in the fetched guidelines
19
+ 4. Output findings in the terse `file:line` format
20
+
21
+ ## Guidelines Source
22
+
23
+ Fetch fresh guidelines before each review:
24
+
25
+ ```
26
+ https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md
27
+ ```
28
+
29
+ Use WebFetch to retrieve the latest rules. The fetched content contains all the rules and output format instructions.
30
+
31
+ ## Usage
32
+
33
+ When a user provides a file or pattern argument:
34
+ 1. Fetch guidelines from the source URL above
35
+ 2. Read the specified files
36
+ 3. Apply all rules from the fetched guidelines
37
+ 4. Output findings using the format specified in the guidelines
38
+
39
+ If no files specified, ask the user which files to review.
@@ -0,0 +1,31 @@
1
+ # Project AI Guidelines
2
+
3
+ ## Stack
4
+ - Framework: (e.g. Next.js / Vite / Remix)
5
+ - Language: TypeScript (strict mode)
6
+ - Styling: TailwindCSS
7
+ - State: (e.g. Zustand / Jotai / React Query)
8
+ - Package manager: (e.g. pnpm / bun / npm)
9
+
10
+ ## Code Conventions
11
+ - Components go in `src/components/`, pages in `src/pages/` or `src/app/`
12
+ - Use named exports, not default exports for components
13
+ - Prefer composition over prop drilling
14
+ - Keep components small and focused — split when > ~150 lines
15
+ - No `any` in TypeScript
16
+
17
+ ## AI Behavior
18
+ - Always read existing code before suggesting modifications
19
+ - Do not add comments unless logic is non-obvious
20
+ - Do not over-engineer — minimum complexity for the task
21
+ - Do not add error handling for impossible scenarios
22
+ - Prefer editing existing files over creating new ones
23
+
24
+ ## File Structure
25
+ ```
26
+ src/
27
+ components/ # Reusable UI components
28
+ hooks/ # Custom React hooks
29
+ lib/ # Utilities and helpers
30
+ types/ # Shared TypeScript types
31
+ ```
@@ -0,0 +1,31 @@
1
+ # Project AI Guidelines
2
+
3
+ ## Stack
4
+ - Framework: (e.g. Next.js / Vite / Remix)
5
+ - Language: TypeScript (strict mode)
6
+ - Styling: TailwindCSS
7
+ - State: (e.g. Zustand / Jotai / React Query)
8
+ - Package manager: (e.g. pnpm / bun / npm)
9
+
10
+ ## Code Conventions
11
+ - Components go in `src/components/`, pages in `src/pages/` or `src/app/`
12
+ - Use named exports, not default exports for components
13
+ - Prefer composition over prop drilling
14
+ - Keep components small and focused — split when > ~150 lines
15
+ - No `any` in TypeScript
16
+
17
+ ## AI Behavior
18
+ - Always read existing code before suggesting modifications
19
+ - Do not add comments unless logic is non-obvious
20
+ - Do not over-engineer — minimum complexity for the task
21
+ - Do not add error handling for impossible scenarios
22
+ - Prefer editing existing files over creating new ones
23
+
24
+ ## File Structure
25
+ ```
26
+ src/
27
+ components/ # Reusable UI components
28
+ hooks/ # Custom React hooks
29
+ lib/ # Utilities and helpers
30
+ types/ # Shared TypeScript types
31
+ ```