sijiao.skill

私教.skill · MIT · zero dependencies

Any skill, distilled into a tutor that gets you from zero.

Name what you want to learn. It runs eight parallel research tracks, distils a learning-science path from zero to competent, and generates a tutor skill that remembers where you are and sets exercises at your level.

"Give me a study plan" hands you a sheet of paper, once.
This is a tutor that remembers you, drills you, and knows where you're stuck.
git clone https://github.com/swaylq/sijiao-skill.git ~/.claude/skills/sijiao-skill
Worked samples
6
Modules distilled
79
Research tracks
8
Engine tests
35 green

What it looks like

Not a search engine, and not a study plan

It's "a tutor who remembers you, sitting next to you right now". Two real sessions below.

Session 1 · Rust — load state → clear due review → hit the weak spot
you    ❯ continue with rust

tutor  ❯ Loaded: you're on "borrowing & references" (mastery 0.55). Last time you
       got stuck on having &mut and & alive at once. One review is due first,
       then we go at that wall.

       [Retrieval practice · the three borrow rules] No looking it up:
       In one scope, either ___ &, or ___ &mut, and the two ___ coexist.

you    ❯ any number of &, or one &mut, never both at once

tutor  ❯ ✅ Locked in. Next review scheduled 6 days out. Now today's wall —
       this doesn't compile:

         let mut v = vec![1,2,3];
         let first = &v[0];
         v.push(4);            // ← the compiler stops you here
         println!("{first}");

       Before you look: first holds an immutable borrow of v, push needs &mut v.
       Which of the rules you just recited does that break?
Session 2 · Linear algebra — diagnosed as a missing intuition, not a gap in basics
you    ❯ learning linear algebra, but eigenvalues just blank me out

tutor  ❯ Loaded: you're stuck at eigenvalues, but determinants and linear maps
       both cleared (mastery 0.8+) — so this isn't a gap in the basics, it's a
       missing geometric picture. Put the characteristic polynomial down.

       One sentence: an eigenvector is a vector this matrix only stretches —
       its direction survives the transformation. The eigenvalue is the stretch.

       Look at [[2,0],[0,3]]: it stretches the x-axis by 2 and the y-axis by 3.
       Don't compute — can you just say its two eigenvectors and eigenvalues?

you    ❯ (1,0) with 2, and (0,1) with 3

tutor  ❯ ✅ That's the geometry. Now a non-diagonal one, reasoning backwards
       from "direction survives"…

What it distils

A path built on learning science, not a pile of links

Each generated {skill}-learn is a self-contained directory in three layers.

LayerFileWhat's in it
📚 Curriculumcurriculum.jsonPrerequisite-ordered, Dreyfus-staged modules — each with Bloom-levelled objectives, canonical sources, gradeable exercises, milestones, and what "you've got it" looks like
🧑‍🏫 TeachingSKILL.mdThe tutor itself: load state → locate you → explain → worked example → fade the scaffold → independent practice → set and grade
🗂️ Recordlearner-state.jsonYour progress, missed questions, SM-2 spaced-review schedule, streaks (private, never committed)

Five principles it distils against

PrincipleHow it lands
Dreyfus stagesSegments the curriculum; the ceiling is set at competent
Bloom's taxonomyEvery objective carries a cognitive level: remember → understand → apply → analyse → evaluate → create
Deliberate practiceEvery module needs an exercise producing something gradeable — never "read this book"
Spaced repetition + retrievalThe record schedules what's due; every session clears due items first
Desirable difficultyWorked example → scaffold fades → independent practice

Why trust it

How do you know the path wasn't just made up?

Every generated skill passes a learning-specific quality gate. Any single failure blocks it.

  • The prerequisite graph is acyclic and sourced — topological validation must come back empty, and every "learn A before B" traces to a source.
  • Every module has a gradeable exercise — not "read more", but "produce something that can be marked right or wrong".
  • "You've got it" is behavioural — "can do X unaided", never "understands X".
  • Sources are first-hand — canonical resources need three independent recommendations. SEO listicles and content farms are rejected.
  • The ceiling is honest — claiming to make you an expert is disqualifying. Mastery comes from years of real practice afterwards.
  • What it can't teach, it says so — AI cannot give real feedback on craft, the body, or social skill. Those steps are marked as self-reported, offline, or human, never faked.

Hard numbers from the six samples in this repo: all 79 modules pass engine topological validation, curricula are engine-rendered, the learner-state example validates against its schema, and 35 tests cover the tooling engine.

Worked samples

Six tutors, distilled end to end

All three layers present, prerequisite graphs engine-validated, research trail fully transparent — every module traces back to where it came from.

SkillTypeModulesCeiling
RustHard technical (the cognitive sweet spot)15Competent
Linear algebraCognitive / mathematical13Competent
English readingLanguage · cognitive12Competent
Fat lossPhysiological · behavioural (honest downgrade)13Competent
SkincarePhysiological · behavioural (honest downgrade)13Competent
Strength trainingPhysiological · behavioural (honest downgrade)13Competent

Fat loss, skincare and strength training are non-cognitive skills. They're here to show how the framework downgrades honestly when it meets one — what AI can't judge gets routed to self-report, offline practice, or a doctor (⚠️ not medical advice). Want something not on this list? Install it and say "teach me X".

Install

One clone, any host

Once installed, just say "teach me rust", "continue with rust", or "quiz me on rust ownership".

git clone https://github.com/swaylq/sijiao-skill.git ~/.claude/skills/sijiao-skill
HostTarget path
Claude Code~/.claude/skills/sijiao-skill
OpenClaw~/.openclaw/skills/sijiao-skill
Codex~/.codex/skills/sijiao-skill
Hermit~/.hermit/skills/sijiao-skill

It confirms five things first (the skill, your current level, your goal, hours per week, language), then kicks off eight parallel research tracks, distils against learning science, and writes the three-layer tutor directory. Thirty to sixty minutes later you have a {skill}-learn you can install into any agent and start immediately.