eskill 1.0.28 → 1.0.29

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 (3) hide show
  1. package/cli.js +1 -1
  2. package/lib/installer.js +32 -18
  3. package/package.json +1 -1
package/cli.js CHANGED
@@ -13,7 +13,7 @@ const program = new Command();
13
13
  program
14
14
  .name('eskill')
15
15
  .description('Unified AI Agent Skills Management - Install skills from Git URLs')
16
- .version('1.0.28')
16
+ .version('1.0.29')
17
17
  .option('-g, --global', '使用全局技能目录(~/.eskill/skills/),否则使用当前目录(./.claude/skills/)', false);
18
18
 
19
19
  // 安装命令
package/lib/installer.js CHANGED
@@ -58,10 +58,10 @@ function getEskillPackageDir() {
58
58
  }
59
59
 
60
60
  /**
61
- * 获取技能存储目录
62
- * @param {boolean} global - 是否使用全局目录(~/.eskill/skills/),否则使用当前目录(./.claude/skills/)
61
+ * 获取技能目录
62
+ * @param {boolean} global - 是否使用全局目录
63
63
  */
64
- function getSkillsStorageDir(global = false) {
64
+ function getSkillsDir(global = false) {
65
65
  if (global) {
66
66
  // 全局模式:使用 ~/.eskill/skills/
67
67
  return join(homedir(), '.eskill', 'skills');
@@ -71,6 +71,20 @@ function getSkillsStorageDir(global = false) {
71
71
  }
72
72
  }
73
73
 
74
+ /**
75
+ * 获取技能存储目录(用于元数据)
76
+ * @param {boolean} global - 是否使用全局目录
77
+ */
78
+ function getSkillsStorageDir(global = false) {
79
+ if (global) {
80
+ // 全局模式:使用 ~/.eskill/skills/
81
+ return join(homedir(), '.eskill', 'skills');
82
+ } else {
83
+ // 本地模式:使用当前目录(项目根目录)
84
+ return process.cwd();
85
+ }
86
+ }
87
+
74
88
  /**
75
89
  * 迁移旧位置的技能到新位置
76
90
  * @param {boolean} global - 是否全局模式
@@ -326,17 +340,17 @@ export async function installFromGitUrl(gitUrl, options = {}) {
326
340
  console.log(`路径: ${parsed.path}`);
327
341
  }
328
342
 
329
- // 获取技能存储目录
330
- const skillDir = getSkillsStorageDir(global);
343
+ // 获取技能目录(技能文件存放位置)
344
+ const skillsDir = getSkillsDir(global);
331
345
 
332
346
  // 确保技能目录存在
333
- if (!existsSync(skillDir)) {
334
- mkdirSync(skillDir, { recursive: true });
347
+ if (!existsSync(skillsDir)) {
348
+ mkdirSync(skillsDir, { recursive: true });
335
349
  }
336
350
 
337
351
  // 确定技能名称
338
352
  const skillName = parsed.path ? basename(parsed.path) : parsed.repo;
339
- const targetPath = join(skillDir, skillName);
353
+ const targetPath = join(skillsDir, skillName);
340
354
 
341
355
  // 检查是否已存在
342
356
  if (existsSync(targetPath)) {
@@ -389,8 +403,9 @@ export async function installFromGitUrl(gitUrl, options = {}) {
389
403
  }
390
404
 
391
405
  console.log(`\n✓ 技能已安装到: ${targetPath}`);
392
- console.log(` 存储位置: ~/.eskill/skills/`);
393
- console.log(` 说明: 技能永久保存,更新 eskill 不会丢失`);
406
+ const metaLocation = global ? '~/.eskill/skills/.eskill-meta.json' : './.eskill-meta.json';
407
+ console.log(` 元数据位置: ${metaLocation}`);
408
+ console.log(` 说明: 技能永久保存,可提交到 Git`);
394
409
 
395
410
  // 获取 git 版本信息
396
411
  const commitHash = getGitCommitHash(sourcePath);
@@ -427,7 +442,7 @@ export function listSkills(agent = 'claude', global = false) {
427
442
  // 自动迁移旧位置的技能
428
443
  migrateOldSkills(global);
429
444
 
430
- const skillDir = getSkillsStorageDir(global);
445
+ const skillDir = getSkillsDir(global);
431
446
 
432
447
  if (!existsSync(skillDir)) {
433
448
  return [];
@@ -459,7 +474,7 @@ export function listSkills(agent = 'claude', global = false) {
459
474
  * 删除技能
460
475
  */
461
476
  export function removeSkill(skillName, agent = 'claude', global = false) {
462
- const skillDir = getSkillsStorageDir(global);
477
+ const skillDir = getSkillsDir(global);
463
478
  const targetPath = join(skillDir, skillName);
464
479
 
465
480
  if (!existsSync(targetPath)) {
@@ -475,7 +490,7 @@ export function removeSkill(skillName, agent = 'claude', global = false) {
475
490
  * 清理所有技能(用于卸载)
476
491
  */
477
492
  export function cleanupAllSkills(global = false) {
478
- const skillDir = getSkillsStorageDir(global);
493
+ const skillDir = getSkillsDir(global);
479
494
 
480
495
  if (!existsSync(skillDir)) {
481
496
  console.log('没有需要清理的技能');
@@ -513,10 +528,9 @@ export function cleanupAll() {
513
528
 
514
529
  /**
515
530
  * 获取技能存储目录路径
531
+ * 导出内部的 getSkillsDir 函数
516
532
  */
517
- export function getSkillsDir(global = false) {
518
- return getSkillsStorageDir(global);
519
- }
533
+ export { getSkillsDir };
520
534
 
521
535
  /**
522
536
  * 获取远程仓库的 commit hash(不克隆)
@@ -540,7 +554,7 @@ function getRemoteCommitHash(gitUrl, branch) {
540
554
  */
541
555
  export async function updateSkill(skillName, options = {}) {
542
556
  const { force = false, global = false } = options;
543
- const skillDir = getSkillsStorageDir(global);
557
+ const skillDir = getSkillsDir(global);
544
558
  const targetPath = join(skillDir, skillName);
545
559
 
546
560
  // 检查技能是否存在
@@ -648,7 +662,7 @@ export async function updateAllSkills(options = {}) {
648
662
  // 自动迁移旧位置的技能
649
663
  migrateOldSkills(global);
650
664
 
651
- const skillDir = getSkillsStorageDir(global);
665
+ const skillDir = getSkillsDir(global);
652
666
 
653
667
  if (!existsSync(skillDir)) {
654
668
  console.log('未安装任何技能');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eskill",
3
- "version": "1.0.28",
3
+ "version": "1.0.29",
4
4
  "description": "Unified AI Agent Skills Management - Install skills from Git URLs",
5
5
  "main": "index.js",
6
6
  "type": "module",