Cursor 101

Christian Hubbard May 7, 2026 1:00:00 115 transcript lines 29 terms defined Watch on YouTube Source page

Learn how to use Cursor's core features using the same techniques our team uses every day, including the context engine, Agents and Plan Mode, and best practices for large or multi-repo codebases.

Terms in this video

Transcript

Oh, great. Awesome. So, um my name's Christian. I'm a field engineer here at Cursor. And generally what that means is that my job is to educate on the best tips and tricks on how to get the most out of the Cursor platform. Um but also to learn from power users to to help uh businesses and how that they can um implement Cursor across their entire like software life cycle to build automations and and things like this. I also have Tyler with me who's going to help answer questions. Um I believe

we're going to have like a Q&A panel that might be open. Okay, I'm seeing some nods. Um and if he sees any questions um being called out, uh Tyler's going to interrupt and we can have a brief chat about specific questions. I'm stalling for time just a little bit while we let more people join. Um but just in a few brief seconds here, I'll get started.

All right. Okay, so I'm now sharing my screen and you briefly saw my Jira board, but now we should be looking at Cursor 3. Can I get um a thumbs up if that's what we're looking at. Okay, great. Okay, so [clears throat] this is the latest and greatest version of Cursor.

We're calling it Cursor 3. Sometimes we're calling it glass or the agent's window. This is uh slightly different than the traditional IDE that most of us are used to looking at when it comes to writing code um especially in an agentic setting. If you are lost and you want to go back to the IDE, no worries. That's not that hard to do. Uh from an entirely new chat, if uh the Excuse me as I move Zoom here. Um you should on the top right of the window have the option to

um go to your editor window, or you could press file. Excuse me. Or you could press file and go to your new editor window. Switch to agent's window. Okay, so if I press editor window, now we should be looking at the old traditional IDE. I have this one set to dark mode and my agent set to light mode, and that way it's very easy to distinguish between them. This version perhaps many of us are acquainted with. On the right-hand side, we have the ability to chat with the agent. On the bottom, we frequently have a terminal.

Unless you're a crazy person and you have this flipped and you have your file tree on the right-hand side. I'm told some people prefer this. Best of luck to you. Um and then we have our code right here in the middle. And I think this is what we're most familiar with in a traditional setting, and this is um if you're really focused more on the output of the models. So you can chat with different models. You can see the code that they're writing. Uh this is very traditional. Uh we also have access to

cursor tab here. So let's say I wanted to add a new function to this file. We're saying const total target. We can see that it starts to auto complete and I can press tab. It will finish writing everything for us. This is where Cursor made its bread and butter, and it is the the feature that most people uh fell in love with um well over a year ago at this point. Um of what It's like how we started to bring models uh lightweight models into our regular coding

practices. But we've evolved a lot since then. And as the models have gotten better, we needed to focus less and less on the output of the model. And more and more often, we're focused more on the outcome of the model. And through this, uh the the need for managing multiple agents in parallel and being less concerned on the details of what gets output has led us to completely redesign the interface that we know of Cursor from the ground up. And that's what we're calling Cursor 3.

And this is what we're looking at now. So, um this is what it's going to look like when you open a project. On the left-hand side, we have a bunch of different chats that I've previously run. Each of these groups is a different repository, and these span both locally on our computer and in the cloud, which we'll touch on in a bit.

So, here I have a finance dashboard project, which is a lightweight demo project that I like to use for some of my demos. Um I have a couple other projects that I have open, and you can see in those folders I have multiple chats with a given agent. On the right-hand side of the screen, we have a similar uh toggle button here, which will open up our our like sidebar on the right-hand side of the screen. This is comprised of four sort of main elements. If I press the plus icon there, we can get a an overview of what

those might be. We can see our changes, which is where we would see the differences in files changed. We could view our terminal, which is a traditional experience if we're all familiar with as developers. New, we have the browser, which is what we're looking at. This is a fully rendered version of our project, where we can actually take control and interact with this in the same that we would with a Google Chrome instance or Microsoft Edge if there's any people in the chat who use Microsoft Edge or

Arc or some of these other more modern browsers. And this is a full browser. You could actually open entire um URLs here and interact with it and bring that context directly into your cursor chats. Um we also have the ability to look at our file trees. So, this is the specific file tree for this application. And the ability to look at something called a canvas, which we might touch on, but this was a recent ship to Cursor, where we have the ability to generate what we

