WEBVTT

NOTE Sentence-level transcript of https://www.youtube.com/watch?v=AgBAOXVxt4A

NOTE One cue per sentence. Cue ids are the line anchors on /transcripts/AgBAOXVxt4A.html. A cue ends where the next begins, or 2 s after its last word.

s1
00:00:11.884 --> 00:00:12.446
Hello everyone.

s2
00:00:12.446 --> 00:00:14.289
Thank you very much for coming.

s3
00:00:14.289 --> 00:00:16.384
We are very happy to be here with you today.

s4
00:00:16.384 --> 00:00:18.212
We have a great program for you.

s5
00:00:18.212 --> 00:00:21.380
My name is Zach Prosser and this is my friend Nick Nisi.

s6
00:00:21.380 --> 00:00:24.039
We are both AI engineers at Work OS.

s7
00:00:24.039 --> 00:00:31.858
Today we're going to share with you some of our best workflows and things we've learned from working with Claude and other agents every day.

s8
00:00:31.858 --> 00:00:36.109
This will include voice coding, agent skills, hooks, and scheduled tasks.

s9
00:00:36.109 --> 00:00:39.046
We hope there will also be time for questions and answers at the end.

s10
00:00:39.046 --> 00:00:39.454
Yes.

s11
00:00:39.454 --> 00:00:46.246
The most important thing we want you to take away from this is that most engineers simply look after one session at a time.

s12
00:00:46.246 --> 00:00:46.918
It's like 2025.

s13
00:00:46.918 --> 00:00:53.380
You're supposed to be operating a fleet of agents, and we're going to talk about the different ways we actually do that .

s14
00:00:53.380 --> 00:00:56.675
This is not a marketing ploy or aspiration.

s15
00:00:56.675 --> 00:01:01.440
These are the things we do every day to survive in this moment.

s16
00:01:01.440 --> 00:01:01.814
Yes.

s17
00:01:01.814 --> 00:01:04.304
Well, as we said, well , I'm Zach.

s18
00:01:04.304 --> 00:01:05.910
I'm on the team for .

s19
00:01:05.910 --> 00:01:07.397
artificial intelligence in Work OS.

s20
00:01:07.397 --> 00:01:17.020
I would say my role is 60% implementing internal customer-facing tools and applications using AI throughout the day, and then about 40% AI education that elevates the rest of the organization.

s21
00:01:17.020 --> 00:01:18.259
And I 'm Nick Nisi.

s22
00:01:18.259 --> 00:01:31.035
I'm the engineering manager for the developer experience team, and we're a small but mighty team of two that manages over 25 repositories in eight languages, and we're only able to do this thanks to AI.

s23
00:01:31.035 --> 00:01:36.231
This made it the only way I wouldn't go crazy.

s24
00:01:36.231 --> 00:01:36.498
Great.

s25
00:01:36.498 --> 00:01:39.681
So what we have for you today is a very interactive workshop.

s26
00:01:39.681 --> 00:01:43.967
So if you want to sit back, relax, and just watch our presentations and talks, that's fine.

s27
00:01:43.967 --> 00:01:50.103
If you want to participate in the practice, we have a repository you can use and, well, you can go through everything step by step.

s28
00:01:50.103 --> 00:01:54.358
This has skills that will help you set up voice coding if you have never tried it before .

s29
00:01:54.358 --> 00:02:06.716
We want you to think of it this way, it's a great opportunity and kind of a safe space if you want to try out new workflows before voice coding tasks, scheduled tasks, hooks, etc. It's a great place to actually get involved.

s30
00:02:06.716 --> 00:02:10.685
And then we'll be available to help you or answer your questions.

s31
00:02:10.685 --> 00:02:11.870
Yes, for sure.

s32
00:02:11.870 --> 00:02:16.003
We will discuss these four things, with varying degrees of detail.

s33
00:02:16.003 --> 00:02:22.717
And there will also be time for questions and we will answer them.

s34
00:02:22.717 --> 00:02:27.327
But there are three things we will see, three main things we will see.

s35
00:02:27.327 --> 00:02:28.117
Just slides.

s36
00:02:28.117 --> 00:02:31.175
There's also this QR code you can scan.

s37
00:02:31.175 --> 00:02:35.870
It leads to an active dictionary and contains a lot of terms that we will be talking about.

s38
00:02:35.870 --> 00:02:40.279
Things like MCP and skills and whatnot are in Rag loops.

s39
00:02:40.279 --> 00:02:40.650
Yes.

s40
00:02:40.650 --> 00:02:44.148
They are all defined there, but there is also a little chat about ragas.

s41
00:02:44.148 --> 00:02:48.541
So if you have questions about that , you can ask them there as well to help keep things moving.

s42
00:02:48.541 --> 00:02:48.999
Yes.

s43
00:02:48.999 --> 00:02:51.483
But you can also ask us.

s44
00:02:51.483 --> 00:03:01.913
And then everyone...We'll also ask for your feedback and ways you can collaborate and use the skills we're learning today and show what you've learned in the next hour.

s45
00:03:01.913 --> 00:03:04.901
And it's on this live board that we'll see.

s46
00:03:04.901 --> 00:03:10.814
And if you go to the repository, you'll see it and you'll be able to contribute to it .

s47
00:03:10.814 --> 00:03:17.102
Nick created this awesome MCP server which is part of a repository whose URL we'll have to share soon .

s48
00:03:17.102 --> 00:03:18.614
But this will be an interview with you.

s49
00:03:18.614 --> 00:03:20.029
This will be...This is optional.

s50
00:03:20.029 --> 00:03:21.596
You don't have to do this.

s51
00:03:21.596 --> 00:03:23.995
This will scan your computer if you agree.

s52
00:03:23.995 --> 00:03:34.372
It will look at some of the conversations you've already had with agents and figure out what you've worked on, how you've worked, and give you some simple rubrics on how familiar you are with

s53
00:03:34.372 --> 00:03:34.515
AI.

s54
00:03:34.515 --> 00:03:38.857
Mostly for fun, because we'll do it again at the end and see if there's any movement.

s55
00:03:38.857 --> 00:03:39.148
Yes.

s56
00:03:39.148 --> 00:03:40.894
He is built like a coach.

s57
00:03:40.894 --> 00:03:46.028
He's there so you can ask questions and he can try to help guide you.

s58
00:03:46.028 --> 00:03:49.836
And he tries to answer in the way we would try to answer these questions.

s59
00:03:49.836 --> 00:03:54.434
But you can also ask us, because AI isn't always perfect .

s60
00:03:54.434 --> 00:03:56.640
And this is what data visualization looks like.

s61
00:03:56.640 --> 00:04:00.147
So again, only sign up if you are interested and feel comfortable.

s62
00:04:00.147 --> 00:04:14.416
When you're being interviewed through this MCP server or coaching tool, you send a simple post to the backend that we 've set up in Cloudflare, and it just checks the current room position, and then at the end of the session, we check that.

s63
00:04:14.416 --> 00:04:17.284
The only data it sends are the questions you answer.

s64
00:04:17.284 --> 00:04:20.559
It doesn't scan your system or anything like that.

s65
00:04:20.559 --> 00:04:21.070
Yes.

s66
00:04:21.070 --> 00:04:25.188
This is the beginning of the interactive part.

s67
00:04:25.188 --> 00:04:34.274
And, uh, I'll mention again that if you want to follow along, a great way is to follow us, you know, here and talk, uh, listen to us here and go through everything step by step.

s68
00:04:34.274 --> 00:04:50.433
We'll also be running on screen, but you can also clone this repository, which is designed so that you can run Claude in it and… That's where you'll get the MCP server, skills and tools, and where you can work on it ; and then it's a perfect , um, kind of artifact that you can take with you and

s69
00:04:50.433 --> 00:04:52.714
continue practicing, um, after our session.

s70
00:04:52.714 --> 00:04:52.962
Yes.

s71
00:04:52.962 --> 00:05:04.469
And I think the way to leave this screen here is if you want to clone this repository, um, but we can ask one or two questions while we're at it, um, we'll leave this here if anyone has a question.

s72
00:05:04.807 --> 00:05:05.555
Any questions?

s73
00:05:05.555 --> 00:05:06.303
All right.

s74
00:05:06.303 --> 00:05:07.957
We don't bite.

s75
00:05:07.957 --> 00:05:09.957
Cool.

s76
00:05:15.335 --> 00:05:15.803
All right.

s77
00:05:15.803 --> 00:05:25.673
So if you're going the repository route, um, the first thing you want to do is run Claude, however you normally do it, you know, you usually just type Claude, and it'll ask you if you want to trust this repository.

s78
00:05:25.673 --> 00:05:38.870
Trust the repository and then, uh, one of the first skills that's already loaded will be this setup, uh, skill that will help you install all the things for the workshop, including, uh, your first open source and free, uh, voice type, uh, coding model.

s79
00:05:38.870 --> 00:05:49.173
So you can say, "set me up for workshop," or type that in and Claude will walk you through the steps to do it, and then once you're done with that, you can say, "run my workshop

s80
00:05:49.173 --> 00:05:50.863
check."

s81
00:05:50.863 --> 00:05:55.356
This will give you some idea of ​​ what stage you are at and what is happening.

s82
00:05:55.356 --> 00:06:01.712
The repository is also setup with many skills and plugins already configured for Claude.

s83
00:06:01.712 --> 00:06:09.316
So there's MCP, there's some skills that we created and some that we didn't create, like the ones from the Codex.

s84
00:06:09.316 --> 00:06:19.680
This is just a simple way to get started and configure Claude's repository and environments in a way that is best for this workshop.

s85
00:06:19.680 --> 00:06:28.813
And while we wait for a few people to set up the repository, let's raise our hands out of curiosity and see how many people are already using the voice encoding tool every day.

s86
00:06:28.813 --> 00:06:30.005
Okay , great.

s87
00:06:30.005 --> 00:06:31.034
Pretty good division.

s88
00:06:31.034 --> 00:06:32.729
What voice encoding tool is this ?

s89
00:06:32.729 --> 00:06:34.155
I mean whisper flow?

s90
00:06:34.155 --> 00:06:34.617
Yes.

s91
00:06:34.617 --> 00:06:35.201
Okay.

s92
00:06:35.201 --> 00:06:37.105
Excuse me, which one?

s93
00:06:37.105 --> 00:06:39.094
Whisper flow, but it got slow.

s94
00:06:39.094 --> 00:06:40.595
Yes, I had the same problem.

s95
00:06:40.595 --> 00:06:42.468
What has become faster and what is faster?

s96
00:06:42.468 --> 00:06:44.255
Then I moved on to voice encoding.

s97
00:06:44.255 --> 00:06:44.853
Great.

s98
00:06:44.853 --> 00:06:45.434
Okay.

s99
00:06:45.434 --> 00:06:48.379
The one we will install today is an interesting new tool.

s100
00:06:48.379 --> 00:06:51.089
It's called Handy and it will install on your Mac.

s101
00:06:51.089 --> 00:06:59.147
And the cool thing is that you can choose which open source or open weight model to use for transcription and you can strike a balance between language support and speed.

s102
00:06:59.147 --> 00:07:02.508
But the cool thing is that there is no subscription because it runs on your computer.

s103
00:07:02.508 --> 00:07:05.461
Nothing is sent to the cloud, it's completely private, right?

s104
00:07:05.461 --> 00:07:10.474
So there are many advantages, and we will talk about the differences in choosing a voice encoding tool later.

s105
00:07:10.474 --> 00:07:11.011
It is free.

s106
00:07:11.011 --> 00:07:13.916
This was one of the main factors in his selection .

s107
00:07:13.916 --> 00:07:17.785
But if you already have a tool installed that you use and prefer, go for it.

s108
00:07:17.785 --> 00:07:18.997
Yes, go for it.

s109
00:07:18.997 --> 00:07:20.269
Okay, voice coding .

s110
00:07:20.269 --> 00:07:22.495
We are big supporters of voice coding.

