unclear — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited unclear (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
/clearFixes: anthropics/claude-code#39975 (open feature request, no fix on roadmap)
"Muscle memory, typo, or misclick. The session is gone. There is no undo, no confirmation prompt, and no way to get back." — issue #39975
Stop hook runs at the end of every assistant turn and writes asnapshot of the current conversation transcript to .papercuts/snapshots/<timestamp>.jsonl (project-local, gitignored).
/claude-papercuts:unclear orby mentioning a recovery phrase), it reads the most recent snapshot and reconstructs a summary of what was being worked on so work can continue cleanly.
Auto-invoke when the user:
/claude-papercuts:unclear slash commandWhen invoked, follow these steps exactly.
Run this in the shell:
ls -1t .papercuts/snapshots/*.jsonl 2>/dev/null | head -5If the output is empty, the Stop hook has not run yet in this project. Tell the user:
No snapshots found in .papercuts/snapshots/. The Stop hook writes a snapshot at the end of every assistant turn, so a brand-new session has no recovery point. Future sessions in this project will be recoverable.Then stop.
Use the Read tool to load the most recent snapshot file (the first line of the ls output). It's a JSONL file where each line is one JSON object representing a turn in the prior conversation. The schema is roughly:
{"type": "user" | "assistant" | "summary" | "tool_use" | "tool_result",
"message": {"role": "...", "content": [...]},
"timestamp": "ISO-8601",
...}Different Claude Code versions may use slightly different schemas. Be permissive — read whatever's there.
Extract from the snapshot:
the last assistant message to bracket the topic
Edit, Write,Read and collect unique paths
with "Decision:", "Next:", "Blocker:", or explicit conclusions
often the most important signals to preserve
Output exactly this format (terminal-friendly, no emoji, no exclamation marks):
─── /unclear: snapshot restored ───
Source: <relative path to snapshot file>
Timestamp: <ISO-8601 from the snapshot filename, decoded>
Turns recovered: <count>
Last topic
<one-sentence summary>
Files in play
<path 1>
<path 2>
...
Recent decisions
• <decision 1>
• <decision 2>
• <decision 3>
Picking up from
"<verbatim final user message, or final assistant turn if no
pending user turn>"
─────────────────────────────────After printing the recap, do not take any further action. Wait for the user to confirm or redirect. They may want to:
Match the user's intent on the next turn. Do not assume.
alphabetically last one (timestamps are UTC and lexicographically ordered).
recent snapshots are unreadable, tell the user honestly and stop.
read it, but flag in the recap: "Note: snapshot was taken from <other path> — context may not match this directory."
Optional .papercuts/config.json in the project root:
{
"unclear": {
"snapshot_retention": 5,
"snapshot_dir": ".papercuts/snapshots"
}
}Defaults are sensible. Most users never need to touch this.
Claude Code's transcript is internal state. The skill gives a human-readable + Claude-readable recap that lets the conversation continue from a known good point.
/clear. The Stop hook simplysnapshots every turn so a snapshot is always available before the next /clear.
.papercuts/snapshots/ in yourproject. Add .papercuts/ to .gitignore if not already.
The Stop hook writes the transcript to a local file in your project's .papercuts/ directory. No network calls. No telemetry. If you don't want local persistence either, disable the hook in your Claude settings — the slash command will simply report "no snapshots found."
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.