thedotmack/claude-mem · warning

claude-mem does not appear to be installed.

Error message

claude-mem does not appear to be installed.

What it means

`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.'.

Source

Thrown at src/npx-cli/commands/uninstall.ts:243

  const pluginDataDir = join(home, '.claude', 'plugins', 'data', 'claude-mem-thedotmack');
  if (existsSync(pluginDataDir)) {
    try {
      rmSync(pluginDataDir, { recursive: true, force: true });
      removedCount++;
    } catch (error: unknown) {
      console.warn(`[uninstall] Could not remove ${pluginDataDir}:`, error instanceof Error ? error.message : String(error));
    }
  }

  return removedCount;
}

export async function runUninstallCommand(): Promise<void> {
  p.intro(styleText(['bgRed', 'white'], ' claude-mem uninstall '));

  if (!isPluginInstalled()) {
    p.log.warn('claude-mem does not appear to be installed.');

    if (process.stdin.isTTY) {
      const shouldCleanup = await p.confirm({
        message: 'Clean up any remaining registration data anyway?',
        initialValue: false,
      });

      if (p.isCancel(shouldCleanup) || !shouldCleanup) {
        p.outro('Nothing to do.');
        return;
      }
    } else {
      p.outro('Nothing to do.');
      return;
    }
  } else if (process.stdin.isTTY) {
    const shouldContinue = await p.confirm({
      message: 'Are you sure you want to uninstall claude-mem?',

View on GitHub (pinned to 8bc631a71a)

Solutions

  1. If leftovers may exist, answer yes to the cleanup prompt; non-TTY runs proceed with cleanup automatically.
  2. If you expected an install, check the plugin location and re-run `npx claude-mem@latest install`.
  3. Run uninstall again after a successful install if you want everything removed.
Defensive patterns

Strategy: validation

Validate before calling

import { existsSync } from 'node:fs';
import { join } from 'node:path';
import os from 'node:os';

const pluginInstalled = existsSync(join(os.homedir(), '.claude', 'plugins', 'marketplaces', 'thedotmack'));

Prevention

When it happens

Trigger: 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.

Common situations: Double uninstall, half-failed install, plugin dir deleted by hand, or a different user/npm prefix owning the install.

Related errors


AI-assisted analysis of thedotmack/claude-mem@8bc631a71a (2026-08-20). Data as JSON: /api/errors/b0eaac900f4e6337. Report an issue: GitHub.