HomeVideos

"My agentic engineering workflow" | George Pickett (MTS @ Parallel)

Now Playing

"My agentic engineering workflow" | George Pickett (MTS @ Parallel)

Transcript

667 segments

0:00

So this has really been the foundation

0:01

of my planning of pretty much everything

0:05

I build.

0:06

My workflow has changed from [music]

0:09

using a planning document to grilling me

0:12

and then creating the planning document

0:14

and then implementing [music]

0:15

to now grilling me and then just setting

0:18

a goal and walking away.

0:22

>> [music]

0:30

[applause]

0:34

>> Sweet. Thank you guys for coming.

0:36

>> George, tell us a little bit about

0:37

yourself.

0:38

>> Sure.

0:39

Yeah, I'm George. I'm

0:42

Yeah, I'm a software engineer. Been

0:44

programming for 10 years or so.

0:45

Self-taught. Basically taught myself

0:48

programming, moved to the Bay Area,

0:50

started working in startups.

0:51

Yeah, I'm starting a new job on Monday

0:54

at Parallel. Super stoked for that.

0:55

Doing DevRel. And yeah.

0:58

>> But also you help run the Codex Meetup.

0:59

>> Yeah, yeah, I run a

1:01

Yeah, that's true. Yeah, I've done some

1:02

other stuff. I I run a Codex Meetup in

1:05

the city. I was just really obsessed

1:07

with Codex this winter when everyone was

1:09

discovering cloud code and I was

1:10

thinking why aren't people using Codex?

1:12

So I just wanted to

1:14

create a space to kind of teach people

1:16

Yeah, I know there might be some tension

1:18

around this.

1:19

Um using Codex in this demo. So

1:22

um

1:23

But yeah, been

1:24

teaching and learning and posting on

1:26

posting on Twitter. And yeah,

1:28

that's my thing.

1:30

So actually a quick round of Or not

1:32

round of applause. That wouldn't be the

1:33

right thing.

1:34

Let's start with a round of applause.

1:36

No. All right, yeah, yeah, good way to

1:37

start it. Sweet.

1:40

Um raise raise of hands, who has never

1:42

used a coding agent?

1:45

All right, just just Peter. [laughter]

1:48

Just Peter. Okay, sweet. So everyone's

1:50

that that's good context.

1:52

Um who uses Who doesn't use it every

1:54

day?

1:57

Okay.

1:58

Sweet. A couple people. Okay, so it's a

2:00

pretty technical crowd. My I'll give you

2:04

an outline of my talk. This is my

2:06

presentation today. I forgot to

2:08

attribute the quote.

2:10

No, these are actually

2:12

>> [laughter]

2:13

>> They're they're actually GPT, but

2:16

yeah, we're just going to jump in here.

2:18

It's going to be pretty practical. So,

2:20

I'm going to show you sort of the

2:21

different stages of how I've approached

2:25

AI assisted coding over time to where

2:27

I'm to now, and I hope it's pretty

2:29

practical.

2:30

So, initially what

2:33

What one of the biggest breakthroughs I

2:35

came across was this past October,

2:38

OpenAI published a blog post about You

2:41

know, you hear of these coding agents

2:43

running for hours, and at first it was

2:44

like, "Oh, that's like I was just kind

2:47

of mind-blown." I was like, "How could

2:48

it run for 8 hours?" Now they claim 25

2:51

hours.

2:52

And the way they do it is this planning

2:55

documents. Let's go to the right one.

2:57

It's called plans.md.

2:59

So,

3:00

basically this is just a huge prompt

3:02

where they're

3:04

it's an instruction about how to create

3:05

a planning document. So, you know, you

3:07

dictate your to your coding agent, or

3:09

you tell it what you want to do, and

3:10

then say, "Make a plan based on this

3:12

markdown file." And it creates what's

3:14

called an exec plan, is what they call

3:16

it. And it's just this

3:19

awesome document that allows through

3:21

different compactions, it allows agents

3:23

to stay on task, to kind of get back up

3:25

to speed, remember what it's done,

3:27

document its decisions, and then

3:29

continue its work. So, this has really

3:31

been the foundation of my

3:33

planning of pretty much everything I

3:35

build since this was this came out, I

3:38

think, in October.

3:40

Um so, I'm going to sort of just show