call canvases, which are visual outputs of certain information. Okay. So, now that we're going back to our browser, so we can see the actual project, let's go ahead and quickly make a small change so we can start to see why cursor is such a great tool to be able to build software quickly.

Now, let's say this overview, I want a little bit more padding between this overview text and these icons here. I could have a very simple directive in my agent window and it will make the changes for me and it will do so via code, but I can see the output I'm sorry, the outcome here in my browser and that's really what the new agents window is is more about. So, let's say um let's increase the padding on our um overview page.

Let's increase the padding of our heading on our overview page. And our model will quickly be able to find the right parts of our code base that correlate to these changes, be able to pull those in uh to our context and selectively make the necessary changes to add additional padding without changing unnecessary files. Now, Cursor is really unique in how it indexes your code base, which gives it like a unique advantage compared to other coding agent to coding tools. So, the minute you add your repository to uh

Cursor, it will index your files in the background and generate embeddings, which are all hashed and stored like your raw code is not stored on Cursor servers, but um the the hashes of these embeddings are and we can quickly uh do a semantic search through these embeddings to understand which files and which parts of files are the most relevant context to supply to the model in order to get the best um I guess outcome from the model.

And if what you're really here for is to understand how to get the best results uh from LLM's if if you work with them. I think it really comes down to two things. Provided that you're using a modern harness like Cursor, um the the two main things are one, which model you're using, and two, what context is supplied to that model. And I would say it might be 60/40 or even 70/30 where the majority is about which model you're using. Uh but there is still strong

minority of what context you supply to that model, which dramatically will affect the quality of the output that you get from that model. Through independent analysis, uh we we've seen that the same model, such as Claude, will perform better in the Cursor harness than it will in uh Claude code or other harnesses. And this is because Cursor is uniquely tuned to get the most out of these models, and we do uniquely tune um our harness based on each model that you select. You can select Claude or you can select

something like OpenAI, or you can select uh Codex, you can select Grok, or excuse me, open-source models, or even Composer 2, which is Cursor's own model that's trained um on writing code specifically. So this stance of model neutrality is incredibly important to us. And if you um were uh exclusively using something like Claude code, you only really have access to the the Claude models where in Cursor, you have access to all of these different models, and that means that

every month when there's a new state-of-the-art model coming out, you always have access to the latest and greatest models, and you can quickly switch between them. So let's talk a little bit about switching between them. So we used Claude Opus 4 7 low for this task that we just kicked off. But if I wanted to change what model I used, it's it's as easy as clicking on that model, and you can see that there's a number of different models available to me. Now, I can click between these to

select a different model that I'd like to use, but if there's more that I'd like to pick from that aren't here, I could just select add models here, and it will quickly take me to my settings, which I could also access through just clicking this gear and then clicking on models.

And now I can see all of the models that are available to my account. And by clicking these toggles on or off, I would enable them in that sort of like quick preview pane that appears in your chat window with your agent. Hey Christian. What's up?

Would you be able to explain a little bit more about how auto works? We have a question in the chat about it. Of course. Um auto is a great tool if you're not quite familiar which model you want to use and you don't really care about it and you want sort of you know, cursor just to pick the best model for you at the at a at a given task. And we have a couple of different preferences that you can select sort of off the bat. Um but it will sort of

default to um based off of your preferences or or what you select, it will sort of like default based off of availability and uptime of of models. Hopefully that makes sense. Cool. So now we've covered different model selection. We've also covered how cursor indexes your code base to uniquely uh give context to these models and how to get the most out of the models themselves. It's a matter of which model you pick and what the context is that's supplied to that model through a mixture of uh semantic search and grepping

through our code base, cursor is really selective about uh really surgical even on what parts of the code base are necessary for the model to have in order to understand what needs to be changed. But uh another really powerful aspect of cursor is the ability to hook up to a marketplace. So, um on the top left-hand side, we have the ability to click into that marketplace, and we can see some integrations that are really popular within my team, such as Slack, Notion,

Atlassian, or Figma. And I also have a number of other uh plugins that are specific to the team that I'm on, such as, you know, like a design workflow or a cursor starter pack that you can create and you can share within other members of on your team should you be on a Teams plan. But most likely, if you're not on a Teams plan, you might be connecting to one of these uh you know, popular uh market first-party integrations. Uh another one I use independently as a solo developer is Supabase or Vercel to

deploy my projects. And by connecting to these integrations, it's going to bring context to these integrations into your chats. So, if I click on the Atlassian plugin, you can see these are the resources that come with that Atlassian plugin. It's a number of skills, which we'll talk about in a little bit, and an MCP. MCP stands for model context protocol.

