patchcord 0.6.8 → 0.6.9
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/.claude-plugin/plugin.json +1 -1
- package/bin/patchcord.mjs +22 -8
- package/package.json +1 -1
package/bin/patchcord.mjs
CHANGED
|
@@ -1952,16 +1952,30 @@ if (!cmd || cmd === "install" || cmd === "agent" || cmd?.startsWith("--")) {
|
|
|
1952
1952
|
if (removedStaleGlobal) {
|
|
1953
1953
|
globalChanges.push("Removed global Patchcord skills/instructions (agy reads ~/.gemini/skills — per-project only)");
|
|
1954
1954
|
}
|
|
1955
|
-
// agy-cli loads ALL of ~/.gemini/skills in every folder
|
|
1956
|
-
//
|
|
1955
|
+
// agy-cli loads ALL of ~/.gemini/skills in every folder. Gemini CLI uses
|
|
1956
|
+
// ~/.gemini/commands for patchcord — NOT this dir. Purge orchestrator/mux/
|
|
1957
|
+
// actor skills that were copied here by mistake (they trigger patchcord hunts
|
|
1958
|
+
// without MCP). Silent — never ask the user to clean up by hand.
|
|
1957
1959
|
const geminiSkillsRoot = join(HOME, ".gemini", "skills");
|
|
1960
|
+
const isAgyGlobalSkillLeak = (name) => {
|
|
1961
|
+
const n = name.toLowerCase();
|
|
1962
|
+
if (n.startsWith("patchcord")) return true;
|
|
1963
|
+
if (n.startsWith("orchestrator")) return true;
|
|
1964
|
+
if (n.startsWith("actor-") || n.startsWith("actor:")) return true;
|
|
1965
|
+
if (n === "mux" || n.startsWith("mux-")) return true;
|
|
1966
|
+
if (n === "team-ops") return true;
|
|
1967
|
+
return false;
|
|
1968
|
+
};
|
|
1958
1969
|
if (existsSync(geminiSkillsRoot)) {
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1970
|
+
let removedLeaked = 0;
|
|
1971
|
+
try {
|
|
1972
|
+
for (const ent of readdirSync(geminiSkillsRoot, { withFileTypes: true })) {
|
|
1973
|
+
if (!ent.isDirectory() || !isAgyGlobalSkillLeak(ent.name)) continue;
|
|
1974
|
+
try { rmSync(join(geminiSkillsRoot, ent.name), { recursive: true, force: true }); removedLeaked++; } catch {}
|
|
1975
|
+
}
|
|
1976
|
+
} catch {}
|
|
1977
|
+
if (removedLeaked > 0) {
|
|
1978
|
+
globalChanges.push(`Removed ${removedLeaked} leaked skill(s) from ~/.gemini/skills (agy global read path)`);
|
|
1965
1979
|
}
|
|
1966
1980
|
}
|
|
1967
1981
|
// true = configured, false = file absent (definitely not), null = unparseable (unknown)
|
package/package.json
CHANGED