feat: Initial release of claude-learn plugin v1.0.0
Commands: - /learn:analyze - Analyze conversation for patterns and gotchas - /learn:import - Import from other memory files (auto-build-memory.md, JSON) - /learn:reflect - Consolidate and clean memory - /learn:status - Show memory statistics Features: - Stop hook suggests /learn:analyze after significant sessions - Uses single memory file: .claude/rules/claude-learn-memory.md - Structured format for patterns (solutions) and gotchas (problems) - Import support for migrating existing memories 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
8
plugin/.claude-plugin/plugin.json
Normal file
8
plugin/.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "learn",
|
||||
"description": "Claude Learn: Session analysis for patterns and gotchas",
|
||||
"version": "1.0.0",
|
||||
"author": {
|
||||
"name": "Romfast Team"
|
||||
}
|
||||
}
|
||||
49
plugin/README.md
Normal file
49
plugin/README.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Claude Learn Plugin
|
||||
|
||||
This is the main plugin directory. For installation and usage instructions, see the [main README](../README.md).
|
||||
|
||||
## Plugin Structure
|
||||
|
||||
```
|
||||
plugin/
|
||||
├── .claude-plugin/
|
||||
│ └── plugin.json # Plugin manifest
|
||||
├── commands/
|
||||
│ ├── analyze.md # /learn:analyze command
|
||||
│ ├── import.md # /learn:import command
|
||||
│ ├── reflect.md # /learn:reflect command
|
||||
│ └── status.md # /learn:status command
|
||||
├── hooks/
|
||||
│ └── hooks.json # Stop hook configuration
|
||||
├── rules/
|
||||
│ └── memory-format.md # Memory file format spec
|
||||
├── templates/
|
||||
│ └── memory-entry.json # JSON templates
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
To test locally:
|
||||
|
||||
```bash
|
||||
claude --plugin-dir /path/to/claude-learn/plugin
|
||||
```
|
||||
|
||||
## Commands Overview
|
||||
|
||||
### /learn:analyze
|
||||
Analyzes the current conversation and proposes patterns/gotchas to save.
|
||||
|
||||
### /learn:import
|
||||
Imports memories from other files (auto-build-memory.md, JSON, etc.)
|
||||
|
||||
### /learn:reflect
|
||||
Consolidates duplicates, promotes frequent patterns to CLAUDE.md.
|
||||
|
||||
### /learn:status
|
||||
Shows memory statistics and suggestions.
|
||||
|
||||
## Hook
|
||||
|
||||
The Stop hook triggers after significant conversations, suggesting `/learn:analyze` when appropriate.
|
||||
130
plugin/commands/analyze.md
Normal file
130
plugin/commands/analyze.md
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
description: Analizează conversația și propune lecții de salvat
|
||||
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.
|
||||
|
||||
## Ce să cauți:
|
||||
|
||||
### 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
|
||||
|
||||
### Reguli CLAUDE.md
|
||||
- Convenții noi de documentat
|
||||
- Comenzi de adăugat
|
||||
- Workflow-uri de standardizat
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. Scanează Conversația
|
||||
- Identifică tool calls cu erori → potențiale gotchas
|
||||
- Identifică soluții aplicate → potențiale patterns
|
||||
- Identifică decizii tehnice → posibile reguli noi
|
||||
|
||||
### 2. Generează Propuneri
|
||||
Format pentru fiecare insight:
|
||||
|
||||
**[PATTERN/GOTCHA] Titlu Scurt**
|
||||
- **Categorie**: patterns | gotchas | rules
|
||||
- **Descriere**: Ce s-a învățat
|
||||
- **Context**: În ce situație e relevant
|
||||
- **Exemplu**: Cod sau pași concreți
|
||||
- **Tags**: [tag1, tag2, tag3]
|
||||
|
||||
### 3. Prezintă Utilizatorului
|
||||
```
|
||||
📚 Am identificat {N} lecții din această conversație:
|
||||
|
||||
1. [PATTERN] {Titlu}
|
||||
{Descriere scurtă}
|
||||
|
||||
2. [GOTCHA] {Titlu}
|
||||
{Descriere scurtă}
|
||||
|
||||
Care dintre acestea vrei să le salvez în documentație?
|
||||
- [1, 2, 3] - Selectează specific
|
||||
- [all] - Toate
|
||||
- [none] - Niciuna
|
||||
- [edit N] - Modifică propunerea N
|
||||
```
|
||||
|
||||
### 4. Salvează în .claude/rules/claude-learn-memory.md
|
||||
|
||||
Dacă fișierul nu există, creează-l cu template-ul de mai jos.
|
||||
|
||||
Folosește formatul:
|
||||
|
||||
```markdown
|
||||
# Claude Learn Memory
|
||||
|
||||
Patterns și Gotchas învățate din sesiuni de lucru.
|
||||
|
||||
---
|
||||
|
||||
## Patterns
|
||||
|
||||
### {Titlu}
|
||||
**Discovered**: {YYYY-MM-DD} (feature: {context})
|
||||
**Description**: {descriere}
|
||||
|
||||
**Example** (`{file}:{lines}`):
|
||||
\```{language}
|
||||
{code}
|
||||
\```
|
||||
|
||||
**Tags**: {tags}
|
||||
|
||||
---
|
||||
|
||||
## Gotchas
|
||||
|
||||
### {Titlu}
|
||||
**Discovered**: {YYYY-MM-DD} (feature: {context})
|
||||
**Problem**: {problema}
|
||||
**Solution**: {soluția}
|
||||
|
||||
**Tags**: {tags}
|
||||
|
||||
---
|
||||
|
||||
## Memory Statistics
|
||||
|
||||
- **Total Patterns**: {N}
|
||||
- **Total Gotchas**: {N}
|
||||
- **Last Session**: {YYYY-MM-DD}
|
||||
- **Sessions Recorded**: {N}
|
||||
```
|
||||
|
||||
### 5. Actualizează Statistici
|
||||
La sfârșitul fișierului memory.md, actualizează secțiunea Memory Statistics:
|
||||
- Incrementează Total Patterns/Gotchas
|
||||
- Actualizează Last Session la data curentă
|
||||
- Incrementează Sessions Recorded
|
||||
|
||||
### 6. Confirmă
|
||||
```
|
||||
✅ Salvat în .claude/rules/claude-learn-memory.md:
|
||||
- 2 patterns adăugate
|
||||
- 1 gotcha adăugată
|
||||
|
||||
Statistici actualizate: 15 patterns, 8 gotchas
|
||||
```
|
||||
|
||||
## Argument: $ARGUMENTS
|
||||
|
||||
Dacă argumentul este:
|
||||
- `auto` sau gol → detectează toate categoriile
|
||||
- `patterns` → focus doar pe patterns
|
||||
- `gotchas` → focus doar pe gotchas
|
||||
125
plugin/commands/import.md
Normal file
125
plugin/commands/import.md
Normal file
@@ -0,0 +1,125 @@
|
||||
---
|
||||
description: Importă patterns și gotchas din alte fișiere de memorie
|
||||
argument-hint: <file-path> - Calea către fișierul sursă (ex: .claude/rules/auto-build-memory.md)
|
||||
---
|
||||
|
||||
# Import Memorie din Alt Fișier
|
||||
|
||||
Importă patterns și gotchas dintr-un fișier existent în formatul claude-learn-memory.md.
|
||||
|
||||
## Argument: $ARGUMENTS
|
||||
|
||||
Calea către fișierul sursă. Exemple:
|
||||
- `.claude/rules/auto-build-memory.md`
|
||||
- `/path/to/other-project/.claude/rules/memory.md`
|
||||
- `./backup/memories.json`
|
||||
|
||||
## Fișiere Suportate
|
||||
|
||||
- `.claude/rules/auto-build-memory.md` (format auto-build plugin)
|
||||
- `.claude/rules/*.md` (orice fișier markdown cu secțiuni Patterns/Gotchas)
|
||||
- Fișiere JSON cu structură `{patterns: [], gotchas: []}`
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. Verifică Fișierul Sursă
|
||||
```
|
||||
Verifică dacă fișierul există și poate fi citit.
|
||||
Dacă nu există, afișează eroare și sugestii.
|
||||
```
|
||||
|
||||
Dacă `$ARGUMENTS` este gol, afișează:
|
||||
```
|
||||
⚠️ Specifică fișierul sursă:
|
||||
|
||||
/learn:import .claude/rules/auto-build-memory.md
|
||||
|
||||
Fișiere comune de importat:
|
||||
- .claude/rules/auto-build-memory.md (auto-build plugin)
|
||||
- .claude/rules/*-memory.md (alte plugins)
|
||||
```
|
||||
|
||||
### 2. Detectează Formatul
|
||||
- Markdown cu `## Patterns` și `## Gotchas` → parsează secțiuni
|
||||
- JSON cu array-uri → convertește direct
|
||||
- Alt format → eroare cu instrucțiuni
|
||||
|
||||
### 3. Extrage Entries
|
||||
Pentru fiecare pattern/gotcha găsit:
|
||||
- Titlu (din ### heading)
|
||||
- Descriere/Problem/Solution
|
||||
- Tags (dacă există)
|
||||
- Data descoperirii (dacă există, altfel data curentă)
|
||||
|
||||
### 4. Prezintă Preview
|
||||
```
|
||||
📥 Am găsit în {file}:
|
||||
- {N} patterns
|
||||
- {M} gotchas
|
||||
|
||||
Preview:
|
||||
1. [PATTERN] {Titlu1}
|
||||
2. [PATTERN] {Titlu2}
|
||||
3. [GOTCHA] {Titlu3}
|
||||
...
|
||||
|
||||
Vrei să le import toate în claude-learn-memory.md?
|
||||
- [all] - Importă toate
|
||||
- [1, 3, 5] - Selectează specific
|
||||
- [none] - Anulează
|
||||
```
|
||||
|
||||
### 5. Verifică Duplicate
|
||||
Pentru fiecare entry:
|
||||
- Verifică dacă există deja în claude-learn-memory.md (după titlu)
|
||||
- Dacă există → skip și raportează
|
||||
- Dacă nu există → adaugă
|
||||
|
||||
### 6. Merge și Salvează
|
||||
- Dacă `.claude/rules/claude-learn-memory.md` nu există, creează-l cu template gol
|
||||
- Adaugă entries noi la claude-learn-memory.md
|
||||
- Păstrează ordinea: Patterns apoi Gotchas
|
||||
- Actualizează statisticile
|
||||
|
||||
### 7. Confirmă
|
||||
```
|
||||
✅ Import complet:
|
||||
- {X} patterns importate (Y skipped - duplicate)
|
||||
- {Z} gotchas importate
|
||||
|
||||
Statistici actualizate: {total} patterns, {total} gotchas
|
||||
```
|
||||
|
||||
## Exemple Utilizare
|
||||
|
||||
```bash
|
||||
# Import din auto-build memory (comun pentru proiecte cu auto-build plugin)
|
||||
/learn:import .claude/rules/auto-build-memory.md
|
||||
|
||||
# Import din alt proiect
|
||||
/learn:import /path/to/other-project/.claude/rules/memory.md
|
||||
|
||||
# Import din JSON backup
|
||||
/learn:import ./backup/memories.json
|
||||
```
|
||||
|
||||
## Tratare Erori
|
||||
|
||||
Dacă fișierul nu există:
|
||||
```
|
||||
❌ Fișierul nu a fost găsit: {path}
|
||||
|
||||
Verifică:
|
||||
1. Calea este corectă
|
||||
2. Fișierul există
|
||||
3. Ai permisiuni de citire
|
||||
```
|
||||
|
||||
Dacă formatul nu este recunoscut:
|
||||
```
|
||||
❌ Format nerecunoscut pentru: {path}
|
||||
|
||||
Formate suportate:
|
||||
- Markdown cu secțiuni ## Patterns și ## Gotchas
|
||||
- JSON cu structură {patterns: [], gotchas: []}
|
||||
```
|
||||
95
plugin/commands/reflect.md
Normal file
95
plugin/commands/reflect.md
Normal file
@@ -0,0 +1,95 @@
|
||||
---
|
||||
description: Sintetizează patterns din mai multe sesiuni și curăță duplicatele
|
||||
---
|
||||
|
||||
# Reflecție și Sinteză Memory
|
||||
|
||||
Analizează toate patterns și gotchas și:
|
||||
1. Identifică duplicate sau suprapuneri
|
||||
2. Consolidează patterns similare
|
||||
3. Identifică patterns care lipsesc din CLAUDE.md principal
|
||||
4. Propune actualizări pentru CLAUDE.md proiect
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. Citește Memory
|
||||
Citește `.claude/rules/claude-learn-memory.md`
|
||||
|
||||
Dacă fișierul nu există:
|
||||
```
|
||||
ℹ️ Nu există încă un fișier de memorie.
|
||||
Rulează /learn:analyze pentru a crea primul entry.
|
||||
```
|
||||
|
||||
### 2. Analizează Conținut
|
||||
|
||||
#### Duplicate
|
||||
- Identifică patterns/gotchas cu titluri similare
|
||||
- Propune consolidare
|
||||
|
||||
#### Patterns Frecvente
|
||||
- Identifică tags care apar de 3+ ori
|
||||
- Aceste patterns sunt candidați pentru CLAUDE.md principal
|
||||
|
||||
#### Patterns Învechite
|
||||
- Identifică entries mai vechi de 90 zile fără utilizare
|
||||
- Propune arhivare sau ștergere
|
||||
|
||||
### 3. Prezintă Raport
|
||||
```
|
||||
📊 Raport Reflecție Memory
|
||||
|
||||
Statistici curente:
|
||||
- {N} patterns
|
||||
- {M} gotchas
|
||||
- {K} tags unice
|
||||
|
||||
🔄 Duplicate găsite: {X}
|
||||
- "{Pattern A}" și "{Pattern B}" sunt similare
|
||||
|
||||
⭐ Candidați pentru CLAUDE.md: {Y}
|
||||
- Tag "vue" apare în 5 patterns → propun secțiune Vue în CLAUDE.md
|
||||
- Tag "api" apare în 4 patterns → propun secțiune API în CLAUDE.md
|
||||
|
||||
🗑️ Posibil învechite: {Z}
|
||||
- "{Gotcha veche}" - 120 zile, nicio referință
|
||||
|
||||
Ce vrei să fac?
|
||||
- [consolidate] - Consolidează duplicatele
|
||||
- [promote] - Mută candidații în CLAUDE.md
|
||||
- [archive] - Arhivează entries vechi
|
||||
- [all] - Toate acțiunile
|
||||
- [none] - Doar raportul
|
||||
```
|
||||
|
||||
### 4. Consolidează Duplicate (dacă selectat)
|
||||
- Merge entries similare
|
||||
- Păstrează cel mai recent/complet
|
||||
- Actualizează statistici
|
||||
|
||||
### 5. Promovează în CLAUDE.md (dacă selectat)
|
||||
- Identifică CLAUDE.md din proiect
|
||||
- Propune secțiuni noi bazate pe patterns frecvente
|
||||
- Prezintă diff pentru aprobare
|
||||
- După aprobare, actualizează CLAUDE.md
|
||||
|
||||
### 6. Arhivează Vechi (dacă selectat)
|
||||
- Mută entries vechi la sfârșitul fișierului într-o secțiune `## Archived`
|
||||
- Sau șterge complet (cu confirmare)
|
||||
|
||||
### 7. Confirmă
|
||||
```
|
||||
✅ Reflecție completă:
|
||||
- {X} duplicate consolidate
|
||||
- {Y} patterns promovate în CLAUDE.md
|
||||
- {Z} entries arhivate
|
||||
|
||||
Statistici actualizate: {total} patterns, {total} gotchas
|
||||
```
|
||||
|
||||
## Când să rulezi /learn:reflect
|
||||
|
||||
- După 10+ sesiuni de /learn:analyze
|
||||
- Când ai 20+ entries în memory
|
||||
- Înainte de release-uri mari
|
||||
- Lunar, pentru mentenanță
|
||||
77
plugin/commands/status.md
Normal file
77
plugin/commands/status.md
Normal file
@@ -0,0 +1,77 @@
|
||||
---
|
||||
description: Arată statistici memory și patterns frecvente
|
||||
---
|
||||
|
||||
# Status Memory
|
||||
|
||||
Afișează statistici despre `.claude/rules/claude-learn-memory.md`.
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. Verifică Fișierul
|
||||
Citește `.claude/rules/claude-learn-memory.md`
|
||||
|
||||
Dacă nu există:
|
||||
```
|
||||
ℹ️ Nu există încă un fișier de memorie.
|
||||
|
||||
Pentru a începe:
|
||||
1. Lucrează normal cu Claude Code
|
||||
2. Când termini o sesiune semnificativă, rulează /learn:analyze
|
||||
3. Sau importă memorie existentă cu /learn:import
|
||||
|
||||
Comenzi disponibile:
|
||||
- /learn:analyze - Analizează conversația curentă
|
||||
- /learn:import <file> - Importă din alt fișier
|
||||
- /learn:reflect - Consolidează și curăță memory
|
||||
```
|
||||
|
||||
### 2. Parsează Conținut
|
||||
- Numără patterns (secțiunea ## Patterns)
|
||||
- Numără gotchas (secțiunea ## Gotchas)
|
||||
- Extrage tags
|
||||
- Calculează statistici
|
||||
|
||||
### 3. Afișează Raport
|
||||
```
|
||||
📊 Claude Learn Memory Status
|
||||
|
||||
📁 Fișier: .claude/rules/claude-learn-memory.md
|
||||
|
||||
📈 Statistici:
|
||||
- Total patterns: {N}
|
||||
- Total gotchas: {M}
|
||||
- Tags unice: {K}
|
||||
- Ultima sesiune: {YYYY-MM-DD}
|
||||
- Sesiuni înregistrate: {S}
|
||||
|
||||
🏷️ Top 5 Tags:
|
||||
1. vue (8 entries)
|
||||
2. api (5 entries)
|
||||
3. typescript (4 entries)
|
||||
4. database (3 entries)
|
||||
5. auth (3 entries)
|
||||
|
||||
📅 Activitate Recentă (ultimele 7 zile):
|
||||
- {X} patterns adăugate
|
||||
- {Y} gotchas adăugate
|
||||
|
||||
💡 Sugestii:
|
||||
{Dacă > 20 entries fără reflect}
|
||||
- Rulează /learn:reflect pentru a consolida memory
|
||||
|
||||
{Dacă ultimul entry > 14 zile}
|
||||
- Nu ai salvat lecții recent. Rulează /learn:analyze după sesiuni importante.
|
||||
|
||||
{Dacă există duplicate evidente}
|
||||
- Am detectat {N} posibile duplicate. Rulează /learn:reflect.
|
||||
```
|
||||
|
||||
## Output Minimal (fără sugestii)
|
||||
|
||||
Dacă memory-ul e în stare bună:
|
||||
```
|
||||
📊 Claude Learn Memory: {N} patterns, {M} gotchas
|
||||
Ultima actualizare: {YYYY-MM-DD}
|
||||
Top tags: vue, api, typescript
|
||||
```
|
||||
17
plugin/hooks/hooks.json
Normal file
17
plugin/hooks/hooks.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"description": "Claude Learn hooks",
|
||||
"hooks": {
|
||||
"Stop": [
|
||||
{
|
||||
"matcher": "",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "prompt",
|
||||
"prompt": "Analizează rapid conversația. Dacă au fost: (1) rezolvate erori semnificative, (2) descoperite soluții noi, (3) luate decizii tehnice importante, sau (4) întâlnite probleme neașteptate - sugerează utilizatorului: '💡 Rulează /learn:analyze pentru a captura lecțiile din această sesiune.' Dacă conversația a fost simplă (întrebări, citire fișiere, task-uri banale), nu afișa nimic.",
|
||||
"timeout": 15
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
82
plugin/rules/memory-format.md
Normal file
82
plugin/rules/memory-format.md
Normal file
@@ -0,0 +1,82 @@
|
||||
---
|
||||
paths: ".claude/rules/claude-learn-memory.md"
|
||||
---
|
||||
|
||||
# Claude Learn Memory Format
|
||||
|
||||
Acest fișier definește formatul pentru `.claude/rules/claude-learn-memory.md`.
|
||||
|
||||
## Template Gol
|
||||
|
||||
```markdown
|
||||
# Claude Learn Memory
|
||||
|
||||
Patterns și Gotchas învățate din sesiuni de lucru.
|
||||
|
||||
---
|
||||
|
||||
## Patterns
|
||||
|
||||
<!-- Patterns vor fi adăugate aici -->
|
||||
|
||||
---
|
||||
|
||||
## Gotchas
|
||||
|
||||
<!-- Gotchas vor fi adăugate aici -->
|
||||
|
||||
---
|
||||
|
||||
## Memory Statistics
|
||||
|
||||
- **Total Patterns**: 0
|
||||
- **Total Gotchas**: 0
|
||||
- **Last Session**: -
|
||||
- **Sessions Recorded**: 0
|
||||
```
|
||||
|
||||
## Format Pattern
|
||||
|
||||
```markdown
|
||||
### {Titlu Descriptiv}
|
||||
**Discovered**: {YYYY-MM-DD} (feature: {context-scurt})
|
||||
**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
|
||||
|
||||
```markdown
|
||||
### {Titlu Descriptiv}
|
||||
**Discovered**: {YYYY-MM-DD} (feature: {context-scurt})
|
||||
**Problem**: {Ce problemă a apărut}
|
||||
**Solution**: {Cum s-a rezolvat}
|
||||
|
||||
**Tags**: {tag1}, {tag2}, {tag3}
|
||||
|
||||
---
|
||||
```
|
||||
|
||||
## Convenții
|
||||
|
||||
1. **Titluri**: Folosește titluri descriptive, nu generice
|
||||
- ✅ "Vue Watch Needs Immediate Flag for Initial Load"
|
||||
- ❌ "Vue Problem"
|
||||
|
||||
2. **Tags**: Folosește kebab-case, maxim 5 tags per entry
|
||||
- ✅ `vue`, `reactivity`, `watch`, `initialization`
|
||||
- ❌ `Vue.js`, `REACTIVITY`, `this is a tag`
|
||||
|
||||
3. **Exemple**: Include întotdeauna cod exemplu când e posibil
|
||||
|
||||
4. **Context**: Folosește feature name scurt pentru context
|
||||
- ✅ `(feature: user-dashboard)`
|
||||
- ❌ `(feature: implementing the new user dashboard with stats and charts)`
|
||||
29
plugin/templates/memory-entry.json
Normal file
29
plugin/templates/memory-entry.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"pattern": {
|
||||
"title": "",
|
||||
"discovered": "",
|
||||
"feature": "",
|
||||
"description": "",
|
||||
"example": {
|
||||
"file": "",
|
||||
"lines": "",
|
||||
"language": "",
|
||||
"code": ""
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"gotcha": {
|
||||
"title": "",
|
||||
"discovered": "",
|
||||
"feature": "",
|
||||
"problem": "",
|
||||
"solution": "",
|
||||
"tags": []
|
||||
},
|
||||
"statistics": {
|
||||
"total_patterns": 0,
|
||||
"total_gotchas": 0,
|
||||
"last_session": "",
|
||||
"sessions_recorded": 0
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user