Exam Master

unlisted

by HU

Mock exam simulator: timed exams, tag-filtered practice, wrong-answer review with per-question notes, and per-tag analytics.

Updated 15d agoMIT
View on GitHub

Exam Master

release license

Take mock exams, practise with tag filters, review wrong answers, and track per-tag accuracy — all from inside your Obsidian vault.

Features

  • Exam mode — timed, fixed-count session that draws a fresh random sample for every attempt. Per-bank parameters (e.g. AIP-C01 = 65 questions / 130 minutes) are read from the bank's INDEX.md.
  • Practice mode — random questions filtered by tag, with optional immediate feedback or end-of-session reveal.
  • Always-visible question navigator — colour-coded grid (current / answered / flagged / unanswered) that lets you jump anywhere instantly.
  • Wrong-answer collection — each wrong question becomes its own markdown note with a writable ## Note block; tags are normalised so they index correctly in Obsidian's tag pane.
  • In-plugin review screen for wrong answers, fully styled to match the rest of the UI (no jarring jump to the default markdown viewer).
  • Per-attempt history persisted as one markdown file per session (Dataview-friendly frontmatter).
  • Stats screen — overall accuracy donut and per-tag bar chart, weakest tags first.
  • Markdown rendering through Obsidian's renderer — code blocks, LaTeX, tables, internal links and images all work.
  • i18n — UI follows your Obsidian language (中文 / 日本語 / English) automatically; manual override available in settings.

Screenshots

Replace these placeholders with real screenshots before publishing.

HomeExam screenResult
homeexamresult

Install

From the Community plugins list

Once the plugin is approved on the official list:

  1. Open Settings → Community plugins
  2. Disable Restricted mode if it's on
  3. Browse and install Exam Master
  4. Enable it

Beta install (via BRAT)

While the plugin is awaiting official review:

  1. Install BRAT
  2. BRAT settings → Add beta plugin → paste hu-shukang/obsidian-exam-master
  3. BRAT will install from the latest GitHub release

Manual install

# from a release zip:
mkdir -p <vault>/.obsidian/plugins/exam-master
cp main.js manifest.json styles.css <vault>/.obsidian/plugins/exam-master/

# then enable under Settings → Community plugins

Quick start

  1. Create a folder under Exam/Banks/ (configurable in settings) — say AIP-C01/.
  2. Add an INDEX.md with the per-bank exam-mode parameters.
  3. Add one Qxxx.md per question.
  4. Open the Exam Master view (ribbon icon or command palette → Open Exam Master).
  5. Click Reload Banks, pick your bank, and start an exam or practice session.

A fully-worked sample with 122 questions lives in examples/AIP-C01/.

Bank file format

Each bank is a folder. INDEX.md holds bank-level metadata; every other .md file is one question.

INDEX.md

---
exam: AIP-C01                   # display name (defaults to folder name)
version: V12.65                 # optional, free-form
exam_questions: 65              # how many random questions per exam-mode session
exam_minutes: 130               # exam-mode time limit
---

# Free-form body — table of contents, instructions, etc.

exam_questions and exam_minutes are required for Start exam to be enabled on this bank. Practice mode does not need them.

One question per file

---
id: 1
tags:
  - category/bedrock-core
  - aws/bedrock/guardrails
---

# 問題 1                       ← optional h1, ignored

## 質問
<question stem markdown>

## 選択肢
**A.** option A markdown

**B.** option B markdown

**C.****D.**## 正解
> [!success]- Show answer
> **A, D**

## 解説
> [!note]- Show explanation
> <explanation markdown>

---
[[Q002|next]] | [[INDEX|index]]    ← anything after the trailing --- is ignored

Notes:

  • Section order matters; section titles can be in any language.
  • id is unique per bank. Tags can be a YAML list or comma/space-separated string.
  • Options are detected by **A.**, **B.**, … markers. Multi-line content is supported.
  • Answer letters are picked from the first ## 正解 section — **A, D** and > A both work.
  • Explanation callout markers and the trailing wiki-link footer are stripped automatically.

Folder layout in vault

Exam/
├─ Banks/         # one sub-folder per bank (each contains .md questions)
├─ History/       # auto-generated session records (markdown)
└─ Wrong/         # auto-generated wrong-answer notes (markdown)

All three paths are configurable in plugin settings.

Privacy

This plugin runs entirely on your device. It does not make any network requests. No telemetry, no analytics, no remote loading.

Development

npm install
npm run dev      # watch mode, rebuilds on save
npm run build    # one-shot production build

For active development, symlink the project folder into your vault's plugin directory:

ln -s "$(pwd)" /path/to/vault/.obsidian/plugins/exam-master

Then reload Obsidian (Cmd/Ctrl+R) to pick up the new build. The community Hot Reload plugin automates this.

License

MIT © HU

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.