Skip to main content
skill CX Codex

friction-log — Claude Code skill: a session friction report

Drafts an honest write-up of where working with Mycelium felt confusing or slow. You edit it and decide whether it goes anywhere.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add haabe/mycelium --skill friction-log -a claude-code
Open on GitHub

What friction-log does

The skill produces a short account of a session: your role in it, the task at hand, the sequence of events including what went right, and the spots that caused trouble. Each point names the skill, file or message involved. Friction the agent itself caused belongs in the log too, alongside friction it ran into.

One rule carries the whole thing: describe the experience, skip the remedies. Scratch any sentence built on “you should”. The reasoning is blunt — a list of patches invites an argument, a description of the problem gets read. On top of the narrative come a few qualitative questions: what you would use instead of Mycelium, whether you have recommended it, how you described it. Those work on small samples, no percentage required.

The draft lands in .claude/evals/friction-logs/<date>.md no matter what you decide. Handing it over needs an explicit yes, and a no closes the topic for the session. The skill is built to run inside the Mycelium framework, so outside it there is no session to log.

What it helps with

  • record where a Mycelium session got confusing
  • write up friction after a piece of work wraps
  • keep the report free of proposed fixes
  • get a feedback draft without composing it by hand
  • save the log for private use if sending feels wrong

Example prompts for the agent

  • Draft a friction log for this session — what I tried to do and where I got stuck.
  • Write today's Mycelium friction report and save it under .claude/evals/friction-logs/.
  • Add the alternative and recommendation questions to the friction log, then ask if I want to send it.

How to install friction-log

1Skills CLI (Vercel)

npx skills add haabe/mycelium --skill friction-log -a claude-code

2Manually: put the files in place

~/.claude/skills/friction-log/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/friction-log/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about friction-log

How do I install friction-log in Claude Code?

Run npx skills add haabe/mycelium --skill friction-log -a claude-code. The skill file then sits at ~/.claude/skills/friction-log/SKILL.md.

What does friction-log do?

It writes a draft of where a Mycelium session was unclear or slow, then hands it to you for editing. Suggested fixes stay out of the draft.

Does it send anything on its own?

No. The draft is saved locally to .claude/evals/friction-logs/<date>.md, and passing it on happens only after you say yes.

Source text

SKILL.md · MIT
---
name: friction-log
description: "Draft a short, honest account of where using Mycelium was confusing or slow, for the user to edit and choose whether to send. Reports experience; never prescribes fixes. Based on Hoskins's friction logging."
metadata:
  instruction_budget: "22"
  framework_dependency: "mycelium"
  framework_dependency_note: "Designed to run within the Mycelium framework (https://github.com/haabe/mycelium)."
---

# Friction Log

**What this is, in Hoskins's words:** *"A friction log is an informal document that you write as you
use a product. You report any confusion or roadblocks you experience. When you've finished, **you
hand it off** to the engineers or PMs responsible for the product."* Its purpose: *"we also need
outside perspectives. Since outsiders don't have all day, we need a lightweight option for them to
help out."*

**Mycelium has the opposite problem from most products: it can see its own friction and has no way to
send it back.** Measured 2026-09-20 in the dogfood repo: of 91 completed outreach tasks, ~71 were
outbound and ~4 inbound. The channel runs one way.

---

## THE ONE RULE THAT MAKES THIS WORK

**Report experience. Do not prescribe remedies.** Hoskins: *"See how I described my experience rather
than giving prescriptive advice? ... **My job as friction logger is just to call attention to the
problem.** If I just said 'you should put the icons into two rows,' they might feel like I'm trying
to do their job for them, decide on their roadmap for them, or they might **reject that specific idea
and not brainstorm other options**."*

**This is the mechanism, not a style preference.** A log that proposes fixes becomes a patch list,
and a patch list gets argued with instead of read. **If you catch yourself writing "you should", cut
the sentence and describe what happened instead.**

## WHY THE AGENT DRAFTS IT

Hoskins's design is built around the fact that outsiders will not spend long. **The agent was present
for the friction and can draft in seconds; the user edits and decides.** That removes the effort
barrier without removing the user's authorship.

**It also restores a separation the solo case loses.** The handoff exists to put the problem-finder
and the problem-solver in different hands. When one person is both, nothing stops them skipping the
description and going straight to the fix — which is what destroys the record. **An agent logger
cannot implement the remedy, so the separation holds.**

---

## STEP 1 — Draft, from what actually happened this session

