# learn > This fork is adapted for [omo.dev](https://omo.dev). The original pi version lives upstream at [amosblomqvist/learn](https://github.com/amosblomqvist/learn). [![video](assets/thumbnail.png)](https://www.youtube.com/watch?v=kzcI5F4tGiU) My AI learning system from this video: [How I Use AI to Learn Things](https://www.youtube.com/watch?v=kzcI5F4tGiU). 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 `, `/md-unlog`) ## Install This repo **is** a `.pi` directory. From your learning project's root: ```bash git clone .pi # OR, to track it as a submodule of your learning project: git submodule add .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 `/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](https://omo.dev). 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.