The dials
Choose what Eklavya teaches and how often it asks. These settings are independent; memory has its own switch.
| Setting | Default | Other choices |
|---|---|---|
quiz.enabled | true: offer questions | false: no questions or gate; memory can continue. |
quiz.enforced | false: commits are unrestricted | true: require passing answers before committing. |
quiz.panel | true: use the experimental side panel on supported Claude Code builds | false: use Claude’s question card. |
focus | concept: the idea behind the code | project: this codebase; learn: a chosen topic. |
cadence | as-you-go: one question during work | end: questions when the task finishes. |
difficulty | auto: earn a level per project | Pin easy, medium or hard. |
memory.enabled | true: record and recall work | false: learning continues without memory capture or recall. |
memory.file_hold | true: a whole-file Read of a 32 KB+ code file with history is held, steering Claude to the outline or a ranged Read | false: file history is only added as context, never held. |
feedback.enabled | true: review one of your prompts at a time, with memory and an observer model | false: no prompt feedback. |
quiz — whether it asks, and whether it insists
Questions are optional by default. With quiz.enforced: true, enough answers must pass before git commit succeeds. This applies automatically to commits Claude Code makes; commits from a terminal require the separate git hook.
Automatic questions only come in sessions that change code. With the default quiz.only_on_changes: true, Eklavya asks nothing until the session edits a file inside a git repository through Claude’s edit tools (a sibling worktree counts; notes, plans and ignored files do not), changes one through a shell command that starts with cd into it, or the git working tree the session started in differs from how it looked at the start (a commit counts; a git pull or branch switch alone does not, and neither do files under artifacts/ or reports/). With delegate_work on, Claude starting a building agent counts too, so questions can come while it builds. A session started outside any git repository, such as a folder that holds several, waits for such an edit, or for a shell command that changes a file in a repository, below the folder it started in, that the command names or runs from. Questions cover the work logged since you last came back after more than an hour away, newest first, so a session left open overnight is not asked about yesterday, and a long task stays covered while you keep working. Research and read-only sessions stay quiet, and /eklavya:quiz still works in them. Set it to false to be asked about any logged work.
quiz.panel is experimental and on by default. With it on, a question appears in a side panel beside the transcript instead of in Claude’s question card, and Claude keeps working while you answer. It changes where a question appears, not which questions are asked, how often, or how they are graded. It needs the Claude Code terminal CLI or the Desktop Code tab with the plugin installed; anywhere else, and whenever no panel is showing, you get the card as before. Turned off, the panel shows nothing and every question uses the card; a question still waiting in the panel is closed without being graded, and turning the panel back on does not bring it back. See the quiz side panel.
Setting quiz.enabled: false disables questions and enforcement. It does not stop memory; when memory is on, the session banner reports “memory on · questions off”. To stop both halves, also set memory.enabled: false.
For temporary quiet, use /eklavya:skip or /eklavya:mode off --session. This silences questions and the banner for this session without changing a file, but keeps an enforced commit gate active. See session scope.
focus — what it teaches
| Value | Questions are about | Example |
|---|---|---|
concept | Transferable ideas behind the work | Why an index changes query cost. |
project | Files and decisions in this codebase | Why this query uses the new index. |
learn | A named topic, prerequisites first | Learn database indexing over future sessions. |
learn requires focus_topic; without it, no topic quiz is planned. The topic is matched the way a named quiz topic is: a domain made of its words, else concepts with a word starting with it. An unmet enforced gate takes priority and asks about the current work first, even with learn focus. The chosen topic resumes after the gate passes.
cadence — when it asks
As-you-go offers one question when concepts are logged, then at eligible shell commands, edits or completed turns. Offered questions are at least min_minutes_between_checkpoints apart (four minutes by default).
End waits until a task finishes, then asks the remaining budget one question at a time. min_minutes_between_quizzes spaces these offered quizzes (20 minutes by default).
Automatic checkpoints and the final sweep share max_questions_per_task: four questions across the session by default. As-you-go moves that budget earlier without adding automatic questions. Enforcement removes the planner’s one-question cap and normal quiz cooldown, but automatic hooks still stop when their session budget is spent.
Each explicit /eklavya:quiz round can plan up to max_questions_per_task eligible questions even after that automatic budget is exhausted. Use it to continue learning or retry a taught miss when an enforced gate remains blocked.
Unasked work does not return in a later session. Questions you declined, left blank or got wrong come back once their review is due, after current work is covered. Raise checkpoint spacing if you want fewer interruptions; choose end if you want none during the task.
With delegate_work on (the default), Claude is asked to hand a larger code change to a background agent and ask one question at a time while it builds, instead of waiting for checkpoints. A staged plan goes one stage at a time, and Claude reviews, runs your checks and commits each stage before the next. Eklavya says this next to each task-sized prompt, and once more if Claude changes a second file itself. It is advice, not enforcement: Claude may still build inline, and is asked to say why in one line. These questions skip the spacing above but come out of the same max_questions_per_task budget. Questions while agents build need as-you-go: under end none are asked while agents build, and questions wait for the end of the task. They stop when an agent reports or the budget is spent, and Claude writes its task answer last. Set delegate_work to false to keep the building in the main conversation.
feedback — coaching on your own prompts
New installs have prompt feedback on and use claude-sonnet-5 through your
Claude Code login. Existing installs keep their choices. Older configs keep the
previous defaults for these settings: feedback off and no observer model,
unless explicitly set.
Eklavya reviews one prompt from a finished session in the background and shows
it on the dashboard’s Feedback page. The next
review waits until you acknowledge or delete the waiting item. Feedback needs
memory.enabled and an observer model (providers.observer); with either off,
nothing is generated. It is independent of quiz.enabled and never changes
your mastery or levels.
memory: keep project history
Memory is on by default. It records eligible prompts and tool activity, saves
observations and recalls relevant history in later sessions. New installs use
claude-sonnet-5 to write observations; search and storage run locally.
Turn memory off independently of questions with memory.enabled.
You can search and edit notes, import Claude Mem history or sync memories through a folder. Memory covers capture, exclusions, redaction and deletion.
difficulty — how hard it may get
With auto, each project starts at easy and can earn promotion. Pinning a value stops progression. A level sets the allowed tier range, not the tier of every question: easy allows 1–2, medium 2–4, and hard 3–5. See Levels and tiers.
Changing a dial
/eklavya:mode/eklavya:mode project/eklavya:mode off --session/eklavya:level mediumeklavya config set quiz.enforced true --projecteklavya config set quiz.enabled falseeklavya config set focus learn --topic cachingeklavya config set cadence endWithout --project, CLI changes are global. Personal project settings override global values and live under ~/.eklavya/projects/, outside your repository. Worktrees share the main checkout’s settings; teammates keep their own.
Older mode: ambient|enforced|off files still work. New files should use quiz. For every key and default, see Configuration.