Skip to main content

Run markdown quizzes in the terminal

Project description

quizmd

quizmd is a terminal quiz app for:

  • Markdown MCQs (single/multiple)
  • Imposter quizzes (spot misleading options)
  • Chaos quizzes (branch + recovery scenarios)
  • Essay quizzes (AI rubric scoring)
  • Online room modes (compete/collaborate)
  • Terminal game modes (Alien Attack)

Install

Recommended:

pip install quizmd

Update to latest:

pip install -U quizmd

From GitHub (latest repo state):

pip install "git+https://github.com/steliosot/quizmd.git"

Check install:

quizmd --version

Quick Start

Create starter files:

quizmd init

This creates:

  • hello-quiz.md (single + multiple MCQ)
  • hello-imposter.md (imposter mode)
  • hello-chaos.md (branching scenario mode)
  • hello-essay.md (essay mode)
  • QUIZ_GUIDE.md (quick commands)

Run starters:

quizmd --validate hello-quiz.md
quizmd hello-quiz.md

quizmd --validate hello-imposter.md
quizmd hello-imposter.md

quizmd --validate hello-chaos.md
quizmd hello-chaos.md

quizmd --validate hello-essay.md
export GEMINI_API_KEY="your_key_here"  # or OPENAI_API_KEY / ANTHROPIC_API_KEY
quizmd hello-essay.md

Modes (What + How to Start)

1) Classic MCQ (Local)

  • What: single/multiple-choice timed quiz.
  • Start: quizmd hello-quiz.md

2) Imposter (Local)

  • What: select correct answers and flag misleading options.
  • Start: quizmd hello-imposter.md

3) Debug (Local)

  • What: fix broken Python code with line-aware scoring.
  • Start: quizmd hello-debug.md

4) Challenge (Local)

  • What: category board + risk levels (stars scoring).
  • Start: quizmd hello-challenge.md

5) Reverse (Local)

  • What: infer code behavior/output in reverse-engineering style MCQs.
  • Start: quizmd hello-reverse.md

6) Millionaire (Local)

  • What: 15-question ladder with lifelines and safety nets.
  • Start: quizmd hello-millionaire.md

7) Chaos (Local)

  • What: branch + recovery scenario that rejoins at final decision.
  • Start: quizmd hello-chaos.md

8) Essay (Local + AI)

  • What: write a short response and get rubric feedback.
  • Start: quizmd hello-essay.md

9) Room: Compete (Online)

  • What: fastest correct answers win points.
  • Start room: quizmd room --create --mode compete --quiz hello-quiz.md

10) Room: Collaborate (Online)

  • What: discussion + voting phase, team consensus scoring.
  • Start room: quizmd room --create --mode collaborate --quiz hello-quiz.md

11) Game: Alien Attack (Terminal)

  • What: arcade shooter mini-game.
  • Start: quizmd alien-attack

Join any room:

quizmd room --join <room-name> [--token <room-token>]

Room quiz requirement:

  • In online room modes, each question Time/time_limit must be 5 seconds or higher.
  • For JSON room quizzes, optional discussion_time (seconds) controls collaborate chat phase per question.

quizmd init Coverage

Yes, quizmd init covers all mode types:

  • MCQ single/multiple via hello-quiz.md
  • Imposter via hello-imposter.md
  • Chaos via hello-chaos.md
  • Essay via hello-essay.md
  • Room modes by using hello-quiz.md with --mode compete|collaborate

Essay Keys (Essay Mode Only)

MCQ quizzes do not require API keys.

Supported keys:

  • GEMINI_API_KEY
  • OPENAI_API_KEY
  • ANTHROPIC_API_KEY

Auto provider order:

  1. Gemini
  2. OpenAI
  3. Anthropic

Mac/Linux example:

export GEMINI_API_KEY="your_key_here"

Windows PowerShell example:

$env:GEMINI_API_KEY="your_key_here"

Validate Any Quiz

quizmd --validate quizzes/harry-potter-quiz.md

Theme

quizmd --theme auto quizzes/harry-potter-quiz.md
quizmd --theme light quizzes/harry-potter-quiz.md
quizmd --theme dark quizzes/harry-potter-quiz.md

Notes

  • Local question modes support Q for graceful quit with summary.
  • Press Ctrl+C at any time to exit.
  • Each multiple-choice question must have at least 2 non-empty options.
  • If your question text includes markdown bullet lines, add an Options: line before answer choices to disambiguate parsing.

Development

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m unittest discover -s tests -q

Multiplayer server local dev note:

  • Use Python 3.13 in multiplayer/server (python3.13 -m venv .venv), since Python 3.14 may fail dependency builds (pydantic-core).

Community

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quizmd-2.4.3rc7.tar.gz (122.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quizmd-2.4.3rc7-py3-none-any.whl (91.9 kB view details)

Uploaded Python 3

File details

Details for the file quizmd-2.4.3rc7.tar.gz.

File metadata

  • Download URL: quizmd-2.4.3rc7.tar.gz
  • Upload date:
  • Size: 122.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quizmd-2.4.3rc7.tar.gz
Algorithm Hash digest
SHA256 9033721db5de68eeec63e3d7af5a1457d47965e19f33e393811260f43d56a7ff
MD5 3f3f66e6ec3200d45ad91a6844ed6e2e
BLAKE2b-256 abff74a7380a8dfea1eac42b729fb93aa2cf3a7569b82c577572285b58060b4d

See more details on using hashes here.

File details

Details for the file quizmd-2.4.3rc7-py3-none-any.whl.

File metadata

  • Download URL: quizmd-2.4.3rc7-py3-none-any.whl
  • Upload date:
  • Size: 91.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quizmd-2.4.3rc7-py3-none-any.whl
Algorithm Hash digest
SHA256 08d3f8eb4db308336057a5c899d849772dd82458e9bec252feb046ae9dba2272
MD5 13ce1e5a2612f067a2b54ce564cd5252
BLAKE2b-256 d507e1e4ce16d6a2e44b2168635d4e1139f080bc721e33d16b80e3fe2e7358d3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page