learner
Extract a learned skill from the current conversation
Best use case
learner is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Extract a learned skill from the current conversation
Teams using learner should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/learner/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How learner Compares
| Feature / Agent | learner | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Extract a learned skill from the current conversation
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Learner Skill ## The Insight 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." A good skill changes how Claude APPROACHES problems, not just what code it produces. ## Why This Matters Before extracting a skill, ask yourself: - "Could someone Google this in 5 minutes?" → If yes, STOP. Don't extract. - "Is this specific to THIS codebase?" → If no, STOP. Don't extract. - "Did this take real debugging effort to discover?" → If no, STOP. Don't extract. If a potential skill fails any of these questions, it's not worth saving. ## Recognition Pattern Use /oh-my-gemini:learner 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 ## The Approach ### Extraction Process **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: Save Location** - **User-level**: ~/.gemini-cli/skills/omc-learned/ - Rare. Only for truly portable insights. - **Project-level**: .omc/skills/ - Default. Version-controlled with repo. ### What Makes a USEFUL Skill **CRITICAL**: Not every solution is worth saving. A good skill is: 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 ## Skill Format Skills are saved as markdown with this structure: ### YAML Frontmatter Standard metadata fields: - id, name, description, source, triggers, quality ### Body Structure (Required) ```markdown # [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. ## Related Commands - /oh-my-gemini:note - Save quick notes that survive compaction (less formal than skills) - /oh-my-gemini:ralph - Start a development loop with learning capture
Related Skills
bgo
Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.
nosql-expert
Expert guidance for distributed NoSQL databases (Cassandra, DynamoDB). Focuses on mental models, query-first modeling, single-table design, and avoiding hot partitions in high-scale systems.
nosql-databases
Apply NoSQL best practices for MongoDB, Convex, and document databases. Use when designing schemas, writing queries, optimizing performance, or building applications with non-relational databases. Use with database-expert for query optimization and DBA-level tuning (20+ years experience).
nodejs-javascript-vitest
Guidelines for writing Node.js and JavaScript code with Vitest testing Triggers on: **/*.js, **/*.mjs, **/*.cjs
nodejs-best-practices
Node.js development principles and decision-making. Framework selection, async patterns, security, and architecture. Teaches thinking, not copying.
nodejs-backend-typescript
Node.js backend development with TypeScript, Express/Fastify servers, routing, middleware, and database integration
nodejs-backend-patterns
Build production-ready Node.js backend services with Express/Fastify, implementing middleware patterns, error handling, authentication, database integration, and API design best practices. Use when creating Node.js servers, REST APIs, GraphQL backends, or microservices architectures.
Node Tuning Helper Scripts
Generate tuned manifests and evaluate node tuning snapshots
nock-interpreter-engineer-assistant
Expert Nock interpreter builder for implementing virtual machines in C, Python, Rust, Haskell, or JavaScript. Use when building Nock interpreters, porting between languages, implementing evaluation loops, or understanding Nock runtime behavior.
nix-workspace
Node.js dashboard for Nix agents - task management with comments, agent status, action log, and task routing. Start with `node server.js`. Access at http://localhost:5050 or https://nixbot.auromations.com
ninja-enrich
Enrich meta.yaml long_description fields from man pages and websites
skill-author
Creates production-grade Claude Code skills from natural language descriptions. Use when building new skills, requested with "build me a skill that...", "create a skill for...", or "I need a skill to...". Generates complete skill files with proper frontmatter, context references, and quality self-assessment.