papercuts
GitHub记录仓库内真实、可复现且可通过修改仓库代码或配置解决的摩擦点(如混淆的设置、易错命令、误导性错误),旨在减少后续贡献者的时间成本。同时支持审查和去重现有条目,确保仅记录仓库本身能解决的问题。
触发场景
安装
npx skills add every-app/open-seo --skill papercuts -g -y
SKILL.md
Frontmatter
{
"name": "papercuts",
"metadata": {
"internal": true
},
"description": "Log genuine, recurring repository friction to .agents\/PAPERCUTS.md — confusing setup, a flaky repo command or script, a misleading in-repo error, stale generated files, or a non-obvious gotcha that will cost the next contributor time. Also use to review, deduplicate, and resolve existing entries. Gate hard before logging: only friction the repository itself can fix counts. Never log the agent's own sandbox\/permission errors, shell-scripting mistakes, transient flakiness, or third-party tool quirks the repo can't change."
}
Papercuts
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.)
版本历史
- d7ea785 当前 2026-10-19 16:09
-
0ffff93
2026-09-22 20:41
修复预览传播检查和本地排名跟踪种子,梳理 Papercuts 并澄清开发工作流
- cd6a782 2026-08-20 07:33


