agent-session-frictionlisted
Install: claude install-skill arndvs/ctrlshft
# Session friction audit
The other audit skills manufacture their evidence: attempt a task, note where you
struggled. A finished session transcript already contains that, with better
evidence than any static scan produces — actual searches that returned nothing
useful, actual files opened and discarded, actual failures that named nothing.
This skill reads that record and converts it into observations with measured
cost. It does not file issues. A single session is `n=1`, and filing on `n=1`
produces findings driven by one unlucky run. Observations accumulate; a separate
consolidation step ranks by how often each thing actually cost something and
publishes the top few.
That division is the whole point. Static analysis infers that a name is hard to
search. This measures that it *was*.
---
## Two modes
This skill runs at two different moments, and the split matters.
**Collect** — at session end, via a hook, unconditionally. Mechanical only: parse
the transcript, segment episodes, count signals, write records. No judgement, no
model call. `scripts/collect-friction.py` does this; the skill is only needed
when adapting it to a new harness or adding a signal.
A hook rather than a final task in the prompt, because a task at the end of a
prompt gets dropped when a session ends messily — and messy endings are exactly
the high-friction sessions most worth recording. That is selection bias against
the data the whole system depends on.
**Attribute** — weekly, during consolidation