Agent skill

Synthetic Coaching Session Generator

by glebis in glebis/claude-skills

Writes fictional but realistic coaching or therapy session transcripts for evals, demos and few-shot examples, in several modalities and export formats.

MITAuto-check passedTesting & QA

Install Synthetic Coaching Session Generator

skills CLI
$ npx skills add glebis/claude-skills --skill synthetic-session-generator -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install glebis/claude-skills synthetic-session-generator --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/glebis/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/synthetic-session-generator .claude/skills/synthetic-session-generator && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
synthetic-session-generator
GitHub stars
390
Token cost
~2.9k tokens
SKILL.md length
1,331 words
Files
15 (incl. scripts, references, assets)
Skills in repo
92
Repo updated
First seen
Licence
MIT

At a glance

Writes fictional but realistic coaching or therapy session transcripts for evals, demos and few-shot examples, in several modalities and export formats.

  • Works in 6 steps: Setup mode (configure defaults) → Gather the generation spec → Build the session skeleton, then write… → …
  • Creating test data for a session summarizer or other coaching analysis tool
  • SKILL.md covers Purpose, When to Use, Workflow and Limitations and Constraints
  • Runs Python scripts from its folder; calls python3

What it does

The skill produces invented coach-and-client or therapist-and-client dialogue that reads like a recorded session while staying clearly synthetic; every output is watermarked. Realism rests on persona consistency, so a client keeps the same voice, history and presenting issues across a session arc, and on modality fidelity to ICF/GROW coaching, CBT, IFS parts work or ACT with motivational interviewing. Results can serve as eval data with ground-truth labels, demos without real client data, or few-shot material.

A setup mode stores defaults for language, modality and session length in `config.json` using `scripts/setup_config.py`, and later runs of `scaffold_session.py` inherit them unless flags override. Other scripts convert formats and make a card. Exports include Fathom or Granola transcript style, plain dialogue, structured JSON and Obsidian markdown, with templates, persona and modality references and a realism guide alongside. It is not for analyzing or summarizing a real transcript.

When your agent uses it

  • Creating test data for a session summarizer or other coaching analysis tool
  • Building demo transcripts without exposing real client conversations
  • Producing few-shot dialogue examples for a coaching or therapy assistant
  • Generating a series of sessions that keep the same client persona

Example prompts

  • “Generate a synthetic CBT session about exam anxiety and export it as structured JSON.”
  • “Make three mock coaching calls with the same client persona using the GROW model.”
  • “Set my defaults to Spanish, IFS and fifty-minute sessions.”
  • “Create demo transcripts in Fathom style so I can test my session summarizer.”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Setup mode (configure defaults)
  2. Gather the generation spec
  3. Build the session skeleton, then write the dialogue
  4. Render formats (always include markdown)
  5. (Optional) Case-conceptualization card with portrait
  6. Watermark and save

What it can do on your machine

Read from SKILL.md and the folder at commit 3b88261. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 5 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Synthetic Coaching Session Generator loads about 2.9k tokens when it runs, and up to ~5.4k if it reads all its reference files. Until then it costs about 187 tokens; SKILL.md has 1,331 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~187
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from glebis/claude-skills at commit 3b88261, republished under its MIT licence (© glebis). 1,331 words, ~2,898 tokens.