And what this is is a standardized way for agents to interact with third-party providers, such as Atlassian or Figma, etc. And those companies uh basically are exposing a server that allow agents to take actions on your behalf, provided that they have the correct authentication to do so.

And what that means is that I can come back into the chat that I was working on, and I could say something like um you know, "Please tell me the tickets that I need to complete for this application." And now that I've hooked it up to the Jira plugin for this application, it will be able to go fetch context from our marketplace. It will be able to see the tickets on my Jira board that I need to complete, and it will be able to surface those directly to me in the chat. So, now that we start going beyond

like the the code base itself, we can see how Cursor as an ecosystem is incredibly powerful in the different plugins that it provides to us, and how we can start to work across the entire system. We can imagine, let's say, if our database had errors and we had the Superbase plugin installed, we could just ask Cursor directly here, like, "Hey, please go look at those errors that might be exposed over an MCP."

And it will bring that context directly into our chat. And we'll be able to resolve those errors. What's up? Sorry to interrupt you. Can you talk a little bit more about how authentication is configured with these these plugins and these MCP servers? Yeah, absolutely. It's not super complicated. Um and don't be sorry about interrupting. I welcome the interruptions. Uh gives me a nice break uh to grab a a drink. So, authentication is pretty straightforward. Um I already have it set up, so it's a little bit difficult

to um you know, showcase it again with something like uh Atlassian. But basically, when you click on it, it's just a simple install button. When you press install, it will briefly install and then give you an option to off. Once you press off, it will redirect you to a web page.

Um and on that web page, which if I alt-tab to Chrome, this is like my my Jira window that I have open, and we can see all the same tickets. Um you would just log in here, and then it will redirect you back to Cursor, and then it will open in Cursor, and it will be authenticated. So, it's a it's a really smooth process, provided that you're working with a first-party integration, which we have a a very like robust marketplace of first-party integrations. If you did have something that you wanted to set up that maybe

doesn't have a first-party integration, all of these are sort of built on an open-source standard, and you could uh create your own custom MCP or your own custom skills and rules, and we'll talk about that in a little bit. Uh but just yeah, an important to note that it's very extensible.

So, we have all these tickets here now. Um before we dive into to anyone specifically, um I wanted to highlight the different modes. So, in traditional let's say I'm in uh in traditional engineering, let's say I'm a new engineer that's onboarding under this codebase. I know what tickets I have to do, but I have no idea how any of this stuff works. I haven't even looked at the code. So, normally I'd have to spend a couple hours onboarding and looking through different files, understanding

who on my team is working on different files, how they connect to each other, how state is managed, and things like that. So, for me at least, one of the most important uh features in Cursor is the ability to ask questions without changing code. And we do that by going down to the bottom left, and we can see this plus sign, and uh we hover over it, we have the ability to add skills and MCPs and such, but we also have the ability to switch between different modes in Cursor. And I'm going to switch

into what I call ask mode. Now, ask mode, we're still interacting with the same model, the same large language model, but by changing our mode within Cursor, it changes the tool set that's available to that model. So, in ask mode, we have a smaller subsection of tools that means we're not changing the code. So, if I wanted to say something like um you know, I'm a new engineer onboarding. Please explain how this codebase works.

You could really go back and forth in ask mode with an agent, and really just go back and forth with questions until you get a solid understanding. And in ask mode, the output will always be right here in the chat window. Um it won't change any of the files. So, if you're an engineer at a new company, and you're trying to understand how things work, this is a really safe way to explore the codebase, understand how things are working, and get a good

understanding before you start to dive in and start changing files. When you are ready to start changing files, um you have the ability to like reference files directly in the chat, but I would really really recommend if you take one major thing away from this workshop, it's to take advantage of plan mode. So, let's say for example, we want to start implementing this recurring bill section of our application. And I believe this is one of the Jira tickets that we have.

Yes, right here, FIN-4, we're going to build out our recurring bills page. So, we've pulled context of this um Jira ticket into our chat. But before we start saying, "Hey, go do this, go build it." I think it would be really really smart to build out a plan. The same way that before you go to the grocery store, before you go to the gym, you're going to build a plan on exactly what you need to do, and that way you don't get distracted and do unnecessary

things. Your time is really um well accounted for. You sort of in your out, and you do a great job. So, I'm going to switch models. I'm going to switch to Claude Opus um 4-7. Maybe I'll do something different today. Maybe we'll do GPT-5. No, we'll stick with 4-7.