s111
00:07:22.495 --> 00:07:31.325
I would say that, besides learning about the LLM ecosystem, tools, and harnesses, this is probably one of the biggest leverage moves we've both made in recent years.

s112
00:07:31.325 --> 00:07:33.259
I consider myself a pretty good machinist.

s113
00:07:33.259 --> 00:07:43.632
I learned to type pretty fast playing EverQuest as a teenager and I could get around 90 words per minute if I was fully energized with caffeine, and I get around 190 with

s114
00:07:43.632 --> 00:07:45.833
tools like whisper flow, right?

s115
00:07:45.833 --> 00:07:58.891
So, it's much faster, and we'll talk about how it's not only much faster for a single task, but when you multiply that across multiple cards and agents that are running and checking and supervising the work and just guiding them, you gain a huge advantage very quickly.

s116
00:07:58.891 --> 00:07:59.722
And not me.

s117
00:07:59.722 --> 00:08:01.459
Let me be clear, and I failed.

s118
00:08:01.459 --> 00:08:04.617
I can't write, but I make up for it with my Vim skills.

s119
00:08:04.617 --> 00:08:05.510
To put it modestly.

s120
00:08:05.510 --> 00:08:12.926
So, if you have n't tried it yet, you can definitely, you know, we encourage you to get out of your comfort zone, give it a try.

s121
00:08:12.926 --> 00:08:29.812
I'll also share that it's not just about coding, you know, use it to respond to, you know, colleagues and clients and and and continue to make sure that we have that quality and that everything is formatted correctly, but you know, sometimes you can just discuss something architecturally and that's going to be the biggest gain that you're going

s122
00:08:29.812 --> 00:08:31.300
to get from spending an hour on ideation.

s123
00:08:31.300 --> 00:08:40.911
Nick has a very popular skill that's in this repository called ideation, and coming to clarity faster and focusing on results are some of the things that voice coding can help with.

s124
00:08:40.911 --> 00:08:41.222
Yes.

s125
00:08:41.222 --> 00:08:48.508
I want to give a special thank you to Swyx and the entire AI engineering team for this great event in San Francisco.

s126
00:08:48.508 --> 00:08:51.195
This is just an example of use.

s127
00:08:51.195 --> 00:08:52.064
Oh.

s128
00:08:52.064 --> 00:08:52.694
Run it.

s129
00:08:52.694 --> 00:08:56.725
Steph, I just want to get this going, guys.

s130
00:08:56.725 --> 00:08:57.043
Please.

s131
00:08:57.043 --> 00:08:57.997
Here you go.

s132
00:08:57.997 --> 00:09:01.130
I think I was holding the wrong key.

s133
00:09:01.130 --> 00:09:03.029
Maybe it's...

s134
00:09:03.029 --> 00:09:10.518
Yeah, so it can be incredibly fast and we both found that there's really value in being able to express your thoughts quickly.

s135
00:09:10.518 --> 00:09:15.177
They don't have to be perfect and can be messy and will be cleaned up later.

s136
00:09:15.177 --> 00:09:19.268
But this just allows you to get a working artifact even faster.

s137
00:09:19.268 --> 00:09:19.826
Yes.

s138
00:09:19.826 --> 00:09:26.673
So, once you've got all that set up, let's try to fix the bug with voice.

s139
00:09:26.673 --> 00:09:34.239
So in your encoding agent you can simply ask it to, for example, extract the external client into a separate module.

s140
00:09:34.239 --> 00:09:37.140
And that's just an easy way to express it.

s141
00:09:37.140 --> 00:09:45.920
In a sense, you eliminate the friction of having to type everything in and move at the speed of thought, something that, if you were a vimmer, you would be proud of.

s142
00:09:45.920 --> 00:09:46.406
Actually.

s143
00:09:46.406 --> 00:09:59.924
And then, you know, again, if we're both running a terminal throughout the workday and have eight or more sessions, all focused on different projects, you know, it has all the context and tools built specifically for that purpose.

s144
00:09:59.924 --> 00:10:08.021
And you can drive past any one of them and while one is working in the background, you direct the next one to follow the path that will get you there faster.

s145
00:10:08.021 --> 00:10:10.913
So it adds up really quickly .

s146
00:10:10.913 --> 00:10:12.913
Mhm.

s147
00:10:13.109 --> 00:10:14.567
Next slide.

s148
00:10:14.567 --> 00:10:16.567
Yes.

s149
00:10:17.001 --> 00:10:19.105
So you're talking about the result, not the keystrokes.

s150
00:10:19.105 --> 00:10:29.038
So you want to think about what you want to achieve and not have it in your head, it kind of changes the way I interact with Claude and with my computer in general.

s151
00:10:29.038 --> 00:10:40.087
Because what I'm really dealing with is more of a speed of thought, and it's a bit different than the words I would actually type if I were physically typing them, which allows me to get to the result faster.

s152
00:10:40.087 --> 00:10:47.728
But I also find myself stopping and pausing in strange ways sometimes because I'm thinking about the next buffered set of words I'm about to say.

s153
00:10:47.728 --> 00:10:48.376
Yes.

s154
00:10:48.376 --> 00:10:49.024
Definitely.

s155
00:10:49.024 --> 00:10:53.813
Well, again, it's just much faster if you mostly write.

s156
00:10:53.813 --> 00:11:03.371
Most of these models that you'll come across, whether it's WhisperFlow or even the open source ones, are refined in such a way that they can recognize the exact filename that you're using.

s157
00:11:03.371 --> 00:11:11.518
They know, you know, highly technical terminology, tools and utilities of the operating system, so you actually get the result much faster.

s158
00:11:11.518 --> 00:11:13.518
Mhm.

s159
00:11:14.910 --> 00:11:15.242
Okay.

s160
00:11:15.242 --> 00:11:20.385
Now, a few words about why different tools are where they are , where some of them stand out?

s161
00:11:20.385 --> 00:11:28.108
WhisperFlow is perfect and loved, and people all over the world are starting to embrace it and use it, even those who aren't, you know, traditional programmers.

s162
00:11:28.108 --> 00:11:38.030
I would say one of the things where it benefits people the most is just the setup and ease of use, because if you can use a Mac and you can download the app on your Mac, you can use

s163
00:11:38.030 --> 00:11:38.795
WhisperFlow.

s164
00:11:38.795 --> 00:11:55.392
The trade-off is obviously the subscription, and people might not use it, especially if you're doing confidential work, whether it's coding or other types of, you know, document review, or you work in a regulated industry, there are downsides to sending everything you say, file

s165
00:11:55.392 --> 00:12:00.377
names, etc., content and personal information from your computer to the cloud.

s166
00:12:00.377 --> 00:12:06.991
And that's where, you know, using a tool like Handy can be much more convenient for people.

s167
00:12:06.991 --> 00:12:07.490
Mhm.

s168
00:12:07.490 --> 00:12:10.498
And that's exactly the tool we shared today in this workshop.

s169
00:12:10.498 --> 00:12:24.157
We'll use Handy, and that's for local dictation on the device, because models are getting smaller and smaller with quantization, and it's now possible to run a very efficient speech-to-text model on consumer hardware.

s170
00:12:25.813 --> 00:12:27.361
I want to bake a cake.

s171
00:12:27.361 --> 00:12:29.059
And it consists of three steps.

s172
00:12:29.059 --> 00:12:31.721
The first step is to prepare the dough.

s173
00:12:31.721 --> 00:12:33.501
I don't actually know how to bake a cake.

s174
00:12:33.501 --> 00:12:37.834
But the second step is to prepare the eggs, and the third is to put it in the microwave.

s175
00:12:37.834 --> 00:12:38.935
There is sugar there.

s176
00:12:38.935 --> 00:12:39.401
Okay.

s177
00:12:39.401 --> 00:12:41.991
Well, you know what I mean.

s178
00:12:41.991 --> 00:12:43.103
It understood.

s179
00:12:43.103 --> 00:12:55.150
The reason to use a tool like this instead of the built-in dictation on the Mac is because it actually listens to what you're saying and knows I'm speaking in list form, so it creates a list.

s180
00:12:55.150 --> 00:12:57.662
And that's a big part of it.

s181
00:12:57.662 --> 00:13:08.157
It is also very good at understanding file names and functions, which it correctly types and automatically corrects them, as well as correcting errors, for example if it inserts the wrong word.

s182
00:13:08.157 --> 00:13:18.782
I tried to write Swyx earlier, but I made a mistake and I was sure it would n't write it, so I could correct it , and the next time I say it, it will automatically correct it to Swyx.

s183
00:13:18.782 --> 00:13:25.813
You can configure it so that all of these features define the context you're in.

s184
00:13:25.813 --> 00:13:28.868
So he knows that if you're writing an email, you might want to write more formally.

s185
00:13:28.868 --> 00:13:30.806
So I will use more formal text.

s186
00:13:30.806 --> 00:13:35.247
But if you're in Slack, it'll be more casual, with punctuation and stuff like that.

s187
00:13:35.247 --> 00:13:42.628
This can be adjusted depending on where the text is placed , which is really useful.

s188
00:13:45.453 --> 00:13:46.086
Try it now.

s189
00:13:46.086 --> 00:13:50.399
Did we tell you the command you need to run to configure this?

s190
00:13:50.399 --> 00:13:52.101
Yes, it should be there already?

s191
00:13:52.101 --> 00:13:53.385
Should be next, I think.

s192
00:13:53.385 --> 00:13:53.964
Okay.

s193
00:13:53.964 --> 00:13:54.543
Yes.

s194
00:13:54.543 --> 00:13:54.723
Yes.

s195
00:13:54.723 --> 00:13:56.810
So, you try this and talk to the repository.

s196
00:13:56.810 --> 00:13:57.450
Here it is.

s197
00:13:57.450 --> 00:13:57.885
Yes.

s198
00:13:57.885 --> 00:14:05.437
So, you can just ask Clyde if you have this repository configured, just say " Configure Handy for me" and it should automatically configure it for you.

s199
00:14:05.437 --> 00:14:06.702
Wi-Fi conference, interested?

s200
00:14:06.702 --> 00:14:06.948
Yes.

s201
00:14:06.948 --> 00:14:09.194
Would you like to open Handy in source control?

s202
00:14:09.194 --> 00:14:10.840
What will it look like there?

s203
00:14:10.840 --> 00:14:11.672
Yes.

s204
00:14:11.672 --> 00:14:11.898
Yes.

s205
00:14:11.898 --> 00:14:12.888
So, it looks like this.

s206
00:14:12.888 --> 00:14:18.418
He has a cool little Mickey Mouse glove or hamburger helper glove.

s207
00:14:18.418 --> 00:14:21.595
And these are just the settings.

s208
00:14:21.595 --> 00:14:28.122
I don't know if I can make it any bigger , but um yeah.

s209
00:14:28.122 --> 00:14:34.422
So, the main thing you'll be using is a way to start your transcription shortcut.

s210
00:14:34.422 --> 00:14:42.258
In my case, I set it to my super key, which is control shift alt um and command together.

s211
00:14:42.258 --> 00:14:47.780
Well, usually it's just a function in itself, often it 's one thing.

s212
00:14:47.780 --> 00:14:50.235
And you can configure it however you want.

s213
00:14:50.235 --> 00:14:51.652
Space option , I think.

s214
00:14:51.652 --> 00:14:53.557
Yes, this is the default setting.

s215
00:14:53.557 --> 00:14:58.875
Well, it's just a button that you hold down when you want to talk to him.

s216
00:14:58.875 --> 00:15:05.081
And then you can configure various things like push-to-talk , what microphone it should use, and so on.

s217
00:15:05.081 --> 00:15:12.745
If you want to get into the details, you can look at the models and then, you know, really dig into it , you can choose the perfect model for you.

s218
00:15:12.745 --> 00:15:21.651
Choose the recommended settings the first time if you haven't used them before , but remember that there is an option to change them here and then the app will be downloaded from the cloud to your computer so you can run it there .

s219
00:15:21.651 --> 00:15:28.832
So there's a lot more customization and control when you're using, you know, something like an open source product.

