@cronus-ui/stack 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/catalog.js +93 -24
- package/dist/kickoff.js +26 -6
- package/dist/types.d.ts +6 -1
- package/package.json +1 -1
package/dist/catalog.js
CHANGED
|
@@ -31,6 +31,7 @@ export const catalog = [
|
|
|
31
31
|
name: "Next.js",
|
|
32
32
|
description: "React App Router meta-framework.",
|
|
33
33
|
icon: "triangle",
|
|
34
|
+
emits: "scaffold",
|
|
34
35
|
},
|
|
35
36
|
{
|
|
36
37
|
id: "web-tanstack-start",
|
|
@@ -228,6 +229,7 @@ export const catalog = [
|
|
|
228
229
|
// SQL-only in this catalog: needs a SQL db, never Mongo.
|
|
229
230
|
requires: ["db-sql"],
|
|
230
231
|
conflicts: ["db-mongodb"],
|
|
232
|
+
emits: "scaffold",
|
|
231
233
|
},
|
|
232
234
|
{
|
|
233
235
|
id: "orm-prisma",
|
|
@@ -367,6 +369,7 @@ export const catalog = [
|
|
|
367
369
|
icon: "sparkles",
|
|
368
370
|
requires: ["web-react"],
|
|
369
371
|
recommends: ["mcp-cronus-ui"],
|
|
372
|
+
emits: "scaffold",
|
|
370
373
|
},
|
|
371
374
|
{
|
|
372
375
|
id: "ui-shadcn",
|
|
@@ -374,6 +377,7 @@ export const catalog = [
|
|
|
374
377
|
description: "Copy-in Radix + Tailwind components.",
|
|
375
378
|
icon: "component",
|
|
376
379
|
requires: ["web-react"],
|
|
380
|
+
emits: "scaffold",
|
|
377
381
|
},
|
|
378
382
|
{
|
|
379
383
|
id: "ui-heroui",
|
|
@@ -381,6 +385,7 @@ export const catalog = [
|
|
|
381
385
|
description: "Beautiful React component library.",
|
|
382
386
|
icon: "component",
|
|
383
387
|
requires: ["web-react"],
|
|
388
|
+
emits: "scaffold",
|
|
384
389
|
},
|
|
385
390
|
{
|
|
386
391
|
id: "ui-aceternity",
|
|
@@ -389,14 +394,22 @@ export const catalog = [
|
|
|
389
394
|
icon: "wand-sparkles",
|
|
390
395
|
requires: ["web-react"],
|
|
391
396
|
badge: "experimental",
|
|
397
|
+
emits: "scaffold",
|
|
392
398
|
},
|
|
393
399
|
{
|
|
394
400
|
id: "ui-tailwind",
|
|
395
401
|
name: "Tailwind-only",
|
|
396
402
|
description: "Utility CSS, bring your own components.",
|
|
397
403
|
icon: "paintbrush",
|
|
404
|
+
emits: "scaffold",
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
id: "ui-none",
|
|
408
|
+
name: "None",
|
|
409
|
+
description: "No UI library.",
|
|
410
|
+
icon: "circle-slash",
|
|
411
|
+
emits: "scaffold",
|
|
398
412
|
},
|
|
399
|
-
{ id: "ui-none", name: "None", description: "No UI library.", icon: "circle-slash" },
|
|
400
413
|
],
|
|
401
414
|
},
|
|
402
415
|
// ------------------------------------------------------- AI ASSISTANTS ----
|
|
@@ -411,15 +424,29 @@ export const catalog = [
|
|
|
411
424
|
name: "Claude Code",
|
|
412
425
|
description: "Anthropic's official coding agent.",
|
|
413
426
|
icon: "bot",
|
|
427
|
+
emits: "scaffold",
|
|
414
428
|
},
|
|
415
429
|
{
|
|
416
430
|
id: "ai-cursor",
|
|
417
431
|
name: "Cursor",
|
|
418
432
|
description: "AI-first code editor.",
|
|
419
433
|
icon: "mouse-pointer-2",
|
|
434
|
+
emits: "scaffold",
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
id: "ai-windsurf",
|
|
438
|
+
name: "Windsurf",
|
|
439
|
+
description: "Agentic IDE by Codeium.",
|
|
440
|
+
icon: "wind",
|
|
441
|
+
emits: "scaffold",
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
id: "ai-copilot",
|
|
445
|
+
name: "Copilot",
|
|
446
|
+
description: "GitHub Copilot.",
|
|
447
|
+
icon: "github",
|
|
448
|
+
emits: "scaffold",
|
|
420
449
|
},
|
|
421
|
-
{ id: "ai-windsurf", name: "Windsurf", description: "Agentic IDE by Codeium.", icon: "wind" },
|
|
422
|
-
{ id: "ai-copilot", name: "Copilot", description: "GitHub Copilot.", icon: "github" },
|
|
423
450
|
{
|
|
424
451
|
id: "ai-cline",
|
|
425
452
|
name: "Cline",
|
|
@@ -441,6 +468,7 @@ export const catalog = [
|
|
|
441
468
|
description: "Cronus UI component & token context.",
|
|
442
469
|
icon: "sparkles",
|
|
443
470
|
recommends: ["ui-cronus"],
|
|
471
|
+
emits: "scaffold",
|
|
444
472
|
},
|
|
445
473
|
{
|
|
446
474
|
id: "mcp-postgres",
|
|
@@ -472,38 +500,57 @@ export const catalog = [
|
|
|
472
500
|
{
|
|
473
501
|
id: "skills",
|
|
474
502
|
title: "Skills",
|
|
475
|
-
description: "
|
|
503
|
+
description: "Claude Code skills written into the repo by the AI Kit.",
|
|
476
504
|
kind: "multi",
|
|
477
505
|
options: [
|
|
478
506
|
{
|
|
479
|
-
id: "skill-
|
|
480
|
-
name: "
|
|
481
|
-
description: "
|
|
482
|
-
icon: "
|
|
507
|
+
id: "skill-ui-add",
|
|
508
|
+
name: "ui-add",
|
|
509
|
+
description: "Install a Cronus UI component or block.",
|
|
510
|
+
icon: "component",
|
|
511
|
+
emits: "scaffold",
|
|
483
512
|
},
|
|
484
513
|
{
|
|
485
|
-
id: "skill-
|
|
486
|
-
name: "
|
|
487
|
-
description: "
|
|
488
|
-
icon: "
|
|
514
|
+
id: "skill-theme",
|
|
515
|
+
name: "theme",
|
|
516
|
+
description: "Preview and switch Cronus UI themes.",
|
|
517
|
+
icon: "paintbrush",
|
|
518
|
+
emits: "scaffold",
|
|
489
519
|
},
|
|
490
520
|
{
|
|
491
|
-
id: "skill-
|
|
492
|
-
name: "
|
|
493
|
-
description: "
|
|
521
|
+
id: "skill-compose",
|
|
522
|
+
name: "compose",
|
|
523
|
+
description: "Scaffold or grow a Cronus UI product.",
|
|
524
|
+
icon: "layers",
|
|
525
|
+
emits: "scaffold",
|
|
526
|
+
},
|
|
527
|
+
{
|
|
528
|
+
id: "skill-upgrade",
|
|
529
|
+
name: "upgrade",
|
|
530
|
+
description: "Pull upstream Cronus UI updates without losing edits.",
|
|
531
|
+
icon: "wand",
|
|
532
|
+
emits: "scaffold",
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
id: "skill-code-review",
|
|
536
|
+
name: "code-review",
|
|
537
|
+
description: "Adversarial review of the working diff.",
|
|
494
538
|
icon: "shield-alert",
|
|
539
|
+
emits: "scaffold",
|
|
495
540
|
},
|
|
496
541
|
{
|
|
497
|
-
id: "skill-
|
|
498
|
-
name: "
|
|
499
|
-
description: "
|
|
500
|
-
icon: "
|
|
542
|
+
id: "skill-ship-pr",
|
|
543
|
+
name: "ship-pr",
|
|
544
|
+
description: "Commit and open a pull request.",
|
|
545
|
+
icon: "git-merge",
|
|
546
|
+
emits: "scaffold",
|
|
501
547
|
},
|
|
502
548
|
{
|
|
503
|
-
id: "skill-
|
|
504
|
-
name: "
|
|
505
|
-
description: "
|
|
549
|
+
id: "skill-evidence-check",
|
|
550
|
+
name: "evidence-check",
|
|
551
|
+
description: "Tag claims with evidence levels.",
|
|
506
552
|
icon: "flask-conical",
|
|
553
|
+
emits: "scaffold",
|
|
507
554
|
},
|
|
508
555
|
],
|
|
509
556
|
},
|
|
@@ -563,18 +610,26 @@ export const catalog = [
|
|
|
563
610
|
description: "Dependency & workspace tool.",
|
|
564
611
|
kind: "single",
|
|
565
612
|
options: [
|
|
566
|
-
{
|
|
613
|
+
{
|
|
614
|
+
id: "pm-bun",
|
|
615
|
+
name: "bun",
|
|
616
|
+
description: "Fast all-in-one toolkit.",
|
|
617
|
+
icon: "rabbit",
|
|
618
|
+
emits: "scaffold",
|
|
619
|
+
},
|
|
567
620
|
{
|
|
568
621
|
id: "pm-pnpm",
|
|
569
622
|
name: "pnpm",
|
|
570
623
|
description: "Efficient, strict node_modules.",
|
|
571
624
|
icon: "package",
|
|
625
|
+
emits: "scaffold",
|
|
572
626
|
},
|
|
573
627
|
{
|
|
574
628
|
id: "pm-npm",
|
|
575
629
|
name: "npm",
|
|
576
630
|
description: "The default Node package manager.",
|
|
577
631
|
icon: "package",
|
|
632
|
+
emits: "scaffold",
|
|
578
633
|
},
|
|
579
634
|
],
|
|
580
635
|
},
|
|
@@ -598,7 +653,13 @@ export const catalog = [
|
|
|
598
653
|
icon: "app-window",
|
|
599
654
|
badge: "experimental",
|
|
600
655
|
},
|
|
601
|
-
{
|
|
656
|
+
{
|
|
657
|
+
id: "addon-biome",
|
|
658
|
+
name: "Biome",
|
|
659
|
+
description: "Fast formatter & linter.",
|
|
660
|
+
icon: "wand",
|
|
661
|
+
emits: "scaffold",
|
|
662
|
+
},
|
|
602
663
|
{
|
|
603
664
|
id: "addon-turborepo",
|
|
604
665
|
name: "Turborepo",
|
|
@@ -685,12 +746,14 @@ export const catalog = [
|
|
|
685
746
|
name: "src/ directory",
|
|
686
747
|
description: "All app code under src/.",
|
|
687
748
|
icon: "folder-tree",
|
|
749
|
+
emits: "scaffold",
|
|
688
750
|
},
|
|
689
751
|
{
|
|
690
752
|
id: "structure-root",
|
|
691
753
|
name: "Root-level",
|
|
692
754
|
description: "app/ and code at the repo root.",
|
|
693
755
|
icon: "folder",
|
|
756
|
+
emits: "scaffold",
|
|
694
757
|
},
|
|
695
758
|
],
|
|
696
759
|
},
|
|
@@ -706,12 +769,14 @@ export const catalog = [
|
|
|
706
769
|
name: "@/ alias",
|
|
707
770
|
description: "Absolute imports from the app root.",
|
|
708
771
|
icon: "at-sign",
|
|
772
|
+
emits: "scaffold",
|
|
709
773
|
},
|
|
710
774
|
{
|
|
711
775
|
id: "import-relative",
|
|
712
776
|
name: "Relative",
|
|
713
777
|
description: "Relative ./ and ../ paths.",
|
|
714
778
|
icon: "route",
|
|
779
|
+
emits: "scaffold",
|
|
715
780
|
},
|
|
716
781
|
],
|
|
717
782
|
},
|
|
@@ -727,12 +792,14 @@ export const catalog = [
|
|
|
727
792
|
name: "Conventional",
|
|
728
793
|
description: "type(scope): subject",
|
|
729
794
|
icon: "git-commit",
|
|
795
|
+
emits: "scaffold",
|
|
730
796
|
},
|
|
731
797
|
{
|
|
732
798
|
id: "commit-plain",
|
|
733
799
|
name: "Plain",
|
|
734
800
|
description: "Freeform commit messages.",
|
|
735
801
|
icon: "git-commit",
|
|
802
|
+
emits: "scaffold",
|
|
736
803
|
},
|
|
737
804
|
],
|
|
738
805
|
},
|
|
@@ -748,12 +815,14 @@ export const catalog = [
|
|
|
748
815
|
name: "Strict",
|
|
749
816
|
description: "strict + no implicit any.",
|
|
750
817
|
icon: "shield-check",
|
|
818
|
+
emits: "scaffold",
|
|
751
819
|
},
|
|
752
820
|
{
|
|
753
821
|
id: "ts-standard",
|
|
754
822
|
name: "Standard",
|
|
755
823
|
description: "Default tsconfig strictness.",
|
|
756
824
|
icon: "shield",
|
|
825
|
+
emits: "scaffold",
|
|
757
826
|
},
|
|
758
827
|
],
|
|
759
828
|
},
|
package/dist/kickoff.js
CHANGED
|
@@ -254,6 +254,8 @@ export function generateKickoff(config, projectName = "my-cronus-app", catalog =
|
|
|
254
254
|
const backendId = singleId(config, "backend");
|
|
255
255
|
const apiId = singleId(config, "api");
|
|
256
256
|
const databaseId = singleId(config, "database");
|
|
257
|
+
const ormId = singleId(config, "orm");
|
|
258
|
+
const dbSetupId = singleId(config, "dbSetup");
|
|
257
259
|
const authId = singleId(config, "auth");
|
|
258
260
|
const paymentsId = singleId(config, "payments");
|
|
259
261
|
const isNext = webId === "web-next";
|
|
@@ -343,10 +345,24 @@ export function generateKickoff(config, projectName = "my-cronus-app", catalog =
|
|
|
343
345
|
followUps.push(`Add the typed API contract for **${api}**.`);
|
|
344
346
|
}
|
|
345
347
|
if (hasDatabase && database) {
|
|
346
|
-
|
|
348
|
+
if (ormId === "orm-drizzle") {
|
|
349
|
+
followUps.push("Run db:push — Drizzle schema is already in the repo.");
|
|
350
|
+
if (dbSetup && dbSetupId && dbSetupId !== "dbsetup-basic") {
|
|
351
|
+
followUps.push(`Configure **${dbSetup}**; generated Drizzle files use a local DATABASE_URL.`);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
followUps.push(`Wire **${database}**${orm ? ` with **${orm}**` : ""} before syncing schema.`);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
if (auth) {
|
|
359
|
+
if (authId === "auth-better-auth" && ormId === "orm-drizzle") {
|
|
360
|
+
followUps.push("Better-Auth is scaffolded — set BETTER_AUTH_SECRET and protect mutating routes.");
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
followUps.push(`Implement **${auth}** and protect mutating routes.`);
|
|
364
|
+
}
|
|
347
365
|
}
|
|
348
|
-
if (auth)
|
|
349
|
-
followUps.push(`Implement **${auth}** and protect mutating routes.`);
|
|
350
366
|
if (payments) {
|
|
351
367
|
followUps.push(`Implement **${payments}** webhooks server-side; never trust client-side amounts.`);
|
|
352
368
|
}
|
|
@@ -367,8 +383,12 @@ export function generateKickoff(config, projectName = "my-cronus-app", catalog =
|
|
|
367
383
|
if (hasLint)
|
|
368
384
|
lines.push(scriptCommand(pmBin, "lint"));
|
|
369
385
|
lines.push(scriptCommand(pmBin, "build"));
|
|
370
|
-
if (hasDatabase)
|
|
371
|
-
|
|
386
|
+
if (hasDatabase) {
|
|
387
|
+
const dbPushComment = ormId === "orm-drizzle"
|
|
388
|
+
? "sync the Drizzle schema already in the repo"
|
|
389
|
+
: "sync schema after DB is wired";
|
|
390
|
+
lines.push(`${scriptCommand(pmBin, "db:push")} # ${dbPushComment}`);
|
|
391
|
+
}
|
|
372
392
|
lines.push("```");
|
|
373
393
|
lines.push("");
|
|
374
394
|
// --- AI capabilities ---
|
|
@@ -377,7 +397,7 @@ export function generateKickoff(config, projectName = "my-cronus-app", catalog =
|
|
|
377
397
|
lines.push(`- **Assistants:** ${assistants.length ? assistants.join(", ") : "none"}`);
|
|
378
398
|
lines.push(`- **MCP servers:** ${mcp.length ? mcp.join(", ") : "none"}`);
|
|
379
399
|
lines.push(`- **Skills:** ${skills.length ? skills.join(", ") : "none"}`);
|
|
380
|
-
lines.push("- Generated files cover the supported assistants
|
|
400
|
+
lines.push("- Generated files cover the supported assistants, MCP servers, and AI Kit skills; unsupported MCP servers remain manual follow-up.");
|
|
381
401
|
if (vibe) {
|
|
382
402
|
lines.push("- **Vibe Mode: ON** — looser guardrails for fast prototyping. Prefer momentum over ceremony, but never skip the security/DoD checks below.");
|
|
383
403
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* cross-category constraints can reference them directly.
|
|
12
12
|
*/
|
|
13
13
|
/** A short status flag rendered as a pill on an option. */
|
|
14
|
-
export type Badge = "beta" | "new" | "experimental" | "gated";
|
|
14
|
+
export type Badge = "beta" | "new" | "experimental" | "gated" | "kickoff";
|
|
15
15
|
/**
|
|
16
16
|
* How a category is selected:
|
|
17
17
|
* - "single": exactly one option id (radio).
|
|
@@ -31,6 +31,11 @@ export interface Option {
|
|
|
31
31
|
icon?: string;
|
|
32
32
|
/** Optional status pill. */
|
|
33
33
|
badge?: Badge;
|
|
34
|
+
/**
|
|
35
|
+
* Whether `create-cronus-stack` writes real files/config for this option.
|
|
36
|
+
* Undefined means kickoff-only (KICKOFF.md / stack.json) — the honest default.
|
|
37
|
+
*/
|
|
38
|
+
emits?: "scaffold" | "kickoff";
|
|
34
39
|
/** Option ids that must ALL be selected for this option to be available. */
|
|
35
40
|
requires?: string[];
|
|
36
41
|
/** Option ids that, if any is selected, make this option unavailable. */
|