@teamix-evo/registry 0.1.0 → 0.2.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.
package/dist/index.d.cts CHANGED
@@ -10,7 +10,18 @@ declare const UpdateStrategySchema: z.ZodEnum<["frozen", "regenerable", "managed
10
10
  /**
11
11
  * Resource type discriminator.
12
12
  */
13
- declare const ResourceTypeSchema: z.ZodEnum<["doc", "tokens", "ai-rules", "config"]>;
13
+ declare const ResourceTypeSchema: z.ZodEnum<["doc", "tokens", "ai-rules", "config", "skill"]>;
14
+ /**
15
+ * Supported AI IDE identifiers for skill resources.
16
+ * Qoder and Claude Code share the same SKILL.md format; differ only by install path.
17
+ */
18
+ declare const SkillIdeSchema: z.ZodEnum<["qoder", "claude"]>;
19
+ /**
20
+ * Skill installation scope.
21
+ * - project: install under project root (.qoder/skills/, .claude/skills/)
22
+ * - global: install under user home (~/.qoder/skills/, ~/.claude/skills/)
23
+ */
24
+ declare const SkillScopeSchema: z.ZodEnum<["project", "global"]>;
14
25
  /**
15
26
  * A single resource entry within a variant manifest.
16
27
  */
@@ -18,10 +29,13 @@ declare const ResourceSchema: z.ZodObject<{
18
29
  /** Unique identifier for the resource within the manifest */
19
30
  id: z.ZodString;
20
31
  /** Resource type */
21
- type: z.ZodEnum<["doc", "tokens", "ai-rules", "config"]>;
32
+ type: z.ZodEnum<["doc", "tokens", "ai-rules", "config", "skill"]>;
22
33
  /** Source path (relative to variant root), typically a template */
23
34
  source: z.ZodString;
24
- /** Target path (relative to project root) where the resource is installed */
35
+ /**
36
+ * Target path (relative to project root) where the resource is installed.
37
+ * For type="skill" this is ignored: the path is computed from skill name + ide + scope.
38
+ */
25
39
  target: z.ZodString;
26
40
  /** How the resource is updated */
27
41
  updateStrategy: z.ZodEnum<["frozen", "regenerable", "managed"]>;
@@ -31,24 +45,32 @@ declare const ResourceSchema: z.ZodObject<{
31
45
  managedRegions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
32
46
  /** Whether to recursively process directory contents */
33
47
  recursive: z.ZodOptional<z.ZodBoolean>;
48
+ /** Supported IDEs (only meaningful when type="skill"; defaults to all when omitted) */
49
+ ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
50
+ /** Default install scope (only meaningful when type="skill"; user can override at install time) */
51
+ scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
34
52
  }, "strip", z.ZodTypeAny, {
35
53
  id: string;
36
- type: "doc" | "tokens" | "ai-rules" | "config";
54
+ type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
37
55
  source: string;
38
56
  target: string;
39
57
  updateStrategy: "frozen" | "regenerable" | "managed";
40
58
  template?: boolean | undefined;
41
59
  managedRegions?: string[] | undefined;
42
60
  recursive?: boolean | undefined;
61
+ ides?: ("qoder" | "claude")[] | undefined;
62
+ scope?: "project" | "global" | undefined;
43
63
  }, {
44
64
  id: string;
45
- type: "doc" | "tokens" | "ai-rules" | "config";
65
+ type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
46
66
  source: string;
47
67
  target: string;
48
68
  updateStrategy: "frozen" | "regenerable" | "managed";
49
69
  template?: boolean | undefined;
50
70
  managedRegions?: string[] | undefined;
51
71
  recursive?: boolean | undefined;
72
+ ides?: ("qoder" | "claude")[] | undefined;
73
+ scope?: "project" | "global" | undefined;
52
74
  }>;
53
75
  /**
54
76
  * Variant manifest schema — describes a variant package and its resources.
@@ -68,11 +90,11 @@ declare const VariantManifestSchema: z.ZodObject<{
68
90
  version: z.ZodString;
69
91
  /** Engine compatibility */
70
92
  engines: z.ZodObject<{
71
- "teamix-evo": z.ZodString;
93
+ 'teamix-evo': z.ZodString;
72
94
  }, "strip", z.ZodTypeAny, {
73
- "teamix-evo": string;
95
+ 'teamix-evo': string;
74
96
  }, {
75
- "teamix-evo": string;
97
+ 'teamix-evo': string;
76
98
  }>;
77
99
  /** Supported IDE identifiers */
78
100
  ide: z.ZodArray<z.ZodString, "many">;
@@ -81,10 +103,13 @@ declare const VariantManifestSchema: z.ZodObject<{
81
103
  /** Unique identifier for the resource within the manifest */
82
104
  id: z.ZodString;
83
105
  /** Resource type */
84
- type: z.ZodEnum<["doc", "tokens", "ai-rules", "config"]>;
106
+ type: z.ZodEnum<["doc", "tokens", "ai-rules", "config", "skill"]>;
85
107
  /** Source path (relative to variant root), typically a template */
86
108
  source: z.ZodString;
87
- /** Target path (relative to project root) where the resource is installed */
109
+ /**
110
+ * Target path (relative to project root) where the resource is installed.
111
+ * For type="skill" this is ignored: the path is computed from skill name + ide + scope.
112
+ */
88
113
  target: z.ZodString;
89
114
  /** How the resource is updated */
90
115
  updateStrategy: z.ZodEnum<["frozen", "regenerable", "managed"]>;
@@ -94,24 +119,32 @@ declare const VariantManifestSchema: z.ZodObject<{
94
119
  managedRegions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
95
120
  /** Whether to recursively process directory contents */
96
121
  recursive: z.ZodOptional<z.ZodBoolean>;
122
+ /** Supported IDEs (only meaningful when type="skill"; defaults to all when omitted) */
123
+ ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
124
+ /** Default install scope (only meaningful when type="skill"; user can override at install time) */
125
+ scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
97
126
  }, "strip", z.ZodTypeAny, {
98
127
  id: string;
99
- type: "doc" | "tokens" | "ai-rules" | "config";
128
+ type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
100
129
  source: string;
101
130
  target: string;
102
131
  updateStrategy: "frozen" | "regenerable" | "managed";
103
132
  template?: boolean | undefined;
104
133
  managedRegions?: string[] | undefined;
105
134
  recursive?: boolean | undefined;
135
+ ides?: ("qoder" | "claude")[] | undefined;
136
+ scope?: "project" | "global" | undefined;
106
137
  }, {
107
138
  id: string;
108
- type: "doc" | "tokens" | "ai-rules" | "config";
139
+ type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
109
140
  source: string;
110
141
  target: string;
111
142
  updateStrategy: "frozen" | "regenerable" | "managed";
112
143
  template?: boolean | undefined;
113
144
  managedRegions?: string[] | undefined;
114
145
  recursive?: boolean | undefined;
146
+ ides?: ("qoder" | "claude")[] | undefined;
147
+ scope?: "project" | "global" | undefined;
115
148
  }>, "many">;
116
149
  }, "strip", z.ZodTypeAny, {
117
150
  schemaVersion: 1;
@@ -121,18 +154,20 @@ declare const VariantManifestSchema: z.ZodObject<{
121
154
  description: string;
122
155
  version: string;
123
156
  engines: {
124
- "teamix-evo": string;
157
+ 'teamix-evo': string;
125
158
  };
126
159
  ide: string[];
127
160
  resources: {
128
161
  id: string;
129
- type: "doc" | "tokens" | "ai-rules" | "config";
162
+ type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
130
163
  source: string;
131
164
  target: string;
132
165
  updateStrategy: "frozen" | "regenerable" | "managed";
133
166
  template?: boolean | undefined;
134
167
  managedRegions?: string[] | undefined;
135
168
  recursive?: boolean | undefined;
169
+ ides?: ("qoder" | "claude")[] | undefined;
170
+ scope?: "project" | "global" | undefined;
136
171
  }[];
137
172
  $schema?: string | undefined;
138
173
  }, {
@@ -143,36 +178,579 @@ declare const VariantManifestSchema: z.ZodObject<{
143
178
  description: string;
144
179
  version: string;
145
180
  engines: {
146
- "teamix-evo": string;
181
+ 'teamix-evo': string;
147
182
  };
148
183
  ide: string[];
149
184
  resources: {
150
185
  id: string;
151
- type: "doc" | "tokens" | "ai-rules" | "config";
186
+ type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
152
187
  source: string;
153
188
  target: string;
154
189
  updateStrategy: "frozen" | "regenerable" | "managed";
155
190
  template?: boolean | undefined;
156
191
  managedRegions?: string[] | undefined;
157
192
  recursive?: boolean | undefined;
193
+ ides?: ("qoder" | "claude")[] | undefined;
194
+ scope?: "project" | "global" | undefined;
195
+ }[];
196
+ $schema?: string | undefined;
197
+ }>;
198
+ /**
199
+ * A single skill entry within a skills package manifest.
200
+ */
201
+ declare const SkillEntrySchema: z.ZodObject<{
202
+ /** Skill identifier (matches name/folder) */
203
+ id: z.ZodString;
204
+ /** Skill name — must match the directory name and frontmatter `name` */
205
+ name: z.ZodString;
206
+ /** One-line description for skill discovery */
207
+ description: z.ZodString;
208
+ /** Semver version */
209
+ version: z.ZodString;
210
+ /** Source path relative to package root — file or directory */
211
+ source: z.ZodString;
212
+ /** Supported IDEs (defaults to both when omitted) */
213
+ ides: z.ZodDefault<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
214
+ /** Update strategy (defaults to managed) */
215
+ updateStrategy: z.ZodDefault<z.ZodEnum<["frozen", "regenerable", "managed"]>>;
216
+ /** Managed region IDs to maintain on update */
217
+ managedRegions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
218
+ /** Whether the source is a Handlebars template */
219
+ template: z.ZodOptional<z.ZodBoolean>;
220
+ }, "strip", z.ZodTypeAny, {
221
+ id: string;
222
+ source: string;
223
+ updateStrategy: "frozen" | "regenerable" | "managed";
224
+ ides: ("qoder" | "claude")[];
225
+ description: string;
226
+ version: string;
227
+ name: string;
228
+ template?: boolean | undefined;
229
+ managedRegions?: string[] | undefined;
230
+ }, {
231
+ id: string;
232
+ source: string;
233
+ description: string;
234
+ version: string;
235
+ name: string;
236
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
237
+ template?: boolean | undefined;
238
+ managedRegions?: string[] | undefined;
239
+ ides?: ("qoder" | "claude")[] | undefined;
240
+ }>;
241
+ /**
242
+ * Skills package manifest schema — top-level manifest of `@teamix-evo/skills`.
243
+ * Unlike design which is variant-based, skills are flat (no variants).
244
+ */
245
+ declare const SkillsPackageManifestSchema: z.ZodObject<{
246
+ $schema: z.ZodOptional<z.ZodString>;
247
+ schemaVersion: z.ZodLiteral<1>;
248
+ /** Always "skills" for this package */
249
+ package: z.ZodLiteral<"skills">;
250
+ /** Semver version of the skills package */
251
+ version: z.ZodString;
252
+ /** Engine compatibility */
253
+ engines: z.ZodObject<{
254
+ 'teamix-evo': z.ZodString;
255
+ }, "strip", z.ZodTypeAny, {
256
+ 'teamix-evo': string;
257
+ }, {
258
+ 'teamix-evo': string;
259
+ }>;
260
+ /** Flat list of skills shipped by this package */
261
+ skills: z.ZodArray<z.ZodObject<{
262
+ /** Skill identifier (matches name/folder) */
263
+ id: z.ZodString;
264
+ /** Skill name — must match the directory name and frontmatter `name` */
265
+ name: z.ZodString;
266
+ /** One-line description for skill discovery */
267
+ description: z.ZodString;
268
+ /** Semver version */
269
+ version: z.ZodString;
270
+ /** Source path relative to package root — file or directory */
271
+ source: z.ZodString;
272
+ /** Supported IDEs (defaults to both when omitted) */
273
+ ides: z.ZodDefault<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
274
+ /** Update strategy (defaults to managed) */
275
+ updateStrategy: z.ZodDefault<z.ZodEnum<["frozen", "regenerable", "managed"]>>;
276
+ /** Managed region IDs to maintain on update */
277
+ managedRegions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
278
+ /** Whether the source is a Handlebars template */
279
+ template: z.ZodOptional<z.ZodBoolean>;
280
+ }, "strip", z.ZodTypeAny, {
281
+ id: string;
282
+ source: string;
283
+ updateStrategy: "frozen" | "regenerable" | "managed";
284
+ ides: ("qoder" | "claude")[];
285
+ description: string;
286
+ version: string;
287
+ name: string;
288
+ template?: boolean | undefined;
289
+ managedRegions?: string[] | undefined;
290
+ }, {
291
+ id: string;
292
+ source: string;
293
+ description: string;
294
+ version: string;
295
+ name: string;
296
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
297
+ template?: boolean | undefined;
298
+ managedRegions?: string[] | undefined;
299
+ ides?: ("qoder" | "claude")[] | undefined;
300
+ }>, "many">;
301
+ }, "strip", z.ZodTypeAny, {
302
+ schemaVersion: 1;
303
+ package: "skills";
304
+ version: string;
305
+ engines: {
306
+ 'teamix-evo': string;
307
+ };
308
+ skills: {
309
+ id: string;
310
+ source: string;
311
+ updateStrategy: "frozen" | "regenerable" | "managed";
312
+ ides: ("qoder" | "claude")[];
313
+ description: string;
314
+ version: string;
315
+ name: string;
316
+ template?: boolean | undefined;
317
+ managedRegions?: string[] | undefined;
318
+ }[];
319
+ $schema?: string | undefined;
320
+ }, {
321
+ schemaVersion: 1;
322
+ package: "skills";
323
+ version: string;
324
+ engines: {
325
+ 'teamix-evo': string;
326
+ };
327
+ skills: {
328
+ id: string;
329
+ source: string;
330
+ description: string;
331
+ version: string;
332
+ name: string;
333
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
334
+ template?: boolean | undefined;
335
+ managedRegions?: string[] | undefined;
336
+ ides?: ("qoder" | "claude")[] | undefined;
337
+ }[];
338
+ $schema?: string | undefined;
339
+ }>;
340
+ /**
341
+ * UI entry types.
342
+ * - component: a React component (e.g. button.tsx)
343
+ * - hook: a React hook (e.g. use-controllable.ts)
344
+ * - util: a utility function (e.g. cn.ts)
345
+ * - block: a higher-level composition (login-form, dashboard-shell). v0.x.
346
+ */
347
+ declare const UiEntryTypeSchema: z.ZodEnum<["component", "hook", "util", "block"]>;
348
+ /**
349
+ * Alias keys used to resolve where an entry file lands in the user's project.
350
+ * Each key maps to a path configured in `config.json` `packages.ui.aliases`.
351
+ */
352
+ declare const UiAliasSchema: z.ZodEnum<["components", "hooks", "utils", "lib"]>;
353
+ /**
354
+ * A single file shipped by a UI entry.
355
+ * Multiple files form one logical entry (rare, but supported).
356
+ */
357
+ declare const UiEntryFileSchema: z.ZodObject<{
358
+ /** Source path relative to the ui package root (e.g. "src/components/button/button.tsx") */
359
+ source: z.ZodString;
360
+ /** Which alias this file resolves under in the consumer project */
361
+ targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib"]>;
362
+ /** Filename written under the alias directory (e.g. "button.tsx") */
363
+ targetName: z.ZodString;
364
+ }, "strip", z.ZodTypeAny, {
365
+ source: string;
366
+ targetAlias: "components" | "hooks" | "utils" | "lib";
367
+ targetName: string;
368
+ }, {
369
+ source: string;
370
+ targetAlias: "components" | "hooks" | "utils" | "lib";
371
+ targetName: string;
372
+ }>;
373
+ /**
374
+ * A single UI entry (component / hook / util / block).
375
+ */
376
+ declare const UiEntrySchema: z.ZodObject<{
377
+ /** Unique entry identifier within the ui package (e.g. "button") */
378
+ id: z.ZodString;
379
+ /** Display name (e.g. "Button") */
380
+ name: z.ZodString;
381
+ /** Entry type */
382
+ type: z.ZodEnum<["component", "hook", "util", "block"]>;
383
+ /** One-line description for entry discovery and AI guidance */
384
+ description: z.ZodString;
385
+ /** Files this entry ships (typically 1) */
386
+ files: z.ZodArray<z.ZodObject<{
387
+ /** Source path relative to the ui package root (e.g. "src/components/button/button.tsx") */
388
+ source: z.ZodString;
389
+ /** Which alias this file resolves under in the consumer project */
390
+ targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib"]>;
391
+ /** Filename written under the alias directory (e.g. "button.tsx") */
392
+ targetName: z.ZodString;
393
+ }, "strip", z.ZodTypeAny, {
394
+ source: string;
395
+ targetAlias: "components" | "hooks" | "utils" | "lib";
396
+ targetName: string;
397
+ }, {
398
+ source: string;
399
+ targetAlias: "components" | "hooks" | "utils" | "lib";
400
+ targetName: string;
401
+ }>, "many">;
402
+ /**
403
+ * Optional path to an AI-readable meta document (frontmatter + Markdown).
404
+ * When set, CLI install drops it at `.teamix-evo/design/components/<id>.meta.md`
405
+ * for design's ai-rules to consume.
406
+ */
407
+ meta: z.ZodOptional<z.ZodString>;
408
+ /** Other UI entries this one depends on (e.g. "button" depends on "cn") */
409
+ registryDependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
410
+ /** npm dependencies required by this entry (name → semver range) */
411
+ dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
412
+ /**
413
+ * How CLI handles this entry on `ui upgrade`.
414
+ * Defaults to `frozen` — user-owned source code, untouched after first install.
415
+ * Upgrade is handled by AI + skill flow (no CLI rewrite). See PLAN §10.9.
416
+ */
417
+ updateStrategy: z.ZodDefault<z.ZodEnum<["frozen", "regenerable", "managed"]>>;
418
+ /**
419
+ * Whether the source file should be passed through Handlebars before write.
420
+ * Most entries don't need templating (use import-rewrite transformer instead).
421
+ */
422
+ template: z.ZodOptional<z.ZodBoolean>;
423
+ /**
424
+ * Maturity / lifecycle status of this entry. Defaults to `stable`.
425
+ * See {@link UiEntryStatusSchema} for semantics.
426
+ */
427
+ status: z.ZodDefault<z.ZodEnum<["stable", "experimental", "deprecated"]>>;
428
+ /**
429
+ * Free-text rationale shown to consumers when `status` is `deprecated`.
430
+ * Should explain why the entry is going away and what replaces it.
431
+ */
432
+ deprecatedReason: z.ZodOptional<z.ZodString>;
433
+ /**
434
+ * If this entry is `deprecated`, the id of the entry that supersedes it.
435
+ * Consumers (and AI) should migrate to `replacedBy` rather than this entry.
436
+ */
437
+ replacedBy: z.ZodOptional<z.ZodString>;
438
+ }, "strip", z.ZodTypeAny, {
439
+ id: string;
440
+ type: "component" | "hook" | "util" | "block";
441
+ updateStrategy: "frozen" | "regenerable" | "managed";
442
+ status: "stable" | "experimental" | "deprecated";
443
+ description: string;
444
+ name: string;
445
+ files: {
446
+ source: string;
447
+ targetAlias: "components" | "hooks" | "utils" | "lib";
448
+ targetName: string;
449
+ }[];
450
+ template?: boolean | undefined;
451
+ meta?: string | undefined;
452
+ registryDependencies?: string[] | undefined;
453
+ dependencies?: Record<string, string> | undefined;
454
+ deprecatedReason?: string | undefined;
455
+ replacedBy?: string | undefined;
456
+ }, {
457
+ id: string;
458
+ type: "component" | "hook" | "util" | "block";
459
+ description: string;
460
+ name: string;
461
+ files: {
462
+ source: string;
463
+ targetAlias: "components" | "hooks" | "utils" | "lib";
464
+ targetName: string;
465
+ }[];
466
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
467
+ template?: boolean | undefined;
468
+ status?: "stable" | "experimental" | "deprecated" | undefined;
469
+ meta?: string | undefined;
470
+ registryDependencies?: string[] | undefined;
471
+ dependencies?: Record<string, string> | undefined;
472
+ deprecatedReason?: string | undefined;
473
+ replacedBy?: string | undefined;
474
+ }>;
475
+ /**
476
+ * UI package manifest schema — top-level manifest of `@teamix-evo/ui`.
477
+ * Like skills, UI is flat (no variants); brand differences are absorbed by
478
+ * design tokens at the `var(--primary)` layer.
479
+ */
480
+ declare const UiPackageManifestSchema: z.ZodObject<{
481
+ $schema: z.ZodOptional<z.ZodString>;
482
+ schemaVersion: z.ZodLiteral<1>;
483
+ /** Always "ui" for this package */
484
+ package: z.ZodLiteral<"ui">;
485
+ /** Semver version of the ui package */
486
+ version: z.ZodString;
487
+ /** Engine compatibility */
488
+ engines: z.ZodObject<{
489
+ 'teamix-evo': z.ZodString;
490
+ }, "strip", z.ZodTypeAny, {
491
+ 'teamix-evo': string;
492
+ }, {
493
+ 'teamix-evo': string;
494
+ }>;
495
+ /** Flat list of entries shipped by this package */
496
+ entries: z.ZodArray<z.ZodObject<{
497
+ /** Unique entry identifier within the ui package (e.g. "button") */
498
+ id: z.ZodString;
499
+ /** Display name (e.g. "Button") */
500
+ name: z.ZodString;
501
+ /** Entry type */
502
+ type: z.ZodEnum<["component", "hook", "util", "block"]>;
503
+ /** One-line description for entry discovery and AI guidance */
504
+ description: z.ZodString;
505
+ /** Files this entry ships (typically 1) */
506
+ files: z.ZodArray<z.ZodObject<{
507
+ /** Source path relative to the ui package root (e.g. "src/components/button/button.tsx") */
508
+ source: z.ZodString;
509
+ /** Which alias this file resolves under in the consumer project */
510
+ targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib"]>;
511
+ /** Filename written under the alias directory (e.g. "button.tsx") */
512
+ targetName: z.ZodString;
513
+ }, "strip", z.ZodTypeAny, {
514
+ source: string;
515
+ targetAlias: "components" | "hooks" | "utils" | "lib";
516
+ targetName: string;
517
+ }, {
518
+ source: string;
519
+ targetAlias: "components" | "hooks" | "utils" | "lib";
520
+ targetName: string;
521
+ }>, "many">;
522
+ /**
523
+ * Optional path to an AI-readable meta document (frontmatter + Markdown).
524
+ * When set, CLI install drops it at `.teamix-evo/design/components/<id>.meta.md`
525
+ * for design's ai-rules to consume.
526
+ */
527
+ meta: z.ZodOptional<z.ZodString>;
528
+ /** Other UI entries this one depends on (e.g. "button" depends on "cn") */
529
+ registryDependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
530
+ /** npm dependencies required by this entry (name → semver range) */
531
+ dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
532
+ /**
533
+ * How CLI handles this entry on `ui upgrade`.
534
+ * Defaults to `frozen` — user-owned source code, untouched after first install.
535
+ * Upgrade is handled by AI + skill flow (no CLI rewrite). See PLAN §10.9.
536
+ */
537
+ updateStrategy: z.ZodDefault<z.ZodEnum<["frozen", "regenerable", "managed"]>>;
538
+ /**
539
+ * Whether the source file should be passed through Handlebars before write.
540
+ * Most entries don't need templating (use import-rewrite transformer instead).
541
+ */
542
+ template: z.ZodOptional<z.ZodBoolean>;
543
+ /**
544
+ * Maturity / lifecycle status of this entry. Defaults to `stable`.
545
+ * See {@link UiEntryStatusSchema} for semantics.
546
+ */
547
+ status: z.ZodDefault<z.ZodEnum<["stable", "experimental", "deprecated"]>>;
548
+ /**
549
+ * Free-text rationale shown to consumers when `status` is `deprecated`.
550
+ * Should explain why the entry is going away and what replaces it.
551
+ */
552
+ deprecatedReason: z.ZodOptional<z.ZodString>;
553
+ /**
554
+ * If this entry is `deprecated`, the id of the entry that supersedes it.
555
+ * Consumers (and AI) should migrate to `replacedBy` rather than this entry.
556
+ */
557
+ replacedBy: z.ZodOptional<z.ZodString>;
558
+ }, "strip", z.ZodTypeAny, {
559
+ id: string;
560
+ type: "component" | "hook" | "util" | "block";
561
+ updateStrategy: "frozen" | "regenerable" | "managed";
562
+ status: "stable" | "experimental" | "deprecated";
563
+ description: string;
564
+ name: string;
565
+ files: {
566
+ source: string;
567
+ targetAlias: "components" | "hooks" | "utils" | "lib";
568
+ targetName: string;
569
+ }[];
570
+ template?: boolean | undefined;
571
+ meta?: string | undefined;
572
+ registryDependencies?: string[] | undefined;
573
+ dependencies?: Record<string, string> | undefined;
574
+ deprecatedReason?: string | undefined;
575
+ replacedBy?: string | undefined;
576
+ }, {
577
+ id: string;
578
+ type: "component" | "hook" | "util" | "block";
579
+ description: string;
580
+ name: string;
581
+ files: {
582
+ source: string;
583
+ targetAlias: "components" | "hooks" | "utils" | "lib";
584
+ targetName: string;
585
+ }[];
586
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
587
+ template?: boolean | undefined;
588
+ status?: "stable" | "experimental" | "deprecated" | undefined;
589
+ meta?: string | undefined;
590
+ registryDependencies?: string[] | undefined;
591
+ dependencies?: Record<string, string> | undefined;
592
+ deprecatedReason?: string | undefined;
593
+ replacedBy?: string | undefined;
594
+ }>, "many">;
595
+ }, "strip", z.ZodTypeAny, {
596
+ entries: {
597
+ id: string;
598
+ type: "component" | "hook" | "util" | "block";
599
+ updateStrategy: "frozen" | "regenerable" | "managed";
600
+ status: "stable" | "experimental" | "deprecated";
601
+ description: string;
602
+ name: string;
603
+ files: {
604
+ source: string;
605
+ targetAlias: "components" | "hooks" | "utils" | "lib";
606
+ targetName: string;
607
+ }[];
608
+ template?: boolean | undefined;
609
+ meta?: string | undefined;
610
+ registryDependencies?: string[] | undefined;
611
+ dependencies?: Record<string, string> | undefined;
612
+ deprecatedReason?: string | undefined;
613
+ replacedBy?: string | undefined;
158
614
  }[];
615
+ schemaVersion: 1;
616
+ package: "ui";
617
+ version: string;
618
+ engines: {
619
+ 'teamix-evo': string;
620
+ };
621
+ $schema?: string | undefined;
622
+ }, {
623
+ entries: {
624
+ id: string;
625
+ type: "component" | "hook" | "util" | "block";
626
+ description: string;
627
+ name: string;
628
+ files: {
629
+ source: string;
630
+ targetAlias: "components" | "hooks" | "utils" | "lib";
631
+ targetName: string;
632
+ }[];
633
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
634
+ template?: boolean | undefined;
635
+ status?: "stable" | "experimental" | "deprecated" | undefined;
636
+ meta?: string | undefined;
637
+ registryDependencies?: string[] | undefined;
638
+ dependencies?: Record<string, string> | undefined;
639
+ deprecatedReason?: string | undefined;
640
+ replacedBy?: string | undefined;
641
+ }[];
642
+ schemaVersion: 1;
643
+ package: "ui";
644
+ version: string;
645
+ engines: {
646
+ 'teamix-evo': string;
647
+ };
159
648
  $schema?: string | undefined;
160
649
  }>;
161
650
 
651
+ /**
652
+ * Tailwind CSS major version that the project consumes.
653
+ * Used by integration tooling (skills) to choose the correct token entry file.
654
+ */
655
+ declare const TailwindVersionSchema: z.ZodEnum<["v3", "v4"]>;
656
+ /**
657
+ * Aliases for ui entry write-back paths in the consumer project.
658
+ * Keys mirror shadcn `components.json` aliases for familiarity.
659
+ */
660
+ declare const UiAliasesSchema: z.ZodObject<{
661
+ components: z.ZodString;
662
+ hooks: z.ZodString;
663
+ utils: z.ZodString;
664
+ lib: z.ZodString;
665
+ }, "strip", z.ZodTypeAny, {
666
+ components: string;
667
+ hooks: string;
668
+ utils: string;
669
+ lib: string;
670
+ }, {
671
+ components: string;
672
+ hooks: string;
673
+ utils: string;
674
+ lib: string;
675
+ }>;
162
676
  /**
163
677
  * Package entry within a project config.
678
+ *
679
+ * Some fields only apply to specific packages:
680
+ * - `tailwind` — design only
681
+ * - `ides` / `scope` — skills only
682
+ * - `aliases` / `iconLibrary` / `tsx` / `rsc` — ui only
683
+ *
684
+ * All package-specific fields are optional at the schema level so a single
685
+ * `PackageEntrySchema` can describe every package family.
164
686
  */
165
687
  declare const PackageEntrySchema: z.ZodObject<{
166
- /** Variant identifier (e.g. "opentrek") */
688
+ /** Variant identifier (e.g. "opentrek"; use "_flat" for skills/ui) */
167
689
  variant: z.ZodString;
168
690
  /** Semver version string */
169
691
  version: z.ZodString;
692
+ /** Tailwind CSS version this project uses (only meaningful for design package). */
693
+ tailwind: z.ZodOptional<z.ZodEnum<["v3", "v4"]>>;
694
+ /** IDEs this package was installed for (only meaningful for skills package). */
695
+ ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
696
+ /** Install scope (only meaningful for skills package). */
697
+ scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
698
+ /** Path aliases for ui entry installation (only meaningful for ui package). */
699
+ aliases: z.ZodOptional<z.ZodObject<{
700
+ components: z.ZodString;
701
+ hooks: z.ZodString;
702
+ utils: z.ZodString;
703
+ lib: z.ZodString;
704
+ }, "strip", z.ZodTypeAny, {
705
+ components: string;
706
+ hooks: string;
707
+ utils: string;
708
+ lib: string;
709
+ }, {
710
+ components: string;
711
+ hooks: string;
712
+ utils: string;
713
+ lib: string;
714
+ }>>;
715
+ /**
716
+ * Default icon library declared by the project (only meaningful for ui).
717
+ * Declarative only — does NOT trigger code rewrites; ui entries hardcode imports.
718
+ */
719
+ iconLibrary: z.ZodOptional<z.ZodString>;
720
+ /** Whether the project uses TSX (true) or JSX (false). ui-specific. */
721
+ tsx: z.ZodOptional<z.ZodBoolean>;
722
+ /** Whether to emit React Server Components markers (`"use client"`). ui-specific. */
723
+ rsc: z.ZodOptional<z.ZodBoolean>;
170
724
  }, "strip", z.ZodTypeAny, {
171
725
  variant: string;
172
726
  version: string;
727
+ ides?: ("qoder" | "claude")[] | undefined;
728
+ scope?: "project" | "global" | undefined;
729
+ tailwind?: "v3" | "v4" | undefined;
730
+ aliases?: {
731
+ components: string;
732
+ hooks: string;
733
+ utils: string;
734
+ lib: string;
735
+ } | undefined;
736
+ iconLibrary?: string | undefined;
737
+ tsx?: boolean | undefined;
738
+ rsc?: boolean | undefined;
173
739
  }, {
174
740
  variant: string;
175
741
  version: string;
742
+ ides?: ("qoder" | "claude")[] | undefined;
743
+ scope?: "project" | "global" | undefined;
744
+ tailwind?: "v3" | "v4" | undefined;
745
+ aliases?: {
746
+ components: string;
747
+ hooks: string;
748
+ utils: string;
749
+ lib: string;
750
+ } | undefined;
751
+ iconLibrary?: string | undefined;
752
+ tsx?: boolean | undefined;
753
+ rsc?: boolean | undefined;
176
754
  }>;
177
755
  /**
178
756
  * Project configuration schema — teamix-evo config.json at project root.
@@ -184,16 +762,72 @@ declare const ProjectConfigSchema: z.ZodObject<{
184
762
  ide: z.ZodString;
185
763
  /** Installed packages keyed by package name */
186
764
  packages: z.ZodRecord<z.ZodString, z.ZodObject<{
187
- /** Variant identifier (e.g. "opentrek") */
765
+ /** Variant identifier (e.g. "opentrek"; use "_flat" for skills/ui) */
188
766
  variant: z.ZodString;
189
767
  /** Semver version string */
190
768
  version: z.ZodString;
769
+ /** Tailwind CSS version this project uses (only meaningful for design package). */
770
+ tailwind: z.ZodOptional<z.ZodEnum<["v3", "v4"]>>;
771
+ /** IDEs this package was installed for (only meaningful for skills package). */
772
+ ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
773
+ /** Install scope (only meaningful for skills package). */
774
+ scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
775
+ /** Path aliases for ui entry installation (only meaningful for ui package). */
776
+ aliases: z.ZodOptional<z.ZodObject<{
777
+ components: z.ZodString;
778
+ hooks: z.ZodString;
779
+ utils: z.ZodString;
780
+ lib: z.ZodString;
781
+ }, "strip", z.ZodTypeAny, {
782
+ components: string;
783
+ hooks: string;
784
+ utils: string;
785
+ lib: string;
786
+ }, {
787
+ components: string;
788
+ hooks: string;
789
+ utils: string;
790
+ lib: string;
791
+ }>>;
792
+ /**
793
+ * Default icon library declared by the project (only meaningful for ui).
794
+ * Declarative only — does NOT trigger code rewrites; ui entries hardcode imports.
795
+ */
796
+ iconLibrary: z.ZodOptional<z.ZodString>;
797
+ /** Whether the project uses TSX (true) or JSX (false). ui-specific. */
798
+ tsx: z.ZodOptional<z.ZodBoolean>;
799
+ /** Whether to emit React Server Components markers (`"use client"`). ui-specific. */
800
+ rsc: z.ZodOptional<z.ZodBoolean>;
191
801
  }, "strip", z.ZodTypeAny, {
192
802
  variant: string;
193
803
  version: string;
804
+ ides?: ("qoder" | "claude")[] | undefined;
805
+ scope?: "project" | "global" | undefined;
806
+ tailwind?: "v3" | "v4" | undefined;
807
+ aliases?: {
808
+ components: string;
809
+ hooks: string;
810
+ utils: string;
811
+ lib: string;
812
+ } | undefined;
813
+ iconLibrary?: string | undefined;
814
+ tsx?: boolean | undefined;
815
+ rsc?: boolean | undefined;
194
816
  }, {
195
817
  variant: string;
196
818
  version: string;
819
+ ides?: ("qoder" | "claude")[] | undefined;
820
+ scope?: "project" | "global" | undefined;
821
+ tailwind?: "v3" | "v4" | undefined;
822
+ aliases?: {
823
+ components: string;
824
+ hooks: string;
825
+ utils: string;
826
+ lib: string;
827
+ } | undefined;
828
+ iconLibrary?: string | undefined;
829
+ tsx?: boolean | undefined;
830
+ rsc?: boolean | undefined;
197
831
  }>>;
198
832
  }, "strip", z.ZodTypeAny, {
199
833
  schemaVersion: 1;
@@ -201,6 +835,18 @@ declare const ProjectConfigSchema: z.ZodObject<{
201
835
  packages: Record<string, {
202
836
  variant: string;
203
837
  version: string;
838
+ ides?: ("qoder" | "claude")[] | undefined;
839
+ scope?: "project" | "global" | undefined;
840
+ tailwind?: "v3" | "v4" | undefined;
841
+ aliases?: {
842
+ components: string;
843
+ hooks: string;
844
+ utils: string;
845
+ lib: string;
846
+ } | undefined;
847
+ iconLibrary?: string | undefined;
848
+ tsx?: boolean | undefined;
849
+ rsc?: boolean | undefined;
204
850
  }>;
205
851
  $schema?: string | undefined;
206
852
  }, {
@@ -209,32 +855,56 @@ declare const ProjectConfigSchema: z.ZodObject<{
209
855
  packages: Record<string, {
210
856
  variant: string;
211
857
  version: string;
858
+ ides?: ("qoder" | "claude")[] | undefined;
859
+ scope?: "project" | "global" | undefined;
860
+ tailwind?: "v3" | "v4" | undefined;
861
+ aliases?: {
862
+ components: string;
863
+ hooks: string;
864
+ utils: string;
865
+ lib: string;
866
+ } | undefined;
867
+ iconLibrary?: string | undefined;
868
+ tsx?: boolean | undefined;
869
+ rsc?: boolean | undefined;
212
870
  }>;
213
871
  $schema?: string | undefined;
214
872
  }>;
215
873
 
216
874
  /**
217
875
  * An installed resource entry — tracks individual resource installation state.
876
+ *
877
+ * For type="skill" resources, the same logical skill may produce multiple installed
878
+ * entries (one per ide × scope combination); the optional `ide`/`scope` fields
879
+ * disambiguate them.
218
880
  */
219
881
  declare const InstalledResourceSchema: z.ZodObject<{
220
882
  /** Resource identifier matching the variant manifest */
221
883
  id: z.ZodString;
222
- /** Target path where the resource was installed */
884
+ /** Target path where the resource was installed (absolute or project-relative) */
223
885
  target: z.ZodString;
224
886
  /** Content hash for change detection (e.g. "sha256:...") */
225
887
  hash: z.ZodString;
226
888
  /** Update strategy that was applied */
227
889
  strategy: z.ZodEnum<["frozen", "regenerable", "managed"]>;
890
+ /** IDE this resource was installed for (skill resources only) */
891
+ ide: z.ZodOptional<z.ZodEnum<["qoder", "claude"]>>;
892
+ /** Install scope (skill resources only) */
893
+ scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
228
894
  }, "strip", z.ZodTypeAny, {
229
895
  id: string;
230
896
  target: string;
231
897
  hash: string;
232
898
  strategy: "frozen" | "regenerable" | "managed";
899
+ scope?: "project" | "global" | undefined;
900
+ ide?: "qoder" | "claude" | undefined;
233
901
  }, {
234
902
  id: string;
235
903
  target: string;
236
904
  hash: string;
237
905
  strategy: "frozen" | "regenerable" | "managed";
906
+ scope?: "project" | "global" | undefined;
907
+ ide?: "qoder" | "claude" | undefined;
238
908
  }>;
239
909
  /**
240
910
  * An installed package entry — tracks a single package installation.
@@ -242,7 +912,7 @@ declare const InstalledResourceSchema: z.ZodObject<{
242
912
  declare const InstalledPackageSchema: z.ZodObject<{
243
913
  /** Full package name (e.g. "@teamix-evo/design") */
244
914
  package: z.ZodString;
245
- /** Variant identifier */
915
+ /** Variant identifier (use "_flat" for non-variant packages such as skills) */
246
916
  variant: z.ZodString;
247
917
  /** Installed version */
248
918
  version: z.ZodString;
@@ -252,22 +922,30 @@ declare const InstalledPackageSchema: z.ZodObject<{
252
922
  resources: z.ZodArray<z.ZodObject<{
253
923
  /** Resource identifier matching the variant manifest */
254
924
  id: z.ZodString;
255
- /** Target path where the resource was installed */
925
+ /** Target path where the resource was installed (absolute or project-relative) */
256
926
  target: z.ZodString;
257
927
  /** Content hash for change detection (e.g. "sha256:...") */
258
928
  hash: z.ZodString;
259
929
  /** Update strategy that was applied */
260
930
  strategy: z.ZodEnum<["frozen", "regenerable", "managed"]>;
931
+ /** IDE this resource was installed for (skill resources only) */
932
+ ide: z.ZodOptional<z.ZodEnum<["qoder", "claude"]>>;
933
+ /** Install scope (skill resources only) */
934
+ scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
261
935
  }, "strip", z.ZodTypeAny, {
262
936
  id: string;
263
937
  target: string;
264
938
  hash: string;
265
939
  strategy: "frozen" | "regenerable" | "managed";
940
+ scope?: "project" | "global" | undefined;
941
+ ide?: "qoder" | "claude" | undefined;
266
942
  }, {
267
943
  id: string;
268
944
  target: string;
269
945
  hash: string;
270
946
  strategy: "frozen" | "regenerable" | "managed";
947
+ scope?: "project" | "global" | undefined;
948
+ ide?: "qoder" | "claude" | undefined;
271
949
  }>, "many">;
272
950
  }, "strip", z.ZodTypeAny, {
273
951
  package: string;
@@ -278,6 +956,8 @@ declare const InstalledPackageSchema: z.ZodObject<{
278
956
  target: string;
279
957
  hash: string;
280
958
  strategy: "frozen" | "regenerable" | "managed";
959
+ scope?: "project" | "global" | undefined;
960
+ ide?: "qoder" | "claude" | undefined;
281
961
  }[];
282
962
  installedAt: string;
283
963
  }, {
@@ -289,6 +969,8 @@ declare const InstalledPackageSchema: z.ZodObject<{
289
969
  target: string;
290
970
  hash: string;
291
971
  strategy: "frozen" | "regenerable" | "managed";
972
+ scope?: "project" | "global" | undefined;
973
+ ide?: "qoder" | "claude" | undefined;
292
974
  }[];
293
975
  installedAt: string;
294
976
  }>;
@@ -302,7 +984,7 @@ declare const InstalledManifestSchema: z.ZodObject<{
302
984
  installed: z.ZodArray<z.ZodObject<{
303
985
  /** Full package name (e.g. "@teamix-evo/design") */
304
986
  package: z.ZodString;
305
- /** Variant identifier */
987
+ /** Variant identifier (use "_flat" for non-variant packages such as skills) */
306
988
  variant: z.ZodString;
307
989
  /** Installed version */
308
990
  version: z.ZodString;
@@ -312,22 +994,30 @@ declare const InstalledManifestSchema: z.ZodObject<{
312
994
  resources: z.ZodArray<z.ZodObject<{
313
995
  /** Resource identifier matching the variant manifest */
314
996
  id: z.ZodString;
315
- /** Target path where the resource was installed */
997
+ /** Target path where the resource was installed (absolute or project-relative) */
316
998
  target: z.ZodString;
317
999
  /** Content hash for change detection (e.g. "sha256:...") */
318
1000
  hash: z.ZodString;
319
1001
  /** Update strategy that was applied */
320
1002
  strategy: z.ZodEnum<["frozen", "regenerable", "managed"]>;
1003
+ /** IDE this resource was installed for (skill resources only) */
1004
+ ide: z.ZodOptional<z.ZodEnum<["qoder", "claude"]>>;
1005
+ /** Install scope (skill resources only) */
1006
+ scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
321
1007
  }, "strip", z.ZodTypeAny, {
322
1008
  id: string;
323
1009
  target: string;
324
1010
  hash: string;
325
1011
  strategy: "frozen" | "regenerable" | "managed";
1012
+ scope?: "project" | "global" | undefined;
1013
+ ide?: "qoder" | "claude" | undefined;
326
1014
  }, {
327
1015
  id: string;
328
1016
  target: string;
329
1017
  hash: string;
330
1018
  strategy: "frozen" | "regenerable" | "managed";
1019
+ scope?: "project" | "global" | undefined;
1020
+ ide?: "qoder" | "claude" | undefined;
331
1021
  }>, "many">;
332
1022
  }, "strip", z.ZodTypeAny, {
333
1023
  package: string;
@@ -338,6 +1028,8 @@ declare const InstalledManifestSchema: z.ZodObject<{
338
1028
  target: string;
339
1029
  hash: string;
340
1030
  strategy: "frozen" | "regenerable" | "managed";
1031
+ scope?: "project" | "global" | undefined;
1032
+ ide?: "qoder" | "claude" | undefined;
341
1033
  }[];
342
1034
  installedAt: string;
343
1035
  }, {
@@ -349,6 +1041,8 @@ declare const InstalledManifestSchema: z.ZodObject<{
349
1041
  target: string;
350
1042
  hash: string;
351
1043
  strategy: "frozen" | "regenerable" | "managed";
1044
+ scope?: "project" | "global" | undefined;
1045
+ ide?: "qoder" | "claude" | undefined;
352
1046
  }[];
353
1047
  installedAt: string;
354
1048
  }>, "many">;
@@ -363,6 +1057,8 @@ declare const InstalledManifestSchema: z.ZodObject<{
363
1057
  target: string;
364
1058
  hash: string;
365
1059
  strategy: "frozen" | "regenerable" | "managed";
1060
+ scope?: "project" | "global" | undefined;
1061
+ ide?: "qoder" | "claude" | undefined;
366
1062
  }[];
367
1063
  installedAt: string;
368
1064
  }[];
@@ -377,6 +1073,8 @@ declare const InstalledManifestSchema: z.ZodObject<{
377
1073
  target: string;
378
1074
  hash: string;
379
1075
  strategy: "frozen" | "regenerable" | "managed";
1076
+ scope?: "project" | "global" | undefined;
1077
+ ide?: "qoder" | "claude" | undefined;
380
1078
  }[];
381
1079
  installedAt: string;
382
1080
  }[];
@@ -386,12 +1084,34 @@ declare const InstalledManifestSchema: z.ZodObject<{
386
1084
  type UpdateStrategy = z.infer<typeof UpdateStrategySchema>;
387
1085
  /** Resource type discriminator */
388
1086
  type ResourceType = z.infer<typeof ResourceTypeSchema>;
1087
+ /** AI IDE identifier supported by skills (qoder | claude) */
1088
+ type SkillIde = z.infer<typeof SkillIdeSchema>;
1089
+ /** Skill installation scope (project | global) */
1090
+ type SkillScope = z.infer<typeof SkillScopeSchema>;
1091
+ /** UI entry type discriminator */
1092
+ type UiEntryType = z.infer<typeof UiEntryTypeSchema>;
1093
+ /** UI write-back alias key (components | hooks | utils | lib) */
1094
+ type UiAlias = z.infer<typeof UiAliasSchema>;
389
1095
  /** A single resource entry within a variant manifest */
390
1096
  type Resource = z.infer<typeof ResourceSchema>;
391
1097
  /** Variant manifest describing a package variant and its resources */
392
1098
  type VariantManifest = z.infer<typeof VariantManifestSchema>;
1099
+ /** A single skill entry in a skills package manifest */
1100
+ type SkillEntry = z.infer<typeof SkillEntrySchema>;
1101
+ /** Skills package manifest (top-level manifest of @teamix-evo/skills) */
1102
+ type SkillsPackageManifest = z.infer<typeof SkillsPackageManifestSchema>;
1103
+ /** A single file shipped by a UI entry */
1104
+ type UiEntryFile = z.infer<typeof UiEntryFileSchema>;
1105
+ /** A single UI entry (component / hook / util / block) */
1106
+ type UiEntry = z.infer<typeof UiEntrySchema>;
1107
+ /** UI package manifest (top-level manifest of @teamix-evo/ui) */
1108
+ type UiPackageManifest = z.infer<typeof UiPackageManifestSchema>;
1109
+ /** Path aliases for UI entry installation in the consumer project */
1110
+ type UiAliases = z.infer<typeof UiAliasesSchema>;
393
1111
  /** A package entry in the project config */
394
1112
  type PackageEntry = z.infer<typeof PackageEntrySchema>;
1113
+ /** Tailwind CSS major version ("v3" | "v4") */
1114
+ type TailwindVersion = z.infer<typeof TailwindVersionSchema>;
395
1115
  /** Project configuration (config.json) */
396
1116
  type ProjectConfig = z.infer<typeof ProjectConfigSchema>;
397
1117
  /** An installed resource tracking entry */
@@ -431,6 +1151,29 @@ type Result<T> = {
431
1151
  * @throws Error if the file cannot be read or the manifest is invalid
432
1152
  */
433
1153
  declare function loadVariantManifest(packageDir: string): Promise<VariantManifest>;
1154
+ /**
1155
+ * Load and validate the top-level manifest of a skills package.
1156
+ *
1157
+ * Reads `manifest.json` from the given directory and validates it against
1158
+ * the SkillsPackageManifest schema (flat list of skills, no variants).
1159
+ *
1160
+ * @param packageDir - Absolute or relative path to the skills package directory
1161
+ * @returns The validated SkillsPackageManifest
1162
+ * @throws Error if the file cannot be read or the manifest is invalid
1163
+ */
1164
+ declare function loadSkillsPackageManifest(packageDir: string): Promise<SkillsPackageManifest>;
1165
+ /**
1166
+ * Load and validate the top-level manifest of a UI package.
1167
+ *
1168
+ * Reads `manifest.json` from the given directory and validates it against
1169
+ * the UiPackageManifest schema (flat list of entries, no variants).
1170
+ * Also performs registryDependencies graph validation (existence + no cycles).
1171
+ *
1172
+ * @param packageDir - Absolute or relative path to the ui package directory
1173
+ * @returns The validated UiPackageManifest
1174
+ * @throws Error if the file cannot be read, the manifest is invalid, or the dep graph is broken
1175
+ */
1176
+ declare function loadUiPackageManifest(packageDir: string): Promise<UiPackageManifest>;
434
1177
 
435
1178
  /**
436
1179
  * Validate unknown data against the VariantManifest schema.
@@ -445,6 +1188,35 @@ declare function validateConfig(data: unknown): Result<ProjectConfig>;
445
1188
  * Validate unknown data against the InstalledManifest schema.
446
1189
  */
447
1190
  declare function validateInstalled(data: unknown): Result<InstalledManifest>;
1191
+ /**
1192
+ * Validate unknown data against the SkillsPackageManifest schema.
1193
+ */
1194
+ declare function validateSkillsPackage(data: unknown): Result<SkillsPackageManifest>;
1195
+ /**
1196
+ * Validate unknown data against the UiPackageManifest schema, then verify the
1197
+ * registryDependencies graph: every reference resolves and there are no cycles.
1198
+ */
1199
+ declare function validateUiPackage(data: unknown): Result<UiPackageManifest>;
1200
+ /**
1201
+ * Validate the registryDependencies graph among ui entries.
1202
+ * Returns a list of issue strings (empty when the graph is sound).
1203
+ *
1204
+ * Issues detected:
1205
+ * - Duplicate entry id
1206
+ * - Reference to an unknown entry id
1207
+ * - Cyclic dependency
1208
+ */
1209
+ declare function validateUiDependencyGraph(entries: UiEntry[]): string[];
1210
+ /**
1211
+ * Topologically sort a subset of ui entries so that dependencies come before
1212
+ * dependents. Used by `ui add` to determine install order.
1213
+ *
1214
+ * @param entries full list of entries (the package manifest's `entries`)
1215
+ * @param requested ids the user explicitly asked to install
1216
+ * @returns ordered list of entry ids (includes transitive deps, dedup'd)
1217
+ * @throws Error if a requested id or transitive dep is missing or graph has cycles
1218
+ */
1219
+ declare function resolveUiEntryOrder(entries: UiEntry[], requested: string[]): string[];
448
1220
 
449
1221
  /**
450
1222
  * Parse all managed regions from document content.
@@ -502,4 +1274,4 @@ interface UpdateActionOptions {
502
1274
  */
503
1275
  declare function getUpdateAction(strategy: UpdateStrategy, options: UpdateActionOptions): UpdateAction;
504
1276
 
505
- export { type InstalledManifest, InstalledManifestSchema, type InstalledPackage, InstalledPackageSchema, type InstalledResource, InstalledResourceSchema, type ManagedRegion, type PackageEntry, PackageEntrySchema, type ProjectConfig, ProjectConfigSchema, type Resource, ResourceSchema, type ResourceType, ResourceTypeSchema, type Result, type UpdateAction, type UpdateActionOptions, type UpdateStrategy, UpdateStrategySchema, type VariantManifest, VariantManifestSchema, getUpdateAction, hasManagedRegion, loadVariantManifest, parseManagedRegions, replaceManagedRegion, shouldUpdate, validateConfig, validateInstalled, validateManifest };
1277
+ export { type InstalledManifest, InstalledManifestSchema, type InstalledPackage, InstalledPackageSchema, type InstalledResource, InstalledResourceSchema, type ManagedRegion, type PackageEntry, PackageEntrySchema, type ProjectConfig, ProjectConfigSchema, type Resource, ResourceSchema, type ResourceType, ResourceTypeSchema, type Result, type SkillEntry, SkillEntrySchema, type SkillIde, SkillIdeSchema, type SkillScope, SkillScopeSchema, type SkillsPackageManifest, SkillsPackageManifestSchema, type TailwindVersion, TailwindVersionSchema, type UiAlias, UiAliasSchema, type UiAliases, UiAliasesSchema, type UiEntry, type UiEntryFile, UiEntryFileSchema, UiEntrySchema, type UiEntryType, UiEntryTypeSchema, type UiPackageManifest, UiPackageManifestSchema, type UpdateAction, type UpdateActionOptions, type UpdateStrategy, UpdateStrategySchema, type VariantManifest, VariantManifestSchema, getUpdateAction, hasManagedRegion, loadSkillsPackageManifest, loadUiPackageManifest, loadVariantManifest, parseManagedRegions, replaceManagedRegion, resolveUiEntryOrder, shouldUpdate, validateConfig, validateInstalled, validateManifest, validateSkillsPackage, validateUiDependencyGraph, validateUiPackage };