AgentStack
SKILL verified Apache-2.0 Self-run

Rehearse Qa

skill-shaishavmaisuria-research-paper-lifecycle-skills-rehearse-qa · by ShaishavMaisuria

Simulated-audience Q&A rehearsal for conference talks, thesis defenses, job talks, and poster sessions. Use when a researcher says "rehearse Q&A", "practice questions", "mock Q&A", "grill me on my paper", "what will the audience ask", "hostile questions", "defense practice", "viva prep", "anticipate questions for my talk", or "questions I hope nobody asks". Sizes a drill to the real Q&A slot, fir…

No reviews yet
0 installs
9 views
0.0% view→install

Install

$ agentstack add skill-shaishavmaisuria-research-paper-lifecycle-skills-rehearse-qa

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Rehearse Qa? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Rehearse Q&A

Drill the Q&A session before it happens. A simulated audience — hostile and curious personas calibrated to the venue — asks questions one at a time, grounded in the user's actual paper and slides; every answer gets coached into a concise, honest, answer-first response; the questions the speaker hopes nobody asks get prepared deliberately instead of dreaded vaguely.

When to use

  • "Grill me on my paper" / "rehearse the Q&A for my talk" / "mock Q&A"
  • "What will the audience ask?" / "what's the worst question I could get?"
  • "Practice my thesis defense / viva" / "prep me for job-talk questions"
  • Poster-session prep (continuous Q&A, 2-minute and 5-minute pitches)
  • After write-talk-script / make-slides — the talk is built, now the

unscripted part gets rehearsed. After simulate-reviewers — its weakness list seeds the dreaded-question inventory.

Inputs

  1. The paper (and slides/script if they exist), in any readable form.

Process them transiently — never copy paper text into this repo.

  1. The setting and slot: conference talk / lightning / keynote / poster /

defense / job talk, plus the Q&A length in minutes (ask if unknown).

  1. Optional but better: a venue profile venues/conferences/-.yml

(schema in venues/schema.yml) so the audience matches the venue family. No profile? parse-cfp can create one, or run with the generic audience.

Process

  1. Build the drill plan. Run:

`` python3 scripts/qa_drill.py --setting conference-talk --minutes 3 \ --venue venues/conferences/-.yml ``

Deterministic and offline. Emits the slot math (how many questions the live slot actually fits, how many to drill), the persona lineup with per-persona quotas (venue-family calibrated when --venue is given), the round plan, answer-time targets, and a transcript skeleton for step 6. --json for machine output; --help for all settings. Exit codes: 0 ok, 2 bad arguments or missing/unparsable profile.

  1. Re-verify the slot — mandatory. Venue profiles do NOT store talk

slots, and Q&A lengths change per year, track, and session. Check the venue's live presenter instructions (start from the profile's cfp_url and website) for slot length, Q&A minutes, and format (chaired Q&A, no Q&A for lightning, poster logistics). Rehearsing to the wrong clock trains the wrong answers; state what was verified and when.

  1. Read the paper and build the dreaded-question inventory. Mine

limitations, claims, experimental scope, assumptions, cut material, rebuttal history, odd numbers, ethics/data provenance — full checklist and the per-question prep-card template in [references/dreaded-questions.md](references/dreaded-questions.md). Rank 8–15 questions by probability x damage and build an honest answer card for each. If a weakness is fixable before the talk, say so — fix beats rehearsal.

  1. Run the drill, one question at a time. Follow the round plan

(warm-up → hostile gauntlet → dreaded finale → rapid-fire → curveballs). Ask in persona, grounded in the actual paper/slides, then WAIT for the user's answer before continuing — never dump a question list. Persona voices, follow-up behavior, and venue/setting calibration are in [references/audience-personas.md](references/audience-personas.md). Prior-work rule: a drill question may only cite real papers verified via find-papers + verify-citations, otherwise it stays nameless ("suppose someone claims prior work did X"). Never invent a citation.

  1. Coach every answer. After each user answer, break persona and give

the five-part feedback (verdict / what worked / the one fix / a model answer built only from what the paper supports / re-drill if it failed) per [references/answer-coaching.md](references/answer-coaching.md). Coach the answer-first template: headline sentence, one piece of evidence, stop. Re-ask hard-failed questions later — an answer is drilled only when it lands twice.

  1. Grade the transcript deterministically. Record the exchanges in the

skeleton from step 1 (the user's answers as spoken/typed), then run:

`` python3 scripts/grade_answers.py transcript.md --target 45 --max 75 ``

(Targets come from the drill plan.) Flags per answer: estimated speaking time vs target/cap, unanswered questions, hedge openers, filler density, and buried answers to yes/no questions. Exit codes: 0 ready, 1 re-drill needed, 2 bad input. --json for machine output.

  1. Deliver the readiness report. Summarize: questions that land,

questions needing another round (with the one fix each), the dreaded- question crib sheet (question → memorized headline → one number), and any "fix the slide instead" items routed back to make-slides / write-talk-script.

Output

An interactive drill session plus, at the end (in chat; written to a file only if the user asks): the graded transcript report from grade_answers.py, the dreaded-question crib sheet for morning-of review, and the re-drill list. No predictions — a drilled answer is preparation, not a guarantee of what gets asked.

Adapt to your discipline

Audience lineups are keyed on the venue family: field in scripts/qa_drill.py (FAMILY_LINEUPS) — fork and add your community's audience (e.g. a humanities seminar respondent, a clinical grand-rounds panel) plus any new personas in PERSONAS and [references/audience-personas.md](references/audience-personas.md). The settings table (SETTINGS) takes new formats the same way.

Guardrails

  • Honest answers only. Never coach wording that hides, minimizes, or

misrepresents a limitation or result; decline "help me avoid admitting X" framings and offer the concede-and-scope answer instead (it also performs better). Fixable weaknesses should be fixed, not rehearsed around.

  • Never fabricate citations — in questions or model answers. Prior-work

references in drills go through find-papers + verify-citations or stay nameless.

  • Never put claims in the user's mouth the paper cannot support; model

answers use only the paper's own evidence.

  • Re-verify slot/session facts against the live venue pages (step 2 is not

optional); profiles never carry talk-slot ground truth.

  • Process the paper transiently; never store paper text in this repo.
  • Never contact session chairs, committees, or any submission/conference

system on the user's behalf.

  • This is rehearsal, not prophecy: never claim the drilled questions are

what will actually be asked, and never predict talk reception.

Source & license

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

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

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.