Skip to content

monorepo-config

<!-- Loaded by react-native-engineer when task involves monorepo, fonts, imports, design system, dependency versions, autolinking -->

From plugin
vexjoy-agent
413198 skills198 agents10 commands86 hooks
Install
$ npx -y skills add notque/vexjoy-agent --agent claude-code

How it fires

How this agent gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.

Context preview

The summary Claude sees to decide when to auto-load this agent.

<!-- Loaded by react-native-engineer when task involves monorepo, fonts, imports, design system, dependency versions, autolinking -->

Agent definition

monorepo-config.md

Monorepo Config Reference

<!-- Loaded by react-native-engineer when task involves monorepo, fonts, imports, design system, dependency versions, autolinking -->

Install Native Dependencies in the App Directory

**Impact:** CRITICAL — required for autolinking

Autolinking only scans the native app's `node_modules`. Native deps in shared packages but missing from the app directory won't link.

**Instead of:**

packages/
  ui/
    package.json  ← has react-native-reanimated
  app/
    package.json  ← missing react-native-reanimated ← autolinking fails

**Use:**

// packages/app/package.json
{
  "dependencies": {
    "react-native-reanimated": "3.16.1"
  }
}

Even if only the shared package uses the native dep, the app must declare it.

---

Use Single Dependency Versions Across the Monorepo

**Impact:** MEDIUM — avoids duplicate bundles and version conflicts

**Instead of:**

// packages/app: "react-native-reanimated": "^3.0.0"
// packages/ui:  "react-native-reanimated": "^3.5.0"

**Use:**

// package.json (root)
{
  "pnpm": {
    "overrides": { "react-native-reanimated": "3.16.1" }
  }
}
// npm: "overrides", yarn: "resolutions"

Use exact versions (no `^` or `~`). Use `syncpack` to audit consistency.

---

Load Fonts at Build Time with Expo Config Plugin

**Impact:** LOW — fonts available at launch, no loading state

**Instead of:**

const [fontsLoaded] = useFonts({ 'Geist-Bold': require('./assets/fonts/Geist-Bold.otf') })
if (!fontsLoaded) return null

**Use:**

// app.json
{
  "expo": {
    "plugins": [
      ["expo-font", { "fonts": ["./assets/fonts/Geist-Bold.otf"] }]
    ]
  }
}

Run `npx expo prebuild` after adding fonts. Requires Expo (managed or bare with config plugins).

---

Re-export Dependencies Through a Design System Folder

**Impact:** LOW — single point of change for component swaps

**Instead of:**

import { View, Text } from 'react-native'
import { Button } from '@ui/button'

**Use:**

// components/view.tsx
export function View(props: Pick<React.ComponentProps<typeof RNView>, 'style' | 'children'>) {
  return <RNView {...props} />
}

// App code
import { View } from '@/components/view'

Start with re-exports. Customize prop shapes later without changing app code.

Read more
Ships withvexjoy-agent

Essays and writing behind this toolkit live at vexjoy.com. AI agents skip steps. "Looks correct" replaces running tests. "Trivial change" replaces verification.

Get the whole plugin, auto-invoked