skill4agent 1.0.9 โ†’ 1.0.11

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 (42) hide show
  1. package/README.md +49 -4
  2. package/README_CN.md +49 -4
  3. package/bin/forward.js +23 -0
  4. package/package.json +12 -3
  5. package/assets/skill4agent_en.png +0 -0
  6. package/assets/skill4agent_zh.png +0 -0
  7. package/bin/skill4agent.js +0 -3
  8. package/dist/api.d.ts +0 -31
  9. package/dist/api.d.ts.map +0 -1
  10. package/dist/api.js +0 -83
  11. package/dist/api.js.map +0 -1
  12. package/dist/commands/add.d.ts +0 -2
  13. package/dist/commands/add.d.ts.map +0 -1
  14. package/dist/commands/add.js +0 -300
  15. package/dist/commands/add.js.map +0 -1
  16. package/dist/commands/install.d.ts +0 -11
  17. package/dist/commands/install.d.ts.map +0 -1
  18. package/dist/commands/install.js +0 -188
  19. package/dist/commands/install.js.map +0 -1
  20. package/dist/commands/list.d.ts +0 -5
  21. package/dist/commands/list.d.ts.map +0 -1
  22. package/dist/commands/list.js +0 -79
  23. package/dist/commands/list.js.map +0 -1
  24. package/dist/commands/uninstall.d.ts +0 -7
  25. package/dist/commands/uninstall.d.ts.map +0 -1
  26. package/dist/commands/uninstall.js +0 -122
  27. package/dist/commands/uninstall.js.map +0 -1
  28. package/dist/index-manager.d.ts +0 -35
  29. package/dist/index-manager.d.ts.map +0 -1
  30. package/dist/index-manager.js +0 -192
  31. package/dist/index-manager.js.map +0 -1
  32. package/dist/main.d.ts +0 -2
  33. package/dist/main.d.ts.map +0 -1
  34. package/dist/main.js.map +0 -1
  35. package/dist/tools.d.ts +0 -16
  36. package/dist/tools.d.ts.map +0 -1
  37. package/dist/tools.js +0 -106
  38. package/dist/tools.js.map +0 -1
  39. package/dist/utils.d.ts +0 -4
  40. package/dist/utils.d.ts.map +0 -1
  41. package/dist/utils.js +0 -30
  42. package/dist/utils.js.map +0 -1
package/README.md CHANGED
@@ -1,14 +1,45 @@
1
1
  # skill4agent CLI
2
2
 