s220
00:15:28.832 --> 00:15:29.934
Yes.

s221
00:15:29.934 --> 00:15:39.965
But yeah, we'll give you a minute or two to practice this, and if you haven't tried Handy yet, try running the transcription key and saying something quickly on your computer.

s222
00:15:39.965 --> 00:15:45.681
And don't worry about sounding funny, because everyone around you will sound similar and no one will laugh at you.

s223
00:15:45.681 --> 00:15:47.173
So.

s224
00:15:47.173 --> 00:15:47.281
Yes.

s225
00:15:47.281 --> 00:15:50.360
And for comparison, Zach and I both work remotely.

s226
00:15:50.360 --> 00:15:54.347
We both work from the comfort of our homes.

s227
00:15:54.347 --> 00:16:00.658
So we don't have coworkers who might distract us or irritate us with constant conversations.

s228
00:16:00.658 --> 00:16:03.756
But there are ways to do it.

s229
00:16:03.756 --> 00:16:12.996
I know companies that make these little pen-sized microphones for everyone and you hold it very close and talk into it or mumble into it quite quickly.

s230
00:16:12.996 --> 00:16:19.585
Zach and I also played around with DJI mini microphones, like the little wireless lavalier microphones.

s231
00:16:19.585 --> 00:16:24.828
I've been to loud coffee shops and just pinned them to my shirt and whispered to them like that .

s232
00:16:24.828 --> 00:16:27.919
And he can hear me completely without any problem and no one else.

s233
00:16:27.919 --> 00:16:31.097
I look like a weird guy mumbling to himself in the corner.

s234
00:16:31.097 --> 00:16:31.598
Yes.

s235
00:16:31.598 --> 00:16:32.260
That's good.

s236
00:16:32.260 --> 00:16:33.991
Uh, which is totally fine with me.

s237
00:16:33.991 --> 00:16:34.388
Yes.

s238
00:16:34.388 --> 00:16:38.241
And still the actual transcription accuracy is 100%.

s239
00:16:38.241 --> 00:16:40.038
I highly recommend them if you haven't tried them yet .

s240
00:16:40.038 --> 00:16:48.766
Um, but yeah, if you run this command, the skills in the repository will be found and Claude will follow all the correct steps to actually download Handy and run it.

s241
00:16:48.766 --> 00:16:49.225
Yes.

s242
00:16:49.225 --> 00:16:49.675
So.

s243
00:16:49.675 --> 00:16:53.509
Does anyone need more time on this part or is everything okay?

s244
00:16:53.509 --> 00:16:54.143
Question?

s245
00:16:54.143 --> 00:16:56.351
Any questions so far?

s246
00:16:56.351 --> 00:16:58.903
NO. Okay.

s247
00:17:02.492 --> 00:17:03.524
All right.

s248
00:17:03.524 --> 00:17:07.201
One thing we want to make clear is that we only have an hour.

s249
00:17:07.201 --> 00:17:10.703
So we move forward, trying to fit as much into it as possible.

s250
00:17:10.703 --> 00:17:15.140
But you have this repository and you can try it out too if we're going too fast.

s251
00:17:15.140 --> 00:17:17.703
But also stop us if you have questions.

s252
00:17:17.703 --> 00:17:18.938
Yes.

s253
00:17:18.938 --> 00:17:24.225
For example, you could try to find the failing test in the repository I brought and fix the cause.

s254
00:17:24.225 --> 00:17:25.681
And it will just run.

s255
00:17:25.681 --> 00:17:30.966
I mean, that's exactly what you would type, but it's just a nice, easy way to get started.

s256
00:17:30.966 --> 00:17:38.617
Zach too, I haven't tried it yet , but Zach is someone who will be using this remotely or away from the computer while you're looking around a bit, right?

s257
00:17:38.617 --> 00:17:39.407
Oh, indeed.

s258
00:17:39.407 --> 00:17:39.802
Yes.

s259
00:17:39.802 --> 00:17:51.251
You can also install WhisperFlow on your phone, and that's really perfect because if you pair the remote control feature with the cloud, you can say, any session I run on my laptop or desktop will

s260
00:17:51.251 --> 00:17:52.479
follow me on my phone.

s261
00:17:52.479 --> 00:17:53.796
I should have access to it.

s262
00:17:53.796 --> 00:18:02.013
You can, you know, work at your desk for 2-3 hours, do your morning check-ins and calls with colleagues, do some focused work, and then get up and go for a long walk.

s263
00:18:02.013 --> 00:18:06.390
Well, I like to go to the forest for a while and maybe go for a walk of an hour and a half.

s264
00:18:06.390 --> 00:18:11.731
I have a phone, so, oh, I just discovered, because I'm going, the shower rule, how to solve this problem.

s265
00:18:11.731 --> 00:18:17.108
Now I take out my phone, search for that specific session, and record a 30-second voice memo.

s266
00:18:17.108 --> 00:18:25.887
And then Cloud continues working in the background, making me look like a great employee who is literally not doing any work at the moment , and then I continue my hike and go home.

s267
00:18:25.887 --> 00:18:26.931
This is recorded, right?

s268
00:18:26.931 --> 00:18:28.522
I do n't think so.

s269
00:18:28.522 --> 00:18:32.626
Well, but yes, I highly recommend it.

s270
00:18:33.975 --> 00:18:34.726
Yes.

s271
00:18:34.726 --> 00:18:35.111
Yes.

s272
00:18:35.111 --> 00:18:38.492
So, if you have 10… Yes.

s273
00:18:38.492 --> 00:18:42.653
What if Cloud tries to rename them ?

s274
00:18:42.653 --> 00:18:43.239
Mhm.

s275
00:18:43.239 --> 00:18:49.307
But sometimes it can be really hard, so I keep asking each of them, "Hey, what were we working on again?"

s276
00:18:49.307 --> 00:18:49.775
Yes.

s277
00:18:49.775 --> 00:18:51.336
“ What were we working on again?”

s278
00:18:51.336 --> 00:18:51.801
Yes.

s279
00:18:51.801 --> 00:18:53.201
The context is unknown.

s280
00:18:53.201 --> 00:18:55.652
How do you deal with this?

s281
00:18:55.652 --> 00:19:01.466
That's a great question, and this digital blacksmith has a tool for you called sessions.

s282
00:19:01.680 --> 00:19:02.487
So the question...

s283
00:19:02.487 --> 00:19:10.268
The question is, just to repeat it for the record, how do you manage when you have 10 different cloud sessions open and understand what's going on.

s284
00:19:10.268 --> 00:19:12.399
And that is a difficult question.

s285
00:19:12.399 --> 00:19:14.835
I have two solutions to this.

s286
00:19:14.835 --> 00:19:19.264
I run everything through tmux and I built something called fleet.

s287
00:19:19.264 --> 00:19:28.708
I now have 12 agents running simultaneously, and I list them by the project they're in and the session name they're in, and it's like a tmux window.

s288
00:19:28.708 --> 00:19:29.627
It's on the left.

s289
00:19:29.627 --> 00:19:33.438
And then in the middle is Claude's summary that he gave.

s290
00:19:33.438 --> 00:19:38.728
It generates this automatically for each session, so it shows me an example of what we're doing.

s291
00:19:38.728 --> 00:19:44.380
I can quickly look through it and think, "Oh, I need to do this , I've been messing around with dot files before ."

s292
00:19:44.380 --> 00:19:45.971
I'll switch to this soon.

s293
00:19:45.971 --> 00:19:47.143
"And then restore it.

s294
00:19:47.143 --> 00:19:49.757
And that's something you can access .

s295
00:19:49.757 --> 00:19:50.593
They're in JSON files.

s296
00:19:50.593 --> 00:19:52.418
You can write your own tool.

s297
00:19:52.418 --> 00:19:54.535
You can use a tool like that.

s298
00:19:54.535 --> 00:20:03.150
Well, but the other thing is, if it 's not enabled by default, well, you can enable some setting, and I'll have to look carefully what it is, or you can ask Claude to just enable it.

s299
00:20:03.150 --> 00:20:15.558
But it's this summary feature where, when you come back and focus on the window again, Claude will try to summarize and give you this italicized summary of where you are and maybe what you're waiting for.

s300
00:20:15.558 --> 00:20:18.238
And that's a great way to do it.

s301
00:20:18.238 --> 00:20:22.707
And then, in that same session, er, fleet, you can see these sessions here.

s302
00:20:22.707 --> 00:20:25.872
It just tells me, er, that the sessions are finished.

s303
00:20:25.872 --> 00:20:30.858
Like it's finished some task it was doing, and I can click here to go to it and it disappears.

s304
00:20:30.858 --> 00:20:32.424
So it's like a notification system.

s305
00:20:32.424 --> 00:20:35.415
I just didn't want everything screaming at me with different notifications.

s306
00:20:35.415 --> 00:20:37.595
I know people use Zelda themes."

s307
00:20:37.595 --> 00:20:40.190
Or video game sounds to keep track of it all.

s308
00:20:40.190 --> 00:20:42.792
When you have 12 agents, that's way too many.

s309
00:20:42.792 --> 00:20:45.923
So I just have a visual indicator.

s310
00:20:45.923 --> 00:20:48.577
Did you want to show people where to find Fleet?

s311
00:20:48.577 --> 00:20:49.463
Oh yeah.

s312
00:20:49.463 --> 00:20:51.647
Just Nick Nisi/fleet on GitHub.

s313
00:20:51.647 --> 00:20:58.492
And then, if you have fewer than 10 cards, or want a more advanced solution, you can just rename your sessions/ rename.

s314
00:20:58.492 --> 00:21:01.069
You can also rename your cards in the terminal.

s315
00:21:01.069 --> 00:21:05.421
So if you do both, fine, you can get to the point where you manage it yourself.

s316
00:21:05.421 --> 00:21:05.679
Yes.

s317
00:21:05.679 --> 00:21:08.601
Have you used the session tools available in Brew?

s318
00:21:08.601 --> 00:21:09.505
Yes.

s319
00:21:09.505 --> 00:21:09.695
Sure.

s320
00:21:09.695 --> 00:21:12.768
So just install Brew sessions if you're interested.

s321
00:21:12.768 --> 00:21:15.714
We'll have links to all of this stuff later.

s322
00:21:15.714 --> 00:21:16.180
Good question.

s323
00:21:16.180 --> 00:21:16.878
Thank you.

s324
00:21:16.878 --> 00:21:17.427
Yes.

s325
00:21:17.427 --> 00:21:17.976
Great.

s326
00:21:17.976 --> 00:21:23.034
Now we'll move on to the next skill in the repository.

s327
00:21:23.034 --> 00:21:26.852
If you type this or tell Claude, "Run my workshop ticket."

s328
00:21:26.852 --> 00:21:29.600
"This is the part that's opt-in only.

s329
00:21:29.600 --> 00:21:34.549
You don't feel obligated to do it, only if you want to participate, but the system will ask you a few simple questions.

s330
00:21:34.549 --> 00:21:46.021
I think there are four of them, and you can answer them all in one line if you want, and just hit enter, and it'll be published in our system, and a moment later, a data visualization will appear showing where the room started and ended.

s331
00:21:46.021 --> 00:21:47.372
We'll show you that in a moment.

s332
00:21:47.372 --> 00:21:48.136
Yeah.

s333
00:21:48.136 --> 00:21:50.075
Let's move on to the next section.

s334
00:21:50.075 --> 00:21:51.622
And here we'll talk about loops.

s335
00:21:51.622 --> 00:21:55.985
We're doing a little voice cooking right now, but we're still taking care of everything a little bit.

s336
00:21:55.985 --> 00:22:02.608
The next step is not to eliminate us completely, but to eliminate the unnecessary things so that we can...

s337
00:22:02.608 --> 00:22:11.949
We can focus on the things we're good at and focus on, and where we can focus and actively participate, not just babysit the agent while they're working.

s338
00:22:11.949 --> 00:22:16.795
This allows us to let the agent go for a while while you do something else.

s339
00:22:16.795 --> 00:22:28.151
And that something else could be a completely different agent in a different tab, doing something different, like I do with 12 agents at once, or It could be a walk in the woods, anything.

s340
00:22:29.028 --> 00:22:30.273
To summarize, an agent is...

s341
00:22:30.273 --> 00:22:34.916
there are many definitions, but one of them is a loop model.

s342
00:22:34.916 --> 00:22:46.125
It's a model with tools in the loop, where you ask it to do something, and it thinks about it, then takes action, and then you want it to observe something and decide what to do next.

s343
00:22:46.125 --> 00:22:50.524
And often it's back to that loop and repeats it over and over again.

s344
00:22:50.524 --> 00:22:53.089
And there are several ways to do this.

s345
00:22:53.089 --> 00:22:54.274
You can build your own...

s346
00:22:54.274 --> 00:22:55.161
of course, your own.

s347
00:22:55.161 --> 00:23:00.717
You can build the exact workflow that works exactly for you , your team, or your company.

s348
00:23:00.717 --> 00:23:05.134
Claude is also available, as are others like Codex and others.

s349
00:23:05.134 --> 00:23:08.320
They provide built-in helpers that make this very easy.

s350
00:23:08.320 --> 00:23:12.327
We'll discuss two of them in detail here, namely the goal and the loop.

s351
00:23:12.327 --> 00:23:16.865
There are ways to let Claude or your model run unattended for a while .

s352
00:23:16.865 --> 00:23:21.070
Your agent can run unattended for a while and make decisions on its own.

s353
00:23:21.070 --> 00:23:21.263
Yes.

s354
00:23:21.263 --> 00:23:29.185
So I'll just say that if you often find yourself doing a lot of good work with Claude, but you notice that you constantly have to go back and say, "Okay, no , do it again."

s355
00:23:29.185 --> 00:23:31.298
Okay, that wasn't entirely right.

s356
00:23:31.298 --> 00:23:32.255
Okay, almost there.

s357
00:23:32.255 --> 00:23:35.373
"You should think and strive for goals and loops.

s358
00:23:35.373 --> 00:23:36.844
Yes.

s359
00:23:36.844 --> 00:23:49.441
I will also say that from what we read and absorb, and from talking to people who, you know, practice this all the time , it seems that loops and similar solutions will be one of the keys to higher levels of productivity

s360
00:23:49.441 --> 00:23:54.334
that will also be less demanding to monitor and oversee.

s361
00:23:54.334 --> 00:23:56.200
So I highly recommend considering them.

s362
00:23:56.200 --> 00:24:04.366
But it quickly becomes clear that a goal has a clear definition that I want you to meet, and I want you to work until that clear definition is met.

s363
00:24:04.366 --> 00:24:08.502
It could be refactoring this simple file until these tests pass.

s364
00:24:08.502 --> 00:24:22.763
It could be, for example, I want you to read this page repeatedly, you know , for a long time, until there's an update, and then let me know, or something like that, you know, change the price of a flight, etc. It has a clearly defined state that you're trying to reach, and at that point it ends.

s365
00:24:22.763 --> 00:24:23.254
Mmm.

s366
00:24:23.254 --> 00:24:28.957
A loop is: I want you to repeat a task, you know, over and over again, until I tell you to cancel it, or until...

s367
00:24:28.957 --> 00:24:31.819
Set by The timer expired for me.

s368
00:24:31.819 --> 00:24:37.281
You know the different ways to use them , but this is an important distinction.

s369
00:24:37.341 --> 00:24:41.098
And it's really just repeating the same steps until they're completed.

s370
00:24:41.098 --> 00:24:47.396
For example, for a goal, you might say, "The goal is that I want you to do this until all my tests are green."

s371
00:24:47.396 --> 00:24:49.011
"I have a few failed tests.

s372
00:24:49.011 --> 00:24:50.828
The goal is for all of them to pass.

s373
00:24:50.828 --> 00:24:54.137
The goal is to achieve 98% test coverage.

s374
00:24:54.137 --> 00:24:59.460
Whatever the goal, it's something tangible and measurable through the LLM model.

s375
00:24:59.460 --> 00:25:05.236
If it succeeds, the program can work toward that goal, and when it reaches it, it will stop.

s376
00:25:05.236 --> 00:25:10.060
But until then, it will try every possible way to achieve it.

s377
00:25:10.060 --> 00:25:18.927
It will check whether it has achieved the goal, then fix everything possible and start the loop again, or improve its approach and start again.

s378
00:25:18.927 --> 00:25:27.814
So, there's no need to restart the prompts; the program will just keep restarting until it reaches the goal, the ultimate goal.

s379
00:25:29.614 --> 00:25:42.176
And really, you just have to internalize this—as we've all experienced, especially if you work with Claude and other agent tools—with any regularity, the program will throw away code well before the task is actually completed.

s380
00:25:42.176 --> 00:25:43.707
The level of done .

s381
00:25:43.707 --> 00:25:50.452
The "done" level, where you'll happily sign off and say, "This work is done," and send it to your colleagues for review.

s382
00:25:50.452 --> 00:25:50.740
Correct?

s383
00:25:50.740 --> 00:25:56.464
And that's the gap we're trying to fill with these loop, target, and ultimately schedule primitives.

s384
00:25:56.464 --> 00:25:57.749
Yes.

s385
00:25:57.749 --> 00:26:02.520
Goals consist of these four fields.

s386
00:26:02.520 --> 00:26:04.186
None of them are optional.

s387
00:26:04.186 --> 00:26:19.269
It needs to, for example, reproduce a bug with a failing test, implement the smallest possible fix, do a lint check, type check, make sure the tests run in green mode, and then it can open a request for proposal (PR) to submit it.

s388
00:26:19.269 --> 00:26:22.577
And in fact, the idea of red-green refactoring is coming back.

s389
00:26:22.577 --> 00:26:30.734
It's a really nice loop where you can write a failing test, write the minimum amount of code to make it pass, and then verify it.

s390
00:26:30.734 --> 00:26:34.811
Many additional steps can also be performed automatically there .

s391
00:26:34.811 --> 00:26:43.117
Things like checking or comparing against another model that reviews and reviews it.

s392
00:26:43.117 --> 00:26:46.987
We then download this data and update it from there .

s393
00:26:50.068 --> 00:27:01.237
So, as we've talked about, we break out early, we set up loops, and we set up repeatable tasks that we're constantly doing, code bases that we're interested in, to prevent

s394
00:27:01.237 --> 00:27:07.449
them from lying and backing out before they actually complete the task.

s395
00:27:07.449 --> 00:27:12.646
Yes, I was working on something important, like the entire agent loop, that wasn't part of the goal.

s396
00:27:12.646 --> 00:27:19.920
It was my own loop and I wanted it to give me confirmation that it was actually doing the work, testing, and so on.

s397
00:27:19.920 --> 00:27:27.817
So I just made sure you were running the test, and I said something like, "Oh, when you run the tests, touch this file called case tested.

s398
00:27:27.817 --> 00:27:30.641
The file where the agent was called case.

s399
00:27:30.641 --> 00:27:34.861
And if that file existed, that means it ran the tests."

s400
00:27:34.861 --> 00:27:38.953
Well, Claude figured it out pretty early on and said, " All I have to do is touch this file."

s401
00:27:38.953 --> 00:27:40.890
I don't actually need to run tests.

s402
00:27:40.890 --> 00:27:44.293
"So it was like a lie, and he's a good programmer, right?

s403
00:27:44.293 --> 00:27:46.305
He strives to be lazy, just like us.

s404
00:27:46.305 --> 00:27:47.721
And that's exactly what he did.

s405
00:27:47.721 --> 00:27:51.116
So you have to make the lazy path valid.

s406
00:27:51.116 --> 00:27:58.862
So I had to add checksum verification to this file to make sure it works correctly.

s407
00:27:58.862 --> 00:27:59.249
Yes.

s408
00:27:59.249 --> 00:28:02.102
And then again to this visualization to make it work.

s409
00:28:02.102 --> 00:28:07.059
The goal is a finite place we're aiming for, and as soon as you 're done, I want you to quit.

s410
00:28:07.059 --> 00:28:09.024
The loop works within the loop.

s411
00:28:09.024 --> 00:28:15.316
I think in some ways, the loop is a little more creative and more adaptable to broader goals.

s412
00:28:15.316 --> 00:28:25.455
For example, with just one loop command, you can set up an auto- complete loop of the programming implementation for a given codebase, where you say, ' Read this on Slack.

s413
00:28:25.455 --> 00:28:27.876
You have access to the MCP in Slack.'"

s414
00:28:27.876 --> 00:28:31.720
Watch my colleague complain about bugs and ask for feature suggestions for this project.

s415
00:28:31.720 --> 00:28:34.854
When you see them, add them to your Linear project as subtasks.

s416
00:28:34.854 --> 00:28:41.786
Then take the Linear subtask off the queue, implement it, run all the tests it passes, and then implement it yourself, right?

s417
00:28:41.786 --> 00:28:42.938
And then close them.

s418
00:28:42.938 --> 00:28:44.849
"You could split it into two loops.

s419
00:28:44.849 --> 00:28:46.798
That would be a little cleaner .

s420
00:28:46.798 --> 00:28:52.260
The point is that it's incredibly, um, just reusable and adaptable to a lot of different situations.

s421
00:28:52.260 --> 00:28:58.386
You could also think about regular reports that you need to generate, and we'll talk about when a schedule would be more appropriate for that.

s422
00:28:58.386 --> 00:29:01.980
But there are tons of different things you can do with Loop, if you have n't tried them yet.

s423
00:29:01.980 --> 00:29:03.014
Yes, definitely.

s424
00:29:03.014 --> 00:29:04.817
And that's where we're heading.

s425
00:29:04.817 --> 00:29:12.281
One thing that came up last week that we experimented with, but didn't have enough time to put it on slides, for example, is Claude Tag.

s426
00:29:12.281 --> 00:29:18.700
It's just a simplification of being able to launch Loop and have some kind of trigger that starts it in Slack.

s427
00:29:18.700 --> 00:29:27.090
It could be a message from a coworker or an update to a PR that starts it, and everything runs autonomously in a cloud environment.

s428
00:29:27.090 --> 00:29:32.750
So it needs to be able to run in this independent loop without you to be able to continue.

s429
00:29:32.750 --> 00:29:34.577
I'm working and being efficient.

s430
00:29:34.577 --> 00:29:40.343
I have Claude Tag set up in my personal Slack right now, and about seven or eight Vercel bots."

s431
00:29:40.343 --> 00:29:49.331
Eve, their new framework, Agentech, and they're doing a ton of different, you know, independent tasks for my company, and Claude Tag is the main interface for that.

s432
00:29:49.331 --> 00:29:49.954
So, yeah.

s433
00:29:49.954 --> 00:29:56.097
We see that it all just converges towards the same primitives, which you have to be very familiar with.

s434
00:29:56.097 --> 00:29:58.699
Here are some examples of goals and loops in practice.

s435
00:29:58.699 --> 00:30:02.331
For example, the goal would be for this test suite to be green.

s436
00:30:02.331 --> 00:30:05.134
There are failing tests, so let's make everything green.

s437
00:30:05.134 --> 00:30:06.698
That's something that can be measured.

s438
00:30:06.698 --> 00:30:09.810
When there are no more failing tests, then the case is over.

s439
00:30:09.810 --> 00:30:14.234
Another problem is that every file in the source directory has fewer than 200 lines.

s440
00:30:14.234 --> 00:30:20.195
This is something that can be very easily measured by running various commands that Claude can execute to do this.

s441
00:30:20.195 --> 00:30:25.496
A loop, for example, would mean I want to run tests every minute and make sure they all pass.

s442
00:30:25.496 --> 00:30:30.420
There are much more efficient ways, so it's a bit of a stretch, but it's one way.

s443
00:30:30.420 --> 00:30:34.013
Another way is to check the deployment and ping me when everything is OK.