Okay, so I'm just switching the model to a state-of-the-art reasoning model. And what this means is that these models are more trained for general knowledge work. They spend more time thinking and reasoning about what they're being asked to do, and they're really good at generating things like plans or conversing. So, they're good at ask mode, they're good at plan mode. I'm going to switch into plan mode. And I'm going to say, "I'd like to implement FIN-4.

Uh please maintain design consistency across our other pages. I'm actually at my Figma MCP limit for the day, so I can't show the Figma MCP, but you could also, if you uh you know, have a Figma account connected, you could pull the design straight from Figma as well. Um but we'll we will instead just say maintain design consistency across our other pages and adhere to accessibility guidelines.

And what this is going to do is build a plan for how it's going to implement this Jira ticket that has some more specific context uh in the ticket itself. And then it's also going to make sure that it's adhering to the the guidelines that I've given it.

Okay. So, now that we're building out a plan mode, you'll find that it sometimes will ask you questions, which is great. So, it's asking us, "How should the recurring bills page be laid out?" Uh we have the option for a single column or a summary panel or summary cards. Let's just pick the first one.

"Should the bills list support search and sort like the transaction ticket calls for or should it stay simpler?" Sure. Let's have more features. So, you can start to see like as we're building out a plan here, um it's going to ask us questions and you have the ability to offer your input as well.

So, we're still creating this plan. When it does output the plan, the plan is going to be a simple markdown file. So, if you want to make more changes to the plan, not only do you have the ability to converse with the AI directly, but you could also edit the plan uh yourself just in our markdown editor.

Looks like we're still waiting. There it goes. Okay, great. So, uh now we have a plan built out for building this recurring bills page. Excuse me. Um it is a fairly like robust plan with a lot of information in it. Again, you could edit this plan directly if you wanted to or go back and forth with the agent. Once you are ready to build, I recommend switching to a different coding model. We used Claude Opus, which again is a state-of-the-art model that's great at knowledge work and thinking,

but it can get outperformed on specific tasks by models that are trained for those specific tasks. One example of this is that we've trained Composer 2, which is a model that's specifically built for writing high-quality code. So, over here on the top right, I can see that I have Composer 2 fast.

Selected fast just means it goes faster, which is great. Usually, it's a bit more expensive. Um but I'm going to use Composer 2 fast and build out this plan, and it's going to take all of the to-dos that were outputted by this plan, and it's going to execute them using the Composer 2 model that we're selecting.

And again, if you take really only one thing away from this entire workshop, it's how much your uh outputs could be enhanced by simply making a plan first uh for how you want to tackle uh implementing a given feature, and then using a specific model for coding to build out that feature.

I don't know if we have any questions in the chat. I feel like we've covered a lot so far in terms of different modes. Maybe while this is going, I can cover uh the last Well, not the last, but one of the last few modes, which would be debug mode. Actually, uh Christian, there's a couple questions I've been seriously typing away, but there's a few that would be better to maybe show. Of course. >> Um a simple one, can you pin the terminal at the bottom of the browser window? Can you always have the terminal

open like while you have the browser open as well? I actually saw this request coming in recently. I think it might be possible. Um So not below our agents. Hm. I have seen this request. I I don't I don't know. If it doesn't exist, it is definitely a feature request I've seen internally on our Slack and it might be something that we're working on.

Um So maybe soon. If if it's possible, I'm not directly sure how to do it. Gotcha. Um another question. What happens if I already have an MCP server from before the marketplace? Uh this user already had the Atlassian MCP. Mhm. If they add it from the marketplace, will they have two of the same MCP? They shouldn't. I mean, if you have it set up as a custom MCP, it will be registered differently um cuz this is a custom one that you've inputted versus the official one that's coming from

Atlassian. But let's say for example, if you were to install it through the Cursor dashboard online, um it should really just sync across your profiles. Gotcha. Uh one more or well, there's plenty more, but I'll I'll I'll hit you with one more for now. >> No, we got time. Um the user's asking about BYOK. Yeah. They currently use Anthropic through Google's Cloud Vertex um AI pipeline at their current company.

Um I know we support BYOK with AWS Bedrock. Uh do we support Google Cloud Vertex as well? It's a great question. I would imagine that BYOK generally works the same. The truth is, I'm not 100% sure. I would have to do research. But also, BYOK is a generally like less um ideal of an experience compared to going through Cursor directly. While we do offer the ability to bring your own key, um the Cursor experience directly uh accessing the models is a lot faster and it's a lot smoother of of an

experience if that makes sense. So you'll get much better results not using an external key. Awesome. Thank you. Of course. Let's see. Let me see if I can find one more one more good one to hit you with. Um Why does it work better when you plan first and then code with the or like execute on that plan with the specific fast model?

Yeah, it's not fast model exclusive. The fast model just goes faster and for the sake of a demo I love using it. Um or maybe I'm just impatient but um Why does it go better? I think it's very similar, you know, we talked about context window earlier like a context management and how it's very similar to humans where there's really only so much attention that we have that we're able to process. I believe we talked about this. Tyler, correct me if I'm wrong. I've done a few of these today but we

talked about like context window management. Uh yes, if you want to show a little bit more I don't know that you clicked on the indicator yet to show them like the makeup of the context window. >> but I was just about to get there, yeah. Um So the the the question is why does it work better?

The truth is because there's only so much context attention available for each model and by managing the amount of attention given to one to planning and then breaking that attention off to more specific models, they're able to like leverage their context window more advantageously to accomplish their given task. And the context window is represented down here in the bottom right hand corner. You can see that we're at 36% full on this context. If I click in it that we actually just

shipped this recently, you can see what makes up that context. So a very small amount to system prompt and a lot more to the conversation here. So, as the chat goes longer and longer, the context window is going to fold and the majority of that is going to be from the conversation itself.

I would recommend that once you get past 50%, you should start thinking about breaking up a new uh a new agent, uh a new context window. And um certainly, you don't have to even wait that long if you have any sort of logically new feature, it's best to start fresh. Um and you always have the ability to reference old chats in your new chat. So, here if I wanted to start a new chat and I wanted to bring in some of the context from my previous chat, I can

just use the at symbol. And here, using the at symbol, I can bring in specific agents. I could bring in specific files and folders. If I didn't rely want to rely on my context uh you know, that's generated by my code base directly, I could bring up um past chats and I believe the previous one was like started with header padding. So, we'll start there and that has all the uh context on our different uh tickets that we were that we were performing. And maybe we we want to change the sidebar here. So, as we

scroll down, we want it to remain sticky. So, uh let's update the sidebar to be sticky and the icons should stay in place as I scroll the page. So, this is a way where we're starting a fresh chat, which will have a brand new context window, but we're still able to compact basically the learnings from our previous chat into this chat and um we'll still get like the key information while maintaining a much smaller context window. This will happen automatically

if your chat fills up and you will won't even need to create a new chat. So, if you have super long-running chats, let's say you're running a cloud agent and this is going to be a migration from like Python to JavaScript. Um it might fill up the context window once or twice, but uh Cursor will generally do a good job of understanding that the context window is full or near full, compacting the key learnings from that chat, and initializing a new agent to

resume the same task. And look, um you know, simple prompt, and we've got like a new sidebar here. Um another feature I'd love to highlight, I'm not sure if we touched on design mode earlier, we probably did, but we can quickly make changes here. I think this total upcoming and due soon are kind of hard to read. So, it's as simple as like coming in and selecting this palette and saying, "Some of this text is hard to read. Please make sure we're adhering to proper contrast

ratios." Okay, we've covered generally like context management best practices, um selecting different models, um some lightweight feature work, and integrating into different um marketplace plugins. One last thing I really want to touch on before we start to wrap up, and we'll have plenty of time for questions, is the other parts that would come in through a plugin. We've talked about MCPs and how they allow us to integrate with other uh applications like uh Jira and Figma, etc.

But when you pull in one of those plugins, you also pull in skills, which I classified earlier as basically like power-ups for your application. Skills um and rules are two elements that really enable you to get the most out of Cursor as you continue to use it. Um a rule I like to think of as is more of a a what, and a skill is more of a how. So, a rule for this application might be the way that I um want to write my Git commits. Or it might be that all uh new

features need to be 100% testing coverage before they're they're finished. Um whereas a skill is more of a how. A skill, if you were to onboard a friend or new engineer onto this project and you had certain checklists on, let's say in order to add a new page here, it should have certain elements. It should always have a header. It should always have key information. This is a a skill that you might build for like new feature addition.

Or let's say rule might be in this application we are using Tailwind for our styling, but the skill might be how we use Tailwind with our design system to adhere to best style best practices across pages and things like that. And when we build those skills, so we can import those skills directly from the marketplace if we were to pull in the Atlassian plugin, it comes with a couple different skills out of the box for how it can best interact with our application.

