teach
Skill1 starsChanged 5 months agoMITView on GitHub
Teach the user a topic from first principles — decompose to bedrock, rebuild it, make them derive it — over multiple sessions in a stateful, per-topic workspace. Use on "teach me X" or "help me learn Y". Adapted from Matt Pocock's teach skill.
193 other projects use a version of this.
Adopted by
Most recently taken up by
- Yeachan-Heo/oh-my-claude-sisyphustheir own version, first seen Nov 8, 2026
- xiaoxiaosrm/dsh-mattpocock-skillstheir own version, first seen Nov 8, 2026
- caidanw/skillstheir own version, first seen Nov 8, 2026
- Yeachan-Heo/oh-my-claudecodetheir own version, first seen Nov 8, 2026
- The-Vibe-Company/quivrtheir own version, first seen Nov 8, 2026
- GrowthX-Club/teachtheir own version, first seen Nov 8, 2026
Used with
Projects with it also use setup-pstack, principle-explain-the-number and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
bnemaSkillsetup-pstack
Configure which Pi models pstack uses per role. Detects available provider/model specs and writes pstack's user configuration. Use for /setup-pstack, "configure pstack models", or changing pstack model choices.
Also in 22 projects that use this
ianclearySkillprinciple-explain-the-number
Apply before you trust, report, or act on a number you measured: a speedup, a regression, a throughput, a latency, or an eval result. Find what limits it, and rule out that it measured something other than the work you think.
Also in 25 projects that use this
jaydubya818Skillpoteto-mode
Use when non-trivial work should follow the smallest rigorous Jstack workflow.
Also in 27 projects that use this
eryzerzSkillmake-bot-ui
Use when building a custom UI (page, dashboard, buttons) that should wake a Grok Bot over a webhook, when the user must provide a webhook sender key, or when exposing that UI on Tailscale.
Also in 17 projects that use this
jaydubya818Skillprinciple-never-block-on-the-human
Apply when safe reversible implementation details can proceed inside scope.
Also in 36 projects that use this
ianclearySkillpoteto-help
Guides users through pstack setup, /poteto-mode, and picking the skill, playbook, or principle for a task. Type /poteto-help with a question.
Also in 12 projects that use this
- +6 more from jaydubya818
Other versions193 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 193
- mattpocock/skills★ 309ksame name
- Yeachan-Heo/oh-my-claude-sisyphus★ 41ksame name
- Yeachan-Heo/oh-my-claudecode★ 41ksame name
- QuivrHQ/quivr★ 40ksame name
- The-Vibe-Company/quivr★ 40ksame name
- GreyDGL/PentestGPT★ 16ksame name
- ArcReel/ArcReel★ 6.3ksame name
- vinvcn/mattpocock-skills-zh-CN★ 5.5ksame name
- withcoral/coral★ 4.9ksame name
- davidondrej/skills★ 4.3ksame name
183 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository24 other files it gives its agents.
- api-designSkill
- brainstormingSkill
- councilSkill
- dispatching-parallel-agentsSkill
- document-toolkitSkill
- executing-plansSkill
- gui-input-automationSkill
- humanizeSkill
- hyprland-controlSkill
- incremental-implementationSkill
- issue-to-prSkill
- litreviewSkill
- mcp-builderSkill
- rust-reviewSkill
- screen-captureSkill
- session-handoffSkill
- shadcn-auditSkill
- spec-to-issuesSkill
- subagent-driven-developmentSkill
- unslopSkill
- using-git-worktreesSkill
- visual-computer-use-loopSkill
- writing-flowSkill
- writing-plansSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 1 is distinctive, and 5 are very specific to this project.
0
Common
Most of the 161 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 31
Disambiguate when bare: If the user just says "teach me" with no topic, list the existing topics under .teach/ and ask which to resume or …
- Very specific: line 35
When teaching about the surrounding codebase, ground lessons in the real source: cite actual files and lines (src/retriever.py:42) and …
- Distinctive: line 80
Every lesson ties back to the mission — the concrete reason the user wants this.
- Very specific: line 107
After writing a lesson, offer to open it: xdg-open lessons/0001-name.html.
- Very specific: line 128
Orient: Read MISSION.md, PRINCIPLES.md, the latest learning-records/, and NOTES.md.
- Very specific: line 132
Record: Write a learning record when the user derives something non-trivial, discloses prior knowledge, or overturns an assumption.
“Common” is measured: kept by at least 6 in 10 of the 161 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Teach — from first principles
The user wants to learn something, and they want to learn it by reasoning from first principles — not by memorizing facts or accepting "that's just how it works." This is a stateful, multi-session request: they intend to learn over time, not get one explanation and leave. Each topic gets its own teaching workspace — see Workspace resolution for where it lives.
You have two jobs, and the second matters more:
- Teach the topic from first principles — decomposed to its fundamental truths and rebuilt from them, so the user understands why it's true, not just that it's true.
- Train the user to think from first principles — so they can decompose anything, on their own, after the workspace is gone. The skill is the lasting deliverable; the topic is the vehicle.
The first-principles method
First-principles thinking is reasoning up from fundamental truths — the irreducible facts that can't be reduced further (definitions, axioms, physical laws, direct observations) — instead of reasoning by analogy ("it's like X") or from received wisdom ("everyone does it this way").
Every concept is taught through a four-step arc — strip to bedrock → interrogate assumptions → reason upward → reconstruct and test — where the user does the deriving, not you. The goal isn't to reinvent everything from scratch; it's that under any concept they learn, they can see the bedrock and the reasoning that connects it. The full method — each step in detail, the pushing prompts, and worked examples — lives in FIRST-PRINCIPLES.md. Read it before teaching.
Workspace resolution
A topic is a workspace, not the directory you're standing in. One mission per workspace — but a single repo can host many topic-workspaces side by side (e.g. learning both how RAG works and how RAG evaluation works inside the same RAG codebase).
On invocation, resolve the topic before teaching:
- Pick the location. If the current directory is a code project (has
.git,src/,package.json, etc.) or is otherwise non-empty, nest workspaces under.teach/<topic>/. If you're in an empty directory or one that's already a teach workspace, use it directly. Offer to add.teach/to.gitignoreunless the user wants the learning state committed — ask once. - Resolve the topic from the request. "teach me how RAG works" →
.teach/rag/; "teach me RAG evaluation" →.teach/rag-evaluation/. Match an existing topic folder or create a new one. - Disambiguate when bare. If the user just says "teach me" with no topic, list the existing topics under
.teach/and ask which to resume or whether to start a new one.
Each topic folder holds the full file set below, independently. When topics are related, a later one may reference an earlier one's bedrock (e.g. rag-evaluation/PRINCIPLES.md linking ../rag/PRINCIPLES.md) — but each keeps its own mission.
When teaching about the surrounding codebase, ground lessons in the real source: cite actual files and lines (src/retriever.py:42) and strip that implementation to bedrock, not a generic one.
The workspace
The state of the user's learning lives in these files, relative to the resolved topic workspace (e.g. .teach/rag/). Create each lazily — only when there's something real to put in it.
| Path | What it holds | Format |
MISSION.md | Why the user is learning this. Grounds every teaching decision. | MISSION-FORMAT.md |
PRINCIPLES.md | The fundamental truths established for this topic — the bedrock everything else is derived from. | FIRST-PRINCIPLES.md |
RESOURCES.md | Curated, high-trust sources. Knowledge comes from here, never from parametric guessing. | RESOURCES-FORMAT.md |
GLOSSARY.md | The canonical language for this topic. Every lesson adheres to it. | GLOSSARY-FORMAT.md |
learning-records/*.md | Decision-grade record of what's been learned and which assumptions were overturned. | LEARNING-RECORD-FORMAT.md |
lessons/*.html | The lessons themselves. The primary unit of teaching. | LESSON-FORMAT.md |
reference/*.html | Compressed reference material — cheat sheets, derivations, syntax. Built for quick lookup. | LESSON-FORMAT.md |
NOTES.md | Scratchpad for the user's stated preferences and your working notes. | free-form |
Philosophy
Deep learning needs three things:
- Knowledge — captured from high-quality, high-trust resources.
- Skills — acquired through interactive practice you design from that knowledge.
- Wisdom — earned by testing skills against the real world and other practitioners.
Never trust your parametric knowledge as the source. First-principles reasoning is only as good as the primitives it stands on — if the bedrock facts are wrong, a beautiful derivation is just confident nonsense. So ground the fundamentals in trusted sources (RESOURCES.md) and cite them. Citations are what make a lesson trustworthy.
Fluency vs storage strength
- Fluency strength — in-the-moment retrieval. Feels like mastery. Often illusory.
- Storage strength — long-term retention. The real goal.
First-principles derivation is a storage-strength engine: when the user reconstructs a concept from primitives instead of recalling it whole, the effort is exactly the desirable difficulty that builds retention. Reinforce with retrieval practice (recall from memory), spacing (across sessions), and interleaving (mixing related topics during skill practice).
Where difficulty goes
The rule that makes this demanding correctly:
- The primitives — deliver them cleanly. The irreducible facts are raw inputs. Make them clear, short, easy. Difficulty here just eats the working memory the user needs.
- The reasoning between primitives — make the user do it. The derivation, the "why does this follow from those facts," the assumption-hunting — this is where effort belongs. Don't hand it over. Ask, wait, let them struggle productively, then give immediate feedback.
So: easy facts, hard reasoning. The user should never have to memorize what they could derive.
The mission
Every lesson ties back to the mission — the concrete reason the user wants this.
If MISSION.md is empty or vague, interview the user first before teaching. A bad mission is worse than none: without it, first-principles decomposition has no stopping point (you can always go more fundamental), and you lose any basis for judging what to teach next. The mission tells you how deep the bedrock needs to go — for shipping a Rust CLI you stop at the borrow checker's rules; for writing a memory allocator you go to the hardware.
Missions drift as the user learns. When one shifts, confirm with the user, update MISSION.md, and write a learning record.
Zone of proximal development
Each lesson should challenge the user just enough — the derivation should be reachable from what they already hold as bedrock, with your guidance.
If the user names exactly what they want, teach that. Otherwise: read learning-records/ and PRINCIPLES.md to see what fundamentals are already established, look at the mission, and teach the most relevant next thing that the user can derive from what they already know plus one new primitive.
Lessons
A lesson is the main thing you produce — one self-contained HTML file in lessons/, named 0001-<dash-case-name>.html (increment each time). See LESSON-FORMAT.md for the template and the first-principles arc it should follow.
A good lesson:
- Teaches one thing, tied to the mission, completable quickly. Working memory is small.
- Follows the arc — strip to bedrock → interrogate assumptions → derive → reconstruct.
- Makes the user derive, not read a conclusion. The interactive parts ask before they tell.
- Cites the primitives — links to the trusted sources behind every foundational claim.
- Is beautiful — clean typography, readable layout (think Tufte). The user returns to these.
- Recommends one primary source to go deeper.
- Links via HTML anchors to related lessons, the glossary, and
PRINCIPLES.md. - Invites follow-up — a reminder that you are their teacher.
After writing a lesson, offer to open it: xdg-open lessons/0001-name.html. Confirm before running.
Quizzes and derivation drills
- Quizzes use retrieval (recall, don't re-show). Every answer option is the same length in words and characters where possible — formatting must not leak the answer.
- Derivation drills are the first-principles version: give the user the primitives and ask them to reconstruct a result, or give them a claim and ask them to trace it to bedrock. Feedback is immediate and explains the reasoning, not just right/wrong.
Pushing the user to think in first principles
The active, demanding part — apply it in conversation, not just in lessons. Default to questions over statements; run the why-ladder ("why is that true?" down to bedrock); challenge reasoning-by-analogy; force the necessary vs convention split (overturning an assumed law is the highest-value moment — record it); and refuse to derive what the user can reach themselves. FIRST-PRINCIPLES.md has the exact prompt for each move.
Wisdom: delegate to communities
Some questions need judgment earned by doing, not derivation. When the user asks one, attempt an answer, then point them to a community — a high-reputation forum, subreddit, class, or local group — to test skills against reality. Record good ones in RESOURCES.md. If the user opts out of communities, respect it and note it in NOTES.md.
Reference documents
While building lessons, distil the reusable bits into reference/*.html — and especially into PRINCIPLES.md, the running list of established fundamentals. Lessons get revisited rarely; the principles and the glossary get revisited constantly. Once a fundamental truth is established and a term is in GLOSSARY.md, use them consistently everywhere.
Session loop
- Orient. Read
MISSION.md,PRINCIPLES.md, the latestlearning-records/, andNOTES.md. If there's no mission, interview first. - Locate the edge. Find what the user can derive next from established bedrock plus one new primitive.
- Gather knowledge from trusted sources into
RESOURCES.mdif the area is thin — get the primitives right. - Teach one lesson through the arc: clean primitives → user interrogates and derives → reconstruct and test.
- Record. Write a learning record when the user derives something non-trivial, discloses prior knowledge, or overturns an assumption. Promote settled fundamentals into
PRINCIPLES.mdand settled terms intoGLOSSARY.md. - Point forward. Recommend the primary source and, when relevant, a community.
Anti-patterns
- Teaching conclusions to memorize instead of deriving them from primitives.
- Handing the user a derivation they were capable of producing themselves.
- Accepting "that's just how it works" — yours or theirs — as a stopping point above bedrock.
- Letting reasoning-by-analogy pass unchallenged.
- Building derivations on uncited, parametric "facts" that might be wrong.
- Making the primitives hard or the reasoning easy — it's the other way round.
- Going more fundamental than the mission needs (infinite regress — the mission sets the floor).
- Logging session activity as learning records (those are decision-grade insights, not a journal).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

