Communitygithub.com

the-rehearsal

Rehearse any important meeting before it happens. Predicts how the conversation will go, then builds a rehearsal kit from the prediction - the script, a two-voice audio talk track, a video with burned-in subtitles, a subtitle file and a flip-through presentation with one slide per talking section. Use whenever someone is preparing for a job interview, sales or discovery call, negotiation, pitch, investor or board update, performance review or any high-stakes conversation, or asks for a mock interview, role-play, practice run, talk track, call prep, or "how will this meeting go", even if they never mention audio, video or slides.

What is the-rehearsal?

the-rehearsal is a Claude Code agent skill that rehearse any important meeting before it happens. Predicts how the conversation will go, then builds a rehearsal kit from the prediction - the script, a two-voice audio talk track, a video with burned-in subtitles, a subtitle file and a flip-through presentation with one slide per talking section. Use whenever someone is preparing for a job interview, sales or discovery call, negotiation, pitch, investor or board update, performance review or any high-stakes conversation, or asks for a mock interview, role-play, practice run, talk track, call prep, or "how will this meeting go", even if they never mention audio, video or slides.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Arash-yazdani/The-Rehearsal-Skill/tree/main/skills/the-rehearsal

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

The Rehearsal

Predict the meeting, then let the person hear, watch and flip through it before it happens.

OutputFileWhat it is
Predictionscript.mdThe likely conversation, one turn per line, with slide markers
Talk trackout/rehearsal.mp3Two voices, one for each side
Videoout/rehearsal.mp4One slide per talking section, timed to the audio, subtitles burned in
Subtitlesout/rehearsal.srtSentence-level captions with speaker names
Presentationout/deck.htmlOffline flip-through deck; N shows each section's exact lines

Paths below are relative to this skill's folder. Work in a project folder of your own (script.md, slides/, out/).

1. Gather the meeting

Collect, before writing anything: who the counterpart is (role, background, what they own), the meeting's goal, length and format, the person's own facts (resume, numbers, plan, approved answers), and what this counterpart is likely to probe. Read what the person already has: call sheets, plans, research, emails, job descriptions.

Ask only for facts that would change the script. A question the person must answer from their own experience becomes a Prepare item; never fill it with an invented answer. The rehearsal is only worth running if the person's lines are true: a confident made-up number in rehearsal turns into a made-up number in the meeting.

2. Predict the conversation

Write script.md in the format in references/script-format.md.

  • Order it like the real meeting: opening, the counterpart's framing, the person's background, probing questions, the person's plan or pitch, hard questions, logistics, the person's questions, the close.
  • The counterpart's lines are a prediction. Say so in the script header. Where you would otherwise invent facts about their company, keep their line general ("I can't share the terms").
  • The person's lines use only facts they supplied or documents they own, and their approved wording verbatim where they have it.
  • Answer first, give one example, stop. One to three sentences per answer suits most meetings.
  • Write numbers the way people say them ("5 million", "161 percent") so the voices read them naturally.
  • Put <!-- slide: id --> before the turn where each talking section starts: usually one section per question.
  • End the file with a Prepare list: the questions you could not answer from facts.

Optional stress test before generating media: have one or two reviewers play the counterpart and the counterpart's boss (as subagents if you can start them) and critique the person's answers or plan. Apply the changes the facts support; list the rest for the person.

3. Voice it

pip install -r requirements.txt          # edge-tts, pydub; ffmpeg must be installed
python scripts/make_audio.py script.md out --voice "Dana=en-US-AvaNeural" --voice "Sam=en-US-AndrewNeural"

Give the two sides clearly different voices (edge-tts --list-voices lists them). The script writes out/rehearsal.mp3 and out/timeline.json with sentence timings for the subtitles. Edge drops a few requests at random; the script retries.

4. Draw one slide per talking section

Write slides/<id>.html for every slide marker, in the format in references/slide-format.md. Each slide turns its section into a picture: the question as the title, then the answer as a timeline, numbered steps, a comparison, a bar chart of the real numbers, a decision path or a term table. Put the exchange, word for word, in the slide's <aside> speaker notes. Add a callout wherever the person must be careful ("Prepare: the timeline from yes to signature"), because the deck doubles as a study aid.

5. Render the video and the deck

python scripts/render_video.py slides out --fonts "https://fonts.googleapis.com/css2?family=..."
python scripts/build_deck.py slides out --fonts "https://fonts.googleapis.com/css2?family=..." --title "Rehearsal: <meeting>"

render_video.py needs Google Chrome or Chromium (set CHROME= if it is not found) and ffmpeg built with libass. --fonts is the one Google Fonts URL the slides use; leave it out when the slides use system fonts. Where a Slides artifact type is available, the same slide files can be published there as a shareable deck.

6. Check, then hand over

  • Pull one frame per slide (ffmpeg -ss <seconds> -i out/rehearsal.mp4 -frames:v 1 frame.png) and look at it: text inside its boxes, nothing under the subtitle band, fonts loaded.
  • Confirm the video length matches the audio length.
  • Hand over the files with three plain caveats: the counterpart's lines are a prediction; the Prepare list needs the person's own facts; the script text went to Microsoft's speech service.

Privacy

edge-tts sends the script text to Microsoft's speech service. Before generating audio, tell the person if the script holds anything sensitive (pay, health, unannounced deals or names) and offer to leave it out of the voiced version. No API keys or paid services are used.

Files

  • scripts/make_audio.py - script to timed two-voice MP3 and timeline.json
  • scripts/render_video.py - slides plus audio to subtitled MP4 and SRT
  • scripts/build_deck.py - slides to an offline flip-through deck.html
  • references/script-format.md - how to write script.md
  • references/slide-format.md - how to write a slide

Related Skills