end-work

An end-of-session command that updates a project board from actual Git commits and adds the session to a case study. It first proposes all board changes as one batch.

In plain words
What is it for?
Closing a coding session by reviewing recent commits, checking the board, asking about context commits cannot show, and preparing board updates.
Why use it?
It keeps planning notes aligned with work that was really completed, rather than leaving stale status information. It also captures unfinished, blocked, and newly discovered work.

Command

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/vldesigns/casebook/end-work
Clone the repo
git clone --depth 1 https://github.com/vldesigns/casebook
Per session 18 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,546 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00018 $0.01546
Opus 5 $0.00009 $0.00773
Sonnet 5 $0.00004 $0.00309
Haiku 4.5 $0.00002 $0.00155

Measured 2d ago against content hash 50c12b1f8bb1, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

end-work scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

commands/end-work.md · 118 lines

How it starts

The opening of the file, as written. The whole thing — 118 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Before we close out, update the Casebook board so the next session reflects what actually happened today, not stale notes from yesterday. Propose all changes as a single batch before executing anything.

Step 1: Read context.

  • Run: git log --pretty=format:'%h %s' -n 20 --author="$(git config user.email)" to see my commits from this session.
  • Run: "$CLAUDE_PLUGIN_ROOT/scripts/tracker" list to see the current board state (which cards already exist and where).

Step 2: Reflect on what actually happened in this session.

  • What did I actually finish (with commits backing it up)?
  • What's currently mid-flight that I'd want to pick up next time?
  • What got blocked on a dependency, a decision, or an external answer?
  • What new follow-up emerged that wasn't on the board before?
  • Did today's focus shift? Should the focus line change for next session?

Step 3: Ask me what the commits can't show.

  • Ask ONE short question: "Before I propose updates — anything about this session the commits can't show? Stakeholder pushback, a pivot, a decision you're unsure about, something that took longer than it should have. A sentence or two is plenty; 'nothing' is fine."
  • Fold what I say into (a) and (b) below. Nothing executes here — both are proposals only, gated behind Step 5 approval like everything else. (a) Add to the Step 4 batch (do not run yet): "$CLAUDE_PLUGIN_ROOT/scripts/tracker" note <card-id> "Session note: ..." --append on the relevant card — executed only after my approval in Step 5. (b) Fold into the Running Log draft (Step 7) — write user-reported context as fact, with attribution to my own account, and where I expressed a feeling or judgment, quote or lightly edit MY words into a filled › My take: — never replace them with your (Claude's) own phrasing of my opinion.
  • If I say nothing, skip silently. No follow-up, no guilt trip.

Step 4: Propose updates against the board. For each piece of work, pick exactly one action.

Existing card moved status: "$CLAUDE_PLUGIN_ROOT/scripts/tracker" move done|inprogress|blocked|upnext

Existing card earned commit links: "$CLAUDE_PLUGIN_ROOT/scripts/tracker" link ,

Existing card has new context worth appending: "$CLAUDE_PLUGIN_ROOT/scripts/tracker" note "Session update: ..." --append

Genuinely new work that has no existing card: "$CLAUDE_PLUGIN_ROOT/scripts/tracker" add inprogress|blocked|upnext|done "Short title" --notes "Specific files, blockers, or decisions" --commits

Focus shift for next session: "$CLAUDE_PLUGIN_ROOT/scripts/tracker" focus "Concrete next thing"

Step 5: Show me the full proposed batch of commands as a code block, with a one-line reason next to each. Wait for my approval, then run each command in order and report any failures inline.

Step 6: Screenshot capture (optional).

  • Ask ONE short question: "Want to capture screenshots of what you built today? Paste one now, or say no."
  • If I decline, skip silently — no follow-up, go straight to Step 7.
  • If I paste an image:
    • Locate the pasted image's actual file path (Claude Code exposes this for CLI pastes). If no accessible file path can be found for the paste, say so plainly and ask me to save the file myself and give you a path instead — retry this same screenshot with that path. If I can't provide one either, skip this screenshot and move on — never block the rest of end-work on this.
    • Ask me for a short caption.
    • Run mkdir -p .casebook/screenshots and copy the file to .casebook/screenshots/<YYYY-MM-DD>-<slug>.<ext>, where <ext> is the source file's actual extension (not assumed to be .png) and <slug> is the caption lowercased with non-alphanumeric characters collapsed to -. If that filename already exists, try -2, -3, etc. — never overwrite an earlier capture.
    • Ask: "Another one, or done?" If I paste another image, repeat this whole sequence (locate its path, ask for a caption, copy it) for the new paste. If I say done (or don't paste again), stop.
  • No cap on how many — I end the loop by saying done. Whatever comes out of this step (zero, one, or many saved path + caption pairs) feeds into the Running Log draft in Step 7.

Read the full file on GitHub · 118 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 118 lines · 18 tokens per session scan A 50c12b1f8bb1

Subscribe to this mod's changes

end-work is a command published in the GitHub repository vldesigns/casebook (1 stars, last pushed 1mo ago), licensed MIT. It adds 18 tokens to every session and 1,546 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.