3
- By skill4agent.com, a command-line tool for installing Agent Skills.
3
+ [![npm version](https://img.shields.io/npm/v/@skill4agent/cli.svg)](https://www.npmjs.com/package/@skill4agent/cli)
4
+ [![npm downloads](https://img.shields.io/npm/dm/@skill4agent/cli.svg)](https://www.npmjs.com/package/@skill4agent/cli)
5
+ [![GitHub stars](https://img.shields.io/github/stars/osulivan/skill4agent-cli.svg)](https://github.com/osulivan/skill4agent-cli)
6
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
7
+
8
+ > ๐Ÿš€ **The easiest way to install and manage Agent Skills for AI coding assistants**
9
+
10
+ By [skill4agent.com](https://www.skill4agent.com) - A command-line tool for installing Agent Skills.
4
11
 
5
12
  [![skill4agent website](https://raw.githubusercontent.com/osulivan/skill4agent-cli/main/assets/skill4agent_en.png)](https://www.skill4agent.com)
6
13
 
7
- [English](https://www.npmjs.com/package/skill4agent) | [ไธญๆ–‡](https://github.com/osulivan/skill4agent-cli/blob/main/README_CN.md)
14
+ [English](https://github.com/osulivan/skill4agent-cli/blob/main/README.md) | [ไธญๆ–‡](https://github.com/osulivan/skill4agent-cli/blob/main/README_CN.md)
15
+
16
+ ---
17
+
18
+ ## ๐ŸŒŸ Why skill4agent?
8
19
 
9
- ## Quick Start
20
+ - **๐ŸŽฏ Curated Skills**: Access a vast collection of high-quality skills from [skill4agent.com](https://www.skill4agent.com)
21
+ - **๐ŸŒ Bilingual Support**: Every skill includes both English and Chinese translations, breaking language barriers
22
+ - **โœ… Quality Assurance**: Automated script detection ensures all skills are safe and reliable
23
+ - **๐Ÿท๏ธ Smart Categorization**: Fine-grained categories and tags help you quickly find the right skill
24
+ - **๐Ÿค– AI-Optimized**: Tags are embedded in SKILL.md, enabling AI Agents to match your needs more accurately
25
+ - **โšก One-Command Install**: Install any skill to multiple IDEs with a single command
26
+ - **๐Ÿ”ง Multi-IDE Support**: Works with Trae, Cursor, Claude, OpenCode, OpenClaw, and more
27
+ - **๐ŸŒ Global & Project Installation**: Install globally or per-project
28
+ - **๐Ÿ“ฆ Smart Management**: List and uninstall skills easily
29
+
30
+ ---
31
+
32
+ ## Installation
33
+
34
+ ```bash
35
+ # Using npx (recommended - no installation required)
36
+ npx skill4agent <command>
10
37
 
11
- > ๐Ÿ’ก Find available skills at [skill4agent.com](https://skill4agent.com)
38
+ # Or install globally
39
+ npm install -g @skill4agent/cli
40
+ ```
41
+
42
+ > ๐Ÿ’ก Find available skills at [skill4agent.com](https://www.skill4agent.com)
12
43
  > - `<source>`: The source repository (e.g., `anthropics/skills`)
13
44
  > - `<skill>`: The skill name (e.g., `frontend-design`)
14
45
 
@@ -131,3 +162,17 @@ npx skill4agent uninstall frontend-design --global
131
162
  # Uninstall from all projects only
132
163
  npx skill4agent uninstall frontend-design --project
133
164
  ```
165
+
166
+ ---
167
+
168
+ ## ๐Ÿ”— Useful Links
169
+
170
+ - ๐ŸŒ **Website**: [skill4agent.com](https://www.skill4agent.com) - Discover and browse all available skills
171
+ - ๐Ÿ“ฆ **npm Package**: [npmjs.com/package/@skill4agent/cli](https://www.npmjs.com/package/@skill4agent/cli)
172
+ - ๐Ÿ’ป **GitHub Repository**: [github.com/osulivan/skill4agent-cli](https://github.com/osulivan/skill4agent-cli)
173
+
174
+ ---
175
+
176
+ <p align="center">
177
+ Made with โค๏ธ by <a href="https://www.skill4agent.com">skill4agent.com</a>
178
+ </p>
package/README_CN.md CHANGED
@@ -1,14 +1,45 @@
1
1
  # skill4agent CLI
2
2
 
3
- ็”ฑskill4agent.comๆไพ›็š„ไธ€ไธช็”จไบŽๅฎ‰่ฃ… Agent Skills ็š„ๅ‘ฝไปค่กŒๅทฅๅ…ทใ€‚
3
+ [![npm version](https://img.shields.io/npm/v/@skill4agent/cli.svg)](https://www.npmjs.com/package/@skill4agent/cli)
4
+ [![npm downloads](https://img.shields.io/npm/dm/@skill4agent/cli.svg)](https://www.npmjs.com/package/@skill4agent/cli)
5
+ [![GitHub stars](https://img.shields.io/github/stars/osulivan/skill4agent-cli.svg)](https://github.com/osulivan/skill4agent-cli)
6
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
7
+
8
+ > ๐Ÿš€ **ๅฎ‰่ฃ…ๅ’Œ็ฎก็† AI ็ผ–็จ‹ๅŠฉๆ‰‹ Agent Skills ็š„ๆœ€็ฎ€ๅ•ๆ–นๅผ**
9
+
10
+ ็”ฑ [skill4agent.com](https://www.skill4agent.com) ๆไพ› - ไธ€ไธช็”จไบŽๅฎ‰่ฃ… Agent Skills ็š„ๅ‘ฝไปค่กŒๅทฅๅ…ทใ€‚
4
11
 
5
12
  [![skill4agent ็ฝ‘็ซ™้ฆ–้กต](https://raw.githubusercontent.com/osulivan/skill4agent-cli/main/assets/skill4agent_zh.png)](https://www.skill4agent.com)
6
13
 
7
- [English](https://github.com/osulivan/skill4agent-cli/blob/main/README.md) | [ไธญๆ–‡](https://www.npmjs.com/package/skill4agent)
14
+ [English](https://github.com/osulivan/skill4agent-cli/blob/main/README.md) | [ไธญๆ–‡](https://github.com/osulivan/skill4agent-cli/blob/main/README_CN.md)
15
+
16
+ ---
17
+
18
+ ## ๐ŸŒŸ ไธบไป€ไนˆ้€‰ๆ‹ฉ skill4agent๏ผŸ
8
19
 
9
- ## ๅฟซ้€Ÿๅผ€ๅง‹
20
+ - **๐ŸŽฏ ็ฒพ้€‰ๆŠ€่ƒฝ**: ไปŽ [skill4agent.com](https://www.skill4agent.com) ๅฟซ้€Ÿๅฎ‰่ฃ…ๆตท้‡้ซ˜่ดจ้‡ skills
21
+ - **๏ฟฝ ๅŒ่ฏญๆ”ฏๆŒ**: ๆฏไธช skill ้ƒฝๆไพ›ไธญ่‹ฑๆ–‡็ฟป่ฏ‘็‰ˆๆœฌ๏ผŒๆ‰“็ ด่ฏญ่จ€้šœ็ข
22
+ - **โœ… ่ดจ้‡ๆฃ€ๆต‹**: ่‡ชๅŠจๆฃ€ๆต‹ skill ไธญ็š„่„šๆœฌ๏ผŒ็กฎไฟๅฎ‰ๅ…จๅฏ้ 
23
+ - **๐Ÿท๏ธ ๆ™บ่ƒฝๅˆ†็ฑป**: ็ฒพ็ป†็š„ๅˆ†็ฑปๅ’Œๆ ‡็ญพ็ณป็ปŸ๏ผŒๅธฎไฝ ๅฟซ้€Ÿๆ‰พๅˆฐๅˆ้€‚็š„ skill
24
+ - **๐Ÿค– AI ๅ‹ๅฅฝ**: ๆ ‡็ญพไฟกๆฏๅ†™ๅ…ฅ SKILL.md๏ผŒ่ฎฉ AI Agent ๆ›ด็ฒพๅ‡†ๅŒน้…ไฝ ็š„้œ€ๆฑ‚
25
+ - **โšก ไธ€้”ฎๅฎ‰่ฃ…**: ็”จๅ•ไธชๅ‘ฝไปคๅฎ‰่ฃ…ไปปไฝ• skill ๅˆฐๅคšไธช IDE
26
+ - **๐Ÿ”ง ๅคš IDE ๆ”ฏๆŒ**: ๆ”ฏๆŒ Traeใ€Cursorใ€Claudeใ€OpenCodeใ€OpenClaw ็ญ‰
27
+ - **๐ŸŒ ๅ…จๅฑ€ไธŽ้กน็›ฎๅฎ‰่ฃ…**: ๆ”ฏๆŒๅ…จๅฑ€ๅฎ‰่ฃ…ๆˆ–ๆŒ‰้กน็›ฎๅฎ‰่ฃ…
28
+ - **๐Ÿ“ฆ ๆ™บ่ƒฝ็ฎก็†**: ่ฝปๆพๅˆ—ๅ‡บๅ’Œๅธ่ฝฝๆŠ€่ƒฝ
29
+
30
+ ---
31
+
32
+ ## ๅฎ‰่ฃ…
33
+
34
+ ```bash
35
+ # ไฝฟ็”จ npx๏ผˆๆŽจ่ - ๆ— ้œ€ๅฎ‰่ฃ…๏ผ‰
36
+ npx skill4agent <ๅ‘ฝไปค>
10
37
 
11
- > ๐Ÿ’ก ๅœจ [skill4agent.com](https://skill4agent.com) ๆŸฅๆ‰พๅฏ็”จๆŠ€่ƒฝ
38
+ # ๆˆ–ๅ…จๅฑ€ๅฎ‰่ฃ…
39
+ npm install -g @skill4agent/cli
40
+ ```
41
+
42
+ > ๐Ÿ’ก ๅœจ [skill4agent.com](https://www.skill4agent.com) ๆŸฅๆ‰พๅฏ็”จๆŠ€่ƒฝ
12
43
  > - `<ๆบไป“ๅบ“>`: ๆบไป“ๅบ“ๅ็งฐ๏ผˆๅฆ‚ `anthropics/skills`๏ผ‰
13
44
  > - `<ๆŠ€่ƒฝๅ>`: ๆŠ€่ƒฝๅ็งฐ๏ผˆๅฆ‚ `frontend-design`๏ผ‰
14
45
 
@@ -131,3 +162,17 @@ npx skill4agent uninstall frontend-design --global
131
162
  # ไป…ไปŽๆ‰€ๆœ‰้กน็›ฎๅธ่ฝฝ
132
163
  npx skill4agent uninstall frontend-design --project
133
164
  ```
165
+
166
+ ---
167
+
168
+ ## ๐Ÿ”— ๆœ‰็”จ้“พๆŽฅ
169
+
170
+ - ๐ŸŒ **็ฝ‘็ซ™**: [skill4agent.com](https://www.skill4agent.com) - ๅ‘็Žฐๅนถๆต่งˆๆ‰€ๆœ‰ๅฏ็”จ skills
171
+ - ๐Ÿ“ฆ **npm ๅŒ…**: [npmjs.com/package/@skill4agent/cli](https://www.npmjs.com/package/@skill4agent/cli)
172
+ - ๐Ÿ’ป **GitHub ไป“ๅบ“**: [github.com/osulivan/skill4agent-cli](https://github.com/osulivan/skill4agent-cli)
173
+
174
+ ---
175
+
176
+ <p align="center">
177
+ ็”จ โค๏ธ ็”ฑ <a href="https://www.skill4agent.com">skill4agent.com</a> ๅˆถไฝœ
178
+ </p>
package/bin/forward.js ADDED
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Forward script for skill4agent -> @skill4agent/cli
5
+ * This package is now a wrapper around @skill4agent/cli
6
+ */
7
+
8
+ const path = require('path');
9
+ const { spawn } = require('child_process');
10
+
11
+ // Get the path to @skill4agent/cli's bin
12
+ const cliPath = require.resolve('@skill4agent/cli/bin/skill4agent.js');
13
+
14
+ // Forward all arguments to the new CLI
15
+ const args = process.argv.slice(2);
16
+ const child = spawn('node', [cliPath, ...args], {
17
+ stdio: 'inherit',
18
+ cwd: process.cwd()
19
+ });
20
+
21
+ child.on('exit', (code) => {
22
+ process.exit(code);
23
+ });
package/package.json CHANGED
@@ -1,10 +1,19 @@
1
1
  {
2
2
  "name": "skill4agent",
3
- "version": "1.0.9",
4
- "description": "CLI tool for installing agent skills",
3
+ "version": "1.0.11",
4
+ "description": "CLI tool for installing agent skills (forwarded to @skill4agent/cli)",
5
5
  "main": "dist/main.js",
6
6
  "bin": {
7
- "skill4agent": "./bin/skill4agent.js"
7
+ "skill4agent": "./bin/forward.js"
8
+ },
9
+ "files": [
10
+ "bin/forward.js",
11
+ "README.md",
12
+ "README_CN.md",
13
+ "LICENSE"
14
+ ],
15
+ "dependencies": {
16
+ "@skill4agent/cli": "^1.0.10"
8
17
  },
9
18
  "scripts": {
10
19
  "build": "tsc",
Binary file
Binary file
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- require('../dist/main');
package/dist/api.d.ts DELETED
@@ -1,31 +0,0 @@
1
- export interface SkillInfo {
2
- skillName: string;
3
- name: string;
4
- nameCn: string;
5
- description: string;
6
- descriptionCn: string;
7
- descriptionTranslated: string;
8
- category: {
9
- nameCn: string;
10
- nameEn: string;
11
- } | null;
12
- tags: string;
13
- tagsCn: string;
14
- originalLanguage: string;
15
- hasTranslation: boolean;
16
- hasScript: boolean;
17
- scriptCount: number;
18
- scriptCheckResult: string;
19
- hasDownloaded: boolean;
20
- downloadStatus: string;
21
- totalInstalls: number;
22
- trending24h: number;
23
- }
24
- export declare function downloadSkill(topSource: string, skillName: string, type?: 'original' | 'translated'): Promise<string>;
25
- export declare function getSkillInfo(topSource: string, skillName: string): Promise<{
26
- skill: SkillInfo | null;
27
- sourceExists: boolean;
28
- }>;
29
- export declare function getDownloadUrl(topSource: string, skillName: string, type?: 'original' | 'translated'): string;
30
- export declare function incrementInstallCount(topSource: string, skillName: string): Promise<void>;
31
- //# sourceMappingURL=api.d.ts.map
package/dist/api.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,UAAU,GAAG,YAAyB,GAC3C,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC,CA2CpI;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,UAAU,GAAG,YAAyB,GAAG,MAAM,CAEzH;AAED,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU/F"}
package/dist/api.js DELETED
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.downloadSkill = downloadSkill;
7
- exports.getSkillInfo = getSkillInfo;
8
- exports.getDownloadUrl = getDownloadUrl;
9
- exports.incrementInstallCount = incrementInstallCount;
10
- const axios_1 = __importDefault(require("axios"));
11
- const fs_extra_1 = __importDefault(require("fs-extra"));
12
- const os_1 = __importDefault(require("os"));
13
- const path_1 = __importDefault(require("path"));
14
- const API_BASE = 'https://skill4agent.com/api';
15
- async function downloadSkill(topSource, skillName, type = 'original') {
16
- const url = `${API_BASE}/download?top_source=${encodeURIComponent(topSource)}&skill_name=${encodeURIComponent(skillName)}&type=${type}`;
17
- const response = await axios_1.default.get(url, {
18
- responseType: 'arraybuffer',
19
- });
20
- const tempDir = fs_extra_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'skill4agent-'));
21
- const fileName = `${skillName}.zip`;
22
- const filePath = path_1.default.join(tempDir, fileName);
23
- fs_extra_1.default.writeFileSync(filePath, Buffer.from(response.data));
24
- return filePath;
25
- }
26
- async function getSkillInfo(topSource, skillName) {
27
- try {
28
- const url = `${API_BASE}/skills/info?top_source=${encodeURIComponent(topSource)}&skill_name=${encodeURIComponent(skillName)}`;
29
- const response = await axios_1.default.get(url);
30
- if (response.status === 404) {
31
- return { skill: null, sourceExists: false };
32
- }
33
- const skill = response.data.data;
34
- if (!skill) {
35
- return { skill: null, sourceExists: true };
36
- }
37
- return {
38
- skill: {
39
- skillName: skill.skillName,
40
- name: skill.name,
41
- nameCn: skill.nameCn,
42
- description: skill.description,
43
- descriptionCn: skill.descriptionCn,
44
- descriptionTranslated: skill.descriptionTranslated,
45
- category: skill.category,
46
- tags: skill.tags,
47
- tagsCn: skill.tagsCn,
48
- originalLanguage: skill.originalLanguage,
49
- hasTranslation: skill.hasTranslation,
50
- hasScript: skill.hasScript,
51
- scriptCount: skill.scriptCount,
52
- scriptCheckResult: skill.scriptCheckResult,
53
- hasDownloaded: skill.hasDownloaded,
54
- downloadStatus: skill.downloadStatus,
55
- totalInstalls: skill.totalInstalls,
56
- trending24h: skill.trending24h,
57
- },
58
- sourceExists: true,
59
- };
60
- }
61
- catch (error) {
62
- if (error.response?.status === 404) {
63
- return { skill: null, sourceExists: false };
64
- }
65
- return { skill: null, sourceExists: false };
66
- }
67
- }
68
- function getDownloadUrl(topSource, skillName, type = 'original') {
69
- return `${API_BASE}/download?top_source=${encodeURIComponent(topSource)}&skill_name=${encodeURIComponent(skillName)}&type=${type}`;
70
- }
71
- async function incrementInstallCount(topSource, skillName) {
72
- try {
73
- const url = `${API_BASE}/skills/install`;
74
- await axios_1.default.post(url, {
75
- top_source: topSource,
76
- skill_name: skillName,
77
- });
78
- }
79
- catch (error) {
80
- // ้™้ป˜ๅคฑ่ดฅ๏ผŒไธๅฝฑๅ“ๅฎ‰่ฃ…ๆต็จ‹
81
- }
82
- }
83
- //# sourceMappingURL=api.js.map
package/dist/api.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function add(topSource: string, skillName: string): Promise<void>;
2
- //# sourceMappingURL=add.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAgKA,wBAAsB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgM7E"}
@@ -1,300 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.add = add;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const fs_extra_1 = __importDefault(require("fs-extra"));
9
- const inquirer_1 = __importDefault(require("inquirer"));
10
- const os_1 = __importDefault(require("os"));
11
- const path_1 = __importDefault(require("path"));
12
- const utils_1 = require("../utils");
13
- const tools_1 = require("../tools");
14
- const api_1 = require("../api");
15
- const index_manager_1 = require("../index-manager");
16
- function getAgentName(id) {
17
- const agent = [...tools_1.UNIVERSAL_AGENTS, ...tools_1.OTHER_AGENTS].find(a => a.id === id);
18
- return agent?.name || id;
19
- }
20
- async function promptTypeSelection(skillInfo) {
21
- const isOriginalEnglish = skillInfo.originalLanguage === 'en';
22
- const originalName = isOriginalEnglish ? 'English' : 'Chinese';
23
- const translatedName = isOriginalEnglish ? 'Chinese' : 'English';
24
- if (!skillInfo.hasTranslation) {
25
- console.log(chalk_1.default.yellow(`\nโ„น๏ธ This skill does not have a ${translatedName} translation yet.`));
26
- console.log(chalk_1.default.gray(` Installing ${originalName} version...\n`));
27
- return 'original';
28
- }
29
- const { type } = await inquirer_1.default.prompt({
30
- type: 'list',
31
- name: 'type',
32
- message: `Select version for "${skillInfo.name}"`,
33
- choices: [
34
- {
35
- name: `${originalName} (Original)`,
36
- value: 'original',
37
- },
38
- {
39
- name: `${translatedName} (Translation)`,
40
- value: 'translated',
41
- },
42
- ],
43
- default: 'original',
44
- });
45
- return type;
46
- }
47
- async function promptScopeSelection() {
48
- const { scope } = await inquirer_1.default.prompt({
49
- type: 'list',
50
- name: 'scope',
51
- message: 'Installation scope',
52
- choices: [
53
- {
54
- name: 'Project (Install in current directory (committed with your project))',
55
- value: 'project',
56
- },
57
- {
58
- name: 'Global (Install in home directory (available across all projects))',
59
- value: 'global',
60
- },
61
- ],
62
- default: 'project',
63
- });
64
- return scope;
65
- }
66
- async function promptAgentSelection(isGlobal) {
67
- const universalNames = tools_1.UNIVERSAL_AGENTS.map(a => a.name).join(', ');
68
- const universalDisplayPath = (0, tools_1.getAgentDisplayPath)(tools_1.UNIVERSAL_AGENTS[0].id, isGlobal);
69
- const otherAgentChoices = tools_1.OTHER_AGENTS.map(agent => ({
70
- name: `${agent.name} (${(0, tools_1.getAgentDisplayPath)(agent.id, isGlobal)})`,
71
- value: agent.id,
72
- }));
73
- console.log(chalk_1.default.green(`โœ“ Universal (${universalDisplayPath}): ${universalNames} is always included`));
74
- const { selectedOtherAgents } = await inquirer_1.default.prompt({
75
- type: 'checkbox',
76
- name: 'selectedOtherAgents',
77
- message: 'Select additional agents:',
78
- pageSize: 12,
79
- loop: false,
80
- choices: otherAgentChoices,
81
- });
82
- const selectedNames = selectedOtherAgents.map(id => tools_1.OTHER_AGENTS.find(a => a.id === id)?.name || id);
83
- const displayNames = selectedNames.length > 0
84
- ? ['Universal', ...selectedNames].join(', ')
85
- : 'Universal';
86
- console.log(chalk_1.default.green(`โœ“ Selected: ${displayNames}\n`));
87
- const universalAgentIds = tools_1.UNIVERSAL_AGENTS.map(a => a.id);
88
- return [...universalAgentIds, ...selectedOtherAgents];
89
- }
90
- async function promptMethodSelection() {
91
- const { method } = await inquirer_1.default.prompt({
92
- type: 'list',
93
- name: 'method',
94
- message: 'Installation method',
95
- choices: [
96
- {
97
- name: 'Symlink (Recommended) (Single source of truth, easy updates)',
98
- value: 'symlink',
99
- },
100
- {
101
- name: 'Copy to all agents (Independent copies for each agent)',
102
- value: 'copy',
103
- },
104
- ],
105
- default: 'symlink',
106
- });
107
- return method;
108
- }
109
- function displaySummary(skillName, source, typeDisplay, scope, agents, method) {
110
- const universalAgentIds = tools_1.UNIVERSAL_AGENTS.map(a => a.id);
111
- const hasUniversal = agents.some(id => universalAgentIds.includes(id));
112
- const otherAgents = agents.filter(id => !universalAgentIds.includes(id));
113
- const otherAgentNames = otherAgents.map(id => getAgentName(id));
114
- const agentDisplay = hasUniversal
115
- ? ['Universal', ...otherAgentNames].join(', ')
116
- : otherAgentNames.join(', ');
117
- const agentCount = (hasUniversal ? 1 : 0) + otherAgentNames.length;
118
- console.log(chalk_1.default.blue('\n๐Ÿ“Š Installation Summary'));
119
- console.log(chalk_1.default.gray('โ”€'.repeat(50)));
120
- console.log(`Skill: ${chalk_1.default.white(skillName)}`);
121
- console.log(`Source: ${source}`);
122
- console.log(`Type: ${typeDisplay}`);
123
- console.log(`Scope: ${scope === 'global' ? 'Global' : 'Project'}`);
124
- console.log(`Agents (${agentCount}): ${agentDisplay}`);
125
- console.log(`Method: ${method === 'symlink' ? 'Symlink (Recommended)' : 'Copy'}`);
126
- console.log(chalk_1.default.gray('โ”€'.repeat(50)));
127
- }
128
- async function promptConfirmation() {
129
- const { confirm } = await inquirer_1.default.prompt({
130
- type: 'confirm',
131
- name: 'confirm',
132
- message: 'Proceed with installation?',
133
- default: true,
134
- });
135
- return confirm;
136
- }
137
- async function add(topSource, skillName) {
138
- console.log(chalk_1.default.blue(`\n๐Ÿ“ฆ Installing skill: ${skillName}`));
139
- console.log(chalk_1.default.gray(` Source: ${topSource}\n`));
140
- let result;
141
- try {
142
- result = await (0, api_1.getSkillInfo)(topSource, skillName);
143
- }
144
- catch (error) {
145
- console.log(chalk_1.default.red(`\nโŒ Skill "${skillName}" not found in source "${topSource}".`));
146
- console.log(chalk_1.default.gray(` Please check the source repository and skill name.\n`));
147
- return;
148
- }
149
- if (!result.skill) {
150
- console.log(chalk_1.default.red(`\nโŒ Skill "${skillName}" not found in source "${topSource}".`));
151
- console.log(chalk_1.default.gray(` Please check the source repository and skill name.\n`));
152
- return;
153
- }
154
- const skillInfo = result.skill;
155
- console.log(chalk_1.default.blue(`\n๐Ÿ“ฆ Skill: ${chalk_1.default.white(skillInfo.name)}`));
156
- console.log(chalk_1.default.gray(` Category: ${skillInfo.category?.nameEn || 'N/A'} | Installs: ${skillInfo.totalInstalls}`));
157
- if (skillInfo.tags) {
158
- console.log(chalk_1.default.gray(` Tags: ${skillInfo.tags}`));
159
- }
160
- if (!skillInfo.hasScript) {
161
- console.log(chalk_1.default.gray(` ๐Ÿ“œ Scripts: No scripts`));
162
- }
163
- else {
164
- const statusText = skillInfo.scriptCheckResult === 'safe' ? 'โœ… Check passed' : 'โš ๏ธ Needs attention';
165
- console.log(chalk_1.default.gray(` ๐Ÿ“œ Scripts: ${skillInfo.scriptCount} script(s) - ${statusText}`));
166
- }
167
- console.log(chalk_1.default.gray(` ${skillInfo.hasTranslation ? 'โœ…' : 'โŒ'} Translation available\n`));
168
- const type = await promptTypeSelection(skillInfo);
169
- const isOriginalEnglish = skillInfo.originalLanguage === 'en';
170
- const typeDisplay = type === 'original'
171
- ? (isOriginalEnglish ? 'English' : 'Chinese')
172
- : (isOriginalEnglish ? 'Chinese' : 'English');
173
- console.log(chalk_1.default.gray(` Type: ${typeDisplay}\n`));
174
- const scope = await promptScopeSelection();
175
- const isGlobal = scope === 'global';
176
- const selectedAgentIds = await promptAgentSelection(isGlobal);
177
- if (selectedAgentIds.length === 0) {
178
- console.log(chalk_1.default.yellow('\nโš ๏ธ No agents selected. Installation cancelled.'));
179
- return;
180
- }
181
- const installMethod = await promptMethodSelection();
182
- displaySummary(skillName, topSource, typeDisplay, scope, selectedAgentIds, installMethod);
183
- const confirmed = await promptConfirmation();
184
- if (!confirmed) {
185
- console.log(chalk_1.default.yellow('\nโš ๏ธ Installation cancelled.'));
186
- return;
187
- }
188
- const basePath = isGlobal ? os_1.default.homedir() : process.cwd();
189
- let tempZip;
190
- try {
191
- tempZip = await (0, api_1.downloadSkill)(topSource, skillName, type);
192
- }
193
- catch (error) {
194
- if (error.response?.status === 404) {
195
- console.log(chalk_1.default.red(`\nโŒ Failed to download skill "${skillName}".`));
196
- console.log(chalk_1.default.gray(` The skill may not exist or the download link is invalid.\n`));
197
- return;
198
- }
199
- console.log(chalk_1.default.red(`\nโŒ Download failed: ${error.message}`));
200
- return;
201
- }
202
- if (installMethod === 'symlink') {
203
- const universalFullPath = path_1.default.join(basePath, tools_1.UNIVERSAL_PATH);
204
- fs_extra_1.default.ensureDirSync(universalFullPath);
205
- const skillDir = path_1.default.join(universalFullPath, skillName);
206
- if (fs_extra_1.default.existsSync(skillDir)) {
207
- console.log(chalk_1.default.yellow(`\nโš ๏ธ Skill "${skillName}" already exists. Overwriting...`));
208
- fs_extra_1.default.removeSync(skillDir);
209
- }
210
- await (0, utils_1.extractZip)(tempZip, universalFullPath);
211
- fs_extra_1.default.removeSync(tempZip);
212
- console.log(chalk_1.default.green(`โœ… Installed to: ${skillDir}`));
213
- const otherAgentIds = selectedAgentIds.filter(id => !tools_1.UNIVERSAL_AGENTS.some(a => a.id === id));
214
- for (const agentId of otherAgentIds) {
215
- const agent = tools_1.OTHER_AGENTS.find(a => a.id === agentId);
216
- if (!agent)
217
- continue;
218
- const effectivePath = isGlobal && agent.globalPath ? agent.globalPath : agent.path;
219
- const agentPath = path_1.default.join(basePath, effectivePath);
220
- fs_extra_1.default.ensureDirSync(agentPath);
221
- const destDir = path_1.default.join(agentPath, skillName);
222
- if (fs_extra_1.default.existsSync(destDir)) {
223
- fs_extra_1.default.removeSync(destDir);
224
- }
225
- if (isGlobal) {
226
- fs_extra_1.default.symlinkSync(skillDir, destDir);
227
- }
228
- else {
229
- const relativePath = path_1.default.relative(agentPath, skillDir);
230
- fs_extra_1.default.symlinkSync(relativePath, destDir);
231
- }
232
- console.log(chalk_1.default.green(`โœ… Linked to: ${destDir}`));
233
- }
234
- }
235
- else {
236
- const universalFullPath = path_1.default.join(basePath, tools_1.UNIVERSAL_PATH);
237
- fs_extra_1.default.ensureDirSync(universalFullPath);
238
- if (fs_extra_1.default.existsSync(path_1.default.join(universalFullPath, skillName))) {
239
- fs_extra_1.default.removeSync(path_1.default.join(universalFullPath, skillName));
240
- }
241
- await (0, utils_1.extractZip)(tempZip, universalFullPath);
242
- fs_extra_1.default.removeSync(tempZip);
243
- console.log(chalk_1.default.green(`โœ… Copied to: ${universalFullPath}`));
244
- let copiedCount = 0;
245
- const otherAgentIds = selectedAgentIds.filter(id => !tools_1.UNIVERSAL_AGENTS.some(a => a.id === id));
246
- for (const agentId of otherAgentIds) {
247
- const agent = tools_1.OTHER_AGENTS.find(a => a.id === agentId);
248
- if (!agent)
249
- continue;
250
- const effectivePath = isGlobal && agent.globalPath ? agent.globalPath : agent.path;
251
- const agentPath = path_1.default.join(basePath, effectivePath);
252
- fs_extra_1.default.ensureDirSync(agentPath);
253
- const destDir = path_1.default.join(agentPath, skillName);
254
- if (fs_extra_1.default.existsSync(destDir)) {
255
- fs_extra_1.default.removeSync(destDir);
256
- }
257
- fs_extra_1.default.copySync(path_1.default.join(universalFullPath, skillName), destDir);
258
- console.log(chalk_1.default.green(`โœ… Copied to: ${destDir}`));
259
- copiedCount++;
260
- }
261
- }
262
- // Update installation count
263
- await (0, api_1.incrementInstallCount)(topSource, skillName);
264
- // Record installation info to index
265
- const installScope = isGlobal ? 'global' : (0, index_manager_1.getCurrentScope)();
266
- const skillDir = path_1.default.join(basePath, tools_1.UNIVERSAL_PATH, skillName);
267
- // Collect symlink and copy directories
268
- const symlinkDirs = [];
269
- const copyDirs = [];
270
- const otherAgentIds = selectedAgentIds.filter(id => !tools_1.UNIVERSAL_AGENTS.some(a => a.id === id));
271
- for (const agentId of otherAgentIds) {
272
- const agent = tools_1.OTHER_AGENTS.find(a => a.id === agentId);
273
- if (!agent)
274
- continue;
275
- const effectivePath = isGlobal && agent.globalPath ? agent.globalPath : agent.path;
276
- const agentPath = path_1.default.join(basePath, effectivePath);
277
- const destDir = path_1.default.join(agentPath, skillName);
278
- if (installMethod === 'symlink') {
279
- symlinkDirs.push(destDir);
280
- }
281
- else {
282
- copyDirs.push(destDir);
283
- }
284
- }
285
- const metadata = (0, index_manager_1.createSkillMetadata)(skillName, topSource, installScope);
286
- (0, index_manager_1.writeSkillMetadata)(skillDir, metadata);
287
- (0, index_manager_1.addOrUpdateSkill)({
288
- name: skillName,
289
- source: topSource,
290
- installedAt: metadata.installedAt,
291
- scope: installScope,
292
- locations: {
293
- universal: skillDir,
294
- symlink: symlinkDirs,
295
- copy: copyDirs,
296
- },
297
- });
298
- console.log(chalk_1.default.green('\n๐ŸŽ‰ Installation completed!\n'));
299
- }
300
- //# sourceMappingURL=add.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}