agentsclimarketplace

Interview

Skill mifunedev/skills/skills/interview

A portable, cross-agent skill library for Claude Code and compatible AI agents.

Install
npx -y skills add mifunedev/skills --skill interview

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Adaptive pre-work clarifier. Picks 2–4 task-specific questions via AskUserQuestion, echoes a brief scope summary, then proceeds. Refuses for trivial tasks. TRIGGER when: /interview invoked explicitly, OR before non-trivial work where scope/intent/constraints are ambiguous AND the user hasn't already specified them.

SKILL.md

9.8 KB, as published. Nobody here has run it

Interview

Resolve scope ambiguity before non-trivial work by batching 2–4 task-specific multiple-choice questions through AskUserQuestion, then proceeding with a short scope brief that reflects the answers.

When to use

  • /interview invoked explicitly (with or without a task description).
  • Proactively, before non-trivial work where scope, intent, or constraints are ambiguous AND the user hasn't already specified them in the prompt.

The structured tool (AskUserQuestion) earns its keep when the user can resolve scope in one click rather than a paragraph of free-text Q&A.

When NOT to use

Skip — and announce the skip — when any of these hold:

  • Trivial edits — single-file typo, comment-only edit, format/whitespace pass.
  • Already specified — the user's prompt already names goal + scope + constraints + acceptance criteria.
  • Follow-up turn — same task, context already established earlier in the conversation.
  • Trivial CLI invocations/release, /ci-status, gh pr list, etc.
  • Plan approval moments — that's ExitPlanMode, not this skill. AskUserQuestion is for picking among options, not approving a finished plan.
  • About to run /prd or /ship-spec — those have their own clarifier. For v1 the user chooses one or the other; do not stack.

Instructions

1. Classify trivial vs non-trivial

If the task is trivial (per § When NOT to use), announce the skip and continue:

Skipping interview — this looks trivial. Proceeding directly.

Do not refuse silently. The skip is a signal, not an absence.

2. Extract what's already known

Read the conversation context. List, internally, what's already specified — goal, files touched, mode, constraints, acceptance. Do not re-ask anything the context already answers. A question whose answer is already in the prompt is a tell that the model didn't read.

3. Pick 2–4 questions

Each question must clear the bar in § Question quality bar below. If you can't write 2 that clear the bar, ask 1 (sequential calls are fine) or skip and announce why. Don't quota-fill to reach 4.

4. Issue one batched AskUserQuestion call

Pass all questions in one tool call. Each options array has 2–4 entries; never 1, never 5+. The user UI auto-adds "Other" — do not add it manually. Use multiSelect: true only when the choices are genuinely not mutually exclusive.

Sequential calls are the rare exception: only when a later question's option set genuinely depends on an earlier answer (e.g., "which file?" depends on "which mode?").

5. Echo a 2–3 sentence scope brief, then proceed

After answers come back, write a 2–3 sentence brief that:

  • Names the goal, the chosen path, and any non-default constraints from the answers.
  • Surfaces any stated assumption you're making that wasn't in an answer.
  • Has no plan-approval gate. Brief, then work.

If the user types STOP during the brief, halt — do not finish the thought, do not start the work.

6. Memory Protocol

Append to memory/<UTC-date>/log.md:

## interview -- HH:MM UTC
- **Result**: OP | SKIPPED-TRIVIAL | INTERRUPTED
- **Questions**: <count>
- **Brief**: <one-line summary of the scope brief>
- **Observation**: <one sentence on whether the questions landed (changed the work, or were noise)>

Then run the qualify/improve loop per context/rules/memory.md. If a question pattern landed especially well or poorly across runs, that may merit a line in memory/MEMORY.md.

Question quality bar

Every question must satisfy all of:

  • Decision-shaping — the answer changes what gets built, not how it's described. If both options lead to the same code, it's not a question.
  • Task-specific options — options reference real files, components, modes, or thresholds from this task. Not "small / medium / large". Not "yes / no / maybe".
  • Mutually exclusive — options don't overlap (or set multiSelect: true and acknowledge they don't).
  • Gut-answerable — the user shouldn't need to read code to decide. If they would, the question is too deep — ask a shallower one first or do the reading yourself.
  • 2–4 options — never 1 (not a question), never 5+ (decision paralysis). "Other" is automatic.
  • Generic-filler ban — refuse to emit: "what are your constraints?", "any preferences?", "any concerns?", "what's your goal?". These are tells the model didn't think hard enough about this task.

