Skip to content
Back to skills

Finish

ASecurity

Turn a benchmark turn-log (or an already-analyzed run dir) into a report the GUI shows right away — runs analyze + plot so summary.json + report.csv AND charts/tokens_saved.svg + charts/tokens_saved.bg.svg all exist. The bare .bg.svg is the share-card PNG background; without it the downloaded/posted card has no chart lines. Also backfills old runs (--all) that predate the .bg.svg output. Use after a manual analyze, or to repair runs whose share PNG renders as a solid card. Pass --card to also...

  • 5 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added August 31, 2026
ai-agentsbash

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned August 31, 2026

npx -y skills add zapgun-ai/clawback --skill finish --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Finish?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Finish
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/zapgun-ai-finish/badge)](https://www.skillsdirectory.com/skills/zapgun-ai-finish)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: finish
description: Turn a benchmark turn-log (or an already-analyzed run dir) into a report the GUI shows right away — runs analyze + plot so summary.json + report.csv AND charts/tokens_saved.svg + charts/tokens_saved.bg.svg all exist. The bare .bg.svg is the share-card PNG background; without it the downloaded/posted card has no chart lines. Also backfills old runs (--all) that predate the .bg.svg output. Use after a manual analyze, or to repair runs whose share PNG renders as a solid card. Pass --card to also bake the share-card PNG to disk (opt-in, best-effort).
---

# clawback finish-run (report generation for the GUI)

Run `.skills/finish/scripts/finish_run.sh` from the project root. It produces the exact files
the report server serves for a run, so the run appears complete in the GUI with
a share PNG that actually carries the chart.

A run is GUI-complete when its directory under the report root (config.reportDir,
default `./runs`) holds:

- `summary.json` + `report.csv` — analyzer output (the hero figures + CSV).
- `charts/tokens_saved.svg` — the labeled on-screen chart.
- `charts/tokens_saved.bg.svg` — the BARE share-card background. The report
  GUI inlines this behind the scrim to make the downloadable / shareable PNG.
  **Missing it ⇒ the PNG is a solid card with no chart lines.**

`run_paired.sh` and `ab_block.sh` already run analyze + plot at the end of a
complete (both-arm) run, so a normal benchmark is finished automatically. Reach
for this skill for a manual analyze, a single-step re-plot, or a backfill.

## Usage

```bash
# Analyze fresh turn-logs into a run dir, then plot both SVGs:
.skills/finish/scripts/finish_run.sh runs/my-run runs/A0.ndjson runs/A5.ndjson

# Re-plot a run that already has summary.json + report.csv (adds .bg.svg):
.skills/finish/scripts/finish_run.sh runs/my-run

# Backfill EVERY run under the root that's missing its bare background:
.skills/finish/scripts/finish_run.sh --all
.skills/finish/scripts/finish_run.sh --all --root runs

# Also bake the social share card to disk (opt-in; PNG is best-effort):
.skills/finish/scripts/finish_run.sh runs/my-run --card
.skills/finish/scripts/finish_run.sh --all --card
```

## Backfill is safe and idempotent

Re-plot is a pure function of `summary.json` + `report.csv`: it never
re-spends tokens, never re-reads turn-logs, and `--all` skips any run that
already has `charts/tokens_saved.bg.svg`. So running `--all` repeatedly only
fills the gaps and is byte-identical for runs already complete.

## Bake the social share card (`--card`, opt-in)

By default `finish_run.sh` stops at the SVGs. The share PNG is rendered on
demand, client-side, when someone hits **Download/Share** in the report GUI —
so the pipeline never hard-depends on a headless browser, and the browser is
the faithful renderer. Pass `--card` to *also* bake `charts/share_card.{svg,png}`
to disk right now, for posting a card without opening the GUI:

```bash
.skills/finish/scripts/finish_run.sh runs/my-run --card     # one run
.skills/finish/scripts/finish_run.sh --all --card           # every run missing a PNG
```

`--card` delegates to `.skills/scripts/preview_card.sh`, which walks a best-effort
raster ladder — headless Chrome (faithful 1200×630) → macOS `sips` (degraded:
drops the text blur, so the headline is bedded on a scrim) → SVG-only no-op when
neither is present. A missing rasterizer leaves `share_card.svg` and skips the
PNG; it never fails the run. The `--all --card` backfill skips runs that already
have `share_card.png`, staying as cheap and idempotent as the re-plot backfill.
The same `--card` flag is on `run_paired.sh` and `ab_block.sh`, baking the card
at the tail of a full both-arm run.

## When a run can't be finished

`--all` skips (with a note, without aborting) any directory lacking
`summary.json` + `report.csv` — e.g. an aborted run, or one whose analyzer
output was never written. Analyze it first (supply its turn-logs as extra
arguments) and the plot step follows automatically.

Files in this skill

  • SKILL.md3.9 KB
  • scripts/finish_run.sh5.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.