npx claudepluginhub ai-builder-team/ai-builder-plugin-marketplace --plugin mThis skill uses the workspace's default tool permissions.
Audit a Claude Code session by its ID. Parses the JSONL transcript to show conversation flow, tool usage stats, errors, retries, and subagent activity.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Audit a Claude Code session by its ID. Parses the JSONL transcript to show conversation flow, tool usage stats, errors, retries, and subagent activity.
$0 — Session UUID (required)$ARGUMENTS — Session ID followed by an optional free-form instructionDecide which path to follow before doing anything else:
Custom objective: If the user's instruction asks for something other than a standard session audit (e.g. searching for a pattern, extracting a conversation excerpt, comparing sessions, answering a question about what happened, evaluating a skill's behavior), then resolve the session (Step 1) and use whatever combination of the scripts and JSONL schema below to achieve their objective. You are not bound to the audit workflow — treat the scripts as utilities and the JSONL as raw data. Run scripts as many times as needed, read the JSONL directly if the scripts don't cover it, and structure your output to answer what was asked.
Standard audit (default when no instruction is provided, or when the instruction explicitly requests an audit): Follow Steps 1–4 below in sequence.
python3 ${CLAUDE_PLUGIN_ROOT}/skills/session-audit/scripts/resolve.py "$0"
This outputs JSON with main (path to JSONL), subagents (list of subagent JSONLs), and project_dir.
If the session is not found, try searching with the current project directory:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/session-audit/scripts/resolve.py "$0" --project-dir "$(pwd)"
If still not found, fall back to grep:
grep -rl "$0" ~/.claude/projects/*/ 2>/dev/null | head -5
Use the resolved JSONL path from step 1. The JSONL placeholder below means the path returned by resolve.
--no-thinking --max-len 500) on the main sessionStats:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/session-audit/scripts/stats.py JSONL
Conversation:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/session-audit/scripts/conversation.py JSONL
Options: --no-thinking to hide thinking blocks, --no-tools to hide tool calls, --max-len 300 to truncate long blocks.
Errors:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/session-audit/scripts/errors.py JSONL
When errors.py reports issues, use context.py to see surrounding records:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/session-audit/scripts/context.py JSONL <LINE_NUM> [radius]
LINE_NUM — the JSONL line number from the errors reportradius — how many non-progress records before/after to show (default: 3, use 5-8 for deeper context)The target line is marked with >>>. Progress records are skipped to keep the output focused.
Run this for each error that needs investigation. The output shows the tool call that was attempted, the error result, and what the assistant did next.
Use find.py to locate which turns mention a specific term:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/session-audit/scripts/find.py JSONL "pattern" [--scope user|both|all] [--max-len 300]
Scopes:
user — only human text messagesboth — human text + assistant text (default)all — human text + assistant text + thinking + tool calls + tool resultsThe pattern is a regex (case-insensitive by default, add --case-sensitive to override). Each match shows the turn number, line, timestamp, which field matched, and a snippet with the match highlighted in ** markers.
Combine with context.py to drill into any match: find.py gives you the line numbers, context.py shows the surrounding conversation.
Use only.py to see just one type of record:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/session-audit/scripts/only.py JSONL <mode> [--max-len 500]
Modes:
user — human text messages onlyassistant — assistant text responses onlythinking — chain-of-thought blocks onlytools — all tool calls (name + input summary)results — all tool resultserrors — only error resultsbash — bash commands paired with their outputedits — Edit/Write calls with file paths and old/new stringsagents — Agent tool calls (subagent spawns with type, desc, prompt)If resolve.py returned subagent paths, run the same reports on each subagent JSONL.
Prefix each subagent report with its filename so the user can tell them apart.
Provide a concise summary that directly answers the instruction. If running the default lessons-learned audit, present findings and lessons in whatever format best fits the session's content.
Constraints on lessons:
When a lesson involves editing a skill, agent, or command file, follow these steps in order.
Never edit files under ~/.claude/plugins/cache/ — that's a read-only installed copy.
To find the editable source, first figure out what kind of repo you're in. If the CWD path or directory name contains "plugin", "skills", or "marketplace", or there's a skills/ directory with skill folders in it, you're likely in a plugin or skills repo — search plugins/*/skills/*/SKILL.md and skills/*/SKILL.md relative to the repo root. If not found, check these fallbacks:
~/.claude/skills/<skill-name>/SKILL.md<project-root>/.claude/skills/<skill-name>/SKILL.mdAfter editing any component in a marketplace plugin, bump the version in both plugin.json and the corresponding marketplace.json entry:
4.3.0 → 4.3.1)4.3.0 → 4.4.0)4.3.0 → 5.0.0)After editing files in a marketplace git repo, run /m:push from the repo root to commit and push the changes.
Each line is a JSON object with a type field:
| type | description | key fields |
|---|---|---|
user | Human messages + tool results | message.content (string or tool_result blocks), uuid, parentUuid, timestamp |
assistant | Model responses | message.content[] with blocks: thinking, text, tool_use. Also message.usage for tokens. |
progress | Streaming progress for tool calls | toolUseID, data |
file-history-snapshot | File state checkpoints | snapshot.trackedFileBackups |
system | Internal bookkeeping | subtype, durationMs |
Content block types inside message.content[]:
thinking — chain-of-thought (has thinking and signature)text — visible response texttool_use — tool invocation (name, id, input)tool_result — tool output (tool_use_id, content, is_error)