Claude Agent Skill · by Nrwl

Link Workspace Packages

Install Link Workspace Packages skill for Claude Code from nrwl/nx-ai-agents-config.

Install
Terminal · npx
$npx skills add https://github.com/vercel-labs/agent-skills --skill vercel-react-best-practices
Works with Paperclip

How Link Workspace Packages fits into a Paperclip company.

Link Workspace Packages drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.

S
SaaS FactoryPaired

Pre-configured AI company — 18 agents, 18 skills, one-time purchase.

$27$59
Explore pack
Source file
SKILL.md127 lines
Expand
---name: link-workspace-packagesdescription: 'Link workspace packages in monorepos (npm, yarn, pnpm, bun). USE WHEN: (1) you just created or generated new packages and need to wire up their dependencies, (2) user imports from a sibling package and needs to add it as a dependency, (3) you get resolution errors for workspace packages (@org/*) like "cannot find module", "failed to resolve import", "TS2307", or "cannot resolve". DO NOT patch around with tsconfig paths or manual package.json edits - use the package manager''s workspace commands to fix actual linking.'--- # Link Workspace Packages Add dependencies between packages in a monorepo. All package managers support workspaces but with different syntax. ## Detect Package Manager Check whether there's a `packageManager` field in the root-level `package.json`. Alternatively check lockfile in repo root: - `pnpm-lock.yaml` → pnpm- `yarn.lock` → yarn- `bun.lock` / `bun.lockb` → bun- `package-lock.json` → npm ## Workflow 1. Identify consumer package (the one importing)2. Identify provider package(s) (being imported)3. Add dependency using package manager's workspace syntax4. Verify symlinks created in consumer's `node_modules/` --- ## pnpm Uses `workspace:` protocol - symlinks only created when explicitly declared. ```bash# From consumer directorypnpm add @org/ui --workspace # Or with --filter from anywherepnpm add @org/ui --filter @org/app --workspace``` Result in `package.json`: ```json{ "dependencies": { "@org/ui": "workspace:*" } }``` --- ## yarn (v2+/berry) Also uses `workspace:` protocol. ```bashyarn workspace @org/app add @org/ui``` Result in `package.json`: ```json{ "dependencies": { "@org/ui": "workspace:^" } }``` --- ## npm No `workspace:` protocol. npm auto-symlinks workspace packages. ```bashnpm install @org/ui --workspace @org/app``` Result in `package.json`: ```json{ "dependencies": { "@org/ui": "*" } }``` npm resolves to local workspace automatically during install. --- ## bun Supports `workspace:` protocol (pnpm-compatible). ```bashcd packages/app && bun add @org/ui``` Result in `package.json`: ```json{ "dependencies": { "@org/ui": "workspace:*" } }``` --- ## Examples **Example 1: pnpm - link ui lib to app** ```bashpnpm add @org/ui --filter @org/app --workspace``` **Example 2: npm - link multiple packages** ```bashnpm install @org/data-access @org/ui --workspace @org/dashboard``` **Example 3: Debug "Cannot find module"** 1. Check if dependency is declared in consumer's `package.json`2. If not, add it using appropriate command above3. Run install (`pnpm install`, `npm install`, etc.) ## Notes - Symlinks appear in `<consumer>/node_modules/@org/<package>`- **Hoisting differs by manager:**  - npm/bun: hoist shared deps to root `node_modules`  - pnpm: no hoisting (strict isolation, prevents phantom deps)  - yarn berry: uses Plug'n'Play by default (no `node_modules`)- Root `package.json` should have `"private": true` to prevent accidental publish