tutor
Interactive quiz tutor for Obsidian StudyVault learning. Use when the user wants to: (1) Take a diagnostic assessment of their knowledge, (2) Study or review specific sections/topics, (3) Drill weak areas identified in previous sessions, (4) Check their learning progress or dashboard, or says things
By bevibing · 2,144 installs
npx skills add bevibing/tutor-skills --skill tutor
Source repository · Upstream listing
Tutor Skill
Quiz based tutor that tracks what the user knows and doesn't know at the concept level . The goal is helping users discover their blind spots through questions.
File Structure
Dashboard : Only aggregated numbers. Links to concept files. Stays small forever.
Concept files : One per area. Tracks each concept with attempts, correct count, date, status, and error notes. Grows proportionally to unique concepts tested (bounded).
Workflow
Phase 0: Detect Language
Detect user's language from their message → {LANG} . All output and file content in {LANG} .
Phase 1: Discover Vault
1. Glob /StudyVault/ in project
2. List section directories
3. Glob /StudyVault/ dashboard to find dashboard
4. If found, read it. Preserve existing file path regardless of language.
5. If not found, create from template (see Dashboard Template below)
If no StudyVault exists, inform user and stop.
Phase 2: Ask Session Type
MANDATORY : Use AskUserQuestion to let the user choose what to do. Analyze the dashboard to build context aware options, then present them.
Read the dashboard proficiency table and build options based on current state:
1. If unmeasured areas (⬜) exist → include "Diagnostic" option targeting those areas
2. If weak areas (🟥/🟨) exist → include "Drill weak areas" option naming the weakest area(s)
3. Always include "Choose a section" option so the user can pick any area
4. If all areas are 🟩/🟦 → include "Hard mode review" option
Present these as an AskUserQuestion with header "Session" and concise descriptions showing which areas each option targets. The user MUST select before proceeding.
Phase 3: Build Questions
1. Read markdown files in target section(s)
2. If drilling weak area: also read concepts/{area}.md to find 🔴 unresolved concepts — rephrase these in new contexts (don't repeat the same question)
3. Craft exactly 4 questions following references/quiz rules.md
CRITICAL : Read references/quiz rules.md before crafting ANY question. Zero hints allowed.
Phase 4: Present Quiz
Use AskUserQuestion:
4 questions, 4 options each, single select
Header: "Q1. Topic" (max 12 chars)
Descriptions: neutral, no hints
Phase 5: Grade & Explain
1. Show results table (question / correct answer / user answer / result)
2. Wrong answers: concise explanation
3. Map each question to its area
Phase 6: Update Files
1. Update concept file ( concepts/{area}.md )
For each question answered:
New concept : Add row to table + if wrong, add error note under 오답 메모 (or localized equivalent)
Existing 🔴 concept answered correctly : Increment attempts & correct, change status to 🟢, keep error note (learning history)
Existing 🟢 concept answered wrong again : Increment attempts, change status back to 🔴, update error note
Table format:
Error notes format (only for wrong answers):
2. Update dashboard
Recalculate per area stats from concept files (sum attempts/correct across all concepts in that area)
Update proficiency badges: 🟥 0 39% · 🟨 40 69% · 🟩 70 89% · 🟦 90 100% · ⬜ no data
Update stats: total questions, cumulative rate, unresolved/resolved counts, weakest/strongest
Dashboard stays compact — no session logs, no per question details.
Dashboard Template
Create when no dashboard exists. Filename localized to {LANG} . Example in English:
Concept File Template
Create per area when first question is asked. Example:
Important Reminders
ALWAYS read references/quiz rules.md before creating questions
NEVER include hints in option labels or descriptions
NEVER use "(Recommended)" on any option
Randomize correct answer position
After grading, ALWAYS update both concept file AND dashboard
Communicate in user's language