
Lessons
- 47 installs
- 24 repo stars
- Updated December 19, 2025
- johnlindquist/claude
Extract key lessons and insights from project code, documentation, or research to create learning materials.
About
Analyzes code or docs to distill key lessons and patterns. Generates markdown learning guides from raw material.
- Automatic pattern extraction from code
- Learning guide generation from analysis
Lessons by the numbers
- 47 all-time installs (skills.sh)
- +2 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #823 of 1,879 Documentation skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/johnlindquist/claude --skill lessonsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 47 |
|---|---|
| repo stars | ★ 24 |
| Last updated | December 19, 2025 |
| Repository | johnlindquist/claude ↗ |
What it does
Extract key lessons and insights from project code, documentation, or research to create learning materials.
Files
Lessons Learned
Capture insights and learn from past experiences.
Capture Patterns
Quick Lesson Capture
When you learn something valuable during a session:
# Write to lessons file
cat >> ~/.claude/lessons.md << 'EOF'
## [Date] - [Topic]
**Context:** What were you doing?
**Lesson:** What did you learn?
**Application:** When to apply this?
EOFStructured Lesson
## 2024-01-15 - TypeScript Generic Constraints
**Context:**
Building a type-safe form library, struggled with generic types.
**Problem:**
Generic function wasn't narrowing types correctly.
**Solution:**
Use `extends` constraints to narrow:function getValue<T extends { value: unknown }>(obj: T): T['value'] { return obj.value; }
**Lesson:**
TypeScript generics need explicit constraints for type narrowing.
**Tags:** #typescript #generics #typesLesson Categories
Bug Lessons
## Bug: [Brief description]
**Symptom:** What happened
**Root Cause:** Why it happened
**Fix:** How to fix
**Prevention:** How to avoid in future
**Time Cost:** How long to debug (motivation to remember!)Pattern Lessons
## Pattern: [Name]
**When to use:** Situations where this applies
**How to implement:** Basic structure
**Gotchas:** Common mistakes
**Example:** Working codeTool Lessons
## Tool: [Name]
**What it does:** Brief description
**Key commands:** Most useful commands
**Gotchas:** Things that trip people up
**Alternatives:** Other optionsReview Practices
Daily Review
# Review recent lessons
tail -100 ~/.claude/lessons.md
# Search for topic
grep -A 10 "typescript" ~/.claude/lessons.mdWeekly Audit
gemini -m pro -o text -e "" "Review these lessons from the past week:
$(tail -500 ~/.claude/lessons.md)
1. What patterns emerge?
2. What mistakes keep recurring?
3. What should be turned into automation?
4. What needs deeper study?"Before Starting Work
# Get relevant lessons
TOPIC="authentication"
grep -B 2 -A 10 -i "$TOPIC" ~/.claude/lessons.mdAutomation from Lessons
When a lesson appears multiple times, automate it:
Create Git Hook
# Lesson: Always run tests before commit
# → Create pre-commit hook
cat > .git/hooks/pre-commit << 'EOF'
#!/bin/bash
npm test || exit 1
EOF
chmod +x .git/hooks/pre-commitCreate Snippet
# Lesson: This pattern is useful
# → Save as snippet
cat > ~/.claude/snippets/async-error-handling.ts << 'EOF'
async function safeAsync<T>(promise: Promise<T>): Promise<[T, null] | [null, Error]> {
try {
const result = await promise;
return [result, null];
} catch (error) {
return [null, error as Error];
}
}
EOFCreate Checklist
# Lesson: Keep forgetting these steps
# → Create checklist
cat > ~/.claude/checklists/pr-review.md << 'EOF'
# PR Review Checklist
- [ ] Tests pass
- [ ] No console.logs
- [ ] Types are explicit
- [ ] Error handling present
- [ ] Documentation updated
EOFAI-Assisted Learning
Extract Lessons from Session
gemini -m pro -o text -e "" "Extract lessons learned from this coding session:
[Paste conversation or summary]
For each lesson:
1. What was learned
2. When it applies
3. How to remember it"Connect Lessons
gemini -m pro -o text -e "" "Find connections between these lessons:
$(cat ~/.claude/lessons.md)
1. What themes emerge?
2. What knowledge gaps exist?
3. What should be studied next?"Generate Quiz
gemini -m pro -o text -e "" "Create a quiz from these lessons:
$(tail -1000 ~/.claude/lessons.md)
Generate 5 questions that test understanding of key concepts."Storage Options
File-based
# Single file
~/.claude/lessons.md
# By date
~/.claude/lessons/2024-01.md
# By topic
~/.claude/lessons/typescript.md
~/.claude/lessons/git.mdMemory Integration
# Save to basic-memory
basic-memory tool write-note \
--title "Lesson: TypeScript Generics" \
--folder "lessons" \
--content "$(cat lesson.md)" \
--tags "lesson,typescript"Best Practices
1. Capture immediately - Don't wait, you'll forget 2. Be specific - Include code examples 3. Note the cost - Time spent motivates remembering 4. Review regularly - Lessons fade without review 5. Automate repeated - Turn lessons into tools 6. Tag consistently - Makes searching easier 7. Connect to context - When does this apply?