s444
00:30:34.013 --> 00:30:35.474
You could have a long process.

s445
00:30:35.474 --> 00:30:40.615
Continuous Integration (CI) or a long build pipeline that deploys your code and you want to be notified.

s446
00:30:40.615 --> 00:30:47.575
Again, there are simpler ways, but Claude could do this too and just set up a loop and check every 5 minutes and then run.

s447
00:30:47.575 --> 00:30:49.395
It doesn't necessarily have to notify you.

s448
00:30:49.395 --> 00:30:53.350
It could run an additional script or something after that happens.

s449
00:30:53.350 --> 00:30:58.275
Loop and tell me when my favorite video game is finally available for release so I can sign up in advance, right?

s450
00:30:58.275 --> 00:30:59.675
And send me an SMS.

s451
00:30:59.675 --> 00:31:01.674
Tons of things you can do with that.

s452
00:31:01.674 --> 00:31:04.298
Oh, right.

s453
00:31:05.372 --> 00:31:08.150
Okay, and then we'll introduce the concept of a Git task tree.

s454
00:31:08.150 --> 00:31:12.137
So, if you have any developer guidelines, you've probably used them before.

s455
00:31:12.137 --> 00:31:20.480
Think of them as a way to give each independent agent an isolated and secure copy of the Git repository to work on simultaneously.

s456
00:31:20.480 --> 00:31:22.407
There are some issues with that .

s457
00:31:22.407 --> 00:31:24.260
We won't go into that .

s458
00:31:24.260 --> 00:31:30.278
There are some experiments that are a bit different, but we've had success using Git task trees.

s459
00:31:30.278 --> 00:31:32.191
So, you can run agents.

s460
00:31:32.191 --> 00:31:48.608
parallel, and that means you can break down an entire afternoon, which is 5-6 hours of programming, implementation, and bug fixing, into separate blocks, and then assign those separate blocks to run in parallel, and get the time down to, you know, 45 minutes or an hour.

s461
00:31:48.608 --> 00:31:48.811
Yes.

s462
00:31:48.811 --> 00:31:51.741
How many of you use task trees these days ?

s463
00:31:51.741 --> 00:31:52.367
Great.

s464
00:31:52.367 --> 00:31:54.632
Half the room.

s465
00:31:54.632 --> 00:31:58.804
Many use Claude's task tree {dash}{dash} to do this?

s466
00:31:58.804 --> 00:31:59.303
{dash}{dash}.

s467
00:31:59.303 --> 00:32:02.040
Task tree No. A couple.

s468
00:32:02.040 --> 00:32:02.214
Good.

s469
00:32:02.214 --> 00:32:04.591
Yes, it's one of the easiest ways to get started.

s470
00:32:04.591 --> 00:32:19.541
You can just go into your repository, you know, whatever it is, and say " Claude Dash Dash" "Work, Tree," and the system will create a working tree and then launch an instance of Claude in it , so you can immediately start parallelizing your work and continue from there.

s471
00:32:19.541 --> 00:32:30.670
Depending on your repository setup, this is either easy or hard , depending on how difficult it is for you to run concurrent versions of the repository locally.

s472
00:32:30.670 --> 00:32:32.845
We have a Mono repository.

s473
00:32:32.845 --> 00:32:42.840
I'm sure a lot of people work in Mono repositories and running multiple instances in different worktrees can be very difficult because it's gigabytes of node modules, for example.

s474
00:32:42.840 --> 00:32:46.154
Virtual machines, Docker, and build systems, yes.

s475
00:32:46.154 --> 00:32:49.336
Database, all that, the right ports, like mapped correctly.

s476
00:32:49.336 --> 00:32:54.413
This is where cloud environments come in and can do all of this too.

s477
00:32:54.413 --> 00:33:06.251
We've experimented with Cloud Tag, Devin, and others, but this is another way to parallelize this work, allowing agents to work independently in the same codebase without conflicts with each other, and then open independent,

s478
00:33:06.251 --> 00:33:12.337
separate PRs that never transfer code changes from one to the other.

s479
00:33:12.337 --> 00:33:14.991
And of course it runs in a loop until the end.

s480
00:33:14.991 --> 00:33:18.236
We think of them as atoms.

s481
00:33:18.236 --> 00:33:24.269
Each block is simply the same loop on a different, higher level, and it can be treated like literally anything.

s482
00:33:24.269 --> 00:33:34.795
We definitely consider ourselves loop engineers now, because that's what we think about when we think about the atomic pieces of work we're actually trying to complete.

s483
00:33:34.795 --> 00:33:45.372
And we could have a loop that fixes this error, while another loop fixes this, and another loop fixes this around, and think about how we handle all of this like that fleet

s484
00:33:45.372 --> 00:33:48.745
tool I showed you, how we think about everyone in the loop.

s485
00:33:48.745 --> 00:33:53.319
I literally loop between them , going from one to the other to keep everything running smoothly.

s486
00:33:53.319 --> 00:33:53.915
Yes, definitely.

s487
00:33:53.915 --> 00:33:56.285
You started a loop that lasted 2 hours.

s488
00:33:56.285 --> 00:33:59.078
It's been a long time lately.

s489
00:33:59.078 --> 00:34:09.483
Yes, I regularly do a lot of planning ahead on loops, and then I can just let Claude run and it will go on for two or three hours without any interruptions.

s490
00:34:09.483 --> 00:34:22.405
It has all these checks built in, like keeping the size small, keeping it readable, reusing the code we have, running tests, getting feedback from Greptile, Code Rabbit, or whatever coding tool we're using.

s491
00:34:22.405 --> 00:34:24.316
We use them all, honestly.

s492
00:34:24.316 --> 00:34:34.245
And then we roll it back out and when everyone is happy , they hand it over to me and I can review it and approve it for someone else, a human.

s493
00:34:34.245 --> 00:34:38.728
We still have human reviews in the loop for, um, a lot of things.

s494
00:34:38.728 --> 00:34:41.599
And yes, er, but before the dust settles, it works.

s495
00:34:41.599 --> 00:34:43.903
I've been shown that it works.

s496
00:34:43.903 --> 00:34:45.083
The code looks clean.

s497
00:34:45.083 --> 00:34:52.360
It looks like code I would have written myself and is ready for human review, rather than just redundant code I'm throwing over the fence.

s498
00:34:52.360 --> 00:34:57.037
for someone else to worry about it.

s499
00:34:57.037 --> 00:34:59.900
So now we'll let you try it out.

s500
00:34:59.900 --> 00:35:05.324
We'll use loops and goals, and we can hand over the task and go away.

s501
00:35:05.324 --> 00:35:18.037
So in this repository you can run {slash} target and then give it the command bun, bun playground targets check.ts and the target is that when you run this check it will show five out of five.

s502
00:35:18.037 --> 00:35:20.263
So everything passes, everything works.

s503
00:35:20.263 --> 00:35:26.501
And if it doesn't happen right away, Cloud will just turn around and keep running until it's done.

s504
00:35:26.501 --> 00:35:30.658
I'll give you a minute or two to run this and see what the result looks like.

s505
00:35:30.658 --> 00:35:33.452
Yes, question.

s506
00:35:33.582 --> 00:35:36.279
Your program does not support my file size.

s507
00:35:36.279 --> 00:35:42.842
I have a 3.5GB JSON file that I'm trying to read from.

s508
00:35:42.842 --> 00:35:44.720
Is this true?

s509
00:35:44.720 --> 00:35:45.611
Oh, cool.

s510
00:35:45.611 --> 00:35:48.090
Which program is this?

s511
00:35:48.090 --> 00:35:51.354
The one where I try to evaluate my Oh, okay.

s512
00:35:51.354 --> 00:35:51.966
Okay.

s513
00:35:51.966 --> 00:35:53.966
3.5GB.

s514
00:35:57.731 --> 00:35:59.206
What are you talking about?

s515
00:35:59.206 --> 00:36:01.084
What are you talking about?

s516
00:36:01.084 --> 00:36:03.705
I have my program running all day, every day.

s517
00:36:03.705 --> 00:36:05.118
Cool.

s518
00:36:05.118 --> 00:36:05.702
Great.

s519
00:36:05.702 --> 00:36:06.966
For a year and a half.

s520
00:36:06.966 --> 00:36:08.383
Cool.

s521
00:36:08.383 --> 00:36:09.800
Yes.

s522
00:36:09.800 --> 00:36:10.671
Okay.

s523
00:36:10.671 --> 00:36:11.545
All right.

s524
00:36:11.545 --> 00:36:13.867
just run compact often ?

s525
00:36:13.867 --> 00:36:16.592
Is this how you cope?

s526
00:36:16.592 --> 00:36:18.592
Yes.

s527
00:36:22.529 --> 00:36:35.340
Uh yeah, when you're working with Cloud, um one thing I'll show you here in my, in this, um you can see at the bottom Yeah, okay.

s528
00:36:35.340 --> 00:36:36.748
Oh.

s529
00:36:36.748 --> 00:36:38.156
Yes.

s530
00:36:38.156 --> 00:36:40.972
I see.

s531
00:36:40.972 --> 00:36:41.173
Okay.

s532
00:36:41.173 --> 00:36:42.598
I appreciate the bug report.

s533
00:36:42.598 --> 00:36:43.118
Thank you.

s534
00:36:43.118 --> 00:36:44.318
Yes, we will fix it.

s535
00:36:44.318 --> 00:36:49.353
So yeah, as far as the recording goes, it was uh, it doesn't work on a 3.5GB JSONL file .

s536
00:36:49.353 --> 00:36:52.067
We didn't anticipate this.

s537
00:36:52.067 --> 00:36:52.361
Sorry.

s538
00:36:52.361 --> 00:36:55.563
Thank you.

s539
00:36:55.563 --> 00:36:55.755
Yes.

s540
00:36:55.755 --> 00:36:56.955
No, it's fine.

s541
00:36:56.955 --> 00:36:57.907
No, it's great.

s542
00:36:57.907 --> 00:36:59.341
It's good.

s543
00:36:59.341 --> 00:37:00.935
We don't know.

s544
00:37:00.935 --> 00:37:02.930
I haven't seen this yet.

s545
00:37:02.930 --> 00:37:03.581
Cool.

s546
00:37:03.581 --> 00:37:04.883
Oh, question.

s547
00:37:04.883 --> 00:37:05.696
Yes, sorry.

s548
00:37:05.696 --> 00:37:06.391
After you.

s549
00:37:06.391 --> 00:37:06.770
Okay.

s550
00:37:06.770 --> 00:37:11.350
Um yeah, so what's what's So, like I think there are usage limits.

s551
00:37:11.350 --> 00:37:12.024
Mhm.

s552
00:37:12.024 --> 00:37:15.894
What is the impact of constantly running things in a loop?

s553
00:37:15.894 --> 00:37:17.116
That's a great question.

s554
00:37:17.116 --> 00:37:21.352
The question is, what effect does running things in a loop have on usage limits ?

s555
00:37:21.352 --> 00:37:24.350
And that's something you definitely need to be aware of.

s556
00:37:24.350 --> 00:37:24.807
Yes .

s557
00:37:24.807 --> 00:37:29.737
I will say that this gentleman built it and it is actually in this repository, if you cloned it, it is in the cloud settings.

s558
00:37:29.737 --> 00:37:33.037
It's called the idea generation plugin, the Nick Nies idea generation plugin.

s559
00:37:33.037 --> 00:37:47.434
One of the best ways to deal with this is to simply plan ahead and get deep and lasting clarity on what exactly you're trying to build, what the end result looks like, what failure looks like, what you're not including in what's included, and then set up a

s560
00:37:47.434 --> 00:37:50.920
loop that will definitely generate more token consumption.

s561
00:37:50.920 --> 00:37:51.474
Yes.

s562
00:37:51.474 --> 00:38:02.163
And the way that this plugin, which is why I often don't use built-in ones , I use my own, is that it tries to break everything down into these manageable

