Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

**Why really?** The agent that wrote your code is the worst judge of it.

**What?** Every coding-agent CLI (Claude Code, Codex, Antigravity, Qwen, Vibe, Grok) reads your diff so you don't have to (you weren't going to). Read-only, in parallel; you stay in your agent, it makes the call. (Read-only is enforced by each agent's own CLI - except Antigravity, which has no such switch and is held to it by its plan mode instead. If the tree moves during a run, you get told.)
**What?** Every coding-agent CLI (Claude Code, Codex, Antigravity, Qwen, Vibe, Grok, Kimi) reads your diff so you don't have to (you weren't going to). Read-only, in parallel; you stay in your agent, it makes the call. (Read-only is enforced by each agent's own CLI, with two exceptions: Kimi has its write and shell tools removed, and Antigravity is held to it by its plan mode. If the tree moves during a run, you get told.)

**How?** One tiny script that installs, updates, and runs all the agents for you, on Windows, macOS, and Linux. No setup, no server, no MCP.

Expand All @@ -16,20 +16,20 @@ Paste this into Claude Code, Codex, or your coding agent of choice:

> Create a "/postmortemthis" skill to review whatever we are working on. Download
> https://github.com/Softeria/postmortemthis/releases/latest/download/postmortemthis.cmd
> once into the skill folder (re-fetch only if missing), then run the local copy — it runs
> once into the skill folder (re-fetch only if missing), then run the local copy. It runs
> one prompt across several coding agents at once. Run it as `echo "…" | sh postmortemthis.cmd`.

Then, before the real postmortem, run **/postmortemthis**.

That prompt is the whole install — your agent writes the skill from it. **Tweak the wording before you hit enter** (different agents, a sharper review focus, your own house rules); the [skill in this repo](skills/postmortemthis/SKILL.md) is just a starting point, and your agent will happily make one as good or better. The script is the only fixed part.
That prompt is the whole install: your agent writes the skill from it. **Tweak the wording before you hit enter** (different agents, a sharper review focus, your own house rules); the [skill in this repo](skills/postmortemthis/SKILL.md) is just a starting point, and your agent will happily make one as good or better. The script is the only fixed part.

## Auth

Your own logins where you have them. For the rest, `sh postmortemthis.cmd login` (OpenRouter OAuth) or set `OPENROUTER_API_KEY`. Usage bills to your account; this resells nothing.

Even Grok works on OpenRouter: its own CLI can't reach OpenRouter, but its model (`x-ai/grok-build-0.1`) is there, so postmortemthis runs it through an OpenAI-compatible harness — no xAI subscription needed, just the key.
Even Grok works on OpenRouter: its own CLI can't reach OpenRouter, but its model (`x-ai/grok-build-0.1`) is there, so postmortemthis runs it through an OpenAI-compatible harness. No xAI subscription needed, just the key.

Run `sh postmortemthis.cmd setup` for a guided pass over every agent — it pokes each one, then lets you log in (many have a free or already-paid tier), force OpenRouter, or disable it, and can fire a test prompt at the end. Choices are saved and honored on every run.
Run `sh postmortemthis.cmd setup` for a guided pass over every agent: it pokes each one, then lets you log in (many have a free or already-paid tier), force OpenRouter, or disable it, and can fire a test prompt at the end. Choices are saved and honored on every run.

## CLI

Expand Down
20 changes: 17 additions & 3 deletions assets/overview.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/social-preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 19 additions & 18 deletions skills/postmortemthis/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: postmortemthis
description: Fan one prompt across every coding agent on this machine (Claude Code, Codex, Antigravity, Qwen, Vibe, Grok) at once and synthesize their replies. A multi-agent second opinion on anything — a diff, an idea, a design, a question. Use when the user wants several agents to weigh in, asks for a "postmortem" or a second opinion, or runs /postmortemthis.
description: Fan one prompt across every coding agent on this machine (Claude Code, Codex, Antigravity, Qwen, Vibe, Grok, Kimi) at once and synthesize their replies. A multi-agent second opinion on anything: a diff, an idea, a design, a question. Use when the user wants several agents to weigh in, asks for a "postmortem" or a second opinion, or runs /postmortemthis.
---

# postmortemthis
Expand All @@ -12,24 +12,25 @@ skill builds the prompt, runs the fan-out, and synthesizes the answers.
It is **read-only by default**: it reports what the agents say, it does not edit, stage,
commit, or push. Applying fixes is a separate, explicit step.

Each agent is held read-only by its own CLI - a sandbox, a tool allowlist, a deny-on-approval
mode - with one exception: Antigravity has no such switch, so it runs in its plan mode, which
refuses to write but is a persona rather than a sandbox. The wrapper compares `git status`
Each agent is held read-only by its own CLI: a sandbox, a tool allowlist, a deny-on-approval
mode. Two have no such switch. Kimi runs with its write and shell tools removed, and gets the
diff in its prompt instead. Antigravity runs in its plan mode, which refuses to write but is a
persona rather than a sandbox. The wrapper compares `git status`
before and after the run and says so in the run notes if the tree moved.

## 1. Decide what to ask

The prompt is whatever the user wants several agents to weigh in on. There is **no git
requirement** — a postmortem can be about anything:
requirement**. A postmortem can be about anything:

- **Reviewing current work** — the sensible default when the user just runs
- **Reviewing current work**: the sensible default when the user just runs
`/postmortemthis` inside a repo with changes. Scope it to the uncommitted + branch
changes and ask for bugs, risks, and edge cases. Don't paste the diff into the prompt —
changes and ask for bugs, risks, and edge cases. Don't paste the diff into the prompt;
the agents read the working tree themselves.
- **An idea, plan, design, or question** — even in an empty folder. Just pass it through;
- **An idea, plan, design, or question**, even in an empty folder. Just pass it through;
no repo, no diff needed.
- **Whatever the user named** as an argument (e.g. `/postmortemthis is this API shape
sane?`) — use that as the prompt directly.
sane?`): use that as the prompt directly.

If it's genuinely ambiguous what they want a second opinion on, ask one short question
rather than assuming a diff.
Expand All @@ -38,7 +39,7 @@ Keep the prompt to a focused single line about **what to look for**.

## 2. Get the wrapper (once)

Use the local copy bundled next to this SKILL.md. Only fetch it if missing — don't
Use the local copy bundled next to this SKILL.md. Only fetch it if missing; don't
re-download and execute a remote script on every run:

```bash
Expand All @@ -50,11 +51,11 @@ sh "$cmd" doctor # optional: show which agents are wired up
```

If `doctor` reports zero agents, point the user at `sh "$cmd" login` (OpenRouter OAuth) or
setting `OPENROUTER_API_KEY`. Don't run `login` yourself — it's interactive.
setting `OPENROUTER_API_KEY`. Don't run `login` yourself, it's interactive.

## 3. Run

Pipe the prompt on stdin. This drives several agents, so it can take a few minutes — give
Pipe the prompt on stdin. This drives several agents and can take a few minutes, so give
it a generous timeout, and persist the output so a killed or scrolled-past run isn't lost:

```bash
Expand All @@ -71,13 +72,13 @@ Announce the log path before the wait. Run the fan-out **once** per request; don
## 4. Synthesize

Read from the log file, not the inline scrollback (which can truncate). Each agent answers
independently, so you'll get several overlapping opinions — don't just dump them all:
independently, so you'll get several overlapping opinions. Don't just dump them all:

- **Consensus** — what more than one agent flagged (highest signal).
- **Notable single-agent points** — worth a look even if only one raised them.
- **Disagreements / likely false positives** — where agents conflict or are clearly wrong.
- **Consensus**: what more than one agent flagged (highest signal).
- **Notable single-agent points**: worth a look even if only one raised them.
- **Disagreements / likely false positives**: where agents conflict or are clearly wrong.
- Cite `file:line` where the agents did.

Lead your reply with the log path, keep the synthesis tight, and end with a clear takeaway
— for a review, a ship / no-ship call; for an idea, where the agents agreed and where they
Lead your reply with the log path, keep the synthesis tight, and end with a clear takeaway:
for a review, a ship / no-ship call; for an idea, where the agents agreed and where they
pushed back.
Loading
Loading