But if we wanted to build our own skills, we can do so using commands directly in our agent window. So by pressing {slash} we have a number of commands available to us such as create rule, create sub agent, create skill. And let's say I wanted to create a rule that said like um please make sure we're always using Tailwind when writing new components, pages, uh new features for this application.

And Christian, this might be a good time to answer this question. Sure. Can how do we specify or enforce that Cursor uses specific skills or rules? It's great. You're one step ahead of me. I'll show you in just a second. Cool. Thank you. Of course. Um but to answer directly, rules are always going to be enforced for the most part. Um, and skills are selectively enforced. And this is kind of the um another like main distinction between them. So, Cursor is telling me it's created a

cursor rules folder where we are going to use Tailwind for styling. Um in our We're going to create another rule here. Let's say in our React components please make sure to always have type definitions at the top of the file. Okay, so we'll let that run in the background. So, now we've created a rule for this project that we're always going to be using Tailwind. Um, this rule is just a markdown file and it's actually a unique markdown file. It's called an MDC

file. It stands for markdown cursor file. And the cursor part is just these additional couple lines at the top which have a a name and a description and whether or not it's always applied. So, for rules, we have the description. So, the description of this rule is that we're going to be using Tailwind CSS for all styling in new features and it is set to always apply. And this is a drop-down that we can change directly in the cursor window where we want to

apply, always apply intelligently, or apply to specific file, or only apply when it's mentioned. We can uh have this be very selective and only we want to bring it in directly. If you're finding that rules aren't being applied, it's most likely that it is set to this imply intelligently uh setting. This is an older setting and we actually suggest if you have anything set to apply intelligently, we would encourage you to migrate these to skills. I believe that there is a uh public skill that's like native to

Cursor that uh is like convert rule to skill and it will convert these apply intelligently rules to skills because skills are supposed to be applied intelligently, whereas rules are either always applied or applied to specific files. So, for example, this use Tailwind for styling.

This is going to be true for all of the files that we write. Whereas this other rule that we've just created, ah, see, it was very smart. It did what I wanted to before. I didn't even have to specify. I wanted to show the difference between a rule that was always applied and a rule that was only applied to specific files. And it understood that these only apply to my .tsx files, which are my React components. And that this is a rule that we want it to always be

true. It is a what? But we want it to only be scoped to specific rules. So, that means this is not going to be bloating our context window unless the files that we're touching explicitly include one of our React components, in which case it will pull this in, but only if the name on the file matches um this type of file. So, we have it set to apply to specific files, and it's this matching. And we have a description here. So, hopefully that makes sense on when

rules are always applied or when they are selectively applied. So, we've covered rules, and now we have something called skills. So, um I have some tests written for this application. I'm actually going to delete this cuz I've already generated it once before. But let's say we want to create some skills uh as well. So, something I've done before is I've written some tests, but we're going to showcase the canvas element here. So, we're going to say,

"Please uh use the canvas to build a testing report for this application." Canvas is a feature we shipped relatively recently, and what it allows Cursor to do is render uh components within the Cursor, I don't want to say browser cuz it's not technically a browser, but within the Cursor application um that isn't markdown [clears throat] or mermaid charts. It's a little bit more visually feeling than than either of those, to be honest.

But we are going to generate a testing report and then we're going to try to distill this into a skill. Hey Christian, two questions for you. One just is a logistics question. This is being recorded. Do we release these recordings afterwards to anywhere that people can access? Yeah, I believe they're publicly available on the cursor website. I believe it's cursor.com/workshops, but I could be mistaken. Perfect, thank you. And then another question we've gotten quite a few about context management. Great. Is there a

good sort of ratio for your context window in terms of how much of it's being taken up by rules and skills compared to the conversation history? Is there any like best practice there? Best practice I would say is like generally you should see that the majority is taken up by conversation.

If you're seeing a significant amount being taken up by MCP, I might audit the number of integrations you have in the marketplace. Um and make sure that they're all really needed. Generally we do a good job of optimizing to make sure that we're not pulling in tools into chats that aren't directly referenced. Excuse me, but if you are seeing that your context window is like 50% full before you even start sending chats, I would go in and make sure that you don't

have 30 different uh plugins installed. That's great, thank you. Um one other question about rules. Sure. Is there any way to audit that like rules are being obeyed and followed? It's a great question. I believe you would need to install a hook. Hooks aren't something we've talked about. They're a little bit more of an advanced use case. They would be installed in the cursor directory. Let's see, I want Um file, not a new file, but when I to to my cursor directory and inside the cursor directory, you can

