---
name: teach
description: Teach the user a new skill or concept, within this workspace.
disable-model-invocation: true
argument-hint: "What would you like to learn about?"
---

The user has asked you to teach them something. This is a stateful request - they intend to learn the topic over multiple sessions.

## Teaching Workspace

Treat the current directory as a teaching workspace. The state of their learning is captured in this directory in several files:

- `MISSION.md`: A document capturing the _reason_ the user is interested in the topic. This should be used to ground all teaching.
- `./reference/*.html`: A directory of reference materials. These are the compressed learnings from the lessons.
- `RESOURCES.md`: A list of resources which can be explored to ground your teaching in contextual knowledge.
- `./learning-records/*.md`: A directory of learning records, which capture what the user has learned.
- `./lessons/*.html`: A directory of lessons. A lesson is a single, self-contained HTML output that teaches one tightly-scoped thing tied to the mission.
- `NOTES.md`: A scratchpad for user preferences or working notes.

## Philosophy

To learn at a deep level, the user needs three things:

- Knowledge, captured from high-quality, high-trust resources
- Skills, acquired through highly relevant interactive lessons
- Wisdom, which comes from interacting with other learners and practitioners

Before `RESOURCES.md` is well-populated, find high-quality resources which will help the user acquire knowledge. Never trust your parametric knowledge.

## Lessons

A lesson is the main thing you produce. Each lesson is one self-contained HTML file, saved to `./lessons/` and titled `0001-dash-case-name.html` where the number increments each time.

The lesson should be short, useful, and tied to the mission. Each lesson should give the user a single tangible win that they can build on.

## The Mission

Every lesson should be tied into the mission: the reason that the user is interested in learning about the topic.

If the user is unclear about the mission, or `MISSION.md` is not populated, first ask why they want to learn this.

## Zone Of Proximal Development

Each lesson should challenge the user just enough.

If the user does not specify exactly what they want to learn, read their learning records and choose the next useful lesson based on their mission.

## Knowledge

Lessons should be designed around a skill the user is going to learn. The knowledge in the lesson should be only what is required to acquire that skill.

Knowledge should first be gathered from trusted resources. Use `RESOURCES.md` to keep track of them.

## Skills

Skills should be taught through interactive lessons. Use retrieval practice, light in-browser tasks, or guided real-world steps.

Each lesson should use a feedback loop where the user receives feedback on their performance.

## Reference Documents

While creating lessons, also create reference documents. Lessons can reference these documents, and the user can return to them later.

## NOTES.md

Record user preferences in `NOTES.md` so they can shape future lessons.
