Interview Prep logo

Interview Prep

Community
matyasstoch
interview-prep

Use when David is interviewing a candidate for an office hire. Parses the latest candidate application CSV from ~/Downloads, builds a TLDR + flags, copies the master question list into a per-candidate file, generates 5–6 sharp custom questions, tracks asked questions + live notes during the call, and runs a post-interview debrief. Triggers on interview prep, parse the candidate, candidate TLDR, build interview questions, custom questions for this guy, mark question as asked, reset to un-asked, next candidate, compare candidates, post-interview verdict, debrief.

Overview

Publishermatyasstoch
Repositorydavid-skills
Skill nameinterview-prep
Stars
61
Forks
11
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by matyasstoch on GitHub. Read the source before you install it.

Installation

Install the Interview Prep AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/matyasstoch/david-skills/tree/main/skills/interview-prep
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/matyasstoch/david-skills.git /tmp/david-skills
mkdir -p .claude/skills
cp -r /tmp/david-skills/skills/interview-prep .claude/skills/interview-prep
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Interview Prep in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Interview Prep on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Interview Prep is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Interview Prep

Two files matter:

  1. Master question files (role-specific): work/hiring/interview-questions-{role}.md

    • One master per role (e.g., interview-questions-pa.md, interview-questions-yt-strategist.md, interview-questions-ai-dev.md).
    • Fallback: work/hiring/interview-questions.md if no role-specific file exists.
    • Generic, reusable questions only.
    • Never edited during interviews. Source of truth.
    • Numbered list 1–N.
  2. Per-candidate file: work/hiring/candidates/{firstname-lastname}.md (kebab-case)

    • Created at the start of each interview by COPYING the role-appropriate master.
    • Holds: TLDR, generic questions, custom questions, her-questions section (if relevant), notes, asked log, post-interview verdict.
    • Everything live happens in this file only.

When to Use

  • "Next candidate" / "parse the CSV" → run Parse + Init.
  • "Give me X custom questions" / "attack the gaps" → run Generate.
  • "Mark #N as asked" → run Track.
  • "Note:" / "add to notes" / any live observation → run Note.
  • "Compare candidates X and Y" / "CSV vs CSV" → run Compare.
  • "Debrief" / "interview over" / "extract my impressions" → run Post-Interview Verdict.
  • "Edit the master" → edit master only, no candidate file involved.

Procedure

