agentsclimarketplace

Quiz

Skill maludb/learn-claude/skills/quiz

Interactive study session for the Claude Certified Architect (CCA-F) certification exam. Use when the user says things like "help me prepare for the Claude certification exam", "quiz me", "let's study for the cert", "practice CCA-F questions", or names an exam domain to drill (agentic architecture, MCP, Claude Code, prompt engineering, context management).From its SKILL.md

Install
npx -y skills add maludb/learn-claude --skill quiz

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

6.9 KB, as published. Nobody here has run it

CCA-F Study Session: teach one topic, drill 5 questions, record results

Follow these steps in order. Speak conversationally; never dump raw file contents at the user.

Step 0 — Resolve paths

  • Content (read-only): ${CLAUDE_PLUGIN_ROOT}/content/ — topic lessons in topics/, question banks in bank/.
  • User data: ${CLAUDE_PLUGIN_DATA}. If that variable is unset or empty, use ~/.claude/plugins/data/learn-claude instead. Create the directory if it does not exist.
  • Progress files live in the data directory: progress.md and history.md.

Step 1 — Load state (first run: orient and initialize)

Read progress.md. If it does not exist, this is a first run:

  1. Give a ~30-second orientation: the CCA-F exam is 60 multiple-choice questions in 120 minutes, scored on a 100–1000 scale with 720 to pass. Five domains: D1 Agentic Architecture (27%), D2 Tool Design & MCP (18%), D3 Claude Code (20%), D4 Prompting & Structured Output (20%), D5 Context & Reliability (15%). Questions are framed in production scenarios, not trivia. This plugin teaches a topic, then drills 5 exam-style questions, and tracks your accuracy per topic.
  2. List the topic files in ${CLAUDE_PLUGIN_ROOT}/content/topics/ and create progress.md with one table row per topic file (30 rows), exactly in this format:
# CCA-F Study Progress

## Summary
Total answered: 0 | Overall: 0% | Streak: 0 days | Last session: never

## Topics
| Topic | Domain | Seen | Asked | Correct | Accuracy | Last studied |
|-------|--------|------|-------|---------|----------|--------------|
| d1-01 | 1 | 0 | 0 | 0 | - | - |
  1. Create history.md containing only # CCA-F Study History followed by a blank line.

If progress.md exists but is missing a row for a topic file now present in ${CLAUDE_PLUGIN_ROOT}/content/topics/ (content added in an update), append the missing row(s) with zeroed stats before continuing.

Step 2 — Pick a topic

If the user named a domain or topic (in the skill argument or their message), honor it. Map natural names to domains: "mcp"/"tools" → d2; "claude code" → d3; "prompting"/"structured output" → d4; "context"/"reliability" → d5; "agents"/"orchestration"/"architecture" → d1. If they named something more specific ("tool descriptions", "hooks", "plan mode"), pick the nearest topic id by title. If they named only a domain, pick the best topic within it using the scoring below.

Otherwise, compute a score for every topic from the progress table:

  • need = 3 if never seen; 2 if accuracy < 70%; otherwise 1 / (days since last studied + 1)
  • score = domain weight × need, where weights are d1=27, d2=18, d3=20, d4=20, d5=15

Pick the highest score; break ties randomly. Tell the user which topic you picked and why in one short line (e.g. "Picking d2-04 (MCP configuration) — never seen, and D2 is 18% of the exam.").

Step 3 — Teach

Read the topic file ${CLAUDE_PLUGIN_ROOT}/content/topics/<id>-*.md. Present the lesson conversationally — do not paste the file. Render the Lesson section as prose in your own flow, then the Key facts as a tight bullet list, then the Exam traps. Keep the whole thing under about one screen. Close with: ready for questions, or want more depth first? If they want depth, expand from the lesson; then proceed.

Step 4 — Drill (5 questions)

  1. Load ${CLAUDE_PLUGIN_ROOT}/content/bank/domain-<n>.md (n = this topic's domain) and extract this topic's question blocks — headers of the form ### Q <topic>-qNN, each with a stem, options A–D, answer, and explanation.
  2. Cross-check history.md: a question counts as already asked if its ID appears on any quiz session line. Skip already-asked questions; use only unasked ones. Lines tagged exam-mode do NOT retire questions from drills — re-drilling something met in a mock is good practice.
  3. If fewer than 5 unasked bank questions remain (or the bank file is missing entirely), generate the shortfall yourself: write a scenario-grounded stem set in one of this topic's official scenarios — resolve the topic file's numeric scenarios frontmatter via the legend in ${CLAUDE_PLUGIN_ROOT}/content/scenarios.md — 4 options, same difficulty band as the bank. Build the three distractors from these archetypes: (a) plausible but documented anti-pattern, (b) right idea applied at the wrong layer, (c) works but violates a stated constraint. Give generated questions IDs <topic>-gNN (g = generated), numbering them so they do not collide with IDs already in history.
  4. Ask ONE question at a time using the AskUserQuestion tool:
    • question text = the stem
    • exactly 4 options, each labeled with its full text prefixed "A) ", "B) ", "C) ", "D) "
    • header = the question ID
    • NEVER reveal or hint at the answer before the user picks.
  5. After each answer, say whether it was correct or incorrect, give the explanation — why the right option is right and why each wrong option is wrong — then move to the next question. Track each result (question ID, user's letter, correct letter).

Mid-quiz edge cases:

  • If the user says "skip" or asks a side question, answer briefly, then re-ask the same question. A skipped question they never answer does not count as asked.
  • If the user quits mid-session, go to Step 5 immediately and record only the questions actually answered (Asked/Correct reflect the real count, not 5). If they answered zero questions, leave progress.md untouched and append nothing to history.

Step 5 — Record and close

After the last question, update progress.md:

  • This topic's row: Seen +1; Asked + number answered; Correct + number correct; Accuracy = Correct/Asked as a whole percent; Last studied = today (YYYY-MM-DD).
  • Summary line: recompute Total answered (sum of Asked) and Overall (sum Correct / sum Asked as %). Streak: +1 if Last session was yesterday; reset to 1 if it was older (or never); leave unchanged if it was already today. Set Last session = today.

Append ONE line to history.md for the session:

- <YYYY-MM-DD> quiz <topic>: <qid> ✓ B, <qid> ✗ A (correct: C), ...

One entry per question answered: ✓ plus the user's letter when correct; ✗ plus the user's letter and (correct: <letter>) when wrong.

Then show a mini-summary — score on this topic (n/5) and the topic's updated accuracy plus the domain's overall accuracy — and offer three choices: another topic (recompute the Step 2 pick), switch to a domain they name, or stop. If they continue, loop back to Step 2 (or straight to Step 3 if they named the topic).

Keep looking

Skills are one crate of 628,853. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.