I realized the other day, I've been
teaching stuff for 10 years. I was a
voice coach for 6 years and I've been
doing this job teaching devs for 4
years. And for a while I've been
thinking, wouldn't it be great if I
could take everything I know about
teaching and put it inside a skill so
that anyone could learn anything. I had
a long bus ride to London the other day
and I wrote a teach skill and it turns
out that it's pretty good. It taught me
how to solve a Rubik's Cube, which is
something, you know, I've always wanted
to learn how to do, but I never really
had the time or inclination to do it.
But with this teach skill, it felt like
I had a real teacher who was teaching
how I like to be taught and was totally
aligned with my mission. And I'm going
to show you how I did it. The key
concept when we're looking at a teach
skill is some skills can be stateful and
some skills can be stateless. If a skill
is stateless, it means that it doesn't
retain any state from previous runs. It
doesn't have any memory of the things
that you've done before. In other words,
a stateless skill doesn't save anything
on the file system to help it pick up
where it left off later. Whereas
stateful skills do do that. They save
things either to the local file system
or they save things to MCP servers. They
keep notes that they later track.
Initially, I was thinking about teach as
a kind of stateless skill where you
would just say, "Teach me this thing."
and then it would just find some good
resources for you and give you like a an
output that would teach you a lesson
about that thing. But I realized that
all the good teaching that I do is
stateful where I teach you, I being the
teacher, I remember where you've got to.
I know what you've learned. I know what
you can go to next and I've got a bunch
of great resources that I remember from
previous times that I've taught this
thing to teach you about it. So, I
decided that teach had to be a stateful
skill. As an example, if you've used my
skills repo before, you know that grill
me is totally stateless. It just grills
you about a topic until you're ready to
implement. But then grill with docs is
actually stateful. In other words, it
saves some local ADRs, architectural
decision records. It saves some other
stuff, some
glossaries to the repo as well. And so
Grill with Docs is stateful and it gets
better over time, whereas Grill me is
totally stateless. Now, one of these is
not better than the other, they're just
useful in different situations. And so
when you're designing skills, you need
to be careful to think about whether
they need to be stateless or stateful.
And Teach needed to be stateful. The way
you install this skill is you go to my
skills repo, mapper.got skills. You go
down to this quick start here and you
just run the skills.sh installer and you
choose the Teach skill. Once you do
that, you go to an empty directory and
you run Teach inside your coding agent.
So for instance, in this directory,
which is my Rubik's Cube directory, I
said, "Teach me to how to solve a
Rubik's Cube." And you'll notice during
my journey how many files it has created
here. But the first one it created was
the mission. I believe that for a
teacher to be effective, you need to
understand why a student wants to learn
the thing. And so I got this skill to
create a mission for you. Here it says,
"Matt wants to be able to take a
scrambled 3 by 3 Rubik's Cube and solve
it unaided at least once. The goal is
the achievement itself, not speed, not
theory." The next thing it does is it
creates a set of resources. So it goes
and searches the web for actual primary
source, high trust resources that it's
going to use to create the lessons out
of. It does this on the first pass when
you ask it to teach you something and
then it will continue to update these as
you go. And then it will create your
first lesson for you. And lessons are
stored in the lessons folder and then
numbered like this and they're all
individual HTML files. HTML is just so
much richer than markdown, it allows it
to be so much more expressive, so much
more interactive. And this is really the
core of what makes this such a good
learning experience. And here is my
first lesson, anatomy, notation and the
white cross. And it basically teaches
you just what you need to know at that
moment. It gives you diagrams, it gives
you very simple explainers, gives you
call outs, and it gives you quizzes,
too. One thing I find really important
whenever you're teaching anything is to
develop a feedback loop, and quizzes are
okay at this. They're basically good if
you can't find any richer feedback loop.
Again, if we zoom down this, we've got
notations, we've got traps, we've got
your first skill here. And so, it's
giving me the knowledge that I need, but
also encouraging me to develop the
skills I need, which is slightly
different. And the And the skill itself
knows that. Once I completed the lesson,
and I said, "Yes, I can make the white
cross," then it recommended that, or
rather recorded that, inside a learning
record here. And these learning records
are very simple records that the agent
creates when I report how I'm doing. So,
this allows it to keep track of how I'm
doing, and just like a real teacher,
then tailor the next lesson to what I
need. Here's another explainer from
slightly further down this course. I
suppose it's kind of creating a course
as we go based on what I need. So, this
one here, it was okay, it started to add
like little citations now. Again, more
quizzes. I mean, I I just find this
layout really nice to look at and really
useful. I was sort of working on the
skill as I was building this, too. And
so, I added this little bottom or thing
at the bottom. It says It tries to find
uh communities where you can ask
questions here. Because sure, you can
develop knowledge and skills here, but
the only way you're going to be develop
wisdom about the thing is actually
interacting with a community testing
your ideas out in the real world. It
also develops reference material for
you, too. This was something I noticed
that I needed. So, there's a glossary.
This glossary has the anatomy, it has
the notation here, has the solving grip,
the daisy, sort of anything like weird
jargon that we've learned is going to go
into the glossary. This is really
useful, especially if you're learning
like a coding language using this. It
also means that future lessons can be
more concise because they're able to
reference the term in the glossary, and
you can look back if you're confused. It
also creates cheat sheets for you. So
this is a solve card here where it's
basically just giving me the entire
solve. If I want just a single place to
look at how to create or solve a Rubik's
Cube, this is the place I can go. And
finally, just to explain this notes.md
file, this is where the agent can note
down any of my preferences, note down
any watch outs, and it's just kind of
internal note taking for the agent
itself. So let's imagine that I sit down
to a session and I basically want to
fill in the teacher on what I've been
doing since I last had a session. So I
just say teach and I can basically
complete the Rubik's Cube now except for
the corner cycle, which I've still not
quite got into memory. Let's go ahead
and see what it says. It starts of
course, because this is a empty context,
by checking the state of my teaching
workspace. It's checking all of the
solve cards, seeing how far I've got to.
It's now giving me a decent diagnosis
for what I'm feeling. It's saying the
concept is solid for the corner cycle,
which is a particular algorithm, but
it's the one that hasn't reached muscle
memory. Let me look at the existing
memorization lesson, one earlier lesson
to match the house style. So we've
turned the agent basically into a
teacher and you've got to work with it
in the same way that you would any
one-to-one teacher. You tell it what
problems you're having and it will
design lessons to find solutions. The
model I'm using here is Opus 4.8 with
medium effort, by the way. It's also
using a key teaching term here, the zone
of proximal development. One algorithm,
pure muscle memory work. The zone of
proximal development is this key
teaching idea which I am obsessed with.
And it's the idea that you should always
teach someone in the area where they are
perfectly challenged but not
intimidated. This means that every
lesson has to be concise, compact, and
exactly framed at that zone of proximal
development. So the student's not bored,
but also not freaked out. So we can see
it's now created this lesson, the corner
cycle lesson. And it's created this
exact lesson for us. So, it's basically
just breaking it down, paying more
attention to it, giving me new mental
models. One four move phrase played
twice. Okay, that is handy. And the idea
is I would walk through this lesson. Oh,
look at this. Oh my gosh, look at this.
So, it's actually given me an
interactive tap thing I could do. Okay,
so it's U R U' prime L' prime U
R' prime U' prime L. Oh my god, look at
this. So, it's got guided mode. So, I
can turn off that. Oh, that's That's
unreasonably cool. You see what being in
HTML gives us here, right? We've got the
full power of the browser to mess about
with here. So, you get the idea of what
these lessons look like. They are short,
they are really focused, and it gives me
exactly what to practice now. And this
also means because everything has been
saved to the file system, I can clear
this, and every time I run teach again,
it will have all the context it needs to
keep me in the zone of proximal
development. Let's briefly look at the
skill itself here. It's really quite
simple, although it is one of the longer
skills that I've put together. The user
has asked you to teach them something.
This is a stateful request. They intend
to learn the topic over multiple
sessions. It goes into the shape of the
teaching workspace, which we've looked
at already, and it has a sectional
philosophy here. So, I really define the
terms that the AI should think in. It
should think in terms of giving them
knowledge from high-quality, high-trust
resources, skills, highly relevant
interactive lessons, and actually
developing the skills, and then wisdom
that comes from interacting from other
learners and practitioners. We go
further down here, and we touch on the
shape of the lessons themselves. We've
talked about the mission as well,
mission.md, the zone of proximal
development, acquiring knowledge and
skills, how to do that, acquiring
wisdom, which basically when the learner
is ready to go out into the world, once
they've got the knowledge and skills,
how do you delegate them to the
community? When the user asks a question
that appears to require wisdom, your
default posture should be to attempt to
answer, but to ultimately delegate to a
community. My idea with this teach skill
is not to have you hooked onto the agent
for learning everything. It's to
actually give you the skills you need to
feel confident to go out and work with a
community and send you out into the
world. That's the dream of this stuff.
We've also got more material here on
reference.documents and finally on
notes.md, but that really is the skill.
There's a few little bits of supporting
documents for like learning record
format, the mission format, the
resources format, etc. In terms of
engineering, I can imagine this skill
being really useful in onboarding people
to a code base. Creating documentation
is a real pain in the ass because not
only do you need to keep it up to date,
but that documentation is probably
outside the person's zone of proximal
development. They might have worked with
your stack before, they might just need
to know the specific problem domain, or
they might have worked with the problem
domain before, but they have no idea
what TypeScript is or things like that.
So, you can think of teach here as, you
know, you start them off in their own
workspace, you point them at code base,
you teach them how to, you know, they
learn independently how to work with the
code, what the concepts are, and guess
what? You've got a productive employee
in record time. For me, I'm excited to
use this just on my side projects, on
having fun, on just learning stuff that
I wouldn't have learned how to do
before, you know, solving this freaking
Rubik's Cube. I might even dig out a bit
of old chess material and see if it can
teach me some openings. And I wanted to
end here by talking about an idea that
I've had for a while that I think this
teach skill really proves or rather
makes very plain to me, which is that
we, the developer community, engineers
out there, are the first people to
really experience what AI can do on
something that it's really good at. AI
is currently better at writing code than
it is at almost anything else. There are
a few exceptions, but really AI is very
good at writing code, and developers
have an advantage that we're the first
people to really get to test AI out on a
problem where it's very good at it. This
means that we are the first people
really in the world, you know, with a
couple of exceptions, that get to know
AI, that get to build these cool things,
and it means that we're the first movers
in this new space. We can take the ideas
that we develop here, turn them into
skills, and start bringing them out to
the world. I think that's incredibly
exciting, and it's something that I'm
going to be exploring more, and this
teach skill is kind of the first phase
of that. So, when you're working with
Clo code or Codex, and you're struggling
with it, and you're losing motivation,
you think, "God, this sucks." Just think
that you'll be able to take the skills
that you are learning now, the instincts
that you're building working with AI,
and take them outside of coding domains.
That, I think, is going to be an
incredibly valuable skill, no matter
what the future of work looks like.
We're all going to be working with AI,
and we are the first people to really
get to do it. Now, if you're digging my
skills, then you should go to AI Hero
{slash} skills, and sign up for my
newsletter that lets you know whenever I
release a new skill, whenever I have any
changes, because I do change the skills
all the time. If you want up-to-date
information on how to use my skills for
engineering and for other stuff, too,
then check it out. But, overall, thanks
for watching. I can't wait to see the
languages that you're learning, coding
languages or human languages, the new
skills that you're developing. I'm going
to get this thing to teach me vocal
harmonies as well. It's always a skill
that I've wanted to know, but never been
very good at. And, ah,
I just can't wait to get using this
thing myself and seeing how you're using
it, too. But, overall, thanks so much
for watching, and I'll see you very
soon.