1. Parse + Init candidate file

  1. Confirm the role with David if unclear (PA, YouTube strategist, AI dev, etc.).
  2. List ~/Downloads/*.csv by mtime, pick newest matching responses-*.csv.
  3. Read the entire file. Row 1 is the schema header (~30+ columns); row 2 is the answers.
  4. Build TLDR:
    • Identity: name, general location, current status
    • The good: concrete numbers, real achievements, verifiable experience
    • Yellow/red flags: evasions, vague claims, contradictions, mismatches
    • What's MISSING: dodged questions, blanks, no portfolio links
    • Bottom line: one sentence verdict
  5. If they reference a company/channel/person, WebSearch to verify. Report concisely.
  6. Create the candidate file: work/hiring/candidates/{firstname-lastname}.md (lowercase kebab-case).
    • Read the role-specific master (or fallback master).
    • Copy its full numbered list into the candidate file under ## Generic Questions.
    • If the applicant submitted return questions in the CSV (the "Do you have any questions for us?" field), add a ## Her Questions to Address (end of interview) section listing them.
    • Use the template below.
  7. Open the file in Cursor: cursor work/hiring/candidates/{name}.md.

Candidate file template

markdown
# Interview — {Full Name}

**Date:** DD-MM-YYYY
**Source CSV:** ~/Downloads/{filename}.csv

## TLDR
{Identity, the good, flags, missing, bottom line}

## Generic Questions
1. {copied from master}
2. {copied from master}
...

## Custom Questions

{added in step 2 — candidate-specific only}

## Her Questions to Address (end of interview)
{only if the applicant returned questions in the form}

1. {their question}
2. {their question}

## Notes during interview
(none captured)

## Already Asked

- ✅ {question text}
- ✅ [her] {their question} ← when David addresses one of HER questions

2. Generate custom questions

5–6 questions. Append under ## Custom Questions in the candidate file, continuing the numbering from where the generic list ended.

Rules:

  • Direct, specific, uncomfortable when warranted. No softballs.
  • Attack gaps (dodged questions, blanks, vague answers).
  • Probe inconsistencies.
  • Test whether stated experience holds up under specifics.
  • Match David's actual hiring need.
  • Add one-line italic context under each — explaining what the question probes.

If David later says "these aren't candidate-specific, they're generic": move them from ## Custom Questions to ## Generic Questions, keep their numbers. Then ask David whether to promote them to the master file too.

3. Track ✅ live (during interview)

When David says "mark #N as asked":

  1. Find #N in ## Generic Questions or ## Custom Questions.
  2. Remove that line.
  3. Append to ## Already Asked as - ✅ {question text}.
  4. DO NOT renumber. Gaps are intentional.

When David says "mark her #N as asked" / "mark #N (her question) as asked" (or generic #N is already asked → only her list has it):

  • Same flow, but log as - ✅ [her] {her question}.

When David says "add a new question 'X'": append to the active list with the next sequential number.

4. Note (during interview)

Append a bullet to ## Notes during interview in the candidate file. Terse, one bullet per insight.

Trigger words/phrases: "note:", "add to notes", "observation:", or any in-passing remark about vibe/energy/setup/professionalism/red flag/green flag. Always capture — David won't always say "note:".

5. Compare candidates (CSV vs CSV)

When David says "compare X and Y" / "CSV vs CSV":

  1. Read both source CSVs (NOT the candidate files — keep impressions out).
  2. Build a side-by-side table covering:
    • 24/7 commitment answer
    • Current status (student/full-time/etc.)
    • Travel/role-specific proof
    • Scenario answer
    • Video quality signal
    • Curiosity (# of return questions)
    • Age (if known)
    • Polish + driver's license
  3. End with a 1–2 sentence verdict on who's stronger on paper, explicitly noting interview impressions are excluded.

6. Post-Interview Verdict

When the interview ends ("interview over" / "extract my impressions" / "debrief"):

  1. Use AskQuestion to collect structured input. Default questions:
    • Overall verdict (strong yes / maybe / pass / backup)
    • Energy & vibe (high / mid / low / off)
    • 24/7 commitment (yes / verbal-only / no / unclear)
    • Top strengths (multi-select)
    • Red/yellow flags (multi-select)
    • Next step (reject / paid trial / 2nd round / wait / offer)
    • Anything else (freeform skip option)
    • Adapt the multi-select options to the role.
  2. Write a ## Post-Interview Verdict section at the bottom of the candidate file (after ## Already Asked). Use clear headers, bullet lists for strengths/flags, bold the verdict + next step.

7. Editing a master

When David says "edit the master" (specify role if ambiguous):

  • Edit the relevant work/hiring/interview-questions-{role}.md directly.
  • Master is just the numbered list — no Custom/Notes/Asked sections.
  • Do NOT touch any candidate files when editing the master.

Live Interview Mode — auto-commit + push

Trigger: Activates when David indicates the interview is actively happening (e.g. "the interview is about to start", "I'm on a call with her", "going forward", or any "mark #N as asked" / "note:" sequence in quick succession).

While in live mode, after every single edit to the candidate file (mark asked, add note, add question, etc.):

git add -A && git commit -m "interview: <terse description>" && git push

Do this immediately and silently — David needs the editor clean (no unstaged state) while focusing on the call.

Live mode ends when: David says "interview over" / "done" / runs the post-interview debrief. Before/after the interview, default to normal workflow (commit only when David asks).

Pitfalls (real failures to avoid)

  • Don't edit the master during a live interview. All live actions happen in the candidate file.
  • Don't drop reusable questions during a master edit. Many "custom" questions are role-generic. Ask David before dropping.
  • Don't renumber when marking asked. Numbers are burned. Gaps are intentional.
  • Don't restart numbering for custom questions. Generic + custom share one continuous sequence.
  • Don't soften flags in TLDRs. If the candidate is weak, say so directly.
  • Don't fabricate verification. If WebSearch finds nothing, say "couldn't verify."
  • Don't pre-fill answers. Only mark a question asked when David explicitly says so.
  • Don't lose notes by overwriting. Always Edit (append) — never Write the whole file unless reconstructing.
  • Don't auto-push outside live mode. Only auto-commit during an active interview.
  • Don't mix interview impressions into a CSV-vs-CSV compare. That defeats the purpose.
  • Don't ambiguously interpret "mark #N as asked". If both Generic #N and Her #N exist, the one still in the active list is the target. If both exist, ask.

Verification

After each operation, verify:

  • Parse + Init: candidate file exists with TLDR + Generic Questions + (Her Questions if any) + empty Custom/Notes/Asked sections.
  • Generate: new ## Custom Questions entries, numbering continues, italic context under each.
  • Track: question gone from active list, present as - ✅ ... in Already Asked, remaining numbers unchanged.
  • Note: new bullet in ## Notes, nothing else changed.
  • Compare: side-by-side table, no interview impressions, explicit "on paper" verdict.
  • Post-Interview Verdict: new section at bottom, structured fields, bolded verdict + next step.
  • Live mode commits: every edit was followed by git add -A && git commit && git push.

Frequently asked questions

What does the Interview Prep AI skill do?

Use when David is interviewing a candidate for an office hire. Parses the latest candidate application CSV from ~/Downloads, builds a TLDR + flags, copies the master question list into a per-candidate file, generates 5–6 sharp custom questions, tracks asked questions + live notes during the call, and runs a post-interview debrief. Triggers on interview prep, parse the candidate, candidate TLDR, build interview questions, custom questions for this guy, mark question as asked, reset to un-asked, next candidate, compare candidates, post-interview verdict, debrief.

Why use Interview Prep on TypingMind?

Because you install it once and use it with any model. Interview Prep is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Interview Prep in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/matyasstoch/david-skills/tree/main/skills/interview-prep. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Interview Prep?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Interview Prep?

As many as you like. As long as a model supports skills, you can use Interview Prep with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Interview Prep AI skill free?

It is published on GitHub by matyasstoch. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