@tanstack/cli 0.61.1 → 0.62.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +11 -5
- package/skills/CHANGELOG.md +18 -0
- package/skills/add-addons-existing-app/SKILL.md +113 -0
- package/skills/choose-ecosystem-integrations/SKILL.md +140 -0
- package/skills/choose-ecosystem-integrations/references/authentication-providers.md +19 -0
- package/skills/choose-ecosystem-integrations/references/data-layer-providers.md +20 -0
- package/skills/choose-ecosystem-integrations/references/deployment-targets.md +19 -0
- package/skills/create-app-scaffold/SKILL.md +132 -0
- package/skills/create-app-scaffold/references/create-flag-compatibility-matrix.md +34 -0
- package/skills/create-app-scaffold/references/deployment-providers.md +19 -0
- package/skills/create-app-scaffold/references/framework-adapters.md +17 -0
- package/skills/create-app-scaffold/references/toolchains.md +17 -0
- package/skills/maintain-custom-addons-dev-watch/SKILL.md +118 -0
- package/skills/query-docs-library-metadata/SKILL.md +85 -0
- package/skills/query-docs-library-metadata/references/discovery-command-output-schemas.md +70 -0
- package/CHANGELOG.md +0 -815
- package/playwright-report/index.html +0 -85
- package/playwright.config.ts +0 -21
- package/src/bin.ts +0 -15
- package/src/cli.ts +0 -1099
- package/src/command-line.ts +0 -612
- package/src/dev-watch.ts +0 -564
- package/src/discovery.ts +0 -209
- package/src/file-syncer.ts +0 -263
- package/src/index.ts +0 -21
- package/src/options.ts +0 -280
- package/src/types.ts +0 -27
- package/src/ui-environment.ts +0 -74
- package/src/ui-prompts.ts +0 -387
- package/src/utils.ts +0 -30
- package/test-results/.last-run.json +0 -4
- package/tests/command-line.test.ts +0 -703
- package/tests/index.test.ts +0 -9
- package/tests/options.test.ts +0 -281
- package/tests/setupVitest.ts +0 -6
- package/tests/ui-environment.test.ts +0 -97
- package/tests/ui-prompts.test.ts +0 -233
- package/tests-e2e/addons-smoke.spec.ts +0 -31
- package/tests-e2e/create-smoke.spec.ts +0 -39
- package/tests-e2e/helpers.ts +0 -526
- package/tests-e2e/matrix-opportunistic.spec.ts +0 -142
- package/tests-e2e/router-only-smoke.spec.ts +0 -54
- package/tests-e2e/solid-smoke.spec.ts +0 -26
- package/tests-e2e/templates-smoke.spec.ts +0 -52
- package/tsconfig.json +0 -17
- package/vitest.config.js +0 -8
package/package.json
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.62.1",
|
|
4
4
|
"description": "TanStack CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/types/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"skills"
|
|
11
|
+
],
|
|
8
12
|
"bin": {
|
|
9
13
|
"tanstack": "./dist/bin.js"
|
|
10
14
|
},
|
|
@@ -55,10 +59,12 @@
|
|
|
55
59
|
"build": "tsc",
|
|
56
60
|
"dev": "tsc --watch",
|
|
57
61
|
"test:e2e": "npm run test:e2e:blocking",
|
|
58
|
-
"test:e2e:blocking": "
|
|
59
|
-
"test:e2e:matrix": "
|
|
60
|
-
"test:e2e:debug": "
|
|
61
|
-
"test:e2e:headed": "
|
|
62
|
+
"test:e2e:blocking": "playwright test --grep @blocking",
|
|
63
|
+
"test:e2e:matrix": "playwright test --grep @matrix",
|
|
64
|
+
"test:e2e:debug": "playwright test --debug",
|
|
65
|
+
"test:e2e:headed": "playwright test --headed",
|
|
66
|
+
"test:e2e:local": "npm run build && npm run test:e2e:blocking",
|
|
67
|
+
"test:e2e:matrix:local": "npm run build && npm run test:e2e:matrix",
|
|
62
68
|
"test:lint": "eslint ./src",
|
|
63
69
|
"test": "vitest run",
|
|
64
70
|
"test:watch": "vitest",
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
## 2026-03-02
|
|
2
|
+
|
|
3
|
+
### Updated for @tanstack/cli v0.61.0
|
|
4
|
+
|
|
5
|
+
**Breaking changes:**
|
|
6
|
+
- create-app-scaffold: documents router-only compatibility behavior where template/deployment/add-on intent is ignored.
|
|
7
|
+
- add-addons-existing-app: enforces `.cta.json` metadata precondition for add flows.
|
|
8
|
+
|
|
9
|
+
**Deprecation updates:**
|
|
10
|
+
- create-app-scaffold: `--no-tailwind` treated as deprecated/ignored; recommends post-scaffold removal flow.
|
|
11
|
+
- query-docs-library-metadata: deprecated alias discovery patterns replaced with `tanstack` command namespace.
|
|
12
|
+
|
|
13
|
+
**New skills:**
|
|
14
|
+
- create-app-scaffold: deterministic app generation and flag compatibility.
|
|
15
|
+
- add-addons-existing-app: add-on layering into existing repos.
|
|
16
|
+
- query-docs-library-metadata: JSON discovery/doc retrieval for agents.
|
|
17
|
+
- choose-ecosystem-integrations: partner-to-add-on mapping and exclusivity handling.
|
|
18
|
+
- maintain-custom-addons-dev-watch: custom add-on authoring and dev-watch lifecycle.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: add-addons-existing-app
|
|
3
|
+
description: >
|
|
4
|
+
Apply integrations to existing projects with tanstack add, including
|
|
5
|
+
add-on id resolution, dependency chains, option prompts, and .cta.json
|
|
6
|
+
project metadata preconditions.
|
|
7
|
+
type: core
|
|
8
|
+
library: tanstack-cli
|
|
9
|
+
library_version: "0.61.0"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Add Add-ons To Existing App
|
|
13
|
+
|
|
14
|
+
Use this skill when the project already exists and you need to layer add-ons safely without breaking dependency or metadata assumptions.
|
|
15
|
+
|
|
16
|
+
## Setup
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npx @tanstack/cli add clerk drizzle
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Core Patterns
|
|
23
|
+
|
|
24
|
+
### Add multiple integrations in one pass
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx @tanstack/cli add tanstack-query drizzle
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Resolve candidate ids before applying
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx @tanstack/cli create --list-add-ons --json
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Validate optionized add-ons before install
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npx @tanstack/cli create --addon-details prisma --json
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Common Mistakes
|
|
43
|
+
|
|
44
|
+
### CRITICAL Run tanstack add without .cta.json
|
|
45
|
+
|
|
46
|
+
Wrong:
|
|
47
|
+
```bash
|
|
48
|
+
npx @tanstack/cli add clerk
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Correct:
|
|
52
|
+
```bash
|
|
53
|
+
# Run in a project scaffolded by TanStack CLI (contains .cta.json), then:
|
|
54
|
+
npx @tanstack/cli add clerk
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Add flows depend on persisted scaffold metadata, so commands can fail or apply incomplete config when `.cta.json` is missing.
|
|
58
|
+
|
|
59
|
+
Source: packages/create/src/custom-add-ons/shared.ts:158
|
|
60
|
+
|
|
61
|
+
### HIGH Use invalid add-on id
|
|
62
|
+
|
|
63
|
+
Wrong:
|
|
64
|
+
```bash
|
|
65
|
+
npx @tanstack/cli add drizle
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Correct:
|
|
69
|
+
```bash
|
|
70
|
+
npx @tanstack/cli add drizzle
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Unknown ids stop resolution and force manual correction before any add-on work proceeds.
|
|
74
|
+
|
|
75
|
+
Source: packages/create/src/add-ons.ts:44
|
|
76
|
+
|
|
77
|
+
### HIGH Ignore add-on dependency requirements
|
|
78
|
+
|
|
79
|
+
Wrong:
|
|
80
|
+
```bash
|
|
81
|
+
npx @tanstack/cli add custom-addon-with-missing-deps
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Correct:
|
|
85
|
+
```bash
|
|
86
|
+
npx @tanstack/cli add required-dependency custom-addon-with-missing-deps
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Add-ons with `dependsOn` can fail during finalization if required dependencies are not present.
|
|
90
|
+
|
|
91
|
+
Source: packages/create/src/add-ons.ts:48
|
|
92
|
+
|
|
93
|
+
### MEDIUM Assume old Windows path bug still present
|
|
94
|
+
|
|
95
|
+
Wrong:
|
|
96
|
+
```bash
|
|
97
|
+
# Avoid tanstack add on Windows and patch manually
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Correct:
|
|
101
|
+
```bash
|
|
102
|
+
npx @tanstack/cli add clerk
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Avoiding supported workflows based on historical bug reports causes unnecessary manual drift. Fixed in newer versions, but agents trained on older threads may still avoid this path.
|
|
106
|
+
|
|
107
|
+
Source: https://github.com/TanStack/cli/issues/329
|
|
108
|
+
|
|
109
|
+
### HIGH Tension: Backwards support vs deterministic automation
|
|
110
|
+
|
|
111
|
+
This domain's patterns conflict with maintain-custom-addons-dev-watch. Automation that assumes universal add flows tends to fail because legacy compatibility still relies on hidden scaffold metadata.
|
|
112
|
+
|
|
113
|
+
See also: maintain-custom-addons-dev-watch/SKILL.md § Common Mistakes
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: choose-ecosystem-integrations
|
|
3
|
+
description: >
|
|
4
|
+
Map tanstack ecosystem partner metadata to installable add-on ids using
|
|
5
|
+
tanstack ecosystem --json, tanstack create --list-add-ons --json, and
|
|
6
|
+
tanstack create --addon-details --json. Covers exclusive categories,
|
|
7
|
+
provider options, and router-only compatibility constraints.
|
|
8
|
+
type: composition
|
|
9
|
+
library: tanstack-cli
|
|
10
|
+
library_version: "0.61.0"
|
|
11
|
+
requires:
|
|
12
|
+
- create-app-scaffold
|
|
13
|
+
- query-docs-library-metadata
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
This skill requires familiarity with scaffold and discovery workflows. Read `create-app-scaffold` and `query-docs-library-metadata` first.
|
|
17
|
+
|
|
18
|
+
# Choose Ecosystem Integrations
|
|
19
|
+
|
|
20
|
+
Use this skill at the seam between user requirements and valid CLI integration choices.
|
|
21
|
+
|
|
22
|
+
## Setup
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npx @tanstack/cli ecosystem --json
|
|
26
|
+
npx @tanstack/cli create --list-add-ons --json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Core Patterns
|
|
30
|
+
|
|
31
|
+
### Map partner intent to add-on ids explicitly
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npx @tanstack/cli ecosystem --category database --json
|
|
35
|
+
npx @tanstack/cli create --list-add-ons --json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Inspect option surfaces before final provider choice
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx @tanstack/cli create --addon-details drizzle --json
|
|
42
|
+
npx @tanstack/cli create --addon-details prisma --json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Enforce one choice per exclusive category
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npx @tanstack/cli create my-app \
|
|
49
|
+
--framework react \
|
|
50
|
+
--add-ons clerk,drizzle \
|
|
51
|
+
--deployment cloudflare \
|
|
52
|
+
-y
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Common Mistakes
|
|
56
|
+
|
|
57
|
+
### HIGH Treat ecosystem partner id as add-on id
|
|
58
|
+
|
|
59
|
+
Wrong:
|
|
60
|
+
```bash
|
|
61
|
+
npx @tanstack/cli add <partner-id-from-ecosystem>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Correct:
|
|
65
|
+
```bash
|
|
66
|
+
npx @tanstack/cli ecosystem --json
|
|
67
|
+
npx @tanstack/cli create --list-add-ons --json
|
|
68
|
+
npx @tanstack/cli add <mapped-addon-id>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`ecosystem` includes partners that are not directly installable add-ons, so direct reuse of partner ids can fail late in add/apply flows.
|
|
72
|
+
|
|
73
|
+
Source: tanstack ecosystem --json output + tanstack create --list-add-ons --json output
|
|
74
|
+
|
|
75
|
+
### HIGH Skip addon-details before choosing provider
|
|
76
|
+
|
|
77
|
+
Wrong:
|
|
78
|
+
```bash
|
|
79
|
+
npx @tanstack/cli create my-app --add-ons prisma -y
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Correct:
|
|
83
|
+
```bash
|
|
84
|
+
npx @tanstack/cli create --addon-details prisma --json
|
|
85
|
+
npx @tanstack/cli create my-app --add-ons prisma -y
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Optionized providers can default silently, producing the wrong data-layer stack for the requested integration.
|
|
89
|
+
|
|
90
|
+
Source: tanstack create --addon-details prisma --json
|
|
91
|
+
|
|
92
|
+
### HIGH Select multiple exclusive integrations together
|
|
93
|
+
|
|
94
|
+
Wrong:
|
|
95
|
+
```bash
|
|
96
|
+
npx @tanstack/cli create my-app --add-ons clerk,workos -y
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Correct:
|
|
100
|
+
```bash
|
|
101
|
+
npx @tanstack/cli create my-app --add-ons clerk -y
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Exclusive categories permit only one active choice, so multi-select commands can drop or replace intended providers.
|
|
105
|
+
|
|
106
|
+
Source: packages/create/src/frameworks/*/*/info.json
|
|
107
|
+
|
|
108
|
+
### CRITICAL Assume router-only supports deployment integration
|
|
109
|
+
|
|
110
|
+
Wrong:
|
|
111
|
+
```bash
|
|
112
|
+
npx @tanstack/cli create my-app --router-only --deployment cloudflare -y
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Correct:
|
|
116
|
+
```bash
|
|
117
|
+
npx @tanstack/cli create my-app --router-only -y
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Router-only mode ignores deployment integration, so the command succeeds without applying the intended ecosystem target.
|
|
121
|
+
|
|
122
|
+
Source: packages/cli/src/command-line.ts:349
|
|
123
|
+
|
|
124
|
+
### HIGH Tension: Compatibility mode vs explicit intent
|
|
125
|
+
|
|
126
|
+
This domain's patterns conflict with create-app-scaffold. Integration planning tends to over-assume command intent is preserved, but compatibility mode silently strips integration flags.
|
|
127
|
+
|
|
128
|
+
See also: create-app-scaffold/SKILL.md § Common Mistakes
|
|
129
|
+
|
|
130
|
+
### HIGH Tension: Single-command convenience vs integration precision
|
|
131
|
+
|
|
132
|
+
This domain's patterns conflict with query-docs-library-metadata. Integration choices tend to drift when discovery metadata is skipped in favor of one-shot scaffold commands.
|
|
133
|
+
|
|
134
|
+
See also: query-docs-library-metadata/SKILL.md § Common Mistakes
|
|
135
|
+
|
|
136
|
+
## References
|
|
137
|
+
|
|
138
|
+
- [Authentication providers](references/authentication-providers.md)
|
|
139
|
+
- [Data layer providers](references/data-layer-providers.md)
|
|
140
|
+
- [Deployment targets](references/deployment-targets.md)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Authentication Providers
|
|
2
|
+
|
|
3
|
+
Use `tanstack ecosystem --category authentication --json` for partner discovery, then map to installable add-on ids via `tanstack create --list-add-ons --json`.
|
|
4
|
+
|
|
5
|
+
## Common add-ons
|
|
6
|
+
|
|
7
|
+
- `clerk`
|
|
8
|
+
- `workos`
|
|
9
|
+
- `better-auth`
|
|
10
|
+
|
|
11
|
+
## Selection pattern
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx @tanstack/cli ecosystem --category authentication --json
|
|
15
|
+
npx @tanstack/cli create --list-add-ons --json
|
|
16
|
+
npx @tanstack/cli create my-app --add-ons clerk -y
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Authentication providers are typically exclusive; select one unless metadata explicitly allows combination.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Data Layer Providers
|
|
2
|
+
|
|
3
|
+
Inspect each provider's options before generation to avoid defaulting to an unintended backend.
|
|
4
|
+
|
|
5
|
+
## Common add-ons
|
|
6
|
+
|
|
7
|
+
- `prisma`
|
|
8
|
+
- `drizzle`
|
|
9
|
+
- `convex`
|
|
10
|
+
- `neon`
|
|
11
|
+
|
|
12
|
+
## Selection pattern
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx @tanstack/cli create --addon-details prisma --json
|
|
16
|
+
npx @tanstack/cli create --addon-details drizzle --json
|
|
17
|
+
npx @tanstack/cli create my-app --add-ons drizzle -y
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Database/ORM categories can be exclusive depending on framework template metadata.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Deployment Targets
|
|
2
|
+
|
|
3
|
+
Map deployment intent to one supported target and include it in scaffold commands only outside router-only mode.
|
|
4
|
+
|
|
5
|
+
## Common targets
|
|
6
|
+
|
|
7
|
+
- `cloudflare`
|
|
8
|
+
- `netlify`
|
|
9
|
+
- `railway`
|
|
10
|
+
- `nitro`
|
|
11
|
+
|
|
12
|
+
## Selection pattern
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx @tanstack/cli ecosystem --category deployment --json
|
|
16
|
+
npx @tanstack/cli create my-app --deployment cloudflare -y
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Deployment target selection is exclusive and ignored when `--router-only` is active.
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: create-app-scaffold
|
|
3
|
+
description: >
|
|
4
|
+
Scaffold a TanStack app with tanstack create using --framework, --template,
|
|
5
|
+
--toolchain, --deployment, --add-ons, and --router-only. Covers flag
|
|
6
|
+
compatibility, non-interactive defaults, and intent-preserving command
|
|
7
|
+
construction.
|
|
8
|
+
type: core
|
|
9
|
+
library: tanstack-cli
|
|
10
|
+
library_version: "0.61.0"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Create App Scaffold
|
|
14
|
+
|
|
15
|
+
Use this skill to build a deterministic `tanstack create` command before running generation. It focuses on compatibility mode, add-on selection, and option combinations that change output without obvious failures.
|
|
16
|
+
|
|
17
|
+
## Setup
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx @tanstack/cli create acme-web \
|
|
21
|
+
--framework react \
|
|
22
|
+
--toolchain biome \
|
|
23
|
+
--deployment netlify \
|
|
24
|
+
--add-ons tanstack-query,clerk \
|
|
25
|
+
-y
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Core Patterns
|
|
29
|
+
|
|
30
|
+
### Build a deterministic non-interactive scaffold
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx @tanstack/cli create acme-solid \
|
|
34
|
+
--framework solid \
|
|
35
|
+
--add-ons drizzle,tanstack-query \
|
|
36
|
+
--toolchain eslint \
|
|
37
|
+
-y
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Use router-only mode for compatibility scaffolds only
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx @tanstack/cli create legacy-router \
|
|
44
|
+
--router-only \
|
|
45
|
+
--framework react \
|
|
46
|
+
--toolchain biome \
|
|
47
|
+
-y
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Use template input only outside router-only mode
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npx @tanstack/cli create custom-app \
|
|
54
|
+
--framework react \
|
|
55
|
+
--template https://github.com/acme/tanstack-template \
|
|
56
|
+
--add-ons tanstack-query \
|
|
57
|
+
-y
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Common Mistakes
|
|
61
|
+
|
|
62
|
+
### HIGH Pass --add-ons without explicit ids
|
|
63
|
+
|
|
64
|
+
Wrong:
|
|
65
|
+
```bash
|
|
66
|
+
npx @tanstack/cli create my-app --add-ons -y
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Correct:
|
|
70
|
+
```bash
|
|
71
|
+
npx @tanstack/cli create my-app --add-ons clerk,drizzle -y
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
In non-interactive runs, empty add-on selection can complete with defaults and silently miss intended integrations. Fixed in newer versions, but agents trained on older examples may still generate this pattern.
|
|
75
|
+
|
|
76
|
+
Source: https://github.com/TanStack/cli/issues/234
|
|
77
|
+
|
|
78
|
+
### HIGH Assume --no-tailwind is still supported
|
|
79
|
+
|
|
80
|
+
Wrong:
|
|
81
|
+
```bash
|
|
82
|
+
npx @tanstack/cli create my-app --no-tailwind -y
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Correct:
|
|
86
|
+
```bash
|
|
87
|
+
npx @tanstack/cli create my-app -y
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
`--no-tailwind` is deprecated and ignored, so output still includes Tailwind and diverges from expected stack constraints.
|
|
91
|
+
|
|
92
|
+
Source: packages/cli/src/command-line.ts:369
|
|
93
|
+
|
|
94
|
+
### CRITICAL Combine router-only with template/deployment/add-ons
|
|
95
|
+
|
|
96
|
+
Wrong:
|
|
97
|
+
```bash
|
|
98
|
+
npx @tanstack/cli create my-app \
|
|
99
|
+
--router-only \
|
|
100
|
+
--template some-template \
|
|
101
|
+
--deployment cloudflare \
|
|
102
|
+
--add-ons clerk \
|
|
103
|
+
-y
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Correct:
|
|
107
|
+
```bash
|
|
108
|
+
npx @tanstack/cli create my-app --router-only --framework react -y
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Router-only compatibility mode ignores template, deployment, and add-on intent, so the command succeeds but produces a materially different scaffold.
|
|
112
|
+
|
|
113
|
+
Source: packages/cli/src/command-line.ts:343
|
|
114
|
+
|
|
115
|
+
### HIGH Tension: Compatibility mode vs explicit intent
|
|
116
|
+
|
|
117
|
+
This domain's patterns conflict with choose-ecosystem-integrations. Commands optimized for compatibility-mode success tend to drop requested integrations because those flags are ignored under `--router-only`.
|
|
118
|
+
|
|
119
|
+
See also: choose-ecosystem-integrations/SKILL.md § Common Mistakes
|
|
120
|
+
|
|
121
|
+
### HIGH Tension: Single-command convenience vs integration precision
|
|
122
|
+
|
|
123
|
+
This domain's patterns conflict with query-docs-library-metadata. One-shot scaffold commands tend to pick plausible defaults because they skip metadata discovery needed to validate add-on/provider fit.
|
|
124
|
+
|
|
125
|
+
See also: query-docs-library-metadata/SKILL.md § Common Mistakes
|
|
126
|
+
|
|
127
|
+
## References
|
|
128
|
+
|
|
129
|
+
- [Create flag compatibility matrix](references/create-flag-compatibility-matrix.md)
|
|
130
|
+
- [Framework adapter options](references/framework-adapters.md)
|
|
131
|
+
- [Deployment provider options](references/deployment-providers.md)
|
|
132
|
+
- [Toolchain options](references/toolchains.md)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Create Flag Compatibility Matrix
|
|
2
|
+
|
|
3
|
+
Targets `@tanstack/cli` v0.61.0.
|
|
4
|
+
|
|
5
|
+
## Compatibility
|
|
6
|
+
|
|
7
|
+
| Flag | Works with normal create | Works with `--router-only` | Notes |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| `--framework` | yes | yes | Framework is still honored in both modes. |
|
|
10
|
+
| `--toolchain` | yes | yes | Toolchain selection remains available. |
|
|
11
|
+
| `--add-ons` | yes | no | Ignored in router-only mode. |
|
|
12
|
+
| `--deployment` | yes | no | Ignored in router-only mode. |
|
|
13
|
+
| `--template` / `--starter` | yes | no | Ignored in router-only mode. |
|
|
14
|
+
| `--template-id` | yes | no | Ignored in router-only mode. |
|
|
15
|
+
| `--tailwind` / `--no-tailwind` | deprecated/ignored | deprecated/ignored | Tailwind is always enabled. |
|
|
16
|
+
|
|
17
|
+
Source: `packages/cli/src/command-line.ts:337`
|
|
18
|
+
|
|
19
|
+
## Recommended command construction order
|
|
20
|
+
|
|
21
|
+
1. Choose mode (`--router-only` or full scaffold).
|
|
22
|
+
2. If full scaffold, resolve add-ons and deployment first.
|
|
23
|
+
3. Add framework and toolchain.
|
|
24
|
+
4. Pass explicit add-on ids and use `-y` only after flags are final.
|
|
25
|
+
|
|
26
|
+
## Safe presets
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Full scaffold preset
|
|
30
|
+
npx @tanstack/cli create app --framework react --add-ons tanstack-query --deployment netlify -y
|
|
31
|
+
|
|
32
|
+
# Router-only preset
|
|
33
|
+
npx @tanstack/cli create app --router-only --framework react --toolchain biome -y
|
|
34
|
+
```
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Deployment Provider Options
|
|
2
|
+
|
|
3
|
+
Targets `@tanstack/cli` v0.61.0.
|
|
4
|
+
|
|
5
|
+
## Common providers
|
|
6
|
+
|
|
7
|
+
- `cloudflare`
|
|
8
|
+
- `netlify`
|
|
9
|
+
- `railway`
|
|
10
|
+
- `nitro`
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx @tanstack/cli create app --deployment cloudflare -y
|
|
16
|
+
npx @tanstack/cli create app --deployment netlify -y
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Deployment providers are exclusive; choose one per scaffold.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Framework Adapter Options
|
|
2
|
+
|
|
3
|
+
Targets `@tanstack/cli` v0.61.0.
|
|
4
|
+
|
|
5
|
+
## Supported values
|
|
6
|
+
|
|
7
|
+
- `react`
|
|
8
|
+
- `solid`
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npx @tanstack/cli create app --framework react -y
|
|
14
|
+
npx @tanstack/cli create app --framework solid -y
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Framework selection controls scaffold variant and add-on compatibility surfaces.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Toolchain Options
|
|
2
|
+
|
|
3
|
+
Targets `@tanstack/cli` v0.61.0.
|
|
4
|
+
|
|
5
|
+
## Supported values
|
|
6
|
+
|
|
7
|
+
- `eslint`
|
|
8
|
+
- `biome`
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npx @tanstack/cli create app --toolchain eslint -y
|
|
14
|
+
npx @tanstack/cli create app --toolchain biome -y
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Toolchain choices are exclusive and affect generated lint configuration.
|