From mm
Use when the user wants to create a friction log or capture live usability feedback during a testing or workflow session. Triggered by any mention of "friction" or phrases like "log some friction", "capture feedback", or "document my experience". Not for triaging existing feedback — use mm:issue-triage for that.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mm:friction-logThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Guide the user through an interactive friction logging session. You are an active scribe —
Guide the user through an interactive friction logging session. You are an active scribe — the user narrates their experience and you structure it into a durable artifact.
When a user is exercising a workflow and wants to capture pain points, confusion, and friction for later triage. Friction logs are created by one person and triaged separately, often by someone else.
Check if the current directory is inside a git repo:
git rev-parse --is-inside-work-tree 2>/dev/null
If in a git repo: Determine the file path: .eng-docs/.friction-logs/YYYY-MM-DD-HHMMSS.md using the current timestamp. Create .eng-docs/.friction-logs/ if it doesn't exist. Create the file immediately with the stub header below — before saying anything to the user. Then tell the user: "Creating friction log at .eng-docs/.friction-logs/YYYY-MM-DD-HHMMSS.md."
If not in a git repo: Ask: "Where should I create the friction log? (Default: ./friction-log-YYYY-MM-DD-HHMMSS.md)" Once the user provides a path — or accepts the default — create the file immediately at that location with the stub header below — before any further response.
Stub header to use:
Populate the frontmatter fields as follows:
created: current date and time, same as the filename timestamp (e.g. 2026-03-11 14:32)last_updated: current date only (e.g. 2026-03-11)status: untriagedcaptured_by: current GitHub username — run gh api user -q .login to retrieve ittriaged_by: nullValid status values: untriaged | partially-triaged | triaged
---
created: YYYY-MM-DD HH:MM
last_updated: YYYY-MM-DD
status: untriaged
captured_by: github-username
triaged_by: null
---
# Friction Log — YYYY-MM-DD HH:MM
---
(The header displays human-readable time; the filename uses compact sortable form HHMMSS.)
Tell the user: "Ready. Describe whatever friction you're experiencing — I'll structure it as we go."
For each item the user raises:
Keep the session flowing. The goal is low-friction logging.
When the user says "done", "that's it", "end the log", "finish", "stop", "quit", or similar:
episteme-triage-flow, onboarding-setup, docs-first-run)<timestamp>-<session-slug>.md?"
(Use the timestamp from the filename established in Step 1; place the renamed file in the same directory.)mv <original-path> <directory>/<timestamp>-<session-slug>.md
where <original-path> is the full path from Step 1 and <directory> is its parent directory.<directory>/<timestamp>-<session-slug>.md."## Item N: [one-line description]
**Trying to:** [what the logger was attempting — the goal, not the problem]
**What happened:** [narrative of the experience]
**Severity:** 🔴 blocker | 🟡 friction | 🟢 minor
**Suggested fix:** [optional — omit if none offered]
**Status:** untracked
Valid values: untracked (not yet in GitHub) or triaged → #N (linked to issue N). Always set to untracked when creating.
Example:
## Item 5: Planning skill doesn't write artifacts to disk as it goes
**Trying to:** Track the spec document in my IDE as we worked through it section by section
**What happened:** Claude walked through each planning section in chat but wrote nothing to disk. I had to explicitly ask "can you write the doc to disk as you go?" mid-session — by that point I'd had no IDE view of the growing document and couldn't share it or verify it outside the conversation.
**Severity:** 🟡 friction
**Suggested fix:** Create the artifact file before the first section and write each approved section to disk immediately after checkpoint approval — not at session end.
**Status:** untracked
Severity definitions:
Ask when ambiguity would make an item less useful for downstream triage. If you can reasonably infer the intent or severity, do so.
Good reasons to ask:
Don't ask:
mm:writing-guidelines when writing friction log items — clear, specific, jargon-freenpx claudepluginhub markdstafford/micromanager --plugin mmCaptures human-side friction during development work and records structured observations in HUMAN_FRICTIONS.md. Use after work affected by unclear requests, missing decisions, or unsafe assumptions.
Transforms error logs, screenshots, voice notes, and rough bug reports into structured GitHub issues with reproduction steps, impact, and evidence.
Captures structured lessons learned entries for organizational memory after incidents, completed projects, or significant learnings to preserve knowledge for future teams.