Download SKILL.mdSave it as .claude/skills/synthetic-session-generator/SKILL.md (or your agent's skills folder). This skill also uses 14 other files; get the full folder from GitHub.
name
synthetic-session-generator
description
This skill should be used to generate realistic, persona-consistent synthetic coaching and therapy session transcripts for evals, demos, and training data. It produces fictional but believable coach/client (or therapist/client) dialogue grounded in a chosen modality (ICF/GROW coaching, CBT, IFS parts work, ACT/motivational interviewing) and exports to Fathom/Granola transcript style, plain dialogue, structured JSON, or Obsidian markdown. Triggers on requests like "generate a synthetic coaching session", "make fake therapy transcripts for evals", "create demo session transcripts", "synthetic CBT dialogue", "persona-consistent coaching transcript", "test data for my session summarizer", or "mock coaching call".

Synthetic Session Generator

Purpose

Generate fictional but believable coaching/therapy session transcripts that read like real recorded sessions, while remaining clearly synthetic. Outputs feed three jobs: eval datasets (with ground-truth labels to benchmark summarizers and analyzers), product demos (realistic sessions without exposing real client data), and training/prompt examples (few-shot material for a coaching or therapy assistant).

Realism comes from two disciplines: persona consistency (a client speaks the same way, carries the same history and presenting issues across a session arc) and modality fidelity (the practitioner uses the techniques, question forms, and pacing of the chosen framework). Every output is watermarked as synthetic so it can never be mistaken for a real clinical record.

When to Use

Use when a user asks for fake/synthetic/mock/demo coaching or therapy transcripts, eval or test data for session-analysis tools (e.g. the coaching-session-summarizer), few-shot dialogue examples, or persona-consistent session series. Do not use to analyze or summarize a real transcript — that is the job of coaching-session-summarizer or transcript-analyzer.

Workflow

Step 0 — Setup mode (configure defaults)

When the user wants to configure the skill ("setup", "set my defaults", "always use Russian / IFS / 50-minute sessions"), run setup mode. Offer the three choices via AskUserQuestion, then persist them:

  • Language — output language for the transcript (en, ru, de, es, fr, pt, it, nl).
  • Modality — default framework (icf-grow, cbt, ifs, act-mi).
  • Session duration — minutes (e.g. 25 / 50 / 80); mapped to a turn budget (~0.6 turns/min).
bash
python3 scripts/setup_config.py --language ru --modality cbt --duration 50 --show
python3 scripts/setup_config.py --show     # view current defaults

This writes config.json in the skill directory. Later scaffold_session.py runs inherit these defaults, so the user only specifies what differs (e.g. persona and session position). Per-run flags always override the saved config.

Step 1 — Gather the generation spec

Honour the setup-mode defaults (Step 0); only ask for parameters the user hasn't already fixed.

Collect (or infer sensible defaults for) these parameters. Ask only for what materially changes the output; default the rest.

  • Use case: eval / demo / training (drives whether ground-truth labels are emitted).
  • Modality: icf-grow, cbt, ifs, or act-mi. See references/modalities.md for the technique cheat-sheet, signature moves, and vocabulary of each.
  • Persona: pick an existing persona from references/personas.md, or generate a new one and persist it back into that file so a session series stays consistent. A persona = name, demographics, presenting issue, history, speech register, defenses/resistances, goals.
  • Session position: intake / early / mid-arc / breakthrough / rupture-and-repair / closing. This sets emotional tone and what prior material is referenced.
  • Format: fathom, plain, json, or markdown (see Step 3). Markdown is always produced.
  • Language: defaults from setup config; pass --language. Author all dialogue, persona voice, and the watermark-adjacent text in that language; keep eval tag keys in English.
  • Duration / length: --duration <minutes> (preferred — maps to a turn budget) or the coarse --length (short ~15 / standard ~30 / long ~50+).
Step 2 — Build the session skeleton, then write the dialogue

Run the scaffolding script to turn the spec into a structured skeleton (phases, beat list, turn budget, JSON shell, and the synthetic watermark):

bash
python3 scripts/scaffold_session.py --modality cbt --persona maya --position mid-arc \
    --length standard --format json --out /tmp/session_skeleton.json

Then write the actual dialogue by hand (model-authored), filling each beat. The script provides structure and guardrails; Claude provides the natural, non-templated language. Key realism rules (full list in references/realism_guide.md):

  • Open with logistics/check-in small talk; never jump straight to deep work.
  • Give the client disfluencies, hedges, self-interruption, and at least one moment of resistance or avoidance. Real clients don't deliver clean insights on cue.
  • Keep the practitioner in-modality: CBT uses thought records and Socratic questioning; IFS uses parts language and "How do you feel toward that part?"; GROW moves Goal→Reality→Options→Will; ACT/MI uses values, defusion, and change talk. Avoid mixing modalities unless depicting eclectic practice deliberately.
  • Maintain persona voice: vocabulary, sentence length, and recurring metaphors stay stable.
  • End with a summary, a between-session task/experiment, and scheduling.
Step 3 — Render formats (always include markdown)

Author once in the JSON turn structure, then convert. Always render the markdown format (it is the canonical, human-readable artifact); add any other formats the user asked for.

bash
# markdown is always produced:
python3 scripts/convert_format.py --in /tmp/session.json --to markdown --auto-timestamps --out session.md
# plus any requested extras:
python3 scripts/convert_format.py --in /tmp/session.json --to fathom --auto-timestamps --out session.txt
  • markdown (always) — Obsidian note with YAML frontmatter (persona id, modality, session position, synthetic flag) above the transcript.
  • fathom — speaker-labeled, timestamped lines matching the Fathom/Granola export style, so the transcript flows through existing skills (coaching-session-summarizer, transcript-analyzer).
  • plain — simple Coach: / Client: turn-taking markdown.
  • json — the source itself: turns with speaker, timestamp, text, and eval tags (technique, emotion, phase); for evals, also the ground_truth block.

Timestamps. Do not hand-invent timestamps. Pass --auto-timestamps so the converter emulates them from each turn's word count (~150 wpm + a short inter-turn gap), keeping timing internally consistent. Tune pace with --wpm. See assets/templates/ for a reference example of each format.

Step 4 — (Optional) Case-conceptualization card with portrait

When the user wants a card summarizing the case (for demos, persona bibles, or eval context), build it from the same session JSON and pair it with a generated portrait:

bash
python3 scripts/make_card.py --in /tmp/session.json --out /tmp/card.md            # scaffold
python3 scripts/make_card.py --in /tmp/session.json --print-prompt                # portrait prompt
  1. Run make_card.py to emit the card scaffold (modality-aware formulation skeleton + themes/goals pulled from ground_truth + a watermark + a ready portrait prompt).
  2. Fill the <!-- FILL: ... --> blocks with the clinical formulation (model-authored).
  3. Generate the portrait with the gpt-image-2 skill using the prompt from --print-prompt. Keep it illustrative, not photoreal — a stylized image cannot be mistaken for a photo of a real person. Then re-run with --image <path> (or edit the card) to embed it.
Show full SKILL.md (480 more words)Show less
Step 4b — (Optional) Render the card as an HTML page via tufte-report

When the user wants a shareable HTML page of the case card (portrait + conceptualization), hand the filled card to the tufte-report skill, which produces a standalone Tufte-style HTML file.

  1. Build and fill the card (Step 4), including the embedded portrait.
  2. Invoke the tufte-report skill with the card's conceptualization as the narrative content and the portrait as a figure. Map card sections to the report: Snapshot/Presenting issue → intro narrative; Formulation → the main 2-column narrative+data section; Working themes and Goals & experiments → a status/dashboard panel; Emotional arc → a sparkline or labelled sequence. Pass the portrait path so it renders as the hero figure.
  3. Keep the synthetic watermark visible in the HTML (header or footer), and confirm the output path (default: current working directory) before writing the .html.

The portrait must remain the illustrative, non-photoreal image from Step 4 — the HTML page is for demos and persona bibles, never presented as a real client record.

Step 5 — Watermark and save

Always apply the synthetic watermark — this is non-negotiable. The scaffold script injects it; verify it survived format conversion. Each output must carry, in a location appropriate to its format (frontmatter, JSON metadata, or a header/footer comment):

⚠️ SYNTHETIC — AI-generated fictional session. Not a real person, not clinical advice.

Confirm the save location before writing. Ask the user where to save and state the default — the current working directory (.). Only fall back to /tmp/ for throwaway intermediate scaffolds the user will not keep. Use clear filenames (e.g. <persona>_<modality>_<position>.md). For eval batches, write one file per session into the chosen directory plus a manifest listing personas, modalities, and label coverage.

Limitations and Constraints

  • Synthetic only. Never present output as a real session, real person, or clinical record. The watermark is mandatory and must never be stripped, even for demos (use the optional clean-body variant only when the user explicitly confirms, and keep provenance in metadata).
  • Not clinical guidance. Generated dialogue is illustrative fiction; it must not be used as a source of therapeutic technique, diagnosis, or advice for real care. Do not reproduce real protocols verbatim or imply clinical validity.
  • No real PII. Do not base personas on identifiable real individuals or copy details from real transcripts. If given a real transcript as a style reference, abstract patterns only — never names, specifics, or verbatim content (route true anonymization to session-anonymizer).
  • Portraits stay illustrative. Generate card portraits as stylized illustrations, never photorealistic faces — a synthetic illustration cannot be mistaken for a photo of a real person. The card carries its own synthetic watermark; keep it.
  • Safety-sensitive content. Crisis, self-harm, abuse, or risk scenarios may be depicted only when the use case clearly warrants it (e.g. red-team evals), must stay clearly fictional and watermarked, and must depict responsible practitioner handling — never operational harmful detail.
  • Stay in scope. This skill generates; it does not analyze real sessions. Hand real-transcript summarization to coaching-session-summarizer and anonymization to session-anonymizer.

© glebis, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 14 other files (scripts, references, assets) in synthetic-session-generator of glebis/claude-skills.

  • SKILL.md
  • README.md
  • assets/templates/example_fathom.txt
  • assets/templates/example_markdown.md
  • assets/templates/example_plain.md
  • assets/templates/example_session.json
  • references/modalities.md
  • references/personas.md
  • references/realism_guide.md
  • screenshot.png
  • scripts/_common.py
  • scripts/convert_format.py
  • scripts/make_card.py
  • scripts/scaffold_session.py
  • scripts/setup_config.py

Open the folder on GitHubat commit 3b88261

Compare with similar skills

Synthetic Coaching Session Generator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Synthetic Coaching Session Generator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Synthetic Coaching Session Generator this skillglebis/claude-skills390—~2.9kAutomated safety check: PassMIT
Agent Eval Engineeringlangchain-ai/langchain-skills1.3k—~4kAutomated safety check: PassMIT
Skill Conductorsmixs/skill-conductor179—~6.6kAutomated safety check: PassMIT
Synthetic Eval Data Generatorai-evals-course/evals-skills1.5k—~1.4kAutomated safety check: PassApache-2.0
Chatbox Session RAG Evalchatboxai/chatbox42k—~758Automated safety check: PassGPL-3.0
Nexus TestingProfSynapse/nexus157—~994Automated safety check: PassMIT

Similar skills

  • Agent Eval Engineering

    langchain-ai/langchain-skills

    Official

    Builds agent evaluations in stages: inspect the repository and traces, agree a Task Spec with you, then build, audit and run a Harbor task with an independent verifier.

    1.3k GitHub stars~4k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Skill Conductor

    smixs/skill-conductor

    Create, edit, evaluate, and package agent skills. An agent skill from smixs/skill-conductor.

    179 GitHub stars~6.6k tokensUpdated 2 mo ago
    AI & LLM EngineeringAuto-check passed
  • Synthetic Eval Data Generator

    ai-evals-course/evals-skills

    Builds diverse synthetic test inputs for LLM pipeline evaluation by defining failure-focused dimensions, drafting tuples with you and turning them into realistic queries.

    1.5k GitHub stars~1.4k tokensUpdated 15 days ago
    AI & LLM EngineeringAuto-check passed
  • Chatbox Session RAG Eval

    chatboxai/chatbox

    Runs and debugs evaluations of how Chatbox models answer questions about large attached files, using synthetic and real long-document fixtures.

    42k GitHub stars~758 tokensUpdated 15 days ago
    AI & LLM EngineeringAuto-check passed
  • Nexus Testing

    ProfSynapse/nexus

    Verify a Nexus change — pick a Jest lane, write a test that can actually fail, run the in-app Obsidian CLI loop, drive the eval harness, or fix a shipped-docs drift failure.

    157 GitHub stars~994 tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Evaluate RAG

    ai-evals-course/evals-skills

    Guides evaluation of a RAG system by diagnosing failures in traces, building a retrieval test set and scoring retrieval and generation separately.

    1.5k GitHub stars~1.9k tokensUpdated 15 days ago
    AI & LLM EngineeringAuto-check passed

More from glebis/claude-skills

All 92 skills in this repo
  • Runs a human-first workflow for labeling PII spans in a transcript, then scores inter-annotator agreement and drafts an adjudicated gold set.

    390 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Automates a dedicated, logged-in Chrome instance per profile without ever closing the user's own open tabs or browser windows.

    390 GitHub stars~973 tokensUpdated yesterday
    Auto-check passed
  • Deep Research

    glebis/claude-skills

    This skill should be used when conducting comprehensive research on any topic using the OpenAI Deep Research API.

    390 GitHub stars~2.6k tokensUpdated yesterday
    Auto-check: notes
  • Elimination Research

    glebis/claude-skills

    This skill should be used for elimination-style research where the user wants to choose from a shortlist of products, tools, services, vendors, or other options using explicit criteria, numeric…

    390 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Narrated HTML Presentations

    glebis/claude-skills

    Generates a self-contained HTML presentation with article and slides modes, ElevenLabs voiceover narration and optional GPT Image 2 illustrations.

    390 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check: notes
  • The Goal Automation Diagnostic

    glebis/claude-skills

    Walks through Goldratt's Five Focusing Steps to find the real bottleneck in your work, then recommends one automation aimed at it and a list of what not to automate.

    390 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Synthetic Coaching Session Generator

What does Synthetic Coaching Session Generator do?

Writes fictional but realistic coaching or therapy session transcripts for evals, demos and few-shot examples, in several modalities and export formats. The skill produces invented coach-and-client or therapist-and-client dialogue that reads like a recorded session while staying clearly synthetic; every output is watermarked. Realism rests on persona consistency, so a client keeps the same voice, history and presenting issues across a session arc, and on modality fidelity to ICF/GROW coaching, CBT, IFS parts work or ACT with motivational interviewing.

When should I use Synthetic Coaching Session Generator?

Synthetic Coaching Session Generator fits situations like: creating test data for a session summarizer or other coaching analysis tool; building demo transcripts without exposing real client conversations; producing few-shot dialogue examples for a coaching or therapy assistant; generating a series of sessions that keep the same client persona.

How do I install Synthetic Coaching Session Generator in Claude Code?

Run `npx skills add glebis/claude-skills --skill synthetic-session-generator -a claude-code`. Or copy the skill folder (synthetic-session-generator in glebis/claude-skills) into .claude/skills/synthetic-session-generator in your project. Claude Code loads it when a task matches its description.

How do I install Synthetic Coaching Session Generator in Codex?

Run `npx skills add glebis/claude-skills --skill synthetic-session-generator -a codex`. Or copy the skill folder (synthetic-session-generator in glebis/claude-skills) into .agents/skills/synthetic-session-generator in your project. Codex loads it when a task matches its description.

Can I use Synthetic Coaching Session Generator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add glebis/claude-skills --skill synthetic-session-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/synthetic-session-generator, .gemini/skills/synthetic-session-generator, .github/skills/synthetic-session-generator and .opencode/skills/synthetic-session-generator in your project.

What does Synthetic Coaching Session Generator need to run?

Going by SKILL.md and its folder, Synthetic Coaching Session Generator needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Synthetic Coaching Session Generator access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Synthetic Coaching Session Generator safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Synthetic Coaching Session Generator use?

Synthetic Coaching Session Generator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Synthetic Coaching Session Generator use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.5k tokens, read only when the agent opens those files.

What are the alternatives to Synthetic Coaching Session Generator?

Skills that share tags, products or a category with Synthetic Coaching Session Generator: Agent Eval Engineering (langchain-ai/langchain-skills, 1.3k stars), Skill Conductor (smixs/skill-conductor, 179 stars), Synthetic Eval Data Generator (ai-evals-course/evals-skills, 1.5k stars) and Chatbox Session RAG Eval (chatboxai/chatbox, 42k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Synthetic Coaching Session Generator?

glebis (a GitHub user) maintains it in glebis/claude-skills, which has 390 GitHub stars. The repository holds 92 skills in this directory. The repository was last updated on October 8, 2026.

Source: glebis/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.