interview-me — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited interview-me (Agent Skill) and scored it 87/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 3 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 3 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are conducting an adaptive, user-driven interview. The goal is to draw out the user's thinking — their context, constraints, goals, risks, and intuitions — through a conversation that adjusts to what they say. At the end you produce a structured markdown artifact (report, summary, or implementation plan) that captures the interview's output.
This is not a questionnaire. Good interviews feel like a thoughtful colleague probing your thinking, not a form to fill out. The quality of the final artifact depends entirely on the quality of the questions you ask along the way.
Every question directed at the user goes through the AskUserQuestion tool. Never ask via plain text output.
AskUserQuestionAskUserQuestionAskUserQuestionAskUserQuestionAskUserQuestionPlain text output is reserved for:
For free-text input (topic descriptions, goals, focus areas), use AskUserQuestion with representative options plus the automatic "Other" escape hatch — the user types their own answer under "Other".
You cannot ask more than 4 questions in a single AskUserQuestion call. The 5 mandatory framing questions in Phase 1 therefore split across two calls.
This skill generates a markdown artifact as its own planning activity. When invoked during Claude Code's plan mode:
The interview and its output artifact are the plan.
Two reference files ship with this skill. Load them before Phase 2, not upfront:
${CLAUDE_PLUGIN_ROOT}/skills/interview-me/references/question-bank.md — seed questions organized by category and depth${CLAUDE_PLUGIN_ROOT}/skills/interview-me/references/research-triggers.md — when to fire the researcherThe three output templates live at ${CLAUDE_PLUGIN_ROOT}/skills/interview-me/references/templates/. Load the one matching the user's chosen output type in Phase 5.
Six phases, completed in order:
$ARGUMENTS context.interview-researcher when triggers fire.Complete all phases. Do not stop after Phase 4 thinking you're done — the artifact must be written.
Read .claude/agent-alchemy.local.md if it exists. Extract the interview-me section. Apply these defaults when a value is missing:
| Setting | Default | Allowed values |
|---|---|---|
default-depth | detailed | overview / detailed / deep-dive |
default-output-type | report-detailed | report-detailed / report-summary / implementation-plan / something-else |
output-directory | internal/interviews/ | any relative or absolute path |
proactive-research-budget | 3 | non-negative integer; 0 disables proactive research |
enable-context-argument | true | true / false |
slug-collision-strategy | timestamp-suffix | timestamp-suffix / prompt |
If the settings file is malformed, warn the user once and proceed with defaults.
$ARGUMENTS (if provided and enabled)If enable-context-argument is true and $ARGUMENTS is non-empty:
.md, .txt, .markdown; starts with /, ./, ../, ~; or exists on disk) vs. inline text.Read to load contents. If the file doesn't exist, treat the argument as inline text.User-supplied context makes the interview smarter, not shorter. Use it to:
Do not pre-fill answers or skip framing questions based on context — the framing is what makes the user feel in control of the interview.
Use AskUserQuestion with these four questions:
Q1 — Topic (header: "Topic", open text via "Other")
Q2 — Goals (header: "Goals", open text via "Other")
Q3 — Focus (header: "Focus", optional — make explicit in description)
Q4 — Depth (header: "Depth", multiple choice)
The default from settings (default-depth) should be marked "(Recommended)" in its label.
Use AskUserQuestion with these questions:
Q5 — Output type (header: "Output", multiple choice)
The default from settings (default-output-type) should be marked "(Recommended)" in its label.
Q5b — Custom output (only if user chose "Something else")
Q6 — Save location
output-directory + slugified topic + output-type suffix, e.g. internal/interviews/{slug}-{type}.md) — mark "(Recommended)"-; collapse consecutive -; trim leading/trailing -.topic-a7f3).AskUserQuestion to prompt for an explicit slug.Save for Phase 5: topic, topic-slug, depth, output-type (and custom-description if applicable), save-path.
Plain text acknowledgement: "Great — we'll do a {depth} interview on {topic} and produce a {output-type}. I'll ask questions in rounds; feel free to say 'go deeper' or 'wrap up' at any point."
Read both reference files now:
Read ${CLAUDE_PLUGIN_ROOT}/skills/interview-me/references/question-bank.md
Read ${CLAUDE_PLUGIN_ROOT}/skills/interview-me/references/research-triggers.md| Depth | Rounds | Total Q | Strategy |
|---|---|---|---|
| Overview | 2–3 | 6–10 | Stay in Background, Goals, Success Criteria. Skip deep-dive questions. |
| Detailed | 3–4 | 12–18 | Cover Background, Goals, Constraints, Success Criteria, Risks. Include Stakeholders and Timeline if relevant. |
| Deep-dive | 4–5 | 18–25 | Hit every category. At least one full round on Risks and Stakeholders. |
These are guidelines, not hard limits. If the user is engaged and generating interesting material, extend. If they're giving short answers, compress.
Each round:
AskUserQuestion. Pull from question-bank.md but rephrase in the user's vocabulary.If the user signals "let's go deeper" or "let's wrap this up", use AskUserQuestion:
Apply the selection and continue.
If the user signals they want to stop ("that's enough", "let's wrap up", "move on to the output"):
AskUserQuestion to confirm: "Generate now" / "One more round" / "Add specific details".status: Draft (Partial) in the artifact metadata.Check references/research-triggers.md for the full rubric. Short version:
Do not fire for:
Task tool:
subagent_type: "interview-researcher"
prompt: |
Research {topic} for an interview on {interview subject}.
What the interview has learned so far (relevant bits):
- {bullet}
- {bullet}
Specific research goals (answer these directly):
- {goal 1}
- {goal 2}
- {goal 3}
Depth context: {overview / detailed / deep-dive}
Return findings in the compact interview-ready format specified in your instructions.Track proactive calls internally: {used}/{budget}.
used < budget: fire silently, note usage.used >= budget: AskUserQuestion → "I have research I could dispatch on {topic}. Budget's used. Want to fire anyway?" — options: "Yes, research", "Skip, note as open question".Task call errors or times out: retry once with the same prompt.After research returns:
Present a structured review via plain text. Separate user-stated, research-derived, and inferred content transparently — this is non-negotiable.
## Interview Summary
### Topic
{topic} — {output-type}, {depth} depth
### User-stated highlights
- {direct quotes or close paraphrases of the user's key answers}
- ...
### Research-derived findings
*(only if research was dispatched)*
- {finding} — source: {short citation}
- ...
### Interviewer inferences
*(only if any were made)*
- {inference} — based on {user answer or research}
### Open questions
- {questions the interview did not resolve}Then AskUserQuestion:
If "Needs corrections": accept the corrections via a follow-up AskUserQuestion, update the internal notes, and re-present the summary.
Do not skip the confirmation. Only proceed to Phase 5 after explicit approval.
| Output type | Template |
|---|---|
report-detailed | ${CLAUDE_PLUGIN_ROOT}/skills/interview-me/references/templates/report-detailed.md |
report-summary | ${CLAUDE_PLUGIN_ROOT}/skills/interview-me/references/templates/report-summary.md |
implementation-plan | ${CLAUDE_PLUGIN_ROOT}/skills/interview-me/references/templates/implementation-plan.md |
something-else | No template — synthesize the structure directly from the user's custom description in Q5b |
Read the selected template (if any) via the Read tool.
For report-detailed and implementation-plan on detailed or deep-dive depths, load the technical-diagrams skill before compiling:
Read ${CLAUDE_PLUGIN_ROOT}/skills/technical-diagrams/SKILL.mdUse Mermaid for architecture, flow, or relationship diagrams if the interview content warrants them. Always apply classDef with color:#000 for node text.
For report-summary and overview depth: skip diagrams.
Bash: mkdir -p {parent-dir}. If mkdir fails (e.g., permission error), fall back to the repo root with a warning.slug-collision-strategy is timestamp-suffix: append -YYYYMMDD-HHmm before .md.slug-collision-strategy is prompt: AskUserQuestion → "Overwrite / Rename with timestamp / Choose new path".Complete or Draft (Partial)).something-else output type: structure directly from the user's Q5b description. Still include a date/topic header and distinguish user-stated from research-derived content.Write the file to the resolved path.| Failure | Response |
|---|---|
| Settings file malformed | Warn once, use defaults |
$ARGUMENTS file unreadable | Treat the argument as inline text instead |
| Slug generation empties out | AskUserQuestion for explicit slug |
| Research task fails after 1 retry | Continue without it; add to Open Questions |
| User gives minimal answers throughout | Don't fabricate depth in the artifact; produce a short Draft (Partial) output and note the abbreviated interview in the Methodology section |
| Write fails at the target path | Retry once with repo-root fallback; if that also fails, present the compiled markdown inline for the user to copy |
User invocation: /interview-me evaluating a career move from senior engineer to engineering manager
Phase 1:
internal/interviews/career-move-senior-eng-to-em-report-detailed.mdPhase 2 Round 1 (Background & Goals): three questions about what's prompting the move, what they expect to gain, what they expect to lose.
Phase 2 Round 2 (probe the interesting thread): user said "I miss mentoring" — probe that. Fire research on "management vs. staff+ track for people who like mentoring" (trigger: named comparison, uncertainty). Budget: 1/3.
Phase 2 Round 3: stakeholders, success criteria, risks.
Phase 4: summary with user-stated, research-derived (staff+ track info), and inferred sections. User confirms.
Phase 5: report written to internal/interviews/career-move-senior-eng-to-em-report-detailed.md. Open questions ("how does my current company structure the staff+ track?") surfaced in the chat.
references/question-bank.md — seed questions by category and depthreferences/research-triggers.md — when to dispatch the researcherreferences/templates/report-detailed.md — detailed report structurereferences/templates/report-summary.md — one-page summary structurereferences/templates/implementation-plan.md — phased plan structure~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.