All notable changes to tutorial-creator are documented here. This project adheres to Semantic Versioning and the format follows Keep a Changelog.
A ground-up redesign that turns tutorial-creator from a single-mode tutorial generator into a three-surface learning workflow. v1.1 was a useful side-project; v2.0 is what it should have been from the start.
- Three top-level surfaces, gateway-mediated. Bare invocation now asks what you want to do (
[1]write a tutorial for myself,[2]write a tutorial for others,[3]manage vocabulary,[4]inspect learning state). The--mode learn|audience|both|vocab|statusflag skips the gateway. - Six writing-to-learn entry points:
[a]daily progression,[b]topic + file,[c]topic only (skill ranks candidate files by pedagogical fit),[d]question-led (with honest-machine ambiguity surfacing),[e]gap-driven (reads from vocab gap radar),[f]external source (fetches a public artifact and produces a writing-to-learn synthesis). - Audience-facing path with five entry points (annotated source / incident-grounded / synthesized / external / documentation-grounded) that hand off to six venue templates:
reddit,book-chapter,apple-developer-article,medium,blog,repo-doc. Each venue has its own voice register, length budget, and honest-machine section convention. Audience routing also asks for target audience (beginner / intermediate / senior / mixed), honest-machine opt-in, and length budget (S / M / L / X). - Vocabulary as a first-class object.
vocabulary.yamlis the source of truth;VOCABULARY.mdis a regenerated view. Subcommands:vocab add,list,show,edit,merge,review,gap,regen-md,undo. Status state machine:new → reviewing → mastered | confused, withmastered → reviewingas the only allowed manual transition. Status is earned through tests, never user-set. vocab review— spaced-repetition test session. Picks 5 terms (confused > stale > random); grades leniently by default (--strictavailable). Each result appends totest_historyand recomputes status.vocab gap— radar of confused terms, ranked by staleness. Feeds entry [e] gap-driven directly.- Status dashboard (
/skill tutorial-creator status) — read-only view: tutorials shipped, last lesson, streak, vocab counts by status, due-for-review count, gap radar, suggested next lesson combining vocab gap and progression. Cold-start state renders a friendly empty-state message instead of the dashboard scaffolding. - Recovery surface: per-generation session log under
.claude/tutorial-sessions/, snapshot save before generation,undo(revert most recent generation),renumber <old> <new>(rewrites Day-N filename and cross-references atomically), 24-hour soft-stage forvocab addwithvocab undo. Last 10 sessions retained; older silently pruned. - Project resolution from any cwd:
--project-dirflag for one-shot override,TUTORIAL_CREATOR_PROJECT_DIRenv var, ancestor walk from cwd (same model asgit statusfinding.git/), registry at~/.claude/tutorial-creator/registry.yaml, andopen/forgetsubcommands to manage registered projects. - Externalized progressions for Swift, TypeScript, Python, and Rust under
progressions/<lang>.yaml. Custom progressions go viaprogression_overrideintutorial-config.yaml. - Schemas locked in
SCHEMAS.md: tutorial-config, vocabulary, session-log, progressions. Schema fields reserved for post-test scoring (populated null in v2.0; activated in a future release) so the data model can grow without a migration. vocabulary-example.yamlinexamples/showing the v2.0 vocabulary format with all four status values represented.
- Bare invocation no longer assumes tutorial-generation intent. The gateway question runs first; pass
--mode <surface>to skip it. VOCABULARY.mdis no longer the source of truth;vocabulary.yamlis.VOCABULARY.mdis regenerated on demand from yaml viavocab regen-md. Direct edits toVOCABULARY.mdwill be overwritten the next time the view is regenerated.- The legacy v1.1 invocation (
/skill tutorial-creator <topic> <source>) still works and routes to writing-to-learn entry [b] with v1.1-compatible output.
After installing v2.0, run a one-time import to convert your existing VOCABULARY.md to the v2.0 vocabulary.yaml source of truth:
/skill tutorial-creator vocab regen-md --import
Migrated terms enter v2.0 with status: reviewing (no v1.1 test history exists to derive a status from). Use vocab edit to add types, vocab merge to collapse duplicates, and vocab review to start earning mastered status.
Earlier history is in the git log. v1.1.0 was the last single-mode release before the v2.0 redesign.