From frustration-analyzer
Analyzes Claude Code sessions to detect strongest user frustration from AI instruction failures, reconstructs the triggering exchange, and renders shareable terminal-style PNG receipts. Use for rage moments or frustration capture.
How this skill is triggered — by the user, by Claude, or both
Slash command
/frustration-analyzer:rtfpThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Finds the single strongest user reaction to an AI instruction-following failure, reconstructs the assistant output that triggered it, and renders the exchange as a terminal-style PNG ready for social media.
Finds the single strongest user reaction to an AI instruction-following failure, reconstructs the assistant output that triggered it, and renders the exchange as a terminal-style PNG ready for social media.
Optional: a session file path. If provided, skip Steps 1–2 and use it directly.
Call mcp__frustration-analyzer__list_sessions with the current project path or the default ~/.claude/projects/.
Present sessions as a numbered list:
Recent sessions:
1. [2026-03-09 14:32] writing a Claude Code plugin (…/abc123.jsonl)
2. [2026-03-09 11:15] debugging a FastMCP server (…/def456.jsonl)
3. [2026-03-08 18:44] refactoring auth middleware (…/ghi789.jsonl)
Ask the user to choose a number. Wait for their response. Use the chosen file path for all subsequent steps.
Call:
mcp__frustration-analyzer__extract_user_messages(
file="{chosen_file}",
output_path="/tmp/rtfp-batch-{session_stem}.jsonl"
)
This writes a JSONL file containing ONLY user-authored messages. Each entry:
{"file": "...", "line_index": 42, "text": "..."}
No assistant messages, tool outputs, system messages, or context are included. The batch file is the input to Stage 2 detection only.
Report: "Extracted N user messages. Created batch file at {output_path}."
If the session has more than 200 user messages, split into multiple batch files by slicing the output. Name them …-batch-1.jsonl, …-batch-2.jsonl, etc. For most sessions, one batch file is sufficient.
For each batch file, spawn a subagent of type frustration-analyzer:batch-detector. Pass the batch file path in the delegation prompt.
Spawn all batch subagents in a single message (parallel). Each subagent reads only its assigned user-only batch file and returns:
{batch_path}.flags.json — structured flagged entry list{batch_path}.flags.txt — plain list of flagged entriesWait for all subagents to complete. Collect the output file paths.
Report: "Detection complete. Found M flagged messages across K batches."
If no flags were found across all batches, render a "no rage" card. Call:
mcp__frustration-analyzer__render_rage_receipt(
task_summary="Session analysis complete",
assistant_excerpt="No strong emotional reactions detected in this session.",
user_reply="👍",
output_path="/tmp/rtfp-{session_stem}-clean.png"
)
Then skip to Step 8 and present the result using the same format as a normal receipt. Do NOT return a plain text string.
Read all *.flags.json files. Merge the flags arrays into a single file at /tmp/rtfp-merged-{session_stem}.json:
{
"session_file": "{chosen_file}",
"flags": [
{"file": "...", "line_index": 42, "text": "..."},
...
],
"total": N,
"batch_count": K
}
Spawn a subagent of type frustration-analyzer:context-reconstructor. Pass the merged flags file path in the delegation prompt.
The reconstruction agent:
get_context_window to read full transcript context for the winnertask_summary, assistant_excerpt, user_reply{session_stem}.rtfp.jsonWait for the reconstruction agent to complete. Read the .rtfp.json artifact it produced.
Call:
mcp__frustration-analyzer__render_rage_receipt(
task_summary="{task_summary}",
assistant_excerpt="{assistant_excerpt}",
user_reply="{user_reply}",
output_path="/tmp/rtfp-{session_stem}.png"
)
Display the 3 artifact fields clearly:
task: {task_summary}
assistant said:
{assistant_excerpt}
user replied:
{user_reply}
PNG saved to: {output_path}
If a runner-up exists, offer:
There's also a runner-up. Want to render that one?
npx claudepluginhub jamie-bitflight/claude_skills --plugin frustration-analyzerSearches, recovers, and analyzes AI session histories across Claude Code, AI Studio, and Gemini CLI. Useful for recovering lost files after compaction, searching conversations, detecting corrections, and self-improvement workflows.
Generates an in-chat session report from the active or named transcript — every tool call, sub-agent delegation, and file edit, with diagnostics for missed parallelism, redundant work, and over-serialization.
Finds, analyzes, and shares AI coding sessions (Claude Code, Cursor, Codex) using vibe-replay. Generates replay artifacts, session summaries, and attaches context to PRs.