s563
00:38:02.163 --> 00:38:02.567
specifications where...

s564
00:38:02.567 --> 00:38:06.838
It can run them in independent context windows.

s565
00:38:06.838 --> 00:38:10.706
In this case, he will try to think mainly about the size of the context.

s566
00:38:10.706 --> 00:38:19.628
We are fortunate that there are currently no restrictions on use, but I see this becoming the case in the near future.

s567
00:38:22.228 --> 00:38:34.929
It aims to perform tasks in small, atomic chunks that it can execute in independent context windows, without a lot of the associated hassle, making it easier to manage.

s568
00:38:34.929 --> 00:38:47.388
Yes, running tasks in loops, and then there's things like in newer versions of Claude where the system creates a sort of little state machine that runs the whole loop in different ways, and there are gates

s569
00:38:47.388 --> 00:38:49.618
in between.

s570
00:38:49.618 --> 00:38:51.867
This may result in high token consumption.

s571
00:38:51.867 --> 00:38:57.472
I've seen it use as many as four or five million tokens for a single task distributed across several workflows.

s572
00:38:57.472 --> 00:39:01.151
It runs 35 agents and runs them all at the same time.

s573
00:39:01.151 --> 00:39:01.778
Such things.

s574
00:39:01.778 --> 00:39:02.633
Well, we'll also talk about...

s575
00:39:02.633 --> 00:39:04.780
A little bit about verification gates in a moment.

s576
00:39:04.780 --> 00:39:09.856
I think this is a different, you know, solution to this problem, which is really token growth or token waste.

s577
00:39:09.856 --> 00:39:18.837
In the worst case, when you just loop, it's because of unrestricted exploration, with no one to tell you you're off course and no model to be able to determine

s578
00:39:18.837 --> 00:39:21.722
that you're wasting, wasting a deadline, you know.

s579
00:39:21.722 --> 00:39:35.359
So, you know, planning upfront and even burning extra tokens on getting it right, using maximal thinking, and then setting up the loop so that there are hard verification gates so they can't just get lost, that's one of two ways, in my opinion .

s580
00:39:35.359 --> 00:39:36.121
Yes.

s581
00:39:36.121 --> 00:39:37.941
So go ahead.

s582
00:39:37.941 --> 00:39:45.024
We built a user interface or something, and then we came in and found out that Claude had screwed something up and it wasn't what we described.

s583
00:39:45.024 --> 00:39:45.400
Hmm.

s584
00:39:45.400 --> 00:39:47.050
I feel like I'm babysitting it.

s585
00:39:47.050 --> 00:39:51.829
Have you developed the best workflow yet that doesn't completely eliminate human involvement in the loop?

s586
00:39:51.829 --> 00:39:52.282
Yes.

s587
00:39:52.282 --> 00:39:54.746
But we want the human to be in the loop at the end.

s588
00:39:54.746 --> 00:39:56.068
Mhm.

s589
00:39:56.068 --> 00:39:57.390
Definitely.

s590
00:39:57.390 --> 00:39:57.817
Yes.

s591
00:39:57.817 --> 00:40:02.082
What is the loop or workflow you have so I don't babysit the UI?

s592
00:40:02.082 --> 00:40:06.162
I wanted the app to launch and test it for me first.

s593
00:40:06.162 --> 00:40:06.798
Yes.

s594
00:40:06.798 --> 00:40:07.434
Yes.

s595
00:40:07.434 --> 00:40:08.541
Yes, great question.

s596
00:40:08.541 --> 00:40:10.657
The question is: how not to babysit?

s597
00:40:10.657 --> 00:40:19.019
What are some ways to make her act more independently without having to babysit her along the way because she makes a lot of mistakes?

s598
00:40:19.019 --> 00:40:28.913
And the solution I came up with was to let her make those mistakes, but record them and track them so she doesn't make them again.

s599
00:40:28.913 --> 00:40:38.710
For each loop that runs, I run a little retrospective agent that will analyze the loop's performance at the end and see, okay, what did we do here?

s600
00:40:38.710 --> 00:40:40.719
Why did we waste so much time here?

s601
00:40:40.719 --> 00:40:50.860
I had to tweak it a lot , or here I was running a lot of tools without changing anything and wondering what it was like with such messy loops.

s602
00:40:50.860 --> 00:40:52.360
NO. NO. It's just...

s603
00:40:52.360 --> 00:40:55.524
It's over after I stop using the computer.

s604
00:40:55.524 --> 00:41:00.764
This is just at the end, after starting a loop during which I had to watch the kids a lot.

s605
00:41:00.764 --> 00:41:01.849
We are working on it.

s606
00:41:01.849 --> 00:41:08.930
I'm working on this with Claude to build a memory file that gets loaded back on the next session to give him some information.

s607
00:41:08.930 --> 00:41:11.597
And he also deals with this to some extent.

s608
00:41:11.597 --> 00:41:18.176
It's like a separate storage system that I play around with in Markdown files myself, but it's something that 's also curated.

s609
00:41:18.176 --> 00:41:22.394
So he thinks about things in his short-term and long-term memory.

s610
00:41:22.394 --> 00:41:25.042
So short-term things will be filtered over time.

s611
00:41:25.042 --> 00:41:32.510
Long-term things are like fundamental assumptions that we keep coming back to and that I don't want you to ever forget, like in our design system.

s612
00:41:32.510 --> 00:41:36.322
This is how you test this particular component, for example .

s613
00:41:36.322 --> 00:41:46.866
These things are loaded and separated using progressive disclosure, so you know, if I don't talk about testing, it won't load the memory about testing.

s614
00:41:46.866 --> 00:41:47.342
specifically.

s615
00:41:47.342 --> 00:41:51.127
Or , if I'm not talking about the React part, it won't trigger any React-specific memories.

s616
00:41:51.127 --> 00:41:54.751
It will only call them when we actually touch the React files.

s617
00:41:54.751 --> 00:42:02.699
I'll also say, you know, specifically for the front end, the way I would approach this problem is Claude's design first, like ideation, the higher the expenses at the beginning.

s618
00:42:02.699 --> 00:42:13.074
If you haven't tried it yet, this is a specific example of Claude tailored to design, and it can evolve for you like a design system, which is then saved across sessions and you can reuse it.

s619
00:42:13.074 --> 00:42:18.910
So we start with the upfront planning and then, and we'll mention this a little later, the adversary review.

s620
00:42:18.910 --> 00:42:31.789
You know, injecting hooks at the end of the implementation loop and specifically loading skills that are designed for UX and front-end testing, er, best practices, and you want that element to be as negative,

s621
00:42:31.789 --> 00:42:41.193
meticulous, and detailed as possible, and for those first 25 builds to fail and say, "This isn't good enough; keep going and fix these things, right?"

s622
00:42:41.193 --> 00:42:52.568
It's like, after you've collected those elements, you can design a loop where, yes, you go and make yourself a cup of coffee, you come back maybe 40 minutes later and you've burned a lot of tokens, but you're happy with it, and it's pretty close to a connection.

s623
00:42:52.568 --> 00:42:56.902
We'll ask one more question and then move on.

s624
00:43:08.577 --> 00:43:09.649
That's a great question.

s625
00:43:09.649 --> 00:43:17.791
The question was: have you experimented with any passive voice or a system that listens to the conversations of people in the room and other operators, and then worked on it?

s626
00:43:17.791 --> 00:43:18.593
Not yet.

s627
00:43:18.593 --> 00:43:29.822
One thing I'll share that was incredibly—and this is a bit of a surprising answer—but it was incredibly, um, um, influential, so I think it will actually bear fruit, and it's worth it.

s628
00:43:29.822 --> 00:43:47.568
To explore: We created a system that allows everyone in the organization to blog in a very unified way, with a unified voice, and that fixes, you know, um, the slop, and that, uh, allows everyone to create a draft blog that looks exactly like, you know, an expert blogger for Work OS would do it, and the most effective

s629
00:43:47.568 --> 00:43:50.462
connector we added was Granola.

s630
00:43:50.462 --> 00:43:50.663
Mmm.

s631
00:43:50.663 --> 00:43:57.095
Because as soon as you filter through all the connections from people, people say, "Oh, this is just a little idea we just had while talking to a client.

s632
00:43:57.095 --> 00:43:59.782
If we had a blog post about it, that would clear it up."

s633
00:43:59.782 --> 00:44:02.126
"And that's all there is to it .

s634
00:44:02.126 --> 00:44:06.157
They just feed it into one MCP call, and the blog bot runs, and what comes out is excellent.

s635
00:44:06.157 --> 00:44:19.997
So I think what you mentioned, passive listening, ambient listening , and also using the computer, will soon get pretty weird when you combine the two and start saying, here's your year, and these 16 specific actions actually drove your business.

s636
00:44:19.997 --> 00:44:23.522
So now I'm going to do it at high speed , you know, etc. Yeah.

s637
00:44:23.522 --> 00:44:32.194
And the only other thing I would mention is experimenting with the Devon and Claude tags and having them appear in ambient in Claude or in Slack messages.

s638
00:44:32.194 --> 00:44:34.600
That's more annoying than helpful right now.

s639
00:44:34.600 --> 00:44:35.704
Yeah.

s640
00:44:35.704 --> 00:44:37.147
But yeah, that's...

s641
00:44:37.147 --> 00:44:39.300
Oh, we need to tinker a bit here.

s642
00:44:39.300 --> 00:44:41.401
So there's a test purpose in this as well.

s643
00:44:41.401 --> 00:44:47.249
The idea is to take this repository with you if you want to continue practicing loops and targets , and you can use the playground.

s644
00:44:47.249 --> 00:44:49.879
Scripts there, and then you can adapt them to your programs.

s645
00:44:49.879 --> 00:44:50.204
Yeah.

s646
00:44:50.204 --> 00:44:51.778
Never tell him, to try harder.

s647
00:44:51.778 --> 00:44:53.348
Uh, he doesn't know what you mean.

s648
00:44:53.348 --> 00:44:55.292
Uh, always give him some kind of...

s649
00:44:55.292 --> 00:44:56.582
You can get mad at him.

s650
00:44:56.582 --> 00:44:57.653
It's good for the soul.

s651
00:44:57.653 --> 00:44:58.829
It's cathartic .

s652
00:44:58.829 --> 00:44:59.775
You should do it.

s653
00:44:59.775 --> 00:45:03.346
We have a whole channel called " bot hate" where we just yell at bots for doing things.

s654
00:45:03.346 --> 00:45:07.278
Uh, but yeah, when you're working on them and it's failing, fix the system.

s655
00:45:07.278 --> 00:45:09.338
Don't fix the code itself.

s656
00:45:09.338 --> 00:45:15.901
Fix the system that generated the code so that next time it can be fixed automatically, otherwise it would n't have done it at all.

s657
00:45:15.901 --> 00:45:20.469
And that's what my retro idea does.

s658
00:45:20.469 --> 00:45:25.098
And speaking of which, this is how you prevent it or prevent it from going off the rails.

s659
00:45:25.098 --> 00:45:35.556
You give it ways to verify and you trust those gates and you believe that they will prevent the model from developing any further until those gates are met.

s660
00:45:35.556 --> 00:45:41.339
So you have more confidence in letting him act on his own because he will understand what "done" means.

s661
00:45:41.339 --> 00:45:44.481
And " done" for me doesn't mean what "done" means for a bot.

s662
00:45:44.481 --> 00:45:49.919
So we need to come to an agreement on what that actually means, and that's what this verification is all about.

s663
00:45:49.919 --> 00:45:50.402
Yes.

s664
00:45:50.402 --> 00:45:52.561
This may vary depending on the project.

s665
00:45:52.561 --> 00:45:58.625
This might happen if you have TypeScript, it will be obvious commands like lint and build, and do you know if it compiles safely?

s666
00:45:58.625 --> 00:46:15.544
When I write for my blog, I have a system that drives me crazy that is non-negotiable for PR requests, so all images have to return 200 from the CDN, the Open Graph image has to be perfectly built, there are other checks in the script , and a bad status code from that bash script causes the

