--- name: show-me-your-work description: "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 /skill:show-me-your-work, autonomous or multi-phase runs, or work a human reviews after stepping away." disable-model-invocation: true --- Read [the Pi integration contract](../../../pi/references/integration.md) before executing this skill. # 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. ``` ts phase decision why evidence result 2026-05-24T09:02:00Z frame counted the work first, about 100 components and roughly 75 hours wanted to know the size before starting a long run commit 3a9f1c2 found 5 things to sort out before starting 2026-05-24T09:40:00Z harness took screenshots of the old version before changing anything so we can compare old against new and catch any visual change scripts/snapshot.sh, baseline/ saved 120 reference screenshots 2026-05-24T11:15:00Z widget moved the widget styles over without changing how it looks keep the change small and the result identical commit 7c21e0a, pixel-diff 0 looks identical, tests pass 2026-05-24T12:30:00Z widget threw out a helper's work because its screenshots were blank checked the real files instead of trusting its summary worktree reset reverted, tightened the instructions for next time ``` ## 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 `. 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. A `start` row names the `ts` range of the rows before it that this run did not write, and its evidence names this run, such as its agent id. Use phase `start` for nothing else. ## Where it lives By default the log is a working artifact, not committed. Keep it at `decisions.tsv` in the work dir, or `.audit/.tsv` when several efforts run at once, and leave it out of git. Commit it only when the work is ambitious enough that a reviewer needs the trail to trust the result. ## Rules - Append-only. A wrong call gets a new row that supersedes it. Never edit or delete history. - Prefer evidence produced by committed scripts over hand-made one-offs (the **encode-lessons-in-structure** principle skill). ## Audit the log against the transcript At the end of the run, audit against the active Pi session's selected ancestry per [the history contract](../../../pi/references/history.md). Call `pistack_history` with `{"action":"read","purpose":"show-me-your-work"}` and explicit `since`/`until` covering the run. Put returned `pi-session:/entry:?leaf=` references in the existing evidence column; they are stable identifiers, not clickable URLs. Narrow windows to retrieve omitted evidence and disclose gaps. Alternate-branch actions are labeled separately and must not be presented as current-branch work. Audit only this run's stretches. Each begins at its `start` row (or the first row when it created the log) and ends at the next foreign `start`. Do not audit other runs' rows; if your own work disproves one, append a superseding row. Keep one writer at a time; this convention and the helper provide no concurrent-write lock. The parent supplies bounded cited history to read-only reviewers. - Every row maps to a real action and resolving evidence. - Correct invented, aspirational, padded or contradicted entries by appending a superseding row that identifies the original timestamp/decision. Never delete or rewrite the original. - Append missed forks, pivots and abandoned approaches with their actual evidence. Fix the record with append-only corrections, not a rewritten story. ## Cross-model review of the trail Before handing back, launch an independent fresh native analyst from the configured `arena cross-judge pool`, preferring a different model family. Self-review is not a substitute. Disclose same-model review if diversity is unavailable; do not claim a required diverse-model gate passed without user acceptance. The subagent reads the audit trail and the run's transcript, then flags what the user should pay attention to. Not a redo of the work, a scan for what's suboptimal or risky. - Decisions logged with weak or absent evidence. - Verification steps skipped or claimed without proof in the transcript. - Choices that look risky in hindsight (premature, scope-creeping, papering over a symptom). - Gaps the user would otherwise miss on a casual skim. Every reply for a run that produced a trail ends with an "Attention" section. Lead with the reviewer's model on its own line (`reviewed by `), then list each flag pointing to specific rows or moments. "No flags" is a valid value. The model name is not. ## Reviewing the trail Read top to bottom, follow the evidence pointers, spot-check. GitHub renders a committed TSV as a table. `column -s$'\t' -t decisions.tsv` renders it in a terminal. ## Composing this skill Other skills route their audit trail here instead of inventing one. Reference it by name and let it own the format. Don't restate the columns.