From cb1e95948e12e489b700f1f0009a1ee41bbf15e1 Mon Sep 17 00:00:00 2001 From: Claude Agent Date: Wed, 7 Jan 2026 13:20:29 +0000 Subject: [PATCH] feat(learn): Explicit frontmatter + compact output messages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add explicit header example with HTML paths comment (Pas 6.1) - Add v2.x → v3.0 migration instructions - Compact all output messages (ultra-compact format) - Remove EXCLUSE section from output - Bump version to 3.2.0 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .claude-plugin/marketplace.json | 2 +- plugins/learn/.claude-plugin/plugin.json | 2 +- plugins/learn/commands/analyze.md | 187 ++++++++++++----------- 3 files changed, 103 insertions(+), 88 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index df37e8f..22672e7 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -11,7 +11,7 @@ "name": "learn", "source": "./plugins/learn", "description": "Minimalist memory format with domain-based storage and signal detection", - "version": "3.0.0", + "version": "3.2.0", "keywords": ["learn", "memory", "patterns", "gotchas", "domains", "minimalist"] } ] diff --git a/plugins/learn/.claude-plugin/plugin.json b/plugins/learn/.claude-plugin/plugin.json index db618e7..5e17dd0 100644 --- a/plugins/learn/.claude-plugin/plugin.json +++ b/plugins/learn/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "learn", "description": "Claude Learn: Minimalist memory format with domain-based storage and signal detection", - "version": "3.0.0", + "version": "3.2.0", "author": { "name": "Romfast Team" } diff --git a/plugins/learn/commands/analyze.md b/plugins/learn/commands/analyze.md index 5732f86..5a9ea75 100644 --- a/plugins/learn/commands/analyze.md +++ b/plugins/learn/commands/analyze.md @@ -26,15 +26,11 @@ Dacă fișierul nu există, creează-l din template cu domeniile implicite: - 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ă +3. Dacă găsește match-uri, actualizează `Reinforced` count -4. Raportează la final (dacă există): +4. Raportează compact (doar dacă există): ``` -📈 Entries validate în această sesiune: -- [backend] "API Error Handling" - reinforced (3→4) -- [frontend] "Vue Watch Pattern" - reinforced (1→2) +Reinforced: "API Error Handling" (4), "Vue Watch" (2) ``` ### Pas 1: Scanează Conversația @@ -65,17 +61,11 @@ Pentru fiecare path, verifică contra patterns din config: Alege domeniul cu cele mai multe match-uri. Dacă egalitate → preferă în ordine: backend > frontend > database > testing > deployment > global -#### 2.4 Prezintă Utilizatorului +#### 2.4 Confirmă Domeniul ``` -📁 Domeniu detectat: backend (bazat pe src/api/users.ts, src/api/middleware/auth.ts) - -Este corect? [y/n/altul] +Domeniu: backend [y/n/alt] ``` - -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) +- `y` → continuă | `n` → listează domenii | `alt`/`nume-nou` → creează nou ### Pas 3: Creare Domeniu Nou (dacă e cazul) @@ -93,15 +83,9 @@ Algoritm: 2. Extrage extensia: `.sh`, `.yml` 3. Generează glob: `{dir}**/*{ext}` -#### 3.2 Prezintă pentru Confirmare +#### 3.2 Confirmă Patterns ``` -📁 Domeniu nou: "devops" - -Bazat pe fișierele din conversație, propun aceste patterns: - scripts/**/*.sh - ansible/**/*.yml - -Accept? [y/edit/+more] +Domeniu nou: devops | scripts/**/*.sh, ansible/**/*.yml [y/edit] ``` #### 3.3 Salvează Domeniul @@ -204,75 +188,64 @@ Detectare din erori și soluții (comportamentul actual). - **50-80 puncte**: Se propune normal - **80+ puncte**: Marcat ca ⭐ "Recommended" -### Pas 4: Generează Propuneri de Lecții (cu Metadata) +### Pas 4: Generează Propuneri de Lecții -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: +Pentru fiecare insight cu scor >= 30, generează format compact: ``` -**[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] +[P] Titlu scurt #tag1 #tag2 +[G] Titlu scurt #tag1 #tag2 ``` -### Pas 5: Prezintă Utilizatorului (Extins) +Intern, păstrează: source, confidence, scor (pentru filtrare). +### Pas 5: Prezintă Utilizatorului + +Format ultra-compact (fără secțiunea EXCLUSE): ``` -📚 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 +{domain} | {N} lecții +1. [P] Titlu #tag1 #tag2 +2. [G] Titlu #tag1 +Salvez? [y/1,2/n] ``` +Răspunsuri: `y` = toate | `1,2` = selectiv | `n` = skip + ### 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. +#### 6.1 Header Fișier (OBLIGATORIU) -#### Format Pattern (minimalist): +**Dacă fișierul NU există**, creează-l cu acest header EXACT: +```markdown +# Claude Learn: {domain} + + +``` + +**Dacă fișierul EXISTĂ dar NU are frontmatter HTML** (linia 2 nu începe cu `` pe linia 2 (după titlu) +3. Citește patterns din `.claude/rules/claude-learn-domains.md` + +**Exemplu header complet:** +```markdown +# Claude Learn: backend + + +## P: Prima entry... +``` + +#### 6.2 Validare Format (înainte de salvare) + +Verifică OBLIGATORIU: +- [ ] Linia 1: `# Claude Learn: {domain}` +- [ ] Linia 2: `` cu patterns din domains.md +- [ ] Linia 3: linie goală +- [ ] Entries în format `## P:` sau `## G:` (NU `### Titlu`) +- [ ] Fără secțiune `## Statistics` (calculat dinamic) + +#### 6.3 Format Pattern (minimalist): ```markdown ## P: {Titlu max 60 char} @{YYYY-MM-DD} #{tag1} #{tag2} | {source}:{confidence} @@ -305,14 +278,9 @@ Exemple metadata: ### Pas 7: Confirmă ``` -✅ Salvat în claude-learn-{domain}.md: -- {N} patterns adăugate -- {M} gotchas adăugate -📈 Entries reinforced: {X} +Salvat: +{N}P +{M}G în {domain}.md ``` -**Notă:** Statisticile se calculează dinamic cu `/learn:status`. - --- ## Argument: $ARGUMENTS @@ -330,6 +298,53 @@ Dacă argumentul este: Entries în format vechi (cu `### Titlu`, `**Discovered**:`, `**Source**:`, etc.) sunt citite normal. La prima editare, sunt convertite automat la formatul minimalist v3.0. +### Migrare Automată v2.x → v3.0 + +Când întâlnești un fișier în format vechi, convertește-l: + +**Header vechi (de eliminat):** +```markdown +# Claude Learn: Backend + +**Domain**: backend +**Last updated**: 2026-01-06 +**Sessions recorded**: 1 + +Knowledge about... + +--- +``` + +**Header nou (de creat):** +```markdown +# Claude Learn: backend + + +``` + +**Entry veche (Pattern):** +```markdown +### ProfileRegistry cu Hot-Reload +**Discovered**: 2026-01-06 (feature: xyz) +**Description**: Sistem de înregistrare... +**Example**: ... +**Tags**: registry, hot-reload + +--- +``` + +**Entry nouă:** +```markdown +## P: ProfileRegistry cu Hot-Reload +@2026-01-06 #registry #hot-reload | inferred:med +Sistem de înregistrare... +``` + +**Ce să ștergi:** +- Separatori `---` între entries +- Secțiune `## Statistics` de la final +- Header verbose cu `**Domain**:`, `**Last updated**:`, etc. + ### Parsing Entries v3.0 Regex pentru parsing: ```