Nx Monorepo
giuseppe-trisciuoglio/developer-kit
Provides comprehensive Nx monorepo management guidance for TypeScript/JavaScript projects.
Import, merge, or combine repositories into an Nx workspace using nx import.
$ npx skills add nrwl/nx --skill nx-import -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nrwl/nx nx-import --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nrwl/nx.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/nx-import .claude/skills/nx-import && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "nx-import" agent skill from https://github.com/nrwl/nx/tree/master/.agents/skills/nx-import into .claude/skills/nx-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nx-import", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nrwl/nx/tree/master/.agents/skills/nx-importType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nrwl/nx --skill nx-import -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nrwl/nx nx-import --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nrwl/nx.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/nx-import .agents/skills/nx-import && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "nx-import" agent skill from https://github.com/nrwl/nx/tree/master/.agents/skills/nx-import into .agents/skills/nx-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nx-import", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nrwl/nx --skill nx-import -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nrwl/nx nx-import --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nrwl/nx.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/nx-import .cursor/skills/nx-import && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "nx-import" agent skill from https://github.com/nrwl/nx/tree/master/.agents/skills/nx-import into .cursor/skills/nx-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nx-import", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nrwl/nx.git --path .agents/skills/nx-import--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nrwl/nx --skill nx-import -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nrwl/nx nx-import --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nrwl/nx.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/nx-import .gemini/skills/nx-import && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "nx-import" agent skill from https://github.com/nrwl/nx/tree/master/.agents/skills/nx-import into .gemini/skills/nx-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nx-import", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nrwl/nx nx-importInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nrwl/nx --skill nx-import -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nrwl/nx.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/nx-import .github/skills/nx-import && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "nx-import" agent skill from https://github.com/nrwl/nx/tree/master/.agents/skills/nx-import into .github/skills/nx-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nx-import", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nrwl/nx --skill nx-import -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nrwl/nx nx-import --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nrwl/nx.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/nx-import .opencode/skills/nx-import && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "nx-import" agent skill from https://github.com/nrwl/nx/tree/master/.agents/skills/nx-import into .opencode/skills/nx-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nx-import", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
nx-importImport, merge, or combine repositories into an Nx workspace using nx import.
Nx Import is an agent skill from nrwl/nx. Import, merge, or combine repositories into an Nx workspace using nx import. USE WHEN the user asks to adopt Nx across repos, move projects into a monorepo, or bring code/history from another repository.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including reference files (for example `references/ESLINT.md`, `references/GRADLE.md` and `references/JEST.md`).
It sits in Development, covering Monorepo tooling. It works with Nx and TypeScript. The repository describes itself as: The Monorepo Platform that amplifies both developers and AI agents. Nx optimizes your builds, scales your CI, and fixes failed PRs automatically. Ship in half the time. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit db71d69. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nxpnpmnpxvitestFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
nx.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Nx Import loads about 3.5k tokens when it runs, and up to ~15k if it reads all its reference files. Until then it costs about 53 tokens; SKILL.md has 1,602 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from nrwl/nx at commit db71d69, republished under its MIT licence (© nrwl). 1,602 words, ~3,465 tokens.
.claude/skills/nx-import/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.nx import brings code from a source repository or folder into the current workspace, preserving commit history.22.6.0, nx import responds with .ndjson outputs and follow-up questions. For earlier versions, always run with --no-interactive and specify all flags directly.nx import --help for available options.libs/utils and libs/models; source has libs/ui and libs/data-access — you cannot import libs/ into libs/ directly. Import each source library individually.Primary docs:
Read the nx docs if you have the tools for it.
Subdirectory-at-a-time (nx import <source> apps --source=apps):
imported-apps/), then renameWhole repo (nx import <source> imported --source=.):
imported/nx.json, imported/tsconfig.base.json, etc.)tsconfig.base.json (projects extend it), prefix workspace globs and executor pathslibs/but dest uses packages/? Import into packages/ (nx import <source> packages/foo --source=libs/foo).Before importing, identify whether the source is an application or a library:
next.config.*, vite.config.* with a build entry point, framework-specific app scaffolding (CRA, Angular CLI app, etc.)"exports" field in package.jsonpom.xml with <packaging>jar</packaging> or <packaging>war</packaging> and a main class; Gradle application plugin or mainClass setting.csproj/.fsproj with <OutputType>Exe</OutputType> or <OutputType>WinExe</OutputType>"main"/"exports" in package.json, Maven/Gradle packaging as a library jar, .NET <OutputType>Library</OutputType>, named exports intended for import by other packages.Destination directory rules:
apps/<name>. Check workspace globs (e.g. pnpm-workspace.yaml, workspaces in root package.json) for an existing apps/* entry.apps/* is not present, add it before importing: update the workspace glob config and commit (or stage) the change.nx import <source> apps/my-app --source=packages/my-apppackages/, libs/, etc.).nx import adds the imported directory itself (e.g. apps) to pnpm-workspace.yaml, NOT glob patterns for packages within it. Cross-package imports will fail with Cannot find module.
Fix: Replace with proper globs from the source config (e.g. apps/*, libs/shared/*), then pnpm install.
nx import does NOT merge from the source's root:
dependencies/devDependencies from package.jsontargetDefaults from nx.json (e.g. "@nx/esbuild:esbuild": { "dependsOn": ["^build"] } — critical for build ordering)namedInputs from nx.json (e.g. production exclusion patterns for test files)nx.jsonFix: Diff source and dest package.json + nx.json. Add missing deps, merge relevant targetDefaults and namedInputs.
After import, run nx sync --yes. If it reports nothing but typecheck still fails, nx reset first, then nx sync --yes again.
Inferred targets (via Nx plugins) resolve config relative to project root — no changes needed. Explicit executor targets (e.g. @nx/esbuild:esbuild) have workspace-root-relative paths (main, outputPath, tsConfig, assets, sourceRoot) that must be prefixed with the import destination directory.
nx import detects and offers to install plugins. Accept them.npx nx add @nx/PLUGIN. Check include/exclude patterns — defaults won't match alternate directories (e.g. apps-beta/).npx nx reset after any plugin config changes.Whole-repo import brings ALL source root files into the dest subdirectory. Clean up:
pnpm-lock.yaml — stale; dest has its own lockfilepnpm-workspace.yaml — source workspace config; conflicts with destnode_modules/ — stale symlinks pointing to source filesystem.gitignore — redundant with dest root .gitignorenx.json — source Nx config; dest has its ownREADME.md — optional; keep or removeDon't blindly delete tsconfig.base.json — imported projects may extend it via relative paths.
Subdirectory import doesn't bring the source's root eslint.config.mjs, but project configs reference ../../eslint.config.mjs.
Fix order:
pnpm add -wD eslint@^9 @nx/eslint-plugin typescript-eslint (plus framework-specific plugins)eslint.config.mjs (copy from source or create with @nx/eslint-plugin base rules)npx nx add @nx/eslint to register the plugin in nx.jsonInstall typescript-eslint explicitly — pnpm's strict hoisting won't auto-resolve this transitive dep of @nx/eslint-plugin.
Pin ESLint to v9 (eslint@^9.0.0). ESLint 10 breaks @nx/eslint and many plugins with cryptic errors like Cannot read properties of undefined (reading 'version').
@nx/eslint may peer-depend on ESLint 8, causing the wrong version to resolve. If lint fails with Cannot read properties of undefined (reading 'allow'), add pnpm.overrides:
{ "pnpm": { "overrides": { "eslint": "^9.0.0" } } }After import, compare key deps (typescript, eslint, framework-specific). If dest uses newer versions, upgrade imported packages to match (usually safe). If source is newer, may need to upgrade dest first. Use pnpm.overrides to enforce single-version policy if desired.
Imported projects may lack tags. Add tags or update @nx/enforce-module-boundaries rules.
Same name in package.json across source and dest causes MultipleProjectsWithSameNameError. Fix: Rename conflicting names (e.g. @org/api → @org/teama-api), update all dep references and import statements, pnpm install. The root package.json of each imported repo also becomes a project — rename those too.
pnpm install fails during nx import if a "workspace:*" dependency hasn't been imported yet. File operations still succeed. Fix: Import all projects first, then pnpm install --no-frozen-lockfile.
.gitkeep Blocking Subdirectory ImportThe TS preset creates packages/.gitkeep. Remove it and commit before importing.
The TS preset defaults (module: "nodenext", moduleResolution: "nodenext", lib: ["es2022"]) are incompatible with frontend frameworks (React, Next.js, Vue, Vite). After importing frontend projects, verify the dest root tsconfig.base.json:
moduleResolution: Must be "bundler" (not "nodenext")module: Must be "esnext" (not "nodenext")lib: Must include "dom" and "dom.iterable" (frontend projects need these)jsx: "react-jsx" for React-only workspaces, per-project for mixed frameworksFor subdirectory imports, the dest root tsconfig is authoritative — update it. For whole-repo imports, imported projects may extend their own nested tsconfig.base.json, making this less critical.
If the dest also has backend projects needing nodenext, use per-project overrides instead of changing the root.
Gotcha: TypeScript does NOT merge lib arrays — a project-level override replaces the base array entirely. Always include all needed entries (e.g. es2022, dom, dom.iterable) in any project-level lib.
@nx/react Typings for LibrariesReact libraries generated with @nx/react:library reference @nx/react/typings/cssmodule.d.ts and @nx/react/typings/image.d.ts in their tsconfig types. These fail with Cannot find type definition file unless @nx/react is installed in the dest workspace.
Fix: pnpm add -wD @nx/react
Nx presets create jest.preset.js at the workspace root, and project jest configs reference it (e.g. ../../jest.preset.js). Subdirectory import does NOT bring this file.
Fix:
npx nx add @nx/jest — registers @nx/jest/plugin in nx.json and updates namedInputsjest.preset.js at workspace root (see references/JEST.md for content) — nx add only creates this when a generator runs, not on bare nx addpnpm add -wD jest jest-environment-jsdom ts-jest @types/jestreferences/JEST.md)For deeper Jest issues (tsconfig.spec.json, Babel transforms, CI atomization, Jest vs Vitest coexistence), see references/JEST.md.
When importing a project with existing npm scripts (build, dev, start, lint), Nx plugins auto-prefix inferred target names to avoid conflicts: e.g. next:build, vite:build, eslint:lint.
Fix: Remove the Nx-rewritten npm scripts from the imported package.json, then either:
nx run app:next:build)nx.json to use unprefixed namesWhen the source is a plain pnpm/npm workspace without nx.json.
Nx rewrites package.json scripts during init, creating broken commands (e.g. vitest run → nx test run). Fix: Remove all rewritten scripts — Nx plugins infer targets from config files.
noEmit → composite + emitDeclarationOnly (Critical)Plain TS projects use "noEmit": true, incompatible with Nx project references.
Symptoms: "typecheck target is disabled because one or more project references set 'noEmit: true'" or TS6310.
Fix in all imported tsconfigs:
"noEmit": true. If inherited via extends chain, set "noEmit": false explicitly."composite": true, "emitDeclarationOnly": true, "declarationMap": true"outDir": "dist" and "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo""extends": "../../tsconfig.base.json" if missing. Remove settings now inherited from base.nx import may bring node_modules/ (pnpm symlinks pointing to the source filesystem) and pnpm-lock.yaml from the source. Both are stale.
Fix: rm -rf imported/node_modules imported/pnpm-lock.yaml imported/pnpm-workspace.yaml imported/.gitignore, then pnpm install.
.eslintrc.json (ESLint 8): Delete all .eslintrc.*, remove v8 deps, create flat eslint.config.mjs.eslint.config.js): Self-contained configs can often be left as-is.paths AliasesNx uses package.json "exports" + pnpm workspace linking instead of tsconfig "paths". If packages have proper "exports", paths are redundant. Otherwise, update paths for the new directory structure.
Identify technologies in the source repo, then read and apply the matching reference file(s).
Available references:
references/ESLINT.md — ESLint projects: duplicate lint/eslint:lint targets, legacy .eslintrc.* linting generated files, flat config .cjs self-linting, typescript-eslint v7/v9 peer dep conflict, mixed ESLint v8+v9 in one workspace.references/GRADLE.mdreferences/JEST.md — Jest testing: @nx/jest/plugin setup, jest.preset.js, testing deps by framework, tsconfig.spec.json, Jest vs Vitest coexistence, Babel transforms, CI atomization.references/NEXT.md — Next.js projects: @nx/next/plugin targets, withNx, Next.js TS config (noEmit, jsx: "preserve"), auto-installing deps via wrong PM, non-Nx create-next-app imports, mixed Next.js+Vite coexistence.references/TURBOREPO.mdreferences/VITE.md — Vite projects (React, Vue, or both): @nx/vite/plugin typecheck target, resolve.alias/__dirname fixes, framework deps, Vue-specific setup, mixed React+Vue coexistence.© nrwl, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (references) in .agents/skills/nx-import of nrwl/nx.
Open the folder on GitHubat commit db71d69
We found 19 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 6 other GitHub owners. This page covers the copy in nrwl/nx, which our catalogue first saw on October 7, 2026.
Nx Import next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Nx Import this skillnrwl/nx | 29k | 6 repos | ~3.5k | Automated safety check: Pass | MIT | |
| Nx Monorepogiuseppe-trisciuoglio/developer-kit | 356 | — | ~2.3k | Automated safety check: Notes | MIT | |
| Nx Workspacenomcopter/react-mosaic | 4.8k | 8 repos | ~1.9k | Automated safety check: Pass | Custom licence | |
| Nx Run Tasksnomcopter/react-mosaic | 4.8k | 8 repos | ~613 | Automated safety check: Pass | Custom licence | |
| Link Workspace Packagesnomcopter/react-mosaic | 4.8k | 6 repos | ~760 | Automated safety check: Pass | Custom licence | |
| Pnpm Engineteambit/bit | 18k | — | ~1.9k | Automated safety check: Pass | Custom licence |
giuseppe-trisciuoglio/developer-kit
Provides comprehensive Nx monorepo management guidance for TypeScript/JavaScript projects.
nomcopter/react-mosaic
Explore and understand Nx workspaces. An agent skill from nomcopter/react-mosaic.
nomcopter/react-mosaic
Helps with running tasks in an Nx workspace. An agent skill from nomcopter/react-mosaic.
nomcopter/react-mosaic
Link workspace packages in monorepos (npm, yarn, pnpm, bun).
teambit/bit
Work on the pnpm Rust engine (@pnpm/napi, the pacquet crates) that bit install runs through.
remix-run/remix
Create or align a package in the Remix monorepo to match existing package conventions.
nrwl/nx
Monitor Nx Cloud CI pipeline and handle self-healing fixes. An agent skill from nrwl/nx.
nrwl/nx
Run Nx generators with prioritization for workspace-plugin generators.
nrwl/nx
Author or scope a first-party Nx migration. An agent skill from nrwl/nx.
nrwl/nx
Generate code using nx generators. An agent skill from nrwl/nx.
nrwl/nx
Check modified Nx documentation pages against the astro-docs style guide.
nrwl/nx
Sync docs commits from master out to the live docs branches in the nx repo: cherry-picks docs( / feat(nx-dev) commits onto website-<major AND the latest <major.<minor.x release branch.
Works with
Categories
Import, merge, or combine repositories into an Nx workspace using nx import. Nx Import is an agent skill from nrwl/nx. Import, merge, or combine repositories into an Nx workspace using nx import.
Nx Import fits situations like: the user asks to adopt Nx across repos; move projects into a monorepo; bring code/history from another repository.
Run `npx skills add nrwl/nx --skill nx-import -a claude-code`. Or copy the skill folder (.agents/skills/nx-import in nrwl/nx) into .claude/skills/nx-import in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nrwl/nx --skill nx-import -a codex`. Or copy the skill folder (.agents/skills/nx-import in nrwl/nx) into .agents/skills/nx-import in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nrwl/nx --skill nx-import -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nx-import, .gemini/skills/nx-import, .github/skills/nx-import and .opencode/skills/nx-import in your project.
Going by SKILL.md and its folder, Nx Import needs the command-line tools its instructions call (nx, pnpm, npx and vitest). Our summary lists: Node.js.
SKILL.md names 1 domain. As links in the text: nx.dev. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Nx Import is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 12k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Nx Import: Nx Monorepo (giuseppe-trisciuoglio/developer-kit, 356 stars), Nx Workspace (nomcopter/react-mosaic, 4.8k stars), Nx Run Tasks (nomcopter/react-mosaic, 4.8k stars) and Link Workspace Packages (nomcopter/react-mosaic, 4.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nrwl (a GitHub organization) maintains it in nrwl/nx, which has 29,399 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 9, 2026.
Source: nrwl/nx on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.