3:41

you how I use Codex,

3:44

and how I use skills, and I'm going to

3:47

I have a somewhat contrived example of

3:48

something I haven't built, but basically

3:52

I'm just going to dictate.

3:54

The idea is I have friends who make You

3:56

know, I told Greg I was going to record

3:58

my screen.

4:00

And I guess this is a good time to start

4:02

doing that.

4:03

Let's start before I do anything.

4:06

New screen recording.

4:08

Boom.

4:10

We got to wait 5 seconds.

4:12

Do another round of applause. I don't

4:14

know.

4:14

>> [laughter]

4:17

>> Um

4:18

So, me and my friends when we're

4:20

together, we always throw out our

4:21

predictions like,

4:23

you know, 2 years from now there's going

4:25

to be 20% unemployment or AGI is going

4:29

to be here by 2027. But, I always forget

4:31

when people make those predictions and

4:33

never have a way to keep them

4:34

accountable. I want to create a system

4:36

where I can add my friends' emails to

4:39

the system, write down the prediction,

4:41

and write down the due date, and then on

4:43

that date send everyone an email

4:45

reminding them of the predictions they

4:46

made.

4:48

So, I'm just going to dictate the thing

4:49

I want.

4:50

And then, basically, what I do I have a

4:52

skill called

4:54

exact plan

4:56

create.

4:59

So, when I instantiate this skill, it's

5:01

going to basically just read from a

5:03

markdown file and create a plan. But,

5:05

one cool thing I like to do with Codex

5:07

is I like to chain skills.

5:09

So, I'll do

5:13

exact plan improve.

5:15

Improve, improve. Oh, they change it.

5:21

So, you can kind of run You can chain

5:23

these skills. So, once this first one is

5:25

done, it'll run the next one.

5:27

Implement.

5:29

Review.

5:31

So, at a certain point

5:34

you can go watch a movie.

5:35

That's awesome.

5:38

And what what's cool about both the Is

5:40

it big enough, by the way? Yeah, it's

5:41

big.

5:42

What's cool about this I I I didn't

5:44

create the the plan framework, but I

5:46

created these skills to create plans.

5:49

And what this improvement one does is

5:51

sort of gives it a framework. There's a

5:53

software There's a Stanford professor

5:54

named John Osterhout, and he just has

5:57

really good clean coding principles. So,

6:01

I modified the planning document a

6:02

little bit in the improvement document

6:04

to just say like

6:05

follow these great software engineering

6:07

principles. And when the agent makes

6:10

this improvement pass after it creates

6:12

this initial one,

6:13

it's going to return a score at the very

6:15

end, one out of 10, about how useful

6:17

that improvement was. So, I could

6:19

actually chain these improvements to

6:22

to improve it like 25 times. It'll

6:23

probably realistically only improve it

6:26

usefully a few times, but when it

6:28

returns a score of three or less, it'll

6:30

just return the word skip. And then

6:33

instructions inside of the skill say if

6:35

the previous plan said if the previous

6:38

message said skip, just skip. So, the

6:40

idea is that you can just put a bunch of

6:43

these improvement skills, and after it's

6:45

done improving it, it'll just go to

6:47

implement it.

6:48

The implementation skill is pretty

6:50

straightforward. It's just look at the

6:52

exact plan, follow it, implement it. And

6:55

then review recent work. I'm going to

6:57

show you why this is full hot soon, but

6:59

the idea is

7:01

it's just a code review pass on your own

7:03

code.

7:04

Um I've created the exact plan now.

7:06

Let's take a look at it just so you can

7:07

kind of see the structure.

7:12

How many lines does it say?

7:14

I don't know how many lines. Doesn't

7:16

really matter. But, it sort of, you

7:18

know,

7:19

it's kind of just outlining I I should

7:21

have told it like I want to deploy this

7:23

to AWS, make it more ambitious. I'm

7:25

going to bail on this and

7:29

show you the next upgrade to my

7:30

workflow.

7:33

Let's go back to my presentation. All

7:35

right, sweet.

7:37

So, a a huge flaw in this I'm actually

7:39

going to copy just the dictation I did,

7:42

so you don't have to listen to me say

7:43

all of it again.

7:45

So, a huge improvement to this. So, when

7:48

when I give it this instruction,

7:51

