
A teacher for everything you study alone. It finds your level, explains, grades your work and remembers what you got wrong. You do the learning.
SLP gives you that someone, and a place to do the work. The teacher never answers for you. It asks before it tells, waits for you to try, and writes down what you got wrong so it comes back.
A teacher that runs in your agent, a method it follows, and a local app where you do the work. Use it for a book, a certification, a course or a tool's docs.
Each topic gets a persona: the kind of person who would teach that subject in real life. A researcher checks facts before they reach you.
Measure your level, teach, summarize, build exams and exercises, grade, make cards, plan the session. Same steps every time.
Runs on localhost. Notes with Mermaid, LaTeX and images, typed or dictated. Exams, exercises, cards. It records every study session on its own.
Three windows side by side. You read the material, work in the app, and ask the teacher when you're stuck.
An idempotent request has the same effect whether you send it once or ten times. GET, HEAD, PUT and DELETE are idempotent. POST is not.
3.3 safe methodsA safe method only reads. It never changes state on the server.
- ayes, every request can be retried
- bno, POST is not idempotent. you may create a duplicate order
- cyes, if the server returned 200 before
- donly over https
- you
- i didn't get idempotency
- teacher
- before i explain: is
GET /orderssafe to retry? why? - you
- yes, it only reads data
- teacher
- ✓ right. now the same question for
POST /orders
Find your level, learn, practice, get graded, review. Each pass starts from what the last one found out about you.
- level01
A short quiz that finds where you are. Same bank each time, so you can see yourself move.
/slp-quiz - prepare02
The teacher explains until you understand it, not memorize it, then turns the material into notes.
/slp-teach · /slp-summarize - practice03
Exams you sit in the app. Exercises where you build something: code, an ADR, a critique.
/slp-exam · /slp-exercises - feedback04
Every attempt graded against a rubric. Each miss points to the note that covers it.
/slp-grade - review05
Cards made from your own notes, spaced with Leitner boxes so they don't fade.
/slp-cards · /slp-session - again↺
Each pass starts from what the last one found out about you.
the teacher keeps the profile
// when you finish a unit, the teacher suggests the next step: cards, then an exercise, then an exam
Your session. Your call.
Every session starts with /slp-session. You decide what to do; the teacher adapts and writes it all down.
- nothing yet
It remembers what you got wrong.
The teacher keeps no memory between chats. Your topic folder does. Every skill reads it before it writes, so the next lesson starts where the last one ended.
learning.mdyour mission, what you've shown you know, what you got correctedprogress/where you are, and every study session with what you did in itwiki/the teacher's map of the subject: concepts, what each depends on, where it comes fromtopics/http-basics/ ├── learning.md // mission, record, corrections ├── progress/ │ ├── status.md │ ├── log.md │ └── sessions.jsonl ├── wiki/ │ ├── index.md │ └── concepts/idempotency.md ├── notes/ │ └── 03-idempotency.md ├── exams/ │ └── 02/exam.json └── cards/ └── cards.json
## Mission read an api spec without guessing ## Record ### 0012 — confused safe with idempotent — corrected
## Up next - [ ] idempotency keys - [ ] exam 02
| Date | Exam | MC | Rubric | | 2026-09-26 | 02 | 4/5 | 2/3 |
{"event":"start","at":"2026-09-26T10:10","by":"app"}
{"event":"activity","kind":"teaching","detail":"idempotency keys"}
{"event":"end","at":"2026-09-26T11:02","by":"hook"}- [Idempotency](concepts/idempotency.md) - [Safe method](concepts/safe-method.md)
type: Concept depends_on: [safe-method] studied: [2026-09-22T1700, 2026-09-26T1010] sources: rfc 9110, mdn
# Idempotency sent once or five times, the server ends up the same.
{ "type": "multiple_choice",
"q": "which method survives three retries?" }{ "front": "Is POST idempotent?",
"back": "No: it creates something new each time." }Everything is a file on your disk.
No account, no database, no subscription. Notes are Markdown, exams and cards are JSON. Open them in any editor, put them in git, write any of it by hand.
Any agent, any model.
The skills use the SKILL.md format and AGENTS.md explains the project to any agent. Use a cloud model, or a local one through Ollama. Free and open source: the only cost is the model your agent already uses.
- -
- -
- -
- -
- -
- -
❯ slp-setup exposes agent/skills in each agent's format
Have this ready: what you want to study, your sources, a deadline, how often, and why.
$ curl -LsSf https://astral.sh/uv/install.sh | sh $ git clone https://github.com/GustavoPenaBeltrami/self-learning-platform.git $ cd self-learning-platform && uv run slp
Read AGENTS.md, then read agent/skills/slp-setup/SKILL.md and follow it.
/slp-init I want to start studying HTTP.
// windows: see installation
Does it work offline?
The app, notes, cards and exams work offline. The teacher needs a model. With a local model through Ollama you can study fully offline; with a cloud model you need internet.
What can I study?
A book, a certification, a course, a tool's docs. You point the teacher at your sources, set a deadline and a pace, and it builds the topic from there.
Will the teacher just give me the answers?
No. It asks before it tells, waits for you to try, grades your attempt against a rubric and records what you got wrong so it comes back in the next exercise.
Where is my data?
On your disk, in topics/<slug>/. Notes are Markdown, exams and cards are JSON. There is no account and no database.
Do I need to know how to code?
No. You install uv, clone the repo and paste one prompt into your agent. After that you talk to it in plain language.
What does it cost?
Nothing. SLP is open source under the MIT license. You pay only for the model your agent uses, if any.
Study alone. Never unguided.
One person, one topic, and the discipline to keep going. The agent teaches, quizzes and grades. The learning stays yours.