Files
Claude Agent 7aafcd5562 feat: v2.1.0 - Selective saving, cleanup command, and SessionEnd hook
New features:
- /learn:analyze now uses signal detection to save only valuable lessons
  - Explicit commands: "ține minte", "remember", "memorează"
  - Stated preferences: "întotdeauna", "always", "never"
  - Repeated corrections (2+ times)
  - Historical references: "cum am discutat", "as we discussed"
- New /learn:cleanup command for memory hygiene
  - Scoring system for entry quality
  - Conservative mode with confirmation
  - Upgrade option to rewrite entries
- SessionEnd hook shows reminder on /exit, /clear, Ctrl+D
- Metadata tracking: source, confidence, reinforced, trigger

Changes:
- analyze.md: Added Pas 3.5 for signal detection
- cleanup.md: New command for reviewing/deleting entries
- hooks.json: Changed from Stop to SessionEnd
- scripts/session-end-reminder.sh: New reminder script
- Templates updated with metadata fields
- Documentation updated for v2.1.0

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:12:31 +00:00

8.3 KiB
Raw Permalink Blame History

description: Revizuiește memoria și propune ștergeri pentru entries nefolositoare argument-hint: [domain|--dry-run] - Opțional: curăță doar un domeniu sau doar raport

Curățare și Igienă Memorie

Analizează toate entries din memorie și identifică candidați pentru ștergere. Mod conservator: Întotdeauna confirmă cu utilizatorul înainte de ștergere.

Workflow

Pas 1: Încarcă Toate Fișierele de Memorie

Citește toate claude-learn-*.md din .claude/rules/.

Pentru fiecare entry, parsează și extrage:

  • Titlu
  • Discovered date
  • Source (explicit/inferred/repeated) - default: inferred dacă lipsește
  • Confidence (high/medium/low) - default: medium dacă lipsește
  • Reinforced count - default: 0 dacă lipsește
  • Last reinforced date
  • Tags
  • Descriere/Problem/Solution
  • Example (dacă există)

Pas 2: Calculare Scor pentru Fiecare Entry

2.1 Criterii de Ștergere (Scor Negativ)

Criteriu Puncte Descriere
Fără reinforcement (0) și > 30 zile -30 Entry vechi nefolosit
Confidence: low -20 Inferență slabă la salvare
Source: inferred (nu explicit/repeated) -10 Nu a fost cerut explicit
Descriere generică (< 20 caractere) -25 Ex: "Fix bug", "Update config"
Fără example code -15 Lipsă context practic
Fără tags sau 1 singur tag -10 Greu de căutat/categorizat
Path specific în titlu -20 Ex: "Fix users.ts error" - prea specific
Menționează un singur fișier în descriere -15 One-time fix probabil
Niciun tag comun cu alte entries -10 Entry izolat

2.2 Criterii de Păstrare (Scor Pozitiv)

Criteriu Puncte Descriere
Reinforced >= 3 +50 Folosit de multe ori - foarte valoros
Reinforced >= 1 +20 Folosit cel puțin o dată
Source: explicit +40 Utilizatorul a cerut explicit salvarea
Source: repeated +30 Corectat de mai multe ori - important
Confidence: high +20 Semnal puternic la salvare
Tags comune cu 3+ alte entries +15 Parte din pattern mai mare
Example code prezent +10 Are context practic
Discovered recent (< 14 zile) +10 Nou, încă de evaluat

2.3 Calculare Scor Final

scor_final = suma(criterii_păstrare) + suma(criterii_ștergere)

Praguri de decizie:

  • Scor < -30: Candidat PUTERNIC pentru ștergere
  • Scor -30 la -10: Candidat POSIBIL pentru ștergere
  • Scor -10 la +20: Neutru (păstrează dar monitorizează)
  • Scor > +20: Păstrează definitiv

Pas 3: Prezintă Raportul

🧹 Curățare Memorie - Raport

📊 Analizat: {N} entries din {M} domenii

🗑️ CANDIDAȚI PENTRU ȘTERGERE:

━━━ Scor foarte negativ (< -30) ━━━

1. [backend] "Fix auth bug"
   Scor: -45 | Discovered: 2024-11-15 | Reinforced: 0
   ❌ Descriere generică (< 20 char)
   ❌ Fără example code
   ❌ Vechi (> 30 zile) fără reinforcement
   ❌ Path specific în titlu

2. [frontend] "CSS margin adjustment"
   Scor: -40 | Discovered: 2024-12-01 | Reinforced: 0
   ❌ One-time fix (un singur fișier)
   ❌ Confidence: low
   ❌ Fără tags comune

━━━ Scor negativ (-30 la -10) ━━━

3. [database] "Index creation tip"
   Scor: -15 | Discovered: 2024-12-20 | Reinforced: 0
   ⚠️ Fără example code
   ⚠️ Source: inferred

━━━ Monitorizare (scor neutru) ━━━

4. [testing] "Mock setup pattern"
   Scor: +5 | Discovered: 2025-01-02 | Reinforced: 0
    Nou - necesită mai mult timp pentru evaluare