it's a very broad overview. And this is

7:53

actually what these quotes I kind of

7:55

like conjured up are is the

7:59

the models aren't going to know all of

8:01

your intent. So, before just telling it

8:04

to go build, it's important to So, there

8:06

are my instructions from before. I'm

8:08

going to say grill me. And this is This

8:10

is a guy named Matt uh Paddock. I think

8:12

he's a British guy.

8:13

Um awesome engineer. He came up with

8:15

this idea. Just have your agent

8:17

interview you. And it it'll interview

8:19

you incessantly. It'll just keep going,

8:21

ask you questions about what you want.

8:23

But the idea is

8:25

it's going to ask you clarifying

8:26

questions about what What do you

8:28

actually mean? What do you want? And

8:31

sometimes it'll ask you like 100

8:32

questions. It's kind of crazy. But it's

8:35

really good because AI is always eager

8:37

to build something, but is it actually

8:39

building what you want?

8:40

So, I'm going to say

8:42

uh

8:45

Let's go with that recommendation and

8:47

then ask me 10 questions at a time.

8:50

Cool. And then I'm going to axe that

8:53

part.

8:54

And really what happens here is probably

8:59

I I spend a lot of time on this grill me

9:01

thing. Like this is the time I think

9:04

makes the most sense to spend your time

9:06

like clarifying what is your intent and

9:08

actually thinking and researching having

9:10

it back and forth. I told it to go 10 at

9:12

a time cuz I'm just going to blast

9:13

through it. But I'm just going to

9:16

you know, I'm just going to oops.

9:19

Let's do that.

9:21

I'm just going to get a lot of these

9:22

suggestions down so that we can get to

9:26

the next step.

9:28

We can just read random ones if you

9:29

want.

9:34

I guess that's fine. And really when you

9:36

when you're asking your agent to help

9:39

you sort of clarify unknowns, 90, 95% of

9:42

the time, it's answering what I want.

9:45

So, I I end up often times saying,

9:47

"Sure, let's go with it." Um but let's

9:50

see, I might just kill it for a time

9:53

and say,

9:56

I'm going to say,

9:57

"Okay, I think we're ready. Encode all

9:59

of those recommendations into

10:05

into

10:06

uh decisions.md file."

10:09

So, the idea here is I've now given it

10:11

my original instruction.

10:13

I've had it grill me to clarify the

10:15

intent, and now I'm going to like create

10:18

I didn't tell it to do this exactly, but

10:20

it'll do something similar. I'll have it

10:22

create like markdown checklists of like

10:24

everything we've decided, so that now we

10:27

have this decisions.md file, and then we

10:29

can go create our exact plan from there,

10:32

and the exact plan will reference the

10:33

decisions. So, when it's a long-running

10:35

task, we've basically had the agent have

10:38

a durable place to remember everything

10:41

we've decided.

10:43

Um

10:44

and let's let's just see what it looks

10:46

like.

10:49

Okay, this this is okay. I would have

10:51

told it

10:54

I would have told it to make it

10:56

checkboxes just so I can like the agent

10:58

can know if it's done or not.

11:00

But, the next big thing, let's flip back

11:02

to the presentation.

11:04

Um cool. Yeah, I mean, this this was a

11:06

huge change in the last few months.

11:08

Um

11:10

I think I want to say Codex did it

11:11

first, the goal / goal feature.

11:14

Um

11:16

so, with goal like, there's been they

11:18

released this goal feature, and the idea

11:20

is that you can have an agent run for

11:22

many hours, many days. Peter, you

11:23

probably gone for like over We have one

11:26

still going since the first day it came

11:27

out, maybe.

11:28

But, the the idea is

11:31

there there are best practices for your

11:32

goals and you know, in the Codex code

11:35

base

11:36

you can tell Codex to look at the code

11:38

base. Um, OpenAI engineers and are

11:41

posting on Twitter saying this is how I

11:42

use goal. So, I created a skill called

11:45

GoalCraft

11:47

which helps you write a goal. And

11:51

goals have limitations like character

11:53

limits and things like that. And so, my

11:56

workflow has changed from using a

11:58

planning document to

12:01

grilling me and then creating the

12:02

planning document and then implementing

12:05

to now grilling me and then just setting

12:07

a goal and walking away.

12:09

