← 返回 Skills 市场
ericshi123

QuizMe

作者 ericshi123 · GitHub ↗ · v1.1.0 · MIT-0
cross-platform ⚠ pending
83
总下载
0
收藏
0
当前安装
3
版本数
在 OpenClaw 中安装
/install quizme
功能描述
Adaptive tech quiz skill for OpenClaw. Asks one question at a time on any coding or CS topic: Python, JavaScript, SQL, system design, algorithms, networking,...
使用说明 (SKILL.md)

QuizMe

Overview

An adaptive, Socratic quiz skill for tech and coding topics. Asks one question at a time, confirms right/wrong after each answer with a brief explanation, and adjusts difficulty dynamically — harder after a correct answer, easier (or same) after a wrong one. Saves topics to ~/quizme/topics.json for persistence across sessions.

Supported Topic Areas

Area Subtopics
Python basics, OOP, async/await, exceptions, decorators
JavaScript closures, promises, async/await, event loop
SQL joins, indexes, window functions, query optimization
System design caching, load balancing, databases, CAP theorem
Algorithms & data structures big-O, trees, graphs, sorting
Networking HTTP, TCP/IP, DNS, websockets
Git branching, rebasing, conflicts, workflows
Docker / Kubernetes containers, images, pods, services
APIs REST, GraphQL, auth patterns (OAuth, JWT)
General CS concepts memory, OS basics, compilers, concurrency

See references/topics.md for detailed per-topic concept lists and example questions at each difficulty level.

Workflow

Step 1 — Start every session by asking the topic

Always ask the user what they want to practice, even if a topic was passed inline. Show the saved list from ~/quizme/topics.json if it exists:

"What would you like to practice today?" [if topics exist] "Your saved topics: 1. Python async 2. SQL joins (or type a new topic)"

After topic confirmed, ask difficulty OR load current difficulty from ~/quizme/progress.json if the user has history with this topic:

"Your last difficulty for Python was intermediate — continue there? (yes / pick another)"

If no prior history, default to beginner or ask: "What difficulty? (beginner / intermediate / advanced)"

Step 2 — Initialize the bank if needed

Check ~/quizme/bank/{topic_slug}-{difficulty}.json where topic_slug is the topic lowercased with spaces/special chars replaced by hyphens:

  • If the file is missing or has fewer than 3 unseen questions ("seen": false): generate questions inline (no external API needed — you are the LLM).
    • First run (file missing): generate 20 questions
    • Refill (file exists but low on unseen): generate 10 more and append
  • Tell the user: "Generating questions for [topic] at [difficulty]..." then generate and write the JSON file immediately.
  • After generating, add the topic to ~/quizme/topics.json if not already present.

How to generate inline: Produce a valid JSON array of question objects matching the bank format below, then write it to the bank file using the write tool. Do not call any external script or API.

Bank file format:

{
  "topic": "system design",
  "difficulty": "beginner",
  "generated_at": "YYYY-MM-DD",
  "questions": [
    {
      "id": "{topic_slug}-{diff_prefix}-{3-digit-index}",
      "concept": "short concept name",
      "question": "The question text",
      "code": null,
      "language": null,
      "options": {"A": "...", "B": "...", "C": "...", "D": "..."},
      "answer": "A",
      "explanation": "2-3 sentence explanation of why the answer is correct.",
      "seen": false,
      "correct_count": 0,
      "seen_count": 0
    }
  ]
}

For code topics: set "code" to a code snippet string (≤15 lines) and "language" to the language name. For conceptual topics (networking, system design, algorithms theory): set both to null.

Step 3 — Ask questions from bank

Pick a random unseen question ("seen": false) from the bank. After showing it, immediately set "seen": true on that question and save the bank file.

Question format rules:

  • If "code" field is non-null: include the snippet in a fenced code block using the "language" value
  • If "code" is null: plain question text only
  • Always show all 4 options (A/B/C/D) from the "options" field
  • One question per message — never show two at once

Question template (code topic)

**Question N** — [Topic] ([difficulty])

[question text]

