Skill What it does
teach-me Explains any technical topic from first principles, in a textbook style, as chat or a printable PDF.

Install

claude plugin marketplace add sahanaramesh09/claude-skills
claude plugin install teach-me@claude-skills --scope user

Update later with claude plugin update. If you would rather not use plugins, copy the folder in directly:

git clone https://github.com/sahanaramesh09/claude-skills.git
cp -R claude-skills/skills/teach-me ~/.claude/skills/

teach-me

teach me Kafka
teach me React, I have a frontend interview next week
teach me how database indexes work

Most technical explanations make sense while you read them and leave nothing behind an hour later. They summarise a topic instead of teaching it: naming things before showing them, asserting conclusions without the reasoning, and quietly assuming a layer of knowledge the reader does not have.

teach-me encodes a specific method to avoid that. It produces a chapter, not a summary, and ends by testing whether you understood it.

See a sample chapter → (2 pages, on database indexes)

How it works

flowchart LR
    A[Ask to be taught a topic] --> B{Code or concept}
    B -->|code| C[Language mode]
    B -->|concept| D[Concept mode]
    C --> E{Interview prep}
    D --> E
    E -->|yes| F[Add spoken lines and honest boundaries]
    E -->|no| G[Chapter]
    F --> G
    G --> H[Chat or PDF or both]

Mode is picked automatically. A CV, job description or interviewer profile is optional; supply them and the chapter is calibrated to the level you will actually be asked at. Supply nothing and it assumes no prior knowledge and teaches from the ground up.

The method

flowchart LR
    A[Ground floor] --> B[Show before naming]
    B --> C[One analogy]
    C --> D[Arithmetic built up]
    D --> E[Contrast with neighbour]
    E --> F[Check questions]
  • Teach the ground floor first. A topic almost always sits on another. React sits on JavaScript; Kubernetes sits on containers. Without the layer beneath, the top layer is unteachable, and it feels "too complex" without the reader being able to say why. This is the most common failure.
  • Show the thing before naming it. Show what a metric literally looks like before defining "series". A definition given first is just vocabulary.
  • One physical analogy, sustained. A numbered notebook. A loading dock. Kept and mapped back to, rather than three competing metaphors.
  • Never assert a conclusion without showing where it came from. Show 3 x 2 = 6 before 500 x 200,000. Readers do not announce that they lost the thread; they just stop understanding.
  • Contrast it with what it gets confused with, and give the consequence. "A queue versus a log" is uninteresting. "If your program crashes, a queue has lost the ticket and the log has not" is the point.
  • Define every term, including the obvious ones. Detail is not complexity.
  • End with check questions and model answers in a panel you can cover.

Output

Chat, a PDF, or both. PDFs are generated directly with reportlab in a dense textbook layout: analogy boxes, vocabulary tables, annotated code, vector diagrams, and answer panels you can cover while you test yourself.

Repository layout

claude-skills/
├── .claude-plugin/
│   └── marketplace.json      plugin manifest
├── skills/
│   └── teach-me/
│       ├── SKILL.md          the method
│       ├── sheet.py          PDF toolkit
│       ├── local.example.md  personalisation template
│       ├── requirements.txt
│       └── LICENSE.txt
├── evals/                    trigger tests and results
└── examples/                 sample output

Only skills/ is installed onto a user's machine. evals/ and examples/ are for people reading the repository and are deliberately kept out of the skill folder.

Tested

A skill is only useful if it fires on the right prompts and stays quiet on the wrong ones. evals/ holds a trigger-eval set run with the harness from anthropics/skills:

Result
Prompts that should trigger it 8 / 8, every one at 3 of 3 runs
Prompts that should not 7 / 7, every one at 0 of 3 runs

Negatives matter as much as positives. "Write a Python function that reverses a linked list" does not trigger the skill, because teaching a subject and doing a task are different requests.

Requirements

Chat output needs nothing. PDF output needs reportlab:

python3 -m pip install reportlab

sheet.py uses only reportlab's built-in fonts, so PDFs render identically on macOS, Linux and Windows with no font files to install. To verify an install:

python3 examples/build_example.py

Personalisation

Optional, and the skill is fully functional without it. Copy skills/teach-me/local.example.md to local.md in the same folder to point the skill at your own CV, preferred depth, or output location. local.md is git-ignored, so personal settings stay on your machine and are never shared.

Licence

MIT. See LICENSE.

Built by Sahana Ramesh.