From 6c5f89a4fd8759c7fa841b92629f7ead83247232 Mon Sep 17 00:00:00 2001 From: Tibsfox Date: Thu, 2 Apr 2026 05:55:42 -0700 Subject: [PATCH] fix(install): preserve dev-preferences.md in Claude Code legacy cleanup path After #1540 migrated Claude Code to skills/ format, the uninstall added a legacy commands/gsd/ cleanup that wiped the directory without checking for user files. Add preserve logic to the legacy cleanup path matching what Gemini's commands/gsd/ path already has. Co-Authored-By: Claude Opus 4.6 (1M context) --- bin/install.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/bin/install.js b/bin/install.js index ed0d61a7a..a19f3d27d 100755 --- a/bin/install.js +++ b/bin/install.js @@ -3692,9 +3692,23 @@ function uninstall(isGlobal, runtime = 'claude') { // Also clean up legacy commands/gsd/ from older installs const legacyCommandsDir = path.join(targetDir, 'commands', 'gsd'); if (fs.existsSync(legacyCommandsDir)) { + // Preserve user-generated files before legacy wipe (#1423) + const devPrefsPath = path.join(legacyCommandsDir, 'dev-preferences.md'); + const preservedDevPrefs = fs.existsSync(devPrefsPath) ? fs.readFileSync(devPrefsPath, 'utf-8') : null; + fs.rmSync(legacyCommandsDir, { recursive: true }); removedCount++; console.log(` ${green}✓${reset} Removed legacy commands/gsd/`); + + if (preservedDevPrefs) { + try { + fs.mkdirSync(legacyCommandsDir, { recursive: true }); + fs.writeFileSync(devPrefsPath, preservedDevPrefs); + console.log(` ${green}✓${reset} Preserved commands/gsd/dev-preferences.md`); + } catch (err) { + console.error(` ${red}✗${reset} Failed to restore dev-preferences.md: ${err.message}`); + } + } } }