So, when I do this GoalCraft thing

12:11

I'll do this

12:14

encode these decision or just make sure

12:16

we complete all these decisions before

12:18

the goal is done.

12:21

And this skill I've I've integrated

12:23

different blog posts and best practices

12:26

that I've found online about

12:28

creating goals. And so,

12:31

it makes sure like, you know, it's

12:32

within this character limit.

12:35

It uh makes sure there are stopping

12:36

conditions, ways to verify

12:38

your outputs. And I recently updated it

12:41

so that instead of just writing a plain

12:43

text goal, it actually activates the

12:44

goal.

12:45

So, really in two steps you can go from

12:48

this is what I want, grill me

12:51

get everything you need and then run the

12:53

GoalCraft skill and your goal is kicked

12:55

off and it has tons of context about

12:57

what you want. That context is encoded

13:00

somewhere in a markdown file. Actually,

13:02

in this case it's not. It's just in the

13:04

context of the conversation. Like all of

13:06

these questions it asked me.

13:09

You know, imagine we go through 25

13:10

compactions of a goal, it might not

13:13

still have all these questions.

13:15

But we'll solve that soon.

13:18

Um, I will just okay, cool. It made the

13:21

goal.

13:22

Um

13:23

we can take a look. I'll just like

13:27

go to a new note.

13:30

There's a sort of similar format for

13:33

best practices for goals. Not super

13:36

important for this talk to read through

13:37

all this text. There's a lot of text.

13:39

But basically, the idea is giving it

13:42

context, boundaries, constraints,

13:43

verification levels, and stop

13:46

conditions.

13:48

So, at this point

13:50

I started creating goals and it was

13:51

awesome because you can get goals to run

13:53

for a days and it'll just keep going,

13:55

but I found that there were often like

13:58

I'd have to steer it a lot and

14:00

kind of jump in and interrupt it and

14:03

say, "Oh, no, this is what I wanted."

14:05

So, I've sort of combined this I'm going

14:08

to pause this goal and delete and stop.

14:12

I've combined this idea of

14:16

Where the heck? That's weird.

14:21

Where is my message?

14:24

Um I don't know where we're at. Okay. I

14:27

basically combined the idea of

14:30

after after grilling me on

14:33

you know, the architecture decisions

14:36

instead of just creating a goal and

14:37

having it run, what I found is that

14:41

what we're missing here is

14:43

like durable artifacts to remember what

14:46

we've done so far. And so, what I

14:48

skipped here when I did this goal craft

14:50

thing is the the whole planning phase

14:53

and this whole exact plan. Inside of

14:55

this exact plan, there are like lots of

14:57

checklists and references and patterns

14:59

that we should be following.

15:00

But when you just go and create a goal

15:03

it doesn't have it doesn't have any kind

15:05

of durable memory. I mean, it does have

15:07

the decisions that I've written here

15:10

but otherwise, you just have this kind

15:13

of goal that's floating. It's like,

15:14

"Okay, I'm going to keep trying to do

15:15

this." So, what I've done recently I

15:17

have I created a new skill called I

15:19

created this today called grill craft

15:22

and it's basically after you're

15:23

grilling, you can run GrillCraft and

15:25

it'll turn all of your decisions into a

15:28

markdown file and then create an exact

15:30

plan and just make sure that you have

15:32

these two artifacts that are linked up

15:34

so that as your goal progresses, it's

15:37

progressing through the exact plan. So,

15:38

it has more structure to proceed through

15:40

your goal and then it has all of your

15:42

decisions

15:43

still encoded from your grilling

15:45

session.

15:48

Um let's kill that.

15:51

So, that's that's a lot of this I've

15:54

I've experimented a lot with

15:57

um

15:58

just trying to get agents to run for

16:00

really long time and try to see how

16:02

ambitious I can make them. And I'm

16:05

excited to see what the other two

16:07

presenters have because

16:09

yeah, I think I'll I'll learn something.

16:11

But in my experience, I've found that

16:13

when I get agents running for a really

16:16

long time, what I'm missing is

16:20

I like like mid-session grilling

16:21

session. Maybe I could just pause it and

16:23

ask it to grill me. I didn't think of

16:24

that. But it's it seems like when you

16:26

have an extremely ambitious project

16:28

that's going for

16:30

