Collect and normalize agent logs, discover installed verifiers, and dispatch LLM judges to evaluate adherence. Produces per-session verdicts and aggregated reports.
91
90%
Does it follow best practices?
Impact
96%
3.09xAverage score across 3 eval scenarios
Passed
No known issues
Detect points of friction in agent coding sessions — moments where the user or agent struggled, wasted time, or encountered obstacles. Uses LLM judges (haiku) to review session transcripts and classify friction by type and impact.
claude -p --model haiku| File | Read when |
|---|---|
| friction-prompt.md | Understanding what friction reviewers evaluate |
audit-logs pipeline's prepare step, or from local-logs collect-and-summarize)claude CLI installed and authenticatedWhen running outside the main audit-logs pipeline, point at a directory containing prepared/ transcripts:
SCRIPTS_PATH="$(find "$(pwd)/.tessl/tiles" "$HOME/.tessl/tiles" -path "*/audit-logs/skills/friction-review/scripts/dispatch_friction.py" -print -quit 2>/dev/null | sed 's|/dispatch_friction.py||')"
# Dispatch friction reviewers
uv run python3 "$SCRIPTS_PATH/dispatch_friction.py" \
--dir <path-with-prepared-dir> \
--model haiku
# Merge results
uv run python3 "$SCRIPTS_PATH/merge_friction.py" \
--dir <same-path>When run as part of audit-logs, friction analysis runs in parallel with verifier analysis by default. Use --no-friction to disable it:
AUDIT_SCRIPTS="$(find "$(pwd)/.tessl/tiles" "$HOME/.tessl/tiles" -path "*/audit-logs/skills/audit-logs/scripts/run_pipeline.py" -print -quit 2>/dev/null | sed 's|/run_pipeline.py||')"
uv run python3 "$AUDIT_SCRIPTS/run_pipeline.py"Results are written to friction/ alongside verdicts/ in the run directory, then correlated in the synthesis step.
| Type | Description |
|---|---|
wrong_approach | Agent chose wrong strategy/tool, user had to redirect |
buggy_code | Agent wrote non-working code |
over_investigation | Too many turns exploring when answer was straightforward |
misunderstood_request | Agent misinterpreted the user's request |
premature_action | Started implementing before understanding requirements |
tool_misuse | Used a tool incorrectly |
repeated_failure | Failed at the same thing multiple times |
ignored_instruction | Didn't follow explicit user instruction |
| Impact | Description |
|---|---|
minor | Resolved in 1-2 turns |
moderate | Took 3-5 turns to resolve |
major | 5+ turns wasted or task derailed |
friction-summary.json contains: