Skip to main content
ClaudeWave
Slash Command105 repo starsupdated 3mo ago

forget

Delete a memory by key

Install in Claude Code
Copy
mkdir -p ~/.claude/commands && curl -fsSL https://raw.githubusercontent.com/SukinShetty/Nemp-memory/HEAD/commands/forget.md -o ~/.claude/commands/forget.md
Then start a new Claude Code session; the slash command loads automatically.

forget.md

# /nemp:forget

Delete a memory by key.

## Usage
/nemp:forget <key>
/nemp:forget <key> --force   # Skip confirmation

## Arguments
- `key`: The exact key of the memory to delete

## Instructions

When the user invokes `/nemp:forget`, follow these steps:

### 1. Find the Memory

Search for the memory in both storage locations:
```bash
# Check project memories
[ -f ".nemp/memories.json" ] && cat .nemp/memories.json

# Check global memories
[ -f "$HOME/.nemp/memories.json" ] && cat $HOME/.nemp/memories.json
```

### 2. Handle Not Found

If no memory with that key exists:
❌ Memory not found: "<key>"
Did you mean one of these?

auth-flow
auth-config
user-auth-prefs

Use /nemp:list to see all available keys.

### 3. Confirm Deletion (unless --force)

Show the memory content and ask for confirmation:
⚠️  Delete this memory?
Key: <key>
Value: "<full-value>"
Agent: <agent_id who wrote it>
Created: <date>
Source: project/global
Type 'yes' to confirm, or 'no' to cancel.

Use the AskUserQuestion tool with options:
- "Yes, delete it"
- "No, keep it"

### 4. Perform Deletion

If confirmed:
1. Read the appropriate memories.json file
2. Filter out the memory with the matching key
3. Write the updated array back to the file

### 5. Log the Delete Operation
```bash
echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] DELETE key=<key> agent=${CLAUDE_AGENT_NAME:-main}" >> .nemp/access.log
```

### 6. Check Auto-Sync Config (REQUIRED)

**IMPORTANT: This step is MANDATORY. Always check and execute auto-sync if enabled.**

After deleting the memory, read the config file:
```bash
[ -f ".nemp/config.json" ] && cat .nemp/config.json
```

If `.nemp/config.json` exists and contains `"autoSync": true`:

**6a. Read all remaining memories** from `.nemp/memories.json`

**6b. Group memories by category** using these rules:
- Keys containing "project", "workspace" → "Project Info"
- Keys containing "stack", "storage", "structure" → "Technical Details"
- Keys containing "feature", "command" → "Features"
- All other keys → "Other"

**6c. Generate CLAUDE.md content:**
```markdown
## Project Context (via Nemp Memory)

> Auto-generated by Nemp Memory. Last updated: [YYYY-MM-DD HH:MM]

### [Category Name]

| Key | Value |
|-----|-------|
| **key-name** | value content |

---
```

**6d. Update CLAUDE.md:**
- If CLAUDE.md exists with `## Project Context (via Nemp Memory)`: Replace everything from that heading to the next `---` (inclusive)
- If no memories remain: Remove the Nemp section entirely or leave a minimal placeholder

**6e. Set `syncPerformed = true`** for the confirmation message

### 7. Update MEMORY.md Index

Regenerate `.nemp/MEMORY.md` with the remaining memories (same format as init.md Step 7).

### 8. Confirm to User
✓ Memory deleted: <key>
Remaining memories: N
✓ MEMORY.md updated
✓ CLAUDE.md synced    ← only if auto-sync enabled

**If auto-sync is disabled or config doesn't exist:** Do not update CLAUDE.md, do not show the sync note.

### 7. Handle Multiple Matches

If the same key exists in BOTH project and global storage (rare):
⚠️  Found "<key>" in multiple locations:

Project (.nemp/memories.json)
Value: "<value>"
Global (~/.nemp/memories.json)
Value: "<value>"

Which would you like to delete?

Use AskUserQuestion with options:
- "Delete from project only"
- "Delete from global only"
- "Delete from both"
- "Cancel"

## Error Handling
- If key is missing: Ask user to provide a key
- If file read/write fails: Report error with details
- If user cancels: Acknowledge and do nothing

## Example

User: `/nemp:forget old-api-endpoint`
⚠️  Delete this memory?
Key: old-api-endpoint
Value: "The legacy API was at api.example.com/v1"
Created: 2024-01-05T08:00:00Z
Source: project (.nemp/memories.json)

User confirms →
Memory deleted: old-api-endpoint
Remaining memories: 4
CLAUDE.md updated     <-- only if auto-sync is enabled