days or weeks, at some point it's making

16:32

decisions without you. So,

16:35

sort of my North Star and what I'm

16:36

trying to figure out is how can I keep

16:38

myself in the loop and keep giving it

16:40

feedback, but also

16:42

delegate it and kind of do more of this

16:44

looping behavior.

16:46

Um the the last part is I have this I

16:50

have a skill called review recent work.

16:53

I'm just going to invoke it even though

16:54

I don't have

16:55

work to review. But typically after I

16:58

create

17:00

create a feature, I will run this review

17:03

pass. And this works in a similar way as

17:06

the improve my exact plan improvement

17:08

skill where

17:10

after doing a code review,

17:13

it will make the fixes

17:15

and then it will return a score from 1

17:17

to 10.

17:19

The idea being if you're doing code

17:20

review a code review code review and

17:22

it's not finding any more improvements

17:24

to make, it'll return a score of three

17:27

and then it'll return the word skip.

17:28

Skip skip skip. So if I'm about to go to

17:30

bed, I might put 50 of these skill

17:32

chains and just keep doing code reviews.

17:35

But I got good feedback actually at one

17:37

of my events where somebody said,

17:41

"Well, you're kind of asking the agent

17:43

who wrote its own code what its problems

17:45

are."

17:46

And they brought up this idea of

17:48

adversarial code review.

17:50

And so I thought a lot about that and

17:51

I've tried different I actually have

17:53

different skills. Whenever I want to

17:56

write something, I don't know, maybe I'm

17:58

writing an important email, I'll usually

17:59

write it with Claude. That's one of my

18:01

primary uses for Claude, it's just way

18:02

better at writing. So I have a skill in

18:04

Codex where it'll write with Claude,

18:06

which is handy. And I've tried doing

18:09

calling other LLMs from Codex.

18:12

Um and I'm sure you guys have seen a lot

18:14

of these like when you open up pull

18:16

requests, you'll see random bots coming

18:18

trying to

18:19

comment on pull requests to try to help

18:22

you out.

18:23

Um actually in the process of doing

18:25

this, I opened a PR for this grill cop.

18:27

I've actually taking one step back.

18:30

There is a repo called useful Codex

18:32

skills that has all the skills I've

18:33

talked about here today.

18:35

Um the grill me

18:37

uh the exact plans stuff.

18:39

And I opened up a PR to add this grill

18:42

cop skill to it. And

18:46

I got a comment from Codo. Codo's a PR

18:48

reviewer. And so what's cool, it'll

18:51

comment on your PRs and it'll sort of

18:53

like,

18:54

you know, it'll kind of give you that

18:55

was a sort of useless diagram.

18:57

Um but it'll give you an overview of

19:00

what's going on and it'll find bugs,

19:02

which a lot of code review tools do. But

19:04

what's cool, Codo is a little bit more

19:06

built for teams.

19:08

So the idea is that

19:11

is that inside of the Codo UI it can

19:13

read from your different agent side MD,

19:15

your Slack, Jira tickets, contacts

19:18

throughout your organization, and it

19:20

will create these rules for you. So, the

19:21

idea is that before you set this up on

19:24

your on your pull request that you kind

19:26

of get your engineering team together

19:27

and say, "What are the rules that we

19:29

never want broken? And where should we

19:31

centralize these in one place?" So, that

19:34

your code review tool isn't just

19:35

scanning your code base, it's importing

19:37

context from your other tools.

19:39

Um so, I think that's

19:41

pretty useful. And another cool thing is

19:44

when it comments on your PR, it'll just

19:46

put a prompt that you can literally just

19:48

copy. And I think there's a skill now

19:50

where you can just

19:52

basically automate this process. So,

19:54

instead of printing the prompt, it'll

19:55

actually go use it and apply it. But,

19:58

that's

19:59

I think that's the final part of

20:01

of my uh of my Codex workflow. So, happy

20:05

to answer any questions if there are

20:06

questions. Otherwise, we can go for a

20:08

third round of applause.

20:11

>> [applause]

20:13

>> What do you got?

20:14

>> Where are you spending the most human

20:15

time right now in this whole flow?

20:18

Like, what do you need the most human

20:18

intelligence for?

20:20

>> That's a great question.

20:21

I would say

20:23

I would say planning. So, probably the

