Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    mjunaidca

    nx-monorepo

    mjunaidca/nx-monorepo
    Coding
    19
    1 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Nx monorepo management skill for AI-native development. This skill should be used when working with Nx workspaces, project graphs, affected detection, code generation, and caching...

    SKILL.md

    Nx Monorepo

    Overview

    This skill provides expert-level capabilities for Nx monorepo management. Nx is the standard build orchestrator for this AI-native platform due to its official MCP server integration.

    Why Nx: Official MCP server, TypeScript-native, 5-minute setup, auto-generates CLAUDE.md/AGENTS.md for AI assistants.

    MCP Tools Available

    nx_docs          - Query Nx documentation
    nx_available_plugins - List official Nx plugins (NOT installed by default)
    

    Key Insight: MCP provides documentation lookup. Use Nx CLI for all operations.

    Core CLI Commands

    Project Graph Analysis

    # View interactive project graph
    nx graph
    
    # JSON output for programmatic use
    nx graph --file=output.json
    
    # Show dependencies of specific project
    nx graph --focus=my-app
    
    # Show what depends on a project
    nx graph --affected
    

    Affected Detection

    # What's affected since main?
    nx affected -t build
    nx affected -t test
    nx affected -t lint
    
    # Compare against specific base
    nx affected -t build --base=origin/main --head=HEAD
    
    # Show affected projects only
    nx show projects --affected
    

    Running Tasks

    # Run task for all projects
    nx run-many -t build
    nx run-many -t test
    
    # Run for specific projects
    nx run-many -t build --projects=app-a,lib-b
    
    # Run with parallelism control
    nx run-many -t build --parallel=4
    
    # Single project
    nx build my-app
    nx test my-lib
    

    Code Generation

    # List available generators
    nx list @nx/next
    nx list @nx/react
    
    # Generate new application
    nx g @nx/next:app my-app
    nx g @nx/react:app my-frontend
    
    # Generate library
    nx g @nx/js:lib shared-utils
    nx g @nx/react:lib ui-components
    
    # Dry run (preview)
    nx g @nx/next:app my-app --dry-run
    

    Configuration Files

    nx.json (Workspace Config)

    {
      "targetDefaults": {
        "build": {
          "dependsOn": ["^build"],
          "cache": true
        },
        "test": {
          "cache": true
        },
        "lint": {
          "cache": true
        }
      },
      "namedInputs": {
        "default": ["{projectRoot}/**/*"],
        "production": ["default", "!{projectRoot}/**/*.spec.ts"]
      },
      "defaultBase": "main"
    }
    

    project.json (Project Config)

    {
      "name": "my-app",
      "projectType": "application",
      "targets": {
        "build": {
          "executor": "@nx/next:build",
          "outputs": ["{options.outputPath}"],
          "options": {
            "outputPath": "dist/apps/my-app"
          }
        },
        "serve": {
          "executor": "@nx/next:server",
          "options": {
            "buildTarget": "my-app:build"
          }
        }
      }
    }
    

    Caching

    Local Cache

    # Cache is automatic for cacheable targets
    nx build my-app  # First run: executes
    nx build my-app  # Second run: cached (instant)
    
    # Clear cache
    nx reset
    

    Nx Cloud (Remote Cache)

    # Connect to Nx Cloud
    npx nx connect
    
    # Or add manually
    nx g @nx/workspace:ci-workflow
    
    # Verify connection
    nx run-many -t build
    # Look for: "Remote cache hit"
    

    Cache Inputs

    // In project.json or nx.json
    {
      "targets": {
        "build": {
          "inputs": [
            "default",
            "^production",
            { "externalDependencies": ["next"] }
          ]
        }
      }
    }
    

    Common Patterns

    Adding a New JS/TS App

    # 1. Add plugin (if not already installed)
    pnpm nx add @nx/next    # For Next.js
    pnpm nx add @nx/react   # For React
    pnpm nx add @nx/node    # For Node/Express
    
    # 2. Generate app
    pnpm nx g @nx/next:app dashboard --directory=apps/dashboard
    
    # 3. Verify in graph
    pnpm nx graph --focus=dashboard
    
    # 4. Build & Serve
    pnpm nx build dashboard
    pnpm nx serve dashboard
    

    Adding a Python App (uv Workspace)

    Python projects use uv workspaces (similar to pnpm workspaces for JS) with manual project.json for Nx:

    # 1. Create directory and initialize
    mkdir -p apps/my-python-app
    cd apps/my-python-app
    uv init
    uv add --group dev pytest ruff mypy
    cd ../..
    
    # 2. Add to uv workspace (root pyproject.toml)
    

    Edit root pyproject.toml:

    [tool.uv.workspace]
    members = [
        "apps/panaversity-fs-py",
        "apps/my-python-app",  # Add new project here
    ]
    
    # 3. Sync all Python deps from root
    uv sync --extra dev
    

    apps/my-python-app/project.json (for Nx):

    {
      "name": "my-python-app",
      "projectType": "application",
      "targets": {
        "build": {
          "command": "uv build",
          "options": { "cwd": "apps/my-python-app" }
        },
        "test": {
          "command": "uv run --extra dev pytest",
          "options": { "cwd": "apps/my-python-app" }
        },
        "lint": {
          "command": "uv run --extra dev ruff check .",
          "options": { "cwd": "apps/my-python-app" }
        }
      }
    }
    
    # 4. Verify Nx recognizes it
    pnpm nx show projects
    pnpm nx graph --focus=my-python-app
    
    # 5. Run tasks via Nx
    pnpm nx test my-python-app
    

    Shared Python Libraries

    Create libraries that multiple Python apps can import:

    mkdir -p libs/auth-common-py
    cd libs/auth-common-py
    uv init --lib
    cd ../..
    # Add to workspace members, then uv sync
    

    Reference in dependent projects:

    # apps/my-python-app/pyproject.toml
    [project]
    dependencies = ["auth-common-py"]
    
    [tool.uv.sources]
    auth-common-py = { workspace = true }
    

    Key Insight: uv manages Python deps via workspace, Nx orchestrates tasks. Single uv.lock at root.

    Creating Shared Libraries

    # JS/TS UI library
    pnpm nx g @nx/react:lib ui --directory=libs/shared/ui
    
    # JS/TS Utility library
    pnpm nx g @nx/js:lib utils --directory=libs/shared/utils
    
    # Domain library
    pnpm nx g @nx/js:lib auth --directory=libs/domain/auth
    

    CI Pipeline (GitHub Actions)

    name: CI
    on: [push, pull_request]
    
    jobs:
      main:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
            with:
              fetch-depth: 0
    
          - uses: pnpm/action-setup@v2
          - uses: actions/setup-node@v4
            with:
              node-version: 20
              cache: 'pnpm'
    
          - run: pnpm install --frozen-lockfile
    
          # Affected-only builds
          - run: npx nx affected -t lint build test --base=origin/main
    

    Troubleshooting

    "Cannot find project"

    # Regenerate project graph
    nx reset
    nx graph
    

    Cache Not Working

    # Verify target is cacheable
    cat nx.json | grep -A5 "targetDefaults"
    
    # Check inputs are stable
    nx build my-app --verbose
    

    Dependency Issues

    # Show project dependencies
    nx graph --focus=my-app
    
    # Check for circular deps
    nx graph --file=graph.json
    # Review edges in JSON
    

    Quick Reference

    Task Command
    Interactive graph pnpm nx graph
    Affected build pnpm nx affected -t build
    Run all tests pnpm nx run-many -t test
    Generate JS/TS app pnpm nx g @nx/next:app name
    Generate JS/TS lib pnpm nx g @nx/js:lib name
    Add plugin pnpm nx add @nx/next
    Clear cache pnpm nx reset
    Show projects pnpm nx show projects
    List generators pnpm nx list @nx/next

    Python-Specific (uv)

    Task Command
    Init Python project cd apps/name && uv init
    Add runtime dep uv add <package>
    Add dev dep uv add --group dev <package>
    Sync deps uv sync --extra dev
    Run via Nx pnpm nx test my-python-app

    Related Skills

    • monorepo-workflow: PR stacking, trunk-based development, code review
    • monorepo-team-lead: CODEOWNERS, human-AI task routing, RFC process
    Recommended Servers
    Asana
    Asana
    Gemini
    Gemini
    Thoughtbox
    Thoughtbox
    Repository
    mjunaidca/mjs-agent-skills
    Files