visual-summary
Skill0 starsChanged 27 days agoMITView on GitHub
Use when Kyle wants to SEE what happened instead of reading about it — one self-contained HTML page summarizing a conversation, a branch, or an uncommitted worktree as charts, diagrams, and short labels instead of prose. Saves the page to `~/Projects/_visual-summaries/` and publishes it as a claude.ai Artifact every run (`--no-publish` keeps it local). Triggers: "/visual-summary", "visual summary", "summarize this visually", "make me a picture of what we did", "chart what changed on this branch", "show me the shape of this work", "one-page summary of the diff". NOT for: a written prose recap, a module dependency map (architecture-viewer), a paste-able prompt for a fresh session (/handoff-session), or judging whether a diff is safe to merge (/code-review).
In this repository11 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- architecture-viewerSkill
- daySkill
- pre-compactSkill
- retireSkill
- reweaveSkill
- teach-researchSkill
- wayfinder-mapSkill
- youtube-breakdownSkill
- youtube-transcriptSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 96
Write one self-contained HTML file: No external resource of any kind, so the file opens from disk years from now.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Visual Summary — one page, read at a glance
Kyle's brief, verbatim: "Create a single page HTML summary of the [conversation | branch | work tree]. Make it visual and digestible without additional cognitive fatigue. Minimal text, clear flow of information. Opt for charts and diagrams over long explanations."
So the deliverable is a picture of the work, not an illustrated essay. The page answers what happened, how much, and in what order from across the room. Anyone who has to read a paragraph to get the answer has been failed by the page.
Run this at low effort. The judgment here is which three or four visuals earn the page — not deep analysis. Gather, pick, render, deliver.
Parse $ARGUMENTS
- Mode —
conversation(default) |branch|worktree. Say which mode you picked before gathering anything. --out <dir>→ write the HTML there instead of the default location.--no-publish→ save the local file only. Publishing is on by default, every run; this is the escape hatch for a page Kyle doesn't want a link to.
The three modes
Each mode sees a different thing, and one of them can be empty. Check the availability line before gathering, and stop with the stated redirect rather than rendering a page about nothing.
| Mode | What it summarizes | Gather | Empty when |
conversation | This session's transcript only | What you did this session: the arc of decisions, the files touched, what was tried and abandoned, what's unresolved | You were launched fresh into this session. There is no transcript to read and no way to recover one — say so and offer branch or worktree |
branch | The diff against the merge-base with the repo's default branch | Resolve the default branch, never hardcode it — git symbolic-ref refs/remotes/origin/HEAD, falling back to the local default — and prefer origin/<default> over the local ref, which goes stale and silently widens the diff. Then git merge-base, git diff --stat <base>...HEAD, git log --oneline <base>..HEAD, and the diff itself for what actually changed | The branch has no commits past the merge-base — offer worktree |
worktree | The uncommitted working tree | git status --short first, because it is the only one of these that sees untracked files — git diff HEAD never reports them, and a tree of nothing but new files is the ordinary shape of a docs or scaffolding session. Then git diff HEAD --stat and the diff for what changed, plus a read of each ?? path for what arrived | Nothing modified and nothing untracked — offer branch |
In branch and worktree mode, read enough of the diff to say what the change
does, not just which files moved. A page that charts line counts and names no
mechanism is a page of arithmetic.
The visual contract
Checkable bounds, because "minimal text" loses to the drift toward explaining.
- Every claim on the page is measured. Line counts, commit counts, file names, decisions actually made. No estimated percentages, no invented severity scores, no round-number filler. A thing you cannot measure is a thing you leave off.
- Three to five visuals, and a headline. Below three, a list would have done. Above five, the page needs scrolling and scanning, and the glance is gone.
- One prose block, the headline claim — at most two sentences, at the top, saying what this work is. Everything else is a chart, a diagram, or a label.
- Ten words per label. A caption longer than that is an explanation wearing a caption's clothes; cut it or move the content into the visual.
- One flow, top to bottom. The page reads in a single column in one direction: headline → what changed → how much → what's open. A reader should never have to choose where to look next.
- Honest emptiness. A section with nothing in it is omitted, never padded. No "no blockers identified" tiles.
Build it
- Gather per the mode table. Keep the raw numbers; the page cites them.
- Pick the visuals. Match the shape to the content rather than reaching for
the same four every run:
- A timeline or flow for the arc — commits in order, or the sequence of decisions that got here. Almost always earns its place.
- A bar or treemap for magnitude — churn by area, files by size of change. One magnitude chart, not three.
- A before → after diagram for the mechanism that actually changed. This is
the visual that makes the page worth more than
git diff --stat, and it is the one most often skipped. Draw it when a mechanism changed. - Chips or cards for discrete facts — decisions made, files touched, open questions. Not a table pretending to be a card.
Load the design skills before writing any HTML. They own these rules; this skill does not restate them:
artifact-design— required before writing the page, every run.dataviz— before writing any chart: palette, form heuristic, mark specs.artifact-diagramming— before drawing any diagram, including the before → after.
The
Artifacttool's own description is the authority on page constraints — title, theme tokens, the CDN allowlist, favicon. Follow it rather than guessing.- Write one self-contained HTML file. No external resource of any kind, so
the file opens from disk years from now. Default path, when
--outis absent:~/Projects/_visual-summaries/YYYY-MM-DD-<project>-<slug>.html— outside the repo being summarized.<project>is a short tag for the repo,<slug>a 3–5 word kebab-case title. The page never lands in a repo by default: it is generated output, no repo ignores it, and aconversationpage carries a private session's contents into whatever tree it sits in.--outis how Kyle asks for one in a repo anyway.
Deliver
SendUserFilethe HTML. It is meant to be opened, not described.- Publish, unless
--no-publish:Artifactwith a short distinctive title (the branch or session's subject, not "Visual Summary"), favicon"📊", and a one-sentencedescription. Hand Kyle the link. - Report in chat in three lines: mode and what it covered, the local path, the Artifact link. The page is the summary — don't also summarize it in chat.
- Commit nothing. The default path is outside every repo, so there is no git
step here at all — not a branch, not a commit, not a PR. A page written into a
repo by
--outis committed only if Kyle asks for that too.
What it deliberately does not do
- No judgment on the work. It shows what happened; it does not grade the diff,
flag risk, or recommend a next move. Review is
/code-review's job. - No cross-session history. One conversation, one branch, or one tree. It never reads past session logs to assemble a longer story.
- No live page. Static HTML. It does not refresh, poll, or track state.
Definition of done
The mode was named before gathering; every number on the page traces to something
measured this run; the page carries three to five visuals, one headline, and no
second prose block; artifact-design was loaded before the HTML was written, with
dataviz and artifact-diagramming loaded for whatever the page actually
contains; the file is self-contained at its reported path; it was sent with
SendUserFile and published (or --no-publish was passed); and chat got the three
lines rather than a retelling.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

