Learn
Use when ready to study a topic — embedded programming, electrical engineering, or networking — at your current skill level with hands-on challengesFrom its SKILL.md
npx -y skills add Lutherwaves/lutherskills --skill learnAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.8 KB, as published. Nobody here has run it
Learn — Interactive Learning Session
Overview
The main learning engine. Picks a topic at your level, researches accurate content online, teaches the concept, then gives you a hands-on challenge to solve. Reviews your work and updates your progress.
Usage
/lutherskills:learn — auto-pick best topic
/lutherskills:learn embedded-programming — specific topic
Flow
Step 1: Load Profile
Read profile.json from the learning repo. If no repo found, tell user to run /lutherskills:init first.
Identify:
- Current levels per sub-topic
- Which sub-topics are unlocked (prerequisites met)
- What was last studied and when
Step 2: Select Topic
If the user provided a topic arg (e.g., /lutherskills:learn embedded-programming):
- Use that topic
- Pick the lowest-level unlocked sub-topic within it
If no arg provided, recommend based on:
- Weakest areas — sub-topics at lowest level
- Prerequisites met — only suggest unlocked sub-topics
- Staleness — prefer topics not touched in 3+ days
- Breadth — rotate between topics to avoid tunnel vision
Present recommendation: "I'd suggest [sub-topic] in [topic] — you're at [level] and it unlocks [next thing]. Sound good, or pick something else?"
Step 3: Research
Use WebSearch and WebFetch to find accurate, level-appropriate content:
- Search for the sub-topic + level (e.g., "beginner SPI protocol tutorial embedded")
- Find 2-3 quality sources (official docs, reputable tutorials, datasheets)
- Cross-reference key facts between sources
- For EE: find relevant component datasheets if applicable
- For networking: find relevant RFCs or protocol specs if applicable
- For embedded: find relevant register maps or reference manuals if applicable
Important: Cite sources in the lesson. Accuracy matters — wrong resistor values or protocol details can mislead.
Step 4: Teach
Deliver a focused lesson:
-
Concept intro (~200 words max):
- What is this and why does it matter?
- Key principles with concrete examples
- Cite sources: "According to [source], ..."
-
Comprehension check (2-3 inline multiple choice):
- Ask one question at a time
- Wait for answer before next question
- Explain correct answer briefly if they get it wrong
- These don't count toward level-up scoring
Step 5: Hands-On Challenge
Create a challenge file in the learning repo:
File: challenges/<topic>/<sub-topic>-<NNN>-<slug>.md
Example: challenges/embedded-programming/peripherals-001-uart-echo.md
Challenge file structure:
# Challenge: [Title]
**Topic:** [topic] > [sub-topic]
**Level:** [beginner/intermediate/advanced]
**Date:** [YYYY-MM-DD]
**Sources:** [URLs used for research]
## Problem
[Clear problem description]
## Requirements
- [ ] Requirement 1
- [ ] Requirement 2
- [ ] Requirement 3
## Starter Code
[If applicable — create a separate .c/.py/.txt file next to the challenge]
## Acceptance Criteria
[How Claude will evaluate the solution]
## Solution File
Write your solution in: `<filename>`
For code challenges, also create the starter file next to the challenge markdown.
Tell the user: "Challenge created! Open [file path] and write your solution. Let me know when you're done and I'll review it."
Step 6: Review Solution
When the user says they're done:
- Read their solution file
- Evaluate against acceptance criteria
- Score: 0.0 to 1.0 based on:
- Correctness (50%)
- Code quality / approach (25%)
- Edge cases handled (25%)
- Give specific feedback:
- What worked well
- What could improve
- Key concept reinforcement if they missed something
Step 7: Update Profile
Update profile.json:
- Increment
sub_topics.<sub-topic>.challenges_completed - Recalculate
sub_topics.<sub-topic>.avg_scoreas rolling average - Increment
stats.total_challenges - Update
stats.last_activeto today - Update
stats.streak_days: increment if last_active was yesterday, reset to 1 if gap > 1 day
Level-up check:
- 3+ challenges completed AND avg_score >= 0.7 → bump sub-topic level (none→beginner→intermediate→advanced)
- If all sub-topics at same minimum level → bump overall topic level
- If new sub-topics unlocked, announce: "You've unlocked [sub-topic]!"
Step 8: Commit & Summary
git add challenges/ profile.json
git commit -m "learn: complete [sub-topic] challenge — score [X]"
git push
Show session summary:
- Topic/sub-topic covered
- Score
- Current level
- What's unlocked next
- Suggested next session
Prerequisite Order
Sub-topics unlock top-to-bottom within each topic:
Electrical Engineering: fundamentals → analog-circuits → digital-logic → pcb-practical Embedded Programming: c-fundamentals → bare-metal → peripherals → rtos-concepts → lower-level Networking: fundamentals → protocols → hands-on → infrastructure Go Internals: fundamentals → runtime → gc-allocator → compiler-ssa Python Internals: fundamentals → bytecode-ceval → gc-gil → c-extensions TypeScript Internals: fundamentals → compiler-pipeline → type-system → tooling JS Engine Internals: fundamentals → v8-objects → jit-pipeline → gc
A sub-topic unlocks when the one above it reaches "beginner" level. The first sub-topic in each topic is always unlocked.
Language-Internals Guidance
For golang-internals, python-internals, typescript-internals, and js-engine-internals topics, adapt the flow:
- Research step: prefer primary sources over tutorials. Link to actual runtime/compiler source files (e.g.,
src/runtime/proc.go,Python/ceval.c,src/compiler/checker.ts, V8 blog). Cite commit SHAs or version tags when referencing source. - Challenge shape: favor "read this specific function, annotate what it does, then implement a minimal version" over multiple-choice or small code tasks. Target 50-200 line toy implementations that capture the essential mechanism (e.g., mark-sweep GC, Pratt parser, hidden-class object, GIL-aware refcount).
- Two-artifact output: challenge solutions should produce both (a) source-reading notes in
notes/<topic>/<slug>.mdwith file+line citations, and (b) a toy implementation inprojects/<topic>/<slug>/that the user runs and tests. - Seed anchors: check
challenges/<topic>/resources.mdfor curated links before researching — start there, then augment with WebSearch if needed.
Common Mistakes
- Don't skip the research phase — stale knowledge leads to bad challenges
- Don't give challenges above the user's level — frustration kills motivation
- Always cite sources in the lesson
- Don't auto-advance without the user confirming they're ready