nx-workspace — Claude Code skill: explore Nx workspaces
A read-only skill that maps an Nx workspace: projects, targets and dependencies, so the agent knows what it can run.
npx skills add nrwl/nx-ai-agents-config --skill nx-workspace -a claude-codeWhat nx-workspace does
The skill lets an agent inspect an Nx workspace without touching it. It lists projects with nx show projects, pulls the full resolved config via nx show project <name> --json, and shows which targets exist. The author warns against reading project.json directly: it holds only partial configuration, while nx show project --json returns inferred targets from plugins as well.
The -p/--projects filter works across nx run-many, nx release, nx show projects and more. It accepts names, glob patterns, tags like tag:name, directories and negation such as !project-name. For answers, the skill pushes structured output: --json piped into jq instead of counting lines by hand. Dependencies come from nx graph --print.
If nx is not installed globally, prefix commands with npx, pnpx or yarn — check the lockfile to see which package manager the repo uses. The skill reads only; it will not change configuration or run a build for you. Worth checking before you rely on it: a missing package manager breaks half the commands.
What it helps with
- list every project in the workspace
- read a project's resolved config with plugin-inferred targets
- find which targets a project can run
- debug a failing
nxcommand - trace what depends on a given library
Example prompts for the agent
- What projects are in this workspace?
- Show me the targets for my-app and their config
- What depends on shared-ui?
How to install nx-workspace
1Skills CLI (Vercel)
npx skills add nrwl/nx-ai-agents-config --skill nx-workspace -a claude-code2Manually: put the files in place
~/.claude/skills/nx-workspace/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/nx-workspace/
1Skills CLI (Vercel)
npx skills add nrwl/nx-ai-agents-config --skill nx-workspace -a codex2Manually: put the files in place
.agents/skills/nx-workspace/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add nrwl/nx-ai-agents-config --skill nx-workspace -a cursor2Manually: put the files in place
.cursor/skills/nx-workspace/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install nrwl/nx-ai-agents-config nx-workspace2Manually: put the files in place
.github/skills/nx-workspace/SKILL.md1Skills CLI (Vercel)
npx skills add nrwl/nx-ai-agents-config --skill nx-workspace -a gemini-cli2Platform CLI
gemini skills install https://github.com/nrwl/nx-ai-agents-config --path skills/nx-workspaceManually: put the files in place
.devin/skills/nx-workspace/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add nrwl/nx-ai-agents-config --skill nx-workspace -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about nx-workspace
How do I install nx-workspace in Claude?
Run npx skills add nrwl/nx-ai-agents-config --skill nx-workspace -a claude-code. The skill lands in ~/.claude/skills/nx-workspace/SKILL.md.
What does nx-workspace do?
It explores an Nx workspace: lists projects, shows their configuration, targets and dependencies. Read-only.
Do I need nx installed?
If nx is not global, prefix commands with npx, pnpx or yarn — the lockfile tells you which package manager is in use.
Source text
SKILL.md · MIT
---
name: nx-workspace
description: "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/configuration 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'."
---
# 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`).
```bash
# 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.
```bash
# 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.
```bash
# 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.
```bash
# 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](references/AFFECTED.md) for detailed commands and examples.
## Common Exploration Patterns
### "What's in this workspace?"
```bash
nx show projects
nx show projects --type app
nx show projects --type lib
```
### "How do I build/test/lint project X?"
```bash
nx show project X --json | jq '.targets | keys'
nx show project X --json | jq '.targets.build'
```
### "What depends on library Y?"
```bash
# 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
```bash
nx show projects --json
```
Example output:
```json
["my-app", "my-app-e2e", "shared-ui", "shared-utils", "api"]
```
Common operations:
```bash
# 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
```bash
nx show project my-app --json
```
Example output:
```json
{
"root": "apps/my-app",
"name": "my-app",
"sourceRoot": "apps/my-app/src",
"projectType": "application",
"tags": ["type:app", "scope:client"],
"targets": {
"build": {
"command": "vite build",
"options": { "cwd": "apps/my-app" }
},
"serve": {
"command": "vite",
"options": { "cwd": "apps/my-app" }
},
"test": {
"command": "vitest",
"options": { "cwd": "apps/my-app" }
}
},
"implicitDependencies": []
}
```
Common operations:
```bash
# 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
```bash
nx graph --print
```
Example output:
```json
{
"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:
```bash
# 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"
```bash
# 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"
```bash
nx sync
nx reset # if sync doesn't fix stale cache
```
© nrwl · MIT · nrwl/nx-ai-agents-config