
Learner
- 524 installs
- 38.3k repo stars
- Updated August 4, 2026
- yeachan-heo/oh-my-claudecode
learner is a Level 7 self-improving oh-my-claudecode skill that extracts reusable agent skills from current conversation lessons for developers who want principles encoded instead of one-off fixes.
About
learner is a yeachan-heo/oh-my-claudecode Level 7 self-improving skill that extracts learned expertise from the active conversation into reusable SKILL.md files. It maintains separate Expertise and Workflow sections, updating only Expertise during improvement cycles while keeping the extraction procedure stable. The skill is a deprecated compatibility alias—new workflows should use /oh-my-claudecode:skillify—but remains for internal implementation and history. Developers invoke learner when a debugging or implementation session surfaced durable principles worth packaging for future agent runs. Output encodes domain knowledge and stable workflows so agents repeat proven patterns instead of rediscovering fixes each session.
- Extracts reusable principles and decision-making heuristics rather than code snippets
- Applies a strict three-point Quality Gate before creating any skill
- Maintains separate Expertise (auto-updating) and Workflow (stable) sections
- Deprecated compatibility alias for /oh-my-claudecode:skillify
- Level 7 self-improving capability that updates its own domain knowledge
Learner by the numbers
- 524 all-time installs (skills.sh)
- +9 installs in the week ending Jul 27, 2026 (Skillselion tracking)
- Ranked #1,722 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/yeachan-heo/oh-my-claudecode --skill learnerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 524 |
|---|---|
| repo stars | ★ 38.3k |
| Last updated | August 4, 2026 |
| Repository | yeachan-heo/oh-my-claudecode ↗ |
How do you turn conversation lessons into reusable agent skills?
Turn hard-won lessons from a conversation into reusable agent skills that encode principles instead of one-off fixes.
Who is it for?
Developers using oh-my-claudecode who want to codify session-learned principles into persistent agent skills for future runs.
Skip if: Developers starting fresh skill authoring who should use /oh-my-claudecode:skillify instead of this deprecated compatibility alias.
When should I use this skill?
A conversation produced durable lessons worth packaging into a reusable skill file, or user explicitly invokes learner for skill extraction.
What you get
New or updated SKILL.md with Expertise knowledge section and stable Workflow extraction procedure
- SKILL.md file
- Expertise section updates
By the numbers
- Level 7 self-improving skill in oh-my-claudecode
- Maintains separate Expertise and Workflow sections
Files
Learner Skill
Deprecated compatibility alias: use /oh-my-claudecode:skillify for new skill extraction workflows. This file remains for internal implementation/history and compatibility.This is a Level 7 (self-improving) skill. It has two distinct sections:
- Expertise: Domain knowledge about what makes a good skill. Updated automatically as patterns are discovered.
- Workflow: Stable extraction procedure. Rarely changes.
Only the Expertise section should be updated during improvement cycles.
---
Expertise
This section contains domain knowledge that improves over time.
It can be updated by the learner itself when new patterns are discovered.
Core Principle
Reusable skills are not code snippets to copy-paste, but principles and decision-making heuristics that teach Claude HOW TO THINK about a class of problems.
The difference:
- BAD (mimicking): "When you see ConnectionResetError, add this try/except block"
- GOOD (reusable skill): "In async network code, any I/O operation can fail independently due to client/server lifecycle mismatches. The principle: wrap each I/O operation separately, because failure between operations is the common case, not the exception."
Quality Gate
Before extracting a skill, ALL three must be true:
- "Could someone Google this in 5 minutes?" → NO
- "Is this specific to THIS codebase?" → YES
- "Did this take real debugging effort to discover?" → YES
Recognition Signals
Extract ONLY after:
- Solving a tricky bug that required deep investigation
- Discovering a non-obvious workaround specific to this codebase
- Finding a hidden gotcha that wastes time when forgotten
- Uncovering undocumented behavior that affects this project
What Makes a USEFUL Skill
1. Non-Googleable: Something you couldn't easily find via search
- BAD: "How to read files in TypeScript" ❌
- GOOD: "This codebase uses custom path resolution in ESM that requires fileURLToPath + specific relative paths" ✓
2. Context-Specific: References actual files, error messages, or patterns from THIS codebase
- BAD: "Use try/catch for error handling" ❌
- GOOD: "The aiohttp proxy in server.py:42 crashes on ClientDisconnectedError - wrap StreamResponse in try/except" ✓
3. Actionable with Precision: Tells you exactly WHAT to do and WHERE
- BAD: "Handle edge cases" ❌
- GOOD: "When seeing 'Cannot find module' in dist/, check tsconfig.json moduleResolution matches package.json type field" ✓
4. Hard-Won: Took significant debugging effort to discover
- BAD: Generic programming patterns ❌
- GOOD: "Race condition in worker.ts - the Promise.all at line 89 needs await before the map callback returns" ✓
Anti-Patterns (DO NOT EXTRACT)
- Generic programming patterns (use documentation instead)
- Refactoring techniques (these are universal)
- Library usage examples (use library docs)
- Type definitions or boilerplate
- Anything a junior dev could Google in 5 minutes
---
Workflow
This section contains the stable extraction procedure.
It should NOT be updated during improvement cycles.
Step 1: Gather Required Information
- Problem Statement: The SPECIFIC error, symptom, or confusion that occurred
- Include actual error messages, file paths, line numbers
- Example: "TypeError in src/hooks/session.ts:45 when sessionId is undefined after restart"
- Solution: The EXACT fix, not general advice
- Include code snippets, file paths, configuration changes
- Example: "Add null check before accessing session.user, regenerate session on 401"
- Triggers: Keywords that would appear when hitting this problem again
- Use error message fragments, file names, symptom descriptions
- Example: ["sessionId undefined", "session.ts TypeError", "401 session"]
- Scope: Almost always Project-level unless it's a truly universal insight
Step 2: Quality Validation
The system REJECTS skills that are:
- Too generic (no file paths, line numbers, or specific error messages)
- Easily Googleable (standard patterns, library usage)
- Vague solutions (no code snippets or precise instructions)
- Poor triggers (generic words that match everything)
Step 3: Classify as Expertise or Workflow
Before saving, determine if the learning is:
- Expertise (domain knowledge, pattern, gotcha) → Save as
{topic}-expertise.md - Workflow (operational procedure, step sequence) → Save as
{topic}-workflow.md
This classification ensures expertise can be updated independently without destabilizing workflows.
Step 4: Save Location
- User-level:
${CLAUDE_CONFIG_DIR:-~/.claude}/skills/omc-learned/<skill-name>.md- Rare. Only for truly portable insights. - Project-level:
.omc/skills/<skill-name>.md- Default. Intended to be committed with the repo when you want the team to keep the skill. In linked worktrees, uncommitted skills are still worktree-local and disappear if that worktree is deleted.
Required File Format
Every learned skill file MUST start with YAML frontmatter so learned-skill flat-file discovery can load it. Do not write plain markdown without frontmatter.
Minimum required frontmatter:
---
name: <skill-name>
description: <one-line description>
triggers:
- <trigger-1>
- <trigger-2>
---Skill Body Template
---
name: <skill-name>
description: <one-line description>
triggers:
- <trigger-1>
- <trigger-2>
---
# [Skill Name]
## The Insight
What is the underlying PRINCIPLE you discovered? Not the code, but the mental model.
## Why This Matters
What goes wrong if you don't know this? What symptom led you here?
## Recognition Pattern
How do you know when this skill applies? What are the signs?
## The Approach
The decision-making heuristic, not just code. How should Claude THINK about this?
## Example (Optional)
If code helps, show it - but as illustration of the principle, not copy-paste material.Key: A skill is REUSABLE if Claude can apply it to NEW situations, not just identical ones.
Related Commands
- /oh-my-claudecode:note - Save quick notes that survive compaction (less formal than skills)
- /oh-my-claudecode:ralph - Start a development loop with learning capture
Related skills
How it compares
Prefer skillify for new extractions; learner exists mainly for backward-compatible oh-my-claudecode workflows.
FAQ
Is learner still the recommended oh-my-claudecode extraction skill?
learner is a deprecated compatibility alias. New skill extraction workflows should use /oh-my-claudecode:skillify. learner remains for internal implementation, history, and backward compatibility.
What sections does learner write into extracted skills?
learner produces skills with Expertise and Workflow sections. Expertise holds domain knowledge that updates during improvement cycles; Workflow holds the stable extraction procedure that rarely changes.