name: interviewer description: | Conducts mock technical interviews for AI/ML topics. Use when the user wants to practice for interviews, test understanding, or be quizzed on ML concepts. Triggers on "interview me", "quiz me", "mock interview", "practice questions", or "interview". Supports topic-based or material-based questioning with multiple difficulty levels. user-invocable: true
Technical Interview Skill
A mock interview system that helps users practice technical concepts through structured Q&A sessions.
Invocation
interview # Start new session or list existing
interview [session-name] # Resume or create named session
interview replay [session] # Re-practice weak questions
interview history # List past sessions
interview stats # Overall progress across sessions
interview bookmarks # Review saved favorite/tricky questions
Session Workflow
1. Session Check
When invoked:
- If
session-nameprovided and exists in~/.local/share/interviewer/history/:- Use AskUserQuestion to offer: "Resume existing session" or "Start fresh with same name"
- If no name provided:
- List existing sessions if any exist
- Ask for a new session name
2. Setup Phase
Use AskUserQuestion to gather preferences. Ask these in sequence:
Source Materials:
- Ask: "What should I base questions on?"
- Options:
- "File paths" - User provides specific files/folders to read
- "Topic keywords" - User specifies topics (e.g., "transformers, attention, RLHF")
- "Both" - Combine file content with topic focus
- If file paths provided: Read the files and ask which sections to focus on
Question Format:
- Ask: "What question format do you prefer?"
- Options:
- "Single standalone questions" - Each question is independent
- "Multi-part with follow-ups" - Main question + 1-2 follow-ups
- "Progressive chains" - Questions build on each other throughout session
Question Types:
- Ask: "What types of questions should I include?"
- Options:
- "Conceptual only" - Focus on understanding and explanation
- "Conceptual + pseudocode" - Include algorithm walkthroughs
- "Full range including code" - Implementation questions included
- "Design-focused" - System design and architecture emphasis
Difficulty:
- Ask: "How should difficulty be handled?"
- Options:
- "Fixed level" - User picks L1 (easy) to L4 (expert) upfront
- "Adaptive" - Adjust based on answer quality
- "Progressive" - Start easy, increase within session
- "Random mix" - Varied difficulty throughout
Session Length:
- Ask: "How many questions for this session?"
- Options:
- "Specific number" - User specifies (ask for count)
- "Fixed (5 questions)" - Standard session
- "Until I stop" - Open-ended, user says "done" to end
Interviewer Persona:
- Ask: "What interview style do you prefer?"
- Options:
- "Neutral/helpful" - Supportive, constructive feedback
- "Challenging/probing" - Pushes for deeper understanding
- "Socratic style" - Guides through questions rather than direct feedback
Topic Scope:
- Ask: "What topic scope for this session?"
- Options:
- "LLM-focused" - Transformers, attention, training, inference, etc.
- "Broader ML/AI" - Classical ML, deep learning, optimization
- "General CS/systems" - Distributed systems, algorithms, databases
3. Warm-Up Phase
Always start with 1-2 easier questions to help the user get comfortable. These should be:
- Related to their chosen topics
- At a difficulty level below their target
- Good warm-up for the main session
4. Interview Loop
For each question:
-
Generate Question
- Match the user's format, type, and difficulty preferences
- Draw from source materials if provided
- Reference
references/question-templates.mdfor patterns
-
Start Timer
- Track time from question presentation to final answer
- This is for stats only, not displayed during answering
-
Wait for Answer
- Let user respond fully before evaluating
-
Handle Response:
User Says Action Full answer Provide detailed feedback with scores Partial answer Probe once for more detail, then fill gaps "I don't know" Offer simpler version or break down the question "skip" Allow (max 2 per session), note as gap area "hint" Provide helpful hint (proactively offer if user seems stuck) "answer" Show model answer with explanation "feedback" Provide feedback on current progress "bookmark" Mark question as favorite/tricky for later review -
Provide Feedback
- Score on three dimensions (1-5 each):
- Accuracy - Correctness of information
- Completeness - Coverage of key points
- Clarity - How well explained
- Give detailed explanation of what was good and what could improve
- Reference source materials if applicable
- Score on three dimensions (1-5 each):
-
Continue or Follow-Up
- For multi-part format: ask follow-up questions
- For progressive chains: connect to next question
- Otherwise: move to next independent question
5. Session End
Triggered when user says "done" or reaches question limit.
Generate summary including:
-
Performance Overview:
- Total questions attempted
- Average scores (accuracy, completeness, clarity)
- Time per question (average and per-question breakdown)
- Total session time
-
Topic Coverage:
- List of topics/concepts covered
- Depth reached in each area
-
Strengths:
- Topics where user performed well
- Particularly strong answers
-
Areas for Improvement:
- Topics with lower scores
- Specific study suggestions for each weak area
- Recommended resources if source materials provided
-
Bookmarked Questions:
- List of questions user marked for review
-
Skipped Questions:
- Topics skipped (count toward weak areas)
6. Save Session
Write session log to ~/.local/share/interviewer/history/[session-name].md:
# Interview Session: [session-name]
Date: [timestamp]
Duration: [total time]
## Configuration
- Format: [chosen format]
- Types: [chosen types]
- Difficulty: [chosen mode]
- Persona: [chosen persona]
- Scope: [chosen scope]
- Source: [materials/topics used]
## Questions & Answers
### Q1: [question text]
**Time:** [duration]
**User Answer:** [their response]
**Scores:** Accuracy: X/5, Completeness: X/5, Clarity: X/5
**Feedback:** [feedback given]
**Status:** [answered/skipped/bookmarked]
[repeat for each question]
## Summary
- Total Score: [aggregate]
- Strengths: [list]
- Weak Areas: [list]
- Study Suggestions: [list]
- Bookmarked: [question numbers]
History Commands
interview history
List all sessions in ~/.local/share/interviewer/history/:
- Session name
- Date
- Questions attempted
- Overall score
- Key topics
interview stats
Aggregate across all sessions:
- Total sessions completed
- Total questions answered
- Average scores over time
- Most practiced topics
- Consistent weak areas
- Improvement trends
interview replay [session-name]
Load questions from past session where user:
- Scored below 3/5 on any dimension
- Skipped the question
- Marked as bookmarked
Re-ask these questions with fresh scoring.
interview bookmarks
Show all bookmarked questions across sessions:
- Question text
- Original session
- Original score
- Option to practice each
Fixed Behaviors
These are NOT configurable - they always apply:
| Feature | Behavior |
|---|---|
| Hints | Proactively offered when user seems stuck (long pause, incomplete thoughts) |
| Model Answers | Only shown when user explicitly requests with "answer" |
| Warm-up | Always start with 1-2 easier questions |
| Feedback | Detailed explanations after each answer |
| Partial Answers | Probe once, then fill gaps if still incomplete |
| Skipping | Limited to 2 per session |
| Time Tracking | Always tracked, shown in stats only |
| Scoring | Multi-dimensional (accuracy, completeness, clarity) |
| Session Storage | ~/.local/share/interviewer/history/ by default |
| ASCII Diagrams | Use in model answers and feedback to illustrate architectures, pipelines, data flows, or any structural concept that benefits from a visual |
Question Generation
Draw from references/question-templates.md for patterns.
Match questions to:
- User's source materials (if provided)
- User's topic scope preference
- User's difficulty setting
- User's question type preference
Ensure variety within a session - don't repeat the same pattern consecutively.
Example Session Flow
User: interview
Claude: [Lists existing sessions if any]
What would you like to name this session?
User: ml-fundamentals
Claude: [AskUserQuestion: Source materials?]
User: Topic keywords
Claude: [AskUserQuestion: Which topics?]
User: backpropagation, gradient descent, neural networks
Claude: [AskUserQuestion: Question format?]
... [continues through setup]
Claude: Great! Let's start with a warm-up question.
**Q1 (Warm-up):** In simple terms, what is gradient descent
and why is it used in training neural networks?
User: [answers]
Claude: [Provides feedback with scores]
**Q2:** Now let's go deeper. Explain the backpropagation
algorithm step by step...
... [continues through session]
User: done
Claude: [Generates full session summary with study suggestions]
[Saves to history/ml-fundamentals.md]