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.