This repository has no description
TypeScript 100%

README.md

learn #

This fork is adapted for omo.dev. The original pi version lives upstream at amosblomqvist/learn.

video

My AI learning system from this video: How I Use AI to Learn Things.

This is a personal system I built for myself, shared as-is. Originally built as a pi configuration; this fork is an omo configuration: the teaching philosophy encoded in a skill, a few small extensions, and task briefs.

What's in it #

  • skills/teach/ — the philosophy and the process; researcher.md is the brief for the researcher task
  • skills/visualize/ — adds a correct, minimal diagram to a lesson when an idea is clearer as a picture; mermaid-maker.md and svg-maker.md are the maker briefs (dispatched through omo's task tool)
  • extensions/ask-user-question.ts — the agent asks you questions through a UI popup
  • extensions/quiz.ts — graded questions with instant feedback (✓/✗, correct answer, explanation)
  • extensions/md-log.ts — link a markdown file to the session (/md-log <file>, /md-unlog)

Install #

This repo is a .pi directory. From your learning project's root:

git clone <this repo> .pi
# OR, to track it as a submodule of your learning project:
git submodule add <this repo> .pi

Then open omo in that directory and trust the project when asked (project skills and extensions only load in trusted projects).

Vault setup (Obsidian) #

The lesson log and visuals live in your vault; everything else stays out of it:

  • Keep your learning project root inside your Obsidian vault and open omo there. Makers publish PNGs to <project>/viz/, which must be in-vault for embeds to resolve.
  • Create the log note before linking: /md-log links an existing file, it never creates one (touch lesson.md, then /md-log lesson.md). The note must be in the same vault as viz/ — Obsidian resolves ![[name]] embeds by filename within one vault only.
  • Nothing to exclude from Sync: .pi/, .omo/, and .git all start with a dot, and Obsidian Sync always excludes hidden files and folders (only .obsidian is the exception). Lesson notes and viz/*.png images sync as normal vault content.

Requirements #

  • omo. Subagents run through its built-in task tool, which spawns a worker that reads the brief file and follows it.
  • The visual makers must run on a model that can see images; the skill dispatches them with category="unspecified-high". Point that category at a vision-capable model in omo.jsonc.
  • Rendering: npx (for @mermaid-js/mermaid-cli, which uses a puppeteer-managed Chrome) and rsvg-convert (or nix shell nixpkgs#librsvg, or ImageMagick as a fallback).
  • ask-user-question — use the copy bundled here. If your setup already has an ask-user-question extension, use this one in its place. Popups from different extensions serialize through a shared UI lock, which only works when it's the same implementation.

Notes #

The teaching skill is written for one learner (me). Edit the skill to fit how you learn best.