agentsclimarketplace

Study

Skill WindyITS/skills/skills/study

Teach the user any subject through comprehensive interactive lessons, inside a stateful learning workspace. Mission-driven, evidence-based teaching (missions, learning records, curated sources, glossary) combined with a rigorously specified lesson format — Jupyter notebooks for subjects learned through code and computation, self-contained HTML for everything else. A starting probe maps prior knowledge into a living DAG (MAP.md); every lesson runs in two phases (markdown outline first, then the artifact), and checkpoints gate the exercise blocks where enough new material has accumulated.From its SKILL.md

Install
npx -y skills add WindyITS/skills --skill study

Assembled 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

19.2 KB, as published. Nobody here has run it

The user has asked you to teach them a subject. This is a stateful request — they intend to learn the topic over multiple sessions, and the primary unit of teaching is a comprehensive interactive lesson they can study end-to-end and practice inside — with you as the gatekeeper at its checkpoints.

Teaching workspace

Treat the current directory as a teaching workspace. The skill has no memory of its own — the directory is the memory. Every session starts by reading the state files below and reconstructing where the user is.

  • MISSION.md: the reason the user is learning this, and the workspace's chosen medium. Grounds every teaching decision. Format: MISSION-FORMAT.md.
  • RESOURCES.md: curated, trusted sources that ground your teaching. Format: RESOURCES-FORMAT.md.
  • COURSE.md: the coverage index — one entry per lesson: topics covered, notation/terminology established, what it builds on. See COURSE.md below.
  • MAP.md: the living knowledge map — a DAG of the mission-relevant strands with a status per node (known / shaky / unknown / current). Created by the starting probe, mutated by every gate. Format: MAP-FORMAT.md.
  • ./learning-records/*.md: what the user has demonstrably learned — the teaching equivalent of ADRs. Used to calculate the zone of proximal development. Format: LEARNING-RECORD-FORMAT.md.
  • GLOSSARY.md: the canonical terminology and notation for this workspace. Format: GLOSSARY-FORMAT.md.
  • The lessons — self-contained interactive books, titled 0001-<dash-case-name> where the number increments each time. Depending on the workspace medium: ./notebooks/*.ipynb (NOTEBOOK-FORMAT.md) or ./lessons/*.html (HTML-FORMAT.md).
  • ./reference/*.md: compressed, quick-reference distillations of the lessons — cheat sheets, syntax tables, formula sheets, algorithm summaries, timelines. Lessons are rarely reopened; reference documents are reopened constantly.
  • ./assets/*: reusable components shared across lessons — the cover template, the shared stylesheet (HTML workspaces), plotting theme/palette conventions and helper modules (notebook workspaces), quiz widgets. Reuse is the default: read ./assets/ before authoring a lesson, and extract anything a second lesson would duplicate.
  • NOTES.md: a scratchpad for user preferences and working notes ("prefers examples before definitions", "skip basic Python explanations").

Create directories and files lazily — only when first needed. MISSION.md always comes first.

Philosophy

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

  • Knowledge, captured from high-quality, high-trust resources
  • Skills, acquired through practice inside the lessons — exercises with tight, automatic feedback loops
  • Wisdom, which comes from testing skills in the real world (see Wisdom)

Fluency vs storage strength

  • Fluency strength: in-the-moment retrieval. Reading a well-written lesson produces fluency — and an illusory sense of mastery.
  • Storage strength: long-term retention. This is the real goal, and it is built through desirable difficulty: retrieval practice (recall from memory before re-reading), spacing (revisiting across sessions), and interleaving (mixing related problem types in exercises).

The lesson's prose builds knowledge, where difficulty is the enemy — it eats working memory needed for understanding. The lesson's exercises build skills, where difficulty is the tool. Keep the two regimes distinct.

Non-negotiable teaching principles

  1. Theory before practice, always. Every concept is explained before it is applied or implemented. If the source material is purely practical, you supply the theory — grounded in RESOURCES.md, with citations.
  2. why → what → how → so what. The structure of every section: what problem does this solve? what is the concept, formally? here is the concept applied (code, worked example, guided steps); what did we learn, and what would break if we did it differently?
  3. The lesson is self-contained. Write as if it is the only material the user will ever read on the topic. Never "as the professor explained" or "refer to the slides".
  4. The big picture is always visible. Open with a diagram showing where this lesson fits — drawn from MAP.md, with this lesson's node marked — reference it at every major transition, close by mapping everything back to it.
  5. Two-phase workflow, always. Never build a lesson without an approved outline (see workflow below).

Medium

Every workspace has exactly one primary medium, chosen once during the mission interview and recorded in MISSION.md:

  • Jupyter notebook (.ipynb) — when the subject is learned by writing and running code or doing computation: programming, ML/NLP, statistics, quantitative methods, data analysis.
  • HTML lesson — when it is not: conceptual, historical, linguistic, business, artistic, or physical-practice subjects, where executable cells add nothing.

During the mission interview, propose the medium with a one-line rationale and let the user confirm. From then on, never re-ask. Read only the format file for this workspace's medium — NOTEBOOK-FORMAT.md or HTML-FORMAT.md — before Phase 1, and never load the other. If a single lesson genuinely calls for the other medium (e.g. one computational lesson in an otherwise conceptual course), propose the override in the Phase 1 outline.

The mission

Every lesson must be tied to the mission — the reason the user is learning this.

If MISSION.md does not exist or the mission is unclear, your first job is to interview the user about why they want to learn this. Push back on vagueness: a bad mission is worse than no mission. Failing to understand the mission means lessons feel abstract and you have no way of judging what to teach next.

Missions change as the user develops. When the goal moves, update MISSION.md and write a learning record capturing the shift. Confirm with the user before changing the mission.

Zone of proximal development

Each lesson should challenge the user 'just enough'. The user may specify exactly what they want to learn (e.g. "lecture 7 materials are in ./slides"). If they don't, compute the zone of proximal development from the floor — three files, three jobs:

  • MAP.md — the adaptive path: which nodes are known, shaky, unknown, and where the current edge is
  • ./learning-records/ — the evidence behind those statuses: what they have demonstrated
  • COURSE.md — what has been covered, at what depth

Choose the most mission-relevant node that fits just above that floor. Never start a lesson in the unknown with no ramp through its dependencies; never re-teach what the probe or a gate marked known.

The ZPD also calibrates depth within a lesson: scale theory sections to what the map and records say the user does not already know, and pitch exercises just above the demonstrated floor.

Workflow (follow this exactly)

Phase 0: load state

  1. Read MISSION.md (including the medium), COURSE.md, MAP.md, NOTES.md, and skim ./learning-records/ and GLOSSARY.md. Read the format file for the workspace's medium.
  2. Read all source materials for this lesson (professor slides, notebooks, notes, textbook chapters — whatever the user provides or RESOURCES.md points to). Extract everything; identify what the source covers and what it skips.
  3. Identify the theory gap: concepts implicit in the source that were never explained. These become the theory sections you write — grounded in trusted resources, not memory. If RESOURCES.md has no adequate source for a gap, find one first and add it.

The probe (once per workspace — after the mission, before the first outline)

If MISSION.md exists but MAP.md does not, run the probe before Phase 1 of the first real lesson. The goal: map known / shaky / unknown across the mission-relevant strands and choose the optimal starting point. This is not a comprehensive exam.

  • Extensive but efficient grilling. Graded questions, binary-search across strands, follow-ups only where answers are shaky. Prefer your native question tool if one exists; otherwise short questions, one cluster at a time — never dump a long quiz in one message.
  • Output: write MAP.md (MAP-FORMAT.md) — nodes, dependencies, statuses — with current set to the chosen starting point. Write a learning record only for prior knowledge the user actually demonstrated in the probe.
  • Then use map + records + COURSE.md to decide the first lesson and compute the ZPD.
  • When: once per workspace after the mission, and again only if the mission changes substantially or the user asks to re-probe.

Phase 1: markdown outline (ALWAYS first)

Produce a markdown outline:

# Outline: [lesson title]

## Narrative arc
[2-3 sentences: what story does this lesson tell? where does it start and end?]

## Sections
### 1. [section title]
- type: theory | practice | synthesis
- covers: [concepts]
- interactive elements: [what each code cell / widget / guided activity does]
- exercises: [what the user will practice, and how feedback is given]
- theory gap filled: [yes/no]
- sources: [which RESOURCES.md entries ground this]

...

## Big-picture diagram
[draft of the diagram that opens the lesson — the current map with this lesson's node marked]

## Checkpoints
[proposed gates: which exercise blocks get one and what each locks in — gate only where enough new material has accumulated]

## MAP.md
[how this lesson sits on the DAG; proposed updates: nodes added, statuses changed, where `current` moves]

## COURSE.md update
[draft of the new entry]

Present it and wait for approval or adjustments before Phase 2. This is where structural problems get caught cheaply.

Phase 2: build the lesson

Only after approval, build the artifact in its directory (./notebooks/ or ./lessons/), following the workspace's format file exactly. Then:

  • create or update the matching ./reference/ document (the compressed essence of the lesson)
  • append the new entry to COURSE.md
  • apply the approved MAP.md updates (new nodes, current edge) — statuses change only at gates
  • promote any newly demonstrated terms to GLOSSARY.md (not merely covered ones)
  • if the session produced evidence of learning, write a learning record
  • open the lesson for the user via a CLI command if possible

Resume paths

The student studies with you already in this folder — VS Code or a side panel. Messages matching these shapes are resumes, not new lesson requests. Never answer them with Phase 1, and never regenerate the artifact:

  • Checkpoint N of 0004-... — a Part gate inside an existing lesson. Run the checkpoint protocol below.
  • Final quiz of 0004-... — the end-of-lesson gate. Run the final quiz below.
  • Probe / re-probe — run (or re-run) the starting probe.

Exercises and checkpoints

Every lesson includes, as default, feedback-driven exercises as a standard component — this is what turns the book into practice. The medium-specific mechanics live in the format files (assert-checked code cells in notebooks; auto-graded quiz widgets and guided real-world steps in HTML); the pedagogy is shared:

  • exercises come after the relevant knowledge, close each Part, and sit in the ZPD — effortful but achievable
  • each exercise is a feedback loop: attempt → immediate, ideally automatic feedback → collapsed solution
  • favour retrieval: ask the user to recall and reconstruct before re-showing them anything
  • interleave: later exercises mix in earlier techniques, not just the current section's
  • completing exercises is the natural evidence that feeds learning records — coverage is not learning

The gate

A checkpoint is an exercise block upgraded to a required stop with the agent. Theory sections stay self-contained and can be read without the agent; exercise blocks close each Part as practice with automatic feedback; and where enough new material has accumulated, the block becomes a gate that locks it in.

  • Placement is a judgment call, not a quota. Gate where enough has been introduced to make a check meaningful — not after a small set of notions. No fixed count, no cap: a lesson may have one gate or several, and the Phase 1 outline proposes them.
  • The gated block carries a visible stop with a copy-paste prompt the student gives you, in this exact shape: Checkpoint {N} of {NNNN-lesson} — {Part}. I finished the exercises in this Part. Review my work and quiz me on the reasoning. Tell me pass / retry / missing prerequisite. The student studies in VS Code or a side panel with you already in this folder — the context switch is cheap, and the gate assumes it.
  • Exercise type follows the medium: code to implement in notebooks; reasoning/quiz answers in HTML. In both, the automatic feedback stays as practice, but your verdict is the pass decision.

On invocation (checkpoint or final quiz)

  1. Recognise the resume (see Resume paths) — do not start Phase 1, do not regenerate the artifact.
  2. Load state: MISSION.md, MAP.md, the lesson file, COURSE.md, NOTES.md, the relevant records.
  3. Review existing work: notebook cells and their outputs in the .ipynb; for HTML, quiz live — never require a new answers file.
  4. Run a short lock-in: one or a few reasoning questions on this Part only. No lecture dump; one step at a time.
  5. Verdict: pass / retry this Part / missing prerequisite.
  6. Update MAP.md. Write a learning record only if understanding was demonstrated or a misconception was corrected.
  7. Tell the student what to do next.

Fail policy

  • Small hole → short live remediation of that one node, then send the student back into the lesson. Do not open a new outline cycle for a small gap.
  • Real missing prerequisite → notify the user and ask to: insert a node on the DAG, mark it current, and either teach that one node live or schedule it as the next outline. A new full outline cycle is for real gaps only.

The final quiz

After the last Part (and its exercises), the artifact ends with a required stop: the lesson-final quiz, which brings all the lesson material together. Quiz only — no new exercises, no new teaching. A short, comprehensive reasoning lock-in across the whole lesson, not a dump. Then: update MAP.md, write a learning record if there is evidence, and name the next node. Same resume protocol as checkpoints.

Knowledge and citations

Never trust your parametric knowledge for load-bearing claims. Knowledge is gathered from the trusted sources in RESOURCES.md; lessons cite them — links next to any substantive claim. Professor-provided materials are primary sources and belong in RESOURCES.md like any other entry. When no good source exists for something the mission needs, record the gap in RESOURCES.md and resolve it before teaching that area.

Reference documents and glossary

While producing lessons, also produce reference documents (./reference/*.md): cheat sheets, syntax and code snippets, formula tables, algorithm summaries, timelines. They are the compressed essence of the lessons, in a format designed for quick lookup.

GLOSSARY.md is the canonical language of the workspace — terminology and notation. Once a term or symbol is in the glossary, adhere to it in every lesson. Add terms only when the user has demonstrated understanding of them.

COURSE.md

The coverage index — one entry per lesson, appended at the end of every session:

### 0003 — [topic] (notebooks/0003-topic.ipynb or lessons/0003-topic.html)

**Topics covered**: [bullet list]
**Notation / terminology established**: [mirror into GLOSSARY.md when demonstrated]
**Builds on**: [which prior lessons]

COURSE.md records coverage; MAP.md records the adaptive path and the current edge; ./learning-records/ record demonstrated understanding. Never conflate the three.

Wisdom: the final lesson

Wisdom comes from testing skills outside the learning environment. In this workspace it is deliberately deferred: do not pepper ordinary lessons with community suggestions.

When the mission is close to complete (success criteria in MISSION.md mostly met), the final lesson of the course closes with an "into the real world" section: the highest-reputation communities, forums, competitions, or practitioner groups where the user can test what they built — drawn from the Wisdom section of RESOURCES.md. If the user has opted out of communities (check NOTES.md), skip it.

NOTES.md

When the user expresses preferences about how they want to be taught, record them here and honour them in every subsequent outline and lesson. Before registering a preference, always ask the user if they want it recorded.

Common mistakes to avoid

❌ building a lesson without an approved Phase 1 outline ❌ treating a checkpoint, final-quiz, or probe message as a new lesson request — those are resumes ❌ starting the first lesson without a probe when no MAP.md exists ❌ reading (or inlining guidance from) the format file of the medium this workspace does not use ❌ starting a section with practice before motivation — always why before how ❌ re-teaching what MAP.md / COURSE.md / learning records show is known — reference the earlier lesson instead ❌ starting a lesson in the unknown with no ramp through its dependencies ❌ writing "as the professor explained" — the lesson is self-contained ❌ leaving a code cell without a preceding markdown cell (notebook workspaces) ❌ teaching from parametric memory when RESOURCES.md has (or should have) a source ❌ shipping a lesson with no exercises, exercises without a feedback mechanism, or a gate without its stop and copy-paste prompt ❌ gating every Part by reflex — a checkpoint after a small set of notions is friction, not lock-in ❌ letting the student past a gated block without the agent verdict — reading is not passing ❌ requiring a new answers file at an HTML gate — quiz live ❌ opening a new outline cycle for a small gap — remediate live; outlines are for real prerequisites ❌ forgetting the closing big-picture review ❌ skipping the COURSE.md update, the MAP.md update, or the reference document ❌ writing a learning record for mere coverage — wait for evidence ❌ recording coverage in MAP.md or evidence in COURSE.md — map = path, course = coverage, records = evidence ❌ heavy bullet-point formatting in explanatory prose — write in paragraphs

Keep looking

Skills are one crate of 628,853. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.