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>
270 lines
8.3 KiB
Markdown
270 lines
8.3 KiB
Markdown
---
|
||
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
|
||
|
||
```markdown
|
||
### 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):
|
||
|
||
```markdown
|
||
### 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
|