nx-workspace

作者: nrwl

探索并理解Nx工作区。在回答关于工作区、项目或任务的问题时使用。当nx命令失败,或需要在运行任务前检查可用目标/配置时也请使用。示例:'这个工作区有哪些项目?'、'项目X是如何配置的?'、'哪些内容依赖于库Y?'、'我可以运行哪些目标?'、'找不到任务配置'、'调试nx任务失败'。

npx skills add https://github.com/nrwl/nx-ai-agents-config --skill nx-workspace

Nx Workspace Exploration

This skill provides read-only exploration of Nx workspaces. Use it to understand workspace structure, project configuration, available targets, and dependencies.

Keep in mind that you might have to prefix commands with npx/pnpx/yarn if nx isn't installed globally. Check the lockfile to determine the package manager in use.

Listing Projects

Use nx show projects to list projects in the workspace.

The project filtering syntax (-p/--projects) works across many Nx commands including nx run-many, nx release, nx show projects, and more. Filters support explicit names, glob patterns, tag references (e.g. tag:name), directories, and negation (e.g. !project-name).

# List all projects
nx show projects

# Filter by pattern (glob)
nx show projects --projects "apps/*"
nx show projects --projects "shared-*"

# Filter by tag
nx show projects --projects "tag:publishable"
nx show projects -p 'tag:publishable,!tag:internal'

# Filter by target (projects that have a specific target)
nx show projects --withTarget build

# Combine filters
nx show projects --type lib --withTarget test
nx show projects --affected --exclude="*-e2e"
nx show projects -p "tag:scope:client,packages/*"

# Negate patterns
nx show projects -p '!tag:private'
nx show projects -p '!*-e2e'

# Output as JSON
nx show projects --json

Project Configuration

Use nx show project <name> --json to get the full resolved configuration for a project.

Important: Do NOT read project.json directly - it only contains partial configuration. The nx show project --json command returns the full resolved config including inferred targets from plugins.

You can read the full project schema at node_modules/nx/schemas/project-schema.json to understand nx project configuration options.

# Get full project configuration
nx show project my-app --json

# Extract specific parts from the JSON
nx show project my-app --json | jq '.targets'
nx show project my-app --json | jq '.targets.build'
nx show project my-app --json | jq '.targets | keys'

# Check project metadata
nx show project my-app --json | jq '{name, root, sourceRoot, projectType, tags}'

Target Information

Targets define what tasks can be run on a project.

# List all targets for a project
nx show project my-app --json | jq '.targets | keys'

# Get full target configuration
nx show project my-app --json | jq '.targets.build'

# Check target executor/command
nx show project my-app --json | jq '.targets.build.executor'
nx show project my-app --json | jq '.targets.build.command'

# View target options
nx show project my-app --json | jq '.targets.build.options'

# Check target inputs/outputs (for caching)
nx show project my-app --json | jq '.targets.build.inputs'
nx show project my-app --json | jq '.targets.build.outputs'

# Find projects with a specific target
nx show projects --withTarget serve
nx show projects --withTarget e2e

Workspace Configuration

Read nx.json directly for workspace-level configuration. You can read the full project schema at node_modules/nx/schemas/nx-schema.json to understand nx project configuration options.

# Read the full nx.json
cat nx.json

# Or use jq for specific sections
cat nx.json | jq '.targetDefaults'
cat nx.json | jq '.namedInputs'
cat nx.json | jq '.plugins'
cat nx.json | jq '.generators'

Key nx.json sections:

  • targetDefaults - Default configuration applied to all targets of a given name
  • namedInputs - Reusable input definitions for caching
  • plugins - Nx plugins and their configuration
  • ...and much more, read the schema or nx.json for details

Affected Projects

If the user is asking about affected projects, read the affected projects reference for detailed commands and examples.

Common Exploration Patterns

"What's in this workspace?"

nx show projects
nx show projects --type app
nx show projects --type lib

"How do I build/test/lint project X?"

nx show project X --json | jq '.targets | keys'
nx show project X --json | jq '.targets.build'

"What depends on library Y?"

# Use the project graph to find dependents
nx graph --print | jq '.graph.dependencies | to_entries[] | select(.value[].target == "Y") | .key'

Programmatic Answers

When processing nx CLI results, use command-line tools to compute the answer programmatically rather than counting or parsing output manually. Always use --json flags to get structured output that can be processed with jq, grep, or other tools you have installed locally.

Listing Projects

nx show projects --json

Example output:

