← All skills
audit-friction
95 / 100 · Low risk
Fine to try. Some of what it can do is expected: a coding skill usually runs build and test commands.
By melodic-software/claude-code-plugins (GitHub) · coding · 30 stars · scanned at commit 677e798
Audit Claude Code sessions for permission and autonomy friction (denials, approval prompts, hook blocks, hand-offs), traced to cause in one decision brief. Use when the agent keeps asking or handing off, auto mode denies, or re-measuring after permission fixes.
Works with any agent that supports SKILL.md skills.
What this skill can do
Runs commands on your computer
The author does not mention this. It runs automatically when the plugin is installed. Expected for a coding skill.
Found in 13 places.
Show 10 more
- plugins/session-flow/skills/audit-friction/scripts/friction.py, line 166
except (OSError, subprocess.SubprocessError): - plugins/session-flow/skills/audit-friction/scripts/tests/test_friction.py, line 2
"""Contract tests for friction.py, and for the `friction` block collect.py writes, by subprocess. - plugins/session-flow/skills/audit-friction/scripts/tests/test_friction.py, line 32
def run(script: Path, *args: str, siblings: str = "") -> subprocess.CompletedProcess[str]: - plugins/session-flow/skills/audit-friction/scripts/tests/test_friction.py, line 36
return subprocess.run([sys.executable, str(script), *args], capture_output=True, text=True, encoding="utf-8", - plugins/session-flow/skills/audit-friction/scripts/tests/test_friction.py, line 40
def friction(*args: str, siblings: str = "") -> subprocess.CompletedProcess[str]: - plugins/session-flow/skills/audit-friction/scripts/tests/test_friction.py, line 44
def data_of(result: subprocess.CompletedProcess[str]) -> dict: - plugins/session-flow/skills/audit-friction/scripts/tests/test_friction.py, line 267
return subprocess.CompletedProcess(argv, 0, stdout=next(outputs)) - plugins/session-flow/skills/audit-friction/scripts/tests/test_friction.py, line 281
monkeypatch.setattr(module.subprocess, "run", lambda argv, **kw: subprocess.CompletedProcess(argv, 1, stdout=b"x")) - plugins/session-flow/hooks/exec-bash.mjs, line 111
import { spawn, spawnSync } from "node:child_process"; - plugins/session-flow/hooks/hooks.json, line 9
"command": "sh \"${CLAUDE_PLUGIN_ROOT}/lib/node-or-skip.sh\" \"${CLAUDE_PLUGIN_ROOT}/hooks/exec-bash.mjs\" \"${CLAUDE_PLUGIN_ROOT}/hooks/observer-arm.sh\"; ${PP
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'audit-friction' ] || [ -L ~/.agents/skills/'audit-friction' ]; then echo 'A skill folder named audit-friction already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/melodic-software/claude-code-plugins' "$d" && git -C "$d" checkout --quiet '677e7988f432dacb5e2d4df2b124f96da8e8f9f3' -- 'plugins/session-flow/skills/audit-friction' && mkdir -p ~/.agents/skills && cp -R "$d"/'plugins/session-flow/skills/audit-friction' ~/.agents/skills/'audit-friction' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'audit-friction' ~/.claude/skills/'audit-friction' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for melodic-software/claude-code-plugins shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/melodic-software/claude-code-plugins/)
Score history
| Date | Version | Score |
|---|
| 2026-11-09 | 677e798 | 95 |
| 2026-11-07 | 81c7244 | 95 |