A Claude Code skill that teaches you to think like a programmer; not just copy like one.
Learning Buddy is a Socratic coding partner built on a 4Ds pedagogical framework. When it detects you're in a learning context, it shifts Claude's entire interaction mode: instead of handing you solutions, it guides you to build them yourself, step by step.
Made for students, bootcamp learners, and self-teachers who want genuine understanding — not just passing tests.
Most AI coding tools optimize for speed of output, not depth of learning. Ask Claude (or any LLM) how to fix a bug, and you'll get a working fix instantly — and learn almost nothing. The dopamine hit of a green test masks the fact that you still can't solve the next problem alone.
Learning Buddy inverts this. It treats your understanding as the primary output, and working code as the side effect.
Learning Buddy is a CLAUDE.md-based skill for Claude Code. When installed, it runs alongside every session and activates automatically when it detects learning intent — reading the context of your request before deciding whether to enter teaching mode or stay out of the way.
The session flow is structured around four phases:
| Phase | Role | What happens |
|---|---|---|
| Delegation | You explain your goal before writing any code | Keeps you in the driver's seat; prevents blind copy-pasting |
| Description | Claude explains the how and why | You get the conceptual model, not just the syntax |
| Discernment | Claude checks your understanding before moving on | Socratic questions surface gaps before they become bugs |
| Diligence | You explain why your solution works before closing out | Locks in the intuition, not just the implementation |
Learning Buddy adjusts its approach based on where you're stuck:
| Scenario | Response |
|---|---|
| Debugging a crash | Asks you to read the stack trace and hypothesize the cause before giving any hint |
| Architecting a new feature | Breaks it into subtasks and asks you to define data structures first |
| Completely stuck | Introduces the concept through a different domain (e.g., thread locks ↔ real-world traffic systems) |
| Frustrated | Acknowledges it, then redirects to the smallest tractable sub-problem |
| Concept review | Escalates question difficulty only when you demonstrate confidence |
The difference isn't subtle:
User: My Python dict is crashing when I access a key.
| Without Learning Buddy | With Learning Buddy |
|---|---|
"The issue is a KeyError. Here are 3 ways to fix it: dict.get(), a try/except block, or checking if key in dict..." |
"Let's figure it out. What does the error message say exactly, and what do you think it's pointing at?" |
The first answer solves your immediate problem. The second one means you'll solve the next five yourself.
Learning Buddy is designed to stay invisible unless you actually want it. It reads your intent, not just your words.
Activates when you signal learning intent:
"help me understand...""walk me through...""I don't just want the fix""be my coding buddy / learning partner"- Working on assignments, coursework, coding challenges, or interview prep
Stays silent for production work:
- Quick reference questions (
"what does X mean?") - Code review requests
- Work/production engineering tasks
"Just give me the code"requests
- Download
learning-buddy.skill - In Claude Code, open the Skills panel → Install from file
# macOS / Linux
cp -r learning-buddy/ ~/.claude/skills/
# Windows
# Copy learning-buddy/ to %APPDATA%\Claude\skills\Restart Claude Code. The skill appears automatically.
A few intentional decisions worth calling out:
Why Socratic questioning? Telling someone the answer builds a dependency. Asking the right question builds a mental model. The goal of Learning Buddy is that over time, you internalize the questions themselves — and start asking them before you're stuck.
Why a CLAUDE.md skill, not a separate app? The insight lives in the conversation, not in a wrapper. Keeping it in Claude Code means zero context-switching: you stay in your editor, your real codebase, your actual problem.
Why explicit trigger logic? An overzealous teaching mode would be actively annoying in production contexts. The skill is only useful if it knows when to stay out of the way.
Bug reports, teaching strategy improvements, and new trigger patterns are all welcome. Open an issue or PR.
Made by @rahilyw