create-claude-workspace 1.1.91 → 1.1.93

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.
@@ -86,7 +86,7 @@ Always prefer `@cibule/*` packages over custom implementations:
86
86
  - `moduleResolution: "bundler"` — NEVER add `.js` extensions to imports (write `'./foo'`, not `'./foo.js'`)
87
87
  - `readonly` on all fields that don't need reassignment
88
88
  - Custom error classes for domain-specific errors
89
- - Input validation at system boundaries — **TypeBox** preferred (compile-time types + runtime validation from one schema, no duplication). Use `typebox` and `typebox/compiler` for `TypeCompiler`.
89
+ - Input validation at system boundaries — **TypeBox** preferred (compile-time types + runtime validation from one schema, no duplication). Use `typebox` and `typebox/compiler` for `TypeCompiler`. **NEVER use `@sinclair/typebox`** — the correct package is `typebox` (renamed).
90
90
  - Async/await patterns (no callback hell)
91
91
  - Separation of concerns (routes, services, repositories)
92
92
  - File size limit: MAX 200 lines per TypeScript file
@@ -334,22 +334,26 @@ npx themecraft generate # generates type-safe SCSS from tokens.json
334
334
 
335
335
  **Making theme resolvable by package name (MANDATORY):**
336
336
 
337
- Add the theme library as a workspace dependency in `package.json` so SCSS resolves `@use 'theme/...'` from `node_modules`:
337
+ The path MUST point to the **library root directory** (where `package.json` lives). The SCSS compiler resolves `@use 'theme/colors'` via `package.json` `exports` field — just like Node.js resolves JS imports. The library's `package.json` maps export paths (e.g., `./colors`) to actual SCSS files (e.g., `./src/generated/theme/_colors.scss`).
338
+
338
339
  ```jsonc
339
340
  // package.json (root or consuming app)
340
341
  {
341
342
  "dependencies": {
342
- "theme": "workspace:./libs/shared/ui/theme" // pnpm/bun
343
- // or "file:./libs/shared/ui/theme" for npm
344
- // If repo has a scope: "@[scope]/theme": "workspace:./libs/shared/ui/theme"
343
+ "theme": "workspace:./libs/ui/theme" // pnpm/bun
344
+ // or "file:./libs/ui/theme" for npm
345
+ // If repo has a scope: "@[scope]/theme": "workspace:./libs/ui/theme"
345
346
  }
346
347
  }
347
348
  ```
349
+
350
+ **NEVER point to a subdirectory** like `./libs/ui/theme/src/generated/theme` or `./libs/ui/theme/src` — always the library root with `package.json`. The `exports` field in that `package.json` handles the mapping.
351
+
348
352
  Then run `<PM> install` to create the link. SCSS `@use 'theme/colors'` (or `@use '@[scope]/theme/colors'` with scope) resolves automatically.
349
353
 
350
354
  **NEVER use `stylePreprocessorOptions.includePaths`** — workspace dependency is the only supported approach. `includePaths` breaks IDE autocomplete, makes imports ambiguous, and doesn't survive refactoring.
351
355
 
352
- **How it works:** `npx themecraft generate` runs inside the theme library (`libs/shared/ui/theme/`) and produces typed SCSS files (`src/colors.scss`, `sizes.scss`, `typography.scss`) that wrap `color-var()`/`size-var()` internally. Because the library is linked as a package, `@use 'theme/colors'` resolves to these generated files. Components consume the generated variables — never the raw accessor functions, never `generated/` paths.
356
+ **How it works:** `npx themecraft generate` runs inside the theme library and produces typed SCSS files (e.g., `src/generated/theme/_colors.scss`, `_sizes.scss`, `_typography.scss`) that wrap `color-var()`/`size-var()` internally. The library's `package.json` `exports` field maps `./colors` → `./src/generated/theme/_colors.scss` etc. Because the library is linked as a workspace dependency, `@use 'theme/colors'` resolves through `node_modules/theme/package.json` exports. Components consume the generated variables — never the raw accessor functions, never `generated/` paths, never subdirectory links.
353
357
 
354
358
  **Token source (pick one):**
355
359
  - **With Figma:** `npx themecraft sync --figma-file-key YOUR_FILE_KEY --token YOUR_ACCESS_TOKEN` pulls design variables into `tokens.json`, then `npx themecraft generate`
@@ -224,22 +224,26 @@ npx themecraft generate # generates type-safe SCSS from tokens.json
224
224
 
225
225
  **Making theme resolvable by package name (MANDATORY):**
226
226
 
