Skip to content
Back to skills

Ttai Session Analyst

ASecurity

Turns Tough Tongue AI sessions into evidence-backed reports. Reads sessions, scores, report cards, strengths, weaknesses, and transcripts from practice roleplays, AI phone calls, and meeting-bot calls for a Scenario, person, or date range, then writes team performance, Scenario health, or individual coaching reports with action items. Can also ingest an external call transcript or recording as a scored session (ttai:create_session) and fill in missing analysis (ttai:post_process_session), eac...

  • 7 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 3, 2026
ai-agentsgoperformance

Works with

  • cursor
  • cli
  • mcp

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned October 3, 2026

npx -y skills add tough-tongue/toughtongue-skills --skill ttai-session-analyst --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ttai Session Analyst?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ttai Session Analyst
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tough-tongue-ttai-session-analyst/badge)](https://www.skillsdirectory.com/skills/tough-tongue-ttai-session-analyst)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ttai-session-analyst
description: >-
  Turns Tough Tongue AI sessions into evidence-backed reports. Reads
  sessions, scores, report cards, strengths, weaknesses, and transcripts from
  practice roleplays, AI phone calls, and meeting-bot calls for a Scenario,
  person, or date range, then writes team performance, Scenario health, or
  individual coaching reports with action items. Can also ingest an external
  call transcript or recording as a scored session (ttai:create_session) and
  fill in missing analysis (ttai:post_process_session), each after the user
  confirms. Use when the user asks "how is my team doing?", "top improvement
  areas for scenario X", "lowest-scoring sessions", "coaching report for
  Priya", or "session trends this month". Not for changing a Scenario,
  rubric, or prompt (ttai-agent).
when_to_use: >-
  Also when the user wants an external sales or support call scored against a
  coaching Scenario.
---

# Session Analyst

Pull sessions → aggregate per Scenario → write an evidence-backed report →
optionally hand it to the user's deck, email, or docs tools.

Practice runs, AI phone calls, and meeting-bot joins all land as **sessions**.
Read-only by default. The only writes are `ttai:create_session` and
`ttai:post_process_session`, and both need explicit confirmation.

## Hard rules

- **Guide first.** In a fresh conversation, call
  `ttai:callme_before_using_tough_tongue_mcp` unless its guide is in context.
  Some clients show tools as `mcp__ttai__<name>`. The `ttai-agent` skill holds
  the full tool catalog and entity model.
- **Scope first.** For organization data, call `ttai:list_organizations` and
  pass the returned `id` as `org_id` on every call. Never pass a slug. Omit
  `org_id` for personal scope.
- **V3 first.** Default to `ttai:v3_list_sessions`. Use legacy
  `ttai:list_sessions` only when you need a person (`user_email`), a date
  window, `hasLearning`, `duration`, or `analytics_url`.
- **Count cheaply.** For a count, call `ttai:v3_list_sessions` with
  `limit: 1, include_total: true`. Never page through results just to count.
- **Request only needed fields.** V3 returns IDs, status, and timestamps unless
  you ask for `participant`, `evaluation`, `transcript`, `recording`, or
  `processing` in `include_fields`.
- **Transcripts come from two places only:** `ttai:v3_list_sessions` (`ids` +
  `transcript`) or `ttai:get_session`. `ttai:list_sessions` and
  `ttai:get_sessions_batch` never return transcripts.
- **One rubric per aggregate.** Report-card topics and weights come from each
  Scenario's rubric. Aggregate per Scenario. Compare Scenarios qualitatively.
- **Confirm before writing.** Before `ttai:create_session` or
  `ttai:post_process_session`, state the Scenario ID and session IDs (or
  transcript source) and wait for a yes. See
  [references/ingest-and-reprocess.md](references/ingest-and-reprocess.md).
- **Scenario faults go to `ttai-agent`.** This skill diagnoses. It never edits a
  Scenario.
- **Privacy.** Coaching reports name people. Confirm the audience before sending
  per-person results to a group. Pass `include_recording_url: false` to
  `ttai:get_session` unless the user needs the signed recording link.

## Workflow

### 1. Scope

1. Resolve the workspace: `ttai:list_organizations` → `org_id`, or personal.
2. Resolve the Scenario. Reuse an ID already in context. Otherwise make one
   `ttai:list_scenarios` call with `search`, take the ID, and continue on V3.
3. Pin down the population: Scenario(s), date window, people, and how many
   sessions. When the window is vague, use the last 30 days and say so.

### 2. Pull

Pick the read path by filter. Parameters and limits:
[references/data-model.md](references/data-model.md).

- **Recent sessions for a Scenario** — `ttai:v3_list_sessions`: `scenario_ids`,
  `include_fields: ["participant", "evaluation"]`, `limit` ≤ 100, follow
  `next_cursor`.
- **Counts by status** — `ttai:v3_list_sessions`: `scenario_ids`, `statuses`,
  `limit: 1`, `include_total: true`.
- **One person or a date window** — `ttai:list_sessions`: `scenario_id`,
  `user_email`, `from_date` / `to_date`, `is_org: true` for org-wide, `page` /
  `limit` ≤ 500.
- **Scenario-learning flags** — `ttai:list_sessions`: `hasLearning: "issue"`.
- **Transcripts for chosen sessions** — `ttai:v3_list_sessions`: `ids`,
  `include_fields: ["transcript", "evaluation"]`.
- **Full detail for one session** — `ttai:get_session`: `session_id`,
  `include_recording_url: false`.
- **Review links for chosen sessions** — `ttai:get_sessions_batch`:
  `session_ids` → `analytics_url`.
- **Usage, minutes, member activity** — `ttai:get_analytics`:
  `is_org_wide: true`, `start_date` / `end_date`.
- **Phone call or bot outcomes** — `ttai:list_sip_calls` /
  `ttai:list_meeting_bots` → `session_id` per record.

Notes:

- Legacy `from_date` / `to_date` filter on `updated_at`, not creation time.
  Mention this when the window edge matters.
- Sessions without `evaluation_results.final_score` are unanalyzed. Exclude them
  from score math and report the count. Fill them in only if the user needs
  completeness (step 5).

### 3. Aggregate

Compute per Scenario:

- **Score distribution.** Mean, median, and range of
  `evaluation_results.final_score` (0–10, already weighted by the rubric). State
  the analyzed count and the excluded count.
- **Per-topic breakdown.** Group `report_card[]` by `topic` and average its
  `score` (0–10) across sessions. Show each topic's `weight` (percent of the
  final score). Low score on a high-weight topic is the top improvement area.
