Skip to content

The dials

Choose what Eklavya teaches and how often it asks. These settings are independent; memory has its own switch.

SettingDefaultOther choices
quiz.enabledtrue: offer questionsfalse: no questions or gate; memory can continue.
quiz.enforcedfalse: commits are unrestrictedtrue: require passing answers before committing.
quiz.paneltrue: use the experimental side panel on supported Claude Code buildsfalse: use Claude’s question card.
focusconcept: the idea behind the codeproject: this codebase; learn: a chosen topic.
cadenceas-you-go: one question during workend: questions when the task finishes.
difficultyauto: earn a level per projectPin easy, medium or hard.
memory.enabledtrue: record and recall workfalse: learning continues without memory capture or recall.
memory.file_holdtrue: a whole-file Read of a 32 KB+ code file with history is held, steering Claude to the outline or a ranged Readfalse: file history is only added as context, never held.
feedback.enabledtrue: review one of your prompts at a time, with memory and an observer modelfalse: 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

ValueQuestions are aboutExample
conceptTransferable ideas behind the workWhy an index changes query cost.
projectFiles and decisions in this codebaseWhy this query uses the new index.
learnA named topic, prerequisites firstLearn 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

In Claude Code
/eklavya:mode
/eklavya:mode project
/eklavya:mode off --session
/eklavya:level medium
In a terminal
eklavya config set quiz.enforced true --project
eklavya config set quiz.enabled false
eklavya config set focus learn --topic caching
eklavya config set cadence end

Without --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.