claudekit-cli 3.11.1 → 3.12.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 (2) hide show
  1. package/dist/index.js +189 -128
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -13922,25 +13922,25 @@ class OwnershipDisplay {
13922
13922
  static formatOwnership(ownership) {
13923
13923
  switch (ownership) {
13924
13924
  case "ck":
13925
- return import_picocolors12.default.blue("CK-owned");
13925
+ return import_picocolors13.default.blue("CK-owned");
13926
13926
  case "user":
13927
- return import_picocolors12.default.green("User-created");
13927
+ return import_picocolors13.default.green("User-created");
13928
13928
  case "ck-modified":
13929
- return import_picocolors12.default.yellow("CK-modified");
13929
+ return import_picocolors13.default.yellow("CK-modified");
13930
13930
  default:
13931
- return import_picocolors12.default.gray("Unknown");
13931
+ return import_picocolors13.default.gray("Unknown");
13932
13932
  }
13933
13933
  }
13934
13934
  static formatAction(action) {
13935
13935
  switch (action) {
13936
13936
  case "delete":
13937
- return import_picocolors12.default.red("✖ DELETE");
13937
+ return import_picocolors13.default.red("✖ DELETE");
13938
13938
  case "preserve":
13939
- return import_picocolors12.default.green("✓ PRESERVE");
13939
+ return import_picocolors13.default.green("✓ PRESERVE");
13940
13940
  case "skip":
13941
- return import_picocolors12.default.gray("○ SKIP");
13941
+ return import_picocolors13.default.gray("○ SKIP");
13942
13942
  default:
13943
- return import_picocolors12.default.gray("? UNKNOWN");
13943
+ return import_picocolors13.default.gray("? UNKNOWN");
13944
13944
  }
13945
13945
  }
13946
13946
  static calculateSummary(results) {
@@ -13974,78 +13974,78 @@ class OwnershipDisplay {
13974
13974
  }
13975
13975
  static displaySummary(summary, title = "Ownership Summary") {
13976
13976
  const lines = [
13977
- `Total files: ${import_picocolors12.default.bold(String(summary.totalFiles))}`,
13977
+ `Total files: ${import_picocolors13.default.bold(String(summary.totalFiles))}`,
13978
13978
  "",
13979
13979
  "By ownership:",
13980
- ` ${import_picocolors12.default.blue("●")} CK-owned: ${summary.ckOwned}`,
13981
- ` ${import_picocolors12.default.green("●")} User-created: ${summary.userCreated}`,
13982
- ` ${import_picocolors12.default.yellow("●")} CK-modified: ${summary.ckModified}`,
13980
+ ` ${import_picocolors13.default.blue("●")} CK-owned: ${summary.ckOwned}`,
13981
+ ` ${import_picocolors13.default.green("●")} User-created: ${summary.userCreated}`,
13982
+ ` ${import_picocolors13.default.yellow("●")} CK-modified: ${summary.ckModified}`,
13983
13983
  "",
13984
13984
  "Actions:",
13985
- ` ${import_picocolors12.default.red("✖")} To delete: ${summary.toDelete}`,
13986
- ` ${import_picocolors12.default.green("✓")} To preserve: ${summary.toPreserve}`
13985
+ ` ${import_picocolors13.default.red("✖")} To delete: ${summary.toDelete}`,
13986
+ ` ${import_picocolors13.default.green("✓")} To preserve: ${summary.toPreserve}`
13987
13987
  ];
13988
13988
  le(lines.join(`
13989
13989
  `), title);
13990
13990
  }
13991
13991
  static displayOperationPreview(results, maxItems = 10) {
13992
13992
  const summary = OwnershipDisplay.calculateSummary(results);
13993
- f2.info(import_picocolors12.default.bold("DRY RUN - Preview of changes:"));
13993
+ f2.info(import_picocolors13.default.bold("DRY RUN - Preview of changes:"));
13994
13994
  console.log("");
13995
13995
  const toDelete = results.filter((r2) => r2.action === "delete");
13996
13996
  const toPreserve = results.filter((r2) => r2.action === "preserve");
13997
13997
  if (toDelete.length > 0) {
13998
- console.log(import_picocolors12.default.red(import_picocolors12.default.bold(`Files to DELETE (${toDelete.length}):`)));
13998
+ console.log(import_picocolors13.default.red(import_picocolors13.default.bold(`Files to DELETE (${toDelete.length}):`)));
13999
13999
  const showDelete = toDelete.slice(0, maxItems);
14000
14000
  for (const result of showDelete) {
14001
- console.log(` ${import_picocolors12.default.red("✖")} ${result.path}`);
14001
+ console.log(` ${import_picocolors13.default.red("✖")} ${result.path}`);
14002
14002
  }
14003
14003
  if (toDelete.length > maxItems) {
14004
- console.log(import_picocolors12.default.gray(` ... and ${toDelete.length - maxItems} more`));
14004
+ console.log(import_picocolors13.default.gray(` ... and ${toDelete.length - maxItems} more`));
14005
14005
  }
14006
14006
  console.log("");
14007
14007
  }
14008
14008
  if (toPreserve.length > 0) {
14009
- console.log(import_picocolors12.default.green(import_picocolors12.default.bold(`Files to PRESERVE (${toPreserve.length}):`)));
14009
+ console.log(import_picocolors13.default.green(import_picocolors13.default.bold(`Files to PRESERVE (${toPreserve.length}):`)));
14010
14010
  const showPreserve = toPreserve.slice(0, maxItems);
14011
14011
  for (const result of showPreserve) {
14012
- const reason = result.reason ? import_picocolors12.default.gray(` (${result.reason})`) : "";
14013
- console.log(` ${import_picocolors12.default.green("✓")} ${result.path}${reason}`);
14012
+ const reason = result.reason ? import_picocolors13.default.gray(` (${result.reason})`) : "";
14013
+ console.log(` ${import_picocolors13.default.green("✓")} ${result.path}${reason}`);
14014
14014
  }
14015
14015
  if (toPreserve.length > maxItems) {
14016
- console.log(import_picocolors12.default.gray(` ... and ${toPreserve.length - maxItems} more`));
14016
+ console.log(import_picocolors13.default.gray(` ... and ${toPreserve.length - maxItems} more`));
14017
14017
  }
14018
14018
  console.log("");
14019
14019
  }
14020
14020
  OwnershipDisplay.displaySummary(summary, "Preview Summary");
14021
- f2.warn(import_picocolors12.default.yellow("No changes were made. Run without --dry-run to apply changes."));
14021
+ f2.warn(import_picocolors13.default.yellow("No changes were made. Run without --dry-run to apply changes."));
14022
14022
  }
14023
14023
  static displayFile(path9, ownership, action, reason) {
14024
14024
  const ownershipStr = OwnershipDisplay.formatOwnership(ownership);
14025
14025
  const actionStr = OwnershipDisplay.formatAction(action);
14026
- const reasonStr = reason ? import_picocolors12.default.gray(` - ${reason}`) : "";
14026
+ const reasonStr = reason ? import_picocolors13.default.gray(` - ${reason}`) : "";
14027
14027
  console.log(` ${actionStr} ${path9} [${ownershipStr}]${reasonStr}`);
14028
14028
  }
14029
14029
  static displayForceWarning() {
14030
- f2.warn(`${import_picocolors12.default.yellow(import_picocolors12.default.bold("FORCE MODE ENABLED"))}
14031
- ${import_picocolors12.default.yellow("User modifications will be overwritten!")}
14032
- ${import_picocolors12.default.gray("Use --dry-run first to preview changes.")}`);
14030
+ f2.warn(`${import_picocolors13.default.yellow(import_picocolors13.default.bold("FORCE MODE ENABLED"))}
14031
+ ${import_picocolors13.default.yellow("User modifications will be overwritten!")}
14032
+ ${import_picocolors13.default.gray("Use --dry-run first to preview changes.")}`);
14033
14033
  }
14034
14034
  static displayLegacyWarning() {
14035
- f2.warn(`${import_picocolors12.default.yellow(import_picocolors12.default.bold("Legacy Installation Detected"))}
14036
- ${import_picocolors12.default.yellow("No ownership metadata found.")}
14037
- ${import_picocolors12.default.gray("Running migration to enable ownership tracking...")}`);
14035
+ f2.warn(`${import_picocolors13.default.yellow(import_picocolors13.default.bold("Legacy Installation Detected"))}
14036
+ ${import_picocolors13.default.yellow("No ownership metadata found.")}
14037
+ ${import_picocolors13.default.gray("Running migration to enable ownership tracking...")}`);
14038
14038
  }
14039
14039
  static displayCompletionSummary(deleted, preserved) {
14040
- const message = `${import_picocolors12.default.green(`✓ Deleted ${deleted} CK-owned file(s)`)}
14041
- ${import_picocolors12.default.blue(`✓ Preserved ${preserved} user/modified file(s)`)}`;
14040
+ const message = `${import_picocolors13.default.green(`✓ Deleted ${deleted} CK-owned file(s)`)}
14041
+ ${import_picocolors13.default.blue(`✓ Preserved ${preserved} user/modified file(s)`)}`;
14042
14042
  f2.success(message);
14043
14043
  }
14044
14044
  }
14045
- var import_picocolors12;
14045
+ var import_picocolors13;
14046
14046
  var init_ownership_display = __esm(() => {
14047
14047
  init_dist2();
14048
- import_picocolors12 = __toESM(require_picocolors(), 1);
14048
+ import_picocolors13 = __toESM(require_picocolors(), 1);
14049
14049
  });
14050
14050
 
14051
14051
  // src/domains/help/help-commands.ts
@@ -14480,22 +14480,22 @@ function padEnd(text, width) {
14480
14480
  const padding = Math.max(0, width - visibleLength);
14481
14481
  return text + " ".repeat(padding);
14482
14482
  }
14483
- var import_picocolors18, NO_COLOR, isColorSupported, identity = (text) => text, colors, defaultTheme;
14483
+ var import_picocolors19, NO_COLOR, isColorSupported, identity = (text) => text, colors, defaultTheme;
14484
14484
  var init_help_colors = __esm(() => {
14485
- import_picocolors18 = __toESM(require_picocolors(), 1);
14485
+ import_picocolors19 = __toESM(require_picocolors(), 1);
14486
14486
  NO_COLOR = process.env.NO_COLOR !== undefined;
14487
14487
  isColorSupported = !NO_COLOR && Boolean(process.stdout.isTTY);
14488
14488
  colors = {
14489
- banner: isColorSupported ? import_picocolors18.default.cyan : identity,
14490
- command: isColorSupported ? import_picocolors18.default.bold : identity,
14491
- heading: isColorSupported ? import_picocolors18.default.yellow : identity,
14492
- flag: isColorSupported ? import_picocolors18.default.green : identity,
14493
- description: isColorSupported ? import_picocolors18.default.gray : identity,
14494
- example: isColorSupported ? import_picocolors18.default.blue : identity,
14495
- warning: isColorSupported ? import_picocolors18.default.yellow : identity,
14496
- error: isColorSupported ? import_picocolors18.default.red : identity,
14497
- muted: isColorSupported ? import_picocolors18.default.dim : identity,
14498
- success: isColorSupported ? import_picocolors18.default.green : identity
14489
+ banner: isColorSupported ? import_picocolors19.default.cyan : identity,
14490
+ command: isColorSupported ? import_picocolors19.default.bold : identity,
14491
+ heading: isColorSupported ? import_picocolors19.default.yellow : identity,
14492
+ flag: isColorSupported ? import_picocolors19.default.green : identity,
14493
+ description: isColorSupported ? import_picocolors19.default.gray : identity,
14494
+ example: isColorSupported ? import_picocolors19.default.blue : identity,
14495
+ warning: isColorSupported ? import_picocolors19.default.yellow : identity,
14496
+ error: isColorSupported ? import_picocolors19.default.red : identity,
14497
+ muted: isColorSupported ? import_picocolors19.default.dim : identity,
14498
+ success: isColorSupported ? import_picocolors19.default.green : identity
14499
14499
  };
14500
14500
  defaultTheme = {
14501
14501
  banner: colors.banner,
@@ -15466,7 +15466,7 @@ var cac = (name = "") => new CAC(name);
15466
15466
  // package.json
15467
15467
  var package_default = {
15468
15468
  name: "claudekit-cli",
15469
- version: "3.11.1",
15469
+ version: "3.12.0",
15470
15470
  description: "CLI tool for bootstrapping and updating ClaudeKit projects",
15471
15471
  type: "module",
15472
15472
  repository: {
@@ -19412,6 +19412,64 @@ async function doctorCommand(options = {}) {
19412
19412
  }
19413
19413
  }
19414
19414
 
19415
+ // src/commands/easter-egg.ts
19416
+ init_logger();
19417
+ var import_picocolors8 = __toESM(require_picocolors(), 1);
19418
+ var API_URL = "https://claudekit.cc/api/egg";
19419
+ function getRarityColor(rarity) {
19420
+ switch (rarity) {
19421
+ case "Legendary":
19422
+ return import_picocolors8.default.magenta;
19423
+ case "Epic":
19424
+ return import_picocolors8.default.yellow;
19425
+ case "Rare":
19426
+ return import_picocolors8.default.blue;
19427
+ case "Uncommon":
19428
+ return import_picocolors8.default.green;
19429
+ default:
19430
+ return import_picocolors8.default.gray;
19431
+ }
19432
+ }
19433
+ async function easterEggCommand() {
19434
+ intro("\uD83E\uDD5A Code Hunt 2025 - Easter Egg");
19435
+ try {
19436
+ console.log(import_picocolors8.default.dim(`
19437
+ Rolling for a discount code...
19438
+ `));
19439
+ const response = await fetch(API_URL);
19440
+ if (!response.ok) {
19441
+ if (response.status === 429) {
19442
+ console.log(import_picocolors8.default.yellow(" \uD83D\uDC30 Slow down! The eggs aren't going anywhere."));
19443
+ console.log(import_picocolors8.default.dim(` Wait a minute and try again.
19444
+ `));
19445
+ outro("\uD83E\uDD5A Rate limited");
19446
+ return;
19447
+ }
19448
+ throw new Error(`API returned ${response.status}`);
19449
+ }
19450
+ const data = await response.json();
19451
+ const rarityColor = getRarityColor(data.rarity);
19452
+ console.log(` ✨ ${import_picocolors8.default.bold(data.message)}`);
19453
+ console.log();
19454
+ console.log(` ${import_picocolors8.default.bold("Code:")} ${import_picocolors8.default.green(import_picocolors8.default.bold(data.code))}`);
19455
+ console.log(` ${import_picocolors8.default.bold("Discount:")} ${import_picocolors8.default.cyan(data.discount)} off`);
19456
+ console.log(` ${import_picocolors8.default.bold("Rarity:")} ${rarityColor(data.rarity)}`);
19457
+ console.log(` ${import_picocolors8.default.bold("Hint:")} ${import_picocolors8.default.dim(data.hint)}`);
19458
+ console.log();
19459
+ console.log(` ${import_picocolors8.default.dim("Redeem at:")} ${import_picocolors8.default.underline(data.checkout)}`);
19460
+ console.log(` ${import_picocolors8.default.dim("Expires:")} ${data.expires.split("T")[0]}`);
19461
+ console.log();
19462
+ outro("\uD83C\uDF84 Happy Holidays from ClaudeKit!");
19463
+ } catch (error) {
19464
+ logger.error(error instanceof Error ? error.message : "Failed to fetch easter egg");
19465
+ console.log(import_picocolors8.default.red(`
19466
+ Failed to connect to the egg API.`));
19467
+ console.log(import_picocolors8.default.dim(` Make sure you have internet access.
19468
+ `));
19469
+ process.exit(1);
19470
+ }
19471
+ }
19472
+
19415
19473
  // src/commands/init.ts
19416
19474
  import { join as join32, resolve as resolve6 } from "node:path";
19417
19475
 
@@ -19590,7 +19648,7 @@ import { TextDecoder } from "node:util";
19590
19648
  // src/shared/progress-bar.ts
19591
19649
  init_output_manager();
19592
19650
  init_terminal_utils();
19593
- var import_picocolors8 = __toESM(require_picocolors(), 1);
19651
+ var import_picocolors9 = __toESM(require_picocolors(), 1);
19594
19652
  var BAR_CHARS = {
19595
19653
  unicode: { filled: "█", empty: "░" },
19596
19654
  ascii: { filled: "=", empty: "-" }
@@ -19648,7 +19706,7 @@ class ProgressBar {
19648
19706
  this.clearLine();
19649
19707
  if (message) {
19650
19708
  const symbols = output.getSymbols();
19651
- console.log(`${import_picocolors8.default.green(symbols.success)} ${message}`);
19709
+ console.log(`${import_picocolors9.default.green(symbols.success)} ${message}`);
19652
19710
  }
19653
19711
  }
19654
19712
  clearLine() {
@@ -21045,7 +21103,7 @@ function ora(options) {
21045
21103
 
21046
21104
  // src/shared/safe-spinner.ts
21047
21105
  init_output_manager();
21048
- var import_picocolors9 = __toESM(require_picocolors(), 1);
21106
+ var import_picocolors10 = __toESM(require_picocolors(), 1);
21049
21107
  var ASCII_SPINNER = {
21050
21108
  interval: 100,
21051
21109
  frames: ["-", "\\", "|", "/"]
@@ -21072,7 +21130,7 @@ function createSpinner(options) {
21072
21130
  return spinner;
21073
21131
  }
21074
21132
  spinner.stopAndPersist({
21075
- symbol: import_picocolors9.default.green(symbols.success),
21133
+ symbol: import_picocolors10.default.green(symbols.success),
21076
21134
  text: text || spinner.text
21077
21135
  });
21078
21136
  return spinner;
@@ -21084,7 +21142,7 @@ function createSpinner(options) {
21084
21142
  return spinner;
21085
21143
  }
21086
21144
  spinner.stopAndPersist({
21087
- symbol: import_picocolors9.default.red(symbols.error),
21145
+ symbol: import_picocolors10.default.red(symbols.error),
21088
21146
  text: text || spinner.text
21089
21147
  });
21090
21148
  return spinner;
@@ -32545,36 +32603,36 @@ class SkillsMigrator {
32545
32603
  // src/domains/versioning/version-selector.ts
32546
32604
  init_logger();
32547
32605
  init_dist2();
32548
- var import_picocolors11 = __toESM(require_picocolors(), 1);
32606
+ var import_picocolors12 = __toESM(require_picocolors(), 1);
32549
32607
 
32550
32608
  // src/domains/versioning/version-display.ts
32551
- var import_picocolors10 = __toESM(require_picocolors(), 1);
32609
+ var import_picocolors11 = __toESM(require_picocolors(), 1);
32552
32610
 
32553
32611
  class VersionDisplayFormatter {
32554
32612
  static createBadges(release) {
32555
32613
  const badges = [];
32556
32614
  if (release.isLatestStable) {
32557
- badges.push(import_picocolors10.default.bold(import_picocolors10.default.yellow("[latest]")));
32615
+ badges.push(import_picocolors11.default.bold(import_picocolors11.default.yellow("[latest]")));
32558
32616
  }
32559
32617
  if (release.prerelease || release.isLatestBeta) {
32560
32618
  if (release.isLatestBeta) {
32561
- badges.push(import_picocolors10.default.bold(import_picocolors10.default.magenta("[beta]")));
32619
+ badges.push(import_picocolors11.default.bold(import_picocolors11.default.magenta("[beta]")));
32562
32620
  } else {
32563
- badges.push(import_picocolors10.default.magenta("[prerelease]"));
32621
+ badges.push(import_picocolors11.default.magenta("[prerelease]"));
32564
32622
  }
32565
32623
  } else if (!release.draft) {
32566
- badges.push(import_picocolors10.default.blue("[stable]"));
32624
+ badges.push(import_picocolors11.default.blue("[stable]"));
32567
32625
  }
32568
32626
  if (release.draft) {
32569
- badges.push(import_picocolors10.default.gray("[draft]"));
32627
+ badges.push(import_picocolors11.default.gray("[draft]"));
32570
32628
  }
32571
32629
  return badges.length > 0 ? ` ${badges.join(" ")}` : "";
32572
32630
  }
32573
32631
  static formatChoiceLabel(release) {
32574
- const version = import_picocolors10.default.green(release.displayVersion);
32632
+ const version = import_picocolors11.default.green(release.displayVersion);
32575
32633
  const badges = VersionDisplayFormatter.createBadges(release);
32576
32634
  const name2 = release.name || "Release";
32577
- return `${version}${badges} ${import_picocolors10.default.dim(name2)}`;
32635
+ return `${version}${badges} ${import_picocolors11.default.dim(name2)}`;
32578
32636
  }
32579
32637
  static formatChoiceHint(release) {
32580
32638
  const parts = [];
@@ -32596,7 +32654,7 @@ class VersionDisplayFormatter {
32596
32654
  if (latestStable) {
32597
32655
  options.push({
32598
32656
  value: latestStable.tag_name,
32599
- label: `${import_picocolors10.default.bold(import_picocolors10.default.green("Latest Stable"))} (${latestStable.displayVersion})`,
32657
+ label: `${import_picocolors11.default.bold(import_picocolors11.default.green("Latest Stable"))} (${latestStable.displayVersion})`,
32600
32658
  hint: "recommended version",
32601
32659
  isLatest: true,
32602
32660
  isPrerelease: false
@@ -32606,7 +32664,7 @@ class VersionDisplayFormatter {
32606
32664
  if (latestBeta) {
32607
32665
  options.push({
32608
32666
  value: latestBeta.tag_name,
32609
- label: `${import_picocolors10.default.bold(import_picocolors10.default.magenta("Latest Beta"))} (${latestBeta.displayVersion})`,
32667
+ label: `${import_picocolors11.default.bold(import_picocolors11.default.magenta("Latest Beta"))} (${latestBeta.displayVersion})`,
32610
32668
  hint: "latest features, may be unstable",
32611
32669
  isLatest: false,
32612
32670
  isPrerelease: true
@@ -32617,7 +32675,7 @@ class VersionDisplayFormatter {
32617
32675
  static createSeparator() {
32618
32676
  return {
32619
32677
  value: "separator",
32620
- label: import_picocolors10.default.dim("─".repeat(50)),
32678
+ label: import_picocolors11.default.dim("─".repeat(50)),
32621
32679
  hint: undefined,
32622
32680
  isLatest: false,
32623
32681
  isPrerelease: false
@@ -32626,7 +32684,7 @@ class VersionDisplayFormatter {
32626
32684
  static createCancelOption() {
32627
32685
  return {
32628
32686
  value: "cancel",
32629
- label: import_picocolors10.default.red("Cancel"),
32687
+ label: import_picocolors11.default.red("Cancel"),
32630
32688
  hint: "exit version selection",
32631
32689
  isLatest: false,
32632
32690
  isPrerelease: false
@@ -32678,15 +32736,15 @@ class VersionDisplayFormatter {
32678
32736
  return value !== "separator" && value !== "cancel" && value.trim().length > 0;
32679
32737
  }
32680
32738
  static formatError(message, suggestion) {
32681
- let output2 = import_picocolors10.default.red(`Error: ${message}`);
32739
+ let output2 = import_picocolors11.default.red(`Error: ${message}`);
32682
32740
  if (suggestion) {
32683
32741
  output2 += `
32684
- ${import_picocolors10.default.dim(suggestion)}`;
32742
+ ${import_picocolors11.default.dim(suggestion)}`;
32685
32743
  }
32686
32744
  return output2;
32687
32745
  }
32688
32746
  static formatSuccess(version, kitName) {
32689
- return `${import_picocolors10.default.green("✓")} Selected ${import_picocolors10.default.bold(version)} for ${import_picocolors10.default.bold(kitName)}`;
32747
+ return `${import_picocolors11.default.green("✓")} Selected ${import_picocolors11.default.bold(version)} for ${import_picocolors11.default.bold(kitName)}`;
32690
32748
  }
32691
32749
  }
32692
32750
 
@@ -32710,7 +32768,7 @@ class VersionSelector {
32710
32768
  } = options;
32711
32769
  try {
32712
32770
  const loadingSpinner = de();
32713
- loadingSpinner.start(`Fetching versions for ${import_picocolors11.default.bold(kit.name)}...`);
32771
+ loadingSpinner.start(`Fetching versions for ${import_picocolors12.default.bold(kit.name)}...`);
32714
32772
  const releases = await this.githubClient.listReleasesWithCache(kit, {
32715
32773
  limit: limit * 2,
32716
32774
  includePrereleases,
@@ -32733,7 +32791,7 @@ class VersionSelector {
32733
32791
  This could be due to:
32734
32792
  • No releases published yet
32735
32793
  • Network connectivity issues
32736
- • Repository access permissions`, import_picocolors11.default.yellow("No Releases Available"));
32794
+ • Repository access permissions`, import_picocolors12.default.yellow("No Releases Available"));
32737
32795
  if (!allowManualEntry) {
32738
32796
  throw new Error(`No releases available for ${kit.name}`);
32739
32797
  }
@@ -32771,34 +32829,34 @@ This could be due to:
32771
32829
  if (latestStable) {
32772
32830
  clackChoices.push({
32773
32831
  value: latestStable.tag_name,
32774
- label: `${import_picocolors11.default.bold(import_picocolors11.default.green("Latest Stable"))} (${latestStable.displayVersion})`,
32832
+ label: `${import_picocolors12.default.bold(import_picocolors12.default.green("Latest Stable"))} (${latestStable.displayVersion})`,
32775
32833
  hint: "recommended"
32776
32834
  });
32777
32835
  }
32778
32836
  if (allowManualEntry) {
32779
32837
  clackChoices.push({
32780
32838
  value: "manual-entry",
32781
- label: import_picocolors11.default.cyan("↳ Enter Version Manually"),
32839
+ label: import_picocolors12.default.cyan("↳ Enter Version Manually"),
32782
32840
  hint: "for older versions"
32783
32841
  });
32784
32842
  }
32785
32843
  clackChoices.push({
32786
32844
  value: "cancel",
32787
- label: import_picocolors11.default.red("✕ Cancel")
32845
+ label: import_picocolors12.default.red("✕ Cancel")
32788
32846
  });
32789
32847
  const versionChoices = choices.filter((choice) => choice.value !== "separator" && choice.value !== "cancel");
32790
32848
  for (const choice of versionChoices) {
32791
32849
  const isCurrentlyInstalled = currentVersion && (choice.value === currentVersion || choice.value === `v${currentVersion}`);
32792
- const installedMarker = isCurrentlyInstalled ? import_picocolors11.default.cyan(" (installed)") : "";
32850
+ const installedMarker = isCurrentlyInstalled ? import_picocolors12.default.cyan(" (installed)") : "";
32793
32851
  clackChoices.push({
32794
32852
  value: choice.value,
32795
32853
  label: `${choice.label}${installedMarker}`,
32796
32854
  hint: choice.hint
32797
32855
  });
32798
32856
  }
32799
- const currentVersionHint = currentVersion ? import_picocolors11.default.dim(` (current: ${currentVersion})`) : "";
32857
+ const currentVersionHint = currentVersion ? import_picocolors12.default.dim(` (current: ${currentVersion})`) : "";
32800
32858
  const selected = await ie({
32801
- message: `Select version for ${import_picocolors11.default.bold(kit.name)}${currentVersionHint}:`,
32859
+ message: `Select version for ${import_picocolors12.default.bold(kit.name)}${currentVersionHint}:`,
32802
32860
  options: clackChoices,
32803
32861
  initialValue: latestStable?.tag_name
32804
32862
  });
@@ -32832,15 +32890,15 @@ This could be due to:
32832
32890
  async handleError(error, kit, allowManualEntry) {
32833
32891
  logger.error(`Version selection error: ${error.message}`);
32834
32892
  if (error.message.includes("401") || error.message.includes("403")) {
32835
- le(VersionDisplayFormatter.formatError("Authentication failed", "Please check your GitHub token with: ck auth"), import_picocolors11.default.red("Authentication Error"));
32893
+ le(VersionDisplayFormatter.formatError("Authentication failed", "Please check your GitHub token with: ck auth"), import_picocolors12.default.red("Authentication Error"));
32836
32894
  } else if (error.message.includes("404")) {
32837
- le(VersionDisplayFormatter.formatError("Repository access denied", "Make sure you have access to the repository"), import_picocolors11.default.red("Access Error"));
32895
+ le(VersionDisplayFormatter.formatError("Repository access denied", "Make sure you have access to the repository"), import_picocolors12.default.red("Access Error"));
32838
32896
  } else if (error.message.includes("rate limit") || error.message.includes("403")) {
32839
- le(VersionDisplayFormatter.formatError("GitHub API rate limit exceeded", "Please wait a moment and try again"), import_picocolors11.default.yellow("Rate Limited"));
32897
+ le(VersionDisplayFormatter.formatError("GitHub API rate limit exceeded", "Please wait a moment and try again"), import_picocolors12.default.yellow("Rate Limited"));
32840
32898
  } else if (error.message.includes("network") || error.message.includes("ENOTFOUND")) {
32841
- le(VersionDisplayFormatter.formatError("Network connection failed", "Please check your internet connection"), import_picocolors11.default.yellow("Network Error"));
32899
+ le(VersionDisplayFormatter.formatError("Network connection failed", "Please check your internet connection"), import_picocolors12.default.yellow("Network Error"));
32842
32900
  } else {
32843
- le(VersionDisplayFormatter.formatError(error.message || "Unknown error occurred", "Please try again or contact support"), import_picocolors11.default.red("Error"));
32901
+ le(VersionDisplayFormatter.formatError(error.message || "Unknown error occurred", "Please try again or contact support"), import_picocolors12.default.red("Error"));
32844
32902
  }
32845
32903
  if (allowManualEntry) {
32846
32904
  const retry2 = await se({
@@ -34583,7 +34641,7 @@ import { dirname as dirname7, join as join34 } from "node:path";
34583
34641
  init_logger();
34584
34642
  init_types2();
34585
34643
  var import_fs_extra21 = __toESM(require_lib(), 1);
34586
- var import_picocolors13 = __toESM(require_picocolors(), 1);
34644
+ var import_picocolors14 = __toESM(require_picocolors(), 1);
34587
34645
  async function detectInstallations() {
34588
34646
  const installations = [];
34589
34647
  const setup = await getClaudeKitSetup(process.cwd());
@@ -34729,27 +34787,27 @@ async function analyzeInstallation(installation, forceOverwrite, kit) {
34729
34787
  }
34730
34788
  function displayDryRunPreview(analysis, installationType) {
34731
34789
  console.log("");
34732
- log.info(import_picocolors13.default.bold(`DRY RUN - Preview for ${installationType} installation:`));
34790
+ log.info(import_picocolors14.default.bold(`DRY RUN - Preview for ${installationType} installation:`));
34733
34791
  console.log("");
34734
34792
  if (analysis.toDelete.length > 0) {
34735
- console.log(import_picocolors13.default.red(import_picocolors13.default.bold(`Files to DELETE (${analysis.toDelete.length}):`)));
34793
+ console.log(import_picocolors14.default.red(import_picocolors14.default.bold(`Files to DELETE (${analysis.toDelete.length}):`)));
34736
34794
  const showDelete = analysis.toDelete.slice(0, 10);
34737
34795
  for (const item of showDelete) {
34738
- console.log(` ${import_picocolors13.default.red("✖")} ${item.path}`);
34796
+ console.log(` ${import_picocolors14.default.red("✖")} ${item.path}`);
34739
34797
  }
34740
34798
  if (analysis.toDelete.length > 10) {
34741
- console.log(import_picocolors13.default.gray(` ... and ${analysis.toDelete.length - 10} more`));
34799
+ console.log(import_picocolors14.default.gray(` ... and ${analysis.toDelete.length - 10} more`));
34742
34800
  }
34743
34801
  console.log("");
34744
34802
  }
34745
34803
  if (analysis.toPreserve.length > 0) {
34746
- console.log(import_picocolors13.default.green(import_picocolors13.default.bold(`Files to PRESERVE (${analysis.toPreserve.length}):`)));
34804
+ console.log(import_picocolors14.default.green(import_picocolors14.default.bold(`Files to PRESERVE (${analysis.toPreserve.length}):`)));
34747
34805
  const showPreserve = analysis.toPreserve.slice(0, 10);
34748
34806
  for (const item of showPreserve) {
34749
- console.log(` ${import_picocolors13.default.green("✓")} ${item.path} ${import_picocolors13.default.gray(`(${item.reason})`)}`);
34807
+ console.log(` ${import_picocolors14.default.green("✓")} ${item.path} ${import_picocolors14.default.gray(`(${item.reason})`)}`);
34750
34808
  }
34751
34809
  if (analysis.toPreserve.length > 10) {
34752
- console.log(import_picocolors13.default.gray(` ... and ${analysis.toPreserve.length - 10} more`));
34810
+ console.log(import_picocolors14.default.gray(` ... and ${analysis.toPreserve.length - 10} more`));
34753
34811
  }
34754
34812
  console.log("");
34755
34813
  }
@@ -34856,10 +34914,10 @@ async function uninstallCommand(options) {
34856
34914
  }
34857
34915
  displayInstallations(installations, scope);
34858
34916
  if (validOptions.kit) {
34859
- log.info(import_picocolors13.default.cyan(`Kit-scoped uninstall: ${validOptions.kit} kit only`));
34917
+ log.info(import_picocolors14.default.cyan(`Kit-scoped uninstall: ${validOptions.kit} kit only`));
34860
34918
  }
34861
34919
  if (validOptions.dryRun) {
34862
- log.info(import_picocolors13.default.yellow("DRY RUN MODE - No files will be deleted"));
34920
+ log.info(import_picocolors14.default.yellow("DRY RUN MODE - No files will be deleted"));
34863
34921
  await removeInstallations(installations, {
34864
34922
  dryRun: true,
34865
34923
  forceOverwrite: validOptions.forceOverwrite,
@@ -34869,8 +34927,8 @@ async function uninstallCommand(options) {
34869
34927
  return;
34870
34928
  }
34871
34929
  if (validOptions.forceOverwrite) {
34872
- log.warn(`${import_picocolors13.default.yellow(import_picocolors13.default.bold("FORCE MODE ENABLED"))}
34873
- ${import_picocolors13.default.yellow("User modifications will be permanently deleted!")}`);
34930
+ log.warn(`${import_picocolors14.default.yellow(import_picocolors14.default.bold("FORCE MODE ENABLED"))}
34931
+ ${import_picocolors14.default.yellow("User modifications will be permanently deleted!")}`);
34874
34932
  }
34875
34933
  if (!validOptions.yes) {
34876
34934
  const kitLabel = validOptions.kit ? ` (${validOptions.kit} kit only)` : "";
@@ -35040,7 +35098,7 @@ var import_compare_versions2 = __toESM(require_umd(), 1);
35040
35098
  // package.json
35041
35099
  var package_default2 = {
35042
35100
  name: "claudekit-cli",
35043
- version: "3.11.1",
35101
+ version: "3.12.0",
35044
35102
  description: "CLI tool for bootstrapping and updating ClaudeKit projects",
35045
35103
  type: "module",
35046
35104
  repository: {
@@ -35247,7 +35305,7 @@ Manual update: ${updateCmd}`);
35247
35305
  // src/commands/version.ts
35248
35306
  init_logger();
35249
35307
  init_types2();
35250
- var import_picocolors14 = __toESM(require_picocolors(), 1);
35308
+ var import_picocolors15 = __toESM(require_picocolors(), 1);
35251
35309
  function formatRelativeTime(dateString) {
35252
35310
  if (!dateString)
35253
35311
  return "Unknown";
@@ -35269,30 +35327,30 @@ function formatRelativeTime(dateString) {
35269
35327
  }
35270
35328
  function displayKitReleases(kitName, releases) {
35271
35329
  console.log(`
35272
- ${import_picocolors14.default.bold(import_picocolors14.default.cyan(kitName))} - Available Versions:
35330
+ ${import_picocolors15.default.bold(import_picocolors15.default.cyan(kitName))} - Available Versions:
35273
35331
  `);
35274
35332
  if (releases.length === 0) {
35275
- console.log(import_picocolors14.default.dim(" No releases found"));
35333
+ console.log(import_picocolors15.default.dim(" No releases found"));
35276
35334
  return;
35277
35335
  }
35278
35336
  for (const release of releases) {
35279
- const version = import_picocolors14.default.green(release.tag_name);
35337
+ const version = import_picocolors15.default.green(release.tag_name);
35280
35338
  const name2 = release.name || "No title";
35281
35339
  const publishedAt = formatRelativeTime(release.published_at);
35282
35340
  const assetCount = release.assets.length;
35283
35341
  const badges = [];
35284
35342
  if (release.prerelease)
35285
- badges.push(import_picocolors14.default.yellow("[prerelease]"));
35343
+ badges.push(import_picocolors15.default.yellow("[prerelease]"));
35286
35344
  if (release.draft)
35287
- badges.push(import_picocolors14.default.gray("[draft]"));
35345
+ badges.push(import_picocolors15.default.gray("[draft]"));
35288
35346
  const badgeStr = badges.length > 0 ? ` ${badges.join(" ")}` : "";
35289
35347
  const versionPart = version.padEnd(20);
35290
35348
  const namePart = name2.length > 40 ? `${name2.slice(0, 37)}...` : name2.padEnd(40);
35291
- const timePart = import_picocolors14.default.dim(publishedAt.padEnd(20));
35292
- const assetPart = import_picocolors14.default.dim(`(${assetCount} ${assetCount === 1 ? "asset" : "assets"})`);
35349
+ const timePart = import_picocolors15.default.dim(publishedAt.padEnd(20));
35350
+ const assetPart = import_picocolors15.default.dim(`(${assetCount} ${assetCount === 1 ? "asset" : "assets"})`);
35293
35351
  console.log(` ${versionPart} ${namePart} ${timePart} ${assetPart}${badgeStr}`);
35294
35352
  }
35295
- console.log(import_picocolors14.default.dim(`
35353
+ console.log(import_picocolors15.default.dim(`
35296
35354
  Showing ${releases.length} ${releases.length === 1 ? "release" : "releases"}`));
35297
35355
  }
35298
35356
  async function versionCommand(options) {
@@ -35327,8 +35385,8 @@ async function versionCommand(options) {
35327
35385
  for (const result of results) {
35328
35386
  if (result.error) {
35329
35387
  console.log(`
35330
- ${import_picocolors14.default.bold(import_picocolors14.default.cyan(result.kitConfig.name))} - ${import_picocolors14.default.red("Error")}`);
35331
- console.log(import_picocolors14.default.dim(` ${result.error}`));
35388
+ ${import_picocolors15.default.bold(import_picocolors15.default.cyan(result.kitConfig.name))} - ${import_picocolors15.default.red("Error")}`);
35389
+ console.log(import_picocolors15.default.dim(` ${result.error}`));
35332
35390
  } else {
35333
35391
  displayKitReleases(result.kitConfig.name, result.releases);
35334
35392
  }
@@ -35344,7 +35402,7 @@ ${import_picocolors14.default.bold(import_picocolors14.default.cyan(result.kitCo
35344
35402
  init_logger();
35345
35403
  init_types2();
35346
35404
  var import_compare_versions3 = __toESM(require_umd(), 1);
35347
- var import_picocolors15 = __toESM(require_picocolors(), 1);
35405
+ var import_picocolors16 = __toESM(require_picocolors(), 1);
35348
35406
 
35349
35407
  // src/domains/versioning/version-cache.ts
35350
35408
  init_logger();
@@ -35493,7 +35551,7 @@ class VersionChecker {
35493
35551
  const displayLatest = normalizeVersion(latestVersion);
35494
35552
  const boxWidth = 52;
35495
35553
  const contentWidth = boxWidth - 2;
35496
- const border = import_picocolors15.default.cyan;
35554
+ const border = import_picocolors16.default.cyan;
35497
35555
  const topBorder = border(`╭${"─".repeat(contentWidth)}╮`);
35498
35556
  const bottomBorder = border(`╰${"─".repeat(contentWidth)}╯`);
35499
35557
  const emptyLine = border("│") + " ".repeat(contentWidth) + border("│");
@@ -35506,12 +35564,12 @@ class VersionChecker {
35506
35564
  const rightPadding = Math.max(0, totalPadding - leftPadding);
35507
35565
  return border("│") + " ".repeat(leftPadding) + displayText + " ".repeat(rightPadding) + border("│");
35508
35566
  };
35509
- const headerText = import_picocolors15.default.bold(import_picocolors15.default.yellow("⬆ Kit Update Available"));
35567
+ const headerText = import_picocolors16.default.bold(import_picocolors16.default.yellow("⬆ Kit Update Available"));
35510
35568
  const headerLen = "⬆ Kit Update Available".length;
35511
- const versionText = `${import_picocolors15.default.dim(displayCurrent)} ${import_picocolors15.default.white("→")} ${import_picocolors15.default.green(import_picocolors15.default.bold(displayLatest))}`;
35569
+ const versionText = `${import_picocolors16.default.dim(displayCurrent)} ${import_picocolors16.default.white("→")} ${import_picocolors16.default.green(import_picocolors16.default.bold(displayLatest))}`;
35512
35570
  const versionLen = displayCurrent.length + 3 + displayLatest.length;
35513
35571
  const updateCmd = isGlobal ? "ck init -g" : "ck init";
35514
- const commandText = `Run: ${import_picocolors15.default.cyan(import_picocolors15.default.bold(updateCmd))}`;
35572
+ const commandText = `Run: ${import_picocolors16.default.cyan(import_picocolors16.default.bold(updateCmd))}`;
35515
35573
  const commandLen = `Run: ${updateCmd}`.length;
35516
35574
  console.log("");
35517
35575
  console.log(topBorder);
@@ -35560,7 +35618,7 @@ class CliVersionChecker {
35560
35618
  const { currentVersion, latestVersion } = result;
35561
35619
  const boxWidth = 52;
35562
35620
  const contentWidth = boxWidth - 2;
35563
- const border = import_picocolors15.default.magenta;
35621
+ const border = import_picocolors16.default.magenta;
35564
35622
  const topBorder = border(`╭${"─".repeat(contentWidth)}╮`);
35565
35623
  const bottomBorder = border(`╰${"─".repeat(contentWidth)}╯`);
35566
35624
  const emptyLine = border("│") + " ".repeat(contentWidth) + border("│");
@@ -35573,11 +35631,11 @@ class CliVersionChecker {
35573
35631
  const rightPadding = Math.max(0, totalPadding - leftPadding);
35574
35632
  return border("│") + " ".repeat(leftPadding) + displayText + " ".repeat(rightPadding) + border("│");
35575
35633
  };
35576
- const headerText = import_picocolors15.default.bold(import_picocolors15.default.yellow("⬆ CLI Update Available"));
35634
+ const headerText = import_picocolors16.default.bold(import_picocolors16.default.yellow("⬆ CLI Update Available"));
35577
35635
  const headerLen = "⬆ CLI Update Available".length;
35578
- const versionText = `${import_picocolors15.default.dim(currentVersion)} ${import_picocolors15.default.white("→")} ${import_picocolors15.default.green(import_picocolors15.default.bold(latestVersion))}`;
35636
+ const versionText = `${import_picocolors16.default.dim(currentVersion)} ${import_picocolors16.default.white("→")} ${import_picocolors16.default.green(import_picocolors16.default.bold(latestVersion))}`;
35579
35637
  const versionLen = currentVersion.length + 3 + latestVersion.length;
35580
- const commandText = `Run: ${import_picocolors15.default.magenta(import_picocolors15.default.bold("ck update"))}`;
35638
+ const commandText = `Run: ${import_picocolors16.default.magenta(import_picocolors16.default.bold("ck update"))}`;
35581
35639
  const commandLen = "Run: ck update".length;
35582
35640
  console.log("");
35583
35641
  console.log(topBorder);
@@ -35594,7 +35652,7 @@ class CliVersionChecker {
35594
35652
 
35595
35653
  // src/shared/logger.ts
35596
35654
  init_output_manager();
35597
- var import_picocolors16 = __toESM(require_picocolors(), 1);
35655
+ var import_picocolors17 = __toESM(require_picocolors(), 1);
35598
35656
  import { createWriteStream as createWriteStream3 } from "node:fs";
35599
35657
 
35600
35658
  class Logger2 {
@@ -35602,23 +35660,23 @@ class Logger2 {
35602
35660
  logFileStream;
35603
35661
  info(message) {
35604
35662
  const symbols = output.getSymbols();
35605
- console.log(import_picocolors16.default.blue(symbols.info), message);
35663
+ console.log(import_picocolors17.default.blue(symbols.info), message);
35606
35664
  }
35607
35665
  success(message) {
35608
35666
  const symbols = output.getSymbols();
35609
- console.log(import_picocolors16.default.green(symbols.success), message);
35667
+ console.log(import_picocolors17.default.green(symbols.success), message);
35610
35668
  }
35611
35669
  warning(message) {
35612
35670
  const symbols = output.getSymbols();
35613
- console.log(import_picocolors16.default.yellow(symbols.warning), message);
35671
+ console.log(import_picocolors17.default.yellow(symbols.warning), message);
35614
35672
  }
35615
35673
  error(message) {
35616
35674
  const symbols = output.getSymbols();
35617
- console.error(import_picocolors16.default.red(symbols.error), message);
35675
+ console.error(import_picocolors17.default.red(symbols.error), message);
35618
35676
  }
35619
35677
  debug(message) {
35620
35678
  if (process.env.DEBUG) {
35621
- console.log(import_picocolors16.default.gray("[DEBUG]"), message);
35679
+ console.log(import_picocolors17.default.gray("[DEBUG]"), message);
35622
35680
  }
35623
35681
  }
35624
35682
  verbose(message, context) {
@@ -35627,7 +35685,7 @@ class Logger2 {
35627
35685
  const timestamp = this.getTimestamp();
35628
35686
  const sanitizedMessage = this.sanitize(message);
35629
35687
  const formattedContext = context ? this.formatContext(context) : "";
35630
- const logLine = `${timestamp} ${import_picocolors16.default.gray("[VERBOSE]")} ${sanitizedMessage}${formattedContext}`;
35688
+ const logLine = `${timestamp} ${import_picocolors17.default.gray("[VERBOSE]")} ${sanitizedMessage}${formattedContext}`;
35631
35689
  console.error(logLine);
35632
35690
  if (this.logFileStream) {
35633
35691
  const plainLogLine = `${timestamp} [VERBOSE] ${sanitizedMessage}${formattedContext}`;
@@ -35690,7 +35748,7 @@ var logger2 = new Logger2;
35690
35748
 
35691
35749
  // src/shared/output-manager.ts
35692
35750
  init_terminal_utils();
35693
- var import_picocolors17 = __toESM(require_picocolors(), 1);
35751
+ var import_picocolors18 = __toESM(require_picocolors(), 1);
35694
35752
  var SYMBOLS2 = {
35695
35753
  unicode: {
35696
35754
  prompt: "◇",
@@ -35761,7 +35819,7 @@ class OutputManager2 {
35761
35819
  if (this.config.quiet)
35762
35820
  return;
35763
35821
  const symbol = this.getSymbols().success;
35764
- console.log(import_picocolors17.default.green(`${symbol} ${message}`));
35822
+ console.log(import_picocolors18.default.green(`${symbol} ${message}`));
35765
35823
  }
35766
35824
  error(message, data) {
35767
35825
  if (this.config.json) {
@@ -35769,7 +35827,7 @@ class OutputManager2 {
35769
35827
  return;
35770
35828
  }
35771
35829
  const symbol = this.getSymbols().error;
35772
- console.error(import_picocolors17.default.red(`${symbol} ${message}`));
35830
+ console.error(import_picocolors18.default.red(`${symbol} ${message}`));
35773
35831
  }
35774
35832
  warning(message, data) {
35775
35833
  if (this.config.json) {
@@ -35779,7 +35837,7 @@ class OutputManager2 {
35779
35837
  if (this.config.quiet)
35780
35838
  return;
35781
35839
  const symbol = this.getSymbols().warning;
35782
- console.log(import_picocolors17.default.yellow(`${symbol} ${message}`));
35840
+ console.log(import_picocolors18.default.yellow(`${symbol} ${message}`));
35783
35841
  }
35784
35842
  info(message, data) {
35785
35843
  if (this.config.json) {
@@ -35789,7 +35847,7 @@ class OutputManager2 {
35789
35847
  if (this.config.quiet)
35790
35848
  return;
35791
35849
  const symbol = this.getSymbols().info;
35792
- console.log(import_picocolors17.default.blue(`${symbol} ${message}`));
35850
+ console.log(import_picocolors18.default.blue(`${symbol} ${message}`));
35793
35851
  }
35794
35852
  verbose(message, data) {
35795
35853
  if (!this.config.verbose)
@@ -35798,7 +35856,7 @@ class OutputManager2 {
35798
35856
  this.addJsonEntry({ type: "info", message, data });
35799
35857
  return;
35800
35858
  }
35801
- console.log(import_picocolors17.default.dim(` ${message}`));
35859
+ console.log(import_picocolors18.default.dim(` ${message}`));
35802
35860
  }
35803
35861
  indent(message) {
35804
35862
  if (this.config.json)
@@ -35823,7 +35881,7 @@ class OutputManager2 {
35823
35881
  return;
35824
35882
  const symbols = this.getSymbols();
35825
35883
  console.log();
35826
- console.log(import_picocolors17.default.bold(import_picocolors17.default.cyan(`${symbols.line} ${title}`)));
35884
+ console.log(import_picocolors18.default.bold(import_picocolors18.default.cyan(`${symbols.line} ${title}`)));
35827
35885
  }
35828
35886
  addJsonEntry(entry) {
35829
35887
  this.jsonBuffer.push({
@@ -36105,6 +36163,9 @@ cli.command("doctor", "Comprehensive health check for ClaudeKit").option("--repo
36105
36163
  cli.command("uninstall", "Remove ClaudeKit installations").option("-y, --yes", "Skip confirmation prompt").option("-l, --local", "Uninstall only local installation (current project)").option("-g, --global", "Uninstall only global installation (~/.claude/)").option("-A, --all", "Uninstall from both local and global locations").option("-k, --kit <type>", "Uninstall specific kit only (engineer, marketing)").option("--dry-run", "Preview what would be removed without deleting").option("--force-overwrite", "Delete even user-modified files (requires confirmation)").action(async (options) => {
36106
36164
  await uninstallCommand(options);
36107
36165
  });
36166
+ cli.command("easter-egg", "\uD83E\uDD5A Roll for a random discount code (Code Hunt 2025)").action(async () => {
36167
+ await easterEggCommand();
36168
+ });
36108
36169
  cli.option("-V, --version", "Display version number");
36109
36170
  cli.option("-h, --help", "Display help information");
36110
36171
  var parsed = cli.parse(process.argv, { run: false });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudekit-cli",
3
- "version": "3.11.1",
3
+ "version": "3.12.0",
4
4
  "description": "CLI tool for bootstrapping and updating ClaudeKit projects",
5
5
  "type": "module",
6
6
  "repository": {