✅ PĂSTRATE DEFINITIV: {X} entries (scor > +20)

Acțiuni disponibile:
- [delete 1, 2] - Șterge entries specifice
- [delete-negative] - Șterge toate cu scor < -30
- [review N] - Vezi detalii complete pentru entry N
- [upgrade N] - Rescrie entry N pentru a-l îmbunătăți
- [none] - Nu șterge nimic
- [export] - Exportă lista pentru review manual

Pas 4: Confirmare pentru Fiecare Ștergere

Pentru fiecare entry selectat, afișează detalii și cere confirmare:

🗑️ Confirmare ștergere (1/{total}):

Entry: [backend] "Fix auth bug"
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

**Discovered**: 2024-11-15 (feature: login-page)
**Source**: inferred | **Confidence**: low | **Reinforced**: 0
**Problem**: Auth token expired
**Solution**: Refresh token

**Tags**: auth

Motive pentru ștergere:
- Descriere prea generică pentru a fi utilă
- Niciodată folosit (0 reinforcements în 52 zile)
- Fix specific pentru un singur caz

[delete] Confirmă ștergerea
[keep] Păstrează entry-ul
[upgrade] Rescrie pentru a-l face util
[skip] Treci la următorul

Pas 5: Opțiune Upgrade (Rescrie Entry)

Dacă utilizatorul alege [upgrade]:

📝 Upgrade Entry:

Entry actual: "Fix auth bug"

Bazat pe context, propun rescrierea:

**Titlu nou**: "JWT Token Refresh on 401 Response"
**Descriere nouă**: When API returns 401, check if refresh token
  is available and attempt automatic refresh before failing.
**Source nou**: explicit (rescris manual)
**Confidence nouă**: high

**Example** îmbunătățit:
```typescript
if (response.status === 401 && hasRefreshToken()) {
  const newToken = await refreshToken();
  return retryRequest(config, newToken);
}

Accept rescrierea? [y/n/edit]


Dacă acceptă:
- Înlocuiește entry-ul cu versiunea îmbunătățită
- Resetează Reinforced la 0
- Actualizează Discovered la data curentă
- Setează Source: explicit
- Setează Confidence: high

### Pas 6: Execută Ștergerile

Pentru fiecare entry confirmat pentru ștergere:
1. Găsește entry-ul în fișierul markdown
2. Elimină complet secțiunea (de la ### până la următorul ---)
3. Actualizează statisticile (decrementează Total Patterns/Gotchas)
4. Actualizează Last Cleanup date

**IMPORTANT**: Ștergerea este totală și ireversibilă.

### Pas 7: Raport Final

Curățare completă!

Acțiuni efectuate:

  • 3 entries șterse
  • 1 entry rescris (upgraded)
  • 2 entries păstrate (manual)
  • 5 entries monitorizate (scor neutru)

Statistici actualizate: ┌────────────┬──────────┬─────────┬─────────────┐ │ Domain │ Înainte │ După │ Șterse │ ├────────────┼──────────┼─────────┼─────────────┤ │ backend │ 15 │ 13 │ 2 │ │ frontend │ 10 │ 9 │ 1 │ │ database │ 8 │ 8 │ 0 │ ├────────────┼──────────┼─────────┼─────────────┤ │ TOTAL │ 33 │ 30 │ 3 │ └────────────┴──────────┴─────────┴─────────────┘

💡 Sugestie: Rulează /learn:cleanup lunar pentru mentenanță.


---

## Argument: $ARGUMENTS

Dacă argumentul este:
- gol → curăță toate domeniile
- `backend` (sau alt nume de domeniu) → curăță doar acel domeniu
- `--dry-run` → doar raport, fără acțiuni de ștergere
- `--stats` → doar statistici sumare, fără detalii

---

## Exemple de Entries Problematice

### Candidați tipici pentru ștergere:

```markdown
### Fix typo
**Discovered**: 2024-10-15 (feature: misc)
**Problem**: Typo in variable name
**Solution**: Fixed typo
**Tags**: fix

Titlu generic, descriere vagă, tag singular, vechi

### Update users.ts
**Discovered**: 2024-11-20 (feature: users)
**Problem**: Wrong import
**Solution**: Changed import path
**Tags**: import

Path în titlu, one-time fix, fără context reutilizabil

Entries bune (de păstrat):

### TypeScript Strict Mode Configuration
**Discovered**: 2024-12-01 (feature: project-setup)
**Source**: explicit | **Confidence**: high | **Reinforced**: 4
**Trigger**: "ține minte setările pentru strict mode"
**Description**: Enable all strict mode options for better type safety...
**Example** (`tsconfig.json:5-15`):
```json
{
  "compilerOptions": {
    "strict": true,
    "noImplicitAny": true,
    ...
  }
}

Tags: typescript, config, strict-mode, project-setup

✅ Titlu descriptiv, reinforced de 4 ori, explicit, exemple, tags multiple