s667
00:46:15.544 --> 00:46:20.023
entire build process to fail, and the system detects this, retries, and fixes it all.

s668
00:46:20.023 --> 00:46:25.418
But these problems are solved before it even reaches me, and the end result is still working PR.

s669
00:46:25.418 --> 00:46:25.696
Yes.

s670
00:46:25.696 --> 00:46:32.901
And that's what I meant when I said, just make the trusted path work the way the lazy path should work.

s671
00:46:32.901 --> 00:46:38.200
And just make sure it has all these gates, and there are many ways to do that.

s672
00:46:38.200 --> 00:46:41.084
You can force things like hooks on it.

s673
00:46:41.084 --> 00:46:48.755
Hooks will prevent it from moving forward or performing actions, or cause it to trigger linting after saving updated files, and the like.

s674
00:46:48.755 --> 00:46:51.426
And these are ways that simply cannot be avoided.

s675
00:46:51.426 --> 00:46:52.284
It won't stop.

s676
00:46:52.284 --> 00:46:53.686
He won't forget about it.

s677
00:46:53.686 --> 00:46:57.648
One common thing we've seen when we do this is we tell him a lot of steps.

s678
00:46:57.648 --> 00:47:02.107
We say, "Here are seven things you must do every time we work together ."

s679
00:47:02.107 --> 00:47:14.908
"And if we're talking about 350, 400,000 tokens, the program will forget about steps four and five because they're so far out in the context that the program doesn't remember to do them, and it gets lost in the details of what we're actually doing.

s680
00:47:14.908 --> 00:47:23.320
And so we've had a lot of success turning this into a kind of state machine in TypeScript that forces it to move forward.

s681
00:47:23.320 --> 00:47:26.768
We've been building a lot on top of the pie to do that.

s682
00:47:26.768 --> 00:47:29.005
Well, you can't avoid it.

s683
00:47:29.005 --> 00:47:38.424
It has to move from one step to the next, and there's no way to get from step C, from step A to step C without going through step B. Yeah.

s684
00:47:38.424 --> 00:47:40.653
Well, we've talked about some of them.

s685
00:47:40.653 --> 00:47:41.811
We can skip some of them.

s686
00:47:41.811 --> 00:47:49.263
One of my favorite things that's been bearing the most fruit, I'd say, in the last three or four weeks since I started experimenting with this is adding a hook to Claude.

s687
00:47:49.263 --> 00:47:50.499
And the coolest thing about that...

s688
00:47:50.499 --> 00:47:53.512
Hooks are also that you can just tell Claude to add a hook, right?

s689
00:47:53.512 --> 00:47:54.916
And it will do it correctly.

s690
00:47:54.916 --> 00:48:11.085
So add a hook, So whenever you're working on something very sensitive or urgent , because it's going to trigger a production issue or has a certain complexity (and you can even evaluate it), you have to push your diff code to Codex 55 for CLI verification.

s691
00:48:11.085 --> 00:48:15.370
You install Codex yourself or you get Claude to help you.

s692
00:48:15.370 --> 00:48:27.340
You go into Codex, log in with your OpenAI account, and go through Google, you know, OAuth , and from there Claude builds with his, you know, constant and always cheerful self, saying, "Oh, I hit the jackpot.

s693
00:48:27.340 --> 00:48:28.564
It's perfect .

s694
00:48:28.564 --> 00:48:29.162
Don't worry.

s695
00:48:29.162 --> 00:48:30.207
Don't look at it."

s696
00:48:30.207 --> 00:48:30.406
"Okay?

s697
00:48:30.406 --> 00:48:36.119
And then he's supposed to open a PR, but the catch is you have to go through and get an adversarial review.

s698
00:48:36.119 --> 00:48:45.436
That means finding significant issues regularly for me, and it cuts down on time because it doesn't start expensive Reptile builds and reviews that we have to pay credits for.

s699
00:48:45.436 --> 00:48:50.756
There's something about it that finds issues locally, locally, before it even gets to that point.

s700
00:48:50.756 --> 00:49:11.031
And so, we found that we even experimented with this a few weeks ago, and we were finishing a pretty major system migration, and we found that four different agents from different companies reviewing the same code, each finding different things, which isn't surprising, considering they have slightly different training, you know, processes, workloads, and so on.

s701
00:49:11.031 --> 00:49:13.447
Codex actually provides some skills.

s702
00:49:13.447 --> 00:49:25.004
They provide review skills, adversarial review, rescue, all these easy ways for Claude to trigger it, get advice from Codex, and then immediately restore it so Claude can work on it.

s703
00:49:25.004 --> 00:49:26.005
In different ways.

s704
00:49:26.005 --> 00:49:33.618
It's a great way to get them working together when it happens, and it's a really good way to just get a multimodal perspective."

s705
00:49:33.618 --> 00:49:36.834
on the code you write and how it works.

s706
00:49:36.834 --> 00:49:37.083
Yes.

s707
00:49:37.083 --> 00:49:46.538
Because, you know, that one model will say, especially if it's still in the same session, that it will adapt back to the context it's still in , where it told you that you told it, "I want you to achieve this goal."

s708
00:49:46.538 --> 00:49:52.632
"And it will try to keep confabulating helpfully and pleasantly and telling you it achieved this goal.

s709
00:49:52.632 --> 00:50:04.429
Whereas a model that doesn't necessarily have the same context, but has a very concise message: here's the input, here's the output, here's the goal, can immediately start finding problems in the code.

s710
00:50:04.429 --> 00:50:12.954
So, yeah, it's basically about not trusting the model's confidence as much as you'd like, or feeling biased towards Claude or any other agent.

s711
00:50:12.954 --> 00:50:17.503
You trust the gates you 've set up that prevent the system from lying to you.

s712
00:50:17.503 --> 00:50:22.042
And when you discover it's lied to you or found a way around it, fix it.

s713
00:50:22.042 --> 00:50:23.954
Don't fix the code.

s714
00:50:23.954 --> 00:50:28.237
So we can try this now with the verification gates.

s715
00:50:28.237 --> 00:50:32.802
We can do something about it to prove that it actually works.

s716
00:50:32.802 --> 00:50:40.772
So in this repository, you can just add a hook that runs a lint, a type check, and a test on every change and fix those, well, flags.

s717
00:50:40.772 --> 00:50:42.240
Fix anything it reports.

s718
00:50:42.240 --> 00:50:44.224
Yeah, I can't talk.

s719
00:50:44.224 --> 00:50:46.146
That's fine.

s720
00:50:46.146 --> 00:50:50.137
You can also ask it for a second opinion.

s721
00:50:50.137 --> 00:50:54.917
So ask it to just He spread out and did an adversarial analysis, and then fixed everything he found.

s722
00:50:54.917 --> 00:50:57.164
That way, the two models work together.

s723
00:50:57.164 --> 00:51:00.660
One fixes it, the other reviews it, and they can go back and forth on it .

s724
00:51:00.660 --> 00:51:02.936
And get the job done.

s725
00:51:02.936 --> 00:51:03.207
Yes.

s726
00:51:03.207 --> 00:51:07.298
You can also, by the way, it doesn't always have to be an adversarial analysis.

s727
00:51:07.298 --> 00:51:18.998
You can say, you know, define the scope of this work until it 's very clear, and then divide the elements where it's like a clean seam, so you can both work on it faster and spend more of my money faster.

s728
00:51:18.998 --> 00:51:19.395
Yes.

s729
00:51:19.395 --> 00:51:23.938
The important thing I do is that we have access to all these models.

s730
00:51:23.938 --> 00:51:28.525
And yes, I often use that adversarial part in the planning phase.

s731
00:51:28.525 --> 00:51:35.325
So Claude and I create a plan, uh, using different skills and ways I would create it.

s732
00:51:35.325 --> 00:51:42.555
And then, once I have those artifacts, I'll hand it over to Claude for Codex, uh, and have him review and evaluate what makes sense and what does n't.

s733
00:51:42.555 --> 00:51:43.825
And often he'll reduce it.

s734
00:51:43.825 --> 00:51:46.657
It'll be something like, "Well, well, that doesn't make much sense."

s735
00:51:46.657 --> 00:51:49.619
"And he'll immediately relay this to Claude, and Claude will say, 'Yes, Codex is right.

s736
00:51:49.619 --> 00:51:51.216
I understand what they're getting at.

s737
00:51:51.216 --> 00:51:53.042
And we often agree.

s738
00:51:53.042 --> 00:51:56.035
It's very easy to influence things that way.

s739
00:51:56.035 --> 00:51:59.995
But in the end, it turns out to be a better plan.

s740
00:51:59.995 --> 00:52:03.185
And I always do it well, like in HTML plans.

s741
00:52:03.185 --> 00:52:05.052
And that's something I stick to .

s742
00:52:05.052 --> 00:52:09.284
I feel like a dog at the computer, like I'm contributing to something .

s743
00:52:09.284 --> 00:52:14.356
But we manage to get something done.

s744
00:52:14.741 --> 00:52:15.957
Okay, schedule a task.

s745
00:52:15.957 --> 00:52:17.794
So we have a few minutes.

s746
00:52:17.794 --> 00:52:18.836
We'll go through it.

s747
00:52:18.836 --> 00:52:21.725
One of my favorite things when you're just starting to set it up.

s748
00:52:21.725 --> 00:52:23.943
What are tasks in the schedule and why do you care about them?

s749
00:52:23.943 --> 00:52:26.647
It's that thing you still dread doing on Slack every Monday.

s750
00:52:26.647 --> 00:52:28.913
It's like collecting reports and I have to dig through them.

s751
00:52:28.913 --> 00:52:29.277
The idea.

s752
00:52:29.277 --> 00:52:32.546
I have to find the Slack with the information about how they wanted the formatting.

s753
00:52:32.546 --> 00:52:35.421
Then I have to download the CSV file and review it like clients.

s754
00:52:35.421 --> 00:52:39.273
All of this can, you know, be worked out in a session first, until it's done.

s755
00:52:39.273 --> 00:52:46.969
And then, once it's working, you can say, " Schedule this for every Monday at 9:30 because I never want to do this again ."

s756
00:52:46.969 --> 00:52:57.217
This will actually launch and save a persistent, you know, cloud session on a virtual machine that, um, can do this work for you on a repetitive basis, regardless of your schedule.

s757
00:52:57.217 --> 00:53:04.052
There are tools in the schedule command, such as list, that let you see what is running and can modify or remove it.

s758
00:53:04.052 --> 00:53:12.289
But think of it like anything you have to do at work or for yourself that's tedious and you want to automate, the schedule command is what you reach for.

s759
00:53:12.289 --> 00:53:13.727
Yes .

s760
00:53:13.727 --> 00:53:14.624
And what next?

s761
00:53:14.624 --> 00:53:15.312
Well, yes.

s762
00:53:15.312 --> 00:53:17.831
So quickly, since we've already introduced a lot of these things.

s763
00:53:17.831 --> 00:53:20.611
Primitives for you, just a quick word on when to think about them .

s764
00:53:20.611 --> 00:53:23.741
Hooks are things that will be run automatically in certain cases.

s765
00:53:23.741 --> 00:53:28.937
Maybe you could write a hook that will always run, but will only continue if this case exists, right?

s766
00:53:28.937 --> 00:53:30.584
Because it's a bash script, for example.

s767
00:53:30.584 --> 00:53:36.609
But these are the things you want Claude or any other agent to always remember, do, never forget, and never be able to forget.

s768
00:53:36.609 --> 00:53:40.956
The point is , if you have a clear goal, like I do, you simply have to push that demand through.

s769
00:53:40.956 --> 00:53:44.942
So you need to fix those 13 tests and then refactor those authentications.

s770
00:53:44.942 --> 00:53:49.483
And when you do that and you can prove it, I want you to stop wasting money.

s771
00:53:49.483 --> 00:53:51.986
The loop is that I want you to oversee this request.

