install-agent-skill 1.2.9 → 1.3.1
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/bin/add-skill.v2.js +30 -30
- package/bin/lib/commands/analyze.js +8 -8
- package/bin/lib/commands/cache.js +5 -5
- package/bin/lib/commands/doctor.js +1 -1
- package/bin/lib/commands/info.js +3 -3
- package/bin/lib/commands/install.js +2 -2
- package/bin/lib/commands/list.js +4 -4
- package/bin/lib/commands/validate.js +4 -4
- package/bin/lib/commands/verify.js +1 -1
- package/bin/lib/ui.js +4 -4
- package/package.json +1 -1
package/bin/add-skill.v2.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* install-agent-skill
|
|
4
4
|
* Vercel-Style CLI - Full Port v2.0
|
|
@@ -70,11 +70,11 @@ const c = {
|
|
|
70
70
|
|
|
71
71
|
// --- UI Helpers ---
|
|
72
72
|
function step(text, icon = S.diamond, color = "gray") {
|
|
73
|
-
console.log(
|
|
73
|
+
console.log(`${c.gray(S.branch)} ${c[color](icon)} ${text}`);
|
|
74
74
|
}
|
|
75
|
-
function stepLine() { console.log(
|
|
76
|
-
function fatal(msg) { console.log(
|
|
77
|
-
function success(msg) { console.log(
|
|
75
|
+
function stepLine() { console.log(`${c.gray(S.branch)}`); }
|
|
76
|
+
function fatal(msg) { console.log(`${c.gray(S.branch)} ${c.red(S.cross)} ${c.red(msg)}`); process.exit(1); }
|
|
77
|
+
function success(msg) { console.log(`${c.gray(S.branch)} ${c.green(S.check)} ${c.green(msg)}`); }
|
|
78
78
|
function outputJSON(data) { if (JSON_OUTPUT) console.log(JSON.stringify(data, null, 2)); }
|
|
79
79
|
|
|
80
80
|
// --- Core Helpers ---
|
|
@@ -231,18 +231,18 @@ async function runInit() {
|
|
|
231
231
|
async function runList() {
|
|
232
232
|
stepLine();
|
|
233
233
|
step(c.bold("Installed Skills"), S.diamondFilled, "cyan");
|
|
234
|
-
console.log(
|
|
234
|
+
console.log(`${c.gray(S.branch)} ${c.dim("Location: " + resolveScope())}`);
|
|
235
235
|
stepLine();
|
|
236
236
|
const skills = getInstalledSkills();
|
|
237
237
|
if (skills.length === 0) { step(c.dim("No skills installed."), S.diamond); stepLine(); return; }
|
|
238
238
|
if (JSON_OUTPUT) { outputJSON({ skills }); return; }
|
|
239
239
|
for (const s of skills) {
|
|
240
240
|
const icon = s.hasSkillMd ? c.green(S.check) : c.yellow(S.diamond);
|
|
241
|
-
console.log(
|
|
242
|
-
if (s.description && VERBOSE) console.log(
|
|
241
|
+
console.log(`${c.gray(S.branch)} ${icon} ${c.bold(s.name)} ${c.dim("v" + s.version)} ${c.dim("(" + formatBytes(s.size) + ")")}`);
|
|
242
|
+
if (s.description && VERBOSE) console.log(`${c.gray(S.branch)} ${c.dim(s.description.substring(0, 60))}`);
|
|
243
243
|
}
|
|
244
244
|
stepLine();
|
|
245
|
-
console.log(
|
|
245
|
+
console.log(`${c.gray(S.branch)} ${c.dim("Total: " + skills.length + " skill(s)")}`);
|
|
246
246
|
stepLine();
|
|
247
247
|
}
|
|
248
248
|
|
|
@@ -361,7 +361,7 @@ async function runInstall(spec) {
|
|
|
361
361
|
for (const sn of selectedSkills) {
|
|
362
362
|
const src = path.join(tmp, sn), dest = path.join(targetScope, sn);
|
|
363
363
|
if (fs.existsSync(dest)) fs.rmSync(dest, { recursive: true, force: true });
|
|
364
|
-
fs.
|
|
364
|
+
await fs.promises.cp(src, dest, { recursive: true });
|
|
365
365
|
const hash = merkleHash(dest);
|
|
366
366
|
fs.writeFileSync(path.join(dest, ".skill-source.json"), JSON.stringify({ repo: `${org}/${repo}`, skill: sn, ref: ref || null, checksum: hash, installedAt: new Date().toISOString() }, null, 2));
|
|
367
367
|
}
|
|
@@ -441,7 +441,7 @@ function runVerify() {
|
|
|
441
441
|
if (actual !== m.checksum) { step(`${name}: ${c.red("checksum mismatch")}`, S.cross, "red"); issues++; }
|
|
442
442
|
else step(`${name}: ${c.green("OK")}`, S.check, "green");
|
|
443
443
|
}
|
|
444
|
-
stepLine(); console.log(
|
|
444
|
+
stepLine(); console.log(`${c.gray(S.branch)} ${issues ? c.red(issues + " issue(s)") : c.green("All verified")}`); stepLine();
|
|
445
445
|
if (issues && STRICT) process.exit(1);
|
|
446
446
|
}
|
|
447
447
|
|
|
@@ -464,7 +464,7 @@ function runDoctor() {
|
|
|
464
464
|
} else if (lock && !lock.skills[name]) { step(`${name}: ${c.yellow("not in lock")}`, S.diamond, "yellow"); STRICT ? errors++ : warnings++; }
|
|
465
465
|
else step(`${name}: ${c.green("healthy")}`, S.check, "green");
|
|
466
466
|
}
|
|
467
|
-
stepLine(); console.log(
|
|
467
|
+
stepLine(); console.log(`${c.gray(S.branch)} Errors: ${errors}, Warnings: ${warnings}`); stepLine();
|
|
468
468
|
if (STRICT && errors) process.exit(1);
|
|
469
469
|
}
|
|
470
470
|
|
|
@@ -481,17 +481,17 @@ function runCache(sub) {
|
|
|
481
481
|
const rs = fs.existsSync(REGISTRY_CACHE) ? getDirSize(REGISTRY_CACHE) : 0;
|
|
482
482
|
const bs = fs.existsSync(BACKUP_DIR) ? getDirSize(BACKUP_DIR) : 0;
|
|
483
483
|
step(c.bold("Cache Info"), S.diamondFilled, "cyan");
|
|
484
|
-
console.log(
|
|
485
|
-
console.log(
|
|
486
|
-
console.log(
|
|
487
|
-
console.log(
|
|
484
|
+
console.log(`${c.gray(S.branch)} Location: ${CACHE_ROOT}`);
|
|
485
|
+
console.log(`${c.gray(S.branch)} Registries: ${formatBytes(rs)}`);
|
|
486
|
+
console.log(`${c.gray(S.branch)} Backups: ${formatBytes(bs)}`);
|
|
487
|
+
console.log(`${c.gray(S.branch)} Total: ${formatBytes(getDirSize(CACHE_ROOT))}`);
|
|
488
488
|
stepLine(); return;
|
|
489
489
|
}
|
|
490
490
|
if (sub === "backups") {
|
|
491
491
|
const backups = listBackups();
|
|
492
492
|
if (backups.length === 0) { step("No backups found", S.diamond); return; }
|
|
493
493
|
step(c.bold("Backups"), S.diamondFilled, "cyan"); stepLine();
|
|
494
|
-
backups.forEach(b => console.log(
|
|
494
|
+
backups.forEach(b => console.log(`${c.gray(S.branch)} ${b.name} (${formatBytes(b.size)})`));
|
|
495
495
|
stepLine(); return;
|
|
496
496
|
}
|
|
497
497
|
fatal(`Unknown cache subcommand: ${sub}`);
|
|
@@ -511,11 +511,11 @@ function runValidate(skillName) {
|
|
|
511
511
|
if (!fs.existsSync(smp)) errors.push("Missing SKILL.md");
|
|
512
512
|
else { const m = parseSkillMdFrontmatter(smp); if (!m.description) errors.push("Missing description"); else if (m.description.length < 50) warnings.push("Description too short"); }
|
|
513
513
|
const status = errors.length > 0 ? c.red("FAIL") : warnings.length > 0 ? c.yellow("WARN") : c.green("PASS");
|
|
514
|
-
console.log(
|
|
515
|
-
if (VERBOSE || errors.length || warnings.length) { errors.forEach(e => console.log(
|
|
514
|
+
console.log(`${c.gray(S.branch)} ${status} ${c.bold(skill.name)}`);
|
|
515
|
+
if (VERBOSE || errors.length || warnings.length) { errors.forEach(e => console.log(`${c.gray(S.branch)} ${c.red("ERROR: " + e)}`)); warnings.forEach(w => console.log(`${c.gray(S.branch)} ${c.yellow("WARN: " + w)}`)); }
|
|
516
516
|
totalErrors += errors.length; totalWarnings += warnings.length;
|
|
517
517
|
}
|
|
518
|
-
stepLine(); console.log(
|
|
518
|
+
stepLine(); console.log(`${c.gray(S.branch)} Total: ${skillsToValidate.length}, Errors: ${totalErrors}, Warnings: ${totalWarnings}`); stepLine();
|
|
519
519
|
if (STRICT && totalErrors > 0) process.exit(1);
|
|
520
520
|
}
|
|
521
521
|
|
|
@@ -524,20 +524,20 @@ function runAnalyze(skillName) {
|
|
|
524
524
|
const scope = resolveScope(), skillDir = path.join(scope, skillName);
|
|
525
525
|
if (!fs.existsSync(skillDir)) fatal(`Skill not found: ${skillName}`);
|
|
526
526
|
stepLine(); step(c.bold(`Skill Analysis: ${skillName}`), S.diamondFilled, "cyan");
|
|
527
|
-
console.log(
|
|
527
|
+
console.log(`${c.gray(S.branch)} ${c.dim("Path: " + skillDir)}`); stepLine();
|
|
528
528
|
const smp = path.join(skillDir, "SKILL.md");
|
|
529
529
|
if (fs.existsSync(smp)) {
|
|
530
530
|
const m = parseSkillMdFrontmatter(smp);
|
|
531
|
-
console.log(
|
|
532
|
-
console.log(
|
|
533
|
-
console.log(
|
|
534
|
-
if (m.tags) console.log(
|
|
531
|
+
console.log(`${c.gray(S.branch)} ${c.cyan("SKILL.md Frontmatter:")}`);
|
|
532
|
+
console.log(`${c.gray(S.branch)} Name: ${m.name || c.dim("(not set)")}`);
|
|
533
|
+
console.log(`${c.gray(S.branch)} Description: ${m.description ? m.description.substring(0, 60) : c.red("(MISSING)")}`);
|
|
534
|
+
if (m.tags) console.log(`${c.gray(S.branch)} Tags: ${m.tags.join(", ")}`);
|
|
535
535
|
stepLine();
|
|
536
536
|
}
|
|
537
537
|
const structure = detectSkillStructure(skillDir);
|
|
538
|
-
console.log(
|
|
538
|
+
console.log(`${c.gray(S.branch)} ${c.cyan("Structure:")}`);
|
|
539
539
|
const items = [["resources", structure.hasResources], ["examples", structure.hasExamples], ["scripts", structure.hasScripts], ["constitution", structure.hasConstitution], ["doctrines", structure.hasDoctrines]];
|
|
540
|
-
items.forEach(([n, has]) => console.log(
|
|
540
|
+
items.forEach(([n, has]) => console.log(`${c.gray(S.branch)} ${has ? c.green(S.check) : c.dim("○")} ${has ? c.bold(n) : c.dim(n)}`));
|
|
541
541
|
stepLine();
|
|
542
542
|
let score = 0;
|
|
543
543
|
if (fs.existsSync(smp)) score += 20;
|
|
@@ -548,7 +548,7 @@ function runAnalyze(skillName) {
|
|
|
548
548
|
if (fs.existsSync(path.join(skillDir, ".skill-source.json"))) score += 10;
|
|
549
549
|
if (structure.hasConstitution || structure.hasDoctrines) score += 15;
|
|
550
550
|
const scoreColor = score >= 80 ? c.green : score >= 50 ? c.yellow : c.red;
|
|
551
|
-
console.log(
|
|
551
|
+
console.log(`${c.gray(S.branch)} ${c.cyan("Antigravity Score:")} ${scoreColor(score + "/100")}`);
|
|
552
552
|
stepLine();
|
|
553
553
|
}
|
|
554
554
|
|
|
@@ -558,9 +558,9 @@ function runInfo(name) {
|
|
|
558
558
|
stepLine();
|
|
559
559
|
if (fs.existsSync(localDir)) {
|
|
560
560
|
step(`${c.bold(name)} ${c.green("(installed)")}`, S.diamondFilled, "cyan");
|
|
561
|
-
console.log(
|
|
561
|
+
console.log(`${c.gray(S.branch)} ${c.dim("Path: " + localDir)}`);
|
|
562
562
|
const mf = path.join(localDir, ".skill-source.json");
|
|
563
|
-
if (fs.existsSync(mf)) { const m = JSON.parse(fs.readFileSync(mf, "utf-8")); console.log(
|
|
563
|
+
if (fs.existsSync(mf)) { const m = JSON.parse(fs.readFileSync(mf, "utf-8")); console.log(`${c.gray(S.branch)} Repo: ${m.repo || "local"}`); console.log(`${c.gray(S.branch)} Installed: ${formatDate(m.installedAt)}`); }
|
|
564
564
|
stepLine(); return;
|
|
565
565
|
}
|
|
566
566
|
step(`Skill not installed: ${name}`, S.diamond, "yellow"); stepLine();
|
|
@@ -22,23 +22,23 @@ export async function run(skillName) {
|
|
|
22
22
|
|
|
23
23
|
stepLine();
|
|
24
24
|
step(c.bold(`Skill Analysis: ${skillName}`), S.diamondFilled, "cyan");
|
|
25
|
-
console.log(
|
|
25
|
+
console.log(`${c.gray(S.branch)} ${c.dim("Path: " + skillDir)}`);
|
|
26
26
|
stepLine();
|
|
27
27
|
|
|
28
28
|
// SKILL.md frontmatter
|
|
29
29
|
const smp = path.join(skillDir, "SKILL.md");
|
|
30
30
|
if (fs.existsSync(smp)) {
|
|
31
31
|
const m = parseSkillMdFrontmatter(smp);
|
|
32
|
-
console.log(
|
|
33
|
-
console.log(
|
|
34
|
-
console.log(
|
|
35
|
-
if (m.tags) console.log(
|
|
32
|
+
console.log(`${c.gray(S.branch)} ${c.cyan("SKILL.md Frontmatter:")}`);
|
|
33
|
+
console.log(`${c.gray(S.branch)} Name: ${m.name || c.dim("(not set)")}`);
|
|
34
|
+
console.log(`${c.gray(S.branch)} Description: ${m.description ? m.description.substring(0, 60) : c.red("(MISSING)")}`);
|
|
35
|
+
if (m.tags) console.log(`${c.gray(S.branch)} Tags: ${m.tags.join(", ")}`);
|
|
36
36
|
stepLine();
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
// Structure
|
|
40
40
|
const structure = detectSkillStructure(skillDir);
|
|
41
|
-
console.log(
|
|
41
|
+
console.log(`${c.gray(S.branch)} ${c.cyan("Structure:")}`);
|
|
42
42
|
|
|
43
43
|
const items = [
|
|
44
44
|
["resources", structure.hasResources],
|
|
@@ -49,7 +49,7 @@ export async function run(skillName) {
|
|
|
49
49
|
];
|
|
50
50
|
|
|
51
51
|
items.forEach(([n, has]) => {
|
|
52
|
-
console.log(
|
|
52
|
+
console.log(`${c.gray(S.branch)} ${has ? c.green(S.check) : c.dim("○")} ${has ? c.bold(n) : c.dim(n)}`);
|
|
53
53
|
});
|
|
54
54
|
|
|
55
55
|
stepLine();
|
|
@@ -65,6 +65,6 @@ export async function run(skillName) {
|
|
|
65
65
|
if (structure.hasConstitution || structure.hasDoctrines) score += 15;
|
|
66
66
|
|
|
67
67
|
const scoreColor = score >= 80 ? c.green : score >= 50 ? c.yellow : c.red;
|
|
68
|
-
console.log(
|
|
68
|
+
console.log(`${c.gray(S.branch)} ${c.cyan("Antigravity Score:")} ${scoreColor(score + "/100")}`);
|
|
69
69
|
stepLine();
|
|
70
70
|
}
|
|
@@ -39,10 +39,10 @@ export async function run(sub) {
|
|
|
39
39
|
const bs = fs.existsSync(BACKUP_DIR) ? getDirSize(BACKUP_DIR) : 0;
|
|
40
40
|
|
|
41
41
|
step(c.bold("Cache Info"), S.diamondFilled, "cyan");
|
|
42
|
-
console.log(
|
|
43
|
-
console.log(
|
|
44
|
-
console.log(
|
|
45
|
-
console.log(
|
|
42
|
+
console.log(`${c.gray(S.branch)} Location: ${CACHE_ROOT}`);
|
|
43
|
+
console.log(`${c.gray(S.branch)} Registries: ${formatBytes(rs)}`);
|
|
44
|
+
console.log(`${c.gray(S.branch)} Backups: ${formatBytes(bs)}`);
|
|
45
|
+
console.log(`${c.gray(S.branch)} Total: ${formatBytes(getDirSize(CACHE_ROOT))}`);
|
|
46
46
|
stepLine();
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
@@ -56,7 +56,7 @@ export async function run(sub) {
|
|
|
56
56
|
|
|
57
57
|
step(c.bold("Backups"), S.diamondFilled, "cyan");
|
|
58
58
|
stepLine();
|
|
59
|
-
backups.forEach(b => console.log(
|
|
59
|
+
backups.forEach(b => console.log(`${c.gray(S.branch)} ${b.name} (${formatBytes(b.size)})`));
|
|
60
60
|
stepLine();
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
@@ -68,7 +68,7 @@ export async function run() {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
stepLine();
|
|
71
|
-
console.log(
|
|
71
|
+
console.log(`${c.gray(S.branch)} Errors: ${errors}, Warnings: ${warnings}`);
|
|
72
72
|
stepLine();
|
|
73
73
|
|
|
74
74
|
if (STRICT && errors) process.exit(1);
|
package/bin/lib/commands/info.js
CHANGED
|
@@ -21,13 +21,13 @@ export async function run(name) {
|
|
|
21
21
|
|
|
22
22
|
if (fs.existsSync(localDir)) {
|
|
23
23
|
step(`${c.bold(name)} ${c.green("(installed)")}`, S.diamondFilled, "cyan");
|
|
24
|
-
console.log(
|
|
24
|
+
console.log(`${c.gray(S.branch)} ${c.dim("Path: " + localDir)}`);
|
|
25
25
|
|
|
26
26
|
const mf = path.join(localDir, ".skill-source.json");
|
|
27
27
|
if (fs.existsSync(mf)) {
|
|
28
28
|
const m = JSON.parse(fs.readFileSync(mf, "utf-8"));
|
|
29
|
-
console.log(
|
|
30
|
-
console.log(
|
|
29
|
+
console.log(`${c.gray(S.branch)} Repo: ${m.repo || "local"}`);
|
|
30
|
+
console.log(`${c.gray(S.branch)} Installed: ${formatDate(m.installedAt)}`);
|
|
31
31
|
}
|
|
32
32
|
stepLine();
|
|
33
33
|
return;
|
|
@@ -157,7 +157,7 @@ export async function run(spec) {
|
|
|
157
157
|
let boxContent = "";
|
|
158
158
|
for (const sn of selectedSkills) boxContent += `${c.cyan(sn)}\n ${c.dim(targetScope)}\n\n`;
|
|
159
159
|
const box = boxen(boxContent.trim(), { padding: 1, borderStyle: "round", borderColor: "gray", dimBorder: true });
|
|
160
|
-
box.split("\n").forEach(l => console.log(
|
|
160
|
+
box.split("\n").forEach(l => console.log(`${c.gray(S.branch)} ${l}`));
|
|
161
161
|
|
|
162
162
|
stepLine();
|
|
163
163
|
|
|
@@ -178,7 +178,7 @@ export async function run(spec) {
|
|
|
178
178
|
const dest = path.join(targetScope, sn);
|
|
179
179
|
|
|
180
180
|
if (fs.existsSync(dest)) fs.rmSync(dest, { recursive: true, force: true });
|
|
181
|
-
fs.
|
|
181
|
+
await fs.promises.cp(src, dest, { recursive: true });
|
|
182
182
|
|
|
183
183
|
const hash = merkleHash(dest);
|
|
184
184
|
fs.writeFileSync(path.join(dest, ".skill-source.json"), JSON.stringify({
|
package/bin/lib/commands/list.js
CHANGED
|
@@ -13,7 +13,7 @@ import { VERBOSE, JSON_OUTPUT } from "../config.js";
|
|
|
13
13
|
export async function run() {
|
|
14
14
|
stepLine();
|
|
15
15
|
step(c.bold("Installed Skills"), S.diamondFilled, "cyan");
|
|
16
|
-
console.log(
|
|
16
|
+
console.log(`${c.gray(S.branch)} ${c.dim("Location: " + resolveScope())}`);
|
|
17
17
|
stepLine();
|
|
18
18
|
|
|
19
19
|
const skills = getInstalledSkills();
|
|
@@ -31,13 +31,13 @@ export async function run() {
|
|
|
31
31
|
|
|
32
32
|
for (const s of skills) {
|
|
33
33
|
const icon = s.hasSkillMd ? c.green(S.check) : c.yellow(S.diamond);
|
|
34
|
-
console.log(
|
|
34
|
+
console.log(`${c.gray(S.branch)} ${icon} ${c.bold(s.name)} ${c.dim("v" + s.version)} ${c.dim("(" + formatBytes(s.size) + ")")}`);
|
|
35
35
|
if (s.description && VERBOSE) {
|
|
36
|
-
console.log(
|
|
36
|
+
console.log(`${c.gray(S.branch)} ${c.dim(s.description.substring(0, 60))}`);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
stepLine();
|
|
41
|
-
console.log(
|
|
41
|
+
console.log(`${c.gray(S.branch)} ${c.dim("Total: " + skills.length + " skill(s)")}`);
|
|
42
42
|
stepLine();
|
|
43
43
|
}
|
|
@@ -50,11 +50,11 @@ export async function run(skillName) {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
const status = errors.length > 0 ? c.red("FAIL") : warnings.length > 0 ? c.yellow("WARN") : c.green("PASS");
|
|
53
|
-
console.log(
|
|
53
|
+
console.log(`${c.gray(S.branch)} ${status} ${c.bold(skill.name)}`);
|
|
54
54
|
|
|
55
55
|
if (VERBOSE || errors.length || warnings.length) {
|
|
56
|
-
errors.forEach(e => console.log(
|
|
57
|
-
warnings.forEach(w => console.log(
|
|
56
|
+
errors.forEach(e => console.log(`${c.gray(S.branch)} ${c.red("ERROR: " + e)}`));
|
|
57
|
+
warnings.forEach(w => console.log(`${c.gray(S.branch)} ${c.yellow("WARN: " + w)}`));
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
totalErrors += errors.length;
|
|
@@ -62,7 +62,7 @@ export async function run(skillName) {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
stepLine();
|
|
65
|
-
console.log(
|
|
65
|
+
console.log(`${c.gray(S.branch)} Total: ${skillsToValidate.length}, Errors: ${totalErrors}, Warnings: ${totalWarnings}`);
|
|
66
66
|
stepLine();
|
|
67
67
|
|
|
68
68
|
if (STRICT && totalErrors > 0) process.exit(1);
|
|
@@ -49,7 +49,7 @@ export async function run() {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
stepLine();
|
|
52
|
-
console.log(
|
|
52
|
+
console.log(`${c.gray(S.branch)} ${issues ? c.red(issues + " issue(s)") : c.green("All verified")}`);
|
|
53
53
|
stepLine();
|
|
54
54
|
|
|
55
55
|
if (issues && STRICT) process.exit(1);
|
package/bin/lib/ui.js
CHANGED
|
@@ -80,14 +80,14 @@ export const c = {
|
|
|
80
80
|
*/
|
|
81
81
|
export function step(text, icon = S.diamond, color = "gray") {
|
|
82
82
|
const colorFn = c[color] || c.gray;
|
|
83
|
-
console.log(
|
|
83
|
+
console.log(`${c.gray(S.branch)} ${colorFn(icon)} ${text}`);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
/**
|
|
87
87
|
* Print empty branch line
|
|
88
88
|
*/
|
|
89
89
|
export function stepLine() {
|
|
90
|
-
console.log(
|
|
90
|
+
console.log(`${c.gray(S.branch)}`);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
/**
|
|
@@ -95,7 +95,7 @@ export function stepLine() {
|
|
|
95
95
|
* @param {string} msg - Error message
|
|
96
96
|
*/
|
|
97
97
|
export function fatal(msg) {
|
|
98
|
-
console.log(
|
|
98
|
+
console.log(`${c.gray(S.branch)} ${c.red(S.cross)} ${c.red(msg)}`);
|
|
99
99
|
process.exit(1);
|
|
100
100
|
}
|
|
101
101
|
|
|
@@ -104,7 +104,7 @@ export function fatal(msg) {
|
|
|
104
104
|
* @param {string} msg - Success message
|
|
105
105
|
*/
|
|
106
106
|
export function success(msg) {
|
|
107
|
-
console.log(
|
|
107
|
+
console.log(`${c.gray(S.branch)} ${c.green(S.check)} ${c.green(msg)}`);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "install-agent-skill",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
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": "DataGuruIn <contact@dataguruin.com>",
|