claudekit-cli 3.6.0 → 3.6.2
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.js +45 -7
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -14925,7 +14925,7 @@ var cac = (name = "") => new CAC(name);
|
|
|
14925
14925
|
// package.json
|
|
14926
14926
|
var package_default = {
|
|
14927
14927
|
name: "claudekit-cli",
|
|
14928
|
-
version: "3.6.
|
|
14928
|
+
version: "3.6.2",
|
|
14929
14929
|
description: "CLI tool for bootstrapping and updating ClaudeKit projects",
|
|
14930
14930
|
type: "module",
|
|
14931
14931
|
repository: {
|
|
@@ -15903,6 +15903,16 @@ class PathResolver {
|
|
|
15903
15903
|
}
|
|
15904
15904
|
|
|
15905
15905
|
// src/utils/claudekit-scanner.ts
|
|
15906
|
+
var SKIP_DIRS = [
|
|
15907
|
+
"debug",
|
|
15908
|
+
"projects",
|
|
15909
|
+
"shell-snapshots",
|
|
15910
|
+
"file-history",
|
|
15911
|
+
"todos",
|
|
15912
|
+
"session-env",
|
|
15913
|
+
"statsig",
|
|
15914
|
+
".anthropic"
|
|
15915
|
+
];
|
|
15906
15916
|
async function scanClaudeKitDirectory(directoryPath) {
|
|
15907
15917
|
const counts = {
|
|
15908
15918
|
agents: 0,
|
|
@@ -15935,6 +15945,9 @@ async function scanClaudeKitDirectory(directoryPath) {
|
|
|
15935
15945
|
const skillItems = await import_fs_extra.readdir(skillsPath);
|
|
15936
15946
|
let skillCount = 0;
|
|
15937
15947
|
for (const item of skillItems) {
|
|
15948
|
+
if (SKIP_DIRS.includes(item)) {
|
|
15949
|
+
continue;
|
|
15950
|
+
}
|
|
15938
15951
|
const itemPath = join2(skillsPath, item);
|
|
15939
15952
|
const stat = await import_fs_extra.readdir(itemPath).catch(() => null);
|
|
15940
15953
|
if (stat?.includes("SKILL.md")) {
|
|
@@ -16634,6 +16647,7 @@ Note: Do NOT use 'Paste an authentication token' - use web browser login.`);
|
|
|
16634
16647
|
if (token && token.length > 0) {
|
|
16635
16648
|
return token;
|
|
16636
16649
|
}
|
|
16650
|
+
logger.debug("gh auth token returned empty result");
|
|
16637
16651
|
return null;
|
|
16638
16652
|
} catch (error) {
|
|
16639
16653
|
if (error?.stderr) {
|
|
@@ -31549,7 +31563,7 @@ init_environment();
|
|
|
31549
31563
|
init_logger();
|
|
31550
31564
|
var import_fs_extra16 = __toESM(require_lib(), 1);
|
|
31551
31565
|
import { join as join27, relative as relative8, resolve as resolve3 } from "node:path";
|
|
31552
|
-
var
|
|
31566
|
+
var SKIP_DIRS2 = [
|
|
31553
31567
|
"node_modules",
|
|
31554
31568
|
".venv",
|
|
31555
31569
|
"venv",
|
|
@@ -31558,7 +31572,15 @@ var SKIP_DIRS = [
|
|
|
31558
31572
|
".git",
|
|
31559
31573
|
".svn",
|
|
31560
31574
|
"dist",
|
|
31561
|
-
"build"
|
|
31575
|
+
"build",
|
|
31576
|
+
"debug",
|
|
31577
|
+
"projects",
|
|
31578
|
+
"shell-snapshots",
|
|
31579
|
+
"file-history",
|
|
31580
|
+
"todos",
|
|
31581
|
+
"session-env",
|
|
31582
|
+
"statsig",
|
|
31583
|
+
".anthropic"
|
|
31562
31584
|
];
|
|
31563
31585
|
|
|
31564
31586
|
class FileScanner {
|
|
@@ -31571,7 +31593,7 @@ class FileScanner {
|
|
|
31571
31593
|
try {
|
|
31572
31594
|
const entries = await import_fs_extra16.readdir(dirPath, { encoding: "utf8" });
|
|
31573
31595
|
for (const entry of entries) {
|
|
31574
|
-
if (
|
|
31596
|
+
if (SKIP_DIRS2.includes(entry)) {
|
|
31575
31597
|
logger.debug(`Skipping directory: ${entry}`);
|
|
31576
31598
|
continue;
|
|
31577
31599
|
}
|
|
@@ -31612,12 +31634,25 @@ class FileScanner {
|
|
|
31612
31634
|
static async findCustomFiles(destDir, sourceDir, subPath) {
|
|
31613
31635
|
const destSubDir = join27(destDir, subPath);
|
|
31614
31636
|
const sourceSubDir = join27(sourceDir, subPath);
|
|
31637
|
+
logger.debug(`findCustomFiles - destDir: ${destDir}`);
|
|
31638
|
+
logger.debug(`findCustomFiles - sourceDir: ${sourceDir}`);
|
|
31639
|
+
logger.debug(`findCustomFiles - subPath: "${subPath}"`);
|
|
31640
|
+
logger.debug(`findCustomFiles - destSubDir: ${destSubDir}`);
|
|
31641
|
+
logger.debug(`findCustomFiles - sourceSubDir: ${sourceSubDir}`);
|
|
31615
31642
|
const destFiles = await FileScanner.getFiles(destSubDir, destDir);
|
|
31616
31643
|
const sourceFiles = await FileScanner.getFiles(sourceSubDir, sourceDir);
|
|
31644
|
+
logger.debug(`findCustomFiles - destFiles count: ${destFiles.length}`);
|
|
31645
|
+
logger.debug(`findCustomFiles - sourceFiles count: ${sourceFiles.length}`);
|
|
31646
|
+
const sourceExists = await import_fs_extra16.pathExists(sourceSubDir);
|
|
31647
|
+
if (sourceExists && sourceFiles.length === 0 && destFiles.length > 100) {
|
|
31648
|
+
logger.warning(`Source directory exists but is empty while destination has ${destFiles.length} files. This may indicate an extraction issue. Skipping custom file detection.`);
|
|
31649
|
+
return [];
|
|
31650
|
+
}
|
|
31617
31651
|
const sourceFileSet = new Set(sourceFiles);
|
|
31618
31652
|
const customFiles = destFiles.filter((file) => !sourceFileSet.has(file));
|
|
31619
31653
|
if (customFiles.length > 0) {
|
|
31620
|
-
|
|
31654
|
+
const displayPath = subPath || destSubDir;
|
|
31655
|
+
logger.info(`Found ${customFiles.length} custom file(s) in ${displayPath}`);
|
|
31621
31656
|
customFiles.slice(0, 5).forEach((file) => logger.debug(` - ${file}`));
|
|
31622
31657
|
if (customFiles.length > 5) {
|
|
31623
31658
|
logger.debug(` ... and ${customFiles.length - 5} more`);
|
|
@@ -31652,8 +31687,11 @@ async function initCommand(options) {
|
|
|
31652
31687
|
logger.info("Running in non-interactive mode (--yes flag)");
|
|
31653
31688
|
}
|
|
31654
31689
|
if (validOptions.global) {
|
|
31690
|
+
const globalKitDir = PathResolver.getGlobalKitDir();
|
|
31691
|
+
const cwdResolved = resolve4(process.cwd());
|
|
31692
|
+
const isInGlobalDir = cwdResolved === globalKitDir || cwdResolved === resolve4(globalKitDir, "..");
|
|
31655
31693
|
const localSettingsPath = join28(process.cwd(), ".claude", "settings.json");
|
|
31656
|
-
if (await import_fs_extra17.pathExists(localSettingsPath)) {
|
|
31694
|
+
if (!isInGlobalDir && await import_fs_extra17.pathExists(localSettingsPath)) {
|
|
31657
31695
|
if (isNonInteractive2) {
|
|
31658
31696
|
logger.warning("Local .claude/settings.json detected. Local settings take precedence over global.");
|
|
31659
31697
|
logger.warning("Consider removing local installation: rm -rf .claude");
|
|
@@ -32506,7 +32544,7 @@ import { promisify as promisify6 } from "node:util";
|
|
|
32506
32544
|
// package.json
|
|
32507
32545
|
var package_default2 = {
|
|
32508
32546
|
name: "claudekit-cli",
|
|
32509
|
-
version: "3.6.
|
|
32547
|
+
version: "3.6.2",
|
|
32510
32548
|
description: "CLI tool for bootstrapping and updating ClaudeKit projects",
|
|
32511
32549
|
type: "module",
|
|
32512
32550
|
repository: {
|