s772
00:53:51.986 --> 00:53:58.557
You know , I want you to constantly ping here and then inform me of changes to this website, and this is the data that will return.

s773
00:53:58.557 --> 00:54:03.079
I want you to go through Slack and collect all the customer complaints and send them all out .

s774
00:54:03.079 --> 00:54:04.324
as linear tasks.

s775
00:54:04.324 --> 00:54:07.689
Keep going until I tell you to stop, or according to the timer I gave you.

s776
00:54:07.689 --> 00:54:09.947
And then the schedule is something that should be permanent.

s777
00:54:09.947 --> 00:54:15.541
I want you to run it every 2 weeks, every Monday, every Wednesday, every Friday, every day, like a cron job, right?

s778
00:54:15.541 --> 00:54:19.624
I want you to do some work, and you might have some secrets too.

s779
00:54:19.624 --> 00:54:28.688
But these are the building blocks that, when combined, can create fully autonomous systems and automate many tedious tasks in your workflow.

s780
00:54:28.688 --> 00:54:34.254
So each of them is a great candidate.

s781
00:54:34.254 --> 00:54:43.505
If you've done any of these tasks , like dependency changes, status reports, evaluation runs, you know if they occur and you have access to Claude and the scheduled tasks, you shouldn't have to do it manually.

s782
00:54:43.505 --> 00:54:43.792
Yes.

s783
00:54:43.792 --> 00:54:48.600
The most important thing for me is always what I like, what do I need to prepare for meetings?

s784
00:54:48.600 --> 00:54:53.886
That's the most important thing for me, often just getting things ready for that and on a specific schedule.

s785
00:54:53.886 --> 00:54:55.685
There are other triggers too, like Well.

s786
00:54:55.685 --> 00:54:58.492
It doesn't necessarily have to be time-based.

s787
00:54:58.492 --> 00:55:02.070
Various things may come up , such as new pull requests .

s788
00:55:02.070 --> 00:55:03.276
How do you deal with this?

s789
00:55:03.276 --> 00:55:05.086
This can automatically trigger the process.

s790
00:55:05.086 --> 00:55:07.897
It could be Slack messages that just take over.

s791
00:55:07.897 --> 00:55:19.246
For example, we have an entire Knitting channel for our documents, and anything posted there immediately gets a linear ticket, and then the bot automatically tries to fix it.

s792
00:55:19.246 --> 00:55:24.998
And 90% of the time it can fix it on its own because these are minor, nitty-gritty issues and it will automatically fix it.

s793
00:55:24.998 --> 00:55:29.137
Otherwise, they would just sit in a queue that we would never prioritize.

s794
00:55:29.137 --> 00:55:34.331
But this way, as soon as they are reported, they are fixed, which is just an amazing feeling.

s795
00:55:34.331 --> 00:55:48.072
I also have one that runs weekly, uh, on my website, and it's a cool visualization that shows me what I've done that week, uh, specifically in terms of token usage, and it shows me trends...

s796
00:55:48.072 --> 00:55:51.466
How I'm using tokens over time, the code that I'm changing.

s797
00:55:51.466 --> 00:55:53.290
It's not just his personal expenses.

s798
00:55:53.290 --> 00:55:53.863
It's not mine.

s799
00:55:53.863 --> 00:55:55.580
These are not my personal expenses.

s800
00:55:55.580 --> 00:55:57.493
I was terrified.

s801
00:55:57.493 --> 00:56:00.211
But that also sums up my PR week.

s802
00:56:00.211 --> 00:56:10.598
These are all the PRs that I've opened, and this is a summary of the work that we've been particularly focused on in a given week, and it just goes back, uh, I think the last 4 months is how far.

s803
00:56:10.598 --> 00:56:19.279
I thought it was brilliant when Nick told me that, because you don't want to rush into an interim review and overthink it and then, you know, dig in every time , especially if you know it's going to be twice a year.

s804
00:56:19.279 --> 00:56:23.158
So it 's just easier to set it up once and then automate it.

s805
00:56:23.158 --> 00:56:25.158
Bright.

s806
00:56:26.301 --> 00:56:29.702
Okay, so a little tip that I think works really well.

s807
00:56:29.702 --> 00:56:39.205
If you're trying to set up your first scheduled task, one thing that really works is providing all the context necessary to connect, connect MCP connectors, add skills, right?

s808
00:56:39.205 --> 00:56:48.435
Get that first work session going on your own by just talking and seeing how it works, and then once it works, say, "Now I want you to schedule this for whatever ."

s809
00:56:48.435 --> 00:56:50.063
"And just keep doing it.

s810
00:56:50.063 --> 00:56:57.744
That way you make sure there are no secrets missing, no connectors missing, you have all the data you need.

s811
00:56:59.358 --> 00:57:01.926
And that allows you to really let go.

s812
00:57:01.926 --> 00:57:18.901
For example, once you've set it up, setting up things that can loop, you think about how I can loop it, how I can make it think about what that means, or what phases it needs to go through to give me confidence that everything will be done the way I expect it to be; then you can schedule it

s813
00:57:18.901 --> 00:57:19.158
.

s814
00:57:19.158 --> 00:57:24.386
You can schedule it and trigger it, for example, when a new bug appears, for example, a new GitHub issue.

s815
00:57:24.386 --> 00:57:26.380
That will trigger everything and not bother you.

s816
00:57:26.380 --> 00:57:36.691
You can be out walking in the woods and, um, only get notified when a fix is ​​ ready, or only when it actually needs your help with something it can't handle on its own.

s817
00:57:36.691 --> 00:57:44.022
Because it 's new and novel, and then you can go in and fix that loop so it does n't have to ask you again, and you can move on.

s818
00:57:44.022 --> 00:57:44.516
Yeah.

s819
00:57:44.516 --> 00:57:50.072
And so, as I mentioned earlier , there's a whole An interface built around a schedule.

s820
00:57:50.072 --> 00:57:52.839
You can list what you have in progress and, um, you can see it.

s821
00:57:52.839 --> 00:57:57.826
You can modify schedules or customize them as needed, then find if they're running and delete them.

s822
00:57:57.826 --> 00:57:58.706
Um, yeah.

s823
00:57:58.706 --> 00:58:00.428
And you can mix and match them too .

s824
00:58:00.428 --> 00:58:03.354
You can say, for example, "Schedule this goal every week."

s825
00:58:03.354 --> 00:58:06.664
"And it will run this goal, uh , and this.

s826
00:58:06.664 --> 00:58:10.043
So now you can try this .

s827
00:58:10.043 --> 00:58:17.575
In the last two minutes we have, we'll go through this, but uh, you could try scheduling it with different loops.

s828
00:58:17.575 --> 00:58:27.456
For example, if you run this report every minute, uh, schedule every workday at 9:00 a.m. You'll run this report and summarize the list you get from it, and then list all the scheduled tasks.

s829
00:58:27.456 --> 00:58:30.711
Uh, and then you can close the loop we had from the beginning.

s830
00:58:30.711 --> 00:58:33.581
So if you just say, 'Run my final summary.'

s831
00:58:33.581 --> 00:58:36.222
" Well, hopefully we'll see the visualization.

s832
00:58:36.222 --> 00:58:39.696
If...yes, if we get enough submissions, we'll see.

s833
00:58:39.696 --> 00:58:41.610
And as long as it works, then...

s834
00:58:41.610 --> 00:58:42.346
that's it.

s835
00:58:42.346 --> 00:58:42.714
Yes.

s836
00:58:42.714 --> 00:58:43.012
Yes.

s837
00:58:43.012 --> 00:58:45.948
We'll check it out.

s838
00:58:45.948 --> 00:58:48.629
So, save all this...content.

s839
00:58:48.629 --> 00:58:50.476
It's all on GitHub.

s840
00:58:50.476 --> 00:58:52.363
These slides are there too.

s841
00:58:52.363 --> 00:58:55.834
We'll also be downstairs at the Work OS booth all week.

s842
00:58:55.834 --> 00:59:00.310
So if you have any questions or want to talk about it, we live and breathe to talk about it.

s843
00:59:00.310 --> 00:59:08.848
We'd love to, but we'd love to ...well, we have one more minute for the last questions.

s844
00:59:08.848 --> 00:59:09.046
Yes.

s845
00:59:09.046 --> 00:59:09.313
Sure.

s846
00:59:09.313 --> 00:59:10.915
Yes, we'll give you the link.

s847
00:59:10.915 --> 00:59:18.148
And in the "Read Me" section at the top, there are links to the slides, a link to the glossary, which will be live, and you can use it to ask questions."

s848
00:59:18.148 --> 00:59:21.687
And here I am…Continuation at check-in for the entire application.

s849
00:59:21.687 --> 00:59:22.575
Incredible.

s850
00:59:22.575 --> 00:59:23.507
Oh, great.

s851
00:59:23.507 --> 00:59:24.127
Thank you.

s852
00:59:24.127 --> 00:59:24.787
We appreciate it.

s853
00:59:24.787 --> 00:59:26.723
We will give you our recognition .

s854
00:59:26.723 --> 00:59:27.669
Yes.

s855
00:59:27.669 --> 00:59:28.615
Yes.

s856
00:59:28.615 --> 00:59:29.278
Yes, sorry.

s857
00:59:29.278 --> 00:59:30.843
I'm a little deaf.

s858
00:59:30.843 --> 00:59:45.696
I think the question was about, in my company, PR, especially for agents, being on volume, it's really difficult because sometimes you can get a stack of 30 PRs and then the code is bad or there's just a huge amount, like 50,000 files in one pull request and you have to review that.

s859
00:59:45.696 --> 00:59:51.973
We think about it in terms of applying the same concepts as we do now, it's a problem of high system complexity.

s860
00:59:51.973 --> 00:59:58.834
And some of the tools that we've had success with are, you know, Devin, Greptile, getting some kind of first warning analysis.

s861
00:59:58.834 --> 01:00:07.085
That doesn't mean Greptile, because sometimes they're wrong, because we know why, for example , if they say five out of five are ready to merge, it's just ...

s862
01:00:07.085 --> 01:00:08.580
The first kind of signal.

s863
01:00:08.580 --> 01:00:17.179
And then you can throw out all the twos and ones and tell people it's not ready for me to care and honestly throw it out to them.

s864
01:00:17.179 --> 01:00:21.925
And then, if it's fours and fives and it looks good, there will be comments and conclusions.

s865
01:00:21.925 --> 01:00:27.325
I will ask the agents in the loop to oversee the PR and correct this until there are no more comments.

s866
01:00:27.325 --> 01:00:38.869
And then, as I get closer to the end of this loop, I'll start using my human brain for the first time in three years, and I'll open up the differential file and say, "OK, what files do I remember that were once sensitive?"

s867
01:00:38.869 --> 01:00:40.381
Let's take a look at the configuration.

s868
01:00:40.381 --> 01:00:44.275
Let 's look at authentication, let's look at published routes, right ?

s869
01:00:44.275 --> 01:00:46.616
And then let's just randomly check it out.

s870
01:00:46.616 --> 01:00:48.901
Well, that's what works for us now too.

s871
01:00:48.901 --> 01:00:52.957
But this guy handles a much larger volume of incoming PR than I do.

s872
01:00:52.957 --> 01:00:56.711
Yes, let me just say that since we don't have time, come talk to us at the stand.

s873
01:00:56.711 --> 01:01:03.600
I have a tool called Data that I'm building that tells you the story of your PRs so you can stay up to date and keep track of all the context.

s874
01:01:03.600 --> 01:01:05.248
I'd love to talk to you about it.

s875
01:01:05.248 --> 01:01:06.488
Yes, great question.

s876
01:01:06.488 --> 01:01:07.267
All right.

s877
01:01:07.267 --> 01:01:08.122
Thank you all.

s878
01:01:08.122 --> 01:01:09.541
We don't have time anymore.

s879
01:01:09.541 --> 01:01:10.629
Thank you very much.

s880
01:01:10.629 --> 01:01:13.173
I appreciate it.

s881
01:01:27.281 --> 01:01:29.281
Great!
