plugins/developer-kit-typescript/skills/nx-monorepo/SKILL.md
Provides comprehensive Nx monorepo management guidance for TypeScript/JavaScript projects. Use when creating Nx workspaces, generating apps/libraries/components, running affected commands, setting up CI/CD, configuring Module Federation, or implementing NestJS backends within Nx
npx skillsauth add giuseppe-trisciuoglio/developer-kit nx-monorepoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provides guidance for Nx monorepo management in TypeScript/JavaScript projects. Covers workspace creation, project generation, task execution, caching strategies, Module Federation, and CI/CD integration.
Use this skill when:
Trigger phrases: "create Nx workspace", "Nx monorepo", "generate Nx app", "Nx affected", "Nx CI/CD", "Module Federation Nx", "Nx Cloud"
Create a new workspace with interactive setup:
npx create-nx-workspace@latest
Follow prompts to select preset (Integrated, Standalone, Package-based) and framework stack.
Initialize Nx in an existing project:
nx@latest init
Create with specific preset (non-interactive):
npx create-nx-workspace@latest my-workspace --preset=react
Verify: nx show projects lists the new workspace projects
Generate a React application:
nx g @nx/react:app my-app
Generate a library:
# React library
nx g @nx/react:lib my-lib
# TypeScript library
nx g @nx/js:lib my-util
Verify: nx show projects lists the new lib
Generate a component in lib:
nx g @nx/react:component my-comp --project=my-lib
Generate NestJS backend:
nx g @nx/nest:app my-api
Verify: nx show projects lists my-api and nx run my-api:build succeeds
Run tasks for affected projects only:
nx affected -t lint test build
Run tasks across all projects:
# Build all projects
nx run-many -t build
# Test specific projects
nx run-many -t test -p=my-app,my-lib
# Test by pattern
nx run-many -t test --projects=*-app
Run specific target on single project:
nx run my-app:build
Visualize dependency graph:
nx graph
Each project has a project.json defining targets, executor, and configurations:
{
"name": "my-app",
"projectType": "application",
"sourceRoot": "apps/my-app/src",
"targets": {
"build": {
"executor": "@nx/react:webpack",
"outputs": ["{workspaceRoot}/dist/apps/my-app"],
"configurations": {
"production": {
"optimization": true
}
}
},
"test": {
"executor": "@nx/vite:test"
}
},
"tags": ["type:app", "scope:frontend"]
}
Set up project dependencies:
{
"targets": {
"build": {
"dependsOn": [
{ "projects": ["shared-ui"], "target": "build" }
]
}
}
}
Use tags for organization:
{ "tags": ["type:ui", "scope:frontend", "platform:web"] }
Generate a remote (micro-frontend):
nx g @nx/react:remote checkout --host=dashboard
Generate a host:
nx g @nx/react:host dashboard
Use affected commands in CI to only build/test changed projects:
# .github/workflows/ci.yml
- run: npx nx affected -t lint --parallel
- run: npx nx affected -t test --parallel
- run: npx nx affected -t build --parallel
Input: "Create a new Nx workspace with React and TypeScript"
Steps:
npx create-nx-workspace@latest my-workspace
# Select: Integrated Monorepo → React → Integrated monorepo (Nx Cloud)
Verify: cd my-workspace && nx show projects lists the created app
Expected Result: Workspace created with:
apps/ directory with React applibs/ directory for shared librariesnx.json with cache configurationInput: "Run tests only for projects affected by recent changes"
Command:
nx affected -t test --base=main~1 --head=main
Expected Result: Only tests for projects affected by changes between commits are executed, leveraging cached results from previous runs.
Input: "Create a shared UI library and use it in the app"
Steps:
# Generate library
nx g @nx/react:lib shared-ui
# Generate component in library
nx g @nx/react:component button --project=shared-ui
# Import in app (tsconfig paths auto-configured)
import { Button } from '@my-workspace/shared-ui'
Verify: nx run shared-ui:build completes successfully and nx graph shows the dependency link to your app
Expected Result: Buildable library at libs/shared-ui with proper TypeScript path mapping configured.
Input: "Configure Module Federation for micro-frontends"
Steps:
# Create host app
nx g @nx/react:host dashboard
# Add remote to host
nx g @nx/react:remote product-catalog --host=dashboard
# Start dev servers
nx run dashboard:serve
nx run product-catalog:serve
Verify: Both servers start without errors and nx graph shows dashboard → product-catalog remote connection
Expected Result: Two separate applications running where product-catalog loads dynamically into dashboard at runtime.
Input: "Why is my app rebuilding when unrelated lib changes?"
Diagnosis:
# Show project graph
nx graph --focused=my-app
# Check implicit dependencies
nx show project my-app --json | grep implicitDependencies
Solution: Add explicit dependency configuration or use namedInputs in nx.json to exclude certain files from triggering builds.
Verify Fix Worked: Make a change to the unrelated lib, run nx affected -t build — my-app should not appear in the affected projects list.
nx affected in CI to only test/build changed projectstype:app|lib, scope:frontend|backend|shared)workspaceLayout boundaries in nx.jsonnx.json when possiblenamedInputs to exclude test files from production cache keystools/ for project-specific scaffolding~/.nx/cache can grow large; configure cacheDirectory in nx.json if needednx graph to visualizeFor detailed guidance on specific topics, consult:
| Topic | Reference File | |-------|----------------| | Workspace setup, basic commands | references/basics.md | | Generators (app, lib, component) | references/generators.md | | React, Next.js, Expo patterns | references/react.md | | NestJS backend patterns | references/nestjs.md | | TypeScript packages | references/typescript.md | | CI/CD (GitHub, CircleCI, etc.) | references/ci-cd.md | | Caching, affected, advanced | references/advanced.md |
development
Explore codebase before committing to a change. Phase executor skill for specs.explore command.
development
Executes real end-to-end verification against a running application after specification implementation. Detects the application type, starts the local runtime (Docker, Node, Spring Boot, etc.), runs real tests (curl for REST APIs, Playwright for web SPAs, computer-use for desktop apps), verifies acceptance criteria from the functional specification, generates a markdown report, and tears down the environment. Use when: user asks to verify a completed spec with real tests, run e2e checks after implementation, validate acceptance criteria in a live environment, or test the feature for real after task completion.
development
Initialize Spec-Driven Development context — detects tech stack, conventions, architecture patterns, and bootstraps persistence backends. Triggers on 'sdd-init', 'init sdd', 'setup sdd', 'initialize sdd', 'setup project', 'initialize project context'. Creates/updates docs/specs/architecture.md & ontology.md (Constitution), and populates knowledge-graph.json.
development
Optimizes raw idea descriptions into structured prompts ready for the brainstorming workflow. TRIGGER when: user says "optimize for brainstorm", "prepare idea for brainstorm", "enhance this idea", "make this ready for brainstorming", "imposta per brainstorm", or wants to improve a feature idea before using /specs.brainstorm. DO NOT TRIGGER for code optimization, refactoring, or general prompt engineering tasks.