[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nx-nx-import":3,"mdc-hyrzsu-key":31,"related-repo-nx-nx-import":2788,"related-org-nx-nx-import":2863},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":21,"repoUrl":22,"updatedAt":23,"license":24,"forks":25,"topics":26,"repo":27,"sourceUrl":29,"mdContent":30},"nx-import","import repositories into Nx workspaces","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\u002Fhistory from another repository.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"nx","Nx","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnx.jpg","nrwl",[13,17,20],{"name":14,"slug":15,"type":16},"Migration","migration","tag",{"name":18,"slug":19,"type":16},"Engineering","engineering",{"name":9,"slug":8,"type":16},26,"https:\u002F\u002Fgithub.com\u002Fnrwl\u002Fnx-ai-agents-config","2026-07-13T06:10:24.792842",null,4,[],{"repoUrl":22,"stars":21,"forks":25,"topics":28,"description":24},[],"https:\u002F\u002Fgithub.com\u002Fnrwl\u002Fnx-ai-agents-config\u002Ftree\u002FHEAD\u002Fskills\u002Fnx-import","---\nname: nx-import\ndescription: 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\u002Fhistory from another repository.\n---\n\n## Quick Start\n\n- `nx import` brings code from a source repository or folder into the current workspace, preserving commit history.\n- After nx `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.\n- Run `nx import --help` for available options.\n- Make sure the destination directory is empty before importing.\n  EXAMPLE: target has `libs\u002Futils` and `libs\u002Fmodels`; source has `libs\u002Fui` and `libs\u002Fdata-access` — you cannot import `libs\u002F` into `libs\u002F` directly. Import each source library individually.\n\nPrimary docs:\n\n- https:\u002F\u002Fnx.dev\u002Fdocs\u002Fguides\u002Fadopting-nx\u002Fimport-project\n- https:\u002F\u002Fnx.dev\u002Fdocs\u002Fguides\u002Fadopting-nx\u002Fpreserving-git-histories\n\nRead the nx docs if you have the tools for it.\n\n## Import Strategy\n\n**Subdirectory-at-a-time** (`nx import \u003Csource> apps --source=apps`):\n\n- **Recommended for monorepo sources** — files land at top level, no redundant config\n- Caveats: multiple import commands (separate merge commits each); dest must not have conflicting directories; root configs (deps, plugins, targetDefaults) not imported\n- **Directory conflicts**: Import into alternate-named dir (e.g. `imported-apps\u002F`), then rename\n\n**Whole repo** (`nx import \u003Csource> imported --source=.`):\n\n- **Only for non-monorepo sources** (single-project repos)\n- For monorepos, creates messy nested config (`imported\u002Fnx.json`, `imported\u002Ftsconfig.base.json`, etc.)\n- If you must: keep imported `tsconfig.base.json` (projects extend it), prefix workspace globs and executor paths\n\n### Directory Conventions\n\n- **Always prefer the destination's existing conventions.** Source uses `libs\u002F`but dest uses `packages\u002F`? Import into `packages\u002F` (`nx import \u003Csource> packages\u002Ffoo --source=libs\u002Ffoo`).\n- If dest has no convention (empty workspace), ask the user.\n\n### Application vs Library Detection\n\nBefore importing, identify whether the source is an **application** or a **library**:\n\n- **Applications**: Deployable end products. Common indicators:\n  - _Frontend_: `next.config.*`, `vite.config.*` with a build entry point, framework-specific app scaffolding (CRA, Angular CLI app, etc.)\n  - _Backend (Node.js)_: Express\u002FFastify\u002FNestJS server entrypoint, no `\"exports\"` field in `package.json`\n  - _JVM_: Maven `pom.xml` with `\u003Cpackaging>jar\u003C\u002Fpackaging>` or `\u003Cpackaging>war\u003C\u002Fpackaging>` and a `main` class; Gradle `application` plugin or `mainClass` setting\n  - _.NET_: `.csproj`\u002F`.fsproj` with `\u003COutputType>Exe\u003C\u002FOutputType>` or `\u003COutputType>WinExe\u003C\u002FOutputType>`\n  - _General_: Dockerfile, a runnable entrypoint, no public API surface intended for import by other projects\n- **Libraries**: Reusable packages consumed by other projects. Common indicators: `\"main\"`\u002F`\"exports\"` in `package.json`, Maven\u002FGradle packaging as a library jar, .NET `\u003COutputType>Library\u003C\u002FOutputType>`, named exports intended for import by other packages.\n\n**Destination directory rules**:\n\n- Applications → `apps\u002F\u003Cname>`. Check workspace globs (e.g. `pnpm-workspace.yaml`, `workspaces` in root `package.json`) for an existing `apps\u002F*` entry.\n  - If `apps\u002F*` is **not** present, add it before importing: update the workspace glob config and commit (or stage) the change.\n  - Example: `nx import \u003Csource> apps\u002Fmy-app --source=packages\u002Fmy-app`\n- Libraries → follow the dest's existing convention (`packages\u002F`, `libs\u002F`, etc.).\n\n## Common Issues\n\n### pnpm Workspace Globs (Critical)\n\n`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`.\n\n**Fix**: Replace with proper globs from the source config (e.g. `apps\u002F*`, `libs\u002Fshared\u002F*`), then `pnpm install`.\n\n### Root Dependencies and Config Not Imported (Critical)\n\n`nx import` does **NOT** merge from the source's root:\n\n- `dependencies`\u002F`devDependencies` from `package.json`\n- `targetDefaults` from `nx.json` (e.g. `\"@nx\u002Fesbuild:esbuild\": { \"dependsOn\": [\"^build\"] }` — critical for build ordering)\n- `namedInputs` from `nx.json` (e.g. `production` exclusion patterns for test files)\n- Plugin configurations from `nx.json`\n\n**Fix**: Diff source and dest `package.json` + `nx.json`. Add missing deps, merge relevant `targetDefaults` and `namedInputs`.\n\n### TypeScript Project References\n\nAfter import, run `nx sync --yes`. If it reports nothing but typecheck still fails, `nx reset` first, then `nx sync --yes` again.\n\n### Explicit Executor Path Fixups\n\nInferred targets (via Nx plugins) resolve config relative to project root — no changes needed. Explicit executor targets (e.g. `@nx\u002Fesbuild:esbuild`) have workspace-root-relative paths (`main`, `outputPath`, `tsConfig`, `assets`, `sourceRoot`) that must be prefixed with the import destination directory.\n\n### Plugin Detection\n\n- **Whole-repo import**: `nx import` detects and offers to install plugins. Accept them.\n- **Subdirectory import**: Plugins NOT auto-detected. Manually add with `npx nx add @nx\u002FPLUGIN`. Check `include`\u002F`exclude` patterns — defaults won't match alternate directories (e.g. `apps-beta\u002F`).\n- Run `npx nx reset` after any plugin config changes.\n\n### Redundant Root Files (Whole-Repo Only)\n\nWhole-repo import brings ALL source root files into the dest subdirectory. Clean up:\n\n- `pnpm-lock.yaml` — stale; dest has its own lockfile\n- `pnpm-workspace.yaml` — source workspace config; conflicts with dest\n- `node_modules\u002F` — stale symlinks pointing to source filesystem\n- `.gitignore` — redundant with dest root `.gitignore`\n- `nx.json` — source Nx config; dest has its own\n- `README.md` — optional; keep or remove\n\n**Don't blindly delete** `tsconfig.base.json` — imported projects may extend it via relative paths.\n\n### Root ESLint Config Missing (Subdirectory Import)\n\nSubdirectory import doesn't bring the source's root `eslint.config.mjs`, but project configs reference `..\u002F..\u002Feslint.config.mjs`.\n\n**Fix order**:\n\n1. Install ESLint deps first: `pnpm add -wD eslint@^9 @nx\u002Feslint-plugin typescript-eslint` (plus framework-specific plugins)\n2. Create root `eslint.config.mjs` (copy from source or create with `@nx\u002Feslint-plugin` base rules)\n3. Then `npx nx add @nx\u002Feslint` to register the plugin in `nx.json`\n\nInstall `typescript-eslint` explicitly — pnpm's strict hoisting won't auto-resolve this transitive dep of `@nx\u002Feslint-plugin`.\n\n### ESLint Version Pinning (Critical)\n\n**Pin ESLint to v9** (`eslint@^9.0.0`). ESLint 10 breaks `@nx\u002Feslint` and many plugins with cryptic errors like `Cannot read properties of undefined (reading 'version')`.\n\n`@nx\u002Feslint` 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`:\n\n```json\n{ \"pnpm\": { \"overrides\": { \"eslint\": \"^9.0.0\" } } }\n```\n\n### Dependency Version Conflicts\n\nAfter 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.\n\n### Module Boundaries\n\nImported projects may lack `tags`. Add tags or update `@nx\u002Fenforce-module-boundaries` rules.\n\n### Project Name Collisions (Multi-Import)\n\nSame `name` in `package.json` across source and dest causes `MultipleProjectsWithSameNameError`. **Fix**: Rename conflicting names (e.g. `@org\u002Fapi` → `@org\u002Fteama-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.\n\n### Workspace Dep Import Ordering\n\n`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`.\n\n### `.gitkeep` Blocking Subdirectory Import\n\nThe TS preset creates `packages\u002F.gitkeep`. Remove it and commit before importing.\n\n### Frontend tsconfig Base Settings (Critical)\n\nThe 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`:\n\n- **`moduleResolution`**: Must be `\"bundler\"` (not `\"nodenext\"`)\n- **`module`**: Must be `\"esnext\"` (not `\"nodenext\"`)\n- **`lib`**: Must include `\"dom\"` and `\"dom.iterable\"` (frontend projects need these)\n- **`jsx`**: `\"react-jsx\"` for React-only workspaces, per-project for mixed frameworks\n\nFor **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.\n\nIf the dest also has backend projects needing `nodenext`, use per-project overrides instead of changing the root.\n\n**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`.\n\n### `@nx\u002Freact` Typings for Libraries\n\nReact libraries generated with `@nx\u002Freact:library` reference `@nx\u002Freact\u002Ftypings\u002Fcssmodule.d.ts` and `@nx\u002Freact\u002Ftypings\u002Fimage.d.ts` in their tsconfig `types`. These fail with `Cannot find type definition file` unless `@nx\u002Freact` is installed in the dest workspace.\n\n**Fix**: `pnpm add -wD @nx\u002Freact`\n\n### Jest Preset Missing (Subdirectory Import)\n\nNx presets create `jest.preset.js` at the workspace root, and project jest configs reference it (e.g. `..\u002F..\u002Fjest.preset.js`). Subdirectory import does NOT bring this file.\n\n**Fix**:\n\n1. Run `npx nx add @nx\u002Fjest` — registers `@nx\u002Fjest\u002Fplugin` in `nx.json` and updates `namedInputs`\n2. Create `jest.preset.js` at workspace root (see `references\u002FJEST.md` for content) — `nx add` only creates this when a generator runs, not on bare `nx add`\n3. Install test runner deps: `pnpm add -wD jest jest-environment-jsdom ts-jest @types\u002Fjest`\n4. Install framework-specific test deps as needed (see `references\u002FJEST.md`)\n\nFor deeper Jest issues (tsconfig.spec.json, Babel transforms, CI atomization, Jest vs Vitest coexistence), see `references\u002FJEST.md`.\n\n### Target Name Prefixing (Whole-Repo Import)\n\nWhen 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`.\n\n**Fix**: Remove the Nx-rewritten npm scripts from the imported `package.json`, then either:\n\n- Accept the prefixed names (e.g. `nx run app:next:build`)\n- Rename plugin target names in `nx.json` to use unprefixed names\n\n## Non-Nx Source Issues\n\nWhen the source is a plain pnpm\u002Fnpm workspace without `nx.json`.\n\n### npm Script Rewriting (Critical)\n\nNx 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.\n\n### `noEmit` → `composite` + `emitDeclarationOnly` (Critical)\n\nPlain TS projects use `\"noEmit\": true`, incompatible with Nx project references.\n\n**Symptoms**: \"typecheck target is disabled because one or more project references set 'noEmit: true'\" or TS6310.\n\n**Fix** in **all** imported tsconfigs:\n\n1. Remove `\"noEmit\": true`. If inherited via extends chain, set `\"noEmit\": false` explicitly.\n2. Add `\"composite\": true`, `\"emitDeclarationOnly\": true`, `\"declarationMap\": true`\n3. Add `\"outDir\": \"dist\"` and `\"tsBuildInfoFile\": \"dist\u002Ftsconfig.tsbuildinfo\"`\n4. Add `\"extends\": \"..\u002F..\u002Ftsconfig.base.json\"` if missing. Remove settings now inherited from base.\n\n### Stale node_modules and Lockfiles\n\n`nx import` may bring `node_modules\u002F` (pnpm symlinks pointing to the source filesystem) and `pnpm-lock.yaml` from the source. Both are stale.\n\n**Fix**: `rm -rf imported\u002Fnode_modules imported\u002Fpnpm-lock.yaml imported\u002Fpnpm-workspace.yaml imported\u002F.gitignore`, then `pnpm install`.\n\n### ESLint Config Handling\n\n- **Legacy `.eslintrc.json` (ESLint 8)**: Delete all `.eslintrc.*`, remove v8 deps, create flat `eslint.config.mjs`.\n- **Flat config (`eslint.config.js`)**: Self-contained configs can often be left as-is.\n- **No ESLint**: Create both root and project-level configs from scratch.\n\n### TypeScript `paths` Aliases\n\nNx 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.\n\n## Technology-specific Guidance\n\nIdentify technologies in the source repo, then read and apply the matching reference file(s).\n\nAvailable references:\n\n- `references\u002FESLINT.md` — ESLint projects: duplicate `lint`\u002F`eslint:lint` targets, legacy `.eslintrc.*` linting generated files, flat config `.cjs` self-linting, `typescript-eslint` v7\u002Fv9 peer dep conflict, mixed ESLint v8+v9 in one workspace.\n- `references\u002FGRADLE.md`\n- `references\u002FJEST.md` — Jest testing: `@nx\u002Fjest\u002Fplugin` setup, jest.preset.js, testing deps by framework, tsconfig.spec.json, Jest vs Vitest coexistence, Babel transforms, CI atomization.\n- `references\u002FNEXT.md` — Next.js projects: `@nx\u002Fnext\u002Fplugin` 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.\n- `references\u002FTURBOREPO.md`\n- `references\u002FVITE.md` — Vite projects (React, Vue, or both): `@nx\u002Fvite\u002Fplugin` typecheck target, `resolve.alias`\u002F`__dirname` fixes, framework deps, Vue-specific setup, mixed React+Vue coexistence.\n",{"data":32,"body":33},{"name":4,"description":6},{"type":34,"children":35},"root",[36,45,154,160,183,188,194,213,249,265,311,318,365,371,390,599,608,705,711,717,756,787,793,809,895,930,936,964,970,1018,1024,1095,1101,1106,1178,1195,1201,1221,1230,1285,1304,1310,1342,1367,1483,1489,1515,1521,1542,1548,1611,1617,1655,1667,1680,1686,1719,1828,1854,1867,1919,1931,1982,1996,2002,2023,2031,2120,2131,2137,2192,2208,2235,2241,2252,2258,2291,2317,2330,2340,2355,2432,2438,2462,2484,2490,2552,2566,2599,2605,2610,2615,2782],{"type":37,"tag":38,"props":39,"children":41},"element","h2",{"id":40},"quick-start",[42],{"type":43,"value":44},"text","Quick Start",{"type":37,"tag":46,"props":47,"children":48},"ul",{},[49,62,90,103],{"type":37,"tag":50,"props":51,"children":52},"li",{},[53,60],{"type":37,"tag":54,"props":55,"children":57},"code",{"className":56},[],[58],{"type":43,"value":59},"nx import",{"type":43,"value":61}," brings code from a source repository or folder into the current workspace, preserving commit history.",{"type":37,"tag":50,"props":63,"children":64},{},[65,67,73,75,80,82,88],{"type":43,"value":66},"After nx ",{"type":37,"tag":54,"props":68,"children":70},{"className":69},[],[71],{"type":43,"value":72},"22.6.0",{"type":43,"value":74},", ",{"type":37,"tag":54,"props":76,"children":78},{"className":77},[],[79],{"type":43,"value":59},{"type":43,"value":81}," responds with .ndjson outputs and follow-up questions. For earlier versions, always run with ",{"type":37,"tag":54,"props":83,"children":85},{"className":84},[],[86],{"type":43,"value":87},"--no-interactive",{"type":43,"value":89}," and specify all flags directly.",{"type":37,"tag":50,"props":91,"children":92},{},[93,95,101],{"type":43,"value":94},"Run ",{"type":37,"tag":54,"props":96,"children":98},{"className":97},[],[99],{"type":43,"value":100},"nx import --help",{"type":43,"value":102}," for available options.",{"type":37,"tag":50,"props":104,"children":105},{},[106,108,114,116,122,124,130,131,137,139,145,147,152],{"type":43,"value":107},"Make sure the destination directory is empty before importing.\nEXAMPLE: target has ",{"type":37,"tag":54,"props":109,"children":111},{"className":110},[],[112],{"type":43,"value":113},"libs\u002Futils",{"type":43,"value":115}," and ",{"type":37,"tag":54,"props":117,"children":119},{"className":118},[],[120],{"type":43,"value":121},"libs\u002Fmodels",{"type":43,"value":123},"; source has ",{"type":37,"tag":54,"props":125,"children":127},{"className":126},[],[128],{"type":43,"value":129},"libs\u002Fui",{"type":43,"value":115},{"type":37,"tag":54,"props":132,"children":134},{"className":133},[],[135],{"type":43,"value":136},"libs\u002Fdata-access",{"type":43,"value":138}," — you cannot import ",{"type":37,"tag":54,"props":140,"children":142},{"className":141},[],[143],{"type":43,"value":144},"libs\u002F",{"type":43,"value":146}," into ",{"type":37,"tag":54,"props":148,"children":150},{"className":149},[],[151],{"type":43,"value":144},{"type":43,"value":153}," directly. Import each source library individually.",{"type":37,"tag":155,"props":156,"children":157},"p",{},[158],{"type":43,"value":159},"Primary docs:",{"type":37,"tag":46,"props":161,"children":162},{},[163,174],{"type":37,"tag":50,"props":164,"children":165},{},[166],{"type":37,"tag":167,"props":168,"children":172},"a",{"href":169,"rel":170},"https:\u002F\u002Fnx.dev\u002Fdocs\u002Fguides\u002Fadopting-nx\u002Fimport-project",[171],"nofollow",[173],{"type":43,"value":169},{"type":37,"tag":50,"props":175,"children":176},{},[177],{"type":37,"tag":167,"props":178,"children":181},{"href":179,"rel":180},"https:\u002F\u002Fnx.dev\u002Fdocs\u002Fguides\u002Fadopting-nx\u002Fpreserving-git-histories",[171],[182],{"type":43,"value":179},{"type":37,"tag":155,"props":184,"children":185},{},[186],{"type":43,"value":187},"Read the nx docs if you have the tools for it.",{"type":37,"tag":38,"props":189,"children":191},{"id":190},"import-strategy",[192],{"type":43,"value":193},"Import Strategy",{"type":37,"tag":155,"props":195,"children":196},{},[197,203,205,211],{"type":37,"tag":198,"props":199,"children":200},"strong",{},[201],{"type":43,"value":202},"Subdirectory-at-a-time",{"type":43,"value":204}," (",{"type":37,"tag":54,"props":206,"children":208},{"className":207},[],[209],{"type":43,"value":210},"nx import \u003Csource> apps --source=apps",{"type":43,"value":212},"):",{"type":37,"tag":46,"props":214,"children":215},{},[216,226,231],{"type":37,"tag":50,"props":217,"children":218},{},[219,224],{"type":37,"tag":198,"props":220,"children":221},{},[222],{"type":43,"value":223},"Recommended for monorepo sources",{"type":43,"value":225}," — files land at top level, no redundant config",{"type":37,"tag":50,"props":227,"children":228},{},[229],{"type":43,"value":230},"Caveats: multiple import commands (separate merge commits each); dest must not have conflicting directories; root configs (deps, plugins, targetDefaults) not imported",{"type":37,"tag":50,"props":232,"children":233},{},[234,239,241,247],{"type":37,"tag":198,"props":235,"children":236},{},[237],{"type":43,"value":238},"Directory conflicts",{"type":43,"value":240},": Import into alternate-named dir (e.g. ",{"type":37,"tag":54,"props":242,"children":244},{"className":243},[],[245],{"type":43,"value":246},"imported-apps\u002F",{"type":43,"value":248},"), then rename",{"type":37,"tag":155,"props":250,"children":251},{},[252,257,258,264],{"type":37,"tag":198,"props":253,"children":254},{},[255],{"type":43,"value":256},"Whole repo",{"type":43,"value":204},{"type":37,"tag":54,"props":259,"children":261},{"className":260},[],[262],{"type":43,"value":263},"nx import \u003Csource> imported --source=.",{"type":43,"value":212},{"type":37,"tag":46,"props":266,"children":267},{},[268,278,298],{"type":37,"tag":50,"props":269,"children":270},{},[271,276],{"type":37,"tag":198,"props":272,"children":273},{},[274],{"type":43,"value":275},"Only for non-monorepo sources",{"type":43,"value":277}," (single-project repos)",{"type":37,"tag":50,"props":279,"children":280},{},[281,283,289,290,296],{"type":43,"value":282},"For monorepos, creates messy nested config (",{"type":37,"tag":54,"props":284,"children":286},{"className":285},[],[287],{"type":43,"value":288},"imported\u002Fnx.json",{"type":43,"value":74},{"type":37,"tag":54,"props":291,"children":293},{"className":292},[],[294],{"type":43,"value":295},"imported\u002Ftsconfig.base.json",{"type":43,"value":297},", etc.)",{"type":37,"tag":50,"props":299,"children":300},{},[301,303,309],{"type":43,"value":302},"If you must: keep imported ",{"type":37,"tag":54,"props":304,"children":306},{"className":305},[],[307],{"type":43,"value":308},"tsconfig.base.json",{"type":43,"value":310}," (projects extend it), prefix workspace globs and executor paths",{"type":37,"tag":312,"props":313,"children":315},"h3",{"id":314},"directory-conventions",[316],{"type":43,"value":317},"Directory Conventions",{"type":37,"tag":46,"props":319,"children":320},{},[321,360],{"type":37,"tag":50,"props":322,"children":323},{},[324,329,331,336,338,344,346,351,352,358],{"type":37,"tag":198,"props":325,"children":326},{},[327],{"type":43,"value":328},"Always prefer the destination's existing conventions.",{"type":43,"value":330}," Source uses ",{"type":37,"tag":54,"props":332,"children":334},{"className":333},[],[335],{"type":43,"value":144},{"type":43,"value":337},"but dest uses ",{"type":37,"tag":54,"props":339,"children":341},{"className":340},[],[342],{"type":43,"value":343},"packages\u002F",{"type":43,"value":345},"? Import into ",{"type":37,"tag":54,"props":347,"children":349},{"className":348},[],[350],{"type":43,"value":343},{"type":43,"value":204},{"type":37,"tag":54,"props":353,"children":355},{"className":354},[],[356],{"type":43,"value":357},"nx import \u003Csource> packages\u002Ffoo --source=libs\u002Ffoo",{"type":43,"value":359},").",{"type":37,"tag":50,"props":361,"children":362},{},[363],{"type":43,"value":364},"If dest has no convention (empty workspace), ask the user.",{"type":37,"tag":312,"props":366,"children":368},{"id":367},"application-vs-library-detection",[369],{"type":43,"value":370},"Application vs Library Detection",{"type":37,"tag":155,"props":372,"children":373},{},[374,376,381,383,388],{"type":43,"value":375},"Before importing, identify whether the source is an ",{"type":37,"tag":198,"props":377,"children":378},{},[379],{"type":43,"value":380},"application",{"type":43,"value":382}," or a ",{"type":37,"tag":198,"props":384,"children":385},{},[386],{"type":43,"value":387},"library",{"type":43,"value":389},":",{"type":37,"tag":46,"props":391,"children":392},{},[393,560],{"type":37,"tag":50,"props":394,"children":395},{},[396,401,403],{"type":37,"tag":198,"props":397,"children":398},{},[399],{"type":43,"value":400},"Applications",{"type":43,"value":402},": Deployable end products. Common indicators:\n",{"type":37,"tag":46,"props":404,"children":405},{},[406,432,456,513,550],{"type":37,"tag":50,"props":407,"children":408},{},[409,415,417,423,424,430],{"type":37,"tag":410,"props":411,"children":412},"em",{},[413],{"type":43,"value":414},"Frontend",{"type":43,"value":416},": ",{"type":37,"tag":54,"props":418,"children":420},{"className":419},[],[421],{"type":43,"value":422},"next.config.*",{"type":43,"value":74},{"type":37,"tag":54,"props":425,"children":427},{"className":426},[],[428],{"type":43,"value":429},"vite.config.*",{"type":43,"value":431}," with a build entry point, framework-specific app scaffolding (CRA, Angular CLI app, etc.)",{"type":37,"tag":50,"props":433,"children":434},{},[435,440,442,448,450],{"type":37,"tag":410,"props":436,"children":437},{},[438],{"type":43,"value":439},"Backend (Node.js)",{"type":43,"value":441},": Express\u002FFastify\u002FNestJS server entrypoint, no ",{"type":37,"tag":54,"props":443,"children":445},{"className":444},[],[446],{"type":43,"value":447},"\"exports\"",{"type":43,"value":449}," field in ",{"type":37,"tag":54,"props":451,"children":453},{"className":452},[],[454],{"type":43,"value":455},"package.json",{"type":37,"tag":50,"props":457,"children":458},{},[459,464,466,472,474,480,482,488,490,496,498,503,505,511],{"type":37,"tag":410,"props":460,"children":461},{},[462],{"type":43,"value":463},"JVM",{"type":43,"value":465},": Maven ",{"type":37,"tag":54,"props":467,"children":469},{"className":468},[],[470],{"type":43,"value":471},"pom.xml",{"type":43,"value":473}," with ",{"type":37,"tag":54,"props":475,"children":477},{"className":476},[],[478],{"type":43,"value":479},"\u003Cpackaging>jar\u003C\u002Fpackaging>",{"type":43,"value":481}," or ",{"type":37,"tag":54,"props":483,"children":485},{"className":484},[],[486],{"type":43,"value":487},"\u003Cpackaging>war\u003C\u002Fpackaging>",{"type":43,"value":489}," and a ",{"type":37,"tag":54,"props":491,"children":493},{"className":492},[],[494],{"type":43,"value":495},"main",{"type":43,"value":497}," class; Gradle ",{"type":37,"tag":54,"props":499,"children":501},{"className":500},[],[502],{"type":43,"value":380},{"type":43,"value":504}," plugin or ",{"type":37,"tag":54,"props":506,"children":508},{"className":507},[],[509],{"type":43,"value":510},"mainClass",{"type":43,"value":512}," setting",{"type":37,"tag":50,"props":514,"children":515},{},[516,521,522,528,530,536,537,543,544],{"type":37,"tag":410,"props":517,"children":518},{},[519],{"type":43,"value":520},".NET",{"type":43,"value":416},{"type":37,"tag":54,"props":523,"children":525},{"className":524},[],[526],{"type":43,"value":527},".csproj",{"type":43,"value":529},"\u002F",{"type":37,"tag":54,"props":531,"children":533},{"className":532},[],[534],{"type":43,"value":535},".fsproj",{"type":43,"value":473},{"type":37,"tag":54,"props":538,"children":540},{"className":539},[],[541],{"type":43,"value":542},"\u003COutputType>Exe\u003C\u002FOutputType>",{"type":43,"value":481},{"type":37,"tag":54,"props":545,"children":547},{"className":546},[],[548],{"type":43,"value":549},"\u003COutputType>WinExe\u003C\u002FOutputType>",{"type":37,"tag":50,"props":551,"children":552},{},[553,558],{"type":37,"tag":410,"props":554,"children":555},{},[556],{"type":43,"value":557},"General",{"type":43,"value":559},": Dockerfile, a runnable entrypoint, no public API surface intended for import by other projects",{"type":37,"tag":50,"props":561,"children":562},{},[563,568,570,576,577,582,584,589,591,597],{"type":37,"tag":198,"props":564,"children":565},{},[566],{"type":43,"value":567},"Libraries",{"type":43,"value":569},": Reusable packages consumed by other projects. Common indicators: ",{"type":37,"tag":54,"props":571,"children":573},{"className":572},[],[574],{"type":43,"value":575},"\"main\"",{"type":43,"value":529},{"type":37,"tag":54,"props":578,"children":580},{"className":579},[],[581],{"type":43,"value":447},{"type":43,"value":583}," in ",{"type":37,"tag":54,"props":585,"children":587},{"className":586},[],[588],{"type":43,"value":455},{"type":43,"value":590},", Maven\u002FGradle packaging as a library jar, .NET ",{"type":37,"tag":54,"props":592,"children":594},{"className":593},[],[595],{"type":43,"value":596},"\u003COutputType>Library\u003C\u002FOutputType>",{"type":43,"value":598},", named exports intended for import by other packages.",{"type":37,"tag":155,"props":600,"children":601},{},[602,607],{"type":37,"tag":198,"props":603,"children":604},{},[605],{"type":43,"value":606},"Destination directory rules",{"type":43,"value":389},{"type":37,"tag":46,"props":609,"children":610},{},[611,687],{"type":37,"tag":50,"props":612,"children":613},{},[614,616,622,624,630,631,637,639,644,646,652,654],{"type":43,"value":615},"Applications → ",{"type":37,"tag":54,"props":617,"children":619},{"className":618},[],[620],{"type":43,"value":621},"apps\u002F\u003Cname>",{"type":43,"value":623},". Check workspace globs (e.g. ",{"type":37,"tag":54,"props":625,"children":627},{"className":626},[],[628],{"type":43,"value":629},"pnpm-workspace.yaml",{"type":43,"value":74},{"type":37,"tag":54,"props":632,"children":634},{"className":633},[],[635],{"type":43,"value":636},"workspaces",{"type":43,"value":638}," in root ",{"type":37,"tag":54,"props":640,"children":642},{"className":641},[],[643],{"type":43,"value":455},{"type":43,"value":645},") for an existing ",{"type":37,"tag":54,"props":647,"children":649},{"className":648},[],[650],{"type":43,"value":651},"apps\u002F*",{"type":43,"value":653}," entry.\n",{"type":37,"tag":46,"props":655,"children":656},{},[657,676],{"type":37,"tag":50,"props":658,"children":659},{},[660,662,667,669,674],{"type":43,"value":661},"If ",{"type":37,"tag":54,"props":663,"children":665},{"className":664},[],[666],{"type":43,"value":651},{"type":43,"value":668}," is ",{"type":37,"tag":198,"props":670,"children":671},{},[672],{"type":43,"value":673},"not",{"type":43,"value":675}," present, add it before importing: update the workspace glob config and commit (or stage) the change.",{"type":37,"tag":50,"props":677,"children":678},{},[679,681],{"type":43,"value":680},"Example: ",{"type":37,"tag":54,"props":682,"children":684},{"className":683},[],[685],{"type":43,"value":686},"nx import \u003Csource> apps\u002Fmy-app --source=packages\u002Fmy-app",{"type":37,"tag":50,"props":688,"children":689},{},[690,692,697,698,703],{"type":43,"value":691},"Libraries → follow the dest's existing convention (",{"type":37,"tag":54,"props":693,"children":695},{"className":694},[],[696],{"type":43,"value":343},{"type":43,"value":74},{"type":37,"tag":54,"props":699,"children":701},{"className":700},[],[702],{"type":43,"value":144},{"type":43,"value":704},", etc.).",{"type":37,"tag":38,"props":706,"children":708},{"id":707},"common-issues",[709],{"type":43,"value":710},"Common Issues",{"type":37,"tag":312,"props":712,"children":714},{"id":713},"pnpm-workspace-globs-critical",[715],{"type":43,"value":716},"pnpm Workspace Globs (Critical)",{"type":37,"tag":155,"props":718,"children":719},{},[720,725,727,733,735,740,741,746,748,754],{"type":37,"tag":54,"props":721,"children":723},{"className":722},[],[724],{"type":43,"value":59},{"type":43,"value":726}," adds the imported directory itself (e.g. ",{"type":37,"tag":54,"props":728,"children":730},{"className":729},[],[731],{"type":43,"value":732},"apps",{"type":43,"value":734},") to ",{"type":37,"tag":54,"props":736,"children":738},{"className":737},[],[739],{"type":43,"value":629},{"type":43,"value":74},{"type":37,"tag":198,"props":742,"children":743},{},[744],{"type":43,"value":745},"NOT",{"type":43,"value":747}," glob patterns for packages within it. Cross-package imports will fail with ",{"type":37,"tag":54,"props":749,"children":751},{"className":750},[],[752],{"type":43,"value":753},"Cannot find module",{"type":43,"value":755},".",{"type":37,"tag":155,"props":757,"children":758},{},[759,764,766,771,772,778,780,786],{"type":37,"tag":198,"props":760,"children":761},{},[762],{"type":43,"value":763},"Fix",{"type":43,"value":765},": Replace with proper globs from the source config (e.g. ",{"type":37,"tag":54,"props":767,"children":769},{"className":768},[],[770],{"type":43,"value":651},{"type":43,"value":74},{"type":37,"tag":54,"props":773,"children":775},{"className":774},[],[776],{"type":43,"value":777},"libs\u002Fshared\u002F*",{"type":43,"value":779},"), then ",{"type":37,"tag":54,"props":781,"children":783},{"className":782},[],[784],{"type":43,"value":785},"pnpm install",{"type":43,"value":755},{"type":37,"tag":312,"props":788,"children":790},{"id":789},"root-dependencies-and-config-not-imported-critical",[791],{"type":43,"value":792},"Root Dependencies and Config Not Imported (Critical)",{"type":37,"tag":155,"props":794,"children":795},{},[796,801,803,807],{"type":37,"tag":54,"props":797,"children":799},{"className":798},[],[800],{"type":43,"value":59},{"type":43,"value":802}," does ",{"type":37,"tag":198,"props":804,"children":805},{},[806],{"type":43,"value":745},{"type":43,"value":808}," merge from the source's root:",{"type":37,"tag":46,"props":810,"children":811},{},[812,835,861,885],{"type":37,"tag":50,"props":813,"children":814},{},[815,821,822,828,830],{"type":37,"tag":54,"props":816,"children":818},{"className":817},[],[819],{"type":43,"value":820},"dependencies",{"type":43,"value":529},{"type":37,"tag":54,"props":823,"children":825},{"className":824},[],[826],{"type":43,"value":827},"devDependencies",{"type":43,"value":829}," from ",{"type":37,"tag":54,"props":831,"children":833},{"className":832},[],[834],{"type":43,"value":455},{"type":37,"tag":50,"props":836,"children":837},{},[838,844,845,851,853,859],{"type":37,"tag":54,"props":839,"children":841},{"className":840},[],[842],{"type":43,"value":843},"targetDefaults",{"type":43,"value":829},{"type":37,"tag":54,"props":846,"children":848},{"className":847},[],[849],{"type":43,"value":850},"nx.json",{"type":43,"value":852}," (e.g. ",{"type":37,"tag":54,"props":854,"children":856},{"className":855},[],[857],{"type":43,"value":858},"\"@nx\u002Fesbuild:esbuild\": { \"dependsOn\": [\"^build\"] }",{"type":43,"value":860}," — critical for build ordering)",{"type":37,"tag":50,"props":862,"children":863},{},[864,870,871,876,877,883],{"type":37,"tag":54,"props":865,"children":867},{"className":866},[],[868],{"type":43,"value":869},"namedInputs",{"type":43,"value":829},{"type":37,"tag":54,"props":872,"children":874},{"className":873},[],[875],{"type":43,"value":850},{"type":43,"value":852},{"type":37,"tag":54,"props":878,"children":880},{"className":879},[],[881],{"type":43,"value":882},"production",{"type":43,"value":884}," exclusion patterns for test files)",{"type":37,"tag":50,"props":886,"children":887},{},[888,890],{"type":43,"value":889},"Plugin configurations from ",{"type":37,"tag":54,"props":891,"children":893},{"className":892},[],[894],{"type":43,"value":850},{"type":37,"tag":155,"props":896,"children":897},{},[898,902,904,909,911,916,918,923,924,929],{"type":37,"tag":198,"props":899,"children":900},{},[901],{"type":43,"value":763},{"type":43,"value":903},": Diff source and dest ",{"type":37,"tag":54,"props":905,"children":907},{"className":906},[],[908],{"type":43,"value":455},{"type":43,"value":910}," + ",{"type":37,"tag":54,"props":912,"children":914},{"className":913},[],[915],{"type":43,"value":850},{"type":43,"value":917},". Add missing deps, merge relevant ",{"type":37,"tag":54,"props":919,"children":921},{"className":920},[],[922],{"type":43,"value":843},{"type":43,"value":115},{"type":37,"tag":54,"props":925,"children":927},{"className":926},[],[928],{"type":43,"value":869},{"type":43,"value":755},{"type":37,"tag":312,"props":931,"children":933},{"id":932},"typescript-project-references",[934],{"type":43,"value":935},"TypeScript Project References",{"type":37,"tag":155,"props":937,"children":938},{},[939,941,947,949,955,957,962],{"type":43,"value":940},"After import, run ",{"type":37,"tag":54,"props":942,"children":944},{"className":943},[],[945],{"type":43,"value":946},"nx sync --yes",{"type":43,"value":948},". If it reports nothing but typecheck still fails, ",{"type":37,"tag":54,"props":950,"children":952},{"className":951},[],[953],{"type":43,"value":954},"nx reset",{"type":43,"value":956}," first, then ",{"type":37,"tag":54,"props":958,"children":960},{"className":959},[],[961],{"type":43,"value":946},{"type":43,"value":963}," again.",{"type":37,"tag":312,"props":965,"children":967},{"id":966},"explicit-executor-path-fixups",[968],{"type":43,"value":969},"Explicit Executor Path Fixups",{"type":37,"tag":155,"props":971,"children":972},{},[973,975,981,983,988,989,995,996,1002,1003,1009,1010,1016],{"type":43,"value":974},"Inferred targets (via Nx plugins) resolve config relative to project root — no changes needed. Explicit executor targets (e.g. ",{"type":37,"tag":54,"props":976,"children":978},{"className":977},[],[979],{"type":43,"value":980},"@nx\u002Fesbuild:esbuild",{"type":43,"value":982},") have workspace-root-relative paths (",{"type":37,"tag":54,"props":984,"children":986},{"className":985},[],[987],{"type":43,"value":495},{"type":43,"value":74},{"type":37,"tag":54,"props":990,"children":992},{"className":991},[],[993],{"type":43,"value":994},"outputPath",{"type":43,"value":74},{"type":37,"tag":54,"props":997,"children":999},{"className":998},[],[1000],{"type":43,"value":1001},"tsConfig",{"type":43,"value":74},{"type":37,"tag":54,"props":1004,"children":1006},{"className":1005},[],[1007],{"type":43,"value":1008},"assets",{"type":43,"value":74},{"type":37,"tag":54,"props":1011,"children":1013},{"className":1012},[],[1014],{"type":43,"value":1015},"sourceRoot",{"type":43,"value":1017},") that must be prefixed with the import destination directory.",{"type":37,"tag":312,"props":1019,"children":1021},{"id":1020},"plugin-detection",[1022],{"type":43,"value":1023},"Plugin Detection",{"type":37,"tag":46,"props":1025,"children":1026},{},[1027,1043,1083],{"type":37,"tag":50,"props":1028,"children":1029},{},[1030,1035,1036,1041],{"type":37,"tag":198,"props":1031,"children":1032},{},[1033],{"type":43,"value":1034},"Whole-repo import",{"type":43,"value":416},{"type":37,"tag":54,"props":1037,"children":1039},{"className":1038},[],[1040],{"type":43,"value":59},{"type":43,"value":1042}," detects and offers to install plugins. Accept them.",{"type":37,"tag":50,"props":1044,"children":1045},{},[1046,1051,1053,1059,1061,1067,1068,1074,1076,1082],{"type":37,"tag":198,"props":1047,"children":1048},{},[1049],{"type":43,"value":1050},"Subdirectory import",{"type":43,"value":1052},": Plugins NOT auto-detected. Manually add with ",{"type":37,"tag":54,"props":1054,"children":1056},{"className":1055},[],[1057],{"type":43,"value":1058},"npx nx add @nx\u002FPLUGIN",{"type":43,"value":1060},". Check ",{"type":37,"tag":54,"props":1062,"children":1064},{"className":1063},[],[1065],{"type":43,"value":1066},"include",{"type":43,"value":529},{"type":37,"tag":54,"props":1069,"children":1071},{"className":1070},[],[1072],{"type":43,"value":1073},"exclude",{"type":43,"value":1075}," patterns — defaults won't match alternate directories (e.g. ",{"type":37,"tag":54,"props":1077,"children":1079},{"className":1078},[],[1080],{"type":43,"value":1081},"apps-beta\u002F",{"type":43,"value":359},{"type":37,"tag":50,"props":1084,"children":1085},{},[1086,1087,1093],{"type":43,"value":94},{"type":37,"tag":54,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":43,"value":1092},"npx nx reset",{"type":43,"value":1094}," after any plugin config changes.",{"type":37,"tag":312,"props":1096,"children":1098},{"id":1097},"redundant-root-files-whole-repo-only",[1099],{"type":43,"value":1100},"Redundant Root Files (Whole-Repo Only)",{"type":37,"tag":155,"props":1102,"children":1103},{},[1104],{"type":43,"value":1105},"Whole-repo import brings ALL source root files into the dest subdirectory. Clean up:",{"type":37,"tag":46,"props":1107,"children":1108},{},[1109,1120,1130,1141,1157,1167],{"type":37,"tag":50,"props":1110,"children":1111},{},[1112,1118],{"type":37,"tag":54,"props":1113,"children":1115},{"className":1114},[],[1116],{"type":43,"value":1117},"pnpm-lock.yaml",{"type":43,"value":1119}," — stale; dest has its own lockfile",{"type":37,"tag":50,"props":1121,"children":1122},{},[1123,1128],{"type":37,"tag":54,"props":1124,"children":1126},{"className":1125},[],[1127],{"type":43,"value":629},{"type":43,"value":1129}," — source workspace config; conflicts with dest",{"type":37,"tag":50,"props":1131,"children":1132},{},[1133,1139],{"type":37,"tag":54,"props":1134,"children":1136},{"className":1135},[],[1137],{"type":43,"value":1138},"node_modules\u002F",{"type":43,"value":1140}," — stale symlinks pointing to source filesystem",{"type":37,"tag":50,"props":1142,"children":1143},{},[1144,1150,1152],{"type":37,"tag":54,"props":1145,"children":1147},{"className":1146},[],[1148],{"type":43,"value":1149},".gitignore",{"type":43,"value":1151}," — redundant with dest root ",{"type":37,"tag":54,"props":1153,"children":1155},{"className":1154},[],[1156],{"type":43,"value":1149},{"type":37,"tag":50,"props":1158,"children":1159},{},[1160,1165],{"type":37,"tag":54,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":43,"value":850},{"type":43,"value":1166}," — source Nx config; dest has its own",{"type":37,"tag":50,"props":1168,"children":1169},{},[1170,1176],{"type":37,"tag":54,"props":1171,"children":1173},{"className":1172},[],[1174],{"type":43,"value":1175},"README.md",{"type":43,"value":1177}," — optional; keep or remove",{"type":37,"tag":155,"props":1179,"children":1180},{},[1181,1186,1188,1193],{"type":37,"tag":198,"props":1182,"children":1183},{},[1184],{"type":43,"value":1185},"Don't blindly delete",{"type":43,"value":1187}," ",{"type":37,"tag":54,"props":1189,"children":1191},{"className":1190},[],[1192],{"type":43,"value":308},{"type":43,"value":1194}," — imported projects may extend it via relative paths.",{"type":37,"tag":312,"props":1196,"children":1198},{"id":1197},"root-eslint-config-missing-subdirectory-import",[1199],{"type":43,"value":1200},"Root ESLint Config Missing (Subdirectory Import)",{"type":37,"tag":155,"props":1202,"children":1203},{},[1204,1206,1212,1214,1220],{"type":43,"value":1205},"Subdirectory import doesn't bring the source's root ",{"type":37,"tag":54,"props":1207,"children":1209},{"className":1208},[],[1210],{"type":43,"value":1211},"eslint.config.mjs",{"type":43,"value":1213},", but project configs reference ",{"type":37,"tag":54,"props":1215,"children":1217},{"className":1216},[],[1218],{"type":43,"value":1219},"..\u002F..\u002Feslint.config.mjs",{"type":43,"value":755},{"type":37,"tag":155,"props":1222,"children":1223},{},[1224,1229],{"type":37,"tag":198,"props":1225,"children":1226},{},[1227],{"type":43,"value":1228},"Fix order",{"type":43,"value":389},{"type":37,"tag":1231,"props":1232,"children":1233},"ol",{},[1234,1247,1267],{"type":37,"tag":50,"props":1235,"children":1236},{},[1237,1239,1245],{"type":43,"value":1238},"Install ESLint deps first: ",{"type":37,"tag":54,"props":1240,"children":1242},{"className":1241},[],[1243],{"type":43,"value":1244},"pnpm add -wD eslint@^9 @nx\u002Feslint-plugin typescript-eslint",{"type":43,"value":1246}," (plus framework-specific plugins)",{"type":37,"tag":50,"props":1248,"children":1249},{},[1250,1252,1257,1259,1265],{"type":43,"value":1251},"Create root ",{"type":37,"tag":54,"props":1253,"children":1255},{"className":1254},[],[1256],{"type":43,"value":1211},{"type":43,"value":1258}," (copy from source or create with ",{"type":37,"tag":54,"props":1260,"children":1262},{"className":1261},[],[1263],{"type":43,"value":1264},"@nx\u002Feslint-plugin",{"type":43,"value":1266}," base rules)",{"type":37,"tag":50,"props":1268,"children":1269},{},[1270,1272,1278,1280],{"type":43,"value":1271},"Then ",{"type":37,"tag":54,"props":1273,"children":1275},{"className":1274},[],[1276],{"type":43,"value":1277},"npx nx add @nx\u002Feslint",{"type":43,"value":1279}," to register the plugin in ",{"type":37,"tag":54,"props":1281,"children":1283},{"className":1282},[],[1284],{"type":43,"value":850},{"type":37,"tag":155,"props":1286,"children":1287},{},[1288,1290,1296,1298,1303],{"type":43,"value":1289},"Install ",{"type":37,"tag":54,"props":1291,"children":1293},{"className":1292},[],[1294],{"type":43,"value":1295},"typescript-eslint",{"type":43,"value":1297}," explicitly — pnpm's strict hoisting won't auto-resolve this transitive dep of ",{"type":37,"tag":54,"props":1299,"children":1301},{"className":1300},[],[1302],{"type":43,"value":1264},{"type":43,"value":755},{"type":37,"tag":312,"props":1305,"children":1307},{"id":1306},"eslint-version-pinning-critical",[1308],{"type":43,"value":1309},"ESLint Version Pinning (Critical)",{"type":37,"tag":155,"props":1311,"children":1312},{},[1313,1318,1319,1325,1327,1333,1335,1341],{"type":37,"tag":198,"props":1314,"children":1315},{},[1316],{"type":43,"value":1317},"Pin ESLint to v9",{"type":43,"value":204},{"type":37,"tag":54,"props":1320,"children":1322},{"className":1321},[],[1323],{"type":43,"value":1324},"eslint@^9.0.0",{"type":43,"value":1326},"). ESLint 10 breaks ",{"type":37,"tag":54,"props":1328,"children":1330},{"className":1329},[],[1331],{"type":43,"value":1332},"@nx\u002Feslint",{"type":43,"value":1334}," and many plugins with cryptic errors like ",{"type":37,"tag":54,"props":1336,"children":1338},{"className":1337},[],[1339],{"type":43,"value":1340},"Cannot read properties of undefined (reading 'version')",{"type":43,"value":755},{"type":37,"tag":155,"props":1343,"children":1344},{},[1345,1350,1352,1358,1360,1366],{"type":37,"tag":54,"props":1346,"children":1348},{"className":1347},[],[1349],{"type":43,"value":1332},{"type":43,"value":1351}," may peer-depend on ESLint 8, causing the wrong version to resolve. If lint fails with ",{"type":37,"tag":54,"props":1353,"children":1355},{"className":1354},[],[1356],{"type":43,"value":1357},"Cannot read properties of undefined (reading 'allow')",{"type":43,"value":1359},", add ",{"type":37,"tag":54,"props":1361,"children":1363},{"className":1362},[],[1364],{"type":43,"value":1365},"pnpm.overrides",{"type":43,"value":389},{"type":37,"tag":1368,"props":1369,"children":1374},"pre",{"className":1370,"code":1371,"language":1372,"meta":1373,"style":1373},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"pnpm\": { \"overrides\": { \"eslint\": \"^9.0.0\" } } }\n","json","",[1375],{"type":37,"tag":54,"props":1376,"children":1377},{"__ignoreMap":1373},[1378],{"type":37,"tag":1379,"props":1380,"children":1383},"span",{"class":1381,"line":1382},"line",1,[1384,1390,1395,1401,1406,1410,1415,1419,1425,1429,1433,1437,1441,1447,1451,1455,1459,1465,1469,1474,1478],{"type":37,"tag":1379,"props":1385,"children":1387},{"style":1386},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1388],{"type":43,"value":1389},"{",{"type":37,"tag":1379,"props":1391,"children":1392},{"style":1386},[1393],{"type":43,"value":1394}," \"",{"type":37,"tag":1379,"props":1396,"children":1398},{"style":1397},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1399],{"type":43,"value":1400},"pnpm",{"type":37,"tag":1379,"props":1402,"children":1403},{"style":1386},[1404],{"type":43,"value":1405},"\"",{"type":37,"tag":1379,"props":1407,"children":1408},{"style":1386},[1409],{"type":43,"value":389},{"type":37,"tag":1379,"props":1411,"children":1412},{"style":1386},[1413],{"type":43,"value":1414}," {",{"type":37,"tag":1379,"props":1416,"children":1417},{"style":1386},[1418],{"type":43,"value":1394},{"type":37,"tag":1379,"props":1420,"children":1422},{"style":1421},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1423],{"type":43,"value":1424},"overrides",{"type":37,"tag":1379,"props":1426,"children":1427},{"style":1386},[1428],{"type":43,"value":1405},{"type":37,"tag":1379,"props":1430,"children":1431},{"style":1386},[1432],{"type":43,"value":389},{"type":37,"tag":1379,"props":1434,"children":1435},{"style":1386},[1436],{"type":43,"value":1414},{"type":37,"tag":1379,"props":1438,"children":1439},{"style":1386},[1440],{"type":43,"value":1394},{"type":37,"tag":1379,"props":1442,"children":1444},{"style":1443},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1445],{"type":43,"value":1446},"eslint",{"type":37,"tag":1379,"props":1448,"children":1449},{"style":1386},[1450],{"type":43,"value":1405},{"type":37,"tag":1379,"props":1452,"children":1453},{"style":1386},[1454],{"type":43,"value":389},{"type":37,"tag":1379,"props":1456,"children":1457},{"style":1386},[1458],{"type":43,"value":1394},{"type":37,"tag":1379,"props":1460,"children":1462},{"style":1461},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1463],{"type":43,"value":1464},"^9.0.0",{"type":37,"tag":1379,"props":1466,"children":1467},{"style":1386},[1468],{"type":43,"value":1405},{"type":37,"tag":1379,"props":1470,"children":1471},{"style":1386},[1472],{"type":43,"value":1473}," }",{"type":37,"tag":1379,"props":1475,"children":1476},{"style":1386},[1477],{"type":43,"value":1473},{"type":37,"tag":1379,"props":1479,"children":1480},{"style":1386},[1481],{"type":43,"value":1482}," }\n",{"type":37,"tag":312,"props":1484,"children":1486},{"id":1485},"dependency-version-conflicts",[1487],{"type":43,"value":1488},"Dependency Version Conflicts",{"type":37,"tag":155,"props":1490,"children":1491},{},[1492,1494,1500,1501,1506,1508,1513],{"type":43,"value":1493},"After import, compare key deps (",{"type":37,"tag":54,"props":1495,"children":1497},{"className":1496},[],[1498],{"type":43,"value":1499},"typescript",{"type":43,"value":74},{"type":37,"tag":54,"props":1502,"children":1504},{"className":1503},[],[1505],{"type":43,"value":1446},{"type":43,"value":1507},", 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 ",{"type":37,"tag":54,"props":1509,"children":1511},{"className":1510},[],[1512],{"type":43,"value":1365},{"type":43,"value":1514}," to enforce single-version policy if desired.",{"type":37,"tag":312,"props":1516,"children":1518},{"id":1517},"module-boundaries",[1519],{"type":43,"value":1520},"Module Boundaries",{"type":37,"tag":155,"props":1522,"children":1523},{},[1524,1526,1532,1534,1540],{"type":43,"value":1525},"Imported projects may lack ",{"type":37,"tag":54,"props":1527,"children":1529},{"className":1528},[],[1530],{"type":43,"value":1531},"tags",{"type":43,"value":1533},". Add tags or update ",{"type":37,"tag":54,"props":1535,"children":1537},{"className":1536},[],[1538],{"type":43,"value":1539},"@nx\u002Fenforce-module-boundaries",{"type":43,"value":1541}," rules.",{"type":37,"tag":312,"props":1543,"children":1545},{"id":1544},"project-name-collisions-multi-import",[1546],{"type":43,"value":1547},"Project Name Collisions (Multi-Import)",{"type":37,"tag":155,"props":1549,"children":1550},{},[1551,1553,1559,1560,1565,1567,1573,1575,1579,1581,1587,1589,1595,1597,1602,1604,1609],{"type":43,"value":1552},"Same ",{"type":37,"tag":54,"props":1554,"children":1556},{"className":1555},[],[1557],{"type":43,"value":1558},"name",{"type":43,"value":583},{"type":37,"tag":54,"props":1561,"children":1563},{"className":1562},[],[1564],{"type":43,"value":455},{"type":43,"value":1566}," across source and dest causes ",{"type":37,"tag":54,"props":1568,"children":1570},{"className":1569},[],[1571],{"type":43,"value":1572},"MultipleProjectsWithSameNameError",{"type":43,"value":1574},". ",{"type":37,"tag":198,"props":1576,"children":1577},{},[1578],{"type":43,"value":763},{"type":43,"value":1580},": Rename conflicting names (e.g. ",{"type":37,"tag":54,"props":1582,"children":1584},{"className":1583},[],[1585],{"type":43,"value":1586},"@org\u002Fapi",{"type":43,"value":1588}," → ",{"type":37,"tag":54,"props":1590,"children":1592},{"className":1591},[],[1593],{"type":43,"value":1594},"@org\u002Fteama-api",{"type":43,"value":1596},"), update all dep references and import statements, ",{"type":37,"tag":54,"props":1598,"children":1600},{"className":1599},[],[1601],{"type":43,"value":785},{"type":43,"value":1603},". The root ",{"type":37,"tag":54,"props":1605,"children":1607},{"className":1606},[],[1608],{"type":43,"value":455},{"type":43,"value":1610}," of each imported repo also becomes a project — rename those too.",{"type":37,"tag":312,"props":1612,"children":1614},{"id":1613},"workspace-dep-import-ordering",[1615],{"type":43,"value":1616},"Workspace Dep Import Ordering",{"type":37,"tag":155,"props":1618,"children":1619},{},[1620,1625,1627,1632,1634,1640,1642,1646,1648,1654],{"type":37,"tag":54,"props":1621,"children":1623},{"className":1622},[],[1624],{"type":43,"value":785},{"type":43,"value":1626}," fails during ",{"type":37,"tag":54,"props":1628,"children":1630},{"className":1629},[],[1631],{"type":43,"value":59},{"type":43,"value":1633}," if a ",{"type":37,"tag":54,"props":1635,"children":1637},{"className":1636},[],[1638],{"type":43,"value":1639},"\"workspace:*\"",{"type":43,"value":1641}," dependency hasn't been imported yet. File operations still succeed. ",{"type":37,"tag":198,"props":1643,"children":1644},{},[1645],{"type":43,"value":763},{"type":43,"value":1647},": Import all projects first, then ",{"type":37,"tag":54,"props":1649,"children":1651},{"className":1650},[],[1652],{"type":43,"value":1653},"pnpm install --no-frozen-lockfile",{"type":43,"value":755},{"type":37,"tag":312,"props":1656,"children":1658},{"id":1657},"gitkeep-blocking-subdirectory-import",[1659,1665],{"type":37,"tag":54,"props":1660,"children":1662},{"className":1661},[],[1663],{"type":43,"value":1664},".gitkeep",{"type":43,"value":1666}," Blocking Subdirectory Import",{"type":37,"tag":155,"props":1668,"children":1669},{},[1670,1672,1678],{"type":43,"value":1671},"The TS preset creates ",{"type":37,"tag":54,"props":1673,"children":1675},{"className":1674},[],[1676],{"type":43,"value":1677},"packages\u002F.gitkeep",{"type":43,"value":1679},". Remove it and commit before importing.",{"type":37,"tag":312,"props":1681,"children":1683},{"id":1682},"frontend-tsconfig-base-settings-critical",[1684],{"type":43,"value":1685},"Frontend tsconfig Base Settings (Critical)",{"type":37,"tag":155,"props":1687,"children":1688},{},[1689,1691,1697,1698,1704,1705,1711,1713,1718],{"type":43,"value":1690},"The TS preset defaults (",{"type":37,"tag":54,"props":1692,"children":1694},{"className":1693},[],[1695],{"type":43,"value":1696},"module: \"nodenext\"",{"type":43,"value":74},{"type":37,"tag":54,"props":1699,"children":1701},{"className":1700},[],[1702],{"type":43,"value":1703},"moduleResolution: \"nodenext\"",{"type":43,"value":74},{"type":37,"tag":54,"props":1706,"children":1708},{"className":1707},[],[1709],{"type":43,"value":1710},"lib: [\"es2022\"]",{"type":43,"value":1712},") are incompatible with frontend frameworks (React, Next.js, Vue, Vite). After importing frontend projects, verify the dest root ",{"type":37,"tag":54,"props":1714,"children":1716},{"className":1715},[],[1717],{"type":43,"value":308},{"type":43,"value":389},{"type":37,"tag":46,"props":1720,"children":1721},{},[1722,1752,1778,1807],{"type":37,"tag":50,"props":1723,"children":1724},{},[1725,1734,1736,1742,1744,1750],{"type":37,"tag":198,"props":1726,"children":1727},{},[1728],{"type":37,"tag":54,"props":1729,"children":1731},{"className":1730},[],[1732],{"type":43,"value":1733},"moduleResolution",{"type":43,"value":1735},": Must be ",{"type":37,"tag":54,"props":1737,"children":1739},{"className":1738},[],[1740],{"type":43,"value":1741},"\"bundler\"",{"type":43,"value":1743}," (not ",{"type":37,"tag":54,"props":1745,"children":1747},{"className":1746},[],[1748],{"type":43,"value":1749},"\"nodenext\"",{"type":43,"value":1751},")",{"type":37,"tag":50,"props":1753,"children":1754},{},[1755,1764,1765,1771,1772,1777],{"type":37,"tag":198,"props":1756,"children":1757},{},[1758],{"type":37,"tag":54,"props":1759,"children":1761},{"className":1760},[],[1762],{"type":43,"value":1763},"module",{"type":43,"value":1735},{"type":37,"tag":54,"props":1766,"children":1768},{"className":1767},[],[1769],{"type":43,"value":1770},"\"esnext\"",{"type":43,"value":1743},{"type":37,"tag":54,"props":1773,"children":1775},{"className":1774},[],[1776],{"type":43,"value":1749},{"type":43,"value":1751},{"type":37,"tag":50,"props":1779,"children":1780},{},[1781,1790,1792,1798,1799,1805],{"type":37,"tag":198,"props":1782,"children":1783},{},[1784],{"type":37,"tag":54,"props":1785,"children":1787},{"className":1786},[],[1788],{"type":43,"value":1789},"lib",{"type":43,"value":1791},": Must include ",{"type":37,"tag":54,"props":1793,"children":1795},{"className":1794},[],[1796],{"type":43,"value":1797},"\"dom\"",{"type":43,"value":115},{"type":37,"tag":54,"props":1800,"children":1802},{"className":1801},[],[1803],{"type":43,"value":1804},"\"dom.iterable\"",{"type":43,"value":1806}," (frontend projects need these)",{"type":37,"tag":50,"props":1808,"children":1809},{},[1810,1819,1820,1826],{"type":37,"tag":198,"props":1811,"children":1812},{},[1813],{"type":37,"tag":54,"props":1814,"children":1816},{"className":1815},[],[1817],{"type":43,"value":1818},"jsx",{"type":43,"value":416},{"type":37,"tag":54,"props":1821,"children":1823},{"className":1822},[],[1824],{"type":43,"value":1825},"\"react-jsx\"",{"type":43,"value":1827}," for React-only workspaces, per-project for mixed frameworks",{"type":37,"tag":155,"props":1829,"children":1830},{},[1831,1833,1838,1840,1845,1847,1852],{"type":43,"value":1832},"For ",{"type":37,"tag":198,"props":1834,"children":1835},{},[1836],{"type":43,"value":1837},"subdirectory imports",{"type":43,"value":1839},", the dest root tsconfig is authoritative — update it. For ",{"type":37,"tag":198,"props":1841,"children":1842},{},[1843],{"type":43,"value":1844},"whole-repo imports",{"type":43,"value":1846},", imported projects may extend their own nested ",{"type":37,"tag":54,"props":1848,"children":1850},{"className":1849},[],[1851],{"type":43,"value":308},{"type":43,"value":1853},", making this less critical.",{"type":37,"tag":155,"props":1855,"children":1856},{},[1857,1859,1865],{"type":43,"value":1858},"If the dest also has backend projects needing ",{"type":37,"tag":54,"props":1860,"children":1862},{"className":1861},[],[1863],{"type":43,"value":1864},"nodenext",{"type":43,"value":1866},", use per-project overrides instead of changing the root.",{"type":37,"tag":155,"props":1868,"children":1869},{},[1870,1875,1877,1882,1884,1889,1891,1897,1898,1904,1905,1911,1913,1918],{"type":37,"tag":198,"props":1871,"children":1872},{},[1873],{"type":43,"value":1874},"Gotcha",{"type":43,"value":1876},": TypeScript does NOT merge ",{"type":37,"tag":54,"props":1878,"children":1880},{"className":1879},[],[1881],{"type":43,"value":1789},{"type":43,"value":1883}," arrays — a project-level override ",{"type":37,"tag":198,"props":1885,"children":1886},{},[1887],{"type":43,"value":1888},"replaces",{"type":43,"value":1890}," the base array entirely. Always include all needed entries (e.g. ",{"type":37,"tag":54,"props":1892,"children":1894},{"className":1893},[],[1895],{"type":43,"value":1896},"es2022",{"type":43,"value":74},{"type":37,"tag":54,"props":1899,"children":1901},{"className":1900},[],[1902],{"type":43,"value":1903},"dom",{"type":43,"value":74},{"type":37,"tag":54,"props":1906,"children":1908},{"className":1907},[],[1909],{"type":43,"value":1910},"dom.iterable",{"type":43,"value":1912},") in any project-level ",{"type":37,"tag":54,"props":1914,"children":1916},{"className":1915},[],[1917],{"type":43,"value":1789},{"type":43,"value":755},{"type":37,"tag":312,"props":1920,"children":1922},{"id":1921},"nxreact-typings-for-libraries",[1923,1929],{"type":37,"tag":54,"props":1924,"children":1926},{"className":1925},[],[1927],{"type":43,"value":1928},"@nx\u002Freact",{"type":43,"value":1930}," Typings for Libraries",{"type":37,"tag":155,"props":1932,"children":1933},{},[1934,1936,1942,1944,1950,1951,1957,1959,1965,1967,1973,1975,1980],{"type":43,"value":1935},"React libraries generated with ",{"type":37,"tag":54,"props":1937,"children":1939},{"className":1938},[],[1940],{"type":43,"value":1941},"@nx\u002Freact:library",{"type":43,"value":1943}," reference ",{"type":37,"tag":54,"props":1945,"children":1947},{"className":1946},[],[1948],{"type":43,"value":1949},"@nx\u002Freact\u002Ftypings\u002Fcssmodule.d.ts",{"type":43,"value":115},{"type":37,"tag":54,"props":1952,"children":1954},{"className":1953},[],[1955],{"type":43,"value":1956},"@nx\u002Freact\u002Ftypings\u002Fimage.d.ts",{"type":43,"value":1958}," in their tsconfig ",{"type":37,"tag":54,"props":1960,"children":1962},{"className":1961},[],[1963],{"type":43,"value":1964},"types",{"type":43,"value":1966},". These fail with ",{"type":37,"tag":54,"props":1968,"children":1970},{"className":1969},[],[1971],{"type":43,"value":1972},"Cannot find type definition file",{"type":43,"value":1974}," unless ",{"type":37,"tag":54,"props":1976,"children":1978},{"className":1977},[],[1979],{"type":43,"value":1928},{"type":43,"value":1981}," is installed in the dest workspace.",{"type":37,"tag":155,"props":1983,"children":1984},{},[1985,1989,1990],{"type":37,"tag":198,"props":1986,"children":1987},{},[1988],{"type":43,"value":763},{"type":43,"value":416},{"type":37,"tag":54,"props":1991,"children":1993},{"className":1992},[],[1994],{"type":43,"value":1995},"pnpm add -wD @nx\u002Freact",{"type":37,"tag":312,"props":1997,"children":1999},{"id":1998},"jest-preset-missing-subdirectory-import",[2000],{"type":43,"value":2001},"Jest Preset Missing (Subdirectory Import)",{"type":37,"tag":155,"props":2003,"children":2004},{},[2005,2007,2013,2015,2021],{"type":43,"value":2006},"Nx presets create ",{"type":37,"tag":54,"props":2008,"children":2010},{"className":2009},[],[2011],{"type":43,"value":2012},"jest.preset.js",{"type":43,"value":2014}," at the workspace root, and project jest configs reference it (e.g. ",{"type":37,"tag":54,"props":2016,"children":2018},{"className":2017},[],[2019],{"type":43,"value":2020},"..\u002F..\u002Fjest.preset.js",{"type":43,"value":2022},"). Subdirectory import does NOT bring this file.",{"type":37,"tag":155,"props":2024,"children":2025},{},[2026,2030],{"type":37,"tag":198,"props":2027,"children":2028},{},[2029],{"type":43,"value":763},{"type":43,"value":389},{"type":37,"tag":1231,"props":2032,"children":2033},{},[2034,2065,2098,2109],{"type":37,"tag":50,"props":2035,"children":2036},{},[2037,2038,2044,2046,2052,2053,2058,2060],{"type":43,"value":94},{"type":37,"tag":54,"props":2039,"children":2041},{"className":2040},[],[2042],{"type":43,"value":2043},"npx nx add @nx\u002Fjest",{"type":43,"value":2045}," — registers ",{"type":37,"tag":54,"props":2047,"children":2049},{"className":2048},[],[2050],{"type":43,"value":2051},"@nx\u002Fjest\u002Fplugin",{"type":43,"value":583},{"type":37,"tag":54,"props":2054,"children":2056},{"className":2055},[],[2057],{"type":43,"value":850},{"type":43,"value":2059}," and updates ",{"type":37,"tag":54,"props":2061,"children":2063},{"className":2062},[],[2064],{"type":43,"value":869},{"type":37,"tag":50,"props":2066,"children":2067},{},[2068,2070,2075,2077,2083,2085,2091,2093],{"type":43,"value":2069},"Create ",{"type":37,"tag":54,"props":2071,"children":2073},{"className":2072},[],[2074],{"type":43,"value":2012},{"type":43,"value":2076}," at workspace root (see ",{"type":37,"tag":54,"props":2078,"children":2080},{"className":2079},[],[2081],{"type":43,"value":2082},"references\u002FJEST.md",{"type":43,"value":2084}," for content) — ",{"type":37,"tag":54,"props":2086,"children":2088},{"className":2087},[],[2089],{"type":43,"value":2090},"nx add",{"type":43,"value":2092}," only creates this when a generator runs, not on bare ",{"type":37,"tag":54,"props":2094,"children":2096},{"className":2095},[],[2097],{"type":43,"value":2090},{"type":37,"tag":50,"props":2099,"children":2100},{},[2101,2103],{"type":43,"value":2102},"Install test runner deps: ",{"type":37,"tag":54,"props":2104,"children":2106},{"className":2105},[],[2107],{"type":43,"value":2108},"pnpm add -wD jest jest-environment-jsdom ts-jest @types\u002Fjest",{"type":37,"tag":50,"props":2110,"children":2111},{},[2112,2114,2119],{"type":43,"value":2113},"Install framework-specific test deps as needed (see ",{"type":37,"tag":54,"props":2115,"children":2117},{"className":2116},[],[2118],{"type":43,"value":2082},{"type":43,"value":1751},{"type":37,"tag":155,"props":2121,"children":2122},{},[2123,2125,2130],{"type":43,"value":2124},"For deeper Jest issues (tsconfig.spec.json, Babel transforms, CI atomization, Jest vs Vitest coexistence), see ",{"type":37,"tag":54,"props":2126,"children":2128},{"className":2127},[],[2129],{"type":43,"value":2082},{"type":43,"value":755},{"type":37,"tag":312,"props":2132,"children":2134},{"id":2133},"target-name-prefixing-whole-repo-import",[2135],{"type":43,"value":2136},"Target Name Prefixing (Whole-Repo Import)",{"type":37,"tag":155,"props":2138,"children":2139},{},[2140,2142,2148,2149,2155,2156,2162,2163,2169,2171,2177,2178,2184,2185,2191],{"type":43,"value":2141},"When importing a project with existing npm scripts (",{"type":37,"tag":54,"props":2143,"children":2145},{"className":2144},[],[2146],{"type":43,"value":2147},"build",{"type":43,"value":74},{"type":37,"tag":54,"props":2150,"children":2152},{"className":2151},[],[2153],{"type":43,"value":2154},"dev",{"type":43,"value":74},{"type":37,"tag":54,"props":2157,"children":2159},{"className":2158},[],[2160],{"type":43,"value":2161},"start",{"type":43,"value":74},{"type":37,"tag":54,"props":2164,"children":2166},{"className":2165},[],[2167],{"type":43,"value":2168},"lint",{"type":43,"value":2170},"), Nx plugins auto-prefix inferred target names to avoid conflicts: e.g. ",{"type":37,"tag":54,"props":2172,"children":2174},{"className":2173},[],[2175],{"type":43,"value":2176},"next:build",{"type":43,"value":74},{"type":37,"tag":54,"props":2179,"children":2181},{"className":2180},[],[2182],{"type":43,"value":2183},"vite:build",{"type":43,"value":74},{"type":37,"tag":54,"props":2186,"children":2188},{"className":2187},[],[2189],{"type":43,"value":2190},"eslint:lint",{"type":43,"value":755},{"type":37,"tag":155,"props":2193,"children":2194},{},[2195,2199,2201,2206],{"type":37,"tag":198,"props":2196,"children":2197},{},[2198],{"type":43,"value":763},{"type":43,"value":2200},": Remove the Nx-rewritten npm scripts from the imported ",{"type":37,"tag":54,"props":2202,"children":2204},{"className":2203},[],[2205],{"type":43,"value":455},{"type":43,"value":2207},", then either:",{"type":37,"tag":46,"props":2209,"children":2210},{},[2211,2223],{"type":37,"tag":50,"props":2212,"children":2213},{},[2214,2216,2222],{"type":43,"value":2215},"Accept the prefixed names (e.g. ",{"type":37,"tag":54,"props":2217,"children":2219},{"className":2218},[],[2220],{"type":43,"value":2221},"nx run app:next:build",{"type":43,"value":1751},{"type":37,"tag":50,"props":2224,"children":2225},{},[2226,2228,2233],{"type":43,"value":2227},"Rename plugin target names in ",{"type":37,"tag":54,"props":2229,"children":2231},{"className":2230},[],[2232],{"type":43,"value":850},{"type":43,"value":2234}," to use unprefixed names",{"type":37,"tag":38,"props":2236,"children":2238},{"id":2237},"non-nx-source-issues",[2239],{"type":43,"value":2240},"Non-Nx Source Issues",{"type":37,"tag":155,"props":2242,"children":2243},{},[2244,2246,2251],{"type":43,"value":2245},"When the source is a plain pnpm\u002Fnpm workspace without ",{"type":37,"tag":54,"props":2247,"children":2249},{"className":2248},[],[2250],{"type":43,"value":850},{"type":43,"value":755},{"type":37,"tag":312,"props":2253,"children":2255},{"id":2254},"npm-script-rewriting-critical",[2256],{"type":43,"value":2257},"npm Script Rewriting (Critical)",{"type":37,"tag":155,"props":2259,"children":2260},{},[2261,2263,2268,2270,2276,2277,2283,2285,2289],{"type":43,"value":2262},"Nx rewrites ",{"type":37,"tag":54,"props":2264,"children":2266},{"className":2265},[],[2267],{"type":43,"value":455},{"type":43,"value":2269}," scripts during init, creating broken commands (e.g. ",{"type":37,"tag":54,"props":2271,"children":2273},{"className":2272},[],[2274],{"type":43,"value":2275},"vitest run",{"type":43,"value":1588},{"type":37,"tag":54,"props":2278,"children":2280},{"className":2279},[],[2281],{"type":43,"value":2282},"nx test run",{"type":43,"value":2284},"). ",{"type":37,"tag":198,"props":2286,"children":2287},{},[2288],{"type":43,"value":763},{"type":43,"value":2290},": Remove all rewritten scripts — Nx plugins infer targets from config files.",{"type":37,"tag":312,"props":2292,"children":2294},{"id":2293},"noemit-composite-emitdeclarationonly-critical",[2295,2301,2302,2308,2309,2315],{"type":37,"tag":54,"props":2296,"children":2298},{"className":2297},[],[2299],{"type":43,"value":2300},"noEmit",{"type":43,"value":1588},{"type":37,"tag":54,"props":2303,"children":2305},{"className":2304},[],[2306],{"type":43,"value":2307},"composite",{"type":43,"value":910},{"type":37,"tag":54,"props":2310,"children":2312},{"className":2311},[],[2313],{"type":43,"value":2314},"emitDeclarationOnly",{"type":43,"value":2316}," (Critical)",{"type":37,"tag":155,"props":2318,"children":2319},{},[2320,2322,2328],{"type":43,"value":2321},"Plain TS projects use ",{"type":37,"tag":54,"props":2323,"children":2325},{"className":2324},[],[2326],{"type":43,"value":2327},"\"noEmit\": true",{"type":43,"value":2329},", incompatible with Nx project references.",{"type":37,"tag":155,"props":2331,"children":2332},{},[2333,2338],{"type":37,"tag":198,"props":2334,"children":2335},{},[2336],{"type":43,"value":2337},"Symptoms",{"type":43,"value":2339},": \"typecheck target is disabled because one or more project references set 'noEmit: true'\" or TS6310.",{"type":37,"tag":155,"props":2341,"children":2342},{},[2343,2347,2348,2353],{"type":37,"tag":198,"props":2344,"children":2345},{},[2346],{"type":43,"value":763},{"type":43,"value":583},{"type":37,"tag":198,"props":2349,"children":2350},{},[2351],{"type":43,"value":2352},"all",{"type":43,"value":2354}," imported tsconfigs:",{"type":37,"tag":1231,"props":2356,"children":2357},{},[2358,2378,2403,2420],{"type":37,"tag":50,"props":2359,"children":2360},{},[2361,2363,2368,2370,2376],{"type":43,"value":2362},"Remove ",{"type":37,"tag":54,"props":2364,"children":2366},{"className":2365},[],[2367],{"type":43,"value":2327},{"type":43,"value":2369},". If inherited via extends chain, set ",{"type":37,"tag":54,"props":2371,"children":2373},{"className":2372},[],[2374],{"type":43,"value":2375},"\"noEmit\": false",{"type":43,"value":2377}," explicitly.",{"type":37,"tag":50,"props":2379,"children":2380},{},[2381,2383,2389,2390,2396,2397],{"type":43,"value":2382},"Add ",{"type":37,"tag":54,"props":2384,"children":2386},{"className":2385},[],[2387],{"type":43,"value":2388},"\"composite\": true",{"type":43,"value":74},{"type":37,"tag":54,"props":2391,"children":2393},{"className":2392},[],[2394],{"type":43,"value":2395},"\"emitDeclarationOnly\": true",{"type":43,"value":74},{"type":37,"tag":54,"props":2398,"children":2400},{"className":2399},[],[2401],{"type":43,"value":2402},"\"declarationMap\": true",{"type":37,"tag":50,"props":2404,"children":2405},{},[2406,2407,2413,2414],{"type":43,"value":2382},{"type":37,"tag":54,"props":2408,"children":2410},{"className":2409},[],[2411],{"type":43,"value":2412},"\"outDir\": \"dist\"",{"type":43,"value":115},{"type":37,"tag":54,"props":2415,"children":2417},{"className":2416},[],[2418],{"type":43,"value":2419},"\"tsBuildInfoFile\": \"dist\u002Ftsconfig.tsbuildinfo\"",{"type":37,"tag":50,"props":2421,"children":2422},{},[2423,2424,2430],{"type":43,"value":2382},{"type":37,"tag":54,"props":2425,"children":2427},{"className":2426},[],[2428],{"type":43,"value":2429},"\"extends\": \"..\u002F..\u002Ftsconfig.base.json\"",{"type":43,"value":2431}," if missing. Remove settings now inherited from base.",{"type":37,"tag":312,"props":2433,"children":2435},{"id":2434},"stale-node_modules-and-lockfiles",[2436],{"type":43,"value":2437},"Stale node_modules and Lockfiles",{"type":37,"tag":155,"props":2439,"children":2440},{},[2441,2446,2448,2453,2455,2460],{"type":37,"tag":54,"props":2442,"children":2444},{"className":2443},[],[2445],{"type":43,"value":59},{"type":43,"value":2447}," may bring ",{"type":37,"tag":54,"props":2449,"children":2451},{"className":2450},[],[2452],{"type":43,"value":1138},{"type":43,"value":2454}," (pnpm symlinks pointing to the source filesystem) and ",{"type":37,"tag":54,"props":2456,"children":2458},{"className":2457},[],[2459],{"type":43,"value":1117},{"type":43,"value":2461}," from the source. Both are stale.",{"type":37,"tag":155,"props":2463,"children":2464},{},[2465,2469,2470,2476,2478,2483],{"type":37,"tag":198,"props":2466,"children":2467},{},[2468],{"type":43,"value":763},{"type":43,"value":416},{"type":37,"tag":54,"props":2471,"children":2473},{"className":2472},[],[2474],{"type":43,"value":2475},"rm -rf imported\u002Fnode_modules imported\u002Fpnpm-lock.yaml imported\u002Fpnpm-workspace.yaml imported\u002F.gitignore",{"type":43,"value":2477},", then ",{"type":37,"tag":54,"props":2479,"children":2481},{"className":2480},[],[2482],{"type":43,"value":785},{"type":43,"value":755},{"type":37,"tag":312,"props":2485,"children":2487},{"id":2486},"eslint-config-handling",[2488],{"type":43,"value":2489},"ESLint Config Handling",{"type":37,"tag":46,"props":2491,"children":2492},{},[2493,2525,2542],{"type":37,"tag":50,"props":2494,"children":2495},{},[2496,2509,2511,2517,2519,2524],{"type":37,"tag":198,"props":2497,"children":2498},{},[2499,2501,2507],{"type":43,"value":2500},"Legacy ",{"type":37,"tag":54,"props":2502,"children":2504},{"className":2503},[],[2505],{"type":43,"value":2506},".eslintrc.json",{"type":43,"value":2508}," (ESLint 8)",{"type":43,"value":2510},": Delete all ",{"type":37,"tag":54,"props":2512,"children":2514},{"className":2513},[],[2515],{"type":43,"value":2516},".eslintrc.*",{"type":43,"value":2518},", remove v8 deps, create flat ",{"type":37,"tag":54,"props":2520,"children":2522},{"className":2521},[],[2523],{"type":43,"value":1211},{"type":43,"value":755},{"type":37,"tag":50,"props":2526,"children":2527},{},[2528,2540],{"type":37,"tag":198,"props":2529,"children":2530},{},[2531,2533,2539],{"type":43,"value":2532},"Flat config (",{"type":37,"tag":54,"props":2534,"children":2536},{"className":2535},[],[2537],{"type":43,"value":2538},"eslint.config.js",{"type":43,"value":1751},{"type":43,"value":2541},": Self-contained configs can often be left as-is.",{"type":37,"tag":50,"props":2543,"children":2544},{},[2545,2550],{"type":37,"tag":198,"props":2546,"children":2547},{},[2548],{"type":43,"value":2549},"No ESLint",{"type":43,"value":2551},": Create both root and project-level configs from scratch.",{"type":37,"tag":312,"props":2553,"children":2555},{"id":2554},"typescript-paths-aliases",[2556,2558,2564],{"type":43,"value":2557},"TypeScript ",{"type":37,"tag":54,"props":2559,"children":2561},{"className":2560},[],[2562],{"type":43,"value":2563},"paths",{"type":43,"value":2565}," Aliases",{"type":37,"tag":155,"props":2567,"children":2568},{},[2569,2571,2576,2577,2582,2584,2590,2592,2597],{"type":43,"value":2570},"Nx uses ",{"type":37,"tag":54,"props":2572,"children":2574},{"className":2573},[],[2575],{"type":43,"value":455},{"type":43,"value":1187},{"type":37,"tag":54,"props":2578,"children":2580},{"className":2579},[],[2581],{"type":43,"value":447},{"type":43,"value":2583}," + pnpm workspace linking instead of tsconfig ",{"type":37,"tag":54,"props":2585,"children":2587},{"className":2586},[],[2588],{"type":43,"value":2589},"\"paths\"",{"type":43,"value":2591},". If packages have proper ",{"type":37,"tag":54,"props":2593,"children":2595},{"className":2594},[],[2596],{"type":43,"value":447},{"type":43,"value":2598},", paths are redundant. Otherwise, update paths for the new directory structure.",{"type":37,"tag":38,"props":2600,"children":2602},{"id":2601},"technology-specific-guidance",[2603],{"type":43,"value":2604},"Technology-specific Guidance",{"type":37,"tag":155,"props":2606,"children":2607},{},[2608],{"type":43,"value":2609},"Identify technologies in the source repo, then read and apply the matching reference file(s).",{"type":37,"tag":155,"props":2611,"children":2612},{},[2613],{"type":43,"value":2614},"Available references:",{"type":37,"tag":46,"props":2616,"children":2617},{},[2618,2664,2673,2690,2739,2748],{"type":37,"tag":50,"props":2619,"children":2620},{},[2621,2627,2629,2634,2635,2640,2642,2647,2649,2655,2657,2662],{"type":37,"tag":54,"props":2622,"children":2624},{"className":2623},[],[2625],{"type":43,"value":2626},"references\u002FESLINT.md",{"type":43,"value":2628}," — ESLint projects: duplicate ",{"type":37,"tag":54,"props":2630,"children":2632},{"className":2631},[],[2633],{"type":43,"value":2168},{"type":43,"value":529},{"type":37,"tag":54,"props":2636,"children":2638},{"className":2637},[],[2639],{"type":43,"value":2190},{"type":43,"value":2641}," targets, legacy ",{"type":37,"tag":54,"props":2643,"children":2645},{"className":2644},[],[2646],{"type":43,"value":2516},{"type":43,"value":2648}," linting generated files, flat config ",{"type":37,"tag":54,"props":2650,"children":2652},{"className":2651},[],[2653],{"type":43,"value":2654},".cjs",{"type":43,"value":2656}," self-linting, ",{"type":37,"tag":54,"props":2658,"children":2660},{"className":2659},[],[2661],{"type":43,"value":1295},{"type":43,"value":2663}," v7\u002Fv9 peer dep conflict, mixed ESLint v8+v9 in one workspace.",{"type":37,"tag":50,"props":2665,"children":2666},{},[2667],{"type":37,"tag":54,"props":2668,"children":2670},{"className":2669},[],[2671],{"type":43,"value":2672},"references\u002FGRADLE.md",{"type":37,"tag":50,"props":2674,"children":2675},{},[2676,2681,2683,2688],{"type":37,"tag":54,"props":2677,"children":2679},{"className":2678},[],[2680],{"type":43,"value":2082},{"type":43,"value":2682}," — Jest testing: ",{"type":37,"tag":54,"props":2684,"children":2686},{"className":2685},[],[2687],{"type":43,"value":2051},{"type":43,"value":2689}," setup, jest.preset.js, testing deps by framework, tsconfig.spec.json, Jest vs Vitest coexistence, Babel transforms, CI atomization.",{"type":37,"tag":50,"props":2691,"children":2692},{},[2693,2699,2701,2707,2709,2715,2717,2722,2723,2729,2731,2737],{"type":37,"tag":54,"props":2694,"children":2696},{"className":2695},[],[2697],{"type":43,"value":2698},"references\u002FNEXT.md",{"type":43,"value":2700}," — Next.js projects: ",{"type":37,"tag":54,"props":2702,"children":2704},{"className":2703},[],[2705],{"type":43,"value":2706},"@nx\u002Fnext\u002Fplugin",{"type":43,"value":2708}," targets, ",{"type":37,"tag":54,"props":2710,"children":2712},{"className":2711},[],[2713],{"type":43,"value":2714},"withNx",{"type":43,"value":2716},", Next.js TS config (",{"type":37,"tag":54,"props":2718,"children":2720},{"className":2719},[],[2721],{"type":43,"value":2300},{"type":43,"value":74},{"type":37,"tag":54,"props":2724,"children":2726},{"className":2725},[],[2727],{"type":43,"value":2728},"jsx: \"preserve\"",{"type":43,"value":2730},"), auto-installing deps via wrong PM, non-Nx ",{"type":37,"tag":54,"props":2732,"children":2734},{"className":2733},[],[2735],{"type":43,"value":2736},"create-next-app",{"type":43,"value":2738}," imports, mixed Next.js+Vite coexistence.",{"type":37,"tag":50,"props":2740,"children":2741},{},[2742],{"type":37,"tag":54,"props":2743,"children":2745},{"className":2744},[],[2746],{"type":43,"value":2747},"references\u002FTURBOREPO.md",{"type":37,"tag":50,"props":2749,"children":2750},{},[2751,2757,2759,2765,2767,2773,2774,2780],{"type":37,"tag":54,"props":2752,"children":2754},{"className":2753},[],[2755],{"type":43,"value":2756},"references\u002FVITE.md",{"type":43,"value":2758}," — Vite projects (React, Vue, or both): ",{"type":37,"tag":54,"props":2760,"children":2762},{"className":2761},[],[2763],{"type":43,"value":2764},"@nx\u002Fvite\u002Fplugin",{"type":43,"value":2766}," typecheck target, ",{"type":37,"tag":54,"props":2768,"children":2770},{"className":2769},[],[2771],{"type":43,"value":2772},"resolve.alias",{"type":43,"value":529},{"type":37,"tag":54,"props":2775,"children":2777},{"className":2776},[],[2778],{"type":43,"value":2779},"__dirname",{"type":43,"value":2781}," fixes, framework deps, Vue-specific setup, mixed React+Vue coexistence.",{"type":37,"tag":2783,"props":2784,"children":2785},"style",{},[2786],{"type":43,"value":2787},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2789,"total":2862},[2790,2802,2816,2828,2834,2843,2852],{"slug":2791,"name":2791,"fn":2792,"description":2793,"org":2794,"tags":2795,"stars":21,"repoUrl":22,"updatedAt":2801},"link-workspace-packages","link monorepo workspace packages","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\u002F*) 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.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2796,2799,2800],{"name":2797,"slug":2798,"type":16},"Configuration","configuration",{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},"2026-07-13T06:10:46.151946",{"slug":2803,"name":2803,"fn":2804,"description":2805,"org":2806,"tags":2807,"stars":21,"repoUrl":22,"updatedAt":2815},"monitor-ci","monitor Nx Cloud CI pipelines","Monitor Nx Cloud CI pipeline and handle self-healing fixes. USE WHEN user says \"monitor ci\", \"watch ci\", \"ci monitor\", \"watch ci for this branch\", \"track ci\", \"check ci status\", wants to track CI status, or needs help with self-healing CI fixes. Prefer this skill over native CI provider tools (gh, glab, etc.) for CI monitoring — it integrates with Nx Cloud self-healing which those tools cannot access.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2808,2811,2814],{"name":2809,"slug":2810,"type":16},"CI\u002FCD","ci-cd",{"name":2812,"slug":2813,"type":16},"Monitoring","monitoring",{"name":9,"slug":8,"type":16},"2026-07-26T05:48:03.509541",{"slug":2817,"name":2817,"fn":2818,"description":2819,"org":2820,"tags":2821,"stars":21,"repoUrl":22,"updatedAt":2827},"nx-generate","generate code with Nx generators","Generate code using nx generators. INVOKE IMMEDIATELY when user mentions scaffolding, setup, structure, creating apps\u002Flibs, or setting up project structure. Trigger words - scaffold, setup, create a new app, create a new lib, project structure, generate, add a new project. ALWAYS use this BEFORE calling nx_docs or exploring - this skill handles discovery internally.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2822,2825,2826],{"name":2823,"slug":2824,"type":16},"Automation","automation",{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},"2026-07-13T06:10:36.6128",{"slug":4,"name":4,"fn":5,"description":6,"org":2829,"tags":2830,"stars":21,"repoUrl":22,"updatedAt":23},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2831,2832,2833],{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"slug":2835,"name":2835,"fn":2836,"description":2837,"org":2838,"tags":2839,"stars":21,"repoUrl":22,"updatedAt":2842},"nx-plugins","find and add Nx plugins","Find and add Nx plugins. USE WHEN user wants to discover available plugins, install a new plugin, or add support for a specific framework or technology to the workspace.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2840,2841],{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},"2026-07-16T06:01:55.300546",{"slug":2844,"name":2844,"fn":2845,"description":2846,"org":2847,"tags":2848,"stars":21,"repoUrl":22,"updatedAt":2851},"nx-run-tasks","execute tasks in Nx workspaces","Helps with running tasks in an Nx workspace. USE WHEN the user wants to execute build, test, lint, serve, or run any other tasks defined in the workspace.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2849,2850],{"name":2823,"slug":2824,"type":16},{"name":9,"slug":8,"type":16},"2026-07-16T06:01:58.30304",{"slug":2853,"name":2853,"fn":2854,"description":2855,"org":2856,"tags":2857,"stars":21,"repoUrl":22,"updatedAt":2861},"nx-workspace","explore and understand Nx workspaces","Explore and understand Nx workspaces. USE WHEN answering questions about the workspace, projects, or tasks. ALSO USE WHEN an nx command fails or you need to check available targets\u002Fconfiguration before running a task. EXAMPLES: 'What projects are in this workspace?', 'How is project X configured?', 'What depends on library Y?', 'What targets can I run?', 'Cannot find configuration for task', 'debug nx task failure'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2858,2859,2860],{"name":2797,"slug":2798,"type":16},{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},"2026-07-13T06:10:44.796062",7,{"items":2864,"total":2922},[2865,2871,2877,2883,2889,2894,2899,2905],{"slug":2791,"name":2791,"fn":2792,"description":2793,"org":2866,"tags":2867,"stars":21,"repoUrl":22,"updatedAt":2801},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2868,2869,2870],{"name":2797,"slug":2798,"type":16},{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},{"slug":2803,"name":2803,"fn":2804,"description":2805,"org":2872,"tags":2873,"stars":21,"repoUrl":22,"updatedAt":2815},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2874,2875,2876],{"name":2809,"slug":2810,"type":16},{"name":2812,"slug":2813,"type":16},{"name":9,"slug":8,"type":16},{"slug":2817,"name":2817,"fn":2818,"description":2819,"org":2878,"tags":2879,"stars":21,"repoUrl":22,"updatedAt":2827},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2880,2881,2882],{"name":2823,"slug":2824,"type":16},{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},{"slug":4,"name":4,"fn":5,"description":6,"org":2884,"tags":2885,"stars":21,"repoUrl":22,"updatedAt":23},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2886,2887,2888],{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"slug":2835,"name":2835,"fn":2836,"description":2837,"org":2890,"tags":2891,"stars":21,"repoUrl":22,"updatedAt":2842},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2892,2893],{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},{"slug":2844,"name":2844,"fn":2845,"description":2846,"org":2895,"tags":2896,"stars":21,"repoUrl":22,"updatedAt":2851},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2897,2898],{"name":2823,"slug":2824,"type":16},{"name":9,"slug":8,"type":16},{"slug":2853,"name":2853,"fn":2854,"description":2855,"org":2900,"tags":2901,"stars":21,"repoUrl":22,"updatedAt":2861},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2902,2903,2904],{"name":2797,"slug":2798,"type":16},{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},{"slug":2906,"name":2906,"fn":2907,"description":2908,"org":2909,"tags":2910,"stars":2862,"repoUrl":2920,"updatedAt":2921},"session-debrief","analyze and debrief Polygraph session logs","Analyze the raw logs of past Polygraph sessions and produce structured, rank-ordered debriefs for use in a different session. Use when launched (typically as a background agent) with a ranked list of relevant Polygraph session IDs and a statement of the current task; pulls parent and child transcripts via the polygraph CLI and returns one consolidated debrief.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2911,2914,2917],{"name":2912,"slug":2913,"type":16},"Agents","agents",{"name":2915,"slug":2916,"type":16},"Analysis","analysis",{"name":2918,"slug":2919,"type":16},"Logs","logs","https:\u002F\u002Fgithub.com\u002Fnrwl\u002Fpolygraph-skills","2026-07-29T05:40:01.783869",8]