--- 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 (cu Metadata) Salvează în `.claude/rules/claude-learn-{domain}.md` Dacă fișierul nu există, creează-l din template cu frontmatter corect. Format Pattern (extins): ```markdown ### {Titlu} **Discovered**: {YYYY-MM-DD} (feature: {context}) **Source**: {source} | **Confidence**: {confidence} | **Reinforced**: 0 **Trigger**: "{fraza care a declanșat salvarea}" **Description**: {descriere} **Example** (`{file}:{lines}`): \```{language} {code} \``` **Tags**: {tags} --- ``` Format Gotcha (extins): ```markdown ### {Titlu} **Discovered**: {YYYY-MM-DD} (feature: {context}) **Source**: {source} | **Confidence**: {confidence} | **Reinforced**: 0 **Trigger**: "{fraza care a declanșat salvarea}" **Problem**: {problema} **Solution**: {soluția} **Tags**: {tags} --- ``` ### Pas 7: Actualizează Statistici La sfârșitul fișierului domeniului, actualizează: - Incrementează Total Patterns/Gotchas - Actualizează Last Session la data curentă - Incrementează Sessions Recorded - Actualizează Total Reinforcements (dacă s-au făcut în Pas 0.5) ### Pas 8: Confirmă ``` ✅ Salvat în claude-learn-{domain}.md: - {N} patterns adăugate - {M} gotchas adăugate 📈 Entries reinforced: {X} Statistici {domain}: {P} patterns, {G} gotchas, {R} reinforcements total ``` --- ## Argument: $ARGUMENTS Dacă argumentul este: - `auto` sau gol → detectează toate categoriile - `patterns` → focus doar pe patterns - `gotchas` → focus doar pe gotchas --- ## Compatibilitate Înapoi ### Format Vechi de Memorie Dacă există fișierul vechi `claude-learn-memory.md` fără frontmatter: ``` ⚠️ Detectat format vechi de memorie (claude-learn-memory.md) Vrei să migrez memoria existentă către noul sistem cu domenii? [y/n] - y → rulează /learn:import pe fișierul vechi - n → continuă fără migrare ``` ### Entries Fără Metadata Entries vechi fără câmpurile noi (Source, Confidence, Reinforced, Trigger) sunt tratate ca: - Source: inferred - Confidence: medium - Reinforced: 0 - Trigger: "" La prima editare sau reinforcement, metadata va fi adăugată automat.