workspai 0.45.0 → 0.46.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 (135) hide show
  1. package/README.md +242 -516
  2. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +4 -0
  3. package/contracts/extension-cli-compatibility.v1.json +3 -2
  4. package/contracts/published-contract-catalog.v1.json +7 -1
  5. package/contracts/runtime-command-surface.v1.json +41 -6
  6. package/contracts/workspace-archive-capabilities.v1.json +17 -6
  7. package/contracts/workspace-intelligence/studio-blocker-handoff.v1.json +4 -0
  8. package/contracts/workspace-intelligence/workspace-intelligence-run.v1.json +207 -0
  9. package/contracts/workspace-intelligence-architecture.v1.json +1 -1
  10. package/contracts/workspace-intelligence-chain.v1.json +37 -1
  11. package/dist/analyze-BEBEZSZK.js +1 -0
  12. package/dist/{artifact-remediation-plan-WLZGROUU.js → artifact-remediation-plan-FFQSESAM.js} +1 -1
  13. package/dist/autopilot-release-WUR4CQIT.js +1 -0
  14. package/dist/chunk-2G7FASAO.js +2 -0
  15. package/dist/{chunk-5GNT4RJI.js → chunk-4EPHWD27.js} +1 -1
  16. package/dist/{chunk-J4AICQFB.js → chunk-4LGXSBCN.js} +1 -1
  17. package/dist/chunk-52PBRX7F.js +1 -0
  18. package/dist/{chunk-2QOWRBQD.js → chunk-6IIZJQLV.js} +1 -1
  19. package/dist/{chunk-HYJK7W3B.js → chunk-CVHMUSRX.js} +1 -1
  20. package/dist/{chunk-7UZVOYF5.js → chunk-DIPD72H4.js} +1 -1
  21. package/dist/chunk-EFYHGCGX.js +2 -0
  22. package/dist/chunk-EYJ2CQSK.js +1 -0
  23. package/dist/chunk-FPJNWPKU.js +1 -0
  24. package/dist/{chunk-JP25YL3J.js → chunk-FTY7GGXJ.js} +2 -2
  25. package/dist/chunk-FWRXA435.js +2 -0
  26. package/dist/chunk-FXQJX34Z.js +1 -0
  27. package/dist/chunk-HDURFXW5.js +2 -0
  28. package/dist/chunk-HMUKBW2S.js +4 -0
  29. package/dist/{chunk-DXPU4DDV.js → chunk-J5PIZCAU.js} +92 -78
  30. package/dist/{chunk-6ZENXBMG.js → chunk-K4WNYXKK.js} +7 -7
  31. package/dist/chunk-MER6ZBN2.js +13 -0
  32. package/dist/chunk-N7DV5L7C.js +1 -0
  33. package/dist/{chunk-P424XYHP.js → chunk-PRBVYW3T.js} +1 -1
  34. package/dist/{chunk-WANW4QA4.js → chunk-QA5BGEQW.js} +1 -1
  35. package/dist/chunk-QZLIURER.js +13 -0
  36. package/dist/{chunk-P7SCWJFG.js → chunk-RIEF2DDX.js} +1 -1
  37. package/dist/{chunk-V2H2KRMZ.js → chunk-SXMTSV5M.js} +1 -1
  38. package/dist/chunk-SXPY523X.js +1 -0
  39. package/dist/{chunk-XIVFLY6G.js → chunk-UQWOVV6V.js} +1 -1
  40. package/dist/chunk-V3LRQZ36.js +1 -0
  41. package/dist/chunk-VFDM65IE.js +80 -0
  42. package/dist/{chunk-KU4S7RCM.js → chunk-WPEEC5BX.js} +1 -1
  43. package/dist/chunk-WYFPXTTS.js +2 -0
  44. package/dist/{chunk-K63BSU56.js → chunk-YUATNVOT.js} +62 -51
  45. package/dist/{chunk-OOOPYUL2.js → chunk-ZKAI3PJE.js} +1 -1
  46. package/dist/{create-KFR6FLRT.js → create-WCV3L6XH.js} +1 -1
  47. package/dist/doctor-5BWM2EMJ.js +1 -0
  48. package/dist/{dotnet-webapi-clean-BYUUHX5Y.js → dotnet-webapi-clean-6TVFBTVI.js} +20 -20
  49. package/dist/{gofiber-standard-B6UK5GR7.js → gofiber-standard-2BL7GWZB.js} +1 -1
  50. package/dist/{gogin-standard-BXU44VEM.js → gogin-standard-XGP3KBXA.js} +1 -1
  51. package/dist/index.d.ts +88 -13
  52. package/dist/index.js +327 -324
  53. package/dist/pipeline-ORIWVVYM.js +5 -0
  54. package/dist/{platform-capabilities-YICBF4FA.js → platform-capabilities-2B4QMZXE.js} +1 -1
  55. package/dist/{pythonRapidkitExec-UJYIB6FL.js → pythonRapidkitExec-CVCIK225.js} +1 -1
  56. package/dist/{springboot-standard-PEHDKH2L.js → springboot-standard-JJNUID6M.js} +6 -6
  57. package/dist/workspace-7OXW5YTJ.js +1 -0
  58. package/dist/{workspace-agent-sync-G5YVI3BJ.js → workspace-agent-sync-O4IA6VOA.js} +1 -1
  59. package/dist/workspace-archive-H74NBBNW.js +10 -0
  60. package/dist/{workspace-context-E3UFWL5X.js → workspace-context-R7IPUBPG.js} +1 -1
  61. package/dist/workspace-contract-HKCMOMFE.js +1 -0
  62. package/dist/workspace-explain-GOPQYTPQ.js +1 -0
  63. package/dist/workspace-explain-contract-SVFJAAEI.js +1 -0
  64. package/dist/{workspace-feedback-YY6WQPWQ.js → workspace-feedback-REOS36ZZ.js} +1 -1
  65. package/dist/{workspace-foundation-3C2DLCVI.js → workspace-foundation-KXT4QI5O.js} +1 -1
  66. package/dist/{workspace-history-VF3CHDYQ.js → workspace-history-OGOVSKZG.js} +1 -1
  67. package/dist/{workspace-intelligence-3GG7GEDQ.js → workspace-intelligence-7IESQSXY.js} +1 -1
  68. package/dist/workspace-intelligence-runner-6GJ5M4HB.js +1 -0
  69. package/dist/{workspace-mcp-serve-MJMUV4RY.js → workspace-mcp-serve-FRVWBO36.js} +1 -1
  70. package/dist/{workspace-model-NG45SRM5.js → workspace-model-PPYX7B4S.js} +1 -1
  71. package/dist/workspace-python-engine-state-2MLKJYQG.js +2 -0
  72. package/dist/workspace-registry-summary-SZ46R5PD.js +1 -0
  73. package/dist/workspace-run-V3KKHTVF.js +1 -0
  74. package/dist/{workspace-verify-ZNT6JX7D.js → workspace-verify-MFQ7IXGD.js} +1 -1
  75. package/dist/{workspace-watch-W47T4RX2.js → workspace-watch-SOPZHRWA.js} +1 -1
  76. package/docs/AI_DYNAMIC_INTEGRATION.md +29 -33
  77. package/docs/AI_FEATURES.md +18 -27
  78. package/docs/AI_QUICKSTART.md +7 -4
  79. package/docs/DEVELOPMENT.md +5 -5
  80. package/docs/From Code to Shared Understanding.png +0 -0
  81. package/docs/OPEN_SOURCE_USER_SCENARIOS.md +23 -2
  82. package/docs/OPTIMIZATION_GUIDE.md +19 -51
  83. package/docs/PACKAGE_MANAGER_POLICY.md +4 -1
  84. package/docs/README.md +30 -3
  85. package/docs/SECURITY.md +13 -6
  86. package/docs/SETUP.md +6 -3
  87. package/docs/UTILITIES.md +8 -20
  88. package/docs/WORKSPACE_MARKER_SPEC.md +27 -20
  89. package/docs/ci-workflows.md +19 -5
  90. package/docs/commands-reference.md +37 -9
  91. package/docs/config-file-guide.md +64 -247
  92. package/docs/contracts/ARTIFACT_CATALOG.md +14 -2
  93. package/docs/contracts/CLI_LOG_EVENT_STREAM.md +1 -1
  94. package/docs/contracts/README.md +5 -2
  95. package/docs/contracts/RUNTIME_ACCEPTANCE_MATRIX.md +4 -4
  96. package/docs/contracts/RUNTIME_SUPPORT_MATRIX.md +14 -10
  97. package/docs/creating-workspaces-and-projects.md +649 -0
  98. package/docs/doctor-command.md +5 -4
  99. package/docs/examples/ci-agent-grounding.yml +16 -10
  100. package/docs/from-code-to-shared-understanding.md +69 -38
  101. package/docs/workspace-intelligence-runner.md +186 -0
  102. package/docs/workspace-operations.md +29 -11
  103. package/docs/workspace-run.md +4 -1
  104. package/package.json +9 -8
  105. package/rapidkit.config.example.cjs +5 -5
  106. package/scripts/enforce-package-manager.cjs +1 -1
  107. package/scripts/prepack-enterprise.mjs +4 -0
  108. package/workspai.config.example.cjs +12 -47
  109. package/dist/analyze-YLV7NVLF.js +0 -1
  110. package/dist/autopilot-release-YBN3SWAA.js +0 -1
  111. package/dist/chunk-2K3GYCPS.js +0 -1
  112. package/dist/chunk-42G2OK64.js +0 -1
  113. package/dist/chunk-5AKYMAIL.js +0 -1
  114. package/dist/chunk-5PVEQ6CZ.js +0 -13
  115. package/dist/chunk-6AA3WWQZ.js +0 -2
  116. package/dist/chunk-7RIWU5TZ.js +0 -1
  117. package/dist/chunk-BJLE5CH7.js +0 -4
  118. package/dist/chunk-G3H5R3RR.js +0 -1
  119. package/dist/chunk-IMUU5Q2V.js +0 -13
  120. package/dist/chunk-KPPGZCUW.js +0 -78
  121. package/dist/chunk-LCRROMRR.js +0 -2
  122. package/dist/chunk-QWU2CZBG.js +0 -2
  123. package/dist/chunk-XZGVNGRB.js +0 -1
  124. package/dist/chunk-ZWO6K24C.js +0 -2
  125. package/dist/doctor-YJDM5XBH.js +0 -1
  126. package/dist/imported-projects-registry-FOIE27WT.js +0 -1
  127. package/dist/pipeline-FEDYO3IA.js +0 -5
  128. package/dist/workspace-PLXOO6ST.js +0 -1
  129. package/dist/workspace-archive-EEGLHZDW.js +0 -10
  130. package/dist/workspace-contract-LQJDZV36.js +0 -1
  131. package/dist/workspace-explain-G74ZIF23.js +0 -1
  132. package/dist/workspace-explain-contract-KT757JGQ.js +0 -1
  133. package/dist/workspace-python-engine-state-MTWIIZPY.js +0 -2
  134. package/dist/workspace-registry-summary-JM2XY52C.js +0 -1
  135. package/dist/workspace-run-WEQYIERE.js +0 -1
