skillwiki 0.2.2 → 0.2.4
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/dist/auto-update-bg.js +2 -2
- package/dist/cli.js +40 -22
- package/package.json +1 -1
- package/skills/.claude-plugin/plugin.json +1 -1
- package/skills/bin/skillwiki +1 -1
- package/skills/package.json +1 -1
package/dist/auto-update-bg.js
CHANGED
|
@@ -14,7 +14,7 @@ if (!home || !currentVersion) process.exit(0);
|
|
|
14
14
|
var cacheFile = join(home, ".skillwiki", ".update-cache.json");
|
|
15
15
|
setTimeout(() => process.exit(0), 3e4);
|
|
16
16
|
try {
|
|
17
|
-
const latest = execSync("npm view skillwiki@
|
|
17
|
+
const latest = execSync("npm view skillwiki@latest version", {
|
|
18
18
|
encoding: "utf8",
|
|
19
19
|
timeout: 15e3
|
|
20
20
|
}).trim();
|
|
@@ -25,7 +25,7 @@ try {
|
|
|
25
25
|
currentVersion
|
|
26
26
|
};
|
|
27
27
|
if (semverGt(latest, currentVersion)) {
|
|
28
|
-
execSync("npm install -g skillwiki@
|
|
28
|
+
execSync("npm install -g skillwiki@latest", {
|
|
29
29
|
stdio: "ignore",
|
|
30
30
|
timeout: 6e4
|
|
31
31
|
});
|
package/dist/cli.js
CHANGED
|
@@ -2966,21 +2966,35 @@ function checkSkillsInstalled(home, cwd) {
|
|
|
2966
2966
|
function checkDuplicateSkills(home) {
|
|
2967
2967
|
const plugin = findPlugin(home);
|
|
2968
2968
|
const skillsDir = join21(home, ".claude", "skills");
|
|
2969
|
-
|
|
2969
|
+
const agentSkillDirs = [
|
|
2970
|
+
{ label: "~/.codex/skills/", path: join21(home, ".codex", "skills") },
|
|
2971
|
+
{ label: "~/.agents/skills/", path: join21(home, ".agents", "skills") }
|
|
2972
|
+
];
|
|
2973
|
+
if (!plugin) {
|
|
2970
2974
|
return check("pass", "skills_duplicate", "Skills not duplicated", "Single install channel");
|
|
2971
2975
|
}
|
|
2972
2976
|
const pluginSkills = findSkillNames(plugin.installPath);
|
|
2973
2977
|
const cliSkills = findSkillNames(skillsDir);
|
|
2974
|
-
const
|
|
2975
|
-
|
|
2976
|
-
|
|
2978
|
+
const cliDuplicates = cliSkills.filter((name) => pluginSkills.includes(name));
|
|
2979
|
+
const agentDuplicates = [];
|
|
2980
|
+
for (const { label, path } of agentSkillDirs) {
|
|
2981
|
+
const overlap = findSkillNames(path).filter((name) => pluginSkills.includes(name));
|
|
2982
|
+
if (overlap.length > 0) {
|
|
2983
|
+
agentDuplicates.push({ dir: label, names: overlap });
|
|
2984
|
+
}
|
|
2977
2985
|
}
|
|
2978
|
-
|
|
2979
|
-
"
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2986
|
+
if (cliDuplicates.length === 0 && agentDuplicates.length === 0) {
|
|
2987
|
+
return check("pass", "skills_duplicate", "Skills not duplicated", "No overlap between plugin and other channels");
|
|
2988
|
+
}
|
|
2989
|
+
const parts = [];
|
|
2990
|
+
if (cliDuplicates.length > 0) {
|
|
2991
|
+
parts.push(`${cliDuplicates.length} skill(s) in both plugin and ~/.claude/skills/ \u2014 remove CLI copies: rm -r ~/.claude/skills/{${cliDuplicates.slice(0, 3).join(",")}${cliDuplicates.length > 3 ? ",\u2026" : ""}}`);
|
|
2992
|
+
}
|
|
2993
|
+
for (const { dir, names } of agentDuplicates) {
|
|
2994
|
+
parts.push(`${names.length} stale skill(s) in ${dir} \u2014 plugin provides: ${names.slice(0, 3).join(", ")}${names.length > 3 ? ", \u2026" : ""}`);
|
|
2995
|
+
}
|
|
2996
|
+
const status = cliDuplicates.length > 0 ? "warn" : "info";
|
|
2997
|
+
return check(status, "skills_duplicate", "Skills not duplicated", parts.join("; "));
|
|
2984
2998
|
}
|
|
2985
2999
|
function checkNpmUpdate(home, currentVersion) {
|
|
2986
3000
|
const { hasUpdate, latest } = latestFromCache(home, currentVersion);
|
|
@@ -3001,7 +3015,7 @@ function checkPluginVersionDrift(home, currentVersion) {
|
|
|
3001
3015
|
if (pluginVersion === currentVersion) {
|
|
3002
3016
|
return check("pass", "plugin_version_drift", "Plugin/CLI version", `Both at v${currentVersion}`);
|
|
3003
3017
|
}
|
|
3004
|
-
const updateCmd = semverGt(pluginVersion, currentVersion) ? "npm install -g skillwiki@
|
|
3018
|
+
const updateCmd = semverGt(pluginVersion, currentVersion) ? "npm install -g skillwiki@latest" : "claude plugin update skillwiki@llm-wiki";
|
|
3005
3019
|
return check(
|
|
3006
3020
|
"warn",
|
|
3007
3021
|
"plugin_version_drift",
|
|
@@ -3099,7 +3113,7 @@ function checkDotStoreClean(resolvedPath) {
|
|
|
3099
3113
|
if (found.length === 0) {
|
|
3100
3114
|
return check("pass", "dsstore_clean", "No .DS_Store in raw/", "No .DS_Store files found");
|
|
3101
3115
|
}
|
|
3102
|
-
return check("
|
|
3116
|
+
return check("info", "dsstore_clean", "No .DS_Store in raw/", `${found.length} .DS_Store file(s) found \u2014 remove with: find ${rawDir} -name .DS_Store -delete`);
|
|
3103
3117
|
}
|
|
3104
3118
|
function checkSyncLastPush(resolvedPath) {
|
|
3105
3119
|
if (resolvedPath === void 0) {
|
|
@@ -3195,18 +3209,22 @@ async function runDoctor(input) {
|
|
|
3195
3209
|
checks.push(checkPluginVersionDrift(input.home, input.currentVersion));
|
|
3196
3210
|
const summary = {
|
|
3197
3211
|
pass: checks.filter((c) => c.status === "pass").length,
|
|
3212
|
+
info: checks.filter((c) => c.status === "info").length,
|
|
3198
3213
|
warn: checks.filter((c) => c.status === "warn").length,
|
|
3199
3214
|
error: checks.filter((c) => c.status === "error").length
|
|
3200
3215
|
};
|
|
3201
3216
|
const exitCode = summary.error > 0 ? ExitCode.DOCTOR_HAS_ERRORS : summary.warn > 0 ? ExitCode.DOCTOR_HAS_WARNINGS : ExitCode.OK;
|
|
3202
|
-
const statusIcon = { pass: "\u2713", warn: "\u26A0", error: "\u2717" };
|
|
3217
|
+
const statusIcon = { pass: "\u2713", info: "i", warn: "\u26A0", error: "\u2717" };
|
|
3203
3218
|
const lines = checks.map((c) => {
|
|
3204
3219
|
const icon = statusIcon[c.status];
|
|
3205
3220
|
const padded = c.label.padEnd(24);
|
|
3206
3221
|
return ` ${icon} ${padded} ${c.detail}`;
|
|
3207
3222
|
});
|
|
3208
3223
|
lines.push("");
|
|
3209
|
-
|
|
3224
|
+
const summaryParts = [`${summary.pass} pass`];
|
|
3225
|
+
if (summary.info > 0) summaryParts.push(`${summary.info} info`);
|
|
3226
|
+
summaryParts.push(`${summary.warn} warn`, `${summary.error} error`);
|
|
3227
|
+
lines.push(summaryParts.join(" \xB7 "));
|
|
3210
3228
|
const humanHint = lines.join("\n");
|
|
3211
3229
|
return { exitCode, result: ok({ checks, summary, humanHint }) };
|
|
3212
3230
|
}
|
|
@@ -3649,7 +3667,7 @@ async function runUpdate(input) {
|
|
|
3649
3667
|
readFileSync6(new URL("../../package.json", import.meta.url), "utf8")
|
|
3650
3668
|
);
|
|
3651
3669
|
const currentVersion = pkg2.version;
|
|
3652
|
-
const tag = input.distTag ?? "
|
|
3670
|
+
const tag = input.distTag ?? "latest";
|
|
3653
3671
|
const target = join23(input.home, ".claude", "skills");
|
|
3654
3672
|
let latest;
|
|
3655
3673
|
try {
|
|
@@ -3743,7 +3761,7 @@ async function runSelfUpdate(input) {
|
|
|
3743
3761
|
} else {
|
|
3744
3762
|
source = "npm";
|
|
3745
3763
|
try {
|
|
3746
|
-
availableVersion = execSync3("npm view skillwiki@
|
|
3764
|
+
availableVersion = execSync3("npm view skillwiki@latest version", {
|
|
3747
3765
|
encoding: "utf8",
|
|
3748
3766
|
timeout: 15e3
|
|
3749
3767
|
}).trim();
|
|
@@ -3813,7 +3831,7 @@ async function runSelfUpdate(input) {
|
|
|
3813
3831
|
}
|
|
3814
3832
|
let latestVersion;
|
|
3815
3833
|
try {
|
|
3816
|
-
latestVersion = execSync3("npm view skillwiki@
|
|
3834
|
+
latestVersion = execSync3("npm view skillwiki@latest version", {
|
|
3817
3835
|
encoding: "utf8",
|
|
3818
3836
|
timeout: 15e3
|
|
3819
3837
|
}).trim();
|
|
@@ -3831,12 +3849,12 @@ async function runSelfUpdate(input) {
|
|
|
3831
3849
|
currentVersion,
|
|
3832
3850
|
availableVersion: latestVersion,
|
|
3833
3851
|
updateAvailable: false,
|
|
3834
|
-
humanHint: `Already on latest
|
|
3852
|
+
humanHint: `Already on latest: v${currentVersion}`
|
|
3835
3853
|
})
|
|
3836
3854
|
};
|
|
3837
3855
|
}
|
|
3838
3856
|
try {
|
|
3839
|
-
execSync3("npm install -g skillwiki@
|
|
3857
|
+
execSync3("npm install -g skillwiki@latest", {
|
|
3840
3858
|
stdio: "pipe",
|
|
3841
3859
|
timeout: 6e4
|
|
3842
3860
|
});
|
|
@@ -3854,7 +3872,7 @@ async function runSelfUpdate(input) {
|
|
|
3854
3872
|
availableVersion: latestVersion,
|
|
3855
3873
|
updateAvailable: true,
|
|
3856
3874
|
newVersion: latestVersion,
|
|
3857
|
-
humanHint: `Updated skillwiki ${currentVersion} \u2192 ${latestVersion} via npm@
|
|
3875
|
+
humanHint: `Updated skillwiki ${currentVersion} \u2192 ${latestVersion} via npm@latest`
|
|
3858
3876
|
})
|
|
3859
3877
|
};
|
|
3860
3878
|
}
|
|
@@ -5955,11 +5973,11 @@ program.command("frontmatter-fix [vault]").description("fix common frontmatter i
|
|
|
5955
5973
|
if (!v.ok) emit({ exitCode: v.exitCode, result: v.payload });
|
|
5956
5974
|
else emit(await runFrontmatterFix({ vault: v.vault, dryRun: !!opts.dryRun }), v.vault);
|
|
5957
5975
|
});
|
|
5958
|
-
program.command("update").description("update skillwiki CLI to the latest version").option("--tag <tag>", "npm dist-tag", "
|
|
5976
|
+
program.command("update").description("update skillwiki CLI to the latest version").option("--tag <tag>", "npm dist-tag", "latest").action(async (opts) => emit(await runUpdate({
|
|
5959
5977
|
home: process.env.HOME ?? "",
|
|
5960
5978
|
distTag: opts.tag
|
|
5961
5979
|
})));
|
|
5962
|
-
program.command("self-update").description("update skillwiki CLI from local source or npm@
|
|
5980
|
+
program.command("self-update").description("update skillwiki CLI from local source or npm@latest").option("--check", "check for updates without installing", false).action(async (opts) => emit(await runSelfUpdate({
|
|
5963
5981
|
home: process.env.HOME ?? "",
|
|
5964
5982
|
check: !!opts.check
|
|
5965
5983
|
})));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skillwiki",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"skills": "./",
|
|
5
5
|
"description": "Project-aware Karpathy-style knowledge base for Claude Code: 18 prompt-only skills (wiki-*, proj-*, using-skillwiki) backed by the deterministic `skillwiki` CLI.",
|
|
6
6
|
"author": {
|
package/skills/bin/skillwiki
CHANGED