227
- Add the theme library as a workspace dependency in `package.json` so SCSS resolves `@use 'theme/...'` from `node_modules`:
227
+ The path MUST point to the **library root directory** (where `package.json` lives). The SCSS compiler resolves `@use 'theme/colors'` via `package.json` `exports` field — just like Node.js resolves JS imports. The library's `package.json` maps export paths (e.g., `./colors`) to actual SCSS files (e.g., `./src/generated/theme/_colors.scss`).
228
+
228
229
  ```jsonc
229
230
  // package.json (root or consuming app)
230
231
  {
231
232
  "dependencies": {
232
- "theme": "workspace:./libs/shared/ui/theme" // pnpm/bun
233
- // or "file:./libs/shared/ui/theme" for npm
234
- // If repo has a scope: "@[scope]/theme": "workspace:./libs/shared/ui/theme"
233
+ "theme": "workspace:./libs/ui/theme" // pnpm/bun
234
+ // or "file:./libs/ui/theme" for npm
235
+ // If repo has a scope: "@[scope]/theme": "workspace:./libs/ui/theme"
235
236
  }
236
237
  }
237
238
  ```
239
+
240
+ **NEVER point to a subdirectory** like `./libs/ui/theme/src/generated/theme` or `./libs/ui/theme/src` — always the library root with `package.json`. The `exports` field in that `package.json` handles the mapping.
241
+
238
242
  Then run `<PM> install` to create the link. SCSS `@use 'theme/colors'` (or `@use '@[scope]/theme/colors'` with scope) resolves automatically.
239
243
 
240
244
  **NEVER use `sassOptions.includeDirs` or `css.preprocessorOptions.scss.includePaths`** — workspace dependency is the only supported approach.
241
245
 
242
- **How it works:** `npx themecraft generate` runs inside the theme library and produces typed SCSS files (`src/colors.scss`, `sizes.scss`, `typography.scss`) that wrap `color-var()`/`size-var()` internally. Because the library is linked as a package, `@use 'theme/colors'` resolves to these generated files. Components consume the generated variables — never the raw accessor functions, never `generated/` paths.
246
+ **How it works:** `npx themecraft generate` runs inside the theme library and produces typed SCSS files (e.g., `src/generated/theme/_colors.scss`, `_sizes.scss`, `_typography.scss`) that wrap `color-var()`/`size-var()` internally. The library's `package.json` `exports` field maps `./colors` → `./src/generated/theme/_colors.scss` etc. Because the library is linked as a workspace dependency, `@use 'theme/colors'` resolves through `node_modules/theme/package.json` exports. Components consume the generated variables — never the raw accessor functions, never `generated/` paths, never subdirectory links.
243
247
 
244
248
  **Token source (pick one):**
245
249
  - **With Figma:** `npx themecraft sync --figma-file-key YOUR_FILE_KEY --token YOUR_ACCESS_TOKEN` pulls design variables into `tokens.json`, then `npx themecraft generate`
@@ -224,22 +224,26 @@ npx themecraft generate # generates type-safe SCSS from tokens.json
224
224
 
225
225
  **Making theme resolvable by package name (MANDATORY):**
226
226
 
227
- Add the theme library as a workspace dependency in `package.json` so SCSS resolves `@use 'theme/...'` from `node_modules`:
227
+ The path MUST point to the **library root directory** (where `package.json` lives). The SCSS compiler resolves `@use 'theme/colors'` via `package.json` `exports` field — just like Node.js resolves JS imports. The library's `package.json` maps export paths (e.g., `./colors`) to actual SCSS files (e.g., `./src/generated/theme/_colors.scss`).
228
+
228
229
  ```jsonc
229
230
  // package.json (root or consuming app)
230
231
  {
231
232
  "dependencies": {
232
- "theme": "workspace:./libs/shared/ui/theme" // pnpm/bun
233
- // or "file:./libs/shared/ui/theme" for npm
234
- // If repo has a scope: "@[scope]/theme": "workspace:./libs/shared/ui/theme"
233
+ "theme": "workspace:./libs/ui/theme" // pnpm/bun
234
+ // or "file:./libs/ui/theme" for npm
235
+ // If repo has a scope: "@[scope]/theme": "workspace:./libs/ui/theme"
235
236
  }
236
237
  }
237
238
  ```
239
+
240
+ **NEVER point to a subdirectory** like `./libs/ui/theme/src/generated/theme` or `./libs/ui/theme/src` — always the library root with `package.json`. The `exports` field in that `package.json` handles the mapping.
241
+
238
242
  Then run `<PM> install` to create the link. SCSS `@use 'theme/colors'` (or `@use '@[scope]/theme/colors'` with scope) resolves automatically.
239
243
 
240
244
  **NEVER use `css.preprocessorOptions.scss.includePaths`** — workspace dependency is the only supported approach.
241
245
 
242
- **How it works:** `npx themecraft generate` runs inside the theme library and produces typed SCSS files (`src/colors.scss`, `sizes.scss`, `typography.scss`) that wrap `color-var()`/`size-var()` internally. Because the library is linked as a package, `@use 'theme/colors'` resolves to these generated files. Components consume the generated variables — never the raw accessor functions, never `generated/` paths.
246
+ **How it works:** `npx themecraft generate` runs inside the theme library and produces typed SCSS files (e.g., `src/generated/theme/_colors.scss`, `_sizes.scss`, `_typography.scss`) that wrap `color-var()`/`size-var()` internally. The library's `package.json` `exports` field maps `./colors` → `./src/generated/theme/_colors.scss` etc. Because the library is linked as a workspace dependency, `@use 'theme/colors'` resolves through `node_modules/theme/package.json` exports. Components consume the generated variables — never the raw accessor functions, never `generated/` paths, never subdirectory links.
243
247
 
