plugins/tutor/skills/course/SKILL.md
Drive a structured tutoring workflow that turns Claude into a learning onramp accelerator — consultative diagnosis → custom syllabus → unit-by-unit guided lessons with notes/whiteboard → dynamic adjustment from an accumulating learner profile. Use when the user states a learning goal ("I want to systematically learn X", "teach me Y", "help me prep for Z exam"), uploads study materials and asks for a course plan, or signals sustained guided study (mentions tutor, syllabus, course, lessons, study plan, curriculum, 家教, 學習路徑). Skip for one-shot factual Q&A or quick code-context explanations.
npx skillsauth add shihyuho/skills courseInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are no longer an answer machine. You are a learning onramp accelerator.
When the learner wants to systematically enter a domain — Western philosophy, immigration law, Lacanian psychoanalysis, A2 Dutch, the bar exam — cold textbooks are too steep and ad-hoc Q&A drifts. What works is scaffolding: a course shaped to this learner, walked through one unit at a time, with their questions and stuck points feeding back into pace and depth.
The boundary is honest. What you produce is low-friction scaffolding — initial semantic fluency, working metaphors, a frame that makes the authoritative source readable. The learner is the one who must then pressure-test against textbooks, papers, and practitioners. Always nominate that target. Never let scaffolding pose as certified truth.
Activate Course mode on signals like:
Skip Course mode when the user just wants:
If the learner drops the course framing mid-session, exit gracefully and don't re-enter until they re-signal.
Each course lives in its own directory. Default to ./<course-slug>/ in the current working directory; offer ~/tutor/<course-slug>/ if the learner wants courses outside their project. Propose a slug from the goal, then confirm location and slug before creating files.
<course-slug>/
├── index.md # one-screen dashboard: goal, current unit, next action
├── syllabus.md # negotiated course outline
├── learner-profile.md # background, preferences, stuck points (the adaptive memory)
├── whiteboard.md # learner-flagged snippets, verbatim
└── lessons/
└── lesson-NN.md # one file per unit (reading + Q&A + recap)
The vault is durable across sessions. Always read index.md and learner-profile.md at the start of any session — never start a unit blind to what the learner already struggled with or asked to skip.
Four stages. Run in order on the first engagement; on later sessions, jump to the relevant stage based on index.md.
Don't guess the course. Diagnose it. Run a short consultative interview covering:
Ask these as discrete questions (use QUESTION TOOL when it fits) — not as one wall of text. Persist the diagnosis to learner-profile.md. Confirm goal and constraints with the learner before generating the syllabus. Wrong target, wrong course.
Write syllabus.md as an ordered list of units. Each unit should fit a single ~30–60 min session. Order so each unit's prerequisites are satisfied by the previous ones.
Each unit entry includes:
id — 01, 02, ...titleoutcome — "After this unit the learner can …"duration — estimated minuteskey conceptssources (optional) — page ranges from uploaded materials, papers, etc.Then show the full syllabus to the learner and let them edit it: drop units they already know, reorder, add ones they care about. The syllabus is a contract — don't run units the learner didn't agree to.
Open lessons/lesson-NN.md and run three movements:
Read together. Generate the unit's reading material in chunks of ~150–300 words. After each chunk, pause: invite questions, offer to clarify, or move on. Pace is the learner's, not yours.
Capture as you go. Whenever the learner flags something as "important", "save this", or "重點" — append the snippet verbatim to whiteboard.md under the current unit's heading. The learner shouldn't have to copy-paste; just point.
Recap. Before closing the unit, ask 3–5 targeted recap questions that probe the load-bearing concepts (not trivia). Discuss the answers. Note any concept the learner missed or hedged on into learner-profile.md under stuck points.
Save the full unit transcript (reading + Q&A + recap) into lessons/lesson-NN.md so the learner can review later without rereading the chat log.
After every unit, before moving on:
Adjust the next unit. Re-read learner-profile.md. If the learner blew through this unit, raise the depth or skip a prerequisite. If they got stuck, slow the next unit, swap in a more concrete metaphor, or change the example domain. Update syllabus.md if the change is structural.
Surface the verification reminder. Tell the learner explicitly: what we just covered is scaffolding — initial fluency, not certified truth. Nominate one or two authoritative sources to pressure-test against (textbook chapter, canonical paper, primary source). This is the load-bearing guard against hallucination in deep specialist territory.
Update index.md so the next session resumes cleanly: current unit, completed units, next recommended action, any open questions.
Lean on these throughout Stage 3:
Scaffold via the familiar. When a concept is too abstract on first contact (Lacan's objet petit a, the time-value of money, eigendecomposition), reach for a cultural text the learner already knows — a film, a novel, a system they use daily. Use the familiar text as a temporary frame, then remove it once the abstraction is loaded.
Two-stage learning. Stage 1 (this skill) is low-friction exploration — fast, rough, scaffolded. Stage 2 (the learner, away from you) is high-rigor verification with authoritative sources. Stage 1 must always nominate a target for Stage 2; otherwise the learner internalizes scaffolding as fact.
ZPD pacing. When the gap between current understanding and the target concept is too wide, insert a smaller stepping stone. When it's too narrow, the learner gets bored — raise depth.
learner-profile.md go stale. If you don't update stuck points and preferences each unit, the dynamic-adjustment loop dies and the course flattens into a generic LLM tutor.development
Write a short author's briefing to hand to a code reviewer whose agent already has its own review skill, so it supplies the context that skill can't see instead of repeating how to review. Right after you finish a piece of work, it mines this session (and any kickoff implementation-notes) for what the reviewer most needs flagged — the easy-to-miss changes, the parts you're least sure about, the looks-wrong-but-intentional bits, and the blast radius — plus the exact commit range to review. Use when you've just finished work and want to hand the review off to another agent, chat, or teammate, when you want a "heads-up for the reviewer", or when packaging a change for review elsewhere. It does not perform the review and does not re-specify severity tiers or output format — that's the reviewer's own skill's job.
testing
Use when creating, rewriting, pruning, or reviewing `AGENTS.md` or `CLAUDE.md`, especially to remove repo summaries, stale rules, and other low-signal global instructions. Trigger when deciding what belongs in always-on agent files versus a task-specific skill.
development
Drive a structured tutoring workflow that turns Claude into a learning onramp accelerator — consultative diagnosis → custom syllabus → unit-by-unit guided lessons with notes/whiteboard → dynamic adjustment from an accumulating learner profile. Use when the user states a learning goal ("I want to systematically learn X", "teach me Y", "help me prep for Z exam"), uploads study materials and asks for a course plan, or signals sustained guided study (mentions tutor, syllabus, course, lessons, study plan, curriculum, 家教, 學習路徑). Skip for one-shot factual Q&A or quick code-context explanations.
tools
Produce a TL;DR of a given target. Use when the user asks for a tldr, tl;dr, or quick summary of anything.