claudekit-cli 4.2.2 → 4.2.3
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/cli-manifest.json +2 -2
- package/dist/index.js +18 -12
- package/package.json +1 -1
package/cli-manifest.json
CHANGED
package/dist/index.js
CHANGED
|
@@ -62962,7 +62962,7 @@ var package_default;
|
|
|
62962
62962
|
var init_package = __esm(() => {
|
|
62963
62963
|
package_default = {
|
|
62964
62964
|
name: "claudekit-cli",
|
|
62965
|
-
version: "4.2.
|
|
62965
|
+
version: "4.2.3",
|
|
62966
62966
|
description: "CLI tool for bootstrapping and updating ClaudeKit projects",
|
|
62967
62967
|
type: "module",
|
|
62968
62968
|
repository: {
|
|
@@ -85262,12 +85262,13 @@ async function applyBudgetDefaults(settingsPath, projectClaudeDir, requiredFract
|
|
|
85262
85262
|
var ENGINEER_SKILL_COUNT_THRESHOLD = 20;
|
|
85263
85263
|
async function checkSkillBudget(setup, projectDir) {
|
|
85264
85264
|
const projectClaudeDir = resolve31(projectDir, ".claude");
|
|
85265
|
-
const globalClaudeDir = PathResolver.getGlobalKitDir();
|
|
85265
|
+
const globalClaudeDir = resolve31(PathResolver.getGlobalKitDir());
|
|
85266
|
+
const projectScopeAliasesGlobal = projectClaudeDir === globalClaudeDir;
|
|
85266
85267
|
const [projectSkills, globalSkills] = await Promise.all([
|
|
85267
|
-
scanSkills2(join75(projectClaudeDir, "skills")),
|
|
85268
|
+
projectScopeAliasesGlobal ? Promise.resolve([]) : scanSkills2(join75(projectClaudeDir, "skills")),
|
|
85268
85269
|
scanSkills2(join75(globalClaudeDir, "skills"))
|
|
85269
85270
|
]);
|
|
85270
|
-
if (!isEngineerLikeProject(setup, projectSkills))
|
|
85271
|
+
if (!isEngineerLikeProject(setup, [...projectSkills, ...globalSkills]))
|
|
85271
85272
|
return [];
|
|
85272
85273
|
const settingsPath = join75(projectClaudeDir, "settings.json");
|
|
85273
85274
|
const settings = await readProjectSettings(settingsPath);
|
|
@@ -85288,7 +85289,10 @@ function isEngineerLikeProject(setup, projectSkills) {
|
|
|
85288
85289
|
const metadataText = [
|
|
85289
85290
|
setup.project.metadata?.name,
|
|
85290
85291
|
setup.project.metadata?.description,
|
|
85291
|
-
setup.project.metadata?.repository?.url
|
|
85292
|
+
setup.project.metadata?.repository?.url,
|
|
85293
|
+
setup.global.metadata?.name,
|
|
85294
|
+
setup.global.metadata?.description,
|
|
85295
|
+
setup.global.metadata?.repository?.url
|
|
85292
85296
|
].filter(Boolean).join(" ").toLowerCase();
|
|
85293
85297
|
return metadataText.includes("engineer") || projectSkills.length >= ENGINEER_SKILL_COUNT_THRESHOLD;
|
|
85294
85298
|
}
|
|
@@ -111538,7 +111542,7 @@ import { readFile as readFile65 } from "node:fs/promises";
|
|
|
111538
111542
|
import { join as join149 } from "node:path";
|
|
111539
111543
|
|
|
111540
111544
|
// src/commands/skills/installed-skills-inventory.ts
|
|
111541
|
-
import { join as join148 } from "node:path";
|
|
111545
|
+
import { join as join148, resolve as resolve53 } from "node:path";
|
|
111542
111546
|
init_path_resolver();
|
|
111543
111547
|
var SCOPE_SORT_ORDER = {
|
|
111544
111548
|
project: 0,
|
|
@@ -111546,9 +111550,11 @@ var SCOPE_SORT_ORDER = {
|
|
|
111546
111550
|
};
|
|
111547
111551
|
async function getActiveClaudeSkillInstallations(options2 = {}) {
|
|
111548
111552
|
const projectDir = options2.projectDir ?? process.cwd();
|
|
111549
|
-
const globalDir = options2.globalDir ?? PathResolver.getGlobalKitDir();
|
|
111553
|
+
const globalDir = resolve53(options2.globalDir ?? PathResolver.getGlobalKitDir());
|
|
111554
|
+
const projectClaudeDir = resolve53(projectDir, ".claude");
|
|
111555
|
+
const projectScopeAliasesGlobal = projectClaudeDir === globalDir;
|
|
111550
111556
|
const [projectSkills, globalSkills] = await Promise.all([
|
|
111551
|
-
scanSkills2(join148(
|
|
111557
|
+
projectScopeAliasesGlobal ? Promise.resolve([]) : scanSkills2(join148(projectClaudeDir, "skills")),
|
|
111552
111558
|
scanSkills2(join148(globalDir, "skills"))
|
|
111553
111559
|
]);
|
|
111554
111560
|
const projectIds = new Set(projectSkills.map((skill) => skill.id));
|
|
@@ -112292,7 +112298,7 @@ async function detectInstallations() {
|
|
|
112292
112298
|
|
|
112293
112299
|
// src/commands/uninstall/removal-handler.ts
|
|
112294
112300
|
import { readdirSync as readdirSync10, rmSync as rmSync5 } from "node:fs";
|
|
112295
|
-
import { basename as basename30, join as join151, resolve as
|
|
112301
|
+
import { basename as basename30, join as join151, resolve as resolve54, sep as sep13 } from "node:path";
|
|
112296
112302
|
init_logger();
|
|
112297
112303
|
init_safe_prompts();
|
|
112298
112304
|
init_safe_spinner();
|
|
@@ -112476,8 +112482,8 @@ async function restoreUninstallBackup(backup) {
|
|
|
112476
112482
|
}
|
|
112477
112483
|
async function isPathSafeToRemove(filePath, baseDir) {
|
|
112478
112484
|
try {
|
|
112479
|
-
const resolvedPath =
|
|
112480
|
-
const resolvedBase =
|
|
112485
|
+
const resolvedPath = resolve54(filePath);
|
|
112486
|
+
const resolvedBase = resolve54(baseDir);
|
|
112481
112487
|
if (!resolvedPath.startsWith(resolvedBase + sep13) && resolvedPath !== resolvedBase) {
|
|
112482
112488
|
logger.debug(`Path outside installation directory: ${filePath}`);
|
|
112483
112489
|
return false;
|
|
@@ -112485,7 +112491,7 @@ async function isPathSafeToRemove(filePath, baseDir) {
|
|
|
112485
112491
|
const stats = await import_fs_extra41.lstat(filePath);
|
|
112486
112492
|
if (stats.isSymbolicLink()) {
|
|
112487
112493
|
const realPath = await import_fs_extra41.realpath(filePath);
|
|
112488
|
-
const resolvedReal =
|
|
112494
|
+
const resolvedReal = resolve54(realPath);
|
|
112489
112495
|
if (!resolvedReal.startsWith(resolvedBase + sep13) && resolvedReal !== resolvedBase) {
|
|
112490
112496
|
logger.debug(`Symlink points outside installation directory: ${filePath} -> ${realPath}`);
|
|
112491
112497
|
return false;
|