20:27

just get getting the pro I mean, what I

20:29

did here is building a a brand new

20:31

project, but often you're in something

20:34

much bigger. So, I think just critical

20:37

thinking about what are we going to

20:38

build and the more important like if

20:40

it's vibe coding,

20:42

it's I'm probably having three threads

20:45

going at a time and just going crazy.

20:47

But, if it's really important, I think

20:49

like reading the plan and making sure

20:51

it's what I want, and then testing, I'd

20:54

say.

20:56

>> In [clears throat] your first example,

20:57

you queued up a bunch of the same skill

20:59

over and over again to review the code.

21:01

Why not just use a slash goal or loop to

21:05

effectively do the same thing without

21:07

having to queue them all up.

21:08

>> It's a It's a good question.

21:10

Um

21:11

I don't have a super strong I've I've

21:13

been doing that improvement thing since

21:15

probably December or something like

21:16

that, but

21:18

yeah, presumably you could create a plan

21:20

and say

21:22

invoke the skill over and over until it

21:24

stops improving, something like that,

21:25

but probably lots of different ways to

21:27

do it.

21:30

What you got?

21:30

>> Yeah, I I really like your workflow

21:31

here. Um I was wondering for a lot of

21:33

these skills that you're creating, uh it

21:35

seems like you you know, you said like,

21:36

"Oh, let me try like an adversarial

21:38

review from an idea." Um and it seemed

21:41

like, you know, you kind of try it out,

21:42

but what What kind of eval would you use

21:45

in order to understand if this is like

21:47

the best skill for that job?

21:50

>> That's a great question. I think evals

21:53

are really important for skills and it's

21:55

something something that I'm not I would

21:58

say in this room the authority on, so.

22:00

>> So, like human eval for now?

22:02

>> What is that?

22:02

>> Human human eval for now, like how it

22:04

feels.

22:04

>> Is that how you

22:05

>> Yeah, vibes. Yeah. I mean, like

22:07

I I I just find I find that like like

22:10

with the code review skill, it would it

22:12

would stop it would tell me that there

22:14

are no problems and then I would open it

22:16

up with Codo and it would be like, you

22:18

know, they're using I think Opus 4.8 on

22:20

the back end. And so, just having that

22:22

other LM review it, it would almost

22:25

every single time find me new bugs that

22:27

weren't being discovered from my own

22:29

skill, so seeing more bugs, good eval.

22:34

>> What is the final document? So, if you

22:36

went away from those projects and came

22:38

back like 3 months from now, what would

22:41

you use as the document to bring you

22:43

back up to speed on what it is that you

22:46

built?

22:47

>> Yeah, I would use this exec plan. I

22:49

might have axed it somehow.

22:53

I somehow lost it in this context, but

22:56

yeah, this this planning document I mean

23:01

the the way that these planning

23:02

documents work, the way I've set it up,

23:05

in a vibe coded project that's one shot,

23:08

that would be it. That would be the the

23:10

economical document of what you would

23:12

come back to to understand what's going

23:14

on. But I've had projects where I'll

23:16

have

23:17

like 50 or 100 exact plans. And so I put

23:20

it in a get ignored file in the root of

23:22

my repo just called agent work, and it

23:25

just stores all these markdown files and

23:28

sometimes agents will go in there and

23:29

find stuff. Maybe pick up a bad idea or

23:32

two. But yeah, I I like to just I keep

23:35

them. I often don't read through them.

23:37

You know, it's really just for the

23:38

agent. But yeah.

23:40

>> So you're so you're not looping through

23:41

with each iteration to try to keep it up

23:43

to the current state?

23:45

>> No, it's it's more of a throwaway. It's

23:47

just a produced artifact that's only

23:49

being referenced as the work happens.

23:53

>> Cool.

23:54

>> Thank you, guys.

23:55

>> [applause]

Interactive Summary

George shares his evolving workflow for using coding agents like Codex, focusing on moving from simple planning documents to a more sophisticated system involving "grilling" the agent for intent clarification, utilizing chaining skills for iterative improvement, and employing durable artifacts like decision and planning files. He emphasizes the importance of keeping the human in the loop for planning while delegating implementation and testing to AI agents, and discusses using adversarial code reviews to improve output quality.

Suggested questions

4 ready-made prompts