# Interview Prep

> Personalize interview prep for engineering candidates OR create new interview templates from job descriptions. Use this skill whenever the user: uploads a resume and wants to prepare for an interview, personalize an interview template, create interview notes, or prep questions for a candidate. Also triggers for: 'prep for interview with [name]', 'personalize the interview for [name]', 'interview…

- **Type:** Skill
- **Install:** `agentstack add skill-roeibh-interviewer-kit-interview-prep`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [roeibh](https://agentstack.voostack.com/s/roeibh)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [roeibh](https://github.com/roeibh)
- **Source:** https://github.com/roeibh/interviewer-kit/tree/main/.claude/skills/interview-prep

## Install

```sh
agentstack add skill-roeibh-interviewer-kit-interview-prep
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Interview Prep Skill

This skill has two modes:

1. **Prep Mode** — Personalize an existing interview template for a specific candidate (resume + template → prep doc)
2. **Template Creation Mode** — Build a new interview template from a job description (JD → interview template)

Detect the mode from context:
- Resume uploaded + template exists or referenced → **Prep Mode**
- Job description uploaded or user asks to create/build an interview template → **Template Creation Mode**
- Ambiguous → ask: "Are you prepping for a specific candidate, or building a new interview template for a role?"

---

# Mode 1: Prep Mode

Generate a personalized, opinionated interview prep document by analyzing a candidate's resume against an interview template, enriching with web research, and asking the interviewer targeted questions before producing the final output.

## Prep Workflow Overview

```
1. Gather inputs (resume, template)
2. Analyze resume → build candidate profile
3. Web-search the candidate (LinkedIn, GitHub, articles)
4. Identify gaps, claims to probe, strengths, and risks
5. Ask the interviewer dynamic targeted questions
6. Generate personalized interview prep (markdown)
```

## Phase 1: Gather Inputs

### Resume
Look for uploaded PDF or text files that look like resumes. If multiple files are uploaded, check whether some are resumes and some are interview templates. Read the resume fully — use the pdf-reading skill if needed for PDFs.

### Interview Template
Find the template using this priority order:

1. **Uploaded template** — any file matching `*interview*template*`, `*interview*guide*`, or `*interview*.md` in `/mnt/user-data/uploads/`
2. **Templates directory** — check `~/interviews/templates/` for saved templates. If Filesystem MCP tools are available, use them to list and read from the user's machine. Otherwise check the container filesystem.
3. **Ask the user** — if no template is found, ask what position they're interviewing for and whether they have a template to upload. Suggest creating one using Template Creation Mode if they don't have one yet.

If multiple templates exist (uploaded or in `~/interviews/templates/`), ask the user which position this interview is for.

Read the full template. Identify:
- What sections need personalization (candidate profile, background probes, scenario selection, challenge selection, etc.)
- What dimensions the template evaluates (e.g., system thinking, code quality, AI fluency)
- What choices the template offers (e.g., Scenario A vs B, Node.js vs C# challenge)

## Phase 2: Analyze the Resume

Build a mental model of the candidate across these dimensions:

### Experience Profile
- Total years of experience
- Current role, company, tenure
- Career trajectory (startup → enterprise? lateral moves? growth?)
- Primary tech stack vs. secondary/claimed stack
- Domain experience (fintech, security, retail, etc.)

### Strength/Gap Analysis (relative to the role)
Map the candidate's experience against what the template tests. For each evaluation dimension in the template, assess:
- **Strong fit** — clear, deep experience
- **Plausible but unvalidated** — claims it but no depth signals
- **Gap** — no evidence, would need to learn on the job

### Claims to Probe
Identify 3-5 resume claims that are either:
- **Impressive but vague** — percentages without methodology, scale claims without specifics
- **Keyword-heavy** — long lists of technologies with no project context
- **Potentially inflated** — title/scope doesn't match tenure or company size
- **Contradictory** — claims that don't align with the rest of the resume

### Red Flags & Hypotheses
Form 2-3 hypotheses about the candidate that the interview should test. These are NOT disqualifying — they're open questions. Examples:
- "Lists Node.js but every project is Java — is Node.js real or decorative?"
- "All enterprise background — can they operate in startup ambiguity?"
- "Claims 'led team' at a 7-month role — what does 'led' mean here?"

## Phase 3: Web Enrichment

Search for the candidate to fill in what the resume doesn't say. Do this **thoroughly** — this is where you find the context that separates a real personalized prep from a template fill-in. Treat the resume as a starting point, not the whole story. Research the candidate like you're planning to invest in them.

### Minimum Searches (every candidate, no exceptions)

Start with at least 4-6 searches. This is a floor, not a ceiling. Combine the candidate's name with:
- Their current company — validate current role and watch for recent changes
- "LinkedIn" — expanded job descriptions, recommendations, activity feed
- "GitHub" or `github.com {name}` — repos, languages, stars, commit recency
- Their most distinctive technical claim — see if they've written or spoken about it
- "Medium" / "Substack" / their personal site — public writing reveals depth AND temperament
- For founder or publicly active candidates: the product/project name directly

### Follow the Thread (mandatory)

Never stop at the minimum when a signal warrants more. If any of these appear, run follow-up searches until the thread is resolved:

- **Recent tenure change** — If their current or most recent role ended within the last 6 months (or appears to be ending "now" based on dates), search for *why*. Queries like `"{name}" {company} leaving`, `"{name}" {company} departure {year}`, or `"{name}" fired` surface voluntary exits, layoffs, firings, and public disputes. A candidate's last 90 days at a company is disproportionately predictive.
- **Short tenure ( "Based on the JD and what you've told me, here are the dimensions I'd evaluate. Rank these by importance for this specific hire, and tell me if I'm missing anything:"

Typical dimensions (adapt to role):
- Problem decomposition
- System thinking / architecture
- Code quality and craft
- Domain knowledge (security, data, infra, etc.)
- Communication and collaboration
- Learning velocity / adaptability
- AI/LLM fluency (if relevant)
- Debugging and incident response
- Ownership mindset

For each dimension the hiring manager confirms, ask a follow-up:
- "What does 'strong' look like for [dimension] specifically on your team? Give me an example of what a great answer would be."
- "What's the minimum bar? What answer would make you say 'not enough'?"

### Round 3: Practical Design Choices

Now get into the specifics of what the interview will contain:

**System design scenarios:**
> "I want to create 2 system design scenarios for the template — one that tests [their likely strong area] and one that tests [their likely weak area], so the interviewer can choose. Here's what I'm thinking based on your product..."

Present 2-3 scenario ideas pulled from the company's actual domain (based on research). Ask:
- "Which of these resonate? Should I adjust the scale, constraints, or domain?"
- "What follow-up twists should we add?" (e.g., "now add LLM costs", "now it needs to handle 10x traffic")

**Coding challenge:**
> "For the coding challenge, what matters more?"

(single_select: "Debugging existing code — can they read and fix?" / "Building from scratch — can they design and implement?" / "Extending a system — can they work in an existing codebase?" / "We have our own challenge already")

If they have their own challenge, ask for it. If not, ask:
- What language(s) should it support?
- Should it be timed or open-ended?
- Should it test specific patterns (async, error handling, data modeling)?

**AI/LLM section:**
> "How important is AI/LLM experience for this role?"

(single_select: "Critical — they'll build AI systems" / "Important — they'll work alongside AI systems" / "Nice-to-have — we use AI tools but it's not the core job" / "Not relevant")

If important, ask what specific AI skills matter: prompt engineering, output parsing, cost optimization, evaluation/metrics, fine-tuning, RAG, agents?

**Background deep-dive focus:**
> "When you look at resumes for this role, what claims make you skeptical? What do you always want to probe?"

(open-ended — this shapes the "Follow-up Probes" section of the template)

### Optional Round 4: Calibration

If the hiring manager seems engaged and the role is nuanced, ask:

- "Describe your ideal candidate for this role — someone you've worked with or a hypothetical. What made/would make them exceptional?"
- "What's the biggest tradeoff you'd accept? e.g., 'I'd take someone weaker on [X] if they're exceptional at [Y]'"
- "Is there anything about your team culture that the interview should screen for? e.g., comfort with ambiguity, async communication, strong opinions loosely held?"

## TC Phase 4: Generate the Template

Produce a markdown file that follows the structural pattern of existing templates. Check `~/interviews/templates/` for examples to match. If the user has existing templates there, read one first to match the format, tone, and level of detail. If no existing templates are available (first template being created), follow the template structure defined below.

### Template Structure

```markdown
# [Company] [Position] Interview Guide

**Position:** [title and level]
**Format:** [duration, single/multi-round]
**Last Updated:** [today's date]

---

## Candidate Profile

| Field | Details |
|-------|---------|
| **Name** | ___________________ |
| **Education** | ___________________ |
| **Years of Experience** | ___________________ |
| **Background** | ___________________ |
| **Core Stack** | ___________________ |
| **Gaps for [Company]** | ___________________ |
| **Resume Claims to Probe** | ___________________ |

---

## Interview Philosophy

[What this interview tests and why. Written in the voice of the team,
not generic HR language. Should reflect the hiring manager's actual
values from the interview.]

[List the evaluation dimensions with one-line descriptions]

---

## Part 1: Background Deep-Dive ([time] min)

**Goal:** [specific to this role]

### Opening
> "[A specific opening question tailored to this role]"

### Follow-up Probes
[Role-specific probes — not generic. Each one should test something
the hiring manager said matters.]

### What to Listen For
[Specific signals, not generic]

---

## Part 2: [Technical Section — System Design / Architecture / etc.] ([time] min)

**Goal:** [specific to this role]

### Scenario A: [Name] ([what it tests])
> "[The prompt, with realistic scale numbers and constraints]"

**Guide the conversation through:**
[Specific discussion points with explanations of why each matters]

### Scenario B: [Name] ([what it tests])
> "[Alternative scenario that tests different skills]"

### [Company]-Specific Follow-ups
[Twists that relate to the actual product/domain]

### Green Flags / Red Flags
[Specific to this role and level]

---

## Part 3: [Practical Challenge] ([time] min)

**Goal:** [what the challenge reveals]

[Challenge description, setup instructions, evaluation criteria]

### Extensions
[Stretch problems for strong candidates]

---

## Part 4: [Additional Section if needed — AI/LLM, Domain Knowledge, etc.] ([time] min)

[Only include if the role warrants it]

---

## Scoring Rubric

| Dimension | Strong (4-5) | Adequate (2-3) | Weak (0-1) |
|-----------|-------------|----------------|------------|
[One row per evaluation dimension, with SPECIFIC descriptions
of what good/adequate/weak looks like for THIS role]

### Hiring Bar
[Clear, numeric thresholds]

---

## Post-Interview Notes

[Fillable template for the interviewer — same structure as existing templates]

---

## Pre-Interview Personalization Checklist

[Checklist the interviewer follows before each interview to customize
the template for a specific candidate. This is what Prep Mode automates.]

### Candidate-Specific Notes

```

### Template Quality Bar

The generated template should be:

- **Opinionated** — reflects what the hiring manager actually cares about, not a generic competency matrix
- **Actionable** — every section has specific questions to ask, not just "evaluate system design skills"
- **Choosable** — offers alternatives (Scenario A vs B) so the interviewer can push candidates into their weak spots
- **Calibrated** — the scoring rubric uses concrete behavioral descriptions, not vague adjectives
- **Self-contained** — a new interviewer could pick it up and run a good interview without additional briefing
- **Domain-specific** — system design scenarios, coding challenges, and probes should relate to what the company actually builds

Before generating, if existing templates are available in `~/interviews/templates/`, re-read one to match the depth and tone. The new template should feel like it belongs in the same collection. If this is the user's first template, follow the structure defined above carefully — it sets the standard for future templates.

## TC Phase 5: Review, Iterate, and Save

Present the generated template to the user. Ask:

> "Here's the template. A few things to review:
> 1. Do the system design scenarios feel realistic for your product?
> 2. Does the scoring rubric capture your actual hiring bar?
> 3. Anything missing that you always wish you'd asked about after interviews?"

Iterate based on feedback. When the user is satisfied, save the final template to `/mnt/user-data/outputs/` for immediate download, and tell them where to put it permanently:

> "Your template is ready. To make it available for future interview prep, save it to your templates directory:
>
> ```
> ~/interviews/templates/[position]_interview_[year].md
> ```
>
> For example: `~/interviews/templates/sre_interview_2026.md`
>
> If the directory doesn't exist yet, create it:
> ```
> mkdir -p ~/interviews/templates
> ```
>
> Next time you upload a resume and ask to prep for this role, the skill will find the template automatically."

If Filesystem MCP tools are available, offer to save it directly:
> "I can save this directly to `~/interviews/templates/` on your machine. Want me to do that?"

If the user confirms, use Filesystem tools to write the file (creating the directory if needed).

Save the template to `/mnt/user-data/outputs/` with the naming convention: `{position_snake_case}_interview_{year}.md`

## Template Creation Edge Cases

- **No JD provided, just a role name**: That's fine — the interview with the hiring manager fills the gaps. But push for specifics: "Without a JD, I'll need you to be more detailed about what this person does day-to-day."
- **JD is generic HR boilerplate**: Call it out. "This JD is pretty generic — 'team player, fast learner, etc.' Let me ask you what actually matters for this hire." Then lean harder on the interview rounds.
- **User wants to clone/adapt an existing template**: Read the existing template, identify what carries over vs. what needs to change for the new role, and ask targeted questions about the differences only.
- **User uploads a JD URL instead of a file**: Fetch the URL content and extract the JD.
- **Multiple positions at once**: Push back gently. "Each template needs its own interview — let's do one at a time. Which role is most urgent?"

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [roeibh](https://github.com/roeibh)
- **Source:** [roeibh/interviewer-kit](https://github.com/roeibh/interviewer-kit)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-roeibh-interviewer-kit-interview-prep
- Seller: https://agentstack.voostack.com/s/roeibh
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
