0:01 Alright everyone, welcome to the Codex 0:03 from scratch workshop. Codex, for those 0:07 who don't know, is the AI development 0:09 tool from OpenAI. OpenAI, I assume 0:14 everyone knows who they are; the 0:16 company behind ChatGPT and the GPT 0:19 models, which will be a key topic in 0:22 this course as well, since we aren't 0:25 just looking at this AI dev tool called 0:28 Codex, but also at their newly released 0:31 models. First off, I want to say that, 0:35 okay, they've released new models and 0:37 changed a few things in the tool; 0:39 depending on when you end up watching 0:42 this, you know, various modifications 0:44 to the tool may have appeared. Well, 0:47 such is the life of a developer. The 0:50 current model is 5.6, maybe tomorrow 0:52 it'll be 5.7, it really doesn't matter. 0:55 The important thing is to really grasp 0:58 the foundations of both the tool and 1:00 the models, and then as they evolve, 1:02 we’ll obviously be able to keep using 1:05 them just as well. Right? Let’s 1:07 understand one thing first. As I always 1:11 tell you, you must keep the tool's main 1:14 website in mind. I will explain what 1:16 this tool is now. If you have questions 1:19 about differences between this and 1:21 others with similar names or, well, 1:23 that have some apparent resemblance, 1:25 though they don't, I’m telling you 1:27 now, but anyway. The main website is 1:30 opengai.com/codex, it’s also 1:32 available in Spanish. Let's check it 1:34 out quickly. What is this Codex thing? 1:36 It's OpenAI's AI-powered development 1:40 tool. We have a ton of features, which 1:43 is exactly what we're going to see 1:44 throughout this course. We'll review 1:48 the entire tool, its main features, and 1:51 we'll develop a small application as 1:54 well so you can see the flow of 1:56 development and interaction with the 1:59 tool. First off, you can download it; 2:03 it’s available for all operating 2:05 systems. It is a free application. The 2:08 next thing you'll ask, "Bray, is this 2:10 paid?" Well, stay calm. First, also 2:13 keep in mind the Codex tool. It’s 2:18 possible someone might ask, "Bray, is 2:20 this better than, I don't know, Cursor, 2:23 Google Antigravity, or Cloud Code?" 2:27 Well, it's one of the great tools. If I 2:31 had to make a sort of unranked top list 2:34 today, but let's say the most famous 2:36 ones, we have Codex, of course, which 2:39 is OpenAI's coding tool; we have Claude 2:42 Code, which is Anthropic's coding tool, 2:44 and then we have more conventional 2:47 editors, although they are becoming 2:49 increasingly AI-first, right? More 2:52 oriented towards artificial 2:54 intelligence, like the almighty Visual 2:56 Studio Code, Cursor, and even Google, 2:58 which has also released its Google 3:00 Project IDX. We have many more tools. 3:03 Nowadays, artificial intelligence is 3:04 being integrated into all of them. Some 3:06 are better than others, right? To each 3:08 their own. I am going to show you how 3:10 this one works. It is up to you to 3:14 decide if this is a tool that fits your 3:16 way of working, if you like it, and go 3:19 for it. The only way to draw 3:21 conclusions, well, one is, of course, 3:23 by watching this course, but the best 3:25 way is always to try it out. That is 3:29 why I want to tell you a bit here: okay 3:31 , I will explain how this tool works, 3:34 but it is very important that you keep 3:36 in mind that until you start reviewing 3:38 how it works with your own hands, you 3:41 probably won't reach the best 3:42 conclusions to understand if this is a 3:45 tool that fits you or not. The 3:48 million-dollar question: Brais, is it 3:50 paid? Is it free? Because now with AI, 3:52 there are already a lot of paid things. 3:53 Well, I will give you two quite 3:55 important characteristics here. First, 3:58 you can use it with the free tier of 4:01 ChatGPT. ChatGPT is free. So, you can 4:04 also use Codex. You can use it 4:07 infinitely, right? But you actually 4:09 can't use it infinitely, not even by 4:10 paying. There are plans right now, at 4:13 least as we are making this class, that 4:16 start at $ 8. What I currently use for 4:19 ChatGPT is this plan. The $ 20 a month 4:22 one. I must say, and this is important, 4:25 especially if we compare it with Claude 4:27 Code, which is the other great 4:29 alternative that is also being used a 4:31 lot because it's from OpenAI's 4:33 competitor, which is Anthropic. The $ 4:37 20 ChatGPT or OpenAI plan at $ 20 lasts 4:44 quite a while. The free plan also has a 4:48 considerable limit, even the $ 8 plan. 4:51 However, and this doesn't mean that the 4:53 Codex tool is necessarily better than 4:55 perhaps Claude Code because of the 4:57 price. What I think I can safely say is 5:01 that for the same price, for this $ 5:03 plan, let's say a paid one, right? I 5:09 get the feeling the limits are higher, 5:11 meaning we can use many more tokens and 5:14 develop for longer without, let's say, 5:16 having them cut us off. Got it? On the 5:20 other hand, there is the free option, 5:22 so that's the way to try it out. I 5:25 recommend that no one spends a single 5:28 cent here on using this tool without 5:30 trying it first, and then if you test 5:32 it and say, "Okay, I think it's worth 5:35 it to spend, well, the $ 8, $ 20, or $ 5:37 100 plan, whatever." Well, that's up to 5:41 each person, okay? I just want you to 5:43 keep in mind that you can try this for 5:46 free and, of course, that downloading 5:48 it. is also free. Okay. On another note 5:53 , just as we're recording this course, 5:56 something just happened: the Codex app 5:59 used to be a standalone application, 6:02 meaning you would download Codex and 6:05 install it. What did they just do a 6:08 moment ago? As we were recording this, 6:10 they just unified the ChatGPT desktop 6:13 app and the Codex one. That is the huge 6:17 difference. Don't let anyone get 6:20 confused or think that before it was 6:21 separate and different, right? Relax. 6:25 Of course, there is also the option to 6:28 end up installing the Codex tool, the 6:31 CLI, the client, basically to work with 6:34 Codex from the terminal. Here we are 6:37 going to use the tool that has a 6:39 graphical interface, okay? Basically a 6:42 tool that once you install it, it's 6:44 this, okay? It is a tool oriented 6:46 toward software development, but 6:48 prioritizing the artificial 6:50 intelligence aspect. Meaning that if we 6:53 want to see the code, we will have to 6:55 see it by checking the files there, 6:56 opening another editor. I'll explain 6:59 how to do all that, but it's more 7:01 oriented toward, above all, prompting 7:03 and seeing the differences and the 7:05 files that change; that is, development 7:07 more oriented toward AI than toward 7:09 code. Even so, please, we are 7:11 developers, we are software engineers, 7:14 we have to have control over what we do 7:17 . If we ask the AI for things and 7:19 accept changes without reviewing, no 7:21 one is going to end up paying us a 7:23 salary for that. If we are not sure 7:25 that the code the AI is producing is 7:27 exactly what we wanted, okay? So, 7:30 review is very important, as is using 7:32 AI and these tools as copilots. AI 7:35 shouldn't manage us, it shouldn't 7:37 dominate us; we have to dominate it. 7:39 Right? The main difference since Codex 7:43 was included inside ChatGPT is 7:45 basically this. You have ChatGPT, you 7:49 open it, and here you have Codex, and 7:52 if you click on GPT Work, GPTW, it 7:54 takes us to another interface that 7:57 changes slightly, which is basically 7:59 the work version of ChatGPT, okay? It's 8:02 not the code version, but rather the 8:04 tool to end up interacting with our 8:06 machine and working with our file 8:08 system, but not so much code-oriented. 8:10 Right? The chat topic is here too. Do 8:14 you see that they all have a chat 8:15 option? This is the classic ChatGPT. 8:18 You go there, a pop-up window opens, 8:20 and there you have the usual chat, the 8:22 classic ChatGPT. We are going to learn 8:24 how to work with Codex, as you are 8:26 seeing here, which is precisely the 8:28 coding tool. Okay, let me tell you that 8:32 , importantly, Codex hasn't really 8:34 changed; the same ChatGPT tool has just 8:37 been unified, all right here. That's it 8:41 . If you have the ChatGPT tool and you 8:43 install the latest version, well, 8:45 you'll have this right here. End of 8:47 story. Okay, there's not much more 8:50 mystery because I know at the time 8:52 there was quite a stir about it 8:54 changing, as if the tool were going to 8:57 be completely modified, but no, they 8:59 are simply unifying it to create a sort 9:02 of AI environment from this company, 9:04 which is OpenAI, nothing more, nothing 9:07 less. Okay. Alright. Also, important 9:09 topics, of course, the matter of 9:12 documentation. If we all want to learn 9:15 to work with a tool well, it's one 9:18 thing to take this course to take the 9:21 first steps, so that I can show you how 9:23 it works, so you don't have to face 9:26 that blank page. But of course, it's 9:30 impossible to cover absolutely 9:32 everything that will happen with the 9:34 internal operation of the application 9:36 in a one-hour, two-hour, 10-hour, or 9:38 even 100-hour course. And of course, 9:41 everything that might get added 9:43 tomorrow, the day after, or in a month. 9:46 The best thing is to always go here, 9:49 where under developers you have the 9:51 changelog, which is for knowing what is 9:54 changing, what is being modified in the 9:57 application. In this case, in Codex you 10:00 have the documentation itself, the API 10:02 documentation, but the one that matters 10:04 to us here is the Codex developers.com 10:06 documentation. We go to Codex and here 10:10 we have the documentation. Within the 10:12 documentation, you even have a getting 10:15 started guide, you have the whole 10:17 section on, um, fundamental concepts, 10:20 basically the basics, and a lot of 10:22 things we're going to see here today: 10:24 skills, permissions, customization... 10:27 well, a lot of topics that I'm going to 10:30 explain to you, but of course, if you 10:32 want to go in depth, the way is always 10:35 through the documentation, because 10:37 that's where you'll find absolutely 10:40 everything. Okay. Right, that said, I 10:44 think the best thing is to get started 10:46 and see a little bit of what we're 10:48 going to encounter before we dive into 10:50 the models. Okay? We've seen what Codex 10:54 is, we've seen the documentation part, 10:55 how important it is, we've seen the 10:57 download and installation, which is 10:58 basically coming here, downloading it 11:00 for your operating system, installing 11:02 it, and that's the end of the story. 11:05 And of course, we've also seen what the 11:07 main difference is when having 11:08 everything integrated in the same 11:10 application, which is simply that we 11:12 have to select Codex here and that's it 11:14 . Let's take a very, very quick look at 11:17 the interface, okay? If we had any 11:20 project open, we would see it here. 11:23 I'll show you what this is later. These 11:25 are two projects that I've opened as an 11:27 example to do a demonstration for you 11:29 later, but we are also going to work 11:31 with a project from scratch. We have 11:34 the option to create a new task, that 11:36 is, to open a new context window to 11:38 start prompting, writing whatever is 11:41 needed here, okay? I mean, nothing I 11:44 assume you haven't seen in any 11:46 artificial intelligence tool. And I 11:50 think that as we move forward and more 11:52 tools appear or are updated, we see 11:55 that practically all of them are the 11:58 same, even if small things change. Okay 12:01 ? What else do we have? The subject of 12:03 scheduled tasks, okay? We can use Codex 12:06 , just as we can also use the Work part 12:09 to create scheduled tasks; that is, 12:11 tasks that repeat at a certain time and 12:14 that we can ask for, as you see here, a 12:16 daily summary, a weekly review, a 12:18 tracking monitor, whatever occurs to us 12:21 to be executed, well, continuously at 12:23 the time we indicate. We also have the 12:26 extensions section, which we will look 12:28 at in more depth later. If you were 12:30 connected, which requires the GitHub 12:33 client, you would also have a quick 12:36 overview of GitHub pull requests here. 12:39 The chat section we mentioned, and 12:42 finally, we can hide or show this part. 12:45 I'm going back to the new task here. 12:47 What do we have? On the other side, 12:50 there is a bottom section used to 12:52 access the terminal. That is, like 12:54 almost any other code editor, we can 12:56 use the terminal from here. So, if we 12:59 need the terminal for something, we 13:01 have this access. There will also be 13:04 access on the right bar. More options 13:08 will appear here, but just so you see, 13:10 Codex has an integrated browser right 13:13 here. Why? Because one of the things 13:17 Codex can end up developing, of course, 13:19 is web pages. And if we have the web 13:22 page inside the editor itself, it can 13:24 interact in a very powerful way that I 13:27 will show you later. Okay? Within these 13:31 tabs, we can also have a terminal, and 13:32 of course, we can close all of this. 13:36 Now, regarding the chat itself, what 13:38 will we have? The option to choose a 13:41 project. Previously, I chose these two 13:43 projects that I have open here, the 13:45 Mour Pro landing page and a project 13:47 that is called, and here we go. I will 13:49 show you so that you can see a little 13:51 bit how we can start working. Or simply 13:54 , I'll do this. I'm going to click on 13:57 new project here. I could start a 13:58 project from scratch or use an existing 14:00 folder. I recommend that you use an 14:04 existing folder so that you can decide 14:07 where on your machine you want to work. 14:12 Okay, I'm just going to go here, I'm 14:15 going to select, I think I had a folder 14:18 . I wanted to go into a folder, I don't 14:24 know if in YouTube or I don't know if I 14:28 don't know where I ended up putting it. 14:31 Okay, I think I have it here under web. 14:33 Okay, perfect. I created a folder here 14:36 called study calendar. Why? Because, 14:38 well, throughout this workshop we will 14:41 end up creating a study calendar. It 14:45 will be the demo application we will be 14:47 making for now, so don't worry about 14:48 anything at all, but you can see what 14:50 happens when I open a project, which is 14:52 just a folder I have on my operating 14:54 system and that's it. Okay, this is our 14:57 project which absolutely has nothing in 14:59 it, but the moment you end up selecting 15:01 one of the projects from the chat, 15:03 you'll see which one you're interacting 15:06 with, which is actually quite important 15:08 . What else do we have? Well, the type 15:11 of permissions we are going to give 15:13 people, because of course all of this 15:15 is going to end up interacting with an 15:18 agent, with an artificial intelligence 15:20 model that will be capable of launching 15:22 tasks for us. Alright? Well, we have 15:26 everything from the most restrictive 15:28 permission, which is requiring approval 15:30 , meaning that for every single thing 15:32 the AI wants to do via the agent, we 15:34 have to confirm it so it doesn't mess 15:36 things up. Hey, I'm going to create a 15:38 file, I'm going to run this command, 15:40 hey, I'm going to write this code. So, 15:41 well, it has to keep asking us and we 15:44 have to keep approving it. Then we also 15:46 have these approvals. Approval by me. 15:48 Request approval only for actions 15:50 detected as potentially unsafe. We have 15:53 a slightly less restrictive level, 15:54 which is, well, ask me about the things 15:56 that you truly consider could be a bit 15:58 serious. Or simply full access. That is 16:02 , we throw in the prompt, we send the 16:04 stuff here and the agent starts working 16:07 like crazy, just like that, without 16:09 asking us for any permission at all. We 16:12 can definitely review it afterwards at 16:14 the end, but without that intermediate 16:16 control. Well, I don't usually 16:18 recommend this to you. Why? Because 16:21 it’s like it says here, hey, I can 16:23 start doing anything with the file 16:24 system, I can end up launching whatever 16:26 commands I want, and I can end up 16:28 interacting with the internet and the 16:29 applications you have however I feel 16:31 like, okay? If we consider that, well, 16:33 that it's okay, then we tell it to give 16:35 it full access. Well, we will see each 16:37 of the types as we go to understand 16:40 them, okay? What other things do we 16:42 have here? This plus symbol. Well, this 16:44 plus symbol is like a shortcut to add 16:47 things. It tells us to add folders. 16:51 Attach Obsidian, which is a tool I have 16:53 for documentation management; different 16:55 goals, we'll see this; plan mode, 16:57 documents, PDFs...Well, we see here 16:59 that it has infinite things that we can 17:01 end up attaching to it to provide 17:03 context to start working, because it's 17:05 not just about prompting, but rather we 17:07 can, of course, keep modifying those 17:09 interactions. On the other hand, things 17:12 we can use, there it is, you can see it 17:14 here. The moment I put the clothes on, 17:16 it’s the same as hitting the plus 17:17 button. And the moment I use the slash, 17:20 here we have what are called commands 17:22 and skills, which we'll see later to 17:23 understand how the most common ones 17:25 work. But anyway, for now, just notice 17:28 that there are those two shortcuts that 17:31 we can end up using very quickly to 17:33 interact with the Codice system. And 17:35 then, on the right side, we have the 17:37 model selection that we see here. Well, 17:40 and which are the models? The models we 17:42 can use, since this is an OpenAI tool, 17:44 well, the models we can end up using 17:47 are, of course, OpenAI’s. What do we 17:50 have here? Well, at the time of 17:53 recording this course, we have 4 o-mini 17:56 and 4o, which are older models we can 17:58 use that will consume less computing 18:01 power and be cheaper, but they are less 18:03 intelligent models. 4o, which until 18:07 recently was the standard. And now we 18:10 have the latest model that has been 18:12 released, which is 4o, where we see 18:14 three divisions here. 4o, Sol, Terra, 18:17 and Luna. Please, when you see this, 18:20 there might be a 4 o-next or whatever 18:22 version, well, it doesn't matter. Just 18:25 look up how these models have improved 18:27 and that's it. Models are constantly 18:29 changing month after month, so don't 18:31 worry about it. What we need to 18:34 understand, and this is exactly where 18:36 we're going now, is that I have to see 18:38 which model it supports, but I also 18:40 have to understand what to use each 18:42 model for. Otherwise, this wouldn't 18:45 make any sense. So it is also very 18:48 important, and that's why I'm going to 18:50 spend a few minutes explaining the 18:52 current state-of-the-art of these 18:54 models. Also, the moment we select the 18:58 model, we have that intelligence, let's 19:01 say, that effort from light to ultra. 19:04 What does that mean? Well, light will 19:07 consume less of our plan. Ultra will 19:10 consume more. Light will respond faster 19:14 , ultra will respond using more 19:16 computing power, but light is less 19:18 intelligent than ultra. So here, well, 19:22 we'll have to run our tests to see 19:24 which one to use at any given time. 19:27 Even so, throughout the workshop I’m 19:30 going to give you a series of tips on 19:33 which model to use and the level of 19:36 effort required for different types of 19:39 tasks. This is a very broad topic, but 19:41 I want to give you some guidelines so 19:43 you don't have to say, "Well, what 19:45 should I use because I don't even know 19:46 what to ask for, right?" And then, on 19:49 the other hand, you also have this: 19:50 speed. Which is to say, if you have the 19:53 budget and say, "Well, I need it to go 19:55 very fast because, I don't know, this 19:57 project is very important, even if I 19:59 end up spending more than my plan 20:01 covers," though keep in mind, there is 20:03 a free tier, okay? then you just click 20:06 here for fast and go ahead. This is the 20:08 advanced visualization model. I even 20:11 think this is more oriented towards "by 20:14 coding," let's call it that, they've 20:17 created this simple model where I go 20:19 here and tell it: "Well, I'm starting 20:22 from scratch, I don't need it to be 20:25 very smart, to I need it to be super 20:27 intelligent." And we can see how the 20:30 model underneath changes, along with 20:33 the actual effort. There’s even the 20:36 lightning bolt here to say, "Whoa, if I 20:37 need to develop this at lightning speed 20:39 and I'm not worried about the cost, 20:41 then let's hit the lightning bolt and 20:42 that's it." Well, um, I’m actually 20:45 going to leave it in standard mode, 20:47 because I do want to have control over 20:49 what I’m selecting in each case; this 20:52 is designed for developers, and the 20:54 part with the simpler interface is a 20:56 bit for "by coding" if you're not 20:58 entirely sure what you're doing. And of 21:01 course, look, if I click here, I can 21:04 also trigger different actions in audio 21:07 mode or whatever. Right? This 21:11 microphone has a shortcut. Do you see 21:13 it? If I click here, I can also trigger 21:15 different actions in audio mode. Well, 21:18 it’s cool if you want to end up 21:20 programming this way, in a more 21:21 interactive, Minority Report kind of 21:24 style. I don’t really use it that 21:27 much myself, I usually type, although I 21:30 understand that for certain cases it 21:32 can be super useful. More configuration 21:34 topics so we can quickly understand the 21:36 interface. If we just go to settings, 21:39 to preferences, I recommend you look 21:41 through everything here calmly. Of 21:43 course, you have a bunch of general 21:45 preferences. Among them, you'll find 21:48 that you can add a command if you want 21:50 to activate the microphone, so you 21:52 don't have to press a button, using a 21:54 keyboard shortcut or whatever you 21:56 prefer. You have the appearance section 21:59 , excuse me, appearance. Even for 22:01 people who use this more as Codex than 22:04 as ChatGPT. I already told you that 22:05 these used to be two separate 22:06 applications. Well, we have a little 22:08 button here that changes the icon, and 22:10 it tells us here that it's the Codex 22:13 icon. Font sizes, voice settings, you 22:17 have it here for shortcuts, 22:18 configuration topics, customization, 22:21 even pets. You can launch your pet, 22:25 which is like a kind of assistant, well 22:28 , infinite things, you can see it here: 22:31 keyboard shortcuts, billing, account 22:33 settings, plugins, browser permissions, 22:36 computer usage, hooks, connections, Git 22:38 , environments, Wordtrax. Later, some 22:42 of these options are more advanced, 22:44 I'll mention them briefly, but well, 22:46 take a look at the customization 22:48 section because it's pretty cool. If 22:51 you want to show the pet, down here, 22:53 hey, show pet. And if we click on show 22:56 pet, theoretically it should appear 22:58 around here. Ra, ra, ra. We have the 23:00 pet. Hi, I'm Codex, I don't know what, 23:02 I'm at your disposal. Well, eh let's 23:06 leave the pet for another time, if you 23:08 want to check how your pet works on 23:10 your own, but basically it's like a 23:12 kind of Clippy, a sort of assistant, 23:15 but where I really want to stop is in 23:17 the models section, okay? I told you 23:19 that if something has changed recently, 23:21 it is precisely the subject of the 23:23 models. it can continue to evolve and 23:28 will continue to evolve, but I want to 23:30 explain very quickly what this is and 23:31 what this division that has just come 23:33 out is, which is GPT 5.6. This, if you 23:37 go to the main OpenAI website, in their 23:39 blog they have, like with any release 23:41 they make, a very basic and very quick 23:43 explanation, more or less so we 23:45 understand how each of these models 23:47 works. I told you that within this 5.6 23:50 version they have released Sol, Terra, 23:53 and Luna, okay? Sol, the most powerful, 23:57 Terra, medium power, Luna, the least 24:00 powerful. Does that mean I always have 24:02 to use Sol, right? For the same reason 24:05 we said before, the smarter, let's call 24:07 it that, a model is, the longer it 24:09 takes to respond and the more it 24:11 consumes from our plan. Do we need the 24:14 smartest model for absolutely every 24:17 task, right? Maybe you're doing a small 24:20 refactor, renaming some variables, do 24:22 you need the most powerful model? Maybe 24:24 you could use Luna, which is a simpler 24:26 model. That is something that, of 24:28 course, experience will give you, but 24:30 you more or less need to understand the 24:33 following. We could read here, but just 24:35 so we can do a super quick review. Do 24:38 you see that we have Sol over here? We 24:40 can see that yes, of course, in terms 24:42 of costs, in terms of scoring, of 24:43 intelligence, well, it is the best. 24:45 Then we have Luna, then we have Terra. 24:48 As we move forward you will see other 24:51 references. Why? Because different 24:53 parameters are being taken into account 24:55 . But also so you keep it in mind, well 24:58 , maybe you know the previous model GPT 25:01 5.5, well, you can see it more or less 25:03 says that, clearly, theoretically, this 25:06 5.6 should be better at everything. 25:10 Well, it depends, you have to keep in 25:13 mind that something like Luna is more 25:17 or less, let's say, GPT 5.5. And then 25:22 you have Terra, which is more or less 25:24 like the update of GPT 5.5, whereas GPT 25:27 5.6; and then we have Sol, which is the 25:30 most advanced, which would be like the 25:32 next generation, okay? Here it compares 25:36 it with the competition, with Opus, and 25:38 even with Fable that we see here. Well, 25:41 here you already know that depending on 25:44 which company is making the comparisons 25:47 , it will always end up winning, more 25:50 or less, the one it owns. Well, you can 25:53 just review this a little bit, but 25:55 understand very, very quickly that the 25:58 way to end up working with this tool in 26:01 terms of models, at least in terms of 26:04 5.6, is that you have the Sol model, 26:06 which is the most powerful right now; 26:09 Terra, which would be the equivalent of 26:12 5.5, but a little improved; and Luna, 26:15 which would be something like the mini 26:18 we had before for, well, simpler tasks. 26:21 What is the ideal thing to do? That you 26:23 change the model depending on the task 26:25 you have to perform. The model for the 26:28 vast majority of tasks is Terra, that 26:30 is, for programming small features 26:33 there and evolving your software, it's 26:35 Terra. For planning tasks, or tasks 26:38 that are going to stretch out much 26:40 longer over time, then of course, Sol 26:42 is the one here. And for doing little 26:45 things, use Luna. And that way you’ll 26:48 see how, the moment you use both free 26:50 and paid plans, they’re going to last 26:53 you much longer. Of course, it’s also 26:56 true that depending on the paid or free 26:58 plan, you might not have access to some 27:00 of these models, especially the free 27:02 ones. Why? Because, well, they give us 27:05 things for free, but only up to a 27:06 certain point. And then also, what 27:09 would be my recommendation for 27:11 day-to-day use? Set it to Terra and put 27:15 it on medium. Okay? I would only switch 27:19 to high, very high, or ultra if 27:21 you’re going crazy and saying, "Well, 27:23 this has to be a very complex task and 27:25 I need it to give maximum performance." 27:28 But for normal development, Terra with 27:30 medium; if you have to go to a slightly 27:32 more complex task, you go to Sol with 27:34 medium. I mean, I wouldn't go around 27:36 changing it much. In fact, if you go to 27:39 simple mode, you see that the default 27:42 is Sol medium. On the other hand, if 27:46 you set it to something simple, it 27:47 gives you Sol light, and if you go here 27:49 , it gives you Terra light. Since 27:51 we’re going to end up having control, 27:54 what I would tell you is, come on, work 27:57 with Terra medium to have a 27:59 middle-ground model, but with a little 28:02 more effort, a little smarter. Okay? Is 28:05 all this clear to us? Well come on, 28:07 let’s keep going. Let’s start 28:09 working now on how we can begin 28:12 developing, okay? How can we start 28:14 developing? The first thing we have to 28:16 keep in mind is that, of course, here 28:18 we’ll be able to start prompting 28:20 anything. But we also have to 28:22 understand the system that Codex itself 28:25 is built on, which is that it’s 28:27 designed for us to start launching a 28:29 bunch of agents in parallel, and even 28:31 start developing in different 28:33 applications. I can come here to this 28:37 project, which is Mured de Pro, and 28:39 I’m going to run "describe the 28:41 project" here and I’m going to copy 28:43 this because I’m going to launch this 28:45 prompt. But I’m going to go to 28:48 another project, the one you see here, 28:50 "aquí seguimos," and I’m going to 28:52 tell it: "Hey, launch a new task," 28:53 which would be the same as clicking 28:55 here and selecting the project, which 28:57 you can see I can keep changing. And 28:59 now here I'm going to tell it, describe 29:00 the project. "And you see that in both 29:02 cases they are in parallel. I mean, 29:05 I've launched all this; both tasks have 29:07 been launched in parallel, each one 29:09 with its own agent, and basically later 29:11 , once it finishes, we select this chat 29:13 and it tells us:" Well, this is the 29:15 Mored Pro website, an online course 29:17 platform, so-and-so, what it's created 29:19 with. "And it tells me here, well it 29:21 summarizes it quickly, and over here it 29:22 says:" This is a static website in 29:24 Spanish, so-and-so, that documents with 29:25 humor and such. "Basically, this refers 29:28 on one hand, sorry, I navigated away 29:32 from the site. On one hand, it refers 29:36 to the Muro de Pro website, to the 29:38 Academy's website, basically my courses 29:40 , and to this site called Y aquí 29:42 seguimos, which is a site I created 29:44 where there's a timeline with things 29:47 big tech magnates have said about how 29:49 AI wasn't going to take our jobs and 29:51 how they've been wrong for 3 years. 29:54 Well, there you have it. These are also 29:57 different websites that we aren't 29:58 necessarily working with right now, but 30:00 just so you see that you can have as 30:02 many projects as you want open here and 30:03 that you can start working with them in 30:05 parallel. Also, something important: 30:08 the moment we launch a chat, we have 30:10 what is called the environment here. We 30:12 can modify the environment or we can 30:14 create a new environment. What is the 30:16 environment? How Codex prepares the 30:18 work trees. Basically, we'll understand 30:20 what these work trees are, but 30:21 basically how it interacts with the 30:23 project. Well, if you have any 30:24 configuration, you see here the 30:26 configuration script when working, the 30:28 cleanup script, some actions. This is a 30:30 bit more advanced, you don't even have 30:32 to touch it at the beginning, including 30:33 the environment variables or whatever 30:35 to understand how the development 30:36 environment works, which you can end up 30:38 modifying to work however you want. You 30:40 also have this part that we saw here. 30:42 What is this" local "thing? Well, it 30:44 means you can work locally, that is, 30:46 like I'm working now, but Codex also 30:49 has a web version. This isn't so, so 30:52 important right now, but, really, if 30:54 you have a repository and you have it 30:57 pushed to GitHub, and there's a way to 30:59 have all this code hosted on the web, 31:02 you can actually continue developing 31:04 from the web interface, from wherever 31:07 you want, even from the mobile app 31:09 which also has that, has that option, 31:12 and those changes, well, you sync them 31:14 with GitHub and everything gets 31:16 uploaded to the cloud. Okay? You even 31:19 have the way to select different 31:21 branches. If you had different branches 31:24 in Git, in GitHub, you even have the 31:26 options here to commit or push. That is 31:29 to say, you have this thing here called 31:31 environment, which is really what you 31:33 see here called pin, unpin, summary. 31:36 You see that I take it off and put it 31:37 back on. We even have the changes that 31:39 I have pending or whatever. Well, it's 31:42 simply a summary so that we can see 31:44 more or less what this chat is doing at 31:46 the specific moment against the project 31:49 we have selected. All right? Once we 31:52 have this, let's move on to another 31:54 very important part, which is plugins. 31:58 If there's something that I think makes 32:01 Cursor good as a development 32:03 environment, it's that the whole plugin 32:05 part is super user-friendly. What does 32:08 that mean? That I want to end up 32:10 interacting with documents, with PDFs, 32:13 with spreadsheets, with the browser 32:15 itself, with my computer, with GitHub. 32:19 It's what we know in some cases as MCPs 32:21 . If I start talking about strange 32:25 topics, agents, MCPs, skills, please, 32:29 I'll leave the course here for you too. 32:32 Go to YouTube and look for this course. 32:36 AI Agents. It's a 3-hour course where I 32:40 review all the foundations of modern 32:42 development with artificial 32:43 intelligence. All right? Here I explain 32:47 all the general artificial intelligence 32:49 concepts, okay? So this course is 32:53 mandatory for anyone who is learning 32:56 development. There will be things that 32:59 perhaps they understand more or less, 33:01 but I really condense all those 33:03 concepts very well here and that's why 33:05 I want you to keep them in mind; 33:07 because, for example, this whole part 33:09 of plugins, some will have a quite 33:11 close reference to what is called the 33:14 Model Context Protocol, to MCPs, that 33:16 is, a kind of protocol to end up 33:18 connecting to third-party tools. 33:21 Imagine that I want to interact from 33:23 Cursor with Chrome. Well, here I have 33:27 the installation for Chrome, for GitHub 33:30 , whatever. We can see we have Notion, 33:33 ClickUp, Google Calendar, Linear, and 33:36 so on. Of course, there are ways 33:38 through MCPs to create our own MCPs, to 33:40 connect it with any type of MCPs. But 33:43 just so you know, for someone taking 33:47 their first steps, for someone starting 33:49 in software development, or even for 33:52 someone with experience, you can see 33:54 here the most used tools that, in terms 33:56 of productivity, have 314. You can 34:01 start exploring them here, where we 34:03 have creativity, developer tools, 34:06 business, well, a ton of plugins, which 34:09 would be something like the extensions 34:11 we have for Visual Studio Code, but in 34:14 this case, so that our Codex is capable 34:17 of interacting very quickly with 34:19 third-party tools. What does that mean? 34:24 That if I end up installing this add-on 34:26 , this GitHub plugin, the moment I have 34:29 it installed and configured, I will be 34:32 able to ask Codex about my own 34:34 repositories, or ask it to interact 34:36 with my own repositories, or read any 34:39 content from my repositories or even my 34:41 user, whatever it may be. So, this is 34:45 the main purpose. If I use the Notion 34:48 example of how a Notion MCP would work, 34:51 maybe I have tasks defined in Notion 34:53 and I'll tell it:" Hey, read the 34:54 specification for this task I have in 34:56 my Notion, which, for those who don't 34:58 know, Notion is a documentation app, 35:00 and implement what this task is asking 35:02 for. "And once you implement it, write 35:06 in that Notion document what the result 35:07 was, what has changed, or whatever. 35:10 Okay? So, with Figma for example," Hey, 35:13 read this design and code this design, 35:16 "do you understand now? Well, basically 35:19 these add-ons are super useful, so 35:21 definitely keep them in mind. I’m not 35:24 going to tell you," Hey, install this 35:26 one over another, "because it really 35:28 depends on what your needs are, but 35:30 keep in mind that this is very 35:32 important for development to become 35:34 more powerful, as we'll be able to 35:36 access a lot of tools super, super, 35:39 super easily. Okay, let’s look at 35:41 something. And what does it mean that I 35:44 can access these different add-ons? One 35:48 of the add-ons, I’m telling you that 35:51 to access the add-ons, we use this plus 35:53 button here. You can see that from the 35:56 add-ons I already have installed, I can 35:58 select them. Okay. For example, I’m 36:00 going to tell it here," Hey, I’m 36:02 going to use the computer add-on. "What 36:04 is the computer add-on? Basically, I 36:06 can end up interacting with my computer 36:09 . In this case, I don't want to do it 36:10 from my project. I'm going to create a 36:12 new task and tell it that I don't 36:15 really want to work on any project, 36:17 because I'm going to ask it for 36:19 something as simple as," Hey, open Warp 36:22 . "" Warp is an application, or rather, 36:26 the application I use as a terminal. 36:29 This isn't the important part. Anyway, 36:32 I have it right here. This is Warp. 36:34 It's my terminal tool, it doesn't 36:36 matter, I'm going to close it, but now 36:37 I'm going to tell it from here that 36:38 using the computer plugin, which allows 36:40 me to interact with the computer, I'll 36:42 say, "Hey, open Warp.""And what will it 36:44 do? Well, it's going to use the 36:45 computer control to open Warp. You can 36:47 see that once we start using a bunch of 36:49 plugins, we can perform a ton of 36:51 actions. What will it do? Well, it's 36:53 going to start interacting with the 36:54 computer. It says," Oh, the computer 36:56 control is blocking it. "" And I'm 36:58 going to say, "Damn, how come it's not 37:01 working?""Well, let's grab a slightly 37:05 more powerful model and see if the more 37:08 powerful model lets me do something 37:10 with this, because we'll end up seeing 37:13 that this is exactly what we were 37:16 saying before: one thing is having the 37:19 plugins (I'll put them back here) and 37:22 then we'll see if we've given it the 37:24 permissions." Okay? That's why 37:28 installing the plugins is one thing. 37:31 I'm going to use the control by reading 37:34 the abilities here. Let's leave it as 37:38 is and we see that now it tells us, " 37:40 Hey, allow this conversation," because 37:42 I told it, yes, you have to ask me for 37:44 approval. "And I say," Come on. "" And 37:46 look at what it's doing. We can already 37:48 see it here. It opened a window for me, 37:50 and in this window, it has control of 37:53 the codex itself and it's going to 37:55 start navigating and interacting 37:57 through this window. Look, I'll just 37:59 leave it here. and it tells me, "It's 38:03 searching to try to open Warp, it's 38:05 trying to request, it's searching, or 38:07 it's trying to use Spotlight.""We can 38:10 see that these tools have the ability 38:12 to interact with this computer." Mind 38:14 you, they have the ability as long as 38:17 we give them the approvals and where we 38:19 can also end up controlling what it 38:21 does and what it doesn't do. We see how 38:24 it's moving. We see this pointer. This 38:26 pointer is Codex. It went to 38:28 applications, and now within these 38:30 applications, it's going to search for 38:32 the app. I'm not doing this; Codex is 38:35 doing it all. Okay? This is an example 38:37 I know is slow, and I did it on purpose 38:40 , precisely so you can see what an 38:42 interaction with the machine is like in 38:44 this case. We could do it in many other 38:47 ways, but what this plugin allows is 38:49 for it to navigate for us, which in 38:51 some cases makes some sense. Even so, 38:54 the tools or plugins I recommend are 38:56 the ones that can truly create a much 38:59 faster interaction and connection with 39:01 the machine. Okay, we have all this, 39:04 and now it's running Warp here and it 39:07 would end up opening it for us. Here we 39:10 also see a preview of theoretically 39:12 what it should do in this case. Notice 39:15 how the models change. We set it to the 39:18 Terra model and it wasn't able to open 39:20 it. So, the moment you also see that 39:22 there are limitations, you have to end 39:24 up changing the model as well. I mean, 39:26 "Maybe this model wasn't capable of 39:28 doing certain things." And we see that 39:30 Warp is open here. Like I said, I did 39:32 this on purpose because I know it's 39:34 super slow, because it tries to search 39:37 manually, and I wanted it to give me 39:39 enough time to explain it, but just so 39:41 you see that, well, now it just opened 39:43 Warp. Okay? Warp is already open. Well, 39:46 that's not what really mattered. I just 39:49 want you to keep in mind what these 39:51 plugins are. Okay? Let's now definitely 39:56 start working on a real project. We are 40:00 going to start developing a real 40:02 project to see what the CODIX 40:04 interaction is like. The project I want 40:06 to end up working with is this folder I 40:09 created earlier, which was the study 40:12 calendar. Basically, I'm going to 40:14 explain the concept to you. What I want 40:17 to end up creating is a project that is 40:20 a calendar to help me organize myself 40:22 as a student, where I could maybe end 40:25 up creating different tasks, set some 40:27 hours, set a day, and be able to 40:29 complete them; in other words, a kind 40:31 of Todoist, but more oriented toward a 40:34 calendar, for example, just to name an 40:36 application that can be developed 40:38 relatively quickly so we aren't just 40:41 sitting here twiddling our thumbs 40:43 waiting for it all to finish. All of 40:46 this. Okay, are we agreed? Well then, 40:49 how should we go about doing all this? 40:51 Well, what occurs to me is that if I'm 40:53 creating a project, the first thing— 40:56 and we’ll do it here—is setting it 40:58 to 'sol.' Since I want to move quickly, 41:02 I’m not going to ask for a ton of 41:04 prompts; although all that is explained 41:06 in the AI development course I 41:08 mentioned earlier: how to interact 41:10 correctly to develop projects. Right, 41:14 here we want to see the tool rather 41:16 than develop the perfect application, 41:18 so I’ll set it to 'sol' in medium so 41:21 it's a little bit smarter. Even with 41:24 poor prompts and not much specification 41:26 , it should be able to give us a 41:29 reasonably good solution. The first 41:32 thing I’ll ask is to initialize Git, 41:34 so you can see that it's not just the 41:36 development part, but I can also end up 41:38 telling it—and don't do this at home 41:40 —I'll give it full access so it 41:42 really doesn't have to ask me for 41:43 permission for every single thing and I 41:45 don't have to keep stopping, okay? But 41:49 I'll tell it to initialize Git so that 41:52 we end up having, and I'll close this, 41:55 so we end up having a version control 41:57 system. This is essential in the world 42:00 of development, and it also lets you 42:02 see what it's doing. Hey, initialize 42:04 Git and that’s it. Just like that, 42:07 it's told us that it's done correctly. 42:10 Okay, let's enter the prompt I want to 42:13 use to develop the application I just 42:16 told you about. Well, to read it very 42:18 quickly: develop a website with React 42:20 and TypeScript that functions as a 42:22 study task organizer on a calendar. 42:24 I'll be able to create tasks, drag them 42:26 to a specific day, set a time, pick a 42:27 color for the task, and they will be 42:29 displayed in order. I'll also have the 42:31 option to mark them as completed. Well, 42:33 please, the usual thing again, you 42:35 don't develop an application like this. 42:39 We would have to generate each 42:41 specification and go little by little 42:43 through each step, but here I want to 42:46 have a base to show you how Codex gets 42:48 to work in this case and how we need to 42:51 interact with it. Okay? I'll tell it 42:53 here, launch the prompt, and let's 42:55 start seeing what it's doing. The 42:57 moment changes start appearing, we will 43:00 see them here too. Here we will quickly 43:03 have access to what has been modified 43:05 in the project and what has been saved 43:07 in Git. Again, the same thing: local, 43:10 main, and the possibility of ending up 43:12 interacting with the repository, okay? 43:14 And it tells me here, I'm going to 43:15 build a complete application in the 43:16 repository. First, I'll check the 43:18 project status and it says, "The 43:19 repository is empty." So I'll prepare a 43:21 base and it tells us it's going to do 43:23 it with Vite, React, and TypeScript. I 43:25 didn't specify Vite to it. You know, 43:28 whatever we don't specify, it's just 43:29 going to make it up. a good development 43:32 . It's not about the AI making things 43:35 up, it's just that I don't want to stop 43:37 now to add a bunch of specifications 43:39 and spend hours developing this, I just 43:41 want it to start developing so we can 43:43 see what it's doing. Okay, here we find 43:46 something super important. We can see 43:49 that the moment it starts changing 43:51 files, it tells us what it's changing, 43:52 and oh, surprise, we now have the 43:54 option to review things that you 43:56 haven't seen before. Okay, let me go 43:59 back and look at the side option. If we 44:03 go to this side menu, now you see we 44:06 don't just have the terminal and 44:09 browser, but now that our project has 44:12 more, in this case code, it tells us we 44:15 have the option to review. This is our 44:19 project's file system, it's already 44:22 created it. So, what does this "review" 44:26 mean? And why is it so important? First 44:30 , because we absolutely have to, as 44:32 good developers, see what code has been 44:35 generated, understand this code, and if 44:38 necessary, tell it, "Okay, this is 44:40 right, this is wrong, or whatever." 44:44 Let's just go here to this index. 44:47 Imagine I'm reading everything that's 44:49 been generated and I don't like 44:51 something for whatever reason. See this 44:54 plus sign? What is this plus? The 44:57 possibility for me to say, "Hey, this 45:01 is wrong.""I add whatever comment and 45:04 include it as feedback. What does this 45:07 mean or what will it end up doing? 45:10 Iterating on what it's developing. So 45:14 it's not about doing this in one shot, 45:16 it's not about blind faith, it's not 45:18 about asking for things, crossing our 45:20 fingers, and hoping the result is what 45:22 I want. First, we must define our 45:26 prompts and specifications very well. 45:28 And second, once the results start 45:30 coming in, we have to review them. And 45:33 of course, if there is something we 45:35 don't like, in this case, in the review 45:37 view, we go over here and say," Hey, I 45:40 don't like this, I'm going to note it. 45:43 "And with all these annotations, we see 45:45 this. The empty task is violet. I might 45:51 think," Well, I don't want it to be 45:53 violet. "I mean," The empty task, I 45:59 want it to be red. "And the moment I do 46:03 this and click comment, we see what 46:06 happened. This is a comment. But if I 46:11 were looking for 200 comments, I would 46:14 put in 200 comments. I would have them 46:19 here, and since we still have it 46:21 developing—keep in mind that this is 46:23 still developing, still thinking, still 46:26 saying it's changing files—I could 46:28 tell it," Hey, come on, task, launch 46:30 yourself. "And what has this task done? 46:34 It queued it. Actually, when it 46:38 finishes performing all the actions we 46:41 launched with that first prompt, it 46:43 will say," Okay, what did they comment 46:46 on here? "So, I'm going to iterate and 46:49 modify exactly that. I am going to 46:51 correct exactly what was just indicated 46:53 to me here. Okay, more things. I close 46:55 this review again and go back to the 46:57 side menu. Just as we have the side 47:01 menu for reviewing, which is exactly 47:03 what's new in these interactions that 47:05 we have to check because it uploaded, 47:07 because it committed, or whatever, we 47:09 also have the file system. What does 47:12 the file system mean? A kind of code 47:15 editor, I'll tell you, super basic, 47:19 very simple. This is not a code editor 47:24 like we know Codex or like we might 47:27 know Visual Studio Code or whatever, 47:30 but it does serve to, well, go through 47:33 and see what we have. And of course, we 47:36 can come here, go to whatever file we 47:39 want, come over here, and say," Ah, I 47:41 want to edit it. "Of course, this is a 47:45 standard code editor. I can come here 47:48 and start writing whatever I want, as 47:50 if it were a code editor. What happens? 47:53 That it is a very, very simple code 47:56 editor. It is a code editor that has 47:59 very little power, that won't give you 48:01 autocomplete, that won't give you the 48:03 help that a code editor gives you, 48:05 because Codex mainly focuses on the AI 48:07 development part. So, for my real 48:11 recommendation, you'll always have an 48:13 icon here that tells you," Hey, do you 48:16 want to open this in Visual Studio Code 48:18 , or wherever. "It’s reading the code 48:21 editors I have right here. Imagine I 48:23 select Cursor, okay? What are we going 48:26 to end up finding? Well, I’ve opened 48:28 this file in Cursor so that it’s a 48:30 little bit easier for me. We even have 48:33 this interaction, because here it’s 48:35 only opening the file. I can come over 48:38 here and tell it," Okay, I want to open 48:40 , let’s see what it touched here, 48:43 also in Cursor. "Let’s see what it 48:45 ends up opening in Cursor. Oh look, now 48:47 it has actually opened the entire 48:49 directory. So, I have Cursor here, and 48:52 now I finally have a standard code 48:55 editor. My recommendation, honestly: 48:59 it’s one thing to be great at 49:01 developing with Codex because you like 49:04 it, or for whatever reason, your 49:07 development tool is Codex, but always 49:09 keep a code editor open, because it 49:12 will allow you, first, if you have to 49:15 edit anything, you’ll do it much more 49:18 efficiently because you’ll have a 49:20 code editor. You’ll be able to review 49:23 all the generated code much better, and 49:26 you’ll work in a much safer way, even 49:28 though Codex gives you the ability to 49:30 see the file system more or less, or 49:33 even modify it. I mean, for me, the 49:36 best thing is always, hey, I’m 49:39 working in this case with Codex and 49:42 I’m reviewing all the code I have 49:45 here, even if I can also use Cursor 49:47 halfway through. Look at what happened 49:51 here, okay? It has been modified, the 49:55 whole task was launched, and it tells 49:57 us," Well, I created a web, blah, and 49:59 it has all of this. "Ping, ping, ping, 50:01 ping, ping, ping, ping." And then what 50:04 it did next was also launch exactly the 50:07 task I requested with the annotation. " 50:10 And when it has everything, look, this 50:14 was the edit. What did it do for us? 50:18 First interaction, I created the 50:19 project, you have to start it by 50:21 running this command. Perfect, we’ll 50:24 see how the project starts and we’ll 50:26 end up seeing it, etc., but the moment 50:29 it finished the first launch, the 50:30 comment I gave it," I want the empty 50:32 task to be red, "what did it do?" Done, 50:35 here. "What are the changes in this 50:38 case? Well, look, in this case, it was 50:40 just this simple thing. It simply 50:42 changed the violet for coral. You see, 50:46 obviously, in the first interaction 50:47 there are tons of files, but in this 50:49 one, which was something very localized 50:50 , it's very clear. Notice that I did 50:53 this by reading the code. We need to 50:56 keep this in mind. There is a huge 50:59 difference between just coding and 51:01 doing professional software development 51:03 . You have to know how to read code 51:06 because that way you will be able to 51:07 find everything quickly and be able to 51:09 interact much faster and more 51:11 efficiently, handle errors, understand 51:13 if the AI is giving you the result you 51:14 were looking for, and so on. Okay? All 51:17 right. Also, a very important thing: 51:20 the moment you do the review to see if 51:22 you want to add any notes or end up 51:24 iterating or whatever, you also have 51:26 the option to undo. If you really 51:29 didn't like what happened at all, you 51:31 just hit undo, it returns to the 51:33 previous state, and that’s that. 51:35 Right? Even so, let's stick with that 51:39 initial development to see what we end 51:41 up finding. Well, what it's telling us 51:45 here is," Hey, to start the project, it 51:48 did the build here, but it tells us we 51:51 have to run the project. What could we 51:54 do? Well, if I go over here to my 51:58 folder and run this from the terminal, 52:01 of course, the project will run. But we 52:05 are with an agent. Let it run the 52:09 project and see what happens, right? So 52:13 , when I tell it to run the project, it 52:15 says here, "I'm going to start the 52:16 development server." What is it going 52:18 to do behind the scenes? Obviously, run 52:20 the command that I could also end up 52:22 running. Notice something important 52:25 here now. I used Sonnet to do this 52:27 simple thing. Surely any other model 52:30 could have done it, and this small 52:31 change could also have been done by 52:33 another model. Always keep in mind: hey 52:36 , depending on what you're going to do, 52:38 I'll switch the model, because that's 52:40 also a way to save on your paid plans 52:42 or even save your free plan quota. I 52:45 already have my project right here. 52:46 Well, let's run it. It tells me, "Hey, 52:49 open where I can run it. I can launch 52:53 it in one of the browsers or, of course 52:55 , I can also launch it within ChatGPT. 52:58 What is this? It's going to open the 53:01 browser for us. Even so, we can see 53:03 this is deployed on a local port, which 53:06 if I go to my browser, whichever one, 53:09 and launch it. Look, here we have our 53:12 application. Plan, focus, move forward. 53:15 Not bad, right? We have day 16 here, 53:19 blah, blah, blah. We have a task here 53:22 that was left halfway done. Tip: divide 53:24 long tasks into blocks, he's done 53:26 something quite cool. Let's see if it's 53:29 able to create a new task. I'll come 53:31 over here. Example task. Well, I don't 53:35 know. Mathematics subject. I'll come 53:42 over here. What is the day I want to 53:45 end up putting this in? Well, I don't 53:47 know. The day is a bit shabby because 53:49 it's not launching this for me. Now it 53:51 does, I select the task, the date, the 53:53 duration. Whoops, we see an error here, 53:56 right? The task colors don't show up 54:01 here, do they? Well, I'm going to click 54:04 create task and see what it has done. I 54:07 said it for, uh, a small error, right? 54:12 We see that the task does look blue. We 54:15 see that the tasks can be completed. 54:18 Check it out. That we can select the 54:22 task and we can even modify the changes 54:26 . And I could even move the tasks here 54:29 to all, to pending, to done, because 54:32 these are all still unassigned. The 54:35 pending ones are what I have here and 54:36 the done ones, well, the ones I would 54:38 end up marking. We see how it does a 54:40 sort of filter here. We see that it is 54:42 not quite right. Obviously, we launched 54:44 this in a prompt and that's it. Now 54:46 that we see that this is wrong, I could 54:49 tell it, just to let it do something. 54:52 Okay, I'm going to tell it. In the task 54:58 creation window, the colors are not 55:03 displayed well for. selecting the task 55:12 type. It seems everything looks violet. 55:19 I'll launch it here. I mean, it doesn't 55:21 matter, but what I want to do is keep 55:23 interacting so you can see how we can 55:25 keep working. I was telling you that 55:28 right now, here we have all the files 55:30 and we also have the web browser. You 55:34 might think that the web browser here 55:36 is not the best in the world, because 55:38 of course, we have to look here 55:40 sideways, maybe we aren't seeing it as 55:42 we want because in this case, it might 55:44 not be fully responsive. Well, it 55:48 brings us here, well, it doesn't matter 55:51 , but this web browser isn't as 55:53 important for previewing everything, 55:56 but rather for the option you see here. 55:59 Do you remember that we could end up 56:03 annotating the code, we said, in 56:06 specific code, okay? But the moment we 56:11 have the browser, look what happens; it 56:14 has launched a test directly to 56:17 validate it. Look, correction pending 56:21 review, we could check it. We see that 56:24 since it has access to the browser, the 56:26 interaction is super fast. So we can 56:28 also improve that development flow. 56:31 That's why I recommend that if you are 56:33 developing for the web, this browser is 56:36 cool because it's also capable of 56:38 launching tasks, and it interacts very 56:40 quickly here. You could also install 56:43 the Chrome extension, but even so, 56:45 although it could end up interacting, 56:49 it really doesn't run as smoothly as 56:52 the tool it has inside. That's why they 56:55 have also done something very important 56:56 . The folks at OpenAI had an 56:58 application called Atlas, which was a 57:00 browser. Well, they've discontinued it 57:02 and built it right in. They are trying 57:04 to create a super app with all of 57:06 OpenAI's tools. Okay, as I was saying 57:08 before, remember that when I said," 57:10 Well, I'm going to review something, I 57:12 don't like it, blah blah, I can 57:14 annotate it, and then I can keep 57:15 iterating. "But here we have something 57:19 really cool, which is that from the web 57:21 browser itself we have that annotate 57:24 action, so I'm going to click annotate 57:27 and we see that as I start annotating I 57:30 can select each of the elements. Do you 57:33 see it? Imagine that right here I say" 57:37 your study space. "Well, I'm going to 57:40 select this and I'm going to tell it I 57:48 also want it to greet the user. This is 57:55 super silly. And here I go, I put it on 57:59 enter and that's it. I also have an 58:01 annotation. In this case, an annotation 58:04 on the graphical interface. I'm going 58:06 to launch it and see what happens. Wow, 58:11 a screenshot, but done natively from 58:13 the web browser itself, selecting 58:16 exactly what it wants to touch. We 58:20 could go to the code, we could go find 58:22 that, we could program it ourselves, of 58:24 course, but in this case we're also 58:26 looking for a way to say:" What I want 58:29 to touch is exactly this, "which is 58:31 also a way to end up interacting and 58:33 developing in a way that is, of course, 58:35 a little faster, always keeping in mind 58:37 if it makes more or less sense for us. 58:40 We see it's already making the changes 58:41 here. We see it's already putting here, 58:43 " Hello, Bris, your study space. " 58:45 Perfect, that's what we were looking 58:46 for, one file that has changed. We see 58:48 here that it has added nothing, just a 58:50 new text inside the paragraph that 58:52 existed here. Of course, I would review 58:54 it. I see everything is OK. And here it 58:57 has already reloaded directly. However, 58:59 if we go here to the explorer, we see 59:02 that it’s also reloaded, okay? It’s 59:04 a super fast way to end up interacting 59:06 with everything we have around here, 59:09 okay? Also, it’s super important that 59:13 just because we are working with Codex 59:16 doesn’t mean we have to do everything 59:19 solely with Codex, because as I already 59:22 explained, for me, the ideal is to work 59:25 in parallel with a code editor as well. 59:28 A code editor where, look, I’m going 59:31 to search for an extension and type in 59:35 Codex here. I mean Codex. Wow. And who 59:39 created this? Oh, Open AI created it. 59:43 So, something important: I’m going to 59:45 install this so you can see that within 59:51 the editors themselves, in case you 59:53 also like how Codex works, we can also 59:56 interact with the Codex tool itself. 1:00:01 Okay, I already have this, and now in 1:00:03 the chat section, just like I have the 1:00:05 native agent—in this case, Cursor, 1:00:07 which is the tool I’m working with— 1:00:09 we also have Codex, look, there. And it 1:00:12 starts giving us, well, a series of 1:00:15 pieces of information, blah blah blah, 1:00:17 and the new model. And look, here we 1:00:21 already have the latest chats we’ve 1:00:24 been working with. I come over here. 1:00:28 Does this look familiar? This is the 1:00:31 Codex chat, so for certain actions, if 1:00:34 we are familiar with a code development 1:00:37 tool, like in this case I’m using 1:00:40 Cursor, we should know that while we 1:00:43 are interacting, I can come here and 1:00:46 also work from the tool itself, from 1:00:49 Cursor, using Codex directly. A 1:00:53 recommendation for seeing what Codex is 1:00:57 doing to modify some things directly, 1:01:00 having a context that prioritizes code 1:01:03 over artificial intelligence, like this 1:01:06 Cursor view, is good. The greatest 1:01:11 power of Codex, of course, is using the 1:01:14 Codex tool itself, but having this mix, 1:01:17 for me, is a very good suite of tools. 1:01:20 having the Codex tool. I’m developing 1:01:24 from here, but the moment I need to get 1:01:26 a bit deeper into the code, I do it 1:01:28 from a code editing tool, like Cursor, 1:01:30 Visual Studio Code, or whatever. And 1:01:33 here I also have Codex to see 1:01:35 everything it did. You already know 1:01:37 that from here I can start accessing 1:01:39 each of the tools, each of the files. I 1:01:41 also have the file context right here, 1:01:43 well, whatever it may be. All right? So 1:01:46 I have a, let's say, a closer 1:01:48 interaction with the actual code in 1:01:51 case we need it. Okay. Right, having 1:01:55 said that, what else can we end up 1:01:57 doing? I'm going to close this over 1:01:59 here. I'm going to open a new task 1:02:02 within our tool, which is this study 1:02:05 calendar that I've created here. And we 1:02:09 are going to look at another one of the 1:02:12 most important things that Codex has 1:02:14 for working, which are the commands. 1:02:17 What are those commands? Just like we 1:02:20 saw before, we had all these plugins to 1:02:23 interact with, of course, meaning you 1:02:25 don't have files, folders, or whatever 1:02:28 here. Do you want a screenshot? You 1:02:31 attach it from here. Aside from all the 1:02:33 plugins that are already installed and 1:02:36 the ones you can install extra, which 1:02:38 is what we saw here earlier. Well, 1:02:40 where I was going, another important 1:02:43 thing we need to know within Codex are 1:02:46 the commands, which are activated with 1:02:48 the forward slash, the commands or also 1:02:51 the skills. What are these commands, 1:02:54 these skills? Well, basically quick 1:02:57 programmed actions that are already 1:03:00 saved within Codex. What does this mean 1:03:04 ? Look, status, start, MCP, pet. I mean 1:03:10 , I have a command where I say pet, 1:03:12 bang, I launch it, I have a command 1:03:14 that is pet, I delete it. Right, the 1:03:18 moment we want to start interacting in 1:03:20 a more skillful way, not having to type 1:03:23 everything or look for everything by 1:03:25 clicking, what I would recommend is 1:03:27 that you start working with the 1:03:29 commands. Okay? Let's see what the most 1:03:32 important commands are. We could go 1:03:34 over them all here, but well, you can 1:03:36 already see there are quite a few. The 1:03:39 built-in commands, okay? The built-in 1:03:42 commands are these that you see here. 1:03:46 Then we have a series of abilities, a 1:03:48 series of skills, which are all the 1:03:50 ones you see here. To see something 1:03:52 very quickly in terms of skills. Look, 1:03:56 well, the skill creator, the skill 1:03:58 installer, those are abilities that we 1:04:00 can download or that we can create 1:04:02 ourselves. I can create an ability that 1:04:06 helps me with testing. So I say here, 1:04:10 look, create a skill that helps me do 1:04:14 testing on the project. I launch it and 1:04:20 I tell it I don't even want permissions 1:04:21 for it. Come on, it says, well I'm 1:04:24 going to use the skill creator, which 1:04:26 is a skill capable of creating skills 1:04:28 to build that specialized skill. Look 1:04:31 at what the skill is going to do. I'm 1:04:33 going to create it within Codex Skills. 1:04:35 I say, well, I got a bit lost here, but 1:04:38 since I have all this open, let's see 1:04:42 if it ends up creating something at the 1:04:45 project level or the codex level itself 1:04:48 , which is something we should keep in 1:04:51 mind, and that's how skills work. But 1:04:55 the important thing really isn't so 1:04:57 much where it's going to create it, 1:05:00 although we should create them in the 1:05:02 project itself so we have everything 1:05:04 contained, but still, look at how we 1:05:07 can use codex itself to create our own 1:05:09 skills. It says," Well, I've created a 1:05:11 project that doesn't have a test 1:05:13 framework yet, I'm not sure how it is. 1:05:14 "I say," Well, that's fine. "So it's 1:05:17 going to try to check and see how it 1:05:19 starts adding tests because it doesn't 1:05:21 even have those tests. Look, files 1:05:24 changed, bam. I come over here and now 1:05:27 theoretically it's going to start 1:05:29 creating the tests for us. I come over 1:05:31 here. Wow, look at that. Calendar, 1:05:35 references. Let's see, let's see, let's 1:05:37 see. We have the skills inside Codex. 1:05:40 Well, no problem. What did it call this 1:05:43 skill? Let's see what it has here. It 1:05:47 has a skill it called project testing. 1:05:52 Regardless, I'm going to let it create 1:05:54 this skill because, as I said, this 1:05:55 isn't a skills course by any means. 1:05:57 Review the skills section I explain in 1:05:59 the AI development course or search for 1:06:01 more about skills, but just so you can 1:06:03 see that we have the ability to create 1:06:05 skills. Perfect. Let's let all of this 1:06:08 finish. We see that it created the 1:06:09 skills and that it's a skill called, do 1:06:11 you see it here? Test study calendar. 1:06:15 So, now I come over here, test study 1:06:18 and what does it say here, oh, testing 1:06:22 of study calendar. Ah, okay, perfect. 1:06:27 Well look, we now have the ability to 1:06:30 access this skill we created ourselves, 1:06:32 but of course, Codex itself has other 1:06:35 skills. Let's go here. Template creator 1:06:40 visualize. We see here it converts 1:06:44 ideas and data into interactive visuals 1:06:47 . Well, for spreadsheets, it's here for 1:06:51 presentations, for the operational 1:06:53 calendar, for documentation there are 1:06:55 some already created, but we can create 1:06:58 our own or of course download skills 1:07:00 that have already been created by the 1:07:02 community because in reality the way to 1:07:05 install them is also quite standard. 1:07:08 Still, what was important to me wasn't 1:07:12 so much this, but the possibility of 1:07:15 seeing which are the most used commands 1:07:18 that we have within CODX. Let's do a 1:07:22 very, very quick review of each one of 1:07:24 them. Compact. What is compact? Meaning 1:07:28 , we type this command, if you have it 1:07:30 in English," compact ". But if we type 1:07:33 it in English," compact ", we see that 1:07:35 it will also end up finding it in 1:07:37 Spanish. We have the context window of 1:07:40 this AI itself, well, it tells us that 1:07:42 it is 13%occupied. What is compacting? 1:07:44 Basically compressing it so that the 1:07:46 context window frees up a little space 1:07:48 so it doesn't get full and start 1:07:50 hallucinating without the need for us 1:07:52 to open a new context window. The IDE 1:07:55 context, including the current 1:07:56 selection so that the code editor also 1:07:58 has that context. Continue on a new 1:08:01 task if we wanted to move between 1:08:02 branches. The status, moving the task 1:08:04 status. Look, it launches this popup 1:08:07 that tells us:" This is the session, 1:08:09 this is the context, we still have 87% 1:08:11 remaining and the 7-day limit until it 1:08:13 resets ". If I were to use up the whole 1:08:16 plan I have contracted with Codex, well 1:08:19 , I would have to wait, but right now 1:08:21 we have 91%remaining. I still have a 1:08:23 ton left. More commands. I'll leave" 1:08:25 start "for later, okay? A temporary 1:08:28 side conversation, that is, a sub-agent 1:08:30 that will end up launching the MCPs 1:08:31 that were discussed, the pets, the 1:08:33 memory we want it to have, a more or 1:08:34 less persistent memory so it doesn't 1:08:36 forget the context. Still, we could 1:08:39 also work in another way. I can change 1:08:41 the model from here. I can go/model and 1:08:43 say," Hey, which one do you want to 1:08:45 select? "And we see that it starts 1:08:46 moving through all the ones we have 1:08:48 here. Okay, more things. What can we 1:08:51 see? The model, the plan mode, which 1:08:54 we'll leave for later; the goal, which 1:08:56 we'll leave for later; send feedback; 1:08:58 the reasoning; the effort we saw before 1:09:00 ; code review, meaning, there is also 1:09:02 the possibility of, with a command, 1:09:04 reviewing the code we have created, 1:09:06 moving this quick part we saw before. 1:09:09 Okay. Then here, well, a r-a review of 1:09:14 the prompt that we also created earlier 1:09:17 , okay? These are the most typical 1:09:20 commands. But now we are going to look 1:09:24 a little more in detail at which are 1:09:26 some of the most important ones. On one 1:09:29 hand, the init, which is to initiate, 1:09:31 to create an agent.md file with 1:09:32 instructions for code. It makes no 1:09:35 sense to develop with AI if we don't 1:09:37 have Markdown files, text files that 1:09:39 will reflect what the documentation, 1:09:42 best practices, and everything related 1:09:44 to documentation are for the project we 1:09:46 are creating. Therefore, if we do a 1:09:50 slash init, what it will do is create 1:09:52 the init in our project, that is, the 1:09:54 agents.md, which in this case, since we 1:09:56 already have code created, it will fill 1:09:59 it out for us. It will create a file 1:10:02 with the basic documentation, 1:10:04 technologies, best practices, the main 1:10:06 context of the application, which is a 1:10:09 great practice when working with 1:10:11 development, okay? Working with 1:10:13 development and, above all, with 1:10:14 artificial intelligence. Notice how we 1:10:16 could see how it created the agent.md 1:10:18 for me. We could review the changes or 1:10:21 see them from Cursor, where we already 1:10:23 have the agent.md here, which basically 1:10:26 is a very, very quick agent. What is 1:10:29 the structure? What are the main 1:10:32 commands? The code style, naming, 1:10:35 testing, how the part of git/GitHub 1:10:40 works and that's it. We could put more 1:10:42 things here. Even so, the best practice 1:10:44 is to create a much more condensed, 1:10:46 much smaller agents file, and not a 1:10:48 super huge one with tons of information 1:10:50 , okay? So, the agents.md is very 1:10:53 important, also one of the classics, 1:10:55 one of the most basic things we must 1:10:58 keep in mind when working with 1:10:59 artificial intelligence on projects 1:11:01 because, just like agents.md, we could 1:11:04 have the documentation part, the 1:11:05 specifications part, and many other 1:11:07 things, okay? Another of the main, very 1:11:11 important commands we have to keep in 1:11:13 mind, come on, I'm going to create a 1:11:15 new task here. And in this case, the 1:11:18 command that I'm going to call is the 1:11:20 command called plan. If you already 1:11:23 work with AI agents in other editors, 1:11:26 you might be familiar with plan mode 1:11:28 and build mode. Basically, these are 1:11:31 agents that work in different ways. 1:11:34 Build mode, which is how we’ve been 1:11:37 launching agents until now, just starts 1:11:40 using the system tools based on the 1:11:42 prompt and begins building whatever it 1:11:45 is. But in plan mode—and we can see 1:11:50 it reflected here—when we activate it 1:11:54 and send a prompt, it will actually ask 1:11:57 us questions. Let’s do something; 1:12:01 look, so we can understand how plan 1:12:04 mode works even better. I’m going to 1:12:08 create a new project, just like I had 1:12:12 my study calendar folder, wait, where 1:12:16 is it? Just like I had my study 1:12:18 calendar folder, I’m going to create 1:12:20 another one called study calendar two. 1:12:26 Okay, I’m creating it, I’m opening 1:12:28 it; that is, we have a blank project, 1:12:31 but in this case, we’ll use plan mode 1:12:34 and I’ll do more of the same. I’m 1:12:37 now going to launch the prompt we used 1:12:40 to create our initial application. Look 1:12:43 , plan mode; in this case, I’m 1:12:46 setting it to medium again. But with 1:12:51 plan mode active, it will create a plan 1:12:54 , an execution plan, but an execution 1:12:56 plan that we also have to validate. 1:13:02 It’s not quite like creation mode, 1:13:05 where I give it a prompt and it starts 1:13:07 doing what we tell it to; rather, plan 1:13:10 mode asks intermediate questions to 1:13:13 refine the prompt. Look, what should be 1:13:18 the main view? It didn’t ask us 1:13:20 anything before. Month plus detail, 1:13:23 hourly week, month and week, or tell 1:13:26 Codex, in this case, something 1:13:29 different. So I’ll tell it, okay, 1:13:32 this is what I want to keep in mind. 1:13:35 Where should the tasks for this first 1:13:37 version be saved? In local storage, in 1:13:39 a session, add a backend, or whatever. 1:13:42 It says local storage, and besides 1:13:43 creating that, do you want to do other 1:13:46 things? Edit, delete, only what was 1:13:48 requested. And I’ll say, well yes, I 1:13:50 also want to edit and delete. And with 1:13:54 this, he'll say," Okay, I've already 1:13:56 asked you a few questions, now I have a 1:13:58 slightly more refined plan to start 1:14:01 working, and theoretically, I'll be 1:14:03 able to better perform this entire task 1:14:05 you've assigned me. "" Should the task 1:14:09 time be mandatory, optional, or 1:14:11 required? "Look, now I say," See, I 1:14:13 wouldn't have thought of this, but the 1:14:14 plan mode will try to rethink it a bit 1:14:16 for us, and I'll say, well, look, I 1:14:18 want it to be mandatory. "" What should 1:14:19 happen when dragging a task to another 1:14:21 day? "" Keep the time, change only the 1:14:23 date, the time of the other data 1:14:25 remains, "so I tell it to keep the time 1:14:27 . It says," What level of mobile 1:14:29 adaptation? "Uh, and we didn't take 1:14:30 that into account before." Look, now 1:14:32 I'm saying yes. "Of course, this 1:14:34 execution will take longer, but it will 1:14:37 be a more refined execution. And the 1:14:41 plan modes, when we ask it for very big 1:14:43 tasks, it's cool to run it with that. 1:14:48 Of course, if we are truly able to 1:14:50 define a very good specification, we 1:14:51 don't want the AI to think for us; we 1:14:53 don't want it to rethink for us. But if 1:14:56 we actually want the AI to give us a 1:14:58 hand in improving that prompt, which 1:15:01 might initially be a bit vague, we 1:15:03 activate the plan mode." How do you 1:15:05 want to choose the color of each task? 1:15:08 "Well, I'm going to fast-forward a bit 1:15:10 here." How should the tasks be 1:15:12 displayed? "Faded. That's it. Of course 1:15:15 , these are all things that in the 1:15:17 build mode, the agent decided for us 1:15:19 before without giving us any option at 1:15:21 all. Instead, in this case, it says," 1:15:24 Okay, what do we have here? "" We have 1:15:26 the writing plan. "The writing plan we 1:15:29 see here, all summarized. And the 1:15:31 moment we have the entire summary, it 1:15:33 will start implementing. I have the 1:15:35 summary. Let me review it. Pa pa pa. 1:15:38 This is the whole plan. It is correct. 1:15:41 We can edit it. Of course we can edit 1:15:44 it and tell it whatever we feel like. 1:15:48 And I mean, tell it what to do 1:15:49 differently, whatever. We see that we 1:15:51 have the plan here. Without further ado 1:15:54 , I go back here and tell it," Hey, 1:15:56 implement it. "" And the moment I hit 1:15:59 implement, well, this plan will start 1:16:01 executing, okay? "I mean, we aren't 1:16:03 going to wait for the plan to finish or 1:16:05 anything, but it’s simply something I 1:16:08 wanted to point out: why is the plan 1:16:10 mode actually so important? Although 1:16:12 this, as good programmers, should be 1:16:15 something we already have. The more 1:16:19 defined, the better, because it’s not 1:16:20 about the AI making the plan for us; 1:16:22 it’s about it defining some things 1:16:27 better that we might end up skipping. 1:16:31 But the more we have thought out in 1:16:34 advance, the better the performance 1:16:37 will be and the more it will end up, uh 1:16:40 , resembling the result we want to 1:16:43 obtain. Okay? So yes, the plan mode is 1:16:47 important, but understand that we also 1:16:50 have a super, super important task. 1:16:52 Okay, let's also see. Look, this is 1:16:55 going to execute in parallel. I’m 1:16:56 going to go back to the other project, 1:16:58 the project we already created, and 1:17:00 I’ll open a new chat. to continue 1:17:03 seeing another of the most important 1:17:06 features we have within Codex. If we 1:17:11 type slash review, we see that we will 1:17:13 also have this command that says review 1:17:16 unstaged changes or compare them with a 1:17:19 branch. This will serve to launch a 1:17:22 review of changes we have pending: 1:17:24 review comparison with the base branch 1:17:27 or uncommitted changes; that is, things 1:17:29 we haven't pushed to Git yet, because 1:17:31 this also helps us perform a sort of 1:17:34 audit on the code we haven't finished. 1:17:37 And I’m going to tell it, well, 1:17:38 review the uncommitted changes. I mean, 1:17:41 we don't have any committed changes, 1:17:43 basically because we haven't uploaded 1:17:45 anything to Git either, which isn't 1:17:47 something we need to see in this class, 1:17:49 but of course, here we have one of the 1:17:52 most important skills. It says," The 1:17:54 entire project appears new and 1:17:55 untracked, so there is no discrepancy. 1:17:57 "" Of course, we can't review new code 1:18:00 against an older version because there 1:18:02 is no such regression. "We don't have 1:18:05 code created in advance. If we had the 1:18:08 previous one, it would be reviewing it 1:18:10 against that. If not, what it’s going 1:18:12 to do is just a basic review of the 1:18:14 existing code. This is also something 1:18:17 super, super important. Why? Because 1:18:20 errors can also slip past us. Let’s 1:18:22 use artificial intelligence to improve 1:18:24 our code. Our code has to start from 1:18:27 the definition itself. But of course, 1:18:29 if we can start doing something, notice 1:18:31 that the AI itself makes mistakes. 1:18:35 We've asked the AI to develop, and 1:18:36 notice that the moment the AI reviews 1:18:38 itself, it tells us that it has made 1:18:40 mistakes. The link script always fails, 1:18:45 the recovery data is over here, the 1:18:47 shortcut doesn't work. Well, little 1:18:50 things that it has already seen are 1:18:52 wrong and that we have to fix, which it 1:18:54 , even though it's capable of detecting 1:18:56 , doesn't take into account while 1:18:58 developing. And this is something super 1:19:00 common. That's why we always have to be 1:19:04 that" human-in-the-loop "as it's often 1:19:08 called, that person who is in the loop. 1:19:11 Meaning, yes, the AI will write more 1:19:13 code than us, but we always have to be 1:19:15 there in the middle, orchestrating and 1:19:18 reviewing everything so it doesn't mess 1:19:20 up. Okay? And closely related to the 1:19:23 loop, I'm going to tell you about 1:19:26 another task we can launch from Codex, 1:19:29 which is really super powerful. Codex 1:19:33 has a capacity that other agents don't 1:19:36 have as developed, and that is that 1:19:39 it's capable of executing very long 1:19:41 tasks. We can have Codex working here, 1:19:45 especially if we have the money. We can 1:19:49 have Codex working for 24 hours. It 1:19:51 doesn't even matter. But what is the 1:19:55 way we can end up getting an agent and 1:19:59 an artificial intelligence environment 1:20:02 to work for so long without stopping? 1:20:08 This is where that concept comes in 1:20:11 that you might see often out there, 1:20:13 which is becoming more and more 1:20:16 fashionable, and that is loop 1:20:18 engineering; that is, that we are 1:20:20 capable of giving a clear goal to the 1:20:23 AI and the AI keeps iterating on itself 1:20:25 , okay? I do this, is it what I was 1:20:29 looking for, right? Well, I go back and 1:20:33 back and back and back, and I take this 1:20:35 task, and here, you have these 100 1:20:36 tasks to finish, implementing one after 1:20:39 another, one after another, and it's 1:20:41 exactly what I wanted, right? Well, I 1:20:43 iterate again, I improve it again, I 1:20:45 change it again, like that until it 1:20:47 ends up meeting the goal. This is quite 1:20:50 easy to define from Codex. We see that 1:20:53 even so, small side note, in the other 1:20:56 application this is still running. You 1:20:58 see it spinning here while we are in 1:21:00 another project doing something else. 1:21:02 About the concept too of multi-agents, 1:21:05 of agents in parallel, etc. Okay? And 1:21:07 since we also have this command, which 1:21:10 is the goal command, set a goal to 1:21:13 continue advancing with this goal, 1:21:16 which we aren't going to launch because 1:21:19 it's precisely designed for longer 1:21:21 tasks. I can end up setting a goal here 1:21:25 , like, hey, the goal is for you to 1:21:28 have completed all the tasks defined in 1:21:31 this documentation directory, and it 1:21:34 has 100 tasks because you've created a 1:21:37 spec-driven development of the entire 1:21:40 application. Imagine that is the case. 1:21:45 Well, you set that as the goal, and 1:21:47 you'll have Codex working on it until 1:21:49 you run out of money. Even when it runs 1:21:53 out, you can tell it, hey, continue 1:21:55 where you left off once the limits 1:21:58 reset or whatever. Also, just so you 1:22:02 keep it in mind, this is precisely a 1:22:04 command we aren't going to test, but it 1:22:06 refers to that loop engineering 1:22:08 everyone is talking about, where people 1:22:11 now say they set an agent to work here 1:22:13 for a bunch of hours. Look, that's fine 1:22:17 if we have absolute control over all 1:22:20 the tasks it has to develop, but 1:22:22 consider that the more autonomy you 1:22:25 give the AI, besides it being more 1:22:27 expensive, the more often it can end up 1:22:30 making mistakes. And it's not the same 1:22:34 thing to fix the code or redirect the 1:22:37 AI after a 5 or 10-minute execution as 1:22:40 it is to correct the AI after it has 1:22:43 been working on its own for 24 hours. 1:22:48 So, don't get too carried away by that 1:22:50 hype of" wow, it's capable of creating 1:22:52 everything autonomously. "Um, there are 1:22:56 more" by-coding "concepts there than 1:22:59 software engineering, and honestly, 1:23:01 this isn't a standard practice beyond 1:23:04 the" wow effect "we often end up 1:23:06 finding out there. Okay, let's look at 1:23:10 a few last concepts just so you keep 1:23:14 them in mind, such as the part about 1:23:18 work trees. Something you can also use 1:23:22 here is a work tree. What is a work 1:23:24 tree? We've seen that we can use agents 1:23:28 in parallel. Meaning, I can launch a 1:23:31 task here now, and meanwhile, in 1:23:34 another project, another agent is 1:23:36 working on its own. But then we also 1:23:39 have the option to use those 1:23:41 multi-agents, those sub-agents, within 1:23:44 the same project. Meaning, we can 1:23:46 launch several tasks. I could launch 1:23:48 several tasks manually. Meaning, I come 1:23:51 over here and tell it," Do one thing. " 1:23:53 And I go to another chat for this same 1:23:55 project," Do another thing. "And I open 1:23:57 another chat for the same project," Do 1:23:59 another thing. "But what happens in 1:24:01 that case? That we have, yes, maybe 1:24:04 three agents, but they are working on 1:24:07 the same project and can come into 1:24:09 conflict. Sure, each agent will be 1:24:12 doing what we've instructed them to do, 1:24:14 but imagine what would happen if two 1:24:17 agents start touching the same code. I 1:24:20 might think, yeah, if I launch 10 1:24:22 agents in parallel, I'll go much faster 1:24:25 . Right, but those agents are going to 1:24:28 clash because they'll lose the context 1:24:30 of what each one is touching. What one 1:24:33 agent touches, the next one might break 1:24:35 , you know? That's why this concept of 1:24:37 work trees exists. A work tree is 1:24:39 basically using the capability we have 1:24:41 in Git to open different branches. As I 1:24:44 say, this isn't really the focus of 1:24:46 this class; for that, we need to be 1:24:49 very clear on how Git, GitHub, and 1:24:51 branches work. But this concept is 1:24:54 basically when we instruct it to create 1:24:56 a new Work Tree, what we see here, we 1:24:58 have the ability to select an 1:24:59 environment, maybe because we want it 1:25:01 to run with different capacity, and 1:25:03 select a branch. What is this Work Tree 1:25:06 thing? We start launching different 1:25:09 sub-agents, but each one works on a 1:25:11 different branch. Of course, if we have 1:25:14 different branches created here in this 1:25:16 project, well, we only have a main, but 1:25:18 we could end up creating more branches. 1:25:21 This way, we ensure that each agent 1:25:24 works on the same project safely, but 1:25:27 each agent does so in a different 1:25:30 branch. It's like having a team of 1:25:33 developers, each on their own branch, 1:25:36 working independently and avoiding the 1:25:40 risk we'd have if we made all the 1:25:42 agents work on the same branch. Each 1:25:46 agent works from its own branch. Each 1:25:48 agent does what it has to do based on 1:25:50 the task we've assigned it, and then we 1:25:52 start interacting with the Git branches 1:25:54 themselves, saying," Okay, what was 1:25:56 done in this branch? Okay, what do I do 1:25:59 ? Do I merge this branch with this one, 1:26:02 bring it to main, or whatever 1:26:04 development flow with branches we're 1:26:06 using. Perfect. And that's how we 1:26:08 ensure we've launched and taken 1:26:10 advantage of running many agents in 1:26:12 parallel, while keeping everyone 1:26:14 working safely. So this concept is much 1:26:17 more advanced; I don't recommend it if 1:26:20 you're just starting out, and even less 1:26:22 so if you don't have a good grasp of 1:26:25 Git, but understand that it can be used 1:26:27 and that Cursor has support for it, 1:26:29 okay? On the other hand, we also have 1:26:31 the memory part. We see here that using 1:26:35 memories allows ChatGPT to incorporate 1:26:37 existing memories into the task context 1:26:39 . Generating memories. What is this for 1:26:41 ? These options help prevent the 1:26:43 context from being lost too quickly 1:26:45 because the context is finite and 1:26:46 eventually fills up. Yes, these 1:26:49 memories are good because they will 1:26:51 ensure the context isn't lost as 1:26:54 quickly. But, of course, what we will 1:26:57 never achieve is that, the moment we 1:26:59 start opening different chats, what 1:27:02 will happen if we aren't able to 1:27:04 establish our own memory mechanisms is 1:27:06 that it will always have to read all 1:27:09 the code. That's why files like Legends 1:27:12 MD, which we saw earlier, are so 1:27:14 important, because that's exactly where 1:27:16 we have the main things about the 1:27:18 project. If we had documentation, it 1:27:21 should also be included in the project 1:27:24 because that way we end up generating a 1:27:27 knowledge system that our own agent can 1:27:30 read, and that really is the absolute 1:27:32 truth about what is happening in the 1:27:35 project. And we don't have to force it 1:27:38 to read line by line through the whole 1:27:40 project every time, because let's say 1:27:42 that memory eventually gets lost. On 1:27:44 the other hand, if we create it 1:27:46 persistently, saving it persistently at 1:27:49 the specification level, at the 1:27:51 documentation level, and at the Legends 1:27:54 MD level we were looking at before, 1:27:56 along with the native memory that Codex 1:27:59 itself has, we will, first of all, 1:28:02 spend fewer tokens, save time, save 1:28:04 money, and get much better results 1:28:06 because it has a much more defined 1:28:09 knowledge base. Okay? And finally, the 1:28:13 automation part, which is something we 1:28:15 had separated here, but which, well, 1:28:17 you can always end up complementing 1:28:19 with the software project you want. You 1:28:22 can also end up asking it to perform 1:28:25 tasks on the project, I don't know, 1:28:27 have it give you the latest commits 1:28:29 every day, read the application status, 1:28:31 where you left off, whatever. We can 1:28:34 also end up representing and reflecting 1:28:37 these types of tasks however we like, 1:28:39 okay? So, just to do a super quick 1:28:43 review of what we've seen, please 1:28:46 differentiate the chat part and the 1:28:48 work part from the Codex part, since 1:28:51 some people get quite confused with 1:28:53 this later on. Some small best 1:28:57 practices: prompts with context, always 1:28:59 include acceptance criteria, that 1:29:01 checkpoint, verify what the agent does. 1:29:05 Let's not rush blindly, even though I 1:29:07 told the agent "go ahead" to show you 1:29:10 how Codex works much faster. You have 1:29:13 to iterate those annotations. As we 1:29:16 look at the code itself, we annotate it 1:29:18 both in the explorer and the code, and 1:29:20 that's how we understand that we are 1:29:23 refining the code ourselves, okay? 1:29:26 Those approvals when we are starting, 1:29:28 like plan mode, reviewing everything, 1:29:30 approving, and all the memory part with 1:29:32 those readmes, those tests, those 1:29:34 agents, please, it's super important. 1:29:38 My recommendation is that you go ahead 1:29:41 and download it now, use the free 1:29:43 version, start testing it, run a code 1:29:46 editor in parallel, like I did with 1:29:48 Cursor, so you can see the code much 1:29:51 better, see what's happening in your 1:29:53 project, and try to build the project I 1:29:56 created; because it's also a way to 1:29:58 follow this course step-by-step, 1:30:01 without having to invent too much, but 1:30:05 seeing if you are capable of getting a 1:30:07 result more or less similar to what 1:30:09 I've done during this course. Another 1:30:13 super important reminder, the AI 1:30:16 development course, the AI agents 1:30:18 course, because many concepts I've 1:30:21 talked about in this course, if you 1:30:23 don't have all these artificial 1:30:26 intelligence fundamentals down, you 1:30:28 might get lost. This is a course you 1:30:31 have on YouTube. Just go here, Learn to 1:30:34 program with agents from scratch. Check 1:30:37 out this thumbnail, a 3-hour course, 1:30:39 totally free, you also have it right 1:30:41 here. Okay? And having said that, well, 1:30:44 really, thank you so much for staying 1:30:46 for this workshop, for this course. I 1:30:48 hope you liked it a lot. Please, leave 1:30:51 a like on the video, leave me a comment 1:30:53 on what you thought, if you are going 1:30:55 to try Codex, what you liked the most, 1:30:57 and I'll see you in the next workshop. 1:30:59 Thank you very much. Bye.