@@ -0,0 +1,649 @@
1
+ # Creating Workspaces and Projects
2
+
3
+ This guide explains, in plain language, what Workspai does when you create a
4
+ workspace or a project. It covers interactive commands, automation, project
5
+ locations, workspace linking, supported kits, and the most important flags.
6
+
7
+ For a compact list of command syntax, see
8
+ [commands-reference.md](./commands-reference.md).
9
+
10
+ ## The two things you can create
11
+
12
+ A **workspace** is the governed boundary that holds project registrations,
13
+ policies, contracts, and Workspace Intelligence reports.
14
+
15
+ A **project** is an application or service, such as a FastAPI API, Go service,
16
+ Spring Boot service, .NET API, or frontend application.
17
+
18
+ The canonical commands are:
19
+
20
+ ```bash
21
+ npx workspai create workspace <name>
22
+ npx workspai create project <kit> <name>
23
+ ```
24
+
25
+ Use the canonical commands in scripts and documentation. The older
26
+ `workspai <name> --template <kit>` form is supported for compatibility, but it
27
+ does not have exactly the same behavior.
28
+
29
+ ## Quick decision table
30
+
31
+ | What you want | Command |
32
+ | --------------------------------------------------------------- | --------------------------------------------------------------------------- |
33
+ | Choose interactively | `npx workspai create` |
34
+ | Create a managed workspace | `npx workspai create workspace platform --yes` |
35
+ | Create a workspace under the current directory | `npx workspai create workspace platform --here --yes` |
36
+ | Create a project and use the current/default workspace behavior | `npx workspai create project gofiber.standard api` |
37
+ | Turn the current folder into a workspace before creating | `npx workspai create project gofiber.standard api --create-workspace --yes` |
38
+ | Create a project without workspace management | `npx workspai create project gofiber.standard api --no-workspace --yes` |
39
+ | Preview a supported create plan | `npx workspai create project frontend.nextjs web --dry-run` |
40
+
41
+ # Creating a workspace
42
+
43
+ ## Create in the managed Workspai location
44
+
45
+ ```bash
46
+ npx workspai create workspace platform --yes
47
+ ```
48
+
49
+ The default target is:
50
+
51
+ ```text
52
+ ~/.workspai/workspaces/platform
53
+ ```
54
+
55
+ With `--yes`, Workspai does not ask questions. If you do not provide a
56
+ profile, it uses `minimal`.
57
+
58
+ ## Create under the current directory
59
+
60
+ ```bash
61
+ npx workspai create workspace platform --here --yes
62
+ ```
63
+
64
+ If the current directory is `/home/me/code`, the result is:
65
+
66
+ ```text
67
+ /home/me/code/platform
68
+ ```
69
+
70
+ `--here` means "create the named workspace as a child of this directory." It
71
+ does not turn the current directory itself into a workspace.
72
+
73
+ ## Create under another parent directory
74
+
75
+ ```bash
76
+ npx workspai create workspace platform --output /data/workspaces --yes
77
+ ```
78
+
79
+ The result is:
80
+
81
+ ```text
82
+ /data/workspaces/platform
83
+ ```
84
+
85
+ `--output` is always the parent directory. Workspai adds the workspace name to
86
+ it.
87
+
88
+ Relative output paths are resolved from the current directory:
89
+
90
+ ```bash
91
+ npx workspai create workspace platform --output teams --yes
92
+ ```
93
+
94
+ This creates `<current-directory>/teams/platform`.
95
+
96
+ ## Use the interactive workspace wizard
97
+
98
+ ```bash
99
+ npx workspai create workspace
100
+ ```
101
+
102
+ When values are missing, Workspai can ask for:
103
+
104
+ - The workspace name
105
+ - The managed home or current-directory location
106
+ - The author name
107
+ - The workspace profile
108
+ - Whether to install the optional Python engine
109
+ - The Python environment method when installation is selected
110
+
111
+ You can also start one level higher:
112
+
113
+ ```bash
114
+ npx workspai create
115
+ ```
116
+
117
+ In an interactive terminal, this first asks whether you want to create a
118
+ workspace or a project.
119
+
120
+ ## Workspace profiles
121
+
122
+ | Profile | Intended runtime scope | Python engine by default |
123
+ | ------------- | ------------------------------------------------ | ------------------------ |
124
+ | `minimal` | Lightweight workspace foundation | No |
125
+ | `node-only` | Node.js projects | No |
126
+ | `go-only` | Go projects | No |
127
+ | `java-only` | Java projects | No |
128
+ | `dotnet-only` | .NET projects | No |
129
+ | `python-only` | Python projects | Yes |
130
+ | `polyglot` | Multiple runtimes | Yes |
131
+ | `enterprise` | Multiple runtimes with governance-oriented setup | Yes |
132
+
133
+ Example:
134
+
135
+ ```bash
136
+ npx workspai create workspace platform --profile go-only --yes
137
+ ```
138
+
139
+ ## Keep a Python-aware profile without installing Python now
140
+
141
+ ```bash
142
+ npx workspai create workspace platform \
143
+ --profile polyglot \
144
+ --skip-python-engine \
145
+ --yes
146
+ ```
147
+
148
+ The workspace remains `polyglot`, but its metadata records the Python engine as
149
+ `skipped`. Workspace Intelligence, project registration, import, adopt, model,
150
+ context, and verify remain available.
151
+
152
+ Use `--skip-python-engine` for workspace creation. For project creation, use
153
+ `--skip-install` instead.
154
+
155
+ ## If Python is not installed
156
+
157
+ Python-free profiles do not require Python.
158
+
159
+ For a Python-aware profile, interactive mode offers guidance and fallback
160
+ choices. In non-interactive `--yes` mode, Workspai falls back to a Python-free
161
+ profile when Python is unavailable:
162
+
163
+ | Requested profile | Fallback profile |
164
+ | ----------------- | ---------------- |
165
+ | `python-only` | `minimal` |
166
+ | `polyglot` | `node-only` |
167
+ | `enterprise` | `node-only` |
168
+
169
+ If Poetry is selected but unavailable, Workspai can use a local virtual
170
+ environment instead.
171
+
172
+ ## Git behavior for a new workspace
173
+
174
+ Git initialization is enabled by default. Disable it with:
175
+
176
+ ```bash
177
+ npx workspai create workspace platform --skip-git --yes
178
+ ```
179
+
180
+ If the target is already inside another Git worktree, Workspai avoids creating
181
+ a nested repository. A missing Git installation or a failed initial commit
182
+ produces a warning but does not remove an otherwise valid workspace.
183
+
184
+ ## Preview workspace creation
185
+
186
+ ```bash
187
+ npx workspai create workspace platform \
188
+ --profile polyglot \
189
+ --skip-python-engine \
190
+ --skip-git \
191
+ --dry-run
192
+ ```
193
+
194
+ The preview shows the target, profile, Python plan, Git plan, expected files,
195
+ and next steps. It does not create a workspace, install Python, initialize Git,
196
+ or update a registry.
197
+
198
+ ## Existing target directories
199
+
200
+ Workspace creation does not merge into or overwrite an existing target. If the
201
+ resolved directory already exists, choose another name or output parent.
202
+
203
+ To bring an existing repository into Workspai, use `adopt` or `import` instead:
204
+
205
+ ```bash
206
+ npx workspai adopt /path/to/project
207
+ ```
208
+
209
+ ## Main workspace files
210
+
211
+ A normal workspace includes:
212
+
213
+ ```text
214
+ .workspai-workspace
215
+ .workspai/workspace.json
216
+ .workspai/toolchain.lock
217
+ .workspai/policies.yml
218
+ .workspai/cache-config.yml
219
+ .workspai/workspace.contract.json
220
+ .workspai/workspace-registry.v1.json
221
+ .gitignore
222
+ README.md
223
+ ```
224
+
225
+ The user-level workspace registry is stored under the Workspai home, normally:
226
+
227
+ ```text
228
+ ~/.workspai/workspaces.json
229
+ ```
230
+
231
+ # Creating a project
232
+
233
+ ## Choose a kit interactively
234
+
235
+ ```bash
236
+ npx workspai create project
237
+ ```
238
+
239
+ Workspai asks for a kit and project name. You can also use the top-level wizard:
240
+
241
+ ```bash
242
+ npx workspai create
243
+ ```
244
+
245
+ If you choose project creation, the same project flow is used.
246
+
247
+ When the terminal is interactive and the current directory is not inside a
248
+ workspace, **every supported backend and frontend kit** shows the workspace
249
+ management question before scaffolding:
250
+
251
+ ```text
252
+ This project is outside a Workspai workspace. How should it be managed?
253
+
254
+ 1. Link it to the managed default workspace (recommended)
255
+ 2. Turn the current folder into a workspace
256
+ 3. Create it without workspace management
257
+ ```
258
+
259
+ This applies to direct commands and interactive kit selection.
260
+
261
+ ## Create a project with an explicit kit
262
+
263
+ ```bash
264
+ npx workspai create project <kit> <name>
265
+ ```
266
+
267
+ Examples:
268
+
269
+ ```bash
270
+ npx workspai create project fastapi.standard api
271
+ npx workspai create project gofiber.standard gateway
272
+ npx workspai create project springboot.standard orders
273
+ npx workspai create project dotnet.webapi.clean billing
274
+ npx workspai create project frontend.nextjs dashboard
275
+ ```
276
+
277
+ The shorter frontend alias remains available:
278
+
279
+ ```bash
280
+ npx workspai create frontend nextjs dashboard
281
+ ```
282
+
283
+ ## Supported backend kits
284
+
285
+ | Kit | Runtime | Scaffold owner | Core module mutation |
286
+ | --------------------- | ------- | -------------------- | -------------------- |
287
+ | `fastapi.standard` | Python | RapidKit Core | Yes |
288
+ | `fastapi.ddd` | Python | RapidKit Core | Yes |
289
+ | `nestjs.standard` | Node.js | RapidKit Core bridge | Yes |
290
+ | `gofiber.standard` | Go | Workspai npm CLI | No |
291
+ | `gogin.standard` | Go | Workspai npm CLI | No |
292
+ | `springboot.standard` | Java | Workspai npm CLI | No |
293
+ | `dotnet.webapi.clean` | .NET | Workspai npm CLI | No |
294
+
295
+ NestJS runs on Node.js, but its current scaffold is provided through the
296
+ RapidKit Core bridge.
297
+
298
+ ## Supported frontend generators
299
+
300
+ Workspai has official-generator paths for:
301
+
302
+ | Frontend | Common kit name |
303
+ | -------------------- | ----------------------------- |
304
+ | Next.js | `nextjs` or `frontend.nextjs` |
305
+ | React Router / Remix | `remix` |
306
+ | React with Vite | `vite-react` |
307
+ | Vue with Vite | `vite-vue` |
308
+ | Svelte with Vite | `vite-svelte` |
309
+ | Solid with Vite | `vite-solid` |
310
+ | Vanilla Vite | `vite-vanilla` |
311
+ | Nuxt | `nuxt` |
312
+ | Angular | `angular` |
313
+ | Astro | `astro` |
314
+ | SvelteKit | `sveltekit` |
315
+
316
+ The ecosystem's official generator creates the application. Workspai then adds
317
+ project metadata and performs the selected workspace registration.
318
+
319
+ # Where the project is created
320
+
321
+ The project path is always:
322
+
323
+ ```text
324
+ (--output or current directory) + project name
325
+ ```
326
+
327
+ Without `--output`:
328
+
329
+ ```bash
330
+ npx workspai create project gofiber.standard gateway
331
+ ```
332
+
333
+ This creates `<current-directory>/gateway`.
334
+
335
+ With a relative output parent:
336
+
337
+ ```bash
338
+ npx workspai create project gofiber.standard gateway --output services
339
+ ```
340
+
341
+ This creates `<current-directory>/services/gateway`.
342
+
343
+ With an absolute output parent:
344
+
345
+ ```bash
346
+ npx workspai create project gofiber.standard gateway --output /data/apps
347
+ ```
348
+
349
+ This creates `/data/apps/gateway`.
350
+
351
+ Workspai does not overwrite or merge into an existing project directory.
352
+
353
+ # Project creation inside a workspace
354
+
355
+ ## Create at the workspace root
356
+
357
+ If the current directory is `/home/me/platform` and it is a workspace:
358
+
359
+ ```bash
360
+ npx workspai create project gofiber.standard gateway
361
+ ```
362
+
363
+ The project is created at `/home/me/platform/gateway` and registered with that
364
+ workspace.
365
+
366
+ ## Create from a workspace subdirectory
367
+
368
+ If the current directory is `/home/me/platform/services`, the same command
369
+ creates `/home/me/platform/services/gateway`. Workspai does not force every
370
+ project into the workspace root.
371
+
372
+ ## Create outside the current workspace with `--output`
373
+
374
+ ```bash
375
+ npx workspai create project gofiber.standard gateway --output /data/apps
376
+ ```
377
+
378
+ The project stays at `/data/apps/gateway` and is linked to the current
379
+ workspace as an external project. Workspai does not move or copy its source.
380
+
381
+ ## Create directly inside another workspace
382
+
383
+ If the final project path is inside workspace B but the command was launched
384
+ from workspace A, the workspace found from the final project path takes
385
+ priority. The project is registered with workspace B.
386
+
387
+ # Project creation outside a workspace
388
+
389
+ ## Interactive behavior
390
+
391
+ When no workspace is found and you did not provide an explicit workspace flag,
392
+ Workspai asks how the project should be managed before scaffolding.
393
+
394
+ The same question is shown for:
395
+
396
+ - RapidKit Core-backed projects
397
+ - Go, Spring Boot, and .NET npm-backed projects
398
+ - All supported frontend generators
399
+ - Direct `create project <kit> <name>` commands
400
+ - Interactive `create` and `create project` kit selection
401
+
402
+ ## Choice 1: Link to the managed default workspace
403
+
404
+ This is the recommended option.
405
+
406
+ The project is created in the path you requested. After a successful scaffold,
407
+ Workspai creates or reuses:
408
+
409
+ ```text
410
+ ~/.workspai/workspaces/workspai
411
+ ```
412
+
413
+ The managed default workspace uses:
414
+
415
+ | Setting | Value |
416
+ | ----------------------------- | ------------------ |
417
+ | Name | `workspai` |
418
+ | Profile | `polyglot` |
419
+ | Python engine | `skipped` |
420
+ | Git initialization | skipped |
421
+ | External project relationship | `linked` / adopted |
422
+
423
+ The project is not moved and is not copied.
424
+
425
+ The workspace is created only after the project scaffold succeeds. A failed
426
+ scaffold does not create a new managed default workspace for that project.
427
+
428
+ ## Choice 2: Turn the current folder into a workspace
429
+
430
+ Choose this interactively, or use:
431
+
432
+ ```bash
433
+ npx workspai create project gofiber.standard gateway \
434
+ --create-workspace \
435
+ --yes
436
+ ```
437
+
438
+ Unlike `create workspace --here`, this turns the current directory itself into
439
+ a workspace. It then creates the project under the requested output parent.
440
+
441
+ For example, from `/home/me/platform`:
442
+
443
+ ```text
444
+ Workspace: /home/me/platform
445
+ Project: /home/me/platform/gateway
446
+ ```
447
+
448
+ This uses the full current-folder workspace registration flow.
449
+
450
+ ## Choice 3: Create without workspace management
451
+
452
+ Choose this interactively, or use:
453
+
454
+ ```bash
455
+ npx workspai create project gofiber.standard gateway \
456
+ --no-workspace \
457
+ --yes
458
+ ```
459
+
460
+ The project is scaffolded, but Workspai does not:
461
+
462
+ - Create the managed default workspace
463
+ - Turn the current directory into a workspace
464
+ - Add the project to the global workspace registry
465
+ - Link or adopt the project
466
+ - Synchronize a workspace contract
467
+
468
+ Do not combine `--create-workspace` and `--no-workspace`. In the current CLI,
469
+ `--no-workspace` takes precedence.
470
+
471
+ ## Non-interactive behavior and `--yes`
472
+
473
+ In CI, a non-interactive terminal, or when `--yes` is supplied, Workspai cannot
474
+ ask the three-way question. If no explicit workspace flag is present, it uses
475
+ the managed default workspace behavior.
476
+
477
+ ```bash
478
+ npx workspai create project gofiber.standard gateway --yes
479
+ ```
480
+
481
+ To opt out in automation, be explicit:
482
+
483
+ ```bash
484
+ npx workspai create project gofiber.standard gateway --no-workspace --yes
485
+ ```
486
+
487
+ To turn the current directory into a workspace in automation:
488
+
489
+ ```bash
490
+ npx workspai create project gofiber.standard gateway --create-workspace --yes
491
+ ```
492
+
493
+ # How external linking works
494
+
495
+ If a project is physically outside its workspace, Workspai records a linked
496
+ relationship. The source remains in its original path.
497
+
498
+ Project metadata includes:
499
+
500
+ ```text
501
+ .workspai/project.json
502
+ .workspai/adopt.json
503
+ .workspai/adopt-readiness.json
504
+ ```
505
+
506
+ Workspace metadata includes:
507
+
508
+ ```text
509
+ .workspai/imported-projects.json
510
+ .workspai/workspace.contract.json
511
+ .workspai/workspace-registry.v1.json
512
+ ```
513
+
514
+ The adoption policy records:
515
+
516
+ ```text
517
+ mode: linked
518
+ moved_source: false
519
+ copied_source: false
520
+ ```
521
+
522
+ Projects physically inside a workspace are registered normally and generally
523
+ do not need `adopt.json`.
524
+
525
+ # Common project flags
526
+
527
+ | Flag | Meaning |
528
+ | -------------------- | ------------------------------------------------------------------------------- |
529
+ | `--yes` | Do not ask optional questions; use managed-default behavior outside a workspace |
530
+ | `--output <parent>` | Choose the parent directory for the project |
531
+ | `--create-workspace` | Turn the current directory into a workspace before scaffolding |
532
+ | `--no-workspace` | Scaffold without workspace registration or linking |
533
+ | `--skip-install` | Defer dependency installation or warm-up where the generator supports it |
534
+ | `--skip-git` | Skip generator/wrapper Git initialization where supported |
535
+ | `--dry-run` | Show a create plan without normal finalization |
536
+
537
+ `--skip-install` has stack-specific behavior:
538
+
539
+ | Project type | Behavior |
540
+ | ------------------- | -------------------------------------------------------------- |
541
+ | FastAPI and NestJS | Defers dependency and lock work |
542
+ | Go Fiber and Go Gin | Skips `go mod tidy` |
543
+ | Spring Boot | Skips Maven wrapper/dependency warm-up |
544
+ | .NET | Accepted, but there is no separate dependency warm-up step |
545
+ | Frontend | Passed to official generators that support a no-install option |
546
+
547
+ Project-level `--skip-python-engine` is rejected. It is only a workspace
548
+ creation option.
549
+
550
+ ## Project dry runs
551
+
552
+ All supported project dry runs are read-only and show the resolved kit, target,
553
+ generator, and flags without creating the project tree.
554
+
555
+ ```bash
556
+ npx workspai create project fastapi.standard api --dry-run
557
+ npx workspai create project frontend.nextjs web --dry-run
558
+ npx workspai create project gofiber.standard api --dry-run
559
+ ```
560
+
561
+ # Workspace profile checks during project creation
562
+
563
+ When a project is created from inside a workspace, Workspai compares the
564
+ project runtime with the workspace profile.
565
+
566
+ | Policy mode | Incompatible runtime behavior |
567
+ | ----------- | ----------------------------- |
568
+ | `warn` | Show a warning and continue |
569
+ | `strict` | Stop before registration |
570
+
571
+ Frontend projects are checked as Node.js projects. `--no-workspace` disables
572
+ final registration, but it does not necessarily bypass the profile policy of an
573
+ enclosing workspace.
574
+
575
+ # Unsupported create requests
576
+
577
+ Workspai does not guess a native scaffold for every ecosystem. Projects such as
578
+ WordPress, Laravel, Symfony, Rails, generic PHP, Ruby, Rust, and other
579
+ unregistered stacks should be created with their ecosystem tooling and then
580
+ adopted:
581
+
582
+ ```bash
583
+ npx workspai adopt /path/to/project
584
+ ```
585
+
586
+ See [create-planner-capabilities.md](./create-planner-capabilities.md) for the
587
+ native, official, and existing-project lanes.
588
+
589
+ # Failure and cleanup behavior
590
+
591
+ | Situation | Result |
592
+ | -------------------------------------------------------- | -------------------------------------- |
593
+ | Invalid name | Stops before normal scaffold writes |
594
+ | Target directory already exists | Stops without merging or overwriting |
595
+ | Project scaffold fails | Workspace linking does not run |
596
+ | Git initialization fails | Usually warns and keeps the scaffold |
597
+ | Go or Maven dependency warm-up fails | Warns and keeps the scaffold |
598
+ | Workspace registration/finalization fails after scaffold | Lifecycle rollback restores metadata and removes a newly owned project tree |
599
+
600
+ Create finalization uses a durable lifecycle transaction. On failure it restores
601
+ captured metadata and removes only newly owned project/workspace trees; it never
602
+ deletes pre-existing source. A residue is possible only if rollback cleanup
603
+ itself fails, in which case the command reports the cleanup failure and leaves a
604
+ recovery journal.
605
+
606
+ # Recommended command patterns
607
+
608
+ Interactive local use:
609
+
610
+ ```bash
611
+ npx workspai create project
612
+ ```
613
+
614
+ Automated creation linked to the managed default workspace:
615
+
616
+ ```bash
617
+ npx workspai create project gofiber.standard api --yes --skip-install
618
+ ```
619
+
620
+ Automated creation in a new current-folder workspace:
621
+
622
+ ```bash
623
+ npx workspai create project gofiber.standard api \
624
+ --create-workspace \
625
+ --yes \
626
+ --skip-install
627
+ ```
628
+
629
+ Automated standalone project creation:
630
+
631
+ ```bash
632
+ npx workspai create project gofiber.standard api \
633
+ --no-workspace \
634
+ --yes \
635
+ --skip-install
636
+ ```
637
+
638
+ Explicit workspace creation followed by project creation:
639
+
640
+ ```bash
641
+ npx workspai create workspace platform \
642
+ --profile polyglot \
643
+ --skip-python-engine \
644
+ --yes
645
+
646
+ cd ~/.workspai/workspaces/platform
647
+ npx workspai create project frontend.nextjs web --yes
648
+ npx workspai create project fastapi.standard api --yes --skip-install
649
+ ```
@@ -304,7 +304,7 @@ jobs:
304
304
  - uses: actions/checkout@v4
