Files
claude-plugins/plugins/learn/commands/cleanup.md
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

270 lines
8.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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