by Li-Evan
Hire a private AI tutor for anything — it reads how you actually learn and teaches the next lesson just for you. Bloom's 2-Sigma research as a Claude Code skill + self-hostable web app · 中文优先 苏格拉底式 AI 家教
# Add to your Claude Code skills
git clone https://github.com/Li-Evan/BloomLast scanned: 6/9/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-06-09T07:48:53.682Z",
"npmAuditRan": true,
"pipAuditRan": true
}No comments yet. Be the first to share your thoughts!
Based on votes and bookmarks from developers who liked this skill
30 days in the Featured rail · terms & refunds
In 1984, educational psychologist Benjamin Bloom discovered that students receiving one-on-one tutoring scored 2 standard deviations (+2σ) above the classroom average — jumping to the top 2%. Bloom called this the "2 Sigma Problem": the effect is proven, but personal tutors don't scale.
Bloom solves this with AI. It generates a structured syllabus, delivers lessons one at a time, reads your annotations and feedback, then tailors the next lesson to your exact understanding level — just like a real tutor would.
| Mode | Setup | Best for |
|---|---|---|
| CLI | Claude Code + terminal | Power users who like Markdown editors |
| Web | Browser (React + FastAPI) | Visual learners, shareable setup |
Both follow the same flow: syllabus → lesson → annotate → feedback → next lesson → evaluation → summary.
Requires only Claude Code. No backend.
git clone https://github.com/Li-Evan/Bloom.git
cd Bloom
# Install the tutor skill locally for this clone
mkdir -p .claude/skills
cp -R skills/bloom-tutor .claude/skills/
claude
Then say: Create a new folder and help me learn [any topic]
Or install it as a plugin (bundles bloom-tutor plus the learn-* skills) — in Claude Code:
/plugin marketplace add Li-Evan/Bloom
/plugin install bloom@li-evan
See GUIDE.md for the full walkthrough.
git clone https://github.com/Li-Evan/Bloom.git
cd Bloom
# Configure
cp .env.example .env
# Edit .env — fill in LLM_API_KEY
# Backend
cd backend && uv sync && uv run uvicorn app.main:app --reload --port 8000
# Frontend (new terminal)
cd frontend && npm install && npm run dev
Open http://localhost:5173. Click New Course, choose Topic, Source Upload, or Project Files, and start learning.
cp .env.example .env # fill in API key
docker compose up -d # visit http://localhost:3000
Create course → AI generates syllabus + lesson 01
↓
Read lesson → highlight text → add annotations
↓
Write feedback → answer thought questions
↓
Click "Done Reading" → AI generates next lesson
(answer review + annotation responses + new content)
↓
Repeat until all mastery items checked ✅
↓
Auto-generate evaluation → then summary
Upload PDF / TXT / MD → AI generates syllabus + source-reading chapter
↓
Read source → highlight text → ask and get an immediate answer
↓
Click "Done Reading" → AI reads the full source + Q&A, then generates the next lesson
↓
Continue with the normal adaptive lesson flow
Upload a file / multiple files / a whole folder → each file renders directly as one page
↓
Read each file → highlight text → ask and get an immediate answer
↓
No syllabus, no next-lesson generation; the files and highlight Q&A feed next-step recommendations
Bloom ships a set of portable Claude Code skills in skills/ — self-contained capability packs you can copy into ~/.claude/skills/ (global) or any project's .claude/skills/ and use anywhere.
| Skill | What it does |
|---|---|
| bloom-tutor | The full interactive tutoring system as one skill — syllabus → adaptive lessons → ??? annotations → evaluation → summary. CLI mode, packaged and portable. |
| learn-deep | Default deep-dive entry — runs all five lenses below in one pass, then helps you pick a direction |
| learn-crossover | Learn a new concept by leveraging what you already know (structural analogies) |
| learn-occam | Decide whether / how deeply something is worth learning (ROI, just-enough) |
| learn-graph | Build a knowledge-graph map of a field plus a learning path |
| learn-prototype | Learn by building the crappiest working prototype, then iterating |
| learn-feynman | Verify true understanding by explaining it back |
Each folder is dependency-free: copy it into a skills directory, then just talk to Claude Code (e.g. "help me learn X", "I'm done reading").
| Layer | Technology |
|---|---|
| Backend | Python, FastAPI, SQLAlchemy, SQLite |
| Frontend | React, Vite, Tailwind CSS |
| AI | Any OpenAI-compatible LLM API |
| Container | Docker, docker-compose |
| Font | Outfit, JetBrains Mono |
make dev-backend # backend with hot reload
make dev-frontend # frontend dev server
make test # run pytest
make up / make down # docker start / stop
├── GUIDE.md # CLI usage guide
├── .env.example # env template
├── backend/
│ └── app/
│ ├── courses.py # course, lesson, annotation, feedback, stats, summary APIs
│ ├── recommendations.py # next-topic recommendation APIs
│ ├── models.py # Course, Lesson, Annotation, Feedback, Recommendation
│ └── config.py # reads .env
├── frontend/
│ └── src/pages/
│ ├── DashboardPage # course list + create form
│ ├── CoursePage # syllabus + lesson list
│ └── LessonPage # reader + annotations + feedback + AI gen
├── example/ # pre-built topics for CLI mode
├── site/ # marketing website (standalone Astro static build, decoupled from the app)
└── skills/ # portable Claude Code skills (bloom-tutor + learn-*)
| Concept | What it means |
|---|---|
| Bloom's 2 Sigma | 1-on-1 tutoring = +2σ performance over classroom |
| Mastery Learning | Don't move on until the concept is truly understood |
| Socratic Method | Ask questions, don't hand answers |
| Spaced Retrieval | Thought question reviews at lesson start reinforce memory |
| Adaptive Path | Content adjusts to individual feedback in real-time |