diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index bdfeaa8..df37e8f 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -10,9 +10,9 @@ { "name": "learn", "source": "./plugins/learn", - "description": "Domain-based memory with selective saving, signal detection, and memory hygiene", - "version": "2.2.0", - "keywords": ["learn", "memory", "patterns", "gotchas", "domains", "cleanup", "hygiene"] + "description": "Minimalist memory format with domain-based storage and signal detection", + "version": "3.0.0", + "keywords": ["learn", "memory", "patterns", "gotchas", "domains", "minimalist"] } ] } diff --git a/.claude/rules/claude-learn-global.md b/.claude/rules/claude-learn-global.md index 6ab70a0..5c997c9 100644 --- a/.claude/rules/claude-learn-global.md +++ b/.claude/rules/claude-learn-global.md @@ -1,93 +1,18 @@ -# Claude Learn Memory: global +# Claude Learn: global -Patterns și Gotchas universale, aplicabile tuturor domeniilor. +## P: Commit .claude/rules în Git +@2026-01-06 #git #memory #team | explicit:high +Fișierele din `.claude/rules/` trebuie incluse în Git pentru partajare cu echipa. NU adăuga `.claude/` în `.gitignore`. ---- +## P: Incrementează versiunea plugin înainte de commit +@2026-01-06 #plugin #git #versioning | explicit:high:1 +La modificări în `plugins/learn/`, incrementează versiunea în AMBELE fișiere: `plugins/learn/.claude-plugin/plugin.json` și `.claude-plugin/marketplace.json`. -## Patterns +## P: Cere confirmare înainte de commit +@2026-01-06 #git #workflow #commit | explicit:high +Nu executa `git commit` sau `git push` fără confirmare. Întreabă utilizatorul mai întâi. -### Memoria proiectului (.claude/rules) trebuie commit-ată în Git -**Discovered**: 2026-01-06 (feature: learn-plugin) -**Source**: explicit | **Confidence**: high | **Reinforced**: 0 -**Trigger**: "ține minte" -**Description**: Fișierele din `.claude/rules/` (memoria learn plugin) trebuie să fie incluse în Git pentru a fi partajate cu alți dezvoltatori. NU adăuga `.claude/` în `.gitignore`. - -**Example** (`.gitignore`): -```gitignore -# NU exclude .claude/ - memoria trebuie partajată -# .claude/ <-- GREȘIT -``` - -**Tags**: git, memory, team, collaboration - ---- - -### Incrementează versiunea plugin-ului înainte de commit -**Discovered**: 2026-01-06 (feature: plugin-versioning) -**Source**: explicit | **Confidence**: high | **Reinforced**: 1 -**Trigger**: "ține minte" -**Description**: Când faci modificări la fișierele din plugin (orice din `plugins/learn/`), trebuie să incrementezi versiunea ÎNAINTE de commit. Versiunea trebuie să fie mai mare decât cea de pe remote. - -**Fișiere de modificat:** -1. `plugins/learn/.claude-plugin/plugin.json` - versiunea principală -2. `.claude-plugin/marketplace.json` - versiunea în marketplace - -**Example**: -```json -// plugins/learn/.claude-plugin/plugin.json -{ - "version": "2.1.2" // incrementat -} - -// .claude-plugin/marketplace.json -{ - "plugins": [{ - "name": "learn", - "version": "2.1.2" // TREBUIE să fie identică! - }] -} -``` - -**Tags**: plugin, versioning, git, commit - ---- - -### Nu face commit fără confirmare -**Discovered**: 2026-01-06 (feature: workflow) -**Source**: explicit | **Confidence**: high | **Reinforced**: 0 -**Trigger**: "ține minte, nu mai da commit-uri de capul tau" -**Description**: Nu executa `git commit` sau `git push` fără să întrebi utilizatorul mai întâi. Întotdeauna cere confirmare înainte de commit. - -**Example**: -``` -❌ GREȘIT: git add -A && git commit -m "..." && git push -✅ CORECT: "Am pregătit modificările. Fac commit și push?" -``` - -**Tags**: git, commit, workflow, confirmare - ---- - ---- - -## Gotchas - -### Claude Code SessionEnd hook nu suportă type: "prompt" -**Discovered**: 2026-01-06 (feature: learn-plugin-hooks) -**Source**: inferred | **Confidence**: medium | **Reinforced**: 0 -**Trigger**: "descoperit în timpul implementării hook-urilor" -**Problem**: SessionEnd hooks în Claude Code pot folosi doar `type: "command"`, nu `type: "prompt"`. Asta înseamnă că nu poți face analiză inteligentă a conversației la sfârșitul sesiunii. -**Solution**: Folosește `type: "command"` cu un script simplu pentru reminder la SessionEnd. Pentru analiză inteligentă, rulează manual `/learn:analyze` sau folosește hook-ul `Stop` (care suportă `type: "prompt"`). - -**Tags**: claude-code, hooks, session-end, plugin - ---- - -## Domain Statistics - -- **Total Patterns**: 3 -- **Total Gotchas**: 1 -- **Total Reinforcements**: 0 -- **Last Session**: 2026-01-06 -- **Sessions Recorded**: 1 -- **Last Cleanup**: - +## G: SessionEnd hook nu suportă type: "prompt" +@2026-01-06 #claude-code #hooks #plugin | inferred:med +**P**: SessionEnd hooks în Claude Code acceptă doar `type: "command"`, nu `type: "prompt"`. +**S**: Folosește `type: "command"` pentru SessionEnd. Pentru analiză inteligentă, rulează manual `/learn:analyze`. diff --git a/CHANGELOG.md b/CHANGELOG.md index 579e189..e983dee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,28 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.0.0] - 2026-01-07 + +### Changed (BREAKING) +- **Minimalist memory format**: ~60% reduction in file size + - Old: `### Titlu` + 3 metadata lines + separators (~600 char/entry) + - New: `## P: Titlu` + 1 metadata line (~200 char/entry) +- **Header format**: `## {P|G}: {Titlu}` (P=Pattern, G=Gotcha) +- **Metadata format**: `@YYYY-MM-DD #tag1 #tag2 | source:confidence[:reinforced]` +- **Tags**: Inline with `#`, max 3 per entry +- **Statistics**: Removed from files, calculated dynamically by `/learn:status` + +### Removed +- `**Discovered**:`, `**Source**:`, `**Confidence**:`, `**Trigger**:` fields +- `---` separators between entries +- `## Domain Statistics` section from memory files +- `(feature: ...)` context notation + +### Migration +- Entries in v2.x format are read normally +- Auto-converted to v3.0 format on first edit +- Run `/learn:analyze` to test new format + ## [2.1.0] - 2026-01-06 ### Added diff --git a/plugins/learn/.claude-plugin/plugin.json b/plugins/learn/.claude-plugin/plugin.json index 81cebf7..db618e7 100644 --- a/plugins/learn/.claude-plugin/plugin.json +++ b/plugins/learn/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "learn", - "description": "Claude Learn: Session analysis for patterns and gotchas with domain-based memory, selective saving, and memory hygiene", - "version": "2.2.0", + "description": "Claude Learn: Minimalist memory format with domain-based storage and signal detection", + "version": "3.0.0", "author": { "name": "Romfast Team" } diff --git a/plugins/learn/commands/analyze.md b/plugins/learn/commands/analyze.md index aae6a1d..5732f86 100644 --- a/plugins/learn/commands/analyze.md +++ b/plugins/learn/commands/analyze.md @@ -266,64 +266,53 @@ Care dintre acestea vrei să le salvez? - [edit N] - Modifică propunerea N ``` -### Pas 6: Salvează în Fișierul Domeniului (cu Metadata) +### 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 frontmatter corect. +Dacă fișierul nu există, creează-l din template cu comentariu HTML pentru paths. -Format Pattern (extins): +#### Format Pattern (minimalist): ```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}`): +## P: {Titlu max 60 char} +@{YYYY-MM-DD} #{tag1} #{tag2} | {source}:{confidence} +{Descriere 1-2 propoziții} \```{language} -{code} +{cod opțional} \``` - -**Tags**: {tags} - ---- ``` -Format Gotcha (extins): +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 -### {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} - ---- +## G: {Titlu max 60 char} +@{YYYY-MM-DD} #{tag1} #{tag2} | {source}:{confidence} +**P**: {problema scurtă} +**S**: {soluția scurtă} ``` -### Pas 7: Actualizează Statistici +**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`) -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ă +### Pas 7: 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 ``` +**Notă:** Statisticile se calculează dinamic cu `/learn:status`. + --- ## Argument: $ARGUMENTS @@ -337,21 +326,16 @@ Dacă argumentul este: ## 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) +### 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. -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 +### Parsing Entries v3.0 +Regex pentru parsing: +``` +^## (P|G): (.+)$ → type, title +^@(\d{4}-\d{2}-\d{2}) (.+) \| (.+)$ → date, tags, meta ``` -### 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. +Tags: extrage toate `#(\w+)` din linia metadata +Meta: `{source}:{confidence}[:{reinforced}]` diff --git a/plugins/learn/rules/memory-format.md b/plugins/learn/rules/memory-format.md index 4632da9..6ccd89f 100644 --- a/plugins/learn/rules/memory-format.md +++ b/plugins/learn/rules/memory-format.md @@ -2,234 +2,130 @@ paths: ".claude/rules/claude-learn-*.md" --- -# Claude Learn Memory Format +# Claude Learn Memory Format v3.0 -Acest fișier definește formatul pentru fișierele de memorie per domeniu. +Format minimalist pentru fișierele de memorie. ## Arhitectura Fișierelor ``` .claude/rules/ ├── claude-learn-domains.md # Configurația domeniilor -├── claude-learn-backend.md # Memorie backend (paths: src/api/**) -├── claude-learn-frontend.md # Memorie frontend (paths: src/components/**) -├── claude-learn-database.md # Memorie database (paths: src/db/**) -├── claude-learn-testing.md # Memorie testing (paths: **/*.test.ts) -├── claude-learn-deployment.md # Memorie deployment (paths: Dockerfile, *.yml) -└── claude-learn-global.md # Memorie globală (fără paths - mereu încărcat) +├── claude-learn-backend.md # Memorie backend +├── claude-learn-frontend.md # Memorie frontend +├── claude-learn-database.md # Memorie database +├── claude-learn-testing.md # Memorie testing +├── claude-learn-deployment.md # Memorie deployment +└── claude-learn-global.md # Memorie globală (mereu încărcat) ``` ## Template Fișier Domeniu ```markdown ---- -paths: src/api/**/*.ts, src/server/**/*.ts ---- +# Claude Learn: {domain} + -# Claude Learn Memory: backend - -Patterns și Gotchas pentru domeniul **backend**. - ---- - -## Patterns - -### {Titlu Descriptiv} -**Discovered**: {YYYY-MM-DD} (feature: {context-scurt}) -**Source**: {source} | **Confidence**: {confidence} | **Reinforced**: 0 -**Trigger**: "{fraza care a declanșat salvarea}" -**Description**: {Descriere clară a pattern-ului și când să-l folosești} - -**Example** (`{file}:{lines}`): -\```{language} -{cod exemplu} -\``` - -**Tags**: {tag1}, {tag2}, {tag3} - ---- - -## Gotchas - -### {Titlu Descriptiv} -**Discovered**: {YYYY-MM-DD} (feature: {context-scurt}) -**Source**: {source} | **Confidence**: {confidence} | **Reinforced**: 0 -**Trigger**: "{fraza care a declanșat salvarea}" -**Problem**: {Ce problemă a apărut} -**Solution**: {Cum s-a rezolvat} - -**Tags**: {tag1}, {tag2}, {tag3} - ---- - -## Domain Statistics - -- **Total Patterns**: 0 -- **Total Gotchas**: 0 -- **Total Reinforcements**: 0 -- **Last Session**: - -- **Sessions Recorded**: 0 -- **Last Cleanup**: - +## P: Titlu pattern concis +@2026-01-06 #tag1 #tag2 | explicit:high +Descriere 1-2 propoziții. +```lang +cod opțional ``` -## Template Fișier Global - -Fișierul `claude-learn-global.md` NU are frontmatter `paths:` și se încarcă întotdeauna: - -```markdown -# Claude Learn Memory: global - -Patterns și Gotchas universale, aplicabile tuturor domeniilor. - ---- - -## Patterns - -... - -## Gotchas - -... - -## Domain Statistics - -... +## G: Titlu gotcha concis +@2026-01-06 #tag1 #tag2 | inferred:med +**P**: Problema scurtă +**S**: Soluția scurtă ``` ---- +## Format Entry -## Câmpuri Metadata (v2.1.0) +### Header +``` +## {P|G}: {Titlu max 60 char} +``` +- `P` = Pattern (soluție repetabilă) +- `G` = Gotcha (capcană de evitat) -Fiecare entry include acum metadata pentru tracking și curățare. - -### Source - -Cum a fost capturat entry-ul: - -| Valoare | Descriere | Scor Cleanup | -|---------|-----------|--------------| -| `explicit` | Utilizatorul a cerut explicit salvarea ("ține minte", "remember") | +40 | -| `repeated` | Corecție repetată de 2+ ori pe același subiect | +30 | -| `inferred` | Dedus din conversație (eroare rezolvată, pattern detectat) | -10 | - -### Confidence - -Nivelul de încredere în utilitatea entry-ului: - -| Valoare | Descriere | Scor Cleanup | -|---------|-----------|--------------| -| `high` | Semnal puternic (comandă explicită, corecție repetată) | +20 | -| `medium` | Semnal moderat (preferință inferată, referință istorică) | 0 | -| `low` | Semnal slab (one-time fix posibil util) | -20 | - -### Reinforced - -Numărul de ori când entry-ul a fost folosit sau validat în sesiuni ulterioare. - -| Valoare | Interpretare | Scor Cleanup | -|---------|--------------|--------------| -| 0 | Niciodată folosit | -30 (dacă > 30 zile) | -| 1-2 | Folosit ocazional | +20 | -| 3+ | Entry valoros, foarte folosit | +50 | - -### Trigger - -Fraza originală care a declanșat salvarea. Util pentru: -- Audit: de ce a fost salvat acest entry? -- Cleanup: context pentru decizia de ștergere -- Debugging: verificare sistem de detecție semnal - ---- - -## Format Pattern (Complet) - -```markdown -### {Titlu Descriptiv} -**Discovered**: {YYYY-MM-DD} (feature: {context-scurt}) -**Source**: {source} | **Confidence**: {confidence} | **Reinforced**: {count} -**Trigger**: "{fraza care a declanșat salvarea}" -**Description**: {Descriere clară a pattern-ului și când să-l folosești} - -**Example** (`{file}:{lines}`): -\```{language} -{cod exemplu} -\``` - -**Tags**: {tag1}, {tag2}, {tag3} - ---- +### Metadata (o linie) +``` +@{YYYY-MM-DD} #{tag1} #{tag2} #{tag3} | {source}:{confidence}[:{reinforced}] ``` -## Format Gotcha (Complet) +| Câmp | Valori | Descriere | +|------|--------|-----------| +| date | YYYY-MM-DD | Data salvării | +| tags | max 3, cu # | Categorii pentru căutare | +| source | explicit/inferred/repeated | Cum a fost capturat | +| confidence | high/med/low | Nivelul de încredere | +| reinforced | N (doar dacă >0) | Câte validări | -```markdown -### {Titlu Descriptiv} -**Discovered**: {YYYY-MM-DD} (feature: {context-scurt}) -**Source**: {source} | **Confidence**: {confidence} | **Reinforced**: {count} -**Trigger**: "{fraza care a declanșat salvarea}" -**Problem**: {Ce problemă a apărut} -**Solution**: {Cum s-a rezolvat} +Exemple: +- `@2026-01-06 #git #workflow | explicit:high` +- `@2026-01-05 #vue #reactivity | inferred:med:3` -**Tags**: {tag1}, {tag2}, {tag3} - ---- +### Body Pattern +``` +{Descriere concisă 1-2 propoziții} +```{lang} +{cod opțional} +``` ``` ---- +### Body Gotcha +``` +**P**: {problema în max 100 char} +**S**: {soluția în max 100 char} +``` + +## Source Values + +| Valoare | Descriere | +|---------|-----------| +| `explicit` | Utilizatorul a cerut explicit ("ține minte") | +| `repeated` | Corecție repetată 2+ ori | +| `inferred` | Dedus din conversație | + +## Confidence Values + +| Valoare | Descriere | +|---------|-----------| +| `high` | Semnal puternic, comandă explicită | +| `med` | Semnal moderat, preferință inferată | +| `low` | Semnal slab, one-time fix util | ## Convenții -1. **Titluri**: Folosește titluri descriptive, nu generice - - ✅ "Vue Watch Needs Immediate Flag for Initial Load" - - ❌ "Vue Problem" +1. **Titluri**: Imperativ, descriptiv, max 60 char + - ✅ "Commit .claude/rules în Git" + - ❌ "Problema cu Git" -2. **Tags**: Folosește kebab-case, maxim 5 tags per entry - - ✅ `vue`, `reactivity`, `watch`, `initialization` - - ❌ `Vue.js`, `REACTIVITY`, `this is a tag` +2. **Tags**: Lowercase, max 3 + - ✅ `#git #workflow #team` + - ❌ `#Git, #WORKFLOW` -3. **Exemple**: Include întotdeauna cod exemplu când e posibil +3. **Descrieri**: Concise, 1-2 propoziții + - ✅ "Fișierele .claude/ trebuie incluse în Git pentru partajare." + - ❌ Paragrafe lungi -4. **Context**: Folosește feature name scurt pentru context - - ✅ `(feature: user-dashboard)` - - ❌ `(feature: implementing the new user dashboard with stats and charts)` +4. **Exemple cod**: Doar când adaugă valoare clară -5. **Frontmatter**: Fiecare fișier de domeniu (exceptând global) TREBUIE să aibă frontmatter cu `paths:` - - Paths-urile trebuie să corespundă cu cele din `claude-learn-domains.md` +## Comparație Format -6. **Trigger**: Păstrează fraza originală, fără modificări - - ✅ `"ține minte să folosești camelCase"` - - ❌ `"utilizatorul a cerut camelCase"` +| Aspect | v2.x | v3.0 | +|--------|------|------| +| Char/pattern | ~600 | ~200 | +| Metadata linii | 3 | 1 | +| Trigger câmp | Da | Nu | +| Statistics | Explicit | Calculat | +| Separatori | `---` | Spațiu | ---- +## Parsing Regex -## Backward Compatibility - -Entries vechi fără câmpurile noi sunt tratate ca: -- Source: `inferred` -- Confidence: `medium` -- Reinforced: `0` -- Trigger: `""` - -La prima editare sau reinforcement, metadata va fi adăugată automat. - ---- - -## Statistici Domeniu - -Fiecare fișier de domeniu include statistici la final: - -```markdown -## Domain Statistics - -- **Total Patterns**: {N} -- **Total Gotchas**: {M} -- **Total Reinforcements**: {R} -- **Last Session**: {YYYY-MM-DD} -- **Sessions Recorded**: {X} -- **Last Cleanup**: {YYYY-MM-DD} +``` +^## (P|G): (.+)$ → type, title +^@(\d{4}-\d{2}-\d{2}) (.+) \| (.+)$ → date, tags_meta, source_conf ``` -Aceste statistici sunt actualizate automat de: -- `/learn:analyze` - incrementează patterns/gotchas, sessions -- `/learn:cleanup` - decrementează la ștergeri, actualizează Last Cleanup -- Reinforcement tracking - incrementează Total Reinforcements +Extract tags: `#(\w+)` din tags_meta +Extract meta: split pe `:` → [source, confidence, reinforced?] diff --git a/plugins/learn/templates/domain-memory.md b/plugins/learn/templates/domain-memory.md index 6cd08ec..ceb7e96 100644 --- a/plugins/learn/templates/domain-memory.md +++ b/plugins/learn/templates/domain-memory.md @@ -1,60 +1,17 @@ ---- -paths: {DOMAIN_PATTERNS} ---- +# Claude Learn: {DOMAIN_NAME} + -# Claude Learn Memory: {DOMAIN_NAME} - -Patterns și Gotchas pentru domeniul **{DOMAIN_NAME}**. - ---- - -## Patterns - - ---- - -## Gotchas - - - ---- - -## Domain Statistics - -- **Total Patterns**: 0 -- **Total Gotchas**: 0 -- **Total Reinforcements**: 0 -- **Last Session**: - -- **Sessions Recorded**: 0 -- **Last Cleanup**: - diff --git a/plugins/learn/templates/memory-entry.json b/plugins/learn/templates/memory-entry.json index a162031..e518359 100644 --- a/plugins/learn/templates/memory-entry.json +++ b/plugins/learn/templates/memory-entry.json @@ -1,77 +1,34 @@ { + "format_version": "3.0", "pattern": { - "title": "", - "discovered": "", - "feature": "", - "domain": "", - "description": "", - "example": { - "file": "", - "lines": "", - "language": "", - "code": "" - }, - "tags": [], + "type": "P", + "title": "max 60 char, imperativ", + "date": "YYYY-MM-DD", + "tags": ["max", "3", "tags"], "source": "explicit|inferred|repeated", - "confidence": "high|medium|low", + "confidence": "high|med|low", "reinforced": 0, - "last_reinforced": "", - "trigger": "" + "description": "1-2 propoziții", + "example": "opțional, cod cu ```lang" }, "gotcha": { - "title": "", - "discovered": "", - "feature": "", - "domain": "", - "problem": "", - "solution": "", - "tags": [], + "type": "G", + "title": "max 60 char", + "date": "YYYY-MM-DD", + "tags": ["max", "3", "tags"], "source": "explicit|inferred|repeated", - "confidence": "high|medium|low", + "confidence": "high|med|low", "reinforced": 0, - "last_reinforced": "", - "trigger": "" - }, - "statistics": { - "total_patterns": 0, - "total_gotchas": 0, - "total_reinforcements": 0, - "last_session": "", - "sessions_recorded": 0, - "last_cleanup": "" + "problem": "scurt", + "solution": "scurt" }, + "metadata_format": "@{date} #{tag1} #{tag2} | {source}:{confidence}[:{reinforced}]", "domains": { - "backend": { - "patterns": ["src/api/**/*.ts", "src/server/**/*.ts", "services/**/*"] - }, - "frontend": { - "patterns": ["src/components/**/*.tsx", "src/pages/**/*.tsx", "**/*.css"] - }, - "database": { - "patterns": ["src/db/**/*.ts", "migrations/**/*.ts", "**/*.sql"] - }, - "testing": { - "patterns": ["**/*.test.ts", "**/*.spec.ts", "tests/**/*"] - }, - "deployment": { - "patterns": ["Dockerfile", "docker-compose.yml", "**/*.yml", "infra/**/*"] - }, - "global": { - "patterns": [] - } - }, - "_metadata_fields": { - "source": { - "explicit": "Utilizatorul a cerut explicit salvarea (ține minte, remember)", - "inferred": "Dedus din conversație (eroare rezolvată, pattern detectat)", - "repeated": "Corecție repetată de 2+ ori pe același subiect" - }, - "confidence": { - "high": "Semnal puternic (comandă explicită, corecție repetată)", - "medium": "Semnal moderat (preferință inferată, referință istorică)", - "low": "Semnal slab (one-time fix posibil util)" - }, - "reinforced": "Numărul de ori când entry-ul a fost folosit/validat în sesiuni ulterioare", - "trigger": "Fraza originală care a declanșat salvarea (pentru audit/cleanup)" + "backend": ["src/api/**/*.ts", "src/server/**/*.ts", "services/**/*"], + "frontend": ["src/components/**/*.tsx", "src/pages/**/*.tsx", "**/*.css"], + "database": ["src/db/**/*.ts", "migrations/**/*.ts", "**/*.sql"], + "testing": ["**/*.test.ts", "**/*.spec.ts", "tests/**/*"], + "deployment": ["Dockerfile", "docker-compose.yml", "**/*.yml", "infra/**/*"], + "global": [] } }