putdown — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited putdown (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.
The user is about to clear the context window and start fresh. Your job: capture everything a new agent would need so the next session loses no momentum.
Renamed from/checkpointon 2026-06-12 (paired with/resume→/pickup) because those names shadow Claude Code built-ins (/checkpointaliases/rewind;/resumeopens the conversation picker). On 2026-06-13 the handoff files also moved from.checkpoints/→.putdowns/to drop the old term entirely. If you ever see a stray.checkpoints/folder, it predates the move — treat it as a putdown.
Before writing anything, gather context. Run these in parallel:
pwd — where the session is rootedgit status and git log --oneline -10 — if it's a git repo (skip silently if not)git diff --stat — what's changed, uncommittedCLAUDE.md if one exists in the CWD~/.claude/projects/<project-slug>/memory/MEMORY.md to know which memory files existecho "$CLAUDE_CODE_ENTRYPOINT" — which surface this is. cli = terminal (standalone or VSCode's integrated terminal); anything else (or empty) = VSCode's visual-editor chat panel or another GUI surface. This decides the clear-context instructions in Step 5.Also pull from your conversation memory:
Update auto-memory only for things that match the memory rules in the system prompt (user, feedback, project, reference). Do not save ephemeral conversation state to memory — that goes in the handoff file, not memory.
Specifically:
project_*.md memory exists for this project, update it with the current state (status, what's next, blockers). Always convert relative dates to absolute dates.user_profile.md.If there's a CLAUDE.md in the current project directory:
Save to ~/.claude/putdowns/<project-slug>/<YYYY-MM-DD-HHMM>.md. Create the per-project subfolder if it doesn't exist (mkdir -p).
Determining `<project-slug>`:
/putdown jessica), use that as the slug. This is the right choice when the CWD is a parent folder containing multiple projects (e.g. CWD is CLAUDE but the work is about jessica).jessica, BookmarkSync).CLAUDE) and no argument was given, ask the user which project this putdown is for before saving — don't dump it under the parent folder name.Use this structure exactly — the next agent will be reading it cold:
# Putdown: <project> — <date> <time>
**CWD**: <absolute path>
**Branch / git state**: <branch, ahead/behind, dirty file count>
**Session goal (this conversation)**: <one paragraph — what the user came to do>
## Where we are right now
<2-4 sentences. The single most important section. If the next agent reads only this, they should be unblocked.>
## What's done this session
- <bullet>
- <bullet>
## What's in progress (resume here)
- <task>: <file:line>, <what state it's in>, <what's left>
## Immediate next steps (in order)
1. <concrete action with file path>
2. <concrete action>
3. <concrete action>
## Blockers / open questions for the user
- <thing waiting on user decision, or "none">
## Key decisions made & why
- <decision>: <rationale — especially anything non-obvious from the code>
## What NOT to redo
- <approaches already tried and rejected, with why — saves the next agent from repeating>
## Environment state
- Dev servers running: <list or "none">
- Background processes: <list or "none">
- Modified-but-uncommitted files: <list — should be "none" after Step 4.5 commits>
- Pushed to origin: <branch @ short SHA — filled in by Step 4.5; or "no remote" / "PUSH FAILED: <why>">
- Anything the user needs to manually do before resuming: <list or "none">
## First message to paste in the new session
> <Literal text the user should send. Easiest: just have them type `/pickup` — the pickup skill will load this latest putdown automatically. Only write a custom message if there's something the next agent needs to know that isn't captured in the sections above.>Skip this step entirely if the CWD is not a git repo.
<repo>/.putdowns/<same-YYYY-MM-DD-HHMM>.md (mkdir -p .putdowns). This is what makes the putdown readable from Claude Code on the web. For public repos and Pages-served repos, skip the copy — committed putdowns there would be published; the local file in ~/.claude/putdowns/ is the only copy. Check visibility with gh repo view --json visibility or the project CLAUDE.md; if still unsure, skip the copy and say so.git status --porcelain and review the file list. Never stage .env* (except .env.example), secrets*, *.pem, *.key, or credential files — they should already be gitignored; if one shows up untracked, add it to .gitignore instead of committing it. Never use git add -f.git push, or git push -u origin <branch> for a new branch). Then update the handoff file's "Pushed to origin" line with <branch> @ <short SHA> — and refresh the in-repo copy if it is now stale. If there is no remote or the push fails, write that prominently in the handoff file and tell the user in Step 5 — never fail silently; unpushed work is invisible to web sessions.After saving, print to chat — in this exact order:
CLAUDE_CODE_ENTRYPOINT value you read in Step 1 — the right way to free context differs by surface, so don't give the wrong one:CLAUDE_CODE_ENTRYPOINT is cli) — this covers both a standalone terminal and VSCode's integrated terminal. Here /clear genuinely frees the context window. Tell the user to type /clear, then /pickup. No window juggling needed./clear won't load them — the process must be restarted. Tell them to fully quit (Ctrl+C twice, or /exit) and relaunch claude, then /pickup.CLAUDE_CODE_ENTRYPOINT is anything other than cli, or empty) — /clear does not reliably free context here. Tell the user to `Cmd+W` to close this Claude Code window, then open a new Claude Code window in VSCode. (Closing affects only this window — other VSCode windows stay untouched. Note: Cmd+Shift+P → "Developer: Reload Window" does NOT actually free the context window — you confirmed this.)/pickup — what they type once the context is cleared (in the CLI, right after /clear; in a new/reopened window otherwise)<branch> @ <short SHA> pushed to <repo> — or a prominent warning if there was no remote or the push failed (that work is invisible to Claude Code on the web until pushed)Keep your final reply tight — the handoff document does the heavy lifting; don't summarize it again in chat.
<workspace-root>/jessica/pipeline/generate.py:142, the --seed flag isn't being passed to ComfyUI; need to add it to the request payload" is useful.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.