flashcard-drill

majiayu000's avatarfrom majiayu000

Run timed flashcard drills when user says "drill <category>" (e.g., "drill bitwise", "drill 1-bitwise", "drill arrays"). Reads all flashcards upfront, quizzes rapidly, logs results, drills missed cards, then updates README.

0stars🔀0forks📁View on GitHub🕐Updated Jan 5, 2026

When & Why to Use This Skill

This Claude skill automates high-intensity, timed flashcard drills designed to master coding concepts and algorithms. It streamlines the learning workflow by reading markdown-based flashcards, conducting rapid-fire quizzes without distractions, logging performance metrics such as score and completion time, and managing focused review sessions for missed questions to ensure long-term knowledge retention.

Use Cases

  • Technical Interview Preparation: Rapidly drill essential data structures and algorithms, including bitwise operations, linked lists, and dynamic programming, to build the muscle memory required for high-pressure interviews.
  • Syntax and Pattern Mastery: Use timed sessions to reinforce Python-specific patterns, library functions, and coding best practices through active recall and immediate feedback.
  • Automated Progress Tracking: Maintain a verifiable record of learning consistency by automatically logging drill results and updating project documentation via Git integration.
  • Targeted Weakness Remediation: Efficiently focus on difficult concepts by utilizing the skill's ability to isolate and re-drill only the questions missed in previous sessions.
nameflashcard-drill
descriptionRun timed flashcard drills when user says "drill <category>" (e.g., "drill bitwise", "drill 1-bitwise", "drill arrays"). Reads all flashcards upfront, quizzes rapidly, logs results, drills missed cards, then updates README.

Flashcard Drill

Run a timed flashcard drill session for a category in 0-python-flashcards/.

Workflow

1. Setup (before starting)

  • Read ALL flashcard files from the requested category directory
  • Each .md file is one flashcard: the H1 heading is the question, the code block is the answer
  • Tell the user the count and that you're ready
  • User will say "go" or similar to start

2. Quiz Phase (be FAST)

  • Present questions one at a time with the question number prefix (e.g., "Q1: How do you get bit at position i?")
  • Get the question number from the filename (e.g., 03-clear-bit.md = Q3, 01b-row-type.md = Q1b)
  • The question text is in the **Q:** line of the flashcard (NOT the H1 heading)
  • When user answers, respond IMMEDIATELY with:
    • "Correct!" or "Wrong - [correct answer]"
    • Blank line for readability
    • Then the next question in the SAME response
  • NO extra commentary, NO thinking, NO explanations during the drill
  • Track: correct count, incorrect cards (for later review)

3. Log Results

After the last card, ask the user for their time in seconds, then run:

~/.pyenv/versions/python-coding-dojo/bin/python scripts/log_flashcard_drill.py <category> --score <correct> --count <total> --time <seconds> --notes "Missed: Q3, Q7, Q12"

IMPORTANT: Always include --notes with the list of missed question numbers (e.g., "Missed: Q3, Q7, Q12"). Use the question number from the filename (e.g., 03-clear-bit.md = Q3).

Category names in progress.yaml:

  • bitwise (for 1-bitwise)
  • arrays (for 2-arrays)
  • strings (for 3-strings)
  • linked-lists (for 4-linked-lists)
  • stacks-queues (for 5-stacks-queues)
  • binary-trees (for 6-binary-trees)
  • heaps (for 7-heaps)
  • searching (for 8-searching)
  • hash-tables (for 12-hash-tables)
  • sorting (for 13-sorting)
  • bst (for 14-bst)
  • recursion (for 15-recursion)
  • dynamic-programming (for 16-dynamic-programming)
  • greedy-invariants (for 17-greedy-invariants)
  • graphs (for 18-graphs)

4. Review Missed Cards

If any cards were missed, offer to drill them again. Repeat until user is satisfied.

5. Finish

~/.pyenv/versions/python-coding-dojo/bin/python scripts/update_readme.py

Then commit and push (no "Claude" in commit message):

git add -A && git commit -m "Log flashcard drill: <category>" && git push

Scoring Rules

From log_flashcard_drill.py:

  • Pass: Perfect score (score == count) AND under target time
  • Fail: Any wrong answers OR over target time

Flashcard Format

Each .md file in 0-python-flashcards/<category>/:

# Card Title

**Q:** Question text here?

**A:** Brief answer description

\`\`\`python
answer_code_here
\`\`\`

The filename determines the question number (e.g., 01-read-csv-basic.md = Q1, 01b-row-type.md = Q1b).

Example Session

User: "drill bitwise" Claude: reads all 17 files in 0-python-flashcards/1-bitwise/ Claude: "Ready! 17 cards. Say 'go' when ready." User: "go" Claude: "Q1: How do you get bit at position i?" User: "(x >> i) & 1" Claude: "Correct!

Q2: How do you set bit at position i?" ... Claude: "Done! 16/17 correct. What was your time in seconds?" User: "485" Claude: logs attempt with --notes "Missed: Q5" Claude: offers to drill missed card

flashcard-drill – AI Agent Skills | Claude Skills