patchcord 0.5.102 → 0.5.103

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.
Files changed (2) hide show
  1. package/bin/patchcord.mjs +18 -17
  2. package/package.json +1 -1
package/bin/patchcord.mjs CHANGED
@@ -1458,21 +1458,7 @@ if (!cmd || cmd === "install" || cmd === "agent" || cmd?.startsWith("--")) {
1458
1458
  // Kimi CLI
1459
1459
  const hasKimi = run("which kimi");
1460
1460
  if (hasKimi) {
1461
- // Clean up old skill names: the combined skill AND the colon-named flow
1462
- // skills (patchcord:inbox …). Kimi requires skill names to be
1463
- // lowercase/digits/hyphens only — a colon kept them out of /flow:, so they
1464
- // showed only under /skill:. Renamed to patchcord-inbox etc.
1465
- for (const stale of ["patchcord", "patchcord-wait", "patchcord:inbox", "patchcord:wait", "patchcord:subscribe"]) {
1466
- const d = join(HOME, ".kimi", "skills", stale);
1467
- if (existsSync(d)) { try { rmSync(d, { recursive: true, force: true }); } catch {} }
1468
- }
1469
-
1470
- // Install three focused Kimi flow skills (hyphen names → /flow:patchcord-inbox)
1471
- const kimiInboxDir = join(HOME, ".kimi", "skills", "patchcord-inbox");
1472
- const kimiWaitDir = join(HOME, ".kimi", "skills", "patchcord-wait");
1473
- const kimiSubDir = join(HOME, ".kimi", "skills", "patchcord-subscribe");
1474
1461
  let kimiChanged = false;
1475
-
1476
1462
  const installKimiSkill = (destDir, relSrc) => {
1477
1463
  const src = join(pluginRoot, "per-project-skills", "kimi", relSrc, "SKILL.md");
1478
1464
  const dest = join(destDir, "SKILL.md");
@@ -1481,9 +1467,24 @@ if (!cmd || cmd === "install" || cmd === "agent" || cmd?.startsWith("--")) {
1481
1467
  copyFileSync(src, dest);
1482
1468
  return changed;
1483
1469
  };
1484
- kimiChanged = installKimiSkill(kimiInboxDir, "inbox") || kimiChanged;
1485
- kimiChanged = installKimiSkill(kimiWaitDir, "wait") || kimiChanged;
1486
- kimiChanged = installKimiSkill(kimiSubDir, "subscribe") || kimiChanged;
1470
+ // Kimi CLI (Python) reads ~/.kimi/skills; Kimi Code (Node) reads
1471
+ // ~/.kimi-code/skills. Install into BOTH user dirs that exist — a global
1472
+ // `npx patchcord` must fix whichever Kimi the user runs. Clean up the old
1473
+ // combined skill AND colon-named flow skills (Kimi requires names to be
1474
+ // lowercase/digits/hyphens only — a colon kept them out of /flow:, showing
1475
+ // them only under /skill:). Renamed to patchcord-inbox etc.
1476
+ const kimiCodeHome = process.env.KIMI_CODE_HOME || join(HOME, ".kimi-code");
1477
+ const kimiSkillRoots = [join(HOME, ".kimi", "skills")];
1478
+ if (existsSync(kimiCodeHome)) kimiSkillRoots.push(join(kimiCodeHome, "skills"));
1479
+ for (const root of kimiSkillRoots) {
1480
+ for (const stale of ["patchcord", "patchcord-wait", "patchcord:inbox", "patchcord:wait", "patchcord:subscribe"]) {
1481
+ const d = join(root, stale);
1482
+ if (existsSync(d)) { try { rmSync(d, { recursive: true, force: true }); } catch {} }
1483
+ }
1484
+ kimiChanged = installKimiSkill(join(root, "patchcord-inbox"), "inbox") || kimiChanged;
1485
+ kimiChanged = installKimiSkill(join(root, "patchcord-wait"), "wait") || kimiChanged;
1486
+ kimiChanged = installKimiSkill(join(root, "patchcord-subscribe"), "subscribe") || kimiChanged;
1487
+ }
1487
1488
 
1488
1489
  // Install/update stop hook — fires after each Kimi turn to check inbox
1489
1490
  let hookChanged = false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "patchcord",
3
- "version": "0.5.102",
3
+ "version": "0.5.103",
4
4
  "description": "Cross-machine agent messaging for Claude Code and Codex",
5
5
  "author": "ppravdin",
6
6
  "license": "MIT",