Init
Use when setting up lutherskills for the first time — profiles your knowledge level, creates a learning workspace repo via gh, and runs a baseline diagnostic quizFrom its SKILL.md
npx -y skills add Lutherwaves/lutherskills --skill initAssembled 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
7.1 KB, as published. Nobody here has run it
Init — Profile & Workspace Setup
Overview
Set up your personalized learning environment. This skill interviews you, creates a GitHub repo as your workspace, and calibrates your starting levels with a diagnostic quiz.
Prerequisites
ghCLI installed and authenticated (gh auth status)gitconfigured
Flow
Step 1: Check Prerequisites
Before anything else, verify:
gh auth status
git config user.name
If gh is not authenticated, tell the user to run gh auth login first.
Step 2: Profile Interview
Ask these questions one at a time, wait for each answer:
-
"What name or handle should I use for your profile?"
-
"Which topics are you interested in learning?" Options (multi-select):
- A) Electrical Engineering
- B) Embedded Programming
- C) Networking
- D) Go Internals (runtime, GC, scheduler, compiler)
- E) Python Internals (CPython bytecode, GIL, object model, C API)
- F) TypeScript Internals (compiler pipeline, type system, tooling)
- G) JS Engine Internals (V8 objects, JIT, event loop, GC)
- H) All of the above (Also accept free-form topics — store them for future expansion)
-
For each selected topic, ask sub-topic self-assessment:
For Electrical Engineering:
- "How would you rate yourself in EE fundamentals (Ohm's law, KVL/KCL, basic components)? none / beginner / intermediate / advanced"
- "Analog circuits (op-amps, filters, amplifiers)?"
- "Digital logic (gates, flip-flops, state machines)?"
- "PCB/practical (schematics, component selection, datasheets)?"
For Embedded Programming:
- "C fundamentals (pointers, memory, structs, bit manipulation)?"
- "Bare metal (registers, GPIO, timers, interrupts)?"
- "Peripherals (UART, SPI, I2C, ADC/DAC)?"
- "RTOS concepts (tasks, scheduling, synchronization)?"
- "Lower level (assembly, linker scripts, startup code)?"
For Networking:
- "Fundamentals (OSI model, TCP/IP, addressing)?"
- "Protocols (HTTP, DNS, DHCP, ARP, ICMP)?"
- "Hands-on (socket programming, packet analysis)?"
- "Infrastructure (routing, switching, VLANs, subnetting)?"
For Go Internals:
- "Fundamentals (memory model, slice/map/string layout, escape analysis)?"
- "Runtime (GMP scheduler, goroutines, channel internals)?"
- "GC & allocator (tri-color mark, mcache/mcentral/mheap, write barriers)?"
- "Compiler & SSA (go/parser, AST, SSA passes, codegen)?"
For Python Internals:
- "Fundamentals (PyObject, refcount, object model, dict impl)?"
- "Bytecode & ceval (dis module, ceval.c loop, frame objects)?"
- "GC & GIL (cyclic GC, GIL, PEP 703, PEP 659 adaptive interpreter)?"
- "C extensions (C API, capsules, buffer protocol)?"
For TypeScript Internals:
- "Fundamentals (structural typing, widening/narrowing, inference)?"
- "Compiler pipeline (scanner → parser → binder → checker → emitter)?"
- "Type system (conditional types, variance, mapped types)?"
- "Tooling (language service, incremental builds, project references)?"
For JS Engine Internals:
- "Fundamentals (event loop, microtasks, call stack, value representation)?"
- "V8 objects (hidden classes/shapes, inline caches, SMI tagging)?"
- "JIT pipeline (Ignition → Sparkplug → Maglev → TurboFan, deopt)?"
- "GC (Scavenger, Mark-Compact, incremental marking)?"
-
"How do you prefer to learn?"
- A) Theory first, then practice
- B) Hands-on first, theory as needed
- C) Mixed — alternate between both
-
"How much time do you want to commit?"
- A) Casual — a few sessions per week
- B) Regular — most days
- C) Intense — daily deep sessions
Step 3: Create Learning Repo
-
Ask: "Where should I create your learning workspace? (default: ~/learning/)"
-
Generate 3 fun repo name suggestions based on the user's profile. Examples:
- If EE-focused:
spark-and-solder,ohms-playground,circuit-dojo - If embedded-focused:
bitwise-battleground,register-rumble,bare-metal-forge - If networking-focused:
packet-sorcery,subnet-ninja,protocol-dungeon - If mixed:
electron-hacker-lab,signal-to-noise,full-stack-voltage
Ask: "Pick a repo name or suggest your own:" then list the 3 suggestions.
- If EE-focused:
-
Create the repo:
gh repo create <repo-name> --public --clone --description "My lutherskills learning workspace"
cd <repo-name>
- Initialize the workspace structure:
Create profile.json:
{
"name": "<user's name>",
"handle": "<user's handle>",
"created": "<today's date YYYY-MM-DD>",
"learning_style": "<theory-first|hands-on-first|mixed>",
"time_commitment": "<casual|regular|intense>",
"repo_path": "<absolute path to repo>",
"topics": {
"<topic-id>": {
"level": "none",
"sub_topics": {
"<sub-topic-id>": {
"level": "<self-assessed level>",
"challenges_completed": 0,
"avg_score": 0
}
}
}
},
"stats": {
"total_challenges": 0,
"total_quizzes": 0,
"magic_points": 0,
"streak_days": 0,
"last_active": "<today's date>"
}
}
Only include topics the user selected. Sub-topic structure per 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 golang-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
Create directories (only for selected topics):
mkdir -p challenges/<topic> projects notes
Baseline set always created: challenges/magic, projects/, notes/.
Create .gitignore:
.DS_Store
*.swp
*~
- Initial commit:
git add -A
git commit -m "feat: initialize learning workspace"
git push -u origin main
Step 4: Baseline Diagnostic Quiz
For each selected topic, run a 5-question diagnostic quiz to calibrate levels:
- Questions should span the sub-topics at beginner level
- Use multiple choice (A/B/C/D)
- Ask one question at a time
- Track correct/incorrect
After the quiz, adjust profile.json sub-topic levels:
- 0-1 correct in a sub-topic area → keep at "none"
- 2-3 correct → set to "beginner"
- 4+ correct → set to "intermediate"
Update and commit:
git add profile.json
git commit -m "feat: calibrate initial levels from diagnostic"
git push
Step 5: Welcome Message
Show a summary:
- Profile overview
- Starting levels per topic
- Suggested first
/lutherskills:learntopic based on levels
Common Mistakes
- Don't skip the diagnostic — self-assessment is often inaccurate
- Don't create the repo without
gh auth statuspassing first - Always commit after profile changes