For Developers
Don’t just read diffs. Read the prompts behind them.
Bring AI session history directly into GitHub. Review every prompt, decision and model response without leaving your PR.
Bring AI session history directly into GitHub. Review every prompt, decision and model response without leaving your PR.
github.com / acme / billing-api / pull / 491 / files
github.com / acme / billing-api / pull / 491 / files
Fix double charges on checkout retry
Fix double charges on checkout retry
Open
Open
fix-double-charge
fix-double-charge
Winner · Prompt history on
Winner · Prompt history on
payments/charge.ts
payments/charge.ts
+12
+12
−4
−4
85
85
const order = await getOrder(orderId);
const order = await getOrder(orderId);
86
86
- const charge = await stripe.charges.create({ amount, currency });
- const charge = await stripe.charges.create({ amount, currency });
87
87
+ const charge = await stripe.charges.create(
+ const charge = await stripe.charges.create(
88
88
+ { amount, currency },
+ { amount, currency },
89
89
+ { idempotencyKey: charge:${order.id} },
+ { idempotencyKey: charge:${order.id} },
90
90
);
);


Matthew Williams
Matthew Williams
2 days ago · Codex
2 days ago · Codex
Coach score
Coach score
92
92
Prompt · lines 87–90
Prompt · lines 87–90
Copy
Copy
Double charges happen when checkout retries a timed-out request. Add an idempotency key derived from the order id so repeats are safe, and keep the public signature unchanged.
Double charges happen when checkout retries a timed-out request. Add an idempotency key derived from the order id so repeats are safe, and keep the public signature unchanged.
Session
Session
Prompt scored 96 by the coach
Prompt scored 96 by the coach
09:14
09:14
Agent added idempotency key
Agent added idempotency key
09:16
09:16
Duplicate-charge test added
Duplicate-charge test added
09:22
09:22
Coverage
Every layer of your code history.
Annotated with the prompts behind it.
PER FILE
Mar 4
Mar 18
Apr 2
Apr 9
Apr 29
May 12
May 20
Jun 3
The story of a file
Open any file and see every prompt that shaped it. A timeline of intent, not just edits.
Open any file and see every prompt that shaped it. A timeline of intent, not just edits.
PER PR
Fix refresh-token loop after password reset
Fix refresh-token loop after password reset
Fix refresh-token loop after password reset
Open
Open
#1345
#1345
John Miller
John Miller
3 days ago
3 days ago
AGENT-WRITTEN
AGENT-WRITTEN
AGENT-WRITTEN
8/14 changed lines
8/14 changed lines
Agent 8
Agent 8
Agent 8
Human 6
Human 6
Human 6
+21 −7
+21 −7
+21 −7
How the PR got built
Review the prompts next to the diff. See how much of the PR was agent-written, and how well it was directed.
Review the prompts next to the diff. See how much of the PR was agent-written, and how well it was directed.
PER COMMIT
4f2e91a
4f2e91a
guard revoked tokens
guard revoked tokens
Claude

Sep 12
Sep 12
b73c0d2
b73c0d2
rotate token on reset
rotate token on reset
Codex

Sep 14
Sep 14
9a1f4e8
9a1f4e8
add reset regression test
add reset regression test
Claude

Sep 14
Sep 14
Intent at every commit
Every commit from an agent session links straight to the prompt and thread that produced it.
Every commit from an agent session links straight to the prompt and thread that produced it.
PER LINE
125
const cached = await store.get(id);
126
const session = get(id);
127
128
+ if (!session.revokedAt) {
129
return session.token;
130
}
131
return session.token;

Jason Smith
3 days ago · Claude
"Preserve the fast path when checking tokens"

Jason Smith
3 days ago · Claude
"Preserve the fast path when checking tokens"

Jason Smith
3 days ago · Claude
"Preserve the fast path when checking tokens"
Blame, with the why
Hover any line for the exact prompt that produced it. Who asked, which model answered, what happened next.
Hover any line for the exact prompt that produced it. Who asked, which model answered, what happened next.
Try it
Click any line. See the prompt that wrote it.
Guard clause
Token rotation
Regression test
auth/session.ts
+21
−7
10
export async function getToken(userId: string) {
11
const session = await store.get(userId);
12
+ if (session.token && !session.revokedAt) {
13
+ return session.token;
14
+ }
15
16
// a reset must kill every active token
17
- return session.token;
18
+ const fresh = await issueToken(userId);
19
+ await store.rotate(userId, fresh);
20
return fresh;
21
}
22
23
+ test("reset invalidates old token", async () => {
24
+ await resetPassword(userId);
25
+ expect(await getToken(userId)).not.toBe(old);

Jason Smith
3 days ago · Claude
Coach score
92
Prompt · lines 12–14
Copy
Fix the refresh-token loop after password reset. Start with auth/session.ts, preserve the public API, and add one regression test. Explain the root cause before editing.
Session
Prompt scored 92 by the coach
12:41
Agent added revoked-at guard
12:44
Regression test added
12:52
Open full session in Winner
Guard clause
Token rotation
Regression test
auth/session.ts
+21
−7
10
export async function getToken(userId: string) {
11
const session = await store.get(userId);
12
+ if (session.token && !session.revokedAt) {
13
+ return session.token;
14
+ }
15
16
// a reset must kill every active token
17
- return session.token;
18
+ const fresh = await issueToken(userId);
19
+ await store.rotate(userId, fresh);
20
return fresh;
21
}
22
23
+ test("reset invalidates old token", async () => {
24
+ await resetPassword(userId);
25
+ expect(await getToken(userId)).not.toBe(old);

Jason Smith
3 days ago · Claude
Coach score
92
Prompt · lines 12–14
Copy
Fix the refresh-token loop after password reset. Start with auth/session.ts, preserve the public API, and add one regression test. Explain the root cause before editing.
See it running on your own PRs
How it works
One click. No workflow change.
01
Install the extension
One click from the Chrome Web Store. Sign in with your Winner workspace and you're done.
One click from the Chrome Web Store. Sign in with your Winner workspace and you're done.
02
Open anything on GitHub
On any PR, commit, file, or blame view, Winner recognises the code your agents touched.
On any PR, commit, file, or blame view, Winner recognises the code your agents touched.
03
View prompt history inline
Marked lines show who prompted what, with which model, and how the session played out.
Marked lines show who prompted what, with which model, and how the session played out.
Bring your prompt history to GitHub.
See every prompt behind every diff, on any PR your team opens.

