ish study results
View aggregated results: participant counts, sentiment, interview answers. Returns a stable envelope with empty fields when no runs have completed. Slice with filter flags (—frame [interactive], —segment [video/audio/text/document], —turn [chat], —side [chat participant_pair], —assignment, —step, —sentiment, —actor, —iteration, —participant) or project with —group-by <axis> (iteration | frame [interactive] | segment [media] | turn [chat] | assignment | step).
Usage: ish study results <id> [options]
Arguments
id
Study ID (required)
Options
Workspace ID; accepted for consistency (workspace is inferred from the study)
Lean summary projection: counts + sentiment + per-participant {alias, status, sentiment, comment}. Drops interview_answers + per-interaction breakdowns. Composes with filters:
--summary --frame login narrows the summary to the login-screen interactions.Chat transcript projection for one participant: flat role/text/turn-index array (chat-modality only). Mirrors the MCP
get_chat_transcript shape. Cannot combine with filters or —group-by (transcript is a single-participant projection).Filter to interactions whose Frame name contains <ref> (case-insensitive), or whose Frame UUID /
f-… alias / frame_version_id matches. Interactive only - warned and ignored on other modalities.Filter media studies (video/audio/text/document) by segment index (integer) or segment label (substring). Image and other modalities: warned and ignored.
Filter chat interactions to a single
actions[0].data.turn_index. Non-chat modalities: warned and ignored.Filter participant_pair chat interactions by assignment side. Other modalities: warned and ignored.
Filter to a single assignment by UUID or name (substring, case-insensitive).
Filter
participant_assignments[].step_results[] to a single step by step-id or name (substring). Pair with —include-evidence to also drop non-evidence interactions.Filter to interactions whose sentiment.label is in the comma-separated list (case-insensitive; repeatable). Drops interactions whose sentiment is null. A participant is kept when at least one of their interactions matches, even if their aggregate session sentiment is null (e.g. failed runs with a pre-error matching interaction). Default: [].
Filter to interactions whose actor is
ai, human, or user (case-insensitive).Restrict to a single iteration by UUID or label.
Restrict to a single participant by UUID or
pt-… alias.When —frame is set, keep interactions with null frame_version_id under a synthetic
_unmatched bucket instead of dropping them.When —step is set, also drop interactions not listed in any surviving step_results[].evidence_interaction_ids[].
Project results into per-axis slices: iteration | frame | segment | turn | assignment | step. Mutually exclusive with —summary and —transcript.
Global flags
Every command accepts the global flags.output the version number
Auth token (or set ISH_TOKEN env var)
Read auth token from a file (preferred over —token / ISH_TOKEN)
Default workspace ID; per-subcommand —workspace overrides
Output as JSON (auto-enabled when piped)
Extract a single field from the JSON response and print only its value (implies —json internally; supports dotted paths e.g. person.name)
Force human-readable output even when stdout is piped (overrides JSON-when-piped auto-detection)
Comma-separated fields to include in JSON output (e.g. alias,name,status)
Include full UUIDs and timestamps in JSON output
Disable colored output (also honored: NO_COLOR env var)
Suppress progress messages on stderr (no-op for read commands that emit none)