portable-agent-layer 0.91.3 → 0.91.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "portable-agent-layer",
3
- "version": "0.91.3",
3
+ "version": "0.91.4",
4
4
  "description": "PAL — Portable Agent Layer: persistent personal context for AI coding assistants",
5
5
  "type": "module",
6
6
  "bin": {
@@ -989,8 +989,11 @@ export function removePalContextFiles(dir: string, suffix: string): string[] {
989
989
  return removed;
990
990
  }
991
991
 
992
- /** Remove PAL skill symlinks from ~/.pal/skills/ and ~/.claude/skills/ */
993
- export function removeSkills(claudeSkillsDir: string): string[] {
992
+ /**
993
+ * Remove one agent's PAL skill links. ~/.pal/skills/<name> and ~/.agents/skills
994
+ * are shared by every installed agent, so a per-agent uninstall leaves them.
995
+ */
996
+ export function removeSkills(agentSkillsDir: string): string[] {
994
997
  const skillsDir = assets.skills();
995
998
  if (!existsSync(skillsDir)) return [];
996
999
 
@@ -998,24 +1001,15 @@ export function removeSkills(claudeSkillsDir: string): string[] {
998
1001
  for (const name of readdirSync(skillsDir)) {
999
1002
  if (!existsSync(resolve(skillsDir, name, "SKILL.md"))) continue;
1000
1003
 
1001
- for (const link of [resolve(palSkillsDir(), name), resolve(claudeSkillsDir, name)]) {
1002
- try {
1003
- unlinkSync(link);
1004
- } catch {
1005
- /* already gone */
1006
- }
1004
+ try {
1005
+ unlinkSync(resolve(agentSkillsDir, name));
1006
+ } catch {
1007
+ /* already gone */
1007
1008
  }
1008
1009
  removed.push(name);
1009
1010
  log.detail(`Removed skill: ${name}`);
1010
1011
  }
1011
1012
 
1012
- // Remove ~/.agents/skills/ → ~/.pal/skills/ symlink
1013
- try {
1014
- unlinkSync(resolve(platform.agentsDir(), "skills"));
1015
- } catch {
1016
- /* gone */
1017
- }
1018
-
1019
1013
  return removed;
1020
1014
  }
1021
1015
 
@@ -7,7 +7,7 @@ import { existsSync, readFileSync, statSync, unlinkSync, writeFileSync } from "n
7
7
  import { resolve } from "node:path";
8
8
  import { platform } from "../../hooks/lib/paths";
9
9
  import { getSemiStaticSources } from "../../hooks/lib/semi-static";
10
- import { log, removeAgentsFromOpencode, removePalDocs, removeSkills } from "../lib";
10
+ import { log, removeAgentsFromOpencode, removePalDocs } from "../lib";
11
11
  import { palHomePattern, removePalHomeAllow } from "./permission";
12
12
 
13
13
  const OC_GLOBAL_DIR = platform.opencodeDir() || "";
@@ -28,11 +28,6 @@ try {
28
28
  log.info("No PAL plugin found");
29
29
  }
30
30
 
31
- // --- Remove skills ---
32
- const removed = removeSkills(resolve(PAL_CLAUDE_DIR, "skills"));
33
- if (removed.length > 0)
34
- log.success(`Removed ${removed.length} skill(s): ${removed.join(", ")}`);
35
-
36
31
  // --- Remove agents ---
37
32
  const removedAgents = removeAgentsFromOpencode(resolve(OC_GLOBAL_DIR, "agents"));
38
33
  if (removedAgents.length > 0)