Write 5–15 lines. Structure it as Hoskins does — persona, then the run:

1. **Who you are, for this log.** *"I'm an agent running Mycelium for a solo builder on a CLI tool,
   three sessions in."* State priors that colour the experience.
2. **What you were trying to do.**
3. **What happened, in order** — including the parts that worked. *"I glossed over some of the flows
   that worked well, but I did sprinkle in some praise."* A log of only complaints is not credible.
4. **Where it was confusing or slow.** Name the skill, the file, the message.

**Include the friction you caused as well as the friction you hit.** If a gate fired and you did not
understand why, that is the log's best material.

## STEP 2 — Add the questions that work at any sample size

These are Ellis's, from `Hacking Growth`. **They are qualitative and need no threshold**, which
matters because his 40% benchmark requires a real sample and most projects do not have one yet.

- *What would you likely use as an alternative to Mycelium if it were no longer available?*
- *What is the primary benefit you have received from it?*
- **Have you recommended it to anyone? If so, how did you describe it?**
- *What type of person do you think would benefit most?*
- *How could it better meet your needs?*

> **The third question is the load-bearing one.** It tests whether someone who likes the framework
> can say what it is — which is the difference between a product problem and a positioning problem.
> Ellis puts that distinction in the 25–40% band: what is needed is *"tweaks either to the product
> **or to the language used to describe the product**."*

**Do NOT compute a percentage or report a PMF score.** Ellis's threshold needs a sample; over a
handful of users a percentage is not a percentage.

## STEP 3 — Hand it over, and only if the user says so

**Show the draft. Say plainly where it would go. Ask.** Then:

- **User edits freely.** It is their account, not yours.
- **Nothing is sent without an explicit yes.** No automatic transmission, no background collection,
  no "I'll include this next time".
- **A no is a complete answer** and is not asked again this session.

**Save it either way** to `.claude/evals/friction-logs/<date>.md`. A log the user keeps privately
still has value to them; the handoff is the part that needs consent.

---

## WHEN TO OFFER THIS

**At a natural pause, not on a schedule, and not every session.** Good moments: after a first run
completes; after a gate blocked something and the user worked around it; after a session where the
user said something was confusing.

**An agent cannot detect the end of a session** — a session can run for days — so do not key this to
one. Key it to a *completed piece of work*.

**Offer at most once per session, and never twice for the same friction.**

---

## WHAT THIS IS NOT

- **Not `corrections.md`.** That records build-time mistakes and is read by its author. This records
  use-time friction and is handed to someone else. *(The corrections register described itself as a
  friction log until 2026-09-20; it is a different object and the chapter reference was right.)*
- **Not telemetry.** The agent already observed everything here; the only question is whether the
  person chooses to hand it over.
- **Not a survey with a score.** See step 2.

*Sources: Drew Hoskins, `The Product-Minded Engineer`, ch. 4 (friction logging). Sean Ellis &
Morgan Brown, `Hacking Growth` (the Must-Have Survey's qualitative follow-ups).*

© haabe · MIT · haabe/mycelium

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set14

prompt-optimizer Runs your CLAUDE.md edits against two eval splits and shows whether the gain is real or just fitting the test set. CX Codex +1 ★ 47repo stars mocked-persona-interview For solo and hobby projects where real user interviews are off the table: the skill runs interviews with invented personas and keeps them from becoming a rubber stamp for your own assumptions. CX Codex +1 ★ 47repo stars metrics-detect Scans the repo and sets up adapters for the metric sources your product actually uses, from GitHub to Stripe. Handy when the project predates this setup. CX Codex +1 ★ 47repo stars jtbd-map Splits customer work into functional, emotional and social jobs, then saves the map to a canvas file. CX Codex +1 ★ 47repo stars fan-out Spawns several subagents on one problem, then folds their findings into a single pick. Useful when two or more solutions compete and you need evidence, not a guess. CX Codex +1 ★ 47repo stars diamond-render Turns .claude/diamonds/active.yml into a picture of the decisions recorded so far, in order, plus the ones still ahead. Useful at the end of an assessment. CX Codex +1 ★ 47repo stars define-done Sets a measurable Definition of Done for a diamond: a change in behaviour that creates value, not a build list. Useful when work gets signed off on shipping alone. CX Codex +1 ★ 47repo stars count Reads your repository and prints one line: when the first source file landed, how many decisions came before it, how many sessions there were. Sends nothing anywhere. CX Codex +1 ★ 47repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor