@tanstack/cli 0.61.1 → 0.62.0

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.
Files changed (46) hide show
  1. package/package.json +5 -1
  2. package/skills/CHANGELOG.md +18 -0
  3. package/skills/add-addons-existing-app/SKILL.md +113 -0
  4. package/skills/choose-ecosystem-integrations/SKILL.md +140 -0
  5. package/skills/choose-ecosystem-integrations/references/authentication-providers.md +19 -0
  6. package/skills/choose-ecosystem-integrations/references/data-layer-providers.md +20 -0
  7. package/skills/choose-ecosystem-integrations/references/deployment-targets.md +19 -0
  8. package/skills/create-app-scaffold/SKILL.md +132 -0
  9. package/skills/create-app-scaffold/references/create-flag-compatibility-matrix.md +34 -0
  10. package/skills/create-app-scaffold/references/deployment-providers.md +19 -0
  11. package/skills/create-app-scaffold/references/framework-adapters.md +17 -0
  12. package/skills/create-app-scaffold/references/toolchains.md +17 -0
  13. package/skills/maintain-custom-addons-dev-watch/SKILL.md +118 -0
  14. package/skills/query-docs-library-metadata/SKILL.md +85 -0
  15. package/skills/query-docs-library-metadata/references/discovery-command-output-schemas.md +70 -0
  16. package/CHANGELOG.md +0 -815
  17. package/playwright-report/index.html +0 -85
  18. package/playwright.config.ts +0 -21
  19. package/src/bin.ts +0 -15
  20. package/src/cli.ts +0 -1099
  21. package/src/command-line.ts +0 -612
  22. package/src/dev-watch.ts +0 -564
  23. package/src/discovery.ts +0 -209
  24. package/src/file-syncer.ts +0 -263
  25. package/src/index.ts +0 -21
  26. package/src/options.ts +0 -280
  27. package/src/types.ts +0 -27
  28. package/src/ui-environment.ts +0 -74
  29. package/src/ui-prompts.ts +0 -387
  30. package/src/utils.ts +0 -30
  31. package/test-results/.last-run.json +0 -4
  32. package/tests/command-line.test.ts +0 -703
  33. package/tests/index.test.ts +0 -9
  34. package/tests/options.test.ts +0 -281
  35. package/tests/setupVitest.ts +0 -6
  36. package/tests/ui-environment.test.ts +0 -97
  37. package/tests/ui-prompts.test.ts +0 -233
  38. package/tests-e2e/addons-smoke.spec.ts +0 -31
  39. package/tests-e2e/create-smoke.spec.ts +0 -39
  40. package/tests-e2e/helpers.ts +0 -526
  41. package/tests-e2e/matrix-opportunistic.spec.ts +0 -142
  42. package/tests-e2e/router-only-smoke.spec.ts +0 -54
  43. package/tests-e2e/solid-smoke.spec.ts +0 -26
  44. package/tests-e2e/templates-smoke.spec.ts +0 -52
  45. package/tsconfig.json +0 -17
  46. package/vitest.config.js +0 -8
package/package.json CHANGED
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "name": "@tanstack/cli",
3
- "version": "0.61.1",
3
+ "version": "0.62.0",
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
  },
@@ -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.
@@ -0,0 +1,118 @@
1
+ ---
2
+ name: maintain-custom-addons-dev-watch
3
+ description: >
4
+ Build and iterate custom add-ons/templates with tanstack add-on init,
5
+ add-on compile, add-on dev, and tanstack dev --dev-watch, including sync
6
+ loop preconditions, watch-path validation, and project metadata constraints.
7
+ type: lifecycle
8
+ library: tanstack-cli
9
+ library_version: "0.61.0"
10
+ requires:
11
+ - add-addons-existing-app
12
+ ---
13
+
14
+ # Maintain Custom Add-ons In Dev Watch
15
+
16
+ Use this skill for local add-on authoring workflows where you continuously compile and sync package output into a target app.
17
+
18
+ ## Setup
19
+
20
+ ```bash
21
+ npx @tanstack/cli add-on init
22
+ npx @tanstack/cli add-on compile
23
+ ```
24
+
25
+ ## Core Patterns
26
+
27
+ ### Run add-on dev loop while editing source
28
+
29
+ ```bash
30
+ npx @tanstack/cli add-on dev
31
+ ```
32
+
33
+ ### Sync watched package output into target app
34
+
35
+ ```bash
36
+ npx @tanstack/cli dev --dev-watch ../my-addon-package
37
+ ```
38
+
39
+ ### Re-run compile before apply when changing metadata
40
+
41
+ ```bash
42
+ npx @tanstack/cli add-on compile
43
+ npx @tanstack/cli add my-custom-addon
44
+ ```
45
+
46
+ ## Common Mistakes
47
+
48
+ ### HIGH Use --dev-watch with --no-install
49
+
50
+ Wrong:
51
+ ```bash
52
+ npx @tanstack/cli dev --dev-watch ../my-addon-package --no-install
53
+ ```
54
+
55
+ Correct:
56
+ ```bash
57
+ npx @tanstack/cli dev --dev-watch ../my-addon-package
58
+ ```
59
+
60
+ Dev-watch rejects `--no-install`, so automated loops fail before any sync work starts.
61
+
62
+ Source: packages/cli/src/dev-watch.ts:112
63
+
64
+ ### HIGH Start dev-watch without valid package entry
65
+
66
+ Wrong:
67
+ ```bash
68
+ npx @tanstack/cli dev --dev-watch ../missing-or-invalid-package
69
+ ```
70
+
71
+ Correct:
72
+ ```bash
73
+ npx @tanstack/cli dev --dev-watch ../valid-addon-package
74
+ ```
75
+
76
+ Watch setup validates path and package metadata first, so invalid targets fail before file syncing begins.
77
+
78
+ Source: packages/cli/src/dev-watch.ts:100
79
+
80
+ ### CRITICAL Author add-on from code-router project
81
+
82
+ Wrong:
83
+ ```bash
84
+ npx @tanstack/cli add-on init
85
+ ```
86
+
87
+ Correct:
88
+ ```bash
89
+ # Run add-on init from a file-router project
90
+ npx @tanstack/cli add-on init
91
+ ```
92
+
93
+ Custom add-on authoring expects file-router mode and exits when run from incompatible project modes.
94
+
95
+ Source: packages/create/src/custom-add-ons/add-on.ts
96
+
97
+ ### HIGH Run add-on workflows without scaffold metadata
98
+
99
+ Wrong:
100
+ ```bash
101
+ npx @tanstack/cli add-on dev
102
+ ```
103
+
104
+ Correct:
105
+ ```bash
106
+ # Run in a project scaffolded by TanStack CLI (contains .cta.json), then:
107
+ npx @tanstack/cli add-on dev
108
+ ```
109
+
110
+ Custom add-on flows rely on persisted scaffold options, so missing metadata blocks initialization and update paths.
111
+
112
+ Source: packages/create/src/custom-add-ons/shared.ts:158
113
+
114
+ ### HIGH Tension: Backwards support vs deterministic automation
115
+
116
+ This domain's patterns conflict with add-addons-existing-app. Tooling assumes reusable automation, but hidden metadata preconditions from legacy support make add-on loops non-portable across repositories.
117
+
118
+ See also: add-addons-existing-app/SKILL.md § Common Mistakes