Install
Terminal · npx$
npx skills add https://github.com/nrwl/nx-ai-agents-config --skill nx-workspaceWorks with Paperclip
How Nx Workspace fits into a Paperclip company.
Nx Workspace drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.
S
SaaS FactoryPaired
Pre-configured AI company — 18 agents, 18 skills, one-time purchase.
$27$59
Explore packSource file
SKILL.md286 linesExpandCollapse
---name: nx-workspacedescription: "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 projectsnx show projects # Filter by pattern (glob)nx show projects --projects "apps/*"nx show projects --projects "shared-*" # Filter by tagnx 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 filtersnx show projects --type lib --withTarget testnx show projects --affected --exclude="*-e2e"nx show projects -p "tag:scope:client,packages/*" # Negate patternsnx show projects -p '!tag:private'nx show projects -p '!*-e2e' # Output as JSONnx 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 configurationnx show project my-app --json # Extract specific parts from the JSONnx 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 metadatanx 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 projectnx show project my-app --json | jq '.targets | keys' # Get full target configurationnx show project my-app --json | jq '.targets.build' # Check target executor/commandnx show project my-app --json | jq '.targets.build.executor'nx show project my-app --json | jq '.targets.build.command' # View target optionsnx 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 targetnx show projects --withTarget servenx 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.jsoncat nx.json # Or use jq for specific sectionscat 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?" ```bashnx show projectsnx show projects --type appnx show projects --type lib``` ### "How do I build/test/lint project X?" ```bashnx 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 dependentsnx 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 ```bashnx show projects --json``` Example output: ```json["my-app", "my-app-e2e", "shared-ui", "shared-utils", "api"]``` Common operations: ```bash# Count projectsnx show projects --json | jq 'length' # Filter by patternnx show projects --json | jq '.[] | select(startswith("shared-"))' # Get affected projects as arraynx show projects --affected --json | jq '.'``` ### Project Details ```bashnx 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": { "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: ```bash# Get target namesnx show project my-app --json | jq '.targets | keys' # Get specific target confignx show project my-app --json | jq '.targets.build' # Get tagsnx show project my-app --json | jq '.tags' # Get project rootnx show project my-app --json | jq -r '.root'``` ### Project Graph ```bashnx 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 graphnx graph --print | jq '.graph.nodes | keys' # Find dependencies of a projectnx graph --print | jq '.graph.dependencies["my-app"]' # Find projects that depend on a librarynx 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 projectnx show project X --json | jq '.targets | keys' # Check if any projects have that targetnx show projects --withTarget target``` ### "The workspace is out of sync" ```bashnx syncnx reset # if sync doesn't fix stale cache```