```[language]
[code snippet]

A) ... B) ... C) ... D) ...


#### Question template (conceptual topic)

Question N — [Topic] ([difficulty])

[question text]

A) ... B) ... C) ... D) ...


### Step 4 — After each answer

1. Reveal correct/wrong + show the `"explanation"` from the bank question (2–3 sentences).
2. Update the bank question:
   - Increment `"seen_count"` by 1
   - If correct: increment `"correct_count"` by 1
3. Save the bank file.
4. **Check graduation:** Count all questions in this bank where `"seen_count" > 0`. If there are ≥ 15 such questions AND `(sum of correct_count / sum of seen_count) >= 0.80` → trigger graduation (Step 5).
5. **Check refill:** Count remaining unseen questions (`"seen": false`). If fewer than 5 remain → silently generate 10 more inline and append them to the bank file.
6. Ask the next question.

### Step 5 — Graduation

When graduation triggers:
- Announce: *"You've mastered [difficulty] [topic]! Moving up to [next level]."*
- Delete the old bank file (`~/quizme/bank/{slug}-{difficulty}.json`)
- Update `~/quizme/progress.json`: mark current difficulty as graduated with today's date, set `current_difficulty` to the next level
- Generate 20 new questions inline for the next difficulty and write the new bank file
- Continue the session at the new difficulty

Difficulty order: **beginner → intermediate → advanced**

At **advanced**: no graduation. Just keep refilling the bank when unseen questions run low.

### Step 6 — End session

When the user says "stop", "quit", "done", or similar:
- Show summary: topic, questions answered this session, correct count, accuracy %
- Save session stats to `~/quizme/progress.json` (increment answered/correct counts for this topic+difficulty)

## Storage Layout

~/quizme/ ├── topics.json # { "topics": ["python async", "SQL joins"] } ├── progress.json # per-topic difficulty + stats └── bank/ ├── python-beginner.json ├── sql-joins-intermediate.json └── ... # only current difficulty per topic lives here


### progress.json format

```json
{
  "python": {
    "current_difficulty": "intermediate",
    "beginner": { "answered": 17, "correct": 14, "graduated": true, "graduated_at": "2026-05-22" },
    "intermediate": { "answered": 4, "correct": 3, "graduated": false }
  }
}

topics.json format

{ "topics": ["python async", "SQL joins", "system design"] }
  • On first run, create the file if it doesn't exist.
  • When a new topic is introduced, append it to the list and save.
  • When showing saved topics, display them as a numbered list.

Hard Rules — Never Break These

  1. Never ask two questions at once.
  2. Never add a code snippet to a non-code topic (networking, algorithms theory, CS concepts).
  3. Never reveal the answer before the user responds.
  4. This skill is tech-only. If the user asks to be quizzed on a non-tech topic (history, cooking, etc.), politely decline and list the supported topic areas.
  5. Always provide 4 multiple-choice options (A/B/C/D) — no open-ended questions.
  6. Always explain after every answer, even when correct.

Difficulty Levels

Level Description
Beginner Core syntax, definitions, basic usage patterns
Intermediate How things work under the hood, common patterns, tricky edge cases
Advanced Performance, internals, architectural tradeoffs, subtle bugs

Resources

references/

  • topics.md — Detailed per-topic concept coverage at each difficulty level, with example question ideas. Load this when generating questions to ensure appropriate concept selection.
能力标签
requires-oauth-tokenrequires-sensitive-credentials
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install quizme
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /quizme 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.1.0
Removed external OpenAI API dependency — questions now generated inline by the agent. No extra API key needed.
v1.0.1
Updated skill description
v1.0.0
Initial release: adaptive tech quiz skill with rolling question bank, graduation system, and progress tracking
元数据
Slug quizme
版本 1.1.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 3
常见问题

QuizMe 是什么?

Adaptive tech quiz skill for OpenClaw. Asks one question at a time on any coding or CS topic: Python, JavaScript, SQL, system design, algorithms, networking,... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 83 次。

如何安装 QuizMe?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install quizme」即可一键安装,无需额外配置。

QuizMe 是免费的吗?

是的,QuizMe 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

QuizMe 支持哪些平台?

QuizMe 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 QuizMe?

由 ericshi123(@ericshi123)开发并维护,当前版本 v1.1.0。

💬 留言讨论