About papercuts
A repository skill for recording small, reproducible friction that can be fixed in the repository. It helps contributors distinguish actionable project issues from environment failures, transient glitches, and personal mistakes.
Key features
- 01Two-part issue qualification test
- 02Duplicate checks before logging
- 03Timestamped papercut entries
- 04Guidance for review and cleanup
- 05Triage and prioritization criteria
Use cases
- 01Recording recurring setup friction
- 02Filtering environment-specific failures
- 03Reviewing an existing papercut log
- 04Prioritizing small repository fixes
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ every-app/ open-seo --skill papercutsAfter installing, type/papercutsin Claude Code to confirm it loaded.
Details
From the project READMEPapercuts
Capture small friction in the moment without derailing the current task. Aggregated entries show where the repository needs sanding down — so the bar is that a different contributor would hit the same thing, and the repository can do something about it.
The two-question test
Log it only if both are true:
- Reproducible for anyone. A different person, on a fresh checkout, working in this repo would hit the same friction. It is not specific to your sandbox, shell config, machine, network, or a one-time hiccup.
- Fixable in the repo. A change to the repo's code, config, scripts, or docs would prevent or reduce it.
If either answer is "no," push through it and move on — do not log it.
Do NOT log
- Your environment's failures. Sandbox
EPERM/listen/ IPC-socket errors, blocked network orfetch failed, permission denials, missing system tools. That is the runner, not the repo. - Your own shell mistakes. Reserved or special variable names (
status,path), unquoted globs, a broken login-shell hook. Fix the command — there is nothing in the repo to sand down. - Transient flakiness. A command that succeeded on retry with no repo-side cause (a network blip, a hung push, a slow mirror).
- Local state you corrupted. A partial
node_modulesafter branch-switching, a stale dev-server port, a dirty cache. Re-run the install or cleanup. - Third-party or beta-tool limitations the repo can't change — unless the fix is a repo-side workaround worth writing down (then log that workaround).
- Product or code correctness bugs (fix now or track as real work), and what you accomplished (that belongs in the task summary).
- Secrets, credentials, personal data, raw customer payloads, or sensitive paths.
When something fails, first ask "is this the repo, or is this me/my environment?" Only the former is a papercut.
Log proactively
-
Search
.agents/PAPERCUTS.mdfor an equivalent entry and avoid duplicates. -
Append one unchecked item under
## Openusing this format:- [ ] `YYYY-MM-DDTHH:MM:SSZ` — `agent` — <friction, and the smallest useful fix or workaround>. -
Keep it to one or two sentences: a current example (command/error or affected path), who it blocks or what time it wastes, and the smallest useful repo-side fix. Lead with the friction, not with what you were doing.
-
Continue the original task. Do not expand a papercut into unrelated work.
Use UTC timestamps and a short agent label (codex, claude, human). Add a
PR or task identifier only when it helps future triage.
Review or resolve
Only mine a whole session or do a broad review when the user explicitly asks.
For a review or prioritization request, inspect and recommend; do not edit the log or implement fixes unless the user also asks for cleanup or implementation. Carry out an authorized cleanup using the same triage:
- Re-run the two-question test on every open entry; recommend removing entries that fail it (environment/shell/flake noise that slipped in).
- Deduplicate and group related entries.
- Check whether each surviving papercut still reproduces. Distinguish reproduced failures, source inspection, and historical reports you could not verify.
- Prioritize current impact against review and maintenance cost. Prefer an existing command or a short documentation fix over new helpers, dependencies, or setup hooks. Defer hypothetical improvements until a concrete need appears.
- For an authorized cleanup, remove noise, consolidate duplicates, and implement
the agreed fixes. Move fixed items to
## Resolved, check them, and append the resolving date or commit. Keep deferred reports separate from actionable open work, with a reason and a concrete trigger to revisit. Route real bugs to normal issue/fix work; route recurring review-policy gaps todocs/maintainers/review-guidelines.md.
Preserve useful history for genuinely-resolved papercuts; do not delete them merely to make the file shorter. (Noise that never belonged — see step 1 — is different: remove it.)