- **Recurring weaknesses.** `weaknesses` and `improvement_results`
  (`improvement_areas`, `action_items`) are markdown text. Cluster them into
  themes and count sessions per theme. Name a theme by its behavior ("pitches
  price before discovery"), not a category ("communication").
- **Trend.** Weekly buckets when the window spans 3+ weeks. Per-person averages
  for team views.
- **Evidence.** For each top theme, pull 1–2 transcripts for chosen IDs and
  quote the shortest excerpt that shows it. Reports without evidence read as
  opinion.

Fewer than ~10 analyzed sessions → report observations, not statistics, and say
so.

### 4. Report

Use the matching template in
[references/report-templates.md](references/report-templates.md):

- **Team performance:** "how is my team doing?"
- **Scenario health:** "is this Scenario working?"
- **Individual coaching:** one person, at most three focus areas

Every report states the population and window, the score summary, the top 3–5
improvement areas with evidence, concrete actions, and `analytics_url` links for
sessions worth a human review.

### 5. Fill gaps or ingest (only on request)

Missing analysis → confirm IDs, `ttai:post_process_session` per session, poll.
External call → confirm Scenario and source, `ttai:create_session`. Steps,
polling, and failure handling:
[references/ingest-and-reprocess.md](references/ingest-and-reprocess.md).

### 6. Distribute (optional)

Hand the report to the user's deck, email, or docs tools: one improvement area
per slide or section, evidence quote included.

## Recipes

- **"Top 5 improvement areas for Scenario X, last 50 sessions."**
  `ttai:v3_list_sessions` (`scenario_ids`, `limit: 50`,
  `include_fields: ["evaluation"]`) → per-topic averages and weakness themes →
  pull transcripts for 1–2 sessions per theme → Team performance report.
- **"The 5 lowest-scoring sessions and what went wrong."** Collect the
  population (V3 with `evaluation`, or legacy for a date window) → sort by
  `final_score` ascending → take 5 → transcripts via V3 `ids` → separate
  Scenario faults from user-skill gaps → Scenario faults go to the `ttai-agent`
  skill with the diagnosis and transcript quotes.
- **"How did priya@example.com do this month?"** `ttai:list_sessions`
  (`user_email`, `from_date` = first of month, `is_org: true` in an org) →
  per-topic averages and trend → Individual coaching report with actions drawn
  from `improvement_results.action_items`.
- **"Is this Scenario working?"** Status counts via V3 `include_total` (count
  old `active` sessions as abandoned) → `ttai:list_sessions` with
  `hasLearning: "issue"` for flagged transcripts → Scenario health report.

## Pitfalls

- **Status ≠ processing.** Session `status`: `active`, `completed`, `archived`,
  `terminated` (use for completion rates). `post_session_status.state`: `idle`,
  `running`, `failed`.
- **Stale `active`.** Legacy reads and `ttai:get_session` report an `active`
  session older than 40 minutes as `terminated`. V3 returns the stored status,
  so abandoned sessions can still read `active` there.
- **Math on numbers.** Use `score` and `final_score`; `score_str` and
  `overall_score` are display text.
- **V3 scope.** `ttai:v3_list_sessions` returns other people's sessions only
  when the caller holds EDIT or higher on the Scenario (pass `scenario_ids`) or
  in the selected organization. Otherwise it returns only the caller's own. An
  empty page can mean missing permission.
- **Advanced filters are REST-only.** `meta_*` and `$gte_created_at`-style
  filters do nothing over MCP. Filter such fields after fetching.

## Key Files

- [references/data-model.md](references/data-model.md): tools, parameters,
  limits, response fields, score scales, status values
- [references/report-templates.md](references/report-templates.md): team,
  Scenario health, and coaching report formats
- [references/ingest-and-reprocess.md](references/ingest-and-reprocess.md):
  `ttai:create_session` ingest, `ttai:post_process_session` backfill,
  confirmation and polling

Files in this skill

  • SKILL.md9.5 KB
  • agents/openai.yaml494 B
  • references/data-model.md7.1 KB
  • references/ingest-and-reprocess.md4 KB
  • references/report-templates.md3.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…