Sandbox
@Li-Evan/Bloom

Claude Code skills for adaptive tutoring

Bloom packages a tutoring flow as Claude Code skills: syllabus, lesson, annotation, feedback, next lesson, and evaluation. The same learning loop is also available as a self-hosted web app built with FastAPI and React.

258 stars40 forksPythonUpdated 2mo ago
Who it's for

Builders who want Claude Code to teach them a topic one lesson at a time and adjust to their answers.

What it delivers

You can learn a topic with a tutor that changes the next lesson based on how you read, annotate, and respond.

What it does

Adaptive lesson flow

Generates a syllabus, delivers one lesson at a time, reads your annotations and feedback, then creates the next lesson from your gaps.

Portable Claude Code skills

Ships `bloom-tutor` and the `learn-*` skills as folders you can copy into `.claude/skills/` or `~/.claude/skills/`.

Multiple learning modes

Supports topic courses, source uploads like PDF/TXT/MD, and project file reading with highlight Q&A.

Next-topic recommendations

Suggests new course topics from your learning history and lets you save them or start one right away.

Self-hosted web app

Includes a FastAPI backend and React frontend for browser-based tutoring and shared setup.

Claude Code plugin install

Provides plugin metadata so you can install Bloom through Claude Code's marketplace flow.

How to get it

  1. 1Requires 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
  2. 2Or 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
  3. 3Run
    cp .env.example .env   # fill in API key
    docker compose up -d   # visit http://localhost:3000

README

BloomBloom

Hire a private AI tutor for anything you want to learn.

Your AI reads how you actually learn — and teaches the next lesson just for you.
Built on Bloom's 2-Sigma research: 1-on-1 tutoring = top 2%.

GitHub stars MIT License Last commit Python 3.11+ Node.js 18+ React 19 FastAPI

🌐 Website · Chinese · English

Bloom — from average to the top 2%


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.

Two Ways to Use

ModeSetupBest for
CLIClaude Code + terminalPower users who like Markdown editors
WebBrowser (React + FastAPI)Visual learners, shareable setup

Both follow the same flow: syllabus → lesson → annotate → feedback → next lesson → evaluation → summary.


Quick Start: CLI Mode

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.

Quick Start: Web Mode

Prerequisites

  • Python 3.11+ with uv
  • Node.js 18+
  • An OpenAI-compatible LLM API key (e.g. DashScope, OpenAI, etc.)

Setup

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.

Docker

cp .env.example .env   # fill in API key
docker compose up -d   # visit http://localhost:3000

How It Works

Topic Mode

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

Source Mode

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

Project Files

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

Features

  • Three course modes — generate from a topic, upload a PDF/TXT/MD source, or Project Files (upload files/a folder, render each directly, highlight-ask anytime, no syllabus or next-lesson generation)
  • Learning depth — choose simple, standard, or deep syllabus expansion when creating a course; shown as a badge on each course card
  • Reference material — paste textbook chapters, papers, or notes when creating a topic course
  • Next-topic recommendations — generate 3 course-ready topics from your full learning history, refresh the set, save ideas to a learning queue, or start one directly through the normal syllabus → lesson flow
  • Highlight Q&A sessions — select any text in any lesson (or source) and a small icon pops up; click it to ask. The highlighted text stays marked in yellow, the AI answers instantly, and you can keep asking follow-ups in the same thread. The window is draggable and collapses into a margin dot you can reopen anytime. Each session sees the full lesson + the highlighted span + its own conversation, and your questions still feed the next lesson.
  • Adaptive lessons — each lesson addresses your specific gaps from the previous one
  • Chapter sidebar — quick-jump between lessons while reading
  • Collapsible syllabus — track mastery progress without clutter
  • Streaming generation — watch AI write the next lesson in real-time
  • Personal center & learning calendar — open the profile from the header to see a month calendar shaded by daily activity; click any day to see which courses, lessons, and highlights you studied, alongside overview stat cards and a six-month contribution heatmap (streaks and grouping use your local date)

Skills

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.

SkillWhat it does
bloom-tutorThe full interactive tutoring system as one skill — syllabus → adaptive lessons → ??? annotations → evaluation → summary. CLI mode, packaged and portable.
learn-deepDefault deep-dive entry — runs all five lenses below in one pass, then helps you pick a direction
learn-crossoverLearn a new concept by leveraging what you already know (structural analogies)
learn-occamDecide whether / how deeply something is worth learning (ROI, just-enough)
learn-graphBuild a knowledge-graph map of a field plus a learning path
learn-prototypeLearn by building the crappiest working prototype, then iterating
learn-feynmanVerify 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").

Tech Stack

LayerTechnology
BackendPython, FastAPI, SQLAlchemy, SQLite
FrontendReact, Vite, Tailwind CSS
AIAny OpenAI-compatible LLM API
ContainerDocker, docker-compose
FontOutfit, JetBrains Mono

Commands

make dev-backend      # backend with hot reload
make dev-frontend     # frontend dev server
make test             # run pytest
make up / make down   # docker start / stop

Project Structure

├── 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-*)

The Science

ConceptWhat it means
Bloom's 2 Sigma1-on-1 tutoring = +2σ performance over classroom
Mastery LearningDon't move on until the concept is truly understood
Socratic MethodAsk questions, don't hand answers
Spaced RetrievalThought question reviews at lesson start reinforce memory
Adaptive PathContent adjusts to individual feedback in real-time

Star History

Star History ChartStar History Chart

License

MIT

Files in the repo

Repository payload21 top-level entries
  • .claude-plugin
  • .github
  • assets
  • backend
  • docs
  • example
  • frontend
  • githooks
  • scripts
  • site
  • skills
  • .env.example
  • .gitignore
  • docker-compose.yml
  • GUIDE.md
  • GUIDE.zh.md
  • learning-log.jsonl
  • LICENSE
  • Makefile
  • README.md
  • README.zh.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More skills

Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.

117k
1 add

Open-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)

71k
ayghri/
i-have-adhd

A skill to stop your coding agent from burying the answer. ADHD-friendly output.

38k
mvanhorn/
last30days-skill

AI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary

62k
Nanako0129/
sepia

De-AI writing skill for any Agent Skills-compatible agent (77+ via the Skills CLI), with native plugins for Claude Code, Codex, Grok Build, and Antigravity. Narrative-architecture repair for fiction, venue-matched rules for professional prose. Based on StoryScope (arXiv:2604.03136).

2.5k
Imbad0202/
academic-research-skills

Academic Research Skills for Claude Code: research → write → review → revise → finalize

48k