skilllib 1.11.5 → 1.11.6
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.
|
@@ -2034,6 +2034,9 @@ function entriesOf(dirs, name) {
|
|
|
2034
2034
|
return [{ dir, path, link: link2, real, hash: null }];
|
|
2035
2035
|
});
|
|
2036
2036
|
}
|
|
2037
|
+
function uniqueReals(entries) {
|
|
2038
|
+
return entries.filter((e, i, all) => !e.link && all.findIndex((o) => !o.link && o.real === e.real) === i);
|
|
2039
|
+
}
|
|
2037
2040
|
function hashReals(reals) {
|
|
2038
2041
|
if (reals.length > 1) for (const r of reals) r.hash = treeHash(r.path);
|
|
2039
2042
|
}
|
|
@@ -2074,15 +2077,16 @@ function planProjectTidy(root, { keep = {}, enabled = enabledHarnesses() } = {})
|
|
|
2074
2077
|
let git2;
|
|
2075
2078
|
const skillsLock = projectSkillsLock(root);
|
|
2076
2079
|
const dirs = repoTidyDirs(root).map(abs);
|
|
2080
|
+
const realRoot = realpathOrNull(root) ?? root;
|
|
2077
2081
|
for (const name of namesIn(dirs)) {
|
|
2078
2082
|
const entries = entriesOf(dirs, name);
|
|
2079
|
-
const external = entries.find((e) => e.link && e.real && !(e.real + sep6).startsWith(
|
|
2083
|
+
const external = entries.find((e) => e.link && e.real && !(e.real + sep6).startsWith(realRoot + sep6));
|
|
2080
2084
|
if (external) {
|
|
2081
2085
|
const differs = entries.some((e) => e !== external && e.real && existsSync11(join12(e.real, "SKILL.md")) && treeHash(e.real) !== treeHash(external.real));
|
|
2082
2086
|
report.skipped.push({ name, reason: `${rel(external.path)} links outside the repo`, ...differs ? { differs } : {} });
|
|
2083
2087
|
continue;
|
|
2084
2088
|
}
|
|
2085
|
-
const reals = entries
|
|
2089
|
+
const reals = uniqueReals(entries);
|
|
2086
2090
|
if (reals.length === 0) continue;
|
|
2087
2091
|
hashReals(reals);
|
|
2088
2092
|
const dep = skills[name];
|
|
@@ -2146,7 +2150,7 @@ function planGlobalTidy({ keep = {}, enabled = enabledHarnesses() } = {}) {
|
|
|
2146
2150
|
report.skipped.push({ name, reason: "a Claude Code plugin kept in a skills folder" });
|
|
2147
2151
|
continue;
|
|
2148
2152
|
}
|
|
2149
|
-
const reals = entries
|
|
2153
|
+
const reals = uniqueReals(entries);
|
|
2150
2154
|
if (reals.length < 2) continue;
|
|
2151
2155
|
hashReals(reals);
|
|
2152
2156
|
const kept = reals.find((r) => r.dir === keep[name]);
|
package/dist/index.js
CHANGED
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
unhide,
|
|
32
32
|
update,
|
|
33
33
|
usage
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-TXQQQ73J.js";
|
|
35
35
|
|
|
36
36
|
// src/index.ts
|
|
37
37
|
import { readFileSync } from "fs";
|
|
@@ -138,10 +138,10 @@ async function main() {
|
|
|
138
138
|
if (!["--version", "-v", "version", "help", "--help", "-h"].includes(command ?? "")) refreshAgentSkill();
|
|
139
139
|
switch (command) {
|
|
140
140
|
case void 0:
|
|
141
|
-
return process.stdin.isTTY && process.stdout.isTTY ? (await import("./tui-
|
|
141
|
+
return process.stdin.isTTY && process.stdout.isTTY ? (await import("./tui-OS2VUBGF.js")).tui() : overview(args);
|
|
142
142
|
case "ui":
|
|
143
143
|
if (!process.stdin.isTTY || !process.stdout.isTTY) throw new Error("`skilllib ui` needs an interactive terminal. Agents and scripts: use `skilllib status --json`.");
|
|
144
|
-
return (await import("./tui-
|
|
144
|
+
return (await import("./tui-OS2VUBGF.js")).tui();
|
|
145
145
|
case "status":
|
|
146
146
|
return status(args);
|
|
147
147
|
case "add":
|
|
@@ -84,7 +84,7 @@ import {
|
|
|
84
84
|
versionHistory,
|
|
85
85
|
visibleProjects,
|
|
86
86
|
withoutForceHint
|
|
87
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-TXQQQ73J.js";
|
|
88
88
|
|
|
89
89
|
// src/tui/index.tsx
|
|
90
90
|
import { render } from "ink";
|
|
@@ -1743,7 +1743,7 @@ function App({ initial, reload, loadUsage: loadUsage2 }) {
|
|
|
1743
1743
|
if (isNameChar(input, key)) return setModal({ ...m, query: m.query + input.toLowerCase(), cursor: 0 });
|
|
1744
1744
|
}
|
|
1745
1745
|
}
|
|
1746
|
-
const toastLines = toast && modal?.kind !== "confirm" ? wrap(toast, termCols - 2, 3).map((l) => " " + l) : [];
|
|
1746
|
+
const toastLines = toast && modal?.kind !== "confirm" ? wrap(toast, termCols - 2, Math.max(3, Math.floor(termRows / 3))).map((l) => " " + l) : [];
|
|
1747
1747
|
const bottomH = Math.max(1, toastLines.length);
|
|
1748
1748
|
const confirmLines = modal?.kind === "confirm" ? wrap(modal.fix.preview, columns - 6, 6) : [];
|
|
1749
1749
|
const confirmH = modal?.kind === "confirm" ? confirmLines.length + 2 : 0;
|
|
@@ -1786,10 +1786,14 @@ function App({ initial, reload, loadUsage: loadUsage2 }) {
|
|
|
1786
1786
|
}), here: onHelp }
|
|
1787
1787
|
];
|
|
1788
1788
|
const sideAt = sideRows.findIndex((r) => r.here);
|
|
1789
|
+
const brand = " \u25C6 skilllib ";
|
|
1790
|
+
const tabsWidth = (short) => PLACES.reduce((n, [p, label]) => n + (short && p === "library" ? 6 : label.length) + 2 + (p === "health" && healthCount ? ` ${healthCount}`.length : 0), 0);
|
|
1791
|
+
const showBrand = brand.length + tabsWidth(false) <= columns;
|
|
1792
|
+
const shortTabs = !showBrand && tabsWidth(false) > columns;
|
|
1789
1793
|
const topBar = /* @__PURE__ */ jsx2(Box2, { height: 1, width: columns, justifyContent: "space-between", children: /* @__PURE__ */ jsxs2(Box2, { children: [
|
|
1790
|
-
/* @__PURE__ */ jsx2(Text2, { color: color.accent, bold: true, children:
|
|
1794
|
+
/* @__PURE__ */ jsx2(Text2, { color: color.accent, bold: true, children: showBrand ? brand : "" }),
|
|
1791
1795
|
PLACES.map(([p, label]) => /* @__PURE__ */ jsxs2(Text2, { backgroundColor: place === p ? color.accent : void 0, color: place === p ? "#0B1020" : color.muted, bold: place === p, children: [
|
|
1792
|
-
` ${label}`,
|
|
1796
|
+
` ${shortTabs && p === "library" ? "Skills" : label}`,
|
|
1793
1797
|
/* @__PURE__ */ jsx2(Text2, { color: place === p ? "#0B1020" : healthWorst ? SEV[healthWorst.severity].color : color.green, children: p === "health" && healthCount ? ` ${healthCount}` : "" }),
|
|
1794
1798
|
" "
|
|
1795
1799
|
] }, p))
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skilllib",
|
|
3
|
-
"version": "1.11.
|
|
3
|
+
"version": "1.11.6",
|
|
4
4
|
"description": "Manage your agent skills like dependencies. One library for all your skills; each repo gets only the ones it needs, and every agent can see them. Works with Claude Code, Cursor, Codex, Zed and Grok.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-skills",
|