Agent Friction Ledger
Turn repeatable agent friction into a small, actionable local artifact. This skill is opt-in and never sends session data outside the workspace.
Trigger
Use only when:
- the user explicitly asks for a friction report or review.
Do not run merely because a task had normal shell output, a single failed command, or a clean completion.
Capture Rules
Record only friction that is actionable and evidenced by the current task:
- repeated blocker or retry loop;
- misleading, incomplete, or contradictory error;
- missing, stale, or hard-to-find documentation;
- tool, provider, environment, or version incompatibility;
- manual workaround that should become a durable improvement.
Do not record every tool call, full conversation, raw logs, private URLs, credentials, personal data, client data, or unrelated working-tree changes.
Workflow
- Name the task boundary and identify only the material friction events.
- For each event, record:
symptom -> attempted -> root cause -> resolution -> durable fix.
- Mark confidence: confirmed, likely, or unresolved. Do not turn a guess into a root cause.
- Redact or omit sensitive content before writing.
- Write a local report to an ignored or private location only. Default to
.git/agent-friction/YYYY-MM-DD-<task>.md unless the repo defines another approved ignored path.
- Group action items under
docs, tooling, skill/process, and research.
- Propose the smallest durable change, but do not apply it without normal task authorization.
Report Shape
# Agent Friction Report: <task>
## Scope
## Material Friction
### <short label>
- Symptom:
- Attempted:
- Root cause: <confirmed|likely|unresolved>
- Resolution:
- Durable fix:
## Action Items
### Docs
### Tooling
### Skill / Process
### Research
## Decision
- Keep local / propose follow-up / no durable change
Guardrails
- Local Markdown only. Never POST to a viewer, telemetry endpoint, or external API.
- Never write to a tracked repo path by default. If no ignored/private location exists, stop and ask before writing.
- A friction report is not permission to create a ticket, alter a skill, edit docs, or change a process.
- Prefer one concise report over a growing per-turn buffer.
- If the task contains regulated, personal, client, deal, financial, or credential data, record the abstract failure mode only.
Pair With
repo-debugging-ledger for hypothesis-driven technical diagnosis;
durable-context-maintenance when an accepted fix belongs in repo context;
token-usage-audit when the friction is context or tool-output waste;
skillopt-evolve-skills and bounded-evaluation when an accepted skill change needs validation.
Provenance
Adapted from aurorascharff/agent-friction-skill, narrowed to explicit, local-only, privacy-safe friction capture with proposal-gated follow-up.
1---2name: agent-friction-ledger3description: Capture recurring agent-development friction as a local, privacy-safe Markdown report. Use only when the user explicitly requests a friction review of blockers, misleading errors, missing documentation, incompatible tools, or manual workarounds that should improve a doc, tool, skill, process, or evaluation.4license: MIT5---67# Agent Friction Ledger89Turn repeatable agent friction into a small, actionable local artifact. This skill is opt-in and never sends session data outside the workspace.1011## Trigger1213Use only when:1415- the user explicitly asks for a friction report or review.1617Do not run merely because a task had normal shell output, a single failed command, or a clean completion.1819## Capture Rules2021Record only friction that is actionable and evidenced by the current task:2223- repeated blocker or retry loop;24- misleading, incomplete, or contradictory error;25- missing, stale, or hard-to-find documentation;26- tool, provider, environment, or version incompatibility;27- manual workaround that should become a durable improvement.2829Do not record every tool call, full conversation, raw logs, private URLs, credentials, personal data, client data, or unrelated working-tree changes.3031## Workflow32331. Name the task boundary and identify only the material friction events.342. For each event, record: `symptom -> attempted -> root cause -> resolution -> durable fix`.353. Mark confidence: confirmed, likely, or unresolved. Do not turn a guess into a root cause.364. Redact or omit sensitive content before writing.375. Write a local report to an ignored or private location only. Default to `.git/agent-friction/YYYY-MM-DD-<task>.md` unless the repo defines another approved ignored path.386. Group action items under `docs`, `tooling`, `skill/process`, and `research`.397. Propose the smallest durable change, but do not apply it without normal task authorization.4041## Report Shape4243```markdown44# Agent Friction Report: <task>4546## Scope47## Material Friction48### <short label>49- Symptom:50- Attempted:51- Root cause: <confirmed|likely|unresolved>52- Resolution:53- Durable fix:5455## Action Items56### Docs57### Tooling58### Skill / Process59### Research6061## Decision62- Keep local / propose follow-up / no durable change63```6465## Guardrails6667- Local Markdown only. Never POST to a viewer, telemetry endpoint, or external API.68- Never write to a tracked repo path by default. If no ignored/private location exists, stop and ask before writing.69- A friction report is not permission to create a ticket, alter a skill, edit docs, or change a process.70- Prefer one concise report over a growing per-turn buffer.71- If the task contains regulated, personal, client, deal, financial, or credential data, record the abstract failure mode only.7273## Pair With7475- `repo-debugging-ledger` for hypothesis-driven technical diagnosis;76- `durable-context-maintenance` when an accepted fix belongs in repo context;77- `token-usage-audit` when the friction is context or tool-output waste;78- `skillopt-evolve-skills` and `bounded-evaluation` when an accepted skill change needs validation.7980## Provenance8182Adapted from `aurorascharff/agent-friction-skill`, narrowed to explicit, local-only, privacy-safe friction capture with proposal-gated follow-up.