["my-app", "my-app-e2e", "shared-ui", "shared-utils", "api"]

Common operations:

# Count projects
nx show projects --json | jq 'length'

# Filter by pattern
nx show projects --json | jq '.[] | select(startswith("shared-"))'

# Get affected projects as array
nx show projects --affected --json | jq '.'

Project Details

nx show project my-app --json

Example output:

{
  "root": "apps/my-app",
  "name": "my-app",
  "sourceRoot": "apps/my-app/src",
  "projectType": "application",
  "tags": ["type:app", "scope:client"],
  "targets": {
    "build": {
      "executor": "@nx/vite:build",
      "options": { "outputPath": "dist/apps/my-app" }
    },
    "serve": {
      "executor": "@nx/vite:dev-server",
      "options": { "buildTarget": "my-app:build" }
    },
    "test": {
      "executor": "@nx/vite:test",
      "options": {}
    }
  },
  "implicitDependencies": []
}

Common operations:

# Get target names
nx show project my-app --json | jq '.targets | keys'

# Get specific target config
nx show project my-app --json | jq '.targets.build'

# Get tags
nx show project my-app --json | jq '.tags'

# Get project root
nx show project my-app --json | jq -r '.root'

Project Graph

nx graph --print

Example output:

{
  "graph": {
    "nodes": {
      "my-app": {
        "name": "my-app",
        "type": "app",
        "data": { "root": "apps/my-app", "tags": ["type:app"] }
      },
      "shared-ui": {
        "name": "shared-ui",
        "type": "lib",
        "data": { "root": "libs/shared-ui", "tags": ["type:ui"] }
      }
    },
    "dependencies": {
      "my-app": [
        { "source": "my-app", "target": "shared-ui", "type": "static" }
      ],
      "shared-ui": []
    }
  }
}

Common operations:

# Get all project names from graph
nx graph --print | jq '.graph.nodes | keys'

# Find dependencies of a project
nx graph --print | jq '.graph.dependencies["my-app"]'

# Find projects that depend on a library
nx graph --print | jq '.graph.dependencies | to_entries[] | select(.value[].target == "shared-ui") | .key'

Troubleshooting

"Cannot find configuration for task X:target"

# Check what targets exist on the project
nx show project X --json | jq '.targets | keys'

# Check if any projects have that target
nx show projects --withTarget target

"The workspace is out of sync"

nx sync
nx reset  # if sync doesn't fix stale cache

相关技能

executing-plans
openai
当您有书面的实施计划需要在单独的会话中执行并包含审查检查点时使用
claude-opus-4-5-migration
anthropic
将 Claude 模型字符串和提示词从 Sonnet 4.0、Sonnet 4.5 或 Opus 4.1 迁移至 Opus 4.5。更新 Anthropic API、AWS Bedrock、Google Vertex AI 和 Azure AI Foundry 平台上的模型字符串。移除不支持的 beta 标头(例如 context-1m-2025-08-07),并添加设置为“高”的 effort 参数。针对已知的 Opus 4.5 行为差异提供可选的提示词调整:工具过度触发、过度工程化、代码探索保守性、前端设计以及思考敏感性……
tanstack-start-netlify-to-vercel
vercel
将 TanStack Start 应用从 Netlify 迁移到 Vercel。当用户想要将 TanStack Start(或 TanStack)应用迁移、移植或转移时,使用此技能。
linkedin-ghostwriter
samber
linkedin-ghostwriter — 一个适用于AI智能体的可安装技能。
marketingcommunicationcreative
customer-research
coreyhaines31
当用户希望进行、分析或综合客户研究时使用。适用于用户提及“客户研究”、“ICP研究”、“与客户交谈”、“分析转录文本”、“客户访谈”、“调查分析”、“支持工单分析”、“客户之声”、“VOC”、“构建用户画像”、“客户画像”、“待完成工作”、“JTBD”、“客户在说什么”、“客户在为什么挣扎”、“Reddit挖掘”、“G2评论”、“评论挖掘”、“数字水坑”、“社区...”等场景。
researchdata-analysismarketing
file-organizer
nvidia
整理项目目录中的文件
add-new-package
remotion-dev
在Remotion单体仓库中添加新包,包括包脚手架、单体仓库注册、文档、构建脚本、测试和发布清单…
managing-github-actions-secrets
posthog
为PostHog工作流创建和更新GitHub Actions密钥。在添加新的CI密钥、轮换现有密钥、将工作流连接到API时使用…