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>
This commit is contained in:
@@ -10,9 +10,9 @@
|
|||||||
{
|
{
|
||||||
"name": "learn",
|
"name": "learn",
|
||||||
"source": "./plugins/learn",
|
"source": "./plugins/learn",
|
||||||
"description": "Domain-based memory with selective saving, signal detection, and memory hygiene",
|
"description": "Minimalist memory format with domain-based storage and signal detection",
|
||||||
"version": "2.2.0",
|
"version": "3.0.0",
|
||||||
"keywords": ["learn", "memory", "patterns", "gotchas", "domains", "cleanup", "hygiene"]
|
"keywords": ["learn", "memory", "patterns", "gotchas", "domains", "minimalist"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
## G: SessionEnd hook nu suportă type: "prompt"
|
||||||
**Discovered**: 2026-01-06 (feature: learn-plugin)
|
@2026-01-06 #claude-code #hooks #plugin | inferred:med
|
||||||
**Source**: explicit | **Confidence**: high | **Reinforced**: 0
|
**P**: SessionEnd hooks în Claude Code acceptă doar `type: "command"`, nu `type: "prompt"`.
|
||||||
**Trigger**: "ține minte"
|
**S**: Folosește `type: "command"` pentru SessionEnd. Pentru analiză inteligentă, rulează manual `/learn:analyze`.
|
||||||
**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**: -
|
|
||||||
|
|||||||
22
CHANGELOG.md
22
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/),
|
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).
|
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
|
## [2.1.0] - 2026-01-06
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "learn",
|
"name": "learn",
|
||||||
"description": "Claude Learn: Session analysis for patterns and gotchas with domain-based memory, selective saving, and memory hygiene",
|
"description": "Claude Learn: Minimalist memory format with domain-based storage and signal detection",
|
||||||
"version": "2.2.0",
|
"version": "3.0.0",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Romfast Team"
|
"name": "Romfast Team"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -266,64 +266,53 @@ Care dintre acestea vrei să le salvez?
|
|||||||
- [edit N] - Modifică propunerea N
|
- [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`
|
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
|
```markdown
|
||||||
### {Titlu}
|
## P: {Titlu max 60 char}
|
||||||
**Discovered**: {YYYY-MM-DD} (feature: {context})
|
@{YYYY-MM-DD} #{tag1} #{tag2} | {source}:{confidence}
|
||||||
**Source**: {source} | **Confidence**: {confidence} | **Reinforced**: 0
|
{Descriere 1-2 propoziții}
|
||||||
**Trigger**: "{fraza care a declanșat salvarea}"
|
|
||||||
**Description**: {descriere}
|
|
||||||
|
|
||||||
**Example** (`{file}:{lines}`):
|
|
||||||
\```{language}
|
\```{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
|
```markdown
|
||||||
### {Titlu}
|
## G: {Titlu max 60 char}
|
||||||
**Discovered**: {YYYY-MM-DD} (feature: {context})
|
@{YYYY-MM-DD} #{tag1} #{tag2} | {source}:{confidence}
|
||||||
**Source**: {source} | **Confidence**: {confidence} | **Reinforced**: 0
|
**P**: {problema scurtă}
|
||||||
**Trigger**: "{fraza care a declanșat salvarea}"
|
**S**: {soluția scurtă}
|
||||||
**Problem**: {problema}
|
|
||||||
**Solution**: {soluția}
|
|
||||||
|
|
||||||
**Tags**: {tags}
|
|
||||||
|
|
||||||
---
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 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ă:
|
### Pas 7: Confirmă
|
||||||
- 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:
|
✅ Salvat în claude-learn-{domain}.md:
|
||||||
- {N} patterns adăugate
|
- {N} patterns adăugate
|
||||||
- {M} gotchas adăugate
|
- {M} gotchas adăugate
|
||||||
|
|
||||||
📈 Entries reinforced: {X}
|
📈 Entries reinforced: {X}
|
||||||
|
|
||||||
Statistici {domain}: {P} patterns, {G} gotchas, {R} reinforcements total
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Notă:** Statisticile se calculează dinamic cu `/learn:status`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Argument: $ARGUMENTS
|
## Argument: $ARGUMENTS
|
||||||
@@ -337,21 +326,16 @@ Dacă argumentul este:
|
|||||||
|
|
||||||
## Compatibilitate Înapoi
|
## Compatibilitate Înapoi
|
||||||
|
|
||||||
### Format Vechi de Memorie
|
### Format v2.x (verbose)
|
||||||
Dacă există fișierul vechi `claude-learn-memory.md` fără frontmatter:
|
Entries în format vechi (cu `### Titlu`, `**Discovered**:`, `**Source**:`, etc.) sunt citite normal.
|
||||||
```
|
La prima editare, sunt convertite automat la formatul minimalist v3.0.
|
||||||
⚠️ Detectat format vechi de memorie (claude-learn-memory.md)
|
|
||||||
|
|
||||||
Vrei să migrez memoria existentă către noul sistem cu domenii? [y/n]
|
### Parsing Entries v3.0
|
||||||
- y → rulează /learn:import pe fișierul vechi
|
Regex pentru parsing:
|
||||||
- n → continuă fără migrare
|
```
|
||||||
|
^## (P|G): (.+)$ → type, title
|
||||||
|
^@(\d{4}-\d{2}-\d{2}) (.+) \| (.+)$ → date, tags, meta
|
||||||
```
|
```
|
||||||
|
|
||||||
### Entries Fără Metadata
|
Tags: extrage toate `#(\w+)` din linia metadata
|
||||||
Entries vechi fără câmpurile noi (Source, Confidence, Reinforced, Trigger) sunt tratate ca:
|
Meta: `{source}:{confidence}[:{reinforced}]`
|
||||||
- Source: inferred
|
|
||||||
- Confidence: medium
|
|
||||||
- Reinforced: 0
|
|
||||||
- Trigger: ""
|
|
||||||
|
|
||||||
La prima editare sau reinforcement, metadata va fi adăugată automat.
|
|
||||||
|
|||||||
@@ -2,234 +2,130 @@
|
|||||||
paths: ".claude/rules/claude-learn-*.md"
|
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
|
## Arhitectura Fișierelor
|
||||||
|
|
||||||
```
|
```
|
||||||
.claude/rules/
|
.claude/rules/
|
||||||
├── claude-learn-domains.md # Configurația domeniilor
|
├── claude-learn-domains.md # Configurația domeniilor
|
||||||
├── claude-learn-backend.md # Memorie backend (paths: src/api/**)
|
├── claude-learn-backend.md # Memorie backend
|
||||||
├── claude-learn-frontend.md # Memorie frontend (paths: src/components/**)
|
├── claude-learn-frontend.md # Memorie frontend
|
||||||
├── claude-learn-database.md # Memorie database (paths: src/db/**)
|
├── claude-learn-database.md # Memorie database
|
||||||
├── claude-learn-testing.md # Memorie testing (paths: **/*.test.ts)
|
├── claude-learn-testing.md # Memorie testing
|
||||||
├── claude-learn-deployment.md # Memorie deployment (paths: Dockerfile, *.yml)
|
├── claude-learn-deployment.md # Memorie deployment
|
||||||
└── claude-learn-global.md # Memorie globală (fără paths - mereu încărcat)
|
└── claude-learn-global.md # Memorie globală (mereu încărcat)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Template Fișier Domeniu
|
## Template Fișier Domeniu
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
---
|
# Claude Learn: {domain}
|
||||||
paths: src/api/**/*.ts, src/server/**/*.ts
|
<!-- paths: src/api/**/*.ts, src/server/**/*.ts -->
|
||||||
---
|
|
||||||
|
|
||||||
# Claude Learn Memory: backend
|
## P: Titlu pattern concis
|
||||||
|
@2026-01-06 #tag1 #tag2 | explicit:high
|
||||||
Patterns și Gotchas pentru domeniul **backend**.
|
Descriere 1-2 propoziții.
|
||||||
|
```lang
|
||||||
---
|
cod opțional
|
||||||
|
|
||||||
## 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**: -
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Template Fișier Global
|
## G: Titlu gotcha concis
|
||||||
|
@2026-01-06 #tag1 #tag2 | inferred:med
|
||||||
Fișierul `claude-learn-global.md` NU are frontmatter `paths:` și se încarcă întotdeauna:
|
**P**: Problema scurtă
|
||||||
|
**S**: Soluția scurtă
|
||||||
```markdown
|
|
||||||
# Claude Learn Memory: global
|
|
||||||
|
|
||||||
Patterns și Gotchas universale, aplicabile tuturor domeniilor.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Patterns
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
## Gotchas
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
## Domain Statistics
|
|
||||||
|
|
||||||
...
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
## 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.
|
### Metadata (o linie)
|
||||||
|
```
|
||||||
### Source
|
@{YYYY-MM-DD} #{tag1} #{tag2} #{tag3} | {source}:{confidence}[:{reinforced}]
|
||||||
|
|
||||||
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}
|
|
||||||
|
|
||||||
---
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 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
|
Exemple:
|
||||||
### {Titlu Descriptiv}
|
- `@2026-01-06 #git #workflow | explicit:high`
|
||||||
**Discovered**: {YYYY-MM-DD} (feature: {context-scurt})
|
- `@2026-01-05 #vue #reactivity | inferred:med:3`
|
||||||
**Source**: {source} | **Confidence**: {confidence} | **Reinforced**: {count}
|
|
||||||
**Trigger**: "{fraza care a declanșat salvarea}"
|
|
||||||
**Problem**: {Ce problemă a apărut}
|
|
||||||
**Solution**: {Cum s-a rezolvat}
|
|
||||||
|
|
||||||
**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
|
## Convenții
|
||||||
|
|
||||||
1. **Titluri**: Folosește titluri descriptive, nu generice
|
1. **Titluri**: Imperativ, descriptiv, max 60 char
|
||||||
- ✅ "Vue Watch Needs Immediate Flag for Initial Load"
|
- ✅ "Commit .claude/rules în Git"
|
||||||
- ❌ "Vue Problem"
|
- ❌ "Problema cu Git"
|
||||||
|
|
||||||
2. **Tags**: Folosește kebab-case, maxim 5 tags per entry
|
2. **Tags**: Lowercase, max 3
|
||||||
- ✅ `vue`, `reactivity`, `watch`, `initialization`
|
- ✅ `#git #workflow #team`
|
||||||
- ❌ `Vue.js`, `REACTIVITY`, `this is a tag`
|
- ❌ `#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
|
4. **Exemple cod**: Doar când adaugă valoare clară
|
||||||
- ✅ `(feature: user-dashboard)`
|
|
||||||
- ❌ `(feature: implementing the new user dashboard with stats and charts)`
|
|
||||||
|
|
||||||
5. **Frontmatter**: Fiecare fișier de domeniu (exceptând global) TREBUIE să aibă frontmatter cu `paths:`
|
## Comparație Format
|
||||||
- Paths-urile trebuie să corespundă cu cele din `claude-learn-domains.md`
|
|
||||||
|
|
||||||
6. **Trigger**: Păstrează fraza originală, fără modificări
|
| Aspect | v2.x | v3.0 |
|
||||||
- ✅ `"ține minte să folosești camelCase"`
|
|--------|------|------|
|
||||||
- ❌ `"utilizatorul a cerut camelCase"`
|
| Char/pattern | ~600 | ~200 |
|
||||||
|
| Metadata linii | 3 | 1 |
|
||||||
|
| Trigger câmp | Da | Nu |
|
||||||
|
| Statistics | Explicit | Calculat |
|
||||||
|
| Separatori | `---` | Spațiu |
|
||||||
|
|
||||||
---
|
## Parsing Regex
|
||||||
|
|
||||||
## Backward Compatibility
|
```
|
||||||
|
^## (P|G): (.+)$ → type, title
|
||||||
Entries vechi fără câmpurile noi sunt tratate ca:
|
^@(\d{4}-\d{2}-\d{2}) (.+) \| (.+)$ → date, tags_meta, source_conf
|
||||||
- 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}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Aceste statistici sunt actualizate automat de:
|
Extract tags: `#(\w+)` din tags_meta
|
||||||
- `/learn:analyze` - incrementează patterns/gotchas, sessions
|
Extract meta: split pe `:` → [source, confidence, reinforced?]
|
||||||
- `/learn:cleanup` - decrementează la ștergeri, actualizează Last Cleanup
|
|
||||||
- Reinforcement tracking - incrementează Total Reinforcements
|
|
||||||
|
|||||||
@@ -1,60 +1,17 @@
|
|||||||
---
|
# Claude Learn: {DOMAIN_NAME}
|
||||||
paths: {DOMAIN_PATTERNS}
|
<!-- paths: {DOMAIN_PATTERNS} -->
|
||||||
---
|
|
||||||
|
|
||||||
# Claude Learn Memory: {DOMAIN_NAME}
|
<!-- Format minimalist v3.0
|
||||||
|
## P: Titlu pattern (max 60 char)
|
||||||
Patterns și Gotchas pentru domeniul **{DOMAIN_NAME}**.
|
@YYYY-MM-DD #tag1 #tag2 | source:confidence[:reinforced]
|
||||||
|
Descriere concisă 1-2 propoziții.
|
||||||
---
|
```lang
|
||||||
|
cod opțional
|
||||||
## Patterns
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Format pentru patterns:
|
|
||||||
|
|
||||||
### Titlu Descriptiv
|
|
||||||
**Discovered**: YYYY-MM-DD (feature: context)
|
|
||||||
**Source**: explicit | **Confidence**: high | **Reinforced**: 0
|
|
||||||
**Trigger**: "fraza originală care a declanșat salvarea"
|
|
||||||
**Description**: Descriere clară a pattern-ului
|
|
||||||
|
|
||||||
**Example** (`file:lines`):
|
|
||||||
```language
|
|
||||||
cod exemplu
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**Tags**: tag1, tag2, tag3
|
## G: Titlu gotcha
|
||||||
|
@YYYY-MM-DD #tag1 #tag2 | source:confidence
|
||||||
---
|
**P**: Problema scurtă
|
||||||
|
**S**: Soluția scurtă
|
||||||
-->
|
-->
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Gotchas
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Format pentru gotchas:
|
|
||||||
|
|
||||||
### Titlu Descriptiv
|
|
||||||
**Discovered**: YYYY-MM-DD (feature: context)
|
|
||||||
**Source**: explicit | **Confidence**: high | **Reinforced**: 0
|
|
||||||
**Trigger**: "fraza originală care a declanșat salvarea"
|
|
||||||
**Problem**: Ce a mers prost
|
|
||||||
**Solution**: Cum s-a rezolvat
|
|
||||||
|
|
||||||
**Tags**: tag1, tag2
|
|
||||||
|
|
||||||
---
|
|
||||||
-->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Domain Statistics
|
|
||||||
|
|
||||||
- **Total Patterns**: 0
|
|
||||||
- **Total Gotchas**: 0
|
|
||||||
- **Total Reinforcements**: 0
|
|
||||||
- **Last Session**: -
|
|
||||||
- **Sessions Recorded**: 0
|
|
||||||
- **Last Cleanup**: -
|
|
||||||
|
|||||||
@@ -1,77 +1,34 @@
|
|||||||
{
|
{
|
||||||
|
"format_version": "3.0",
|
||||||
"pattern": {
|
"pattern": {
|
||||||
"title": "",
|
"type": "P",
|
||||||
"discovered": "",
|
"title": "max 60 char, imperativ",
|
||||||
"feature": "",
|
"date": "YYYY-MM-DD",
|
||||||
"domain": "",
|
"tags": ["max", "3", "tags"],
|
||||||
"description": "",
|
|
||||||
"example": {
|
|
||||||
"file": "",
|
|
||||||
"lines": "",
|
|
||||||
"language": "",
|
|
||||||
"code": ""
|
|
||||||
},
|
|
||||||
"tags": [],
|
|
||||||
"source": "explicit|inferred|repeated",
|
"source": "explicit|inferred|repeated",
|
||||||
"confidence": "high|medium|low",
|
"confidence": "high|med|low",
|
||||||
"reinforced": 0,
|
"reinforced": 0,
|
||||||
"last_reinforced": "",
|
"description": "1-2 propoziții",
|
||||||
"trigger": ""
|
"example": "opțional, cod cu ```lang"
|
||||||
},
|
},
|
||||||
"gotcha": {
|
"gotcha": {
|
||||||
"title": "",
|
"type": "G",
|
||||||
"discovered": "",
|
"title": "max 60 char",
|
||||||
"feature": "",
|
"date": "YYYY-MM-DD",
|
||||||
"domain": "",
|
"tags": ["max", "3", "tags"],
|
||||||
"problem": "",
|
|
||||||
"solution": "",
|
|
||||||
"tags": [],
|
|
||||||
"source": "explicit|inferred|repeated",
|
"source": "explicit|inferred|repeated",
|
||||||
"confidence": "high|medium|low",
|
"confidence": "high|med|low",
|
||||||
"reinforced": 0,
|
"reinforced": 0,
|
||||||
"last_reinforced": "",
|
"problem": "scurt",
|
||||||
"trigger": ""
|
"solution": "scurt"
|
||||||
},
|
|
||||||
"statistics": {
|
|
||||||
"total_patterns": 0,
|
|
||||||
"total_gotchas": 0,
|
|
||||||
"total_reinforcements": 0,
|
|
||||||
"last_session": "",
|
|
||||||
"sessions_recorded": 0,
|
|
||||||
"last_cleanup": ""
|
|
||||||
},
|
},
|
||||||
|
"metadata_format": "@{date} #{tag1} #{tag2} | {source}:{confidence}[:{reinforced}]",
|
||||||
"domains": {
|
"domains": {
|
||||||
"backend": {
|
"backend": ["src/api/**/*.ts", "src/server/**/*.ts", "services/**/*"],
|
||||||
"patterns": ["src/api/**/*.ts", "src/server/**/*.ts", "services/**/*"]
|
"frontend": ["src/components/**/*.tsx", "src/pages/**/*.tsx", "**/*.css"],
|
||||||
},
|
"database": ["src/db/**/*.ts", "migrations/**/*.ts", "**/*.sql"],
|
||||||
"frontend": {
|
"testing": ["**/*.test.ts", "**/*.spec.ts", "tests/**/*"],
|
||||||
"patterns": ["src/components/**/*.tsx", "src/pages/**/*.tsx", "**/*.css"]
|
"deployment": ["Dockerfile", "docker-compose.yml", "**/*.yml", "infra/**/*"],
|
||||||
},
|
"global": []
|
||||||
"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)"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user