This is the full transcript of Refactoring Legacy Codebases, published on YouTube by Cursor. Every paragraph carries the moment it was spoken, so you can click any line to jump straight to that point in the video, search the whole thing for a word, or copy it out.
0:01It's so good to see everyone. Thank you all for joining. Um, if you are in refactoring legacy code bases with cursor, you are in the right place. I am Emmeriita. Um, I'm going to be one of your hosts today and I'm joined by the lovely Reagan. Reagan, do you want to do a quick intro? Hey everyone, I'm Reagan. I'm also one
0:19of the field engineers here at Kurser. Amazing. And then we're also joined by Ronnie who's going to be off camera. Uh but she's uh basically our our workshop magician. She organizes all of these workshops for us. And so if you want to see more Cursor workshops, go to cursor.com/workshops. Um and you'll see the full list of both previous and upcoming workshops that are happening. Um cool. I'll let folks trickle in and we'll get started in a couple minutes. I do love uh if people can share where they are calling in from. Um it's nice to see how many corners of the earth that cursor reaches. But yeah, happy to have you all
1:01here. Thank you for joining whether it's morning, evening, afternoon for you all. Uh we're going to get started in a couple minutes or so.
1:29Okay, amazing. I'm seeing Dolommites. I'm seeing Tennessee, Vancouver joining from India. Amazing. Love seeing this.
1:49All right, for folks just joining, we're going to get started in just a minute or so. Um, I am Amita. I'm joined by my colleague Reagan and Ronnie who will be off camera and we are hosting refactoring legacy code bases with Cursor. Uh, today's session is going to be pretty interactive. So, I actually recommend folks have Cursor up on their machines with me while I'm going through some of these and trying out all of the different, you know, tools and features that I'm going to be using. Um, but with that said, I think we should probably kick it off. Um, this meeting is being recorded and we will send out the
2:22recording. Um, I want to say within a couple days or so, look out for a email from Luma. And then for folks who maybe have pre attended previous workshops, the recordings are coming. We just have a ton in our little backlog. So keep an eye out for those as well if you have attended some and have not gotten the
2:39recordings just yet. Okay, let's kick it off. Um, hi everyone. I'm Marita. Uh, I am going to be leading the workshop today. If you have any questions, please feel free to put them in the chat and Reagan is actually going to be curating them and I'll be stopping here and there um for uh just answering anything that comes up. As you can see, this is a bit of a more advanced uh AV setup than what I'm used to. So, it's why I keep looking between my laptop and the camera if it's you guys don't know where I'm looking. Um, if you've attended my previous workshops, they
3:13were a lot less professional. So, thank you cursor it. Um, awesome. I'm going to get started and show some slides and then we're going to dive into the product. Okay, so today's session is about refactoring Lexi code bases. And I want everyone today to leave today's session with two main takeaways. And actually before I
3:36forget, let me make sure I am recording. One second. Oh yes, I think I am. Um so the first question is what are the best ways to refactor you know legacy code bases with AI and then the second question is why use cursor to do it and I actually want to switch the order of these two questions today because the first one I like to answer with slides and show you all a little bit of what makes cursor special and then the second one is a little bit more of a demo rather than just talking because I'm actually going to migrate a couple of components with
4:09you all and show you the best ways to do it with cursor. So for context, I was a software engineer uh before I was a field engineer here at Cursor. And so I've used a lot of AI tools and there's a lot of great AI tools out there. Um and today I want to speak a little bit as to what makes Cursor different and why I like to especially do really large migrations, refactoring, any work basically in monor repos or multiple
4:34services within cursor specifically. If you haven't used cursor maybe in the last 6 months or so, this might look new to you. This is the agents window and this is what we kind of see as the future of development with cursor. Um, as you can see your agents kind of live off to the side in their you know uh repositories and then in the middle is the agent or the chat where you actually talk to cursor. You can pick your models and you can work across different
5:01repositories. You also have the option in cursor to use the IDE as well. Um, so this is where cursor started and this is where a lot of developers still choose to stay. Uh it's a fork of VS Code. So if you like the VS Code debugger, if you like extensions and having the terminal kind of up on the bottom there, then this is a great place to work. We also have a CLI which a lot of folks might not know about. Uh the cursor CLI is great if you want to preserve any T-Max workflows, if you want to work in some IDEs like maybe Android Studio or Xcode that don't have
5:32a native cursor [snorts] solution just yet. Um and so the cursor CLI is available. It's on our website. You can download it and use it. and it's very similar to any of the other, you know, TUI AI products that you've used. And then lastly, this is actually where we're going to be spending most of our time in today. We have the cursor cloud or cursor cloud agents. And this is a really great way to use cursor because basically these agents operate autonomously and they operate on remote machines, meaning that I can launch an agent and close my laptop and the agent will still continue to run. And that's
6:07really great for these long migrations or refactoring projects which you have to do a lot of, you know, back and forth with the agent. With the cursor cloud, you can actually just send off a large agent like we're going to do shortly and have that agent work on refactoring until it's finished and prove that it's actually done what it's supposed to with videos, screenshots, and testing. So the cursor browser is where we're going to actually be showing some of this today, but there are other places where you could use uh the cursor cloud agent. A very common way that we use it at cursor is actually with Slack. So you can see
6:40here we actually have a cursor agent that lives inside of our channel that is able to check whether our, you know, documentation online goes out of sync with our implementation. And this is really great because it can open up a PR. it can have someone review it and it automatically gives you just visibility into what cursor is doing without you ever having to open the cursor app or the browser. And then the last place that you can use the cursor cloud um is the mobile app. So we have a cursor mobile app. It's available on the app store just for iOS right now. Android coming soon. And you can navigate
7:12through all your agents. You can pass off your agents from local to cloud and then work on them from the app uh wherever you are. And it's a really great way of again, you know, taking a step back from your laptop, closing it, and then working with your agents completely remotely from your phone. Now, another thing that makes Cursor special is its model flexibility. So, I think a lot of you folks know this, but cursor offers all the models from all the frontier labs right now in addition to a lot of the open source models as well. So, Kimmy, GLM, um, and then obviously [clears throat] our own
7:46in-house models, composer being one of them, and then Gro 46 actually being the latest and greatest of them all. Grofor6 was actually released, I want to say yesterday. Um, and it was or it is an amazing model. You can see how it's benchmarked here compared to a lot of the other frontier labs on a various set of benchmarks that are kind of published to external third parties. Um, so you can see here that it's a really strong model, but I think what also makes Grock really powerful is how cheap it is and how effective it is for such a powerful model. You can see here where Grock
8:20stands kind of compared to some of these other frontier models. So it's a little bit, you know, more expensive than composer and GPT which are more kind of execution focused models, but for how powerful it is and how, you know, uh, capable it is of doing longunning tasks, it's very inexpensive compared to some of these other frontier labs. Uh, so we're going to be spending some time with Grock 46 today and I'll actually show you and talk through when I decide to use it and when I don't. But I highly recommend if you haven't tried it yet to
8:47give it a go. With that said, um, I'd like to talk a little bit about what makes model flexibility in cursor actually effective. Um, and this is the fact that you can combine different models to have a really good output for a very small amount of money. Um, so this is actually a case study that we did at Cursor where
9:07we tried to rebuild SQLite from scratch. We have a great blog post about this, Reagan, actually, if you can put that in the chat as well. And we actually showed in this blog post that thanks to kind of our agent swarm, we were able to rebuild SQLite with these combination of models for much cheaper than if someone were just to use Fable or if someone just to use GPT5. So it kind of highlights the importance of having a wide range of models um because models are good at different things and they should be leveraged for different things. And so with this chart here you can kind of see
9:38how using one heavier duty model for planning and one more execution focused model for uh actual writing code is really useful for your general budget. So now I want to talk a little bit about you know the cursor harness is what we call it but what lives between the platform which we introduced cursor with and then the model. So the platform is basically all the different surfaces you can use cursor and the model is what I talked about which is the LLMs that cursor can you know leverage or delegate to. But in between all of those we have what we called cursor harness which is made up of all of these different
10:13things. So tool execution, cache management, dynamic context management, um context assembly, these all of these tools make it so that using these models and cursor actually make it more powerful for refactoring large code bases or migrating from one version of SQL Alchemy to the next. And so that's why I really recommend trying out something like this within Cursor because there's much more than just the model and the platform. There's also the
10:40harness that we provide on top of it. And if you want more technical details about the harness, feel free to check out this blog post from April. It was written by two of our lovely engineers and it goes a little bit deeper into what we do within cursor to make it really powerful as a layer on top of the
10:56models that we provide. Awesome. So, that was a bit of a speedrun through why cursor, what makes cursor special, and what makes it different. Um, now I'm going to talk about what are the best ways to actually do a refactoring with cursor. And we're going to go through a couple steps today. Uh four steps actually which I've seen both internally for refactoring as
11:18well as what I've seen with customers. The first is we're going to use cursor canvas to audit our codebase and use cursor plan mode to strategize what we're going to migrate. Then we're going to leverage plugins to actually take this plan that we've built and write tickets. So we're going to make actually a whole Jira epic of tickets for a
11:37migration from PHP to React. Then we're going to hand off those tickets to a cursor cloud agent. And this is where you're going to see how you can have a local plan and a local set of tickets that you've made, but then you can delegate them to these autonomous cursor cloud agents that can go off and work on them with your laptop shut with you on a walk with you asleep and then come back to you with the result. And then lastly, I'm going to talk about automations and cursor and how you can build workflows and tools to maintain a really good level of quality and stability for whatever you've
12:10refactored or migrated over. I finished this first part of slides. Reagan, are there any questions I can answer before I go into the demo? Uh, yeah, there's a quick question on whether DeepSeek V4 Flasher Pro will be coming to Cursor hosted on US servers. I believe the answer is no, but correct me if I'm if I'm wrong about that, Amita. I don't think we have any plans for that
12:31one yet. Correct. Cool. Awesome. All right. So, let's now get into the cursor product. As I mentioned, please use uh or please have cursor up on your screen while I'm talking. I do feel like it makes it a lot more interactive and relevant for you if you're able to kind of follow along with what I'm doing. And you could do it with any repository, any folder, anything that you have already. Um, but try and see if you can emulate any of the things that I'm doing because it'll make it a lot more valuable if you can see it on
12:59your own screen. Awesome. So, today I'm going to be working actually in just a open source repository. This is um, if you all remember WordPress. I actually had a WordPress account maybe back in I don't know when I was a teenager. And uh, I used it to create blog posts. Um, and it's a pretty, you know, old website. I'll actually open it up here in the cursor browser so you can see it. So, I cloned the WordPress repo and what I did is I just asked Cursor to run the the web app uh for WordPress in the cursor browser. You can do that just by tagging
13:32app browser in cursor and cursor actually has a built-in browser that's able to run anything that from a full stack app to just a front end app. Um, and you can actually just open it up here. So, I'm going to open up the browser. You can see it here to have a little more real estate. I'm just going to close this side panel for now. But here I have the WordPress browser. Um, so I can see all my full stack WordPress app running up in here. And what I'm going to do actually is I'm going to do two things. I'm first going to audit this codebase. Uh, and I'm going to see
14:04what tests currently are here and what can be improved for test coverage. And I'm going to use cursor canvas for that. And then at the same time, I'm going to work on a migration plan where a lot of these components are pretty old um and they're all written in PHP. I want to migrate some of these components to React. So, just so you all can see what I'm working with, this is kind of the the WordPress website. It's built in a mixture of PHP and React, but there's still a lot of legacy code here. So, I'm going to work on migrating that legacy code over to React, which is its current
14:36modern framework right now. So what I'm going to do is I'm going to close this and I'm going to open up a new chat. Um and I'm going to do two things. So the first thing as I mentioned is I'm going to create a canvas. So I'm going to say create a canvas. This is again built-in skill. So you all should see it with me. Slash canvas is something that everyone should have access to that analyzes test
15:00coverage for this codebase. highlights any gaps and presents the information to me about uh where I can add more test coverage if I migrate this to React this codebase. So, I'm going to send that one off. You can see here it automatically starts running inside of my WordPress repo on the side here, which I love. While that's working, I'm going to launch another agent. Um, and this is actually
15:37where I'm going to go into plan mode. So, this is where I actually want to develop the strategy for doing the migration. And in this scenario, I actually am going to change my model. I'm going to use uh GPT56 Soul. I love this model. It's a really great model for writing. I think it's actually a better writer. Um, our head of Devrell actually said this. It's a better writer than Grock. Um, but obviously there's gaps in other places. But because I like its writing style, I like to use it for planning. So I'm going to go ahead here and say um I want to migrate the components in this codebase,
16:13say the legacy components of this codebase from PHP to React. Um I want to make sure that tests are added to verify no regressions have been introduced. And then something I like to say as well, I say, I want you to draw a diagram of the current status quo technical architecture and how that will change
16:41with the migration. Cursor is really good at drawing diagrams. Um, cursor uses mermaid diagrams as its base, but you can actually connect cursor to lucid charts, to excalraw, to fig jam and h and have it actually print out its diagrams in any of those services. So, I like to do that sometimes, but usually the the first mermaid diagram is a good place to start. So, you can see here uh for the plan, what it's doing is it's actually using my plan skill. This is a TDD template that actually lives in uh Confluence that it's able to pull on to make sure that all my plans look the
17:15same. Um, but before it's going to go and actually write the plan, what Cursor is very good at is getting direction from me early. So, you can see it's saying, "Hey, legacy components is a little vague here. what scope should this design target? Um, and I'm going to say one screen for now and then we'll do a reusable phased pattern. Um, and then sometimes cursor will ask you more than one question. So, it's kind of up to you
17:37how you want to customize that tool. It's called the ask question tool and you can make it so that it actually, you know, asks you at least five questions before it goes in and writes a plan. But the cool thing about plan mode, as I mentioned, is the output is a markdown file. It's a document. cursor is never going to go in and actually make or write code in plan mode. It's only going
17:56to write you a strategy. So, I'll let this run. While this is running, I want to go back and show you the canvas that cursor created. So, again, this is a built-in tool within cursor. Um, and cursor is actually the only tool I know that has this where I can open this canvas here. And what I love about cursor canvas is it can take any data. It can take files, Excel spreadsheets, you can give it data from an MCP. In this case, it took data from the codebase and it creates these beautiful interactive visualizations that I can use if I want to present this to my leadership team or if I want to
18:31just look and visualize things that usually is, you know, presented in just tables or raw data. So, you can see here it creates this really nice table of, you know, the coverage by the different admin screens. And I love how it does this where it says, hey, these are the things I think you should migrate next. these are the things that you should do after and these are the components that are already in React. So it kind of filters everything really nicely. Um it says here are the places to add coverage. Here are the places with client.js that has no qunit tests and then this is the way to structure new
19:01tests. The cool thing about canvases as well is that you can actually modify them. So I can for example say make this a bar chart instead and it can go ahead and do that. But I like using canvases as a way to audit code bases. I like using it as a way to again print out test coverage docs or anything around coverage generally before I do a migration because it's a really great way again to visualize your codebase in a very fast and easy way. What's also cool about canvases is you can share them. So I can actually publish this and now anyone who has the link to my
19:34canvas. So for example, if I sent this to Reagan, she can actually open it up in her browser and see my canvas and see any changes that I make to the canvas. So, it's a living, breathing document that is really easy to spin up. Just use /canvas. Okay. So, this is good data. I want to make sure that I take some of this into account, especially maybe the the screens that it's thinking of migrating next. I'll look and see if the plan covers any of these. I'm now going to go back to my plan here. Oh, looks like
20:01it's asking me some more question. Hm. Which legacy component should anchor the migration plan? This is a good question. I'm going to say the profile for now. Um, while this is working, I do want to talk about how you can have multiple agents up in cursor at once. Um, so for example, you have one agent running, but you want to look at another agent. You can actually tile your agents left and right here. So for your T-Max users, you don't have to stay in the terminal. You can actually have something similar just like this. Um, and you can see kind of you have one agent running here. In the
20:31meantime, you can kind of look and see at your other agent and how it's working. So very cool. I do this a lot when I have two longunning agents run side by side. Um sometimes also, let me actually close this out. Um if I have a longunning agent and I want to see like hm what is it doing or why did it make this particular decision? Um I can see actually more details by uh highlighting something, hitting add to side chat and saying what exactly were these patterns? And this doesn't
21:03conflict at all with this parent agent. It's more so like a if you've used /btw in cloud code before a easier more UI friendly way of seeing that. So I love using that sometimes when I have a longunning agent um because I can use it to kind of doubleclick on a particular part of the codebase or see kind of what's going on while my parent agent
21:22still continues to run. I'm going to close this for now. Um and looks like the plan is almost done. It's refining the phased migration plan. Um, in the meantime, Reagan, are there any other questions I can answer? Yeah, one quick question. Um, opening the canvas in the browser. Do you mind just showing where you can find the
21:43click to copy link? Absolutely. So, I'm going to go back to the canvas here. Um, as you can see, I published the link and I actually made this change where I made that from a pie chart to a bar chart. So, I'm going to sync it. And then what I'm going to do is I'm going to copy the link right here. And I'll actually open it up in the browser for you guys. So, I'm going to open up my browser. And what we're going to do is we're going to paste that
22:04here. And boom, here is my canvas. And again, it's for anyone in my cursor team. So, Reagan can see it, my manager can see it, anyone who is in the same cursor team as me can see it. But if I sent this to, you know, my mom or my dad, they're not going to be able to open it
22:20because they're not in my cursor team. But this is great if you ever want to kind of share data like this. You can also download it as a PDF if you want to print it out or use it as a leave behind. Um so really great way again to uh share data like this from your
22:34codebase. And then one other question around whether the IDE is a better place to generate code or our agents window application. Yeah, it honestly is a personal preference. Um I find that people like the IDE when they like the VS Code debugger or when they have specific VS Code extensions that they, you know, have been using for years and they want to preserve those. Um, I like the agents window because I spend most of my time in my agent and then when I do need to review code, I do most of that actually in the cloud which I'll show later. Um, so that's why I prefer the agents window
23:08but it's a personal preference. Um, we will never stop supporting the IDE. The IDE will always be there. Um, but it is kind of up to you on as to how you want to use it. Cool. And then one other question on whether browser and canvas are available in IDE and I believe the answer is no. So browser and canvas are um so actually if I open up the IDE here um you can actually open up the browser just by doing command shiftB. So I can go to that same local host. I believe it was
23:368888. Let me check. Yep, there we go. So you can open up the browser in the IDE and then you can open up canvases as well. You can just do slashcanvas. Let's see if that loads here. Looks like it's having some issues loading, but you can open up a canvas inside of the ID as well. Cool. Looks like this plan is taking a little bit longer. Maybe I'm just used to Gro speed. Um, so we'll give it a little bit more time. Um, while it's working, I'm going to show you all kind of where we're going to go from here. So once we have the plan, we're actually
24:14going to divide up the plan into Jira tickets and populate this Jira board that I have set up. It's just an empty board with those tickets. And the way we're going to do that is via the Atlassian MCP. So if you guys use Jira, if you use Linear, um use monday.com, those all live actually in here now. So if you go to customize, you can kind of see the list of plugins that actually let me just do the ones for me. Um, you
24:40can see the list of MCPs that I have. So, Atlassian, Data Dog, Figma, Google is a big one now. So, we now actually have Google Drive, Google Calendar, um, and your Gmail all as plugins within Cursor. So, you can actually connect to any of these if you want to, for example, publish your plan to a Google Doc or if you want to take your calendar into account when scheduling something with Cursor. Um, so you can use all of these plugins within Cursor. have. Um, and then the last one that I'll show, which we'll use later, is um, you can also have uh, the Figma plugin. Um, and
25:14this is really great if you ever want to again publish to a Fig Jam or pull in design systems. Um, if you ever want to migrate design systems, um, you can, you know, pull in Figma designs for that as well. So, very powerful plug-in and very powerful integration within cursor. Okay, have uh, one hand raised by Frank. Frank, if you want to go ahead and come
25:36off mute, feel free.
25:45Okay, I think we'll have to take your question in the chat, Frank. Um, sorry about that. Um, but our plan is now ready. Um, as you can see, we have as it as I mentioned, it follows a template that is in confluence, which is great cuz I want all my plans to look the same. Um, but as you can see, the plan is a living, breathing document. So, I can edit it. I can change it. I can say,
26:08you know, Amita and Reagan and Ronnie. Um, it kind of is allowing me to basically modify and edit it. I can even add parts of this to the chat. And I can say something like shorten this section. Um, and I'm actually going to switch back to Grock now because I want something a little faster and more efficient. Um, but you can see here the plan is really great at kind of walking you through what the steps it's going to take to actually migrate these things over. So you can see these are the functional requirements. These are some non-functional requirements. This is the highle approach. You can see that it
26:42does both like a current, you know, status quo architecture diagram that I asked it to do. But then it also says this is what the target architecture is going to look like and these are some changes I'm going to make. Um, it's going through the sequence and data flow of the codebase, which is really nice. And then it's walking through the API design, any data models that need to be updated, and any feature flags we need to change. So what I'm going to do now is I'm actually going to ask it to
27:05divide up this plan into Jira tickets. So I'm going to minimize this again. Um I'm actually going to Oh, it's asking me one more question. I'll say core president here. Um I'm going to exit out of plan mode now. Um and I'm going to say divide this plan into Jira tickets. and publish them to the WordPress space
27:29I have in Atlassian. Um, and I'm going to send that over. Um, as you can see, I have some messages queued up. This is kind of when an agent is already running. I'm actually going to show you a mode called multitask mode where it can actually work on both of these things in parallel. As you can see, these two agents aren't really that related. One of them is again shortening the executive summary. The other one is
27:52dividing the planet into Jira tickets. So it can work on both of those things at once. Um but this is a great way to again speed up and expedite your workflows whenever you have um any particular phased work or things that need to get done in sequence. So you can see here it says all right I'm shortening the plan summary and then now it's working on uh the Jira tickets
28:12division. Cool. So while it's dividing this up to Jira tickets I now want to talk a little bit about how you can go from local work to the cloud. And this is where you really see a huge gain in time and a huge kind of uh I want to say difference in effort for doing something like this because you can now send this off to a cloud agent and the cloud agent can now work on this while you you know close your laptop or while you work on something else. It's not going to
28:40constrain your machine. So you can see here it's working on making this into tickets. Uh there's an option here to build into the cloud. So, if you want to just go straight from your plan into the cloud, you can hit that button, no problem. I'm actually going to go doing it ticket by ticket. So, I'm not going to hit this button today, but just so you know, that is an option. What I'm going to do actually is I'm going to show you how I go from here to the cloud. So, there's multiple ways you can go from here. You can even launch a new agent here. Instead of
29:09doing from Mac, you can hit cloud and it will automatically launch a cloud agent. But the way that I like to do it is I like to actually just go to the browser. So here is cur the cursor cloud agent browser interface. So as you can see here it's really at a very simple URL cursor.com/agents and you can see that I have some of my previous agents kind of pinned off here to the side. Um you can see that I can kind of pick the repos that I work in in the cloud. So this is the one that I was working in locally but because it's in
29:39GitHub I can just connect that via cursor. Uh, another cool thing about cursor cloud is that you can actually connect multiple repos. So this is really great if you a are a microservices shop or b if you for example have one internal SDK that a bunch of your other kind of client services rely on and you make a change to one SDK you know field or JSON file and all the other clients need to get updated. So what you can do there is you can hit select multiple and then you can select as many different kind of services you want and a cloud agent will work across all of those services. So
30:17this is a huge differentiator with within cursor multi-reo cloud agents because the reality is unless you have a monor repo or unless you're working in smaller repos you probably do want context from one repo going into another and so this is the way to do that with multi-reo cloud agents. Another thing about cloud agents is you get that same flexibility with models here. And this is important because cloud agents because you know they can take a long time or they can send you back screenshots and videos of what they've done. They can use more tokens than a normal local agent. So you want to make sure that you actually have
30:53cheaper faster models for your cloud agents. um, Grock 46, Composer 25, GPT56. These are all models you can only get in Cursor because these cloud agents are able to use them in a really fast, efficient way and only cost you maybe like three or four dollars for an entire migration. Um, and so I really recommend kind of playing around with these models here because this is where you see a huge kind of gain in efficiency and cost when you use cheaper, faster models for your cloud work. And then the last thing I'll show is something called and do we
31:28have it here? Yes. Long running agents. So we don't use this that often. Um it's basically similar to slashgoal where it will keep working on a task until it's finished. Um if you ever want to turn it on and just use it, you can actually set like time limits as to when it should be, you know, done or when it should work until. And so it is really good for that particular scenario. Um, but what I like about it is it's really great again if you want to do a dependency update or a Python version update. You can kind of have cursor working on that until you
31:57think that it's ready and everything has been tested fully. Cool. So, I'm going to disable this for now. Um, and I'm going to select the repository that I'm working in, which was the WordPress develop one. Oh, I'm actually going to just refresh the page real quick because I don't want to do multi-reos. And give it a second. It looks like we might have a um outage, but let's see how far we can get. Here we go. Um what I'm going to do now um so looks like let's see how our tickets did. Beautiful. So it kind of divided up all these tickets into different phases. Amazing. Um what I'm
32:38going to do is I'm actually going to show you all these tickets. So here they are. You can see here that each ticket has a goal, scope, some acceptance criteria, some tests, dependencies, and notes. Um, I'm going to just assign this to me. Um, so I'm going to assign all of these tickets, maybe phase one and phase
32:542. Um, and then what I'll do is I'll say go here and I'll say find all the Jira tickets in the WordPress board that are assigned to me and work on all of them. Put up a separate PR for each ticket and make sure that you verify your changes using screenshots or video recordings. Um, for this I actually will stick with 46. Um, sometimes I use composer, sometimes I use GPT. I usually stay away from enthropic models here because they can tend to be pricey. Um, but I'm going to go ahead and send this out. And this
33:39is a very cool thing about cloud agents. So cloud agents set up the environment for you remotely. Um, and the first time you do it, it will take maybe like 10 to 20 minutes, but then once you've done it, it saves that environment using something called a build, so that it doesn't have to do it each time, and then it immediately starts working on it. Um, so you can see here, this is a pretty big repository, this WordPress repository, but because I set up the environment yesterday, um, it's able to kind of work on it no problem. And all it needs is basically any install scripts or snapshots that I've given it
34:10before. So, it's looking pretty good. it's pretty uh you know ready to work on these things. Um and now it's actually going to use the Jira MCP. So another great thing about the cursor cloud is the fact that you can connect all the MCPS that you had locally in the cloud. You can see here that I have Atlassian turned on. I have I believe data dog as well. Um there it is. And you can add as many MCPS as you want. So again, Google Drive, uh, granola, um, you know, pager duty, all of these things kind of live here, and all you have to do is just add
34:43them with the plus symbol, and cursor will immediately start looking at them. So you can see here it says, all right, I found three sequential tickets. I'm going to expect the parent ticket um, before starting phase one. So I'm going to let cursor work on this. Um, this is kind of where you start with these migrations is you kind of give it the set of tickets. You want to make sure that you know it's not putting everything into one giant PR because that's just so untenable to review, but it's also really good for kind of walking through the steps that it's going to take. Um, as you know, we saw
35:14earlier, we have this plan, we edited it, we turned it into tickets, and now the tickets will actually be implemented by this cloud agent. I can shut my laptop and be done for the day. So ways that we've seen this at Curser is we've gone through backlogs of tickets um on Fridays because you know we just ask Curser to do it and then we come back on Monday and review the PRs. It this is really great for distributed teams. If you have like a team in Europe and a team in Asia um you can have those teams literally work with each other asynchronously via cloud agents because
35:43when one team goes to sleep the other team can pick it up. Um so it's a really great way to just basically have always on agents that work for you. Um, and I really love it because it speeds up a lot of my workflows and as like I was kind of gonna uh talk about a little bit later, they're able to verify and test
36:01their own work. Okay, so this is going to take a little bit. Um, while it's working, I want to do a quick tour of just the cloud agent environment. Um, this is the main agent run very similar to what you see in regular cursor. But what's nice about the cloud agent is you can also see that desktop that has access to. So, cursor cloud agents run on remote VMs, Linux VMs. And so, because of that, they have access to a computer and mouse. So, if you have any full stack front-end applications that need testing, Cursor
36:31can actually do that testing for you. Um, in fact, you can see an example of it here. Um, this was in another repository I was working in, Graphana. Um, but this is a video that's taken by cursor of it implementing a feature that I asked it to implement of switching uh a theme in a codebase. Um, so this is cursor using its own mouse, its own computer, and actually going in and testing something for me. I'm not controlling anything here. It's doing the full recording and then sending that back to me. And so when you're doing migrations or when you're doing refactoring, you always want to make
37:04sure that you're not breaking anything, right? You want to make sure that no regressions are being introduced. And by sending them off to cursor cloud agents, these agents can self-verify and let you know like, hey, I took a screenshot. Does this look okay? Or, hey, I tested this end to end. Is this the workflow that you were expecting? And so by doing that, you're kind of given more confidence and trust with these agents that they are able to do the refactoring
37:27without having to break anything. So as I mentioned, this is kind of Oh, sorry. This is what I was working in. This is kind of a great way to to do these these tests because they have access to their own computer and their own test suite. Um, but this is also a great place to review changes. So once cursor starts making full changes to the code, you will start to see them here and it'll look like uh basically any form of like version control UI. So you'll see kind of what has been removed, what has been changed. You can follow along here, but at the end I can
37:58show you kind of an open PR I had earlier. Um you can see all the changes that were made and review them. You can also look at CI so you can see all the checks that are passing. Right now I just have one which is cursor bugbot, but you can also see your history of your commits. So, it's a really nice kind of I want to say quick snapshot into your your git changes here and then once you're ready, you can go ahead and just open up that PR and have someone review it. So, I live in the browser view. I think it's a really great way to
38:27work. Um, but if you, let's say, are on the go a lot, you're traveling a lot, that's actually where I like to use my phone. Oh, so I'm going to uh connect my phone real quick so you can see
38:46And let me actually go to the cursor app. We go connect.
39:00And the cursor app again is available on the app store, but this is basically what it looks like. So you can see here I have one agent working. That's the Jira tickets agent that we just launched. Um I can see all my agents that I've launched. So here were a couple that I launched yesterday. Here was some that I did again to set up my dev environment. Um I can also go through all my different workspaces. And then the beautiful thing about mobile is that you can also just launch an agent from here. So I can go ahead and just say hey I want to build an agent in this
39:27particular repository. I want to build it on this particular branch. Um and then I can just launch that agent and immediately see that show up in the browser. So, for example, I could say something like um uh tell me about this codebase. We'll do something simple with graphana. I'll use auto for now. This is kind of our smart router that we have that actually chooses between our models. Um and I'll send that off. And then what you can actually see if I go back to the browser
39:56is a new cloud agent has been launched. So, it's a really seamless flow from desktop to app back to desktop. You can always basically have visibility into your agents and know exactly what they're doing. Okay. Um, we have about 10 minutes before I'm happy to open it up for questions. Um, we're going to come back and see how this refactoring migration does. If it doesn't finish, I have a
40:19previous run that I can show you all. Um, but while this is working, I want to talk a little bit about automations. So this is the last of the four kind of uh bullet points I showed earlier. Automations in cursor are basically scheduled or triggered cloud agents. So if I go to new automation here, you'll see that there's a number of different ways you can launch an automation. Um you can launch it based on time. You can
40:42launch it based on an event happening. So a PR being open, a label being changed. You can launch it based on a new message being sent in Slack or in Teams. And then you can also have your own custom, you know, web hook if you want. So a lot of times I've seen uh automations being built for when you drag one uh ticket from to-do to in progress because you could just set up a Jira web hook. So automations are really great for, you know, expediting workflows, but they're also really great for maintenance and stability. So I'll create an automation with you all. Um I
41:13like to call it my feature flag cleaner. Um because this was an automation that I wish I had back when I was an engineer. Um, and basically what this does is I can say that, you know, let's say every week, might be a little overkill, but that's fine. We can tune it. Every week I want you to look through this repo. Um, and I want you to see if there are any stale feature flags that have not been used over the last 30 months. Sorry, 30
41:48weeks. Um, 30 days. [laughter] Um, you can cross check with and I can actually tag an MCP here. So, I can tag, for example, statig. Let me see if I can connect that here. MCP. Stats sig. Oh, it's not connected. That's okay. I can add a custom MCP for it. In the meantime, let me just actually just do data dog. Um, you can cross check with Data Dog and Sentry to make sure that there have not been
42:19any issues with any of the flags. Um, I could say, uh, put up a PR with the remove flags and tests confirming that, uh, removing the flags has not introduced any regressions. Um, and then I can even say, "Send me a Slack message with the PR once you are finished so I can review it." I really love creating automations. I think it's a very kind of creative way to see what parts of your day can actually be done by an agent or actually be helped by an agent. Um, so you can see here it has a tool to open a pull request. I'm going to add another tool
43:03to send to Slack here. um I'll have to connect my Slack instance, but this is kind of an example to show you that you can say it will just DM me uh a message with the PR. Um as I mentioned, you know, you can connect one repo, you can also collect connect multiple repos if you want it to work across multiple repos. Um but this is a great way again to maintain your code bases. So you can do this for feature flag cleanup. You can do it for dependency updates. And this is kind of proactive rather than being reactive. Um, a lot of times, you know, when you refactor a legacy
43:33codebase, you ask how did we get into this state? You know, why why did this happen? And a lot of times it could just be because, you know, things weren't proactive enough, the dependencies weren't getting updated, we weren't able to, you know, do things ahead of time. And so, this is where these cloud agents automations come in is that they're able to do things ahead of time so that you can avoid having to do refactoring in the future. Um, that's always been my mentality with engineering is that you want to try and, you know, nip it in the bud. And so automations are a great way
44:00to go about that. Um, if you don't want to start from scratch with an automation, that's totally fine. We have some really good templates here. So you can see there's one for adding test coverage. There's one for scanning your codebase for vulnerabilities. There's really good ones um for incident triaging. So if you have a data dog alerts channel, if you use pager duty or incident.io, you can actually start with any of these. So let me actually do maybe this one here. Um, and you can see this is another timebased trigger, but the agent is an incident investigation automation. Um, we actually use something similar to this for our on
44:34call. So, instead of waking up someone at 3:00 a.m., um, it will do an initial kind of investigation and then send the person on call like a brief summary of what it's found already. Um, as I mentioned, it can send to Slack, can use data dog. Um, and you can kind of, you know, uh, customize it so that maybe it publishes to notion or publishes to Confluence, whatever your tools are. So, automations and cursor are really, really powerful. I highly recommend um, if you have some time today, try and build one um, because it's it's really fun. I think it it makes coding really enjoyable, but it's also very powerful
45:09depending on, you know, whether you chain automations together or whether you set up custom web hooks. Um, it's a really great way of taking advantage of these cursor cloud agents. Cool. Uh with the last kind of five minutes I have, I do want to come back to our original cloud agent. Um you can see here that it's setting up Docker environments. It's making sure that the tests that it's running all work. Um so this is exactly what I would want. As um kind of someone has mentioned, uh cloud agents are meant to be autonomous, but
45:38they are also meant to have user input. So, if you ever want to add a follow-up, if you ever want to interfere with a cloud agent or if you don't agree with what it's doing, you can always add that here, you can always interrupt it from your mobile app as well. Um, the goal is for the cloud agent to do most of the work, but for you to still be in the loop when you want. And so, if you do want to kind of interrupt it at all, you can always add a follow-up here and it
46:00will take that into account. Awesome. Since I don't think we're going to get this finished today, I do want to show you all what a finished migration can look like. So I'm actually going to show this one here um which is uh you know a migration again from PHP to react. It migrated specific components and I asked it to verify that it worked with endto-end testing. And here example is a video of cursor kind of testing exactly what it did by migrating um the feature over. So you can see here that it's clicking on things. It's making sure that you know what it's what it's migrated over has not regressed and it's
46:36working as expected. You can even see that cursor labels the different parts of the video. So this is the login section. This is the viewing comments. This is the viewing users. And those were the two components that I needed to migrate over. Um and so this is really great. You can expand this across other
46:51parts of your codebase if you want. Right now, you know, this PR is already pretty big, so maybe I'd want to just scope it just to these two components. Um but this is kind of where I mentioned where you can do tickets at a time. Just so you all can see what multi- ticket or multi-PR cloud agents look like. Um I asked cursor to put up PRs for two Jira tickets that I had earlier. And you can see here if I actually open this, you can actually toggle between these two these two PRs and kind of go through each one and see what one PR did versus
47:20the other. And so when you have a whole stack of PRs that are working on a migration, you can kind of go between all of them and see what each PR actually covered. Um, and so that is a really great way again to use cloud agents because you don't want one giant PR with thousands of lines of code. You want multiple PRs that are tackling um separate components or separate
47:42services. Okay, that's a little bit about uh migrations within Cursor. Um that I kind of highlighted both what we do at Cursor versus also what I've seen out in the field. Um, some things that I do like to add is cursor cloud agents is probably one of the best features I've seen for any AI product in a while. And so if you haven't tried it out yet, please please do try and either use a browser, Slack, or your mobile app to just see how it works. Um, setting it up is very quite simple actually. If you want to set up a cloud agent, all you do is
48:16cursor.com/onboard and it'll walk you through the steps of creating a new environment. So, it will ask you to link to your GitHub and then you can go ahead and start linking. And then once you have it all set up, that's when you can actually start doing some of these migrations. Um, but if you have any questions on migrations, we also have a good cookbook. Let me see if I can find it quickly. Oops. Um, if you
48:39scroll down to our docs, uh, let me see. Cursor cookbook refactoring code bases. There it is. Oh, wait. No, that's me. Hm. Maybe we took it down. Um, we had a good doc on kind of best practices for legacy code bases. So, if I find it, I'll try and send it out in the following email. Um, but generally what I recommend is
49:02going back to those those four steps. Um, use canvas to audit and plan mode to strategize, use plugins to scope your tickets, hand off to cursor cloud agents, and then use automations to prevent some something like this happening in the future. Amazing. I will stop there and I'm happy to open it up for questions. Reagan, I'll let you be the kind of question curator. Um, is there anything that we should talk about with the last 10
49:27minutes that we have? Yeah, we had a couple questions on how the cloud environment handles required environment variables. Great question. Um, so environment keys, API keys, secrets, all of those things live in your cursor cloud environment setup. Um, so when you set up an environment, you can actually put, uh, whatever API keys you want, um, routing rules, you can set particular IPs to be allow listed so that cursor can only, you know, access certain links. Um, so you can put all of those things inside of your cloud agent setup. Um, if you're ever curious about cloud agent security, we have a good, so everything kind of
50:08lives in cursor.com/cloud. Um but if you want to know more about like where does data live, how long does it live for, um we have a really good enterprise doc on this um if you go to docs and then we go to oh here cloud you can see everything around like security um secrets our versions of private
50:27connectivity and all of those things. Cool. One other question also Amriita about whether you use skills and if so if you have a preferred set if you could speak. Yeah. Um I love skills. Uh I do use them and a cool thing about plugins if we go back to cursor. Um is skills uh can live inside of a plugin that you can use. So for example um if I go to the Alassian plugin, let's find it here. Um, you can see that they have MCPs, but this is these are skills that actually the Atlassian team has published. And so, anytime I use the Atlassian plug-in, I not only get their
51:08MCPS, I also get their skills. Um, similarly with, sorry, with Figma, um, they have, oh, that's just the MCP. They have MCPS, but then they also have a ton of cool skills that I automatically get by default when I use the cursor plugin. So, I love to use skills from these plugins that I heavily lean on. Um, but then I also have a couple skills that I like to use. So, for example, um, yesterday I was working inside of this Gutenberg uh, open source repo. It's one of the WordPress kind of subreos. And I have a skill called slash onboard. It's a skill that I actually made myself. Um,
51:46but I do this anytime I'm in a new repo and I want to just learn about it. So, I want to learn, you know, what's the tech stack? What versions of Python do I need to use it? Um, what does it do? where's the, you know, where's the back end and front end living? And so I like to use that as a skill. Um, there's a couple other skills that a lot of people in my team lean on. Um, we have a skill called superpowers. Um, that or sorry, a plug-in called superpowers that is actually available for everybody. So you guys can get our full list of skills
52:15that we at Cursor use ourselves because we've kind of open sourced this. So this is kind of like a a bit of a of a cursory overview into skills, but my recommendation is honestly creating your own skills. So using the create skill function within cursor and creating workflows that make sense for you. Well, uh one other question just came in on um that says a lot of our services uh interface behind private networks on Azour. So how can they leverage cloud agents to work within these given IP
52:48restrictions? Yeah, we actually have a section in our doc for that called private connectivity. Um so if you have you know things that live on your guys' infra um options that we offer are Cloudflare tunnels if you're not on AWS AWS private link if you are on AWS. Um and then sometimes like VPN work so if you guys are on tail scale sometimes we offer that as well. Um, so there are options if you want to interface with uh cursor cloud but you have infra that you need to stay on your network. Um, there also is self-host cloud agents. We don't
53:20necessarily recommend this off the bat. Um, it is a good way to use cursor but we do often see like some of our most secure customers use cursor cloud agents with one of these tools or they just trust the cursor security that we've had around cloud agents. Um so up to you on how you want to do that but there are
53:39options in the docs. Cool. And then one other question on whether cursor can learn and adapt to a team's collaborative work on a project. So can it build its knowledge so that it approaches future build plans um better based off of past experiences? That is a great question. Um so we have actually a plugin for that. Um so you guys all should have access to it. It's called continual learning. Um, and this basically does exactly what you said where if you add this plug-in to cursor, so I'll just add it for myself. Um, you can see it actually add to what we have the agents.mmd file uh information and
54:19data about how you work, what's your writing style, what's your coding style, and it'll immediately start learning. You can have this be a team plugin so that everyone in your team uses it. You can have it just be a personal plugin. Um, but this is a great way to to do that. Um, cursor is working on memory management. It's something that I think all all the labs and all the AI tools are working on. It's a very important problem. Um, and we actually have a version of it in specifically our automations. So, if you go to your automations and let's actually go to this one here, you'll notice that every
54:52automation has something called a memories.mmd file. This is how automations learn to get better each time they run. Um, so this is a really cool feature because once an automation runs, let's say it, you know, missed something or you had to follow up with it and say, "Hey, I actually didn't like the way that you phrased this to me in Slack." It will learn from that kind of feedback and then get better in each subsequent run. So memories MD and automations is kind of our also solution
55:18to that in the cloud. Cool. One question on cloud agents um like if they do end up crashing if the context is stored and whether they can be recovered based off of that existing run. That is a good question. Um so you can reference past conversations in cursor actually. Um, so if I go to cursor, um, if you ever want to use a past conversation as context, you can actually do at past, sorry, at chats and it can actually go through all your previous chats. But I don't think this actually extends to cloud. So I would have to double check. In fact, let me just try it here. I'm going to go ahead
56:02and say, can you see all my previous conversations in this repo in the cloud? Um, I'm curious to see if it will be able to solve it. I actually don't know. Um, but in in cursor local, you can see your previous conversations.
56:24And actually, if you're ever curious about what cursor cloud has access to, we actually have a cursor cloud MCP. Um, Reagan, if you can find the docs for that. Um, it's just it lives in our in our cursor documentation. So if you ever want to use the cursor cloud MCP, you can use it um for here it is actually I found it. Um you can use it to ever to diagnose runs that haven't worked to diagnose your setup and your environment. Um it's a really great great way of actually interacting with
56:50the cloud itself.
56:57Okay, awesome. Um, I can take maybe one more question if someone wants to come off mute and ask live or I'll take one from the chat. Reagan, anything that you think would be interesting and then we can close out. Yeah, there's one interesting question about um running cloud agents on a schedule that need access to something
57:19on a local. Um, I'm wondering if there's any way to do that. So that's when you would probably have to set up uh AWS private link or a Cloudflare tunnel to access something that was on your uh like on your infra if it's more so like a local file for example. Um so when we go back to cursor here, you could actually have it access uh like a local plan if that plan is committed to your repo. So skills in your repo, plans in your repo, files in your repo, your automation can can access. But if it's on your machine, it would have to, you know, use private
57:56link or some other uh some other connection. Um, with that said, we do have a really cool tool called Grockbot, um, which is a general knowledge product, but you can use it for coding. Um, I'm doing a workshop on that next Thursday. So, if you're interested, um, that actually has a really great solution for using cloud and local together to work on multiple things on
58:16your machine. Okay, I'll stop sharing now. Thank you guys so much. Um, this was a wonderful session. Thank you. Thank you so much Reagan for curating. Um, I hope everyone learned something new. Um, I hope everyone is able to go and try out Chris or cloud now. Uh, thank you guys so much. It It's always I feel so lucky to be able to do this every day. So, thank
58:41you guys.
No line in this video contains that word.
Where these words come from. This is the caption track YouTube holds for this video, written automatically by YouTube rather than by the creator. We read it, tidied the line breaks and laid it out so it can be read. The plain text version is at https://viewrankai.com/tools/youtube-transcript/hiSkMVXdSfA.txt.
All rights in this video belong to Cursor. Watch it on YouTube. If this is your video and you would rather this page did not exist, tell us and we will remove it.