Anti-patterns

  • Generic filler. Banned (see above). If your question would work verbatim on a different task, it's filler.
  • Re-asking the answered. Context already named the file or mode; don't ask again.
  • Quota-filling to 4. Two sharp questions beat four mushy ones.
  • Plan-approval via AskUserQuestion. Use ExitPlanMode. The two tools are not interchangeable.
  • Interviewing trivial tasks. Typos, format passes, single-command invocations. Announce the skip and proceed.
  • Templated question banks. A "standard 4 questions to ask before any refactor" defeats the adaptive thesis. Pick questions from this task.
  • Asking, then ignoring. If the brief doesn't reflect the answers, the interview was theater.
  • Brief longer than the answers. The brief is 2–3 sentences. If you need a paragraph, you're writing a plan — use ExitPlanMode.
  • Smuggled assumptions. If the brief asserts something the user didn't pick, either surface it as a stated assumption ("Assuming X — say so if not") or ask another question.
  • Ignoring STOP. If the user interjects "STOP" while you're writing the brief, halt. Do not finish the thought; do not start the work.

Examples

Example 1 — refactor request

Invocation: /interview refactor the audit skill

BAD (generic filler):

What are your constraints for this refactor? Options: Time-constrained / Quality-first / Other

GOOD (task-specific):

AskUserQuestion:
  question: "Which axis of the audit skill is most worth changing?"
  header: "Refactor axis"
  options:
    - label: "Sub-agent prompts"
      description: "Tighten PM/Implementer/Critic/Explorer briefs to reduce overlap"
    - label: "Synthesis step"
      description: "Replace the tier-ranked report with a different output shape"
    - label: "Trigger conditions"
      description: "Change when the skill fires (manual vs heartbeat vs both)"
  multiSelect: false

  question: "What does success look like?"
  header: "Success signal"
  options:
    - label: "Fewer duplicate findings"
      description: "Sub-agents stop reporting the same issue under different framings"
    - label: "Faster wall-clock"
      description: "Audit completes meaningfully sooner without losing coverage"
    - label: "Higher action-rate"
      description: "More of the top-3 recommendations actually get worked on"
  multiSelect: false

Scope brief (after answers come back):

Refactoring the audit skill to tighten the four sub-agent prompts so duplicate findings drop. Holding wall-clock and trigger conditions constant. Will land as edits to .claude/skills/harness-audit/SKILL.md only.

Example 2 — new feature

Invocation: /interview add a "dry-run" mode to /release

BAD (generic filler):

Any concerns about backward compatibility? Options: Yes / No / Maybe

GOOD (task-specific):

AskUserQuestion:
  question: "What does --dry-run skip?"
  header: "Skip set"
  options:
    - label: "Only the push + tag"
      description: "Compute version, write CHANGELOG, commit locally — stop before pushing"
    - label: "Push + tag + CHANGELOG promote"
      description: "Compute version only, print intended actions, no file changes"
    - label: "Everything except CI poll"
      description: "Do the full release but skip the CI verification step"
  multiSelect: false

  question: "How does the user invoke it?"
  header: "Flag shape"
  options:
    - label: "--dry-run flag"
      description: "/release --dry-run, default off"
    - label: "DRY_RUN env var"
      description: "DRY_RUN=1 /release, no flag"
    - label: "Separate skill"
      description: "/release-preview as its own SKILL.md"
  multiSelect: false

Scope brief:

Adding --dry-run to /release that computes the version and prints intended actions, but writes no files and runs no git operations. Implementation goes in .claude/skills/release/SKILL.md only.

The contrast is the teaching tool: same axis, but the GOOD form's options would only make sense for this task.

Reference

AskUserQuestion contract

FieldShapeNotes
questionstringFull question, ends in ?
headerstring ≤12 charsShort chip/tag shown above the question
optionsarray, 2–4 entriesEach has label (1–5 words) + description (one line, context/tradeoff). No Other — auto-added.
multiSelectbool, default falsetrue when choices aren't mutually exclusive
questionsarray, 1–4 entriesMultiple questions batch into one tool call

When AskUserQuestion is the wrong tool

SituationUse instead
User needs to approve a finished planExitPlanMode
Question requires free-text input (a filename, a number)Plain prose question in chat
Question is one of many in a deep treeSequential AskUserQuestion calls — but reconsider whether you should be reading code first
Want to confirm before a destructive actionPlain prose confirmation in chat

Future skills wanting structured elicitation can copy the option-shape contract above — /interview is the in-tree reference pattern.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.