Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
fefd9a5
chore(deps): update dependency jsdom to v29
renovate[bot] Mar 15, 2026
6577f79
Merge pull request #5612 from tsparticles/renovate/jsdom-29.x
matteobruni Mar 15, 2026
9776413
build: updated workflow
matteobruni Mar 15, 2026
286fa2e
Merge remote-tracking branch 'origin/v4' into v4
matteobruni Mar 15, 2026
8a28709
fix: improved trail drawer performance a bit
matteobruni Mar 15, 2026
90154ac
fix: improved trail drawer outcome a bit
matteobruni Mar 15, 2026
4f5368f
fix: improved trail drawer outcome a bit
matteobruni Mar 16, 2026
ba2f3b2
build: updated deps
matteobruni Mar 16, 2026
4ca9d76
build: updated deps
matteobruni Mar 16, 2026
9be6e3f
Merge branch 'main' into v4
matteobruni Mar 16, 2026
3346690
build: updated ai config for nx
matteobruni Mar 16, 2026
f5142b2
docs: initial codebase mapping (.planning/codebase)
matteobruni Mar 16, 2026
28bd8ca
docs: init project planning artifacts (PROJECT, config, research, req…
matteobruni Mar 16, 2026
befd27a
docs(plan-01): add Phase 1 plans (quickstart, docs, ci)
matteobruni Mar 16, 2026
77b7e96
docs(research-01): add Phase 1 research summary; reorganize plans
matteobruni Mar 16, 2026
47051de
feat(roadmap): replace roadmap with single drag-drop phase; add phase…
matteobruni Mar 16, 2026
c1201d2
fix: reduced checks on trail drawing
matteobruni Mar 16, 2026
45e5860
docs: new phase 1 plan
matteobruni Mar 16, 2026
35bd142
build: updated opencode plans
matteobruni Mar 16, 2026
2cc5614
fix: reduced checks on trail drawing
matteobruni Mar 16, 2026
59da54b
build: updated copilot agents
matteobruni Mar 16, 2026
87ac189
feat: added drag & drop interaction external (mouse click)
matteobruni Mar 17, 2026
ccfdd4a
chore(deps): update pnpm/action-setup action to v5
renovate[bot] Mar 17, 2026
12d3696
feat: added momentum option to drag & drop interactor
matteobruni Mar 17, 2026
ffe4127
Merge pull request #5622 from tsparticles/renovate/pnpm-action-setup-5.x
matteobruni Mar 18, 2026
9c2576b
build: workflow CI update
matteobruni Mar 18, 2026
f33c117
build: workflow CI update
matteobruni Mar 18, 2026
dcafebb
build: workflow CI update
matteobruni Mar 18, 2026
8ad0fd0
build: updated constants
matteobruni Mar 18, 2026
62666b2
build: updated nx ai config
matteobruni Mar 18, 2026
7aedddb
build: added pool management for shapes in spatial hash grid
matteobruni Mar 18, 2026
a87944e
chore(engine): improved some GC issues
matteobruni Mar 19, 2026
43bd061
chore(engine): improved some GC issues
matteobruni Mar 19, 2026
e3b11e8
build: reverted vite build, causing issues
matteobruni Mar 19, 2026
caee11c
build: used unicode escape instead of plain characters in matrix shape
matteobruni Mar 19, 2026
e0277ad
chore(release): published new version
matteobruni Mar 19, 2026
248bb1f
Merge pull request #5618 from tsparticles/v4
matteobruni Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
127 changes: 127 additions & 0 deletions .agents/skills/link-workspace-packages/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
---
name: link-workspace-packages
description: '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 syntax
4. Verify symlinks created in consumer's `node_modules/`

---

## pnpm

Uses `workspace:` protocol - symlinks only created when explicitly declared.

```bash
# From consumer directory
pnpm add @org/ui --workspace

# Or with --filter from anywhere
pnpm add @org/ui --filter @org/app --workspace
```

Result in `package.json`:

```json
{ "dependencies": { "@org/ui": "workspace:*" } }
```

---

## yarn (v2+/berry)

Also uses `workspace:` protocol.

```bash
yarn workspace @org/app add @org/ui
```

Result in `package.json`:

```json
{ "dependencies": { "@org/ui": "workspace:^" } }
```

---

## npm

No `workspace:` protocol. npm auto-symlinks workspace packages.

```bash
npm 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).

```bash
cd packages/app && bun add @org/ui
```

Result in `package.json`:

```json
{ "dependencies": { "@org/ui": "workspace:*" } }
```

---

## Examples

**Example 1: pnpm - link ui lib to app**

```bash
pnpm add @org/ui --filter @org/app --workspace
```

**Example 2: npm - link multiple packages**

```bash
npm 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 above
3. 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
Loading
Loading