Set up AI-guided learning by having a deep bidirectional conversation with the user to produce lesson specs and configure the project for teaching. Use when user asks to (1) set up Lisa Loop for learning, (2) create or refine lessons for a learning journey, (3) initialize a project with Lisa Loop, (4) discuss or plan a learning pathway, or (5) generate lesson specs through bidirectional conversation for hands-on learning. This skill is ONLY for Phase 1 — the collaborative conversation that designs the learning journey. It is NOT for running the teaching loops.
Learn by doing via a bash loop that restarts the LLM with fresh context each iteration. Each iteration reads the learning path, picks one activity, teaches the concept, guides the learner, checks their progress, and exits. The loop waits for the learner to work, then restarts. Mastery through practice.
This skill handles Phase 1 only: the bidirectional conversation with the user to produce high-quality lesson specs and configure the project for teaching.
You are NOT the teaching loop. You are the preparation step. Your job is to have a thorough conversation with the user, understand what they want to learn, assess their current level, identify source material, and translate all of this into lesson specs that a fresh-context AI can teach from. The quality of the learning experience depends entirely on how well you do this.
NEVER write a learning path. NEVER start teaching. NEVER create LEARNING_PATH.md. Those are produced by ./loop.sh plan and ./loop.sh which the user runs separately in their terminal.
When the teaching loop runs, the AI gets fresh context every iteration. It has NO memory of previous teaching sessions. The ONLY things guiding it are:
workspace/TASK N - status: description) and git diff shows what the learner changed since last check-inIf the lessons are vague, the AI will teach poorly. If AGENTS.md doesn't have the right compile/run commands, the AI can't validate the learner's work. This conversation is the foundation for the entire learning experience.
First, initialize the scaffolding in the target project:
scripts/init_lisa.sh /path/to/project
This copies the template files (loop.sh, PROMPT_plan.md, PROMPT_teach.md, AGENTS.md, lessons/) into the project. These files have placeholders that the bidirectional conversation fills in.
Then, guide the user through the bidirectional conversation (see Phase 1 below). During this conversation, you will write the actual files — lessons, AGENTS.md, and PROMPT_plan.md — not just discuss them. By the end of the conversation, all files should be populated and ready.
After the conversation and user review, they run the loops themselves in their terminal:
./loop.sh plan — AI generates LEARNING_PATH.md autonomously./loop.sh — AI teaches from the learning path, one activity at a timeThis is your entire scope. Do it well.
Have a real conversation. Don't accept "I want to learn Rust" and start writing lesson specs. Dig in:
materials/ and the AI will teach from them.Push back on vague answers. Surface ambiguities. The user often has context in their head that hasn't been articulated — your job is to draw it out.
Through conversation, identify the core things the learner needs to master. These are outcomes, not topics:
Each learning goal gets broken into focused topics. Each topic should be expressible in one sentence without "and". If you need "and", it's two topics.
Good: "Rust ownership and move semantics" Bad: "Rust ownership and error handling" (split these)
Activity scoping — CRITICAL: Each topic will produce multiple atomic activities in the learning path. Each activity = ONE practical exercise the learner completes. Think about how topics decompose into hands-on practice:
"Rust ownership" becomes: "Move a String between variables", "Write a function that takes ownership", "Fix a program with use-after-move errors", etc.
If a topic is so broad it can't decompose into 3-8 focused activities, it's too big — split it.
Actively ask about and encourage source material:
materials/Source material is optional but encouraged. The AI can teach from its own knowledge for well-known topics. But for broader, specific, or exotic topics that might not be well-represented in training data, source material dramatically improves teaching quality.
Help the user organize material into materials/ with clear naming.
For each topic, write a lessons/FILENAME.md. Each lesson should cover:
materials/ to draw from)Write lessons collaboratively. Draft them, present to the user, incorporate feedback. A lesson the user hasn't reviewed is a lesson that might misrepresent what they want to learn.
Use the lesson template at assets/templates/lesson.md as a starting point.
AGENTS.md is the operational guide loaded every teaching iteration. Set it up together with the user:
materials/ if any.Keep AGENTS.md concise — it gets loaded into every iteration's context.
Help the user fill in the [learning-specific goal] in PROMPT_plan.md. This should capture the full learning objective, e.g.:
"Teach the learner Rust programming with a focus on systems-level concepts (ownership, borrowing, lifetimes) and functional programming patterns (iterators, closures, pattern matching). Build toward a small CLI tool that processes text files. The learner knows Python and JavaScript but has no systems programming experience."
Before the user runs the loops, actively encourage them to:
Say something like: "Before you run ./loop.sh plan, read through the lessons and AGENTS.md. The teaching AI uses these as its only guide — if something's wrong or missing here, the teaching will reflect that. If anything needs adjustment, we can refine it."
The user may invoke this skill again to:
This is expected and good.
For reference only — you do NOT execute these phases:
Phase 2: Planning (./loop.sh plan) — The user runs this in their terminal. The AI studies lessons + materials, creates LEARNING_PATH.md with atomic practical activities. Usually 1-2 iterations.
Phase 3: Teaching (./loop.sh) — The user runs this in their terminal. Each iteration: read learning path, pick activity, check learner's workspace progress, teach the concept, guide the exercise, evaluate completion, write marker. The loop waits (default 2 minutes) for the learner to work, then starts a new iteration to check progress.
The user can also run ./loop.sh --done to skip the wait when they've finished an activity and want immediate validation.
For detailed concepts, see references/concepts.md.
git log (structured commit messages: TASK N - status: description) to know which task is active, and git diff to see what the learner changed. This bridges fresh-context iterations — the AI never loses track of progress.materials/ lets the AI teach from specific books, docs, or content the learner wants to study — extending beyond the AI's training data.LEARNING_PATH.md and rerun ./loop.sh plan anytime.