# SLP Self Learning Platform > SLP, the Self Learning Platform: an agent-powered hub for self-learners. ## Introduction - [Overview](https://selflearningplatform.github.io/docs/overview.md): SLP is a self-hosted study environment you fully own: it runs on your machine, needs no subscription, and works with any agent and any model, local or paid. - [Prerequisites](https://selflearningplatform.github.io/docs/prerequisites.md): One thing is required. The rest is recommended, not needed. - [Installation](https://selflearningplatform.github.io/docs/install.md): [uv](https://docs.astral.sh/uv/) manages Python and the dependencies. Install it once, then clone. - [Getting started](https://selflearningplatform.github.io/docs/getting-started.md): Know what you want before you open the agent. Then two skills: one sets up the agent, one sets up the topic. ## Ai teacher - [AI teacher](https://selflearningplatform.github.io/docs/ai-teacher.md): Studying alone fails at the same point: nobody tells you what you got wrong. The agent plays the teacher. It explains from what you already know, asks before it tells, grades against a rubric and writes down your mistakes so the next exercise and exam press on them. - [Skills](https://selflearningplatform.github.io/docs/skills.md): Every skill can be called by name, `/slp-teach`. Two are manual only: `slp-setup` and `slp-init` set `disable-model-invocation: true`, so the agent never starts them on its own. The rest can also be started by the agent when your message matches their description. - [Session](https://selflearningplatform.github.io/docs/slp-session.md): Entry point of a study session. Validates the sessions recorded since the last one, surveys every topic, asks what you want to do today and hands off to the right skill. It also ends a session and marks a unit done. - [Agent setup](https://selflearningplatform.github.io/docs/slp-setup.md): Exposes `agent/skills` and `agent/agents` in the running agent's native format, without touching anything versioned. - [New topic](https://selflearningplatform.github.io/docs/slp-init.md): Registers a new topic so the first session starts with a clear mission and the level already measured. - [Summarize](https://selflearningplatform.github.io/docs/slp-summarize.md): Summarizes a text and appends it to a note, following the format the notes already use, and files the source into the topic's wiki. - [Teach](https://selflearningplatform.github.io/docs/slp-teach.md): Teaches so it ends up understood, not memorized. Probes your real level, plans the topic as a dependency graph and builds it node by node from truths you already accept. - [Exercises](https://selflearningplatform.github.io/docs/slp-exercises.md): An exam tests whether something was understood. An exercise forces you to use it to produce something new: code, an ADR, a critique, an explanation. - [Exam](https://selflearningplatform.github.io/docs/slp-exam.md): Builds a JSON exam from content you paste, audited first against the topic's progress. You sit it in the app, which shuffles the questions. - [Grade](https://selflearningplatform.github.io/docs/slp-grade.md): Checks each rubric or prompt point, says what's missing (not just "it's wrong"), and records it so the next exercise, exam and session can use it. Every attempt goes through it, multiple choice only too: it is what logs the score. - [Quiz](https://selflearningplatform.github.io/docs/slp-quiz.md): Measures your level in a topic with a ping-pong quiz in the chat: up a level on a hit, down on a miss, per prerequisite thread. It uses the same question bank every time, so today's result compares with the first one. - [Cards](https://selflearningplatform.github.io/docs/slp-cards.md): Turns your notes into flashcards, one concept per card: a question on the front, a short answer on the back. You study them in the [cards tab](cards-app.md), which schedules them with Leitner boxes. This skill only writes the cards. - [Researcher](https://selflearningplatform.github.io/docs/researcher.md): Verifies a fact or maps a topic and returns a short report with sources. Used before teaching or grading anything that isn't certain, and to survey a topic before planning a lesson. Works in an isolated context. - [Teacher](https://selflearningplatform.github.io/docs/teacher.md): A teaching persona, one per topic, offered by [slp-init](slp-init.md). A specialist who would teach this in real life, never a generic "\ teacher". - [Profiles](https://selflearningplatform.github.io/docs/profiles.md): How the agent layer and dictation run. Chosen at setup, changeable in settings → global. The core is the same in all of them. ## Visual interface - [Deploy](https://selflearningplatform.github.io/docs/deploy.md): Starts the local server and opens the notebook in your browser. If a server is already running, it just opens the page. - [Notes](https://selflearningplatform.github.io/docs/editor.md): A notebook per topic. What you write is saved to `topics//notes/` as Markdown, less than a second after you stop typing. - [Exam simulator](https://selflearningplatform.github.io/docs/exam-app.md): Sit an exam built by [slp-exam](slp-exam.md). The level quiz of [slp-quiz](slp-quiz.md), in `exams/quiz/`, is listed too; a sitting here is logged as a quiz. The first screen lists every topic with its exams and how many attempts are **pending** grading. Click a topic to see its exams with questions, attempts and pending counts; click an exam to sit it. Old `?f=topics//exams//exam.json` links still work. - [Exercises](https://selflearningplatform.github.io/docs/exercises-app.md): Do the exercises built by [slp-exercises](slp-exercises.md). The first screen lists every topic with its exercises and how many attempts are **pending** grading. Click a topic to see its exercises with format, unit, attempts and pending counts; click an exercise to write your answer. - [Cards](https://selflearningplatform.github.io/docs/cards-app.md): Flashcards per topic, with spaced repetition. Cards come from [slp-cards](slp-cards.md), from a selection in the [notes](editor.md), or from the form here. They are saved in `topics//cards/`, with every rating: [cards/](cards.md). - [Settings](https://selflearningplatform.github.io/docs/settings.md): The settings tab lists four sections: **global**, **shortcuts**, **cards** and **themes**. All of them live in one file, `settings.json` at the repo root, saved the moment you change an option. Each page has a breadcrumb (`settings › cards`) to go back, and all but themes a `reset all to defaults` button. File reference: [settings.json](settings-json.md). - [Dictation](https://selflearningplatform.github.io/docs/dictation.md): Dictate notes or answer oral exam questions out loud. Runs locally with Whisper; without it, the mic tells you how to use your OS dictation instead. - [Keyboard shortcuts](https://selflearningplatform.github.io/docs/shortcuts.md): Every page with keys has an ⓘ in the top bar: hover it for the list of that page, with your current keys. Action keys can be changed in settings → shortcuts (saved under [shortcuts](settings-json.md) in `settings.json`); `Esc`, bold/italic, the card form save and menu arrows are fixed. The tables show the defaults. ## Filesystem - [Topic folder](https://selflearningplatform.github.io/docs/topics.md): Everything about a topic lives in one folder, as Markdown and JSON. It reads fine on GitHub, in Obsidian or in any editor, and you can write any of it by hand. The agent is needed for the judgment: teaching, grading, reading your sessions and keeping the wiki. - [topic.json](https://selflearningplatform.github.io/docs/topic-json.md): Identity and preferences of a topic. Written by [slp-init](slp-init.md), completed by [slp-session](slp-session.md). The app edits only `title`, `subtitle` and `links`, and keeps the rest. - [learning.md](https://selflearningplatform.github.io/docs/learning-md.md): The topic's memory: what you've shown you know, and what you got wrong and corrected. Every skill reads it before writing. - [notes/](https://selflearningplatform.github.io/docs/notes.md): Summaries, lessons and your own notes, numbered. Plain Markdown: it opens in Obsidian, on GitHub or in any editor. - [exams/](https://selflearningplatform.github.io/docs/exams.md): One folder per exam. The folder name is the exam's id: the unit number and title (`01-methods-and-codes`), or `quiz` for the level quiz. Attempts are named by the minute they were made. - [exercises/](https://selflearningplatform.github.io/docs/exercises.md): Applied work. A `prompt.md` from [slp-exercises](slp-exercises.md), your submissions in `attempts/`, and the feedback from [slp-grade](slp-grade.md) next to each one. Submit in the app's Exercises tab, or drop a file with any extension into `attempts/` by hand. - [cards/](https://selflearningplatform.github.io/docs/cards.md): Flashcards made from your notes, and every time you rated one. The [cards view](cards-app.md) reads both and works out which cards are due. - [wiki/](https://selflearningplatform.github.io/docs/wiki.md): The agent's own map of the subject: its concepts, how they depend on each other, the sources behind them, and in which sessions you studied each one. It follows the [Open Knowledge Format](https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/okf) (OKF) and the [LLM wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) pattern: Markdown pages with YAML frontmatter, written and kept current by the agent. The app doesn't show it; it opens fine in Obsidian or on GitHub. - [progress/](https://selflearningplatform.github.io/docs/progress.md): Where you are, what you did, and when you studied. - [settings.json](https://selflearningplatform.github.io/docs/settings-json.md): Your app preferences, at the repo root, in one file with four sections. Written by the [settings](settings.md) views and by `uv run slp setup`. Git-ignored. A missing file, section or key means the default. - [agent/](https://selflearningplatform.github.io/docs/agent-dir.md): The single source of the agent layer. Skills use the Agent Skills format: `name` + `description` frontmatter, instructions below. Agents without skill support read the matching `SKILL.md` by hand, as `AGENTS.md` explains. ## Project - [Contributing](https://selflearningplatform.github.io/docs/contributing.md): Contributions are welcome. Skills are edited in `agent/skills/`, never inside an agent's own folder. File formats live in one place, `agent/reference/formats.md`: a change to a format goes there and to `topics/example/`. - [Roadmap](https://selflearningplatform.github.io/docs/roadmap.md): Planned, not built. Nothing on this page works today.