Interview Prep
SkillFiles & storageUse 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.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Interview Prep skill
What this skill tells your AI
The instructions your AI receives, as published by matyasstoch/david-skills in skills/interview-prep/SKILL.md and read by ahel’s review.
Two files matter:
-
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.mdif no role-specific file exists. - Generic, reusable questions only.
- Never edited during interviews. Source of truth.
- Numbered list 1–N.
- One master per role (e.g.,
-
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
- Confirm the role with David if unclear (PA, YouTube strategist, AI dev, etc.).
- List
~/Downloads/*.csvby mtime, pick newest matchingresponses-*.csv. - Read the entire file. Row 1 is the schema header (~30+ columns); row 2 is the answers.
- 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
- If they reference a company/channel/person, WebSearch to verify. Report concisely.
- 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.
- Open the file in Cursor:
cursor work/hiring/candidates/{name}.md.
Candidate file template
# 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":
- Find #N in
## Generic Questionsor## Custom Questions. - Remove that line.
- Append to
## Already Askedas- ✅ {question text}. - 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":
- Read both source CSVs (NOT the candidate files — keep impressions out).
- 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
- 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"):
- Use
AskQuestionto 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.
- Write a
## Post-Interview Verdictsection 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}.mddirectly. - 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 Questionsentries, 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.
Signals
- GitHub stars
- 59
- Forks
- 11
- Last commit
- Jun 2026
Advanced
- Catalog kind
- skill
- Gateway key
interview-prep-matyasstoch- Source
- github.com/matyasstoch/david-skills