{"record":{"id":"b0eaac900f4e6337","repo":"thedotmack/claude-mem","slug":"claude-mem-does-not-appear-to-be-installed","errorCode":null,"errorMessage":"claude-mem does not appear to be installed.","messagePattern":"claude-mem does not appear to be installed\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/npx-cli/commands/uninstall.ts","lineNumber":243,"sourceCode":"\n  const pluginDataDir = join(home, '.claude', 'plugins', 'data', 'claude-mem-thedotmack');\n  if (existsSync(pluginDataDir)) {\n    try {\n      rmSync(pluginDataDir, { recursive: true, force: true });\n      removedCount++;\n    } catch (error: unknown) {\n      console.warn(`[uninstall] Could not remove ${pluginDataDir}:`, error instanceof Error ? error.message : String(error));\n    }\n  }\n\n  return removedCount;\n}\n\nexport async function runUninstallCommand(): Promise<void> {\n  p.intro(styleText(['bgRed', 'white'], ' claude-mem uninstall '));\n\n  if (!isPluginInstalled()) {\n    p.log.warn('claude-mem does not appear to be installed.');\n\n    if (process.stdin.isTTY) {\n      const shouldCleanup = await p.confirm({\n        message: 'Clean up any remaining registration data anyway?',\n        initialValue: false,\n      });\n\n      if (p.isCancel(shouldCleanup) || !shouldCleanup) {\n        p.outro('Nothing to do.');\n        return;\n      }\n    } else {\n      p.outro('Nothing to do.');\n      return;\n    }\n  } else if (process.stdin.isTTY) {\n    const shouldContinue = await p.confirm({\n      message: 'Are you sure you want to uninstall claude-mem?',","sourceCodeStart":225,"sourceCodeEnd":261,"githubUrl":"https://github.com/thedotmack/claude-mem/blob/8bc631a71a487424b866756e43a6efa4574cc66b/src/npx-cli/commands/uninstall.ts#L225-L261","documentation":"`npx claude-mem uninstall` begins with `isPluginInstalled()`; when it returns false the command warns that claude-mem does not appear installed and, in a TTY, asks whether to clean up leftover registration data anyway. Declining (or cancel) ends with 'Nothing to do.'.","triggerScenarios":"Run the uninstall command when the plugin files/marker are absent — install never completed, a previous uninstall already ran, or the plugin directory was removed manually.","commonSituations":"Double uninstall, half-failed install, plugin dir deleted by hand, or a different user/npm prefix owning the install.","solutions":["If leftovers may exist, answer yes to the cleanup prompt; non-TTY runs proceed with cleanup automatically.","If you expected an install, check the plugin location and re-run `npx claude-mem@latest install`.","Run uninstall again after a successful install if you want everything removed."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"import { existsSync } from 'node:fs';\nimport { join } from 'node:path';\nimport os from 'node:os';\n\nconst pluginInstalled = existsSync(join(os.homedir(), '.claude', 'plugins', 'marketplaces', 'thedotmack'));","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Check the plugin directory exists before running uninstall.","Avoid deleting install dirs by hand; use the uninstall command so registration data is cleaned too."],"tags":["uninstall","install-state","cli"],"backgroundTag":"not-installed","analyzedSha":"8bc631a71a487424b866756e43a6efa4574cc66b","analyzedAt":"2026-08-20T23:58:13.836Z","contentChangedAt":"2026-08-20T23:58:13.836Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}