"A colleague distills a person, Nüwa distills a mode of thinking, a master distills an entire line's OS, a private tutor distills a path that lets you learn it yourself."
Core Philosophy
master-skill lets the agent for youmake expert judgments; Private Tutor.skill lets the agent turn you intoa person who knows this skill.
A good {skill}-learn is not a curriculum encyclopedia, but arunnable path from 0 to competence, in three layers:
- Curriculum layer
curriculum.json/curriculum.md— prerequisite ordering, Dreyfus-staged modules, each with objectives / resources / exercises / milestones - Teaching layer
SKILL.md— load state → locate → teach according to the pedagogy protocol → assign and grade problems - Profile layer
learner-state.json— progress / mistakes / spaced repetition / check-ins (private, not committed to git)
For methodology see references/pedagogy-framework.md, for artifact templates see references/skill-template.md。
Scope constraints (important)
- The framework sets no hard boundaries: any skill can be distilled into a curriculum; but what AI cannot teach (real feedback from crafts / the body / social interaction) ishonestly labeledand redirected to uploads / offline / real people (route 7), without pretending it can grade.
- Ceiling = competent: the private tutor takes you to "able to independently do routine tasks"; beyond that (proficient / expert) depends on years of real practice — say it plainly, do not boast about "becoming an expert".
- Prioritize the sweet spot as samples: cognitive / knowledge-based skills (programming / math / language reading) first, see
prototypes/。
path placeholders
All artifacts land inside the generated skill's own directory, self-contained:
{skill-slug}-learn/ ← Phase 3 产出(结构见 references/skill-template.md)
Execution Flow
Phase 0 · Skill clarification + learner profile
According to prompts/intake.md: narrow overly broad skills, collect level / goals / time budget / locale, detect skill type (to set honest-limits). Produce intake.json。
update 私教 X→ Phase 0C: only rerun the fast-decaying routes 2/4/7, patch into the existing skill, protect the DAG + pedagogy (SLOW_UPDATE zone).
Phase 1 · 8-track parallel research
According to prompts/research/01-08.md(source standards see prompts/_source_id_manifest.md) launch 8 sub-agents:
| Track | Topic | Track | Topic |
|---|---|---|---|
| 1 | Knowledge map / prerequisite dependencies | 5 | Common blockers / misconceptions / plateaus |
| 2 | Canonical textbooks and courses | 6 | Ability assessment / milestones |
| 3 | How experts learned it back then | 7 | Feedback and communities |
| 4 | Deliberate practice / problem banks | 8 | Motivation · habits · rhythm |
Each track writes references/research/0N-*.md, and every conclusion carries source_id。
- Research review gate: have the user confirm research quality before proceeding (garbage input pollutes downstream).
Phase 2 · Framework distillation
According to prompts/synthesis.md + references/pedagogy-framework.md: build the prerequisite DAG (validate_dag via) → Dreyfus stages (ceiling: competent) → fill each module (Bloom objectives / canonical resources / ≥1 assessable exercise / behavioral milestones / honest_limit) → weave in checkpoints → triple validation (prerequisites justified / resources independently recommended / exercises assessable).
- Distillation review gate: first give the course skeleton (modules + order) for the user to confirm, then fill it all in.
Phase 3 · Write the skill
Following references/skill-template.md generate a three-layer directory:
curriculum.json→(tools/curriculum_builder.py:validate_dag→topo_sort→segment_by_dreyfus→render_curriculum_md)→curriculum.md- Teaching layer
SKILL.md(fill the template: course-start protocol readslearner-state.json, pedagogy protocol, calltools/learner_state.pyto update the profile) learner-state.example.json+pedagogy.md+meta.json+references/research/leave a trace
Phase 4 · Quality check
Following prompts/quality_check.md run 10 items (first-hand source rate / DAG acyclic and justified / every module has an assessable exercise / behavioral milestones / Bloom progression / honest ceiling / resources real and specific / honest boundaries complete / learner-state wired up / locale consistent). The validation gate outputs accept / conditional / reject + specific fixes. Critical failures (blacklisted sources / cycles / modules without exercises / claiming "expert") are an automatic veto.
Phase 5 · Dual-agent refinement
One agent plays a zero-foundation learner going through the course start, the other checks "activation means course start" and "whether adaptation really uses the profile", and they refine until it flows.
Call the generated skill
> 学 rust # 没装过 → 触发本 skill 蒸一个 rust-learn
> 继续学 rust # 已有 rust-learn → 读档接着教
> 考我 rust 所有权 # 触发对应模块的检索练习
> update 私教 rust # 半年后增量刷新资源 / 工具
Install to any host:python3 tools/install.py install --host claude --source ./rust-learn。
Taste guidelines (quick reference)
- A course is apathnot a reading list; every module must have a "sign you've got it" + an assessable exercise.
- Order by real prerequisites, not by the table of contents.
- Honesty > completeness: say plainly what can't be taught, say plainly when expert level can't be reached.
- Personal tutorremembers you: reads the profile every time, adapts to the profile, doesn't repeatedly ask "where are you up to".
Relationship to other skills
- Colleague.skill distills what a specific person does.
- Nüwa.skill distills how anyone thinks.
- Master.skill distills a whole field's cognition + workflow + tools (give a man a fish)。
- Personal-tutor.skill distills a path that lets you learn it yourself (teach a man to fish). Phase 3 can optionally call Nüwa to distill "the best teacher of this subject" as a sub-skill.