learn
learn
Research any topic by gathering online resources and creating a comprehensive learning guide with RAG-optimized indexes.
Parse Arguments
const args = '$ARGUMENTS'.split(' ').filter(Boolean);
const depth = args.find(a => a.startsWith('--depth='))?.split('=')[1] || 'medium';
const topic = args.filter(a => !a.startsWith('--')).join(' ');
Input
Arguments: <topic> [--depth=brief|medium|deep]
- topic: Subject to research (required)
- --depth: Source gathering depth
brief: 10 sources (quick overview)medium: 20 sources (default, balanced)deep: 40 sources (comprehensive)
Research Methodology
Based on best practices from:
- Anthropic's Context Engineering
- DeepLearning.AI Tool Use Patterns
- Anara's AI Literature Reviews
1. Progressive Query Architecture
Use funnel approach to avoid noise from long query lists:
Broad Phase (landscape mapping):
"{topic} overview introduction"
"{topic} documentation official"
Focused Phase (core content):
"{topic} best practices"
"{topic} examples tutorial"
"{topic} site:stackoverflow.com"
Deep Phase (advanced, if depth=deep):
"{topic} advanced techniques"
"{topic} pitfalls mistakes avoid"
"{topic} 2025 2026 latest"
2. Source Quality Scoring
Multi-dimensional evaluation (max score: 100):
| Factor | Weight | Max | Criteria |
|---|---|---|---|
| Authority | 3x | 30 | Official docs (10), recognized expert (8), established site (6), blog (4), random (2) |
| Recency | 2x | 20 | <6mo (10), <1yr (8), <2yr (6), <3yr (4), older (2) |
| Depth | 2x | 20 | Comprehensive (10), detailed (8), overview (6), superficial (4), fragment (2) |
| Examples | 2x | 20 | Multiple code examples (10), one example (6), no examples (2) |
| Uniqueness | 1x | 10 | Unique perspective (10), some overlap (6), duplicate content (2) |
Selection threshold: Top N sources by score (N = depth target)
3. Just-In-Time Retrieval
Don't pre-load all content (causes context rot):
- Collect URLs first via WebSearch
- Score based on metadata (title, description, URL)
- Fetch only selected sources via WebFetch
- Extract summaries (not full content)
4. Content Extraction Guidelines
For each source, extract:
{
"url": "https://...",
"title": "Article Title",
"qualityScore": 85,
"scores": {
"authority": 9,
"recency": 8,
"depth": 7,
"examples": 9,
"uniqueness": 6
},
"keyInsights": [
"Concise insight 1",
"Concise insight 2"
],
"codeExamples": [
{
"language": "javascript",
"description": "Basic usage pattern"
}
],
"extractedAt": "2026-02-05T12:00:00Z"
}
Copyright compliance: Summaries and insights only, never verbatim paragraphs.
Output Structure
Topic Guide Template
Create agent-knowledge/{slug}.md:
# Learning Guide: {Topic}
**Generated**: {date}
**Sources**: {count} resources analyzed
**Depth**: {brief|medium|deep}
## Prerequisites
What you should know before diving in:
- Prerequisite 1
- Prerequisite 2
## TL;DR
Essential points in 3-5 bullets:
- Key point 1
- Key point 2
- Key point 3
## Core Concepts
### {Concept 1}
{Synthesized explanation from multiple sources}
**Key insight**: {Most important takeaway}
### {Concept 2}
{Synthesized explanation}
## Code Examples
### Basic Example
```{language}
// Description of what this demonstrates
{code}
Advanced Pattern
{code}
Common Pitfalls
| Pitfall | Why It Happens | How to Avoid |
|---|---|---|
| Issue 1 | Root cause | Prevention strategy |
Best Practices
Synthesized from {n} sources:
- Practice 1: Explanation
- Practice 2: Explanation
Further Reading
| Resource | Type | Why Recommended |
|---|---|---|
| Title | Official Docs | Authoritative reference |
| Title | Tutorial | Step-by-step guide |
Generated by /learn from {count} sources.
See resources/{slug}-sources.json for full source metadata.
### Master Index Template
Create/update `agent-knowledge/CLAUDE.md`:
```markdown
# Agent Knowledge Base
> Learning guides created by /learn. Reference these when answering questions about listed topics.
## Available Topics
| Topic | File | Sources | Depth | Created |
|-------|------|---------|-------|---------|
| {Topic 1} | {slug1}.md | {n} | medium | 2026-02-05 |
| {Topic 2} | {slug2}.md | {n} | deep | 2026-02-04 |
## Trigger Phrases
Use this knowledge when user asks about:
- "How does {topic1} work?" → {slug1}.md
- "Explain {topic1}" → {slug1}.md
- "{Topic2} best practices" → {slug2}.md
## Quick Lookup
| Keyword | Guide |
|---------|-------|
| recursion | recursion.md |
| hooks, react | react-hooks.md |
## How to Use
1. Check if user question matches a topic
2. Read the relevant guide file
3. Answer based on synthesized knowledge
4. Cite the guide if user asks for sources
Copy to agent-knowledge/AGENTS.md for OpenCode/Codex.
Sources Metadata
Create agent-knowledge/resources/{slug}-sources.json:
{
"topic": "{original topic}",
"slug": "{slug}",
"generated": "2026-02-05T12:00:00Z",
"depth": "medium",
"totalSources": 20,
"sources": [
{
"url": "https://...",
"title": "...",
"qualityScore": 85,
"scores": {
"authority": 9,
"recency": 8,
"depth": 7,
"examples": 9,
"uniqueness": 6
},
"keyInsights": ["..."]
}
]
}
Self-Evaluation Checklist
Before finalizing, rate output (1-10):
| Metric | Question | Target |
|---|---|---|
| Coverage | Does guide cover main aspects? | ≥7 |
| Diversity | Are sources from diverse types? | ≥6 |
| Examples | Are code examples practical? | ≥7 |
| Accuracy | Confidence in content accuracy? | ≥8 |
Flag gaps: Note any important subtopics not covered.
Enhancement Integration
If enhance=true, invoke after guide creation:
// Enhance the topic guide for RAG
Skill({ name: 'enhance-docs', args: `agent-knowledge/${slug}.md --ai` });
// Enhance the master index
Skill({ name: 'enhance-prompts', args: 'agent-knowledge/CLAUDE.md' });
Output Format
Return structured JSON between markers:
=== LEARN_RESULT ===
{
"topic": "recursion",
"slug": "recursion",
"depth": "medium",
"guideFile": "agent-knowledge/recursion.md",
"sourcesFile": "agent-knowledge/resources/recursion-sources.json",
"sourceCount": 20,
"sourceBreakdown": {
"officialDocs": 4,
"tutorials": 5,
"stackOverflow": 3,
"blogPosts": 5,
"github": 3
},
"selfEvaluation": {
"coverage": 8,
"diversity": 7,
"examples": 9,
"accuracy": 8,
"gaps": ["tail recursion optimization not covered"]
},
"enhanced": true,
"indexUpdated": true
}
=== END_RESULT ===
Error Handling
| Error | Action |
|---|---|
| WebSearch fails | Retry with simpler query |
| WebFetch timeout | Skip source, note in metadata |
| <minSources found | Warn user, proceed with available |
| Enhancement fails | Skip, note in output |
| Index doesn't exist | Create new index |
Token Budget
Estimated token usage by phase:
| Phase | Tokens | Notes |
|---|---|---|
| WebSearch queries | ~2,000 | 5-8 queries |
| Source scoring | ~1,000 | Metadata only |
| WebFetch extraction | ~40,000 | 20 sources × 2,000 avg |
| Synthesis | ~10,000 | Guide generation |
| Enhancement | ~5,000 | Two skill calls |
| Total | ~60,000 | Within opus budget |
Integration
This skill is invoked by:
learn-agentfor/learncommand- Potentially other research-oriented agents
More from agent-sh/agentsys
debate
Structured AI debate templates and synthesis. Use when orchestrating multi-round debates between AI tools, 'debate topic', 'argue about', 'stress test idea', 'devil advocate'.
10discover-tasks
Use when user asks to \"discover tasks\", \"find next task\", \"prioritize issues\", \"what should I work on\", or \"list open issues\". Discovers and ranks tasks from GitHub, GitLab, local files, and custom sources.
9perf-benchmarker
Use when running performance benchmarks, establishing baselines, or validating regressions with sequential runs. Enforces 60s minimum runs (30s only for binary search) and no parallel benchmarks.
9web-browse
Browse and interact with web pages headlessly. Use when agent needs to navigate websites, click elements, fill forms, read content, or take screenshots.
9deslop
Use when user wants to clean AI slop from code. Use for cleanup, remove debug statements, find ghost code, repo hygiene.
8perf-baseline-manager
Use when managing perf baselines, consolidating results, or comparing versions. Ensures one baseline JSON per version.
8