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

10 KiB

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

## 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):

## 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}]