see that we have folders for agents, rules, skills. You would also have a folder for hooks. And the settings JSON would determine when hooks get fired. Hooks uh hook into the life cycle events of cursor of when you're chatting with the agents. Uh these life cycle events can be things like before MCP accessed or before file uh deleted or things like this. And I think there's about nine different life cycle hooks.

Um but I would um build a hook of like before prompt executes or something and you might be able to log uh what rules are being included at that point in time if this isn't something that we natively surface in the dashboard. Um if it is, I I wouldn't be shocked either if this is something that we either service natively in our dashboard in the analytics pane or maybe this is something we could add soon here we can say exactly like what rules are being

included here in context. Thank you. Of course. So, uh we were able to see that the canvas report was generated. And here is what that looks like. So, again, a little bit nicer than a traditional mermaid diagram or just like a markdown file of what our tests look like. Um and if we wanted to turn this coverage report into a skill, um I might use the slash command the same as I create a rule. Let's say let's create a new skill.

And this skill is going to be like uh you are an expert testing agent. Whenever we build new features, I want the testing agent I want to say I want you to uh regenerate our uh testing coverage report. So, you can see a skill is a little bit more of like a process, a workflow. So, if if you're an engineering team, you're working together with your friends, or you're just uh, let's see, where should the skill be stored? Great question.

This is going to be in our project level, and how should we We're going to overwrite the existing canvas, and should the skill When should the skill auto run? After any feature work that touches components, only when I explicitly ask, or whenever tests or adjacent source files change. Mm, likely we only need this to run whenever um, actually, I guess even if new components are built, if we don't have tests for them, we want to see those, too. So,

we'll go with option A. And press continue. Uh, skills are are really, really great at um, starting to customize Cursor to get the most out of it. Um, and being able to create those skills natively with Cursor is super, super convenient, and you can start to see how skills are a little bit more workflow oriented than like a general rule of like, do this, don't do that. A skill is more of, hey, here's a process that we're going to codify, and that might be something like, a rule is that we're going to use Tailwind, and

the skill is, hey, here's our design system. How else Here's how we're going to apply it to our UI components, etc. Hey Christian, question about skills. Is there any difference between adding a skill within Cursor, or just having a skill.md file that the model reads, like within the repo?

There is not. When you add it via Cursor, it is adding it to the repo. There are also uh, skills that are local to you as a user. So, in your home directory on your computer, you'll also have a Cursor file, uh, a Cursor folder, excuse me. And in that Cursor folder, you'll be able to add skills, um, and those are unique to let's say I wanted a seal that's unique to me that's how my files are laid out on my computer, how I want get commands, how I want files

saved like naming things like that that are unique to me that maybe I don't want committed to the project specifically. But in the project specifically you'll be able to see that the skills are usually checked in here. And I actually have a skill specifically for which Jira board I'm connecting to because I have Jira boards for each project that I work with and I want to make sure that this one is always using this you know the finance Jira board. And now we have a new skill here that

again skills and rules both operate to this system of progressive disclosure. Actually I think it's just skills rules are kind of always on but depends on the glob matching. So here we have a description. And if you're finding that a skill is not correctly included in the context, it's usually because the description needs to be more accurate for the agent to be able to pull it in.

And then it's going to have more information in the skill on that will be selectively pulled into the context window on how to to to execute this process. Hey Carson, one more question. Of course. Unrelated to skills but I think this is an interesting one.

Can you run BugBot within cursor and not just from PR's automatically? This is actually a great question and I believe the answer is yes. Though it might be in the editor window. Yes, let's see if I can find that in my I might still want cursor. Yeah, I don't know if there's like a {slash} BugBot command we can use or if you just use debug mode if that would you know Debug mode is a little bit different.

It's not quite the same as BugBot. If you're using Cursor 3, which is what we we see as like the the evolution of of software and what we encourage everyone to be using, um I I don't I don't think that there's a way to trigger it directly in this browser, although that's something that I a feature request I could definitely take to our team.

But in our editor window, I have seen this before. in Man, I have gotten stumped by this exact question. You do have the ability to kick off um an additional code review in your editor window, although the the changes might have to come from your editor window.

I have It's like a very specific condition that uh generates a button like right here where you can kick off uh additional code review. But you can always just ask your your your agent itself, right? Um or you can even build a This is like a great example of like building your own little mini BugBot as a skill where we could create a like let's create a skill and we could say um you are an expert code reviewer. Every time we um Well, maybe not every time. We might

