Agent skill · operations · cursor
show-me-your-work
Keep a reviewable decision trail for long-running or unattended work: a TSV log with one row per decision (what, why, evidence, result). Local by default; commit it when a reviewer needs the trail to trust the result. Use for /show-me-your-work, autonomous or multi-phase runs, or work a human reviews after stepping away.
Why this skill is useful
Codifies a standard procedure for maintaining a decision log that the AI could infer but now doesn't have to guess.
What it needs
About 4k tokens when loaded. Last updated 2026-08-06. 2,555 stars on the source repository.
What this skill does
Show me your work Keep one canonical log. The format A single TSV file, one row per decision. Cells stay single-line. Evidence is a pointer, not prose. Copy references/decision-log-template.tsv (the header row) to start a clean log. Columns: ts. ISO8601 timestamp. phase. The phase or workstream. decision. What was chosen or done, one line. why. The reason in plain words. If a principle drove it, say it plainly, not as a jargon tag. evidence. A link or path that proves it: commit SHA, PR number, file:line, or an artifact, trace, or screenshot path. Never a paragraph. result. The outcome or predicate state: tests green, reverted, pixel-diff 0, INCONCLUSIVE, open. An example, plain-spoken so a reviewer reads it at a glance. Logging a row Write each entry the way you'd tell a teammate what you did. Plain words, concrete actions, no AI speak or abstract jargon (the unslop skill applies to log text too). Use the helper scripts/log.sh <logfile> <phase> <decision> <why> <evidence> <result>. It stamps ts, writes the header on first use, strips stray tabs/newlines, and prefixes any cell starting with =, +, -, or @ with a single quote. A bare printf appending a row works too, but mind those same bytes if cells come from generated or user-supplied text. Log decision points and checkpoints, not every action: a fork chosen, a unit completed with its verification result, a pivot or revert with its trigger, a blocker surfaced, a gate fixed. For loop runs, one row per iteration. Skip the trivial and self-evident. A run is one agent conversation, including its later turns and any summary of it. A pickup, a replacement agent, or a new chat starts a new run. When a run adds to a log that already has rows, its first row has phase start, and so does its first row after another run's start row. So a run that comes back to a log in a later turn first reads the log's last rows to see whether another run wrote since. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills cursor/show-me-your-work