A Raycast extension to browse and run scripts from monorepo workspaces. Stop hunting through dozens of package.json files—discover and execute any script from any workspace in seconds.
- Multi-workspace discovery — Automatically scans all workspaces in your monorepo (apps, packages, workers, etc.)
- Multi-project support — Manage multiple monorepos and switch between them instantly
- Package manager agnostic — Works with pnpm, npm, yarn, and bun with auto-detection
- Recent scripts — Quick access to your frequently used scripts with timestamps
- Terminal integration — Execute directly in Ghostty, iTerm, Terminal.app, or Warp
- Smart caching — Fast startup with automatic cache invalidation when
package.jsonfiles change
- Clone this repository
- Install dependencies:
pnpm install
- Build and import into Raycast:
pnpm run dev
Open Raycast and search for "Run Script". You'll see all scripts organized by category:
- root — Scripts from the root
package.json - apps — Scripts from application workspaces
- packages — Scripts from shared packages
- workers — Scripts from worker packages
Actions:
Enter— Run script in terminalCmd+Shift+Enter— Copy command to clipboardCmd+R— Refresh workspace cacheCmd+Shift+Delete— Clear recent scripts
Search for "Add Project" to add a new monorepo. Select the root directory containing your package.json and optionally provide a custom display name.
Switch between projects using the dropdown in the search bar.
Configure preferences in Raycast settings:
| Preference | Description | Options |
|---|---|---|
| Package Manager | Auto-detect or manually specify | Auto, pnpm, npm, yarn, bun |
| Terminal App | Where to execute scripts | Ghostty, iTerm, Terminal, Warp |
| Show Root Scripts | Include root package.json scripts |
true/false |
When set to "Auto", detection priority is based on lockfiles:
bun.lockb→ bunpnpm-lock.yaml→ pnpmyarn.lock→ yarnpackage-lock.json→ npm
The extension scans your monorepo structure by:
- pnpm: Reading
pnpm-workspace.yamlfor workspace patterns - npm/yarn/bun: Reading the
workspacesfield inpackage.json
Scripts are extracted from each workspace's package.json and grouped by category (inferred from directory structure).
Workspace data is cached in Raycast's LocalStorage and automatically invalidated when:
package.jsonmodification time changespnpm-workspace.yamlmodification time changes (for pnpm)
Use Cmd+R to force a refresh.
- macOS
- Raycast
- A JavaScript/TypeScript monorepo with workspaces
MIT