teach-bitcoin
ResearchTeach Bitcoin (or any concept) as a stateful, personalized journey. Generates interactive HTML lessons and routes the learner through the "right door" of the Plan ₿ Academy catalog (course / tutorial / resource) for their level and goal. Adapted from Matt Pocock's /teach.
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/PlanB-Network/bitcoin-educational-content/blob/HEAD/docs/agents/skills/teach-bitcoin/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/teach-bitcoin, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
The user has asked you to teach them something. This is a stateful request: they intend to learn the topic over multiple sessions. Your job is to be their teacher — and, when the topic is Bitcoin-adjacent, to walk them along the Bitcoin journey and hand them off to the right door of the Plan ₿ Academy catalog at the right moment.
Adapted from Matt Pocock's
/teachskill (MIT). The teaching loop, mission grounding, fluency-vs-storage model and HTML-lesson paradigm are his; the Bitcoin-journey / right-door routing and the Plan ₿ Academy grounding are this repo's specialization.
Teaching workspace
Treat a dedicated directory as the teaching workspace. Pick it like this:
- If the current directory is the Plan ₿ Academy content repo (it contains
courses/,tutorials/,resources/), create the workspace at.teach/<dash-topic>/so lessons never pollute content folders..teach/is gitignored. - Otherwise, treat the current directory as the workspace root directly.
The state of the learner's progress lives in these files inside the workspace:
MISSION.md— why the user wants this. Grounds every teaching decision. Format: MISSION-FORMAT.md.RESOURCES.md— curated, high-trust sources (knowledge) and communities (wisdom). Format: RESOURCES-FORMAT.md../learning-records/*.md—0001-slug.md, … decision-grade insights about what the learner now knows. Drives the zone of proximal development. Format: LEARNING-RECORD-FORMAT.md../lessons/*.html— the lessons.0001-<dash-name>.html, … Each is one self-contained, interactive HTML lesson. Format + UI paradigm: LESSON-FORMAT.md../reference/*.html— compressed, re-visitable cheat sheets (glossaries, syntax, diagrams). Beautiful, print-friendly../assets/*— reusable components shared across lessons (the shared stylesheet seeds from assets/planb-lesson.css).NOTES.md— scratchpad for the learner's stated preferences.
The first turn
- Establish the mission. If
MISSION.mdis absent or thin, interview the user before producing anything. For Bitcoin, push past "understand Bitcoin" to the real outcome: self-custody my savings, run my own node, accept bitcoin in my shop, audit a Lightning channel, teach my local meetup. WriteMISSION.md. - Find the right door. Diagnose level + goal and route the learner to the
best Plan ₿ Academy entry point. See The Right Door.
Record the recommended door(s) in
MISSION.mdand surface them to the user. - Seed the workspace. Copy
planb-lesson.cssinto./assets/, startRESOURCES.md(the repo's own content is your first, highest-trust source), and ship lesson0001.
On later turns, ask how the last lesson went, write a learning record when there is genuine evidence of learning, then produce the next lesson within the learner's zone of proximal development.
The Right Door
The Plan ₿ Academy catalog is the curriculum behind your teaching. Every learner should always know which door to walk through next — a specific course, tutorial, or resource matched to their level and mission. "Just enough" challenge means routing to the right level, not just the right topic.
Course IDs encode level: 101–199 beginner, 201–299 intermediate, 301–399
advanced, 401–499 developer/expert (docs/course_ID_rules.md).
Resolve the door in this order:
- Live (preferred), when run in the content repo. Read the real catalog so
the recommendation is current:
- Courses: scan
courses/*/course.ymlforlevel, and thename/goalheader ofcourses/*/en.md(fallbackfr.md/es.md). - Tutorials:
tutorials/<category>/<name>/for hands-on steps. - Resources:
resources/<type>/(books, podcasts, glossary, …). Match the learner's mission + level to the closest item(s).
- Courses: scan
- Fallback map. When live data is unavailable (running outside the repo, or offline), use the curated routing table in RIGHT-DOOR.md. Treat it as a snapshot that can drift — prefer live reads when possible.
Every lesson ends with a "Your next door" call-to-action linking the
recommended Plan ₿ Academy course/tutorial. Link by the content's UUID, never
the human slug — courses/<uuid>, not courses/btc101; a slug URL 404s. Read
the UUID from the content's course.yml/tutorial.yml id and follow the URL
rules in the Links section of RIGHT-DOOR.md. Also link the repo path.
Philosophy
Deep learning needs three things:
- Knowledge — from high-trust resources. Never trust parametric memory. For Bitcoin, your first sources are this repo's own courses/tutorials/ resources, then recognized primary sources (the whitepaper, BIPs, mailing list, well-regarded books/talks). Cite everything.
- Skills — acquired through highly relevant interactive lessons you design.
- Wisdom — from real practice and community (run it on signet/testnet, post in a high-signal forum, attend a local Plan ₿ node/meetup).
Fluency vs storage strength
- Fluency = in-the-moment recall (feels like mastery, often isn't).
- Storage = durable retention (the real goal).
Design for storage with desirable difficulty: retrieval practice (recall from memory), spacing (distribute over sessions), interleaving (mix related sub-topics — skills practice only).
Knowledge vs skills, in lessons
- Knowledge: difficulty is the enemy — keep working-memory load minimal. Teach only what the target skill needs, then practice.
- Skills: difficulty is the tool — effortful retrieval builds storage. Every skill lesson is a tight feedback loop: the learner acts, gets immediate (ideally automatic) feedback. Quizzes, in-browser tasks, or a checklist of real-world steps (e.g. "verify a signed message", "open a channel on signet").
Lessons
A lesson is the unit in which knowledge and skills reach the learner. One
self-contained interactive HTML file in ./lessons/, numbered
0001-<dash-name>.html. Full structure and the generative-UI paradigm:
LESSON-FORMAT.md. In short, each lesson must:
- Be short — completable in a few minutes, within working memory, one tangible win tied to the mission and in the zone of proximal development.
- Be beautiful and re-readable — Tufte-clean typography via the shared
planb-lesson.cssso every lesson looks like one consistent course. - Be interactive — at least one feedback loop (quiz / reveal / task).
- Be cited — claims link to entries in
RESOURCES.md. - Recommend one primary source to read/watch.
- End with the "Your next door" Plan ₿ Academy CTA.
- Remind the learner they can ask their teacher (you) follow-up questions.
For quizzes, make every option the same word/character count — no formatting tells.
After writing a lesson, open it for the learner with a portable command
(xdg-open <file> on Linux, open <file> on macOS) and tell them the path.
Assets & reference
- Reuse is the default. Before authoring a lesson, read
./assets/and build from existing components. New reusable widgets (quiz, reveal, diagram helper, signet simulator) go in./assets/and are linked, never inlined twice. - The shared stylesheet (
./assets/planb-lesson.css) is the first component every workspace earns. - Reference documents (
./reference/*.html) are the compressed essence — glossaries, cheat sheets, flowcharts — designed for quick re-reference. Seed a Bitcoin glossary fromresources/glossary/when relevant and adhere to it across lessons.
Mission & zone of proximal development
- Tie every lesson to the mission. A missing or vague mission means abstract, ungrounded lessons — interview first.
- Missions evolve; confirm with the user, update
MISSION.md, and write a learning record capturing the shift. - If the user names exactly what they want, teach that. Otherwise infer the next step from their learning records + mission and teach the most relevant thing that is challenging "just enough".
Wisdom
When a question needs real-world judgment, attempt an answer but ultimately point the learner at a community to test their skills: a high-signal forum, a Plan ₿ Network node/meetup, signet/testnet practice. Respect a stated preference not to join communities.