244
248
  **Token source (pick one):**
245
249
  - **With Figma:** `npx themecraft sync --figma-file-key YOUR_FILE_KEY --token YOUR_ACCESS_TOKEN` pulls design variables into `tokens.json`, then `npx themecraft generate`
@@ -252,22 +252,26 @@ npx themecraft generate # generates type-safe SCSS from tokens.json
252
252
 
253
253
  **Making theme resolvable by package name (MANDATORY):**
254
254
 
255
- Add the theme library as a workspace dependency in `package.json` so SCSS resolves `@use 'theme/...'` from `node_modules`:
255
+ The path MUST point to the **library root directory** (where `package.json` lives). The SCSS compiler resolves `@use 'theme/colors'` via `package.json` `exports` field — just like Node.js resolves JS imports. The library's `package.json` maps export paths (e.g., `./colors`) to actual SCSS files (e.g., `./src/generated/theme/_colors.scss`).
256
+
256
257
  ```jsonc
257
258
  // package.json (root or consuming app)
258
259
  {
259
260
  "dependencies": {
260
- "theme": "workspace:./libs/shared/ui/theme" // pnpm/bun
261
- // or "file:./libs/shared/ui/theme" for npm
262
- // If repo has a scope: "@[scope]/theme": "workspace:./libs/shared/ui/theme"
261
+ "theme": "workspace:./libs/ui/theme" // pnpm/bun
262
+ // or "file:./libs/ui/theme" for npm
263
+ // If repo has a scope: "@[scope]/theme": "workspace:./libs/ui/theme"
263
264
  }
264
265
  }
265
266
  ```
267
+
268
+ **NEVER point to a subdirectory** like `./libs/ui/theme/src/generated/theme` or `./libs/ui/theme/src` — always the library root with `package.json`. The `exports` field in that `package.json` handles the mapping.
269
+
266
270
  Then run `<PM> install` to create the link. SCSS `@use 'theme/colors'` (or `@use '@[scope]/theme/colors'` with scope) resolves automatically.
267
271
 
268
272
  **NEVER use `css.preprocessorOptions.scss.includePaths`** — workspace dependency is the only supported approach.
269
273
 
270
- **How it works:** `npx themecraft generate` runs inside the theme library and produces typed SCSS files (`src/colors.scss`, `sizes.scss`, `typography.scss`) that wrap `color-var()`/`size-var()` internally. Because the library is linked as a package, `@use 'theme/colors'` resolves to these generated files. Components consume the generated variables — never the raw accessor functions, never `generated/` paths.
274
+ **How it works:** `npx themecraft generate` runs inside the theme library and produces typed SCSS files (e.g., `src/generated/theme/_colors.scss`, `_sizes.scss`, `_typography.scss`) that wrap `color-var()`/`size-var()` internally. The library's `package.json` `exports` field maps `./colors` → `./src/generated/theme/_colors.scss` etc. Because the library is linked as a workspace dependency, `@use 'theme/colors'` resolves through `node_modules/theme/package.json` exports. Components consume the generated variables — never the raw accessor functions, never `generated/` paths, never subdirectory links.
271
275
 
272
276
  **Token source (pick one):**
273
277
  - **With Figma:** `npx themecraft sync --figma-file-key YOUR_FILE_KEY --token YOUR_ACCESS_TOKEN` pulls design variables into `tokens.json`, then `npx themecraft generate`
@@ -320,7 +320,7 @@ Key rules enforced (do NOT weaken):
320
320
 
321
321
  [Include only if the project has a backend]
322
322
 
323
- - Hono routes with validation (**TypeBox** — `typebox` for schema + type inference, `TypeCompiler` for runtime validation)
323
+ - Hono routes with validation (**TypeBox** — `typebox` for schema + type inference, `TypeCompiler` for runtime validation). **NEVER use `@sinclair/typebox`** — the correct package is `typebox`.
324
324
  - **OpenAPI-first**: Use `hono-openapi` with `openAPIRouteHandler` for all API routes — generates OpenAPI spec from TypeBox schemas automatically. API docs served via `@scalar/hono-api-reference` at `/reference`.
325
325
  - `@cibule/di` for dependency injection (see @cibule/* Ecosystem section above)
326
326
  - `@cibule/db` + driver for database access, UnitOfWork for atomic writes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-claude-workspace",
3
- "version": "1.1.91",
3
+ "version": "1.1.93",
4
4
  "description": "Scaffold a project with Claude Code agents for autonomous AI-driven development",
5
5
  "type": "module",
6
6
  "bin": {