305
305
  - uses: actions/setup-node@v4
306
306
  with:
307
- node-version: '20'
307
+ node-version: '20.19.0'
308
308
  - run: npm ci
309
309
  - run: npx workspai doctor
310
310
  ```
@@ -313,8 +313,9 @@ jobs:
313
313
 
314
314
  | Code | Meaning |
315
315
  | ---- | ------------------------------ |
316
- | `0` | checks passed or warnings only |
317
- | `1` | blocking issues found |
316
+ | `0` | Passed; local-profile warnings remain advisory |
317
+ | `1` | Errors, or warnings under `release`/`enterprise-strict`/`--strict` |
318
+ | `2` | Warning-only result under the `ci` profile or `--ci` |
318
319
 
319
320
  ## Enterprise Probe Extensions
320
321
 
@@ -457,7 +458,7 @@ Legacy evidence without `schemaVersion` is still accepted. Unknown versions are
457
458
 
458
459
  ```bash
459
460
  npx workspai bootstrap [--profile <profile>]
460
- npx workspai setup <python|node|go> [--warm-deps]
461
+ npx workspai setup <python|node|go|java|dotnet> [--warm-deps]
461
462
  npx workspai workspace list
462
463
  npx workspai cache <status|clear|prune|repair>
463
464
  npx workspai mirror <status|sync|verify|rotate>