From oh-my-claudecode
Extracts a reusable learned skill from the current conversation, capturing non-Googleable, codebase-specific insights with problem context, solution code, and triggers.
How this skill is triggered — by the user, by Claude, or both
Slash command
/oh-my-claudecode:learnerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
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:
A good skill changes how Claude APPROACHES problems, not just what code it produces.
Before extracting a skill, ask yourself:
If a potential skill fails any of these questions, it's not worth saving.
Use /learner ONLY after:
Step 1: Gather Required Information
Problem Statement: The SPECIFIC error, symptom, or confusion that occurred
Solution: The EXACT fix, not general advice
Triggers: Keywords that would appear when hitting this problem again
Scope: Almost always Project-level unless it's a truly universal insight
Step 2: Quality Validation
The system REJECTS skills that are:
Step 3: Save Location
CRITICAL: Not every solution is worth saving. A good skill is:
Non-Googleable: Something you couldn't easily find via search
Context-Specific: References actual files, error messages, or patterns from THIS codebase
Actionable with Precision: Tells you exactly WHAT to do and WHERE
Hard-Won: Took significant debugging effort to discover
Skills are saved as markdown with this structure:
Standard metadata fields:
# [Skill Name]
## The Insight
What is the underlying PRINCIPLE you discovered? Not the code, but the mental model.
Example: "Async I/O operations are independently failable. Client lifecycle != server lifecycle."
## Why This Matters
What goes wrong if you don't know this? What symptom led you here?
Example: "Proxy server crashes on client disconnect, taking down other requests."
## Recognition Pattern
How do you know when this skill applies? What are the signs?
Example: "Building any long-lived connection handler (proxy, websocket, SSE)"
## The Approach
The decision-making heuristic, not just code. How should Claude THINK about this?
Example: "For each I/O operation, ask: what if this fails right now? Handle it locally."
## 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.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub mazenyassergithub/oh-my-claudecode --plugin oh-my-claudecode