Files
claude-plugins/plugins/learn/commands/analyze.md
Claude Agent 0207af18f6 feat(learn): Minimalist memory format v3.0 - 60% size reduction
BREAKING CHANGE: New compact entry format
- Header: `## {P|G}: {Title}` (P=Pattern, G=Gotcha)
- Metadata: `@YYYY-MM-DD #tag1 #tag2 | source:confidence[:reinforced]`
- Max 3 inline tags, no separators, no statistics section

Removed verbose fields: Discovered, Source, Confidence, Trigger
Statistics now calculated dynamically by /learn:status

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 00:44:48 +00:00

342 lines
10 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.

---
description: Analizează conversația și propune lecții de salvat (cu filtrare selectivă)
argument-hint: [auto|patterns|gotchas] - Detectare automată sau categorie specifică
---
# Analiză Conversație pentru Lecții
Examinează conversația curentă și identifică insights pentru documentație.
**Salvează doar lecții cu semnal clar** - nu one-off fixes.
## Workflow
### Pas 0: Încarcă Configurația Domeniilor
Citește `.claude/rules/claude-learn-domains.md` pentru lista domeniilor disponibile.
Dacă fișierul nu există, creează-l din template cu domeniile implicite:
- backend, frontend, database, testing, deployment, global
### Pas 0.5: Verifică Reinforcement pentru Entries Existente
Înainte de a căuta lecții noi, verifică dacă conversația validează entries existente:
1. Încarcă toate entries din domeniile relevante (bazat pe fișierele din conversație)
2. Pentru fiecare entry, verifică dacă:
- Problema descrisă a fost întâlnită ȘI soluția a funcționat
- Pattern-ul a fost aplicat cu succes
- Utilizatorul a menționat/confirmat un gotcha salvat
3. Dacă găsește match-uri, actualizează:
- Incrementează `Reinforced` count
- Actualizează `Last Reinforced` la data curentă
4. Raportează la final (dacă există):
```
📈 Entries validate în această sesiune:
- [backend] "API Error Handling" - reinforced (3→4)
- [frontend] "Vue Watch Pattern" - reinforced (1→2)
```
### Pas 1: Scanează Conversația
Identifică:
- **Fișiere accesate**: toate path-urile din Read, Edit, Write, Glob, Grep
- **Tool calls cu erori** → potențiale gotchas
- **Soluții aplicate** → potențiale patterns
- **Decizii tehnice** → posibile reguli noi
- **Mesaje utilizator** → comenzi explicite, corecții, preferințe
### Pas 2: Detectează Domeniul
#### 2.1 Extrage Path-uri
Colectează toate path-urile fișierelor din conversație:
```
src/api/users.ts
src/api/middleware/auth.ts
tests/api/users.test.ts
```
#### 2.2 Match-uiește cu Domeniile
Pentru fiecare path, verifică contra patterns din config:
- `src/api/**/*.ts` → backend
- `tests/**/*.test.ts` → testing
#### 2.3 Determină Domeniul Predominant
Alege domeniul cu cele mai multe match-uri.
Dacă egalitate → preferă în ordine: backend > frontend > database > testing > deployment > global
#### 2.4 Prezintă Utilizatorului
```
📁 Domeniu detectat: backend (bazat pe src/api/users.ts, src/api/middleware/auth.ts)
Este corect? [y/n/altul]
```
Răspunsuri posibile:
- **y** → continuă cu domeniul detectat
- **n** → listează toate domeniile disponibile pentru selecție
- **altul** sau **nume-nou** → creează domeniu nou (vezi Pas 3)
### Pas 3: Creare Domeniu Nou (dacă e cazul)
Când utilizatorul introduce un nume de domeniu care nu există:
#### 3.1 Propune Patterns Automat
Bazat pe path-urile din conversație, generalizează:
```
scripts/deploy.sh → scripts/**/*.sh
ansible/roles/web/tasks/main.yml → ansible/**/*.yml
```
Algoritm:
1. Extrage primele 2 nivele de directoare: `scripts/`, `ansible/`
2. Extrage extensia: `.sh`, `.yml`
3. Generează glob: `{dir}**/*{ext}`
#### 3.2 Prezintă pentru Confirmare
```
📁 Domeniu nou: "devops"
Bazat pe fișierele din conversație, propun aceste patterns:
scripts/**/*.sh
ansible/**/*.yml
Accept? [y/edit/+more]
```
#### 3.3 Salvează Domeniul
- Adaugă în `.claude/rules/claude-learn-domains.md`
- Creează `.claude/rules/claude-learn-{domain}.md` cu frontmatter
### Pas 3.5: Detectare Semnal de Salvare
**CRITIC**: Înainte de a propune lecții, verifică dacă există SEMNAL CLAR că lecția merită salvată.
#### Categorii de Semnal (în ordine de prioritate)
##### A. Comandă Explicită (Source: explicit, Confidence: high) - SCOR: +100
Caută în mesajele utilizatorului fraze de tip "ține minte":
**Română:**
- "ține minte", "memorează", "reține", "să nu uiți", "notează-ți"
- "salvează asta", "adaugă în memorie"
**Engleză:**
- "remember", "remember this", "don't forget", "keep in mind"
- "note this", "save this"
**Acțiune:** Salvează IMEDIAT cu source=explicit, confidence=high
##### B. Preferință Explicită (Source: explicit, Confidence: high) - SCOR: +80
Caută pattern-uri de tip regulă permanentă:
**Română:**
- "întotdeauna fă X", "niciodată nu Y", "mereu să fie Z"
- "de acum înainte", "regula e că", "standard e să"
**Engleză:**
- "always do X", "never do Y", "from now on"
- "the rule is", "standard is to", "we always"
##### C. Corecție Repetată (Source: repeated, Confidence: high) - SCOR: +70
Detectează când utilizatorul corectează ACEEAȘI problemă de mai multe ori:
**Română:**
- "nu, fă-o așa", "greșit, e X nu Y", "am mai spus"
- "din nou", "încă o dată", "iar ai făcut", "te-am corectat"
**Engleză:**
- "no, do it like this", "wrong, it's X not Y", "I said before"
- "again", "once more", "I already told you"
**Condiție:** Găsește 2+ corecții pe același subiect → salvează cu source=repeated
##### D. Referință Istorică (Source: inferred, Confidence: medium) - SCOR: +50
Când utilizatorul referă discuții anterioare:
**Română:**
- "cum am discutat", "așa cum am făcut data trecută", "nu uita că"
- "știi deja", "am stabilit că", "după cum știi"
**Engleză:**
- "as we discussed", "like we did before", "don't forget that"
- "you know", "we agreed", "as you know"
**Acțiune:** Salvează CU VERIFICARE - întreabă utilizatorul dacă vrea să salveze
##### E. Pattern Dedus din Erori (Source: inferred, Confidence: medium/low) - SCOR: +30
Detectare din erori și soluții (comportamentul actual).
**Criteriu de Incluziune** (CE să salveze):
- Eroare care a apărut de mai multe ori în conversație
- Soluție care rezolvă o clasă de probleme (nu un singur fișier)
- Configurație care a necesitat research/documentație
- Workaround pentru bug cunoscut
**Criteriu de Excludere** (CE să NU salveze) - SCOR: 0:
- Fix pentru o greșeală de tipar/typo
- Eroare de path sau import greșit (one-time fix)
- Bug specific unui singur fișier fără pattern general
- Ajustări de valori hardcodate
- Syntax errors simple
#### Calculare Scor de Semnal
| Semnal | Puncte |
|--------|--------|
| Comandă explicită ("ține minte") | +100 (auto-salvare) |
| Preferință explicită ("întotdeauna") | +80 |
| Corecție repetată (2+ ori) | +70 |
| Referință istorică | +50 |
| Eroare rezolvată cu pattern general | +30 |
| Configurație descoperită | +30 |
| Eroare one-time | +5 |
| Typo/fix banal | 0 |
**Praguri:**
- **< 30 puncte**: NU se propune (filtrat automat)
- **30-50 puncte**: Se propune cu "Low confidence"
- **50-80 puncte**: Se propune normal
- **80+ puncte**: Marcat ca "Recommended"
### Pas 4: Generează Propuneri de Lecții (cu Metadata)
Pentru fiecare insight identificat cu scor >= 30, generează:
#### Patterns (Soluții Repetabile)
- Abordări care au funcționat bine
- Configurații utile descoperite
- Tehnici noi aplicate cu succes
- Workflow-uri eficiente
#### Gotchas (Capcane de Evitat)
- Erori întâlnite și cum s-au rezolvat
- Confuzii cauzate de documentație
- Comportamente neașteptate
- Anti-patterns descoperite
Format extins pentru fiecare insight:
```
**[PATTERN/GOTCHA] Titlu Scurt** ⭐ Recommended | ⚠️ Low confidence
- **Categorie**: patterns | gotchas
- **Source**: explicit | inferred | repeated
- **Confidence**: high | medium | low
- **Scor**: {punctaj}
- **Semnal detectat**: "{fraza/contextul care a declanșat}"
- **Descriere**: Ce s-a învățat
- **Context**: În ce situație e relevant
- **Exemplu**: Cod sau pași concreți
- **Tags**: [tag1, tag2, tag3]
```
### Pas 5: Prezintă Utilizatorului (Extins)
```
📚 Am identificat {N} lecții din această conversație:
⭐ RECOMANDATE (semnal puternic):
1. [PATTERN] {Titlu} (explicit: "întotdeauna fă X")
{Descriere scurtă}
2. [GOTCHA] {Titlu} (repeated: corectat de 3 ori)
{Descriere scurtă}
⚠️ POSIBILE (semnal slab):
3. [PATTERN] {Titlu} (inferred: eroare rezolvată)
{Descriere scurtă}
❌ EXCLUSE (one-time fixes, nu se salvează):
- Fix typo în auth.ts
- Import path corectat în utils.ts
📁 Domeniu: {domain}
Care dintre acestea vrei să le salvez?
- [1, 2] - Selectează specific (implicit: doar recomandate)
- [1, 2, 3] - Include și cele cu semnal slab
- [all] - Toate (inclusiv cele slabe)
- [none] - Niciuna
- [edit N] - Modifică propunerea N
```
### Pas 6: Salvează în Fișierul Domeniului (Format Minimalist v3.0)
Salvează în `.claude/rules/claude-learn-{domain}.md`
Dacă fișierul nu există, creează-l din template cu comentariu HTML pentru paths.
#### Format Pattern (minimalist):
```markdown
## P: {Titlu max 60 char}
@{YYYY-MM-DD} #{tag1} #{tag2} | {source}:{confidence}
{Descriere 1-2 propoziții}
\```{language}
{cod opțional}
\```
```
Exemple metadata:
- `@2026-01-06 #git #workflow | explicit:high` (nou, fără reinforced)
- `@2026-01-05 #vue #reactivity | inferred:med:3` (cu 3 reinforcements)
#### Format Gotcha (minimalist):
```markdown
## G: {Titlu max 60 char}
@{YYYY-MM-DD} #{tag1} #{tag2} | {source}:{confidence}
**P**: {problema scurtă}
**S**: {soluția scurtă}
```
**Reguli format:**
- Titlu: max 60 caractere, imperativ
- Tags: max 3, inline cu `#`
- Confidence: `high`, `med`, `low`
- Reinforced: afișat DOAR dacă > 0, format `:N` la final
- Fără separatori `---` între entries
- Fără secțiune Statistics (calculat dinamic de `/learn:status`)
### Pas 7: Confirmă
```
✅ Salvat în claude-learn-{domain}.md:
- {N} patterns adăugate
- {M} gotchas adăugate
📈 Entries reinforced: {X}
```
**Notă:** Statisticile se calculează dinamic cu `/learn:status`.
---
## Argument: $ARGUMENTS
Dacă argumentul este:
- `auto` sau gol → detectează toate categoriile
- `patterns` → focus doar pe patterns
- `gotchas` → focus doar pe gotchas
---
## Compatibilitate Înapoi
### Format v2.x (verbose)
Entries în format vechi (cu `### Titlu`, `**Discovered**:`, `**Source**:`, etc.) sunt citite normal.
La prima editare, sunt convertite automat la formatul minimalist v3.0.
### Parsing Entries v3.0
Regex pentru parsing:
```
^## (P|G): (.+)$ → type, title
^@(\d{4}-\d{2}-\d{2}) (.+) \| (.+)$ → date, tags, meta
```
Tags: extrage toate `#(\w+)` din linia metadata
Meta: `{source}:{confidence}[:{reinforced}]`