VibeLearn is a Claude Code plugin that silently watches what you build, extracts the concepts you encounter, and turns them into quiz questions — so you actually retain what you learn while coding.
What It Does
Every time you end a Claude Code session, VibeLearn automatically:
Detects your tech stack — reads package.json, pyproject.toml, go.mod, etc.
Analyzes your code changes — identifies patterns: custom hooks, API routes, TypeScript types, design patterns
Extracts learning concepts — a single LLM call produces a session summary and a list of concepts you encountered
Generates quiz questions — a second LLM call creates targeted questions per concept across 7 formats: multiple_choice, code_reading, spot_the_bug, fill_in_blank, open_ended, true_false, and ordering — selected based on concept difficulty (junior / mid / senior)
Syncs to vibelearn.dev — your learning profile is stored securely (optional, requires vl login)
The vl command lets you review and interact with your learning data:
vl quiz # Interactive quiz — all pending questions
vl quiz --session # Quiz questions from the last session only
vl status # Sessions analyzed, top concept categories, mastery stats
vl gaps # Concepts you haven't mastered yet (mastery < 50%)
vl login <api-key> # Connect to vibelearn.dev
vl login --status # Check login status
Example session:
$ vl quiz
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
VibeLearn Quiz — 3 questions
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Q1/3 (intermediate) [React Server Actions]
Code:
'use server'
export async function createPost(data: FormData) { ... }
What does the 'use server' directive tell Next.js?
A) Run this function in a Web Worker
B) Execute this function on the server, not the client
C) Cache the function result server-side
D) Mark the function as async-only
Your answer (A/B/C/D): B
✓ Correct!
Explanation: 'use server' creates a Server Action — a function that
runs exclusively on the server. The client receives only the result.
Adaptive Difficulty
VibeLearn tracks your mastery per concept and adjusts difficulty automatically:
3 correct in a row → promoted to the next level (junior → mid → senior)
1 wrong answer → dropped back a level
Follow-up questions are inserted mid-quiz when you nail a junior question, to probe deeper understanding
Open-ended answers at senior level are evaluated by a 5-dimension rubric (accuracy, depth, trade-offs, practical reasoning, completeness)
Everything inside <private> is stripped at the hook layer before reaching the worker or database.
What is never stored:
Absolute file paths (only basenames are sent upstream)
Raw file contents (only short snippets from the analysis)
Full user prompts
Anti-tamper: Quiz attempt records are HMAC-signed with your API key before syncing. The server recomputes your streak from accepted attempt records — local SQLite data cannot be used to fake progress.
System Requirements
Node.js: 18.0.0 or higher
Claude Code: Latest version with plugin support
Bun: JavaScript runtime (auto-installed if missing)
Windows Notes
If you see npm : The term 'npm' is not recognized:
Install Node.js and restart your terminal. Bun is auto-installed by the plugin setup script.
Build
npm install
npm run build-and-sync # Build + sync to marketplace + restart worker
Built outputs land in plugin/scripts/:
worker-service.cjs — the worker daemon
mcp-server.cjs — MCP tools
vl-cli.cjs — the vl binary
Contributing
Fork the repository
Create a feature branch
Make your changes with tests
Update documentation
Submit a Pull Request
License
GNU Affero General Public License v3.0 (AGPL-3.0).
We found that vibelearn demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.It has 1 open source maintainer collaborating on the project.
Cursor removed a malicious Claude Code 2.1.313 extension from its marketplace. Socket examines registry records and the initial claims about its distribution.