have to invoke this directly, but please like audit our code for, you know, specific things X, Y, and Z. And then we would have this this skill that runs um basically anytime we're committing new features that will go in and audit our code for us.

But lastly, I I do want to touch about like just committing code. So here in the latest uh version of Glass uh in file review, that's the furthest left option on this sidebar. We have the option of looking over our our local changes. So we can see these are all the changes that we've made throughout our session today. And we can go in and select specific files that we want to stage. We can select all the files at once.

Um we don't have to select them at all if we just want to directly commit and push them. We can create a new branch and commit and push. This is what I would advise most commonly. Once we do push these changes up to GitHub, if we are all familiar with uh with GitHub, it will create a pull request on our behalf. And here I have a finance uh dashboard where I have created basically a new feature directly through Cursor. I actually built this one through a cloud agent, which is a uh we talked about like where you can

kick off agents in the Cursor uh gla- on the Cursor agent window. These can be running locally or they can be in a cloud agent. And in a cloud agent, what that means is basically you can close Cursor, you can close your laptop. It's not running on your laptop.

Instead, it is running in the cloud. Um and you don't have to like sit here and and monitor it. So, I can come in and see like this is what it looks like in the cloud. And once it's done running, it is connected to your GitHub. It can open pull requests on your behalf. And on my other pull request, I believe I have uh BugBot turned on and set to review. So, I have it set up so that BugBot only runs when I explicitly ask it to run because I push a lot of comments one at

a time. And then when I'm done, now I'm ready for BugBot to come in and review. So, I say, "Hey BugBot, please run." And BugBot will come in and look for errors in my application. Um BugBot has a lot of different settings that you can change from your Cursor dashboard.

But um my settings are kind of specifically that I'm going to trigger it once per PR, and it's usually manually triggered. So, here on this PR, I have it uh set to manually trigger it because it's a a draft PR. And it actually found a problem in the package lock for this, which is great. So, BugBot, super super convenient. I believe there's a free trial available. If anyone wants to experiment and yeah, I'd love to know in the group how we're using BugBot. And

and that's generally going to wrap us up today. We've covered a lot, everything from starting in the old editor window with cursor tab to covering the new agents window, kicking off parallel agents, context window management, rules, skills, marketplace, design mode, all the way up to pushing code to GitHub and having it reviewed with an agent.

So, Tyler, I don't know if we have any last-minute questions and we want to do a little mini Q&A here and then we can wrap things up. Yeah, I just see two more in the Q&A. One is can we run multi-repo in the cloud? Uh this one's a little bit more complicated because unless it's a mono repo, the cloud environments are kind of built to be isolated containers. And I could be wrong here, but from what I understand, it's going to be sort of like one repo

per environment and it would communicate across from them through traditional ways. Let's say you have a back-end and a front-end different repo, it would use API requests to to connect to a different back-end. But to do so in the editor window, if you're using the older version of cursor, you can open two distinct projects and you actually can ask agents to make changes across the project and reference changes across the project.

It's just you go to file and then add folder to workspace. And instead of this being in a mono repo, these are two separate folders and the agent can span across both. So, that's sort of like one one trick to get around it. Thanks. One more question in the chat. Do you get a lot of extra mileage out of BugBot with rules and MCPs? Any tips and best practices you recommend?

Um I don't think you get access to rules and MCPs via BugBot. Although, I have heard I think that's something they're working on. I know that we also have a separate security tool um and BugBot also has different levels of like how how scrutinizing you would like it to be that you can change in your settings.

Um, but sorry I don't have a better answer there. Got you. Um And then one more follow-up on the multi-repo question. Multi-repo dependencies would require more than one repo to run the app. So, not sure if that trick would would work. I'm sure, yeah. Yeah, I'm not sure either about that one. But yeah, that's all the the questions and oh, just kidding, one more.

Um, when Cursor creates rules and skills, does it consider vulnerability prevention? I would imagine that it has some like built-in um like there's a prompt that we baked in to creating rules and skills. But if it's something you're concerned about, I would also like include that in how you want the skill and and rule to be created. Yeah, and also take a look at our Cursor security review. Definitely. Um, our our most recent release uh or almost most

recent. Um, yeah, look into Cursor security review and that can also help find uh vulnerabilities as well. Sweet. Okay, I want to thank everybody for attending today. Um, I kind of like we had a lot of great uh questions in our chat and a lot of engagement. So, I really appreciate everyone taking the time to come. Uh it was awesome being able to present to you um and thank you so much.

Hope everyone has a great day. Until next time. Thanks, everyone. Bye. Bye.