add-skill-kit 1.5.0 → 1.5.5

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/README.md CHANGED
@@ -20,6 +20,7 @@ npx -y add-skill-kit agentskillkit/agent-skills
20
20
  - 40+ skills chuyên môn
21
21
  - 20 specialist agents
22
22
  - 11 workflows có sẵn
23
+ - **✅ Agent CLI (`npx agent`) đã sẵn sàng**
23
24
 
24
25
  ### 🧩 Không Bao Giờ Copy-Paste Prompts Nữa
25
26
 
@@ -108,6 +109,7 @@ add-skill-kit doctor
108
109
  ### 🎯 Intelligent Installation
109
110
 
110
111
  - **Interactive selection** - Chọn skills cần cài
112
+ - **Auto-Install CLI** - Tự động cài `@agent-skill-kit/cli`
111
113
  - **Symlink mode** - Tiết kiệm disk space
112
114
  - **Copy mode** - Offline support
113
115
  - **Merkle verification** - Đảm bảo integrity
package/bin/cli.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
  /**
3
3
  * Install Agent Skill CLI
4
4
  * @description Package manager for AI Agent Skills
@@ -12,7 +12,7 @@ import boxen from "boxen";
12
12
  import { parseSkillSpec, merkleHash } from "../helpers.js";
13
13
  import { parseSkillMdFrontmatter } from "../skills.js";
14
14
  import { step, activeStep, stepLine, S, c, fatal, spinner, multiselect, select, confirm, isCancel, cancel } from "../ui.js";
15
- import { WORKSPACE, GLOBAL_DIR, OFFLINE } from "../config.js";
15
+ import { WORKSPACE, GLOBAL_DIR, OFFLINE, GLOBAL } from "../config.js";
16
16
  import { installSkill } from "../installer.js";
17
17
 
18
18
  /**
@@ -207,6 +207,47 @@ export async function run(spec) {
207
207
  step("Select skills to install");
208
208
  console.log(`${c.gray(S.branch)} ${c.dim(selectedSkills.join(", "))}`);
209
209
 
210
+ // --- NEW: Scope Selection ---
211
+
212
+ // Determine installation scope
213
+ let isGlobal = false;
214
+
215
+ if (GLOBAL) {
216
+ isGlobal = true;
217
+ } else {
218
+ activeStep("Select installation scope");
219
+
220
+ const scopeSelection = await select({
221
+ message: " ",
222
+ options: [
223
+ {
224
+ label: "Current Project",
225
+ value: "local",
226
+ hint: "Installs to .agent/ (Best for project-specific skills)"
227
+ },
228
+ {
229
+ label: "Global System",
230
+ value: "global",
231
+ hint: "Installs to ~/.gemini/ (Available to all projects via 'agent' command)"
232
+ }
233
+ ],
234
+ initialValue: "local"
235
+ });
236
+
237
+ if (isCancel(scopeSelection)) {
238
+ cancel("Cancelled.");
239
+ fs.rmSync(tmp, { recursive: true, force: true });
240
+ return;
241
+ }
242
+
243
+ isGlobal = scopeSelection === "global";
244
+ }
245
+ const targetScope = isGlobal ? GLOBAL_DIR : WORKSPACE;
246
+
247
+ stepLine();
248
+ step("Installation scope");
249
+ console.log(`${c.gray(S.branch)} ${c.dim(isGlobal ? "Global System" : "Current Project")}`);
250
+
210
251
  // Agent selection - currently only Antigravity supported
211
252
  const availableAgents = [
212
253
  { label: "Antigravity (.agent/skills)", value: "antigravity", available: true },
@@ -261,13 +302,6 @@ export async function run(spec) {
261
302
  step("Select agents to install skills to");
262
303
  console.log(`${c.gray(S.branch)} ${c.dim(Array.isArray(agents) ? agents.join(", ") : agents)}`);
263
304
 
264
- const targetScope = WORKSPACE;
265
-
266
- // Installation scope
267
- stepLine();
268
- step("Installation scope");
269
- console.log(`${c.gray(S.branch)} ${c.dim("Project")}`);
270
-
271
305
  // Installation method
272
306
  activeStep("Installation method");
273
307
 
@@ -543,18 +577,31 @@ export async function run(spec) {
543
577
 
544
578
  fs.rmSync(tmp, { recursive: true, force: true });
545
579
 
546
- // Install CLI package as devDependency
580
+ // Install CLI package
547
581
  stepLine();
548
582
  const cliSpinner = spinner();
549
- cliSpinner.start("Installing Agent CLI");
550
-
551
- try {
552
- await execAsync("npm install -D @agent-skill-kit/cli", { timeout: 120000 });
553
- cliSpinner.stop("Agent CLI installed");
554
- step(c.dim("Run: npx agent"));
555
- } catch (e) {
556
- cliSpinner.stop(c.yellow("CLI installation skipped"));
557
- step(c.dim("Run manually: npm i -D @agent-skill-kit/cli"));
583
+ const cliPackage = "@agentskillskit/cli";
584
+
585
+ if (isGlobal) {
586
+ cliSpinner.start(`Installing Agent CLI globally (${cliPackage})`);
587
+ try {
588
+ await execAsync(`npm install -g ${cliPackage}`, { timeout: 120000 });
589
+ cliSpinner.stop("Agent CLI installed globally");
590
+ step(c.dim("Run: agent"));
591
+ } catch (e) {
592
+ cliSpinner.stop(c.yellow("Global CLI installation failed"));
593
+ step(c.dim(`Try running manually: npm i -g ${cliPackage}`));
594
+ }
595
+ } else {
596
+ cliSpinner.start(`Installing Agent CLI locally (${cliPackage})`);
597
+ try {
598
+ await execAsync(`npm install -D ${cliPackage}`, { timeout: 120000 });
599
+ cliSpinner.stop("Agent CLI installed locally");
600
+ step(c.dim("Run: npx agent"));
601
+ } catch (e) {
602
+ cliSpinner.stop(c.yellow("Local CLI installation skipped"));
603
+ step(c.dim(`Run manually: npm i -D ${cliPackage}`));
604
+ }
558
605
  }
559
606
 
560
607
  stepLine();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "add-skill-kit",
3
- "version": "1.5.0",
3
+ "version": "1.5.5",
4
4
  "description": "Enterprise-grade Agent Skill Manager with Antigravity Skills support, Progressive Disclosure detection, and semantic routing validation",
5
5
  "license": "MIT",
6
6
  "author": "agentskillkit <agentskillkit@gmail.com>",