intent list discovers skill-enabled packages and shows the skills available under the project's permissions and exclusions. It does not change permissions or write guidance.
npx @tanstack/intent@latest list [--json] [--debug] [--global] [--global-only] [--show-hidden] [--no-notices]Intent scans project and workspace dependencies, applies package.json#intent.skills, then removes packages and skills matched by intent.exclude. It uses project node_modules when available and Yarn's PnP API in PnP projects without usable node_modules.
Global packages are scanned only with --global or --global-only. When both local and global copies of a package are found, the local copy takes precedence. Version conflicts show the chosen package and other discovered versions and paths.
Run intent install to configure permissions on first use. Listing skills does not open the install picker.
The nearest configured intent.skills list applies, including inherited workspace permissions. Each entry enables a package, a package pattern, or one exact skill:
| Saved rule | Skills included | Includes future additions? |
|---|---|---|
| "*" | All discovered npm and workspace sources. | All packages and skills. |
| "@tanstack/query" | All skills in that npm package. | New skills in the package. |
| "@tanstack/*" | All skills in matching npm packages. | New matching packages and skills. |
| "@tanstack/query#fetching" | The fetching skill in that package. | Only that skill name. |
| "workspace:@scope/internal" | All skills in that workspace package. | New skills in the package. |
Workspace patterns and individual skills also use the workspace: prefix, such as workspace:@scope/* and workspace:@scope/internal#testing. Package patterns support *; individual-skill entries require an exact package and skill name. Git sources are not supported.
Permissions select sources and skill names. They do not freeze skill content when dependencies update. See Configuration and Trust model.
intent.exclude takes precedence over permissions. Intent combines exclusions from package.json files between the workspace or project root and the current directory.
| Exclusion | Effect |
|---|---|
| @tanstack/*devtools* | Excludes matching packages. |
| @tanstack/query#experimental-* | Excludes matching skills in that package. |
| *#experimental-* | Excludes matching skills across packages. |
| @tanstack/query#* | Excludes the whole package. |
Only exact names and * wildcards are supported. Excluded packages do not trigger unlisted-source notices. Manage exclusions with intent exclude.
Packages outside an explicit allowlist are omitted from the available catalog. In a human session, a policy notice names them; --show-hidden adds their names and skill counts to the text output. This does not enable them.
In agent sessions, hidden sources are reported by count only. --show-hidden cannot reveal their identities there; run it outside the agent session to review candidates. A configured package or package pattern that was not discovered also produces a notice.
Text output includes:
Load commands use the detected package manager and preserve the selected global scan scope. SOURCE distinguishes local discovery from explicit global scanning.
Text output and discovery warnings go to stdout. Policy notices and --debug details go to stderr.
--json prints a structured catalog to stdout. This example shows one available skill with no hidden sources or diagnostics; paths and package metadata vary by project:
{
"skills": [
{
"use": "@tanstack/query#fetching",
"packageName": "@tanstack/query",
"packageRoot": "/path/to/project/node_modules/@tanstack/query",
"packageVersion": "5.0.0",
"packageSource": "local",
"skillName": "fetching",
"description": "Query data fetching patterns",
"type": "core",
"framework": "react"
}
],
"packages": [
{
"name": "@tanstack/query",
"version": "5.0.0",
"source": "local",
"packageRoot": "/path/to/project/node_modules/@tanstack/query",
"skillCount": 1
}
],
"hiddenSourceCount": 0,
"hiddenSources": [],
"warnings": [],
"notices": [],
"conflicts": []
}| Field | Meaning |
|---|---|
| skills | Available skills. use is the portable <package>#<skill> identity; type and framework are optional. |
| packages | Selected packages, their source and location, and permitted skill counts. |
| hiddenSourceCount | Number of packages hidden by the explicit allowlist. |
| hiddenSources | Objects with name and skillCount in human sessions, even without --show-hidden. Always empty in agent sessions. |
| warnings | Discovery warnings. |
| notices | Policy and migration notices. --no-notices does not remove these from JSON. |
| conflicts | Objects with packageName, chosen, and variants. Each chosen or variant entry contains version and packageRoot. |
JSON includes diagnostics in the object instead of printing separate warning or notice blocks. --debug still writes to stderr. Treat identifiers as data when constructing commands; JSON does not contain shell-escaped arguments.
| Result | Message or behavior |
|---|---|
| No selected packages | No intent-enabled packages found. |
| Available catalog | <package count> intent-enabled packages, <skill count> skills followed by the table and tree. |
| Version conflicts | Version conflicts: followed by the chosen version and other discovered locations. |
| Hidden-source review | Hidden skill sources: followed by names and skill counts in a human session. |
| Hidden-source review in an agent session | Hidden skill sources are not revealed in agent sessions. Run this command outside the agent session to review candidates. |
| Discovery warnings | Warnings: followed by ⚠ messages on stdout in text mode. |
| Policy notices | Notices: followed by ℹ messages on stderr in text mode. |