Your AI Agent Says It's Done. Now What? Codex + JetBrains Air in Rider | .NET Day 2026
Read full transcript 18 segments
-
Hello everyone, welcome Hello everyone, welcome to our .NET Day. to our .NET Day. to our .NET Day. Let me show you something Let me show you something Let me show you something . If you . If you . If you were at our booths were at our booths were at our booths at conferences, you at conferences, you at conferences, you could see it. C# for could see it. C# for could see it. C# for babies. These are babies. These are babies. These are alphabet cards with alphabet cards with alphabet cards with C# terms. And the letter C# terms. And the letter C# terms. And the letter "A" is "abstraction." "A" is "abstraction." We created them before We created them before AI became ubiquitous AI became ubiquitous . And honestly, if . And honestly, if . And honestly, if we were printing them we were printing them we were printing them today, I'm not today, I'm not today, I'm not sure the "A" would be an sure the "A" would be an sure the "A" would be an "abstraction." "abstraction." "abstraction." "A" would be "artificial "A" would be "artificial "A" would be "artificial intelligence." Because intelligence." Because intelligence." Because a lot a lot a lot has changed in a very has changed in a very has changed in a very short time. short time. short time. Most of us Most of us Most of us no longer just ask AI no longer just ask AI no longer just ask AI to finish a line of code. to finish a line of code. to finish a line of code. We assign an agent a We assign an agent a We assign an agent a whole task. Add whole task. Add whole task. Add this endpoint, migrate the this endpoint, migrate the this endpoint, migrate the service, fix this service, fix this service, fix this bug—and it gets bug—and it gets bug—and it gets to work, does it, to work, does it, to work, does it, and comes back with and comes back with and comes back with real changes to the real changes to the real changes to the code. This is very useful code. This is very useful code. This is very useful and it is quickly becoming the and it is quickly becoming the and it is quickly becoming the normal way of normal way of normal way of working. But here's the working. But here's the working. But here's the thing. The agent passes on thing. The agent passes on thing. The agent passes on the changes to you, but does not the changes to you, but does not the changes to you, but does not pass on pass on pass on the responsibility. the responsibility. the responsibility. If something breaks in If something breaks in If something breaks in production, it's not production, it's not production, it's not the agent who gets called at the agent who gets called at the agent who gets called at three in the morning.
-
three in the morning. So we still So we still need to understand what need to understand what need to understand what has changed and how it has changed and how it has changed and how it fits into the rest of the fits into the rest of the fits into the rest of the application. We are still application. We are still application. We are still testing, testing, testing, debugging, and debugging, and debugging, and deciding if deciding if deciding if we are ready to release it. we are ready to release it. we are ready to release it. Writing code has become Writing code has become Writing code has become much cheaper, much cheaper, much cheaper, but supporting the work has but supporting the work has not. And this means that not. And this means that not. And this means that our tools our tools our tools must also change. So must also change. So , let's get back to my , let's get back to my , let's get back to my cards. "A" is for " cards. "A" is for " artificial intelligence." artificial intelligence." But at JetBrains, “A” is But at JetBrains, “A” is also Air. JetBrains Air is also Air. JetBrains Air is also Air. JetBrains Air is our answer to everything our answer to everything I just described. I just described. I just described. Simply put, Simply put, Simply put, Air is the only system Air is the only system Air is the only system for building software for building software for building software using agents. And using agents. And using agents. And it looks a little it looks a little it looks a little different depending on different depending on different depending on who you are. If you are a who you are. If you are a who you are. If you are a developer, Air is available in developer, Air is available in developer, Air is available in our IDEs. You our IDEs. You our IDEs. You run agents run agents run agents where your code resides where your code resides , monitor their , monitor their , monitor their actions, and verify actions, and verify actions, and verify every change in every change in every change in the context of the context of the context of the tools you already the tools you already the tools you already use. If use. If use. If you are a team, there are Air Teams.
-
you are a team, there are Air Teams. you are a team, there are Air Teams. Collaborative projects, Collaborative projects, Collaborative projects, cloud environments, and a cloud environments, and a cloud environments, and a way to delegate way to delegate way to delegate routine tasks. And routine tasks. And routine tasks. And if you are the person who if you are the person who if you are the person who has to answer, who has to answer, who uses what AI and uses what AI and how much does it cost? Well how much does it cost? Well how much does it cost? Well , that's what Air Governance is for , that's what Air Governance is for . Access, . Access, . Access, usage, and usage, and usage, and cost policies—all in one cost policies—all in one cost policies—all in one place. Different problems place. Different problems , but the same , but the same , but the same idea at the core. And there is idea at the core. And there is idea at the core. And there is one more thing that is one more thing that is one more thing that is very important to us. Air is an very important to us. Air is an open system. You open system. You open system. You shouldn't choose a shouldn't choose a shouldn't choose a development environment development environment development environment based on based on based on what AI you're what AI you're what AI you're using using using today. The best today. The best today. The best agent today may agent today may agent today may not be the same in 6 not be the same in 6 not be the same in 6 months. You can months. You can months. You can use any use any of them. of them. of them. Use Use Use the agent you already the agent you already the agent you already have and the subscription have and the subscription have and the subscription you or your you or your you or your company already pays for. company already pays for. company already pays for. This brings me to a This brings me to a This brings me to a question I get asked all question I get asked all question I get asked all the time. the time. If the code is written by an agent, If the code is written by an agent, why do I still why do I still why do I still need an IDE? need an IDE? need an IDE? Honestly, I think it's just the Honestly, I think it's just the Honestly, I think it's just the opposite. opposite. opposite. The agent makes the IDE The agent makes the IDE The agent makes the IDE more important, not less more important, not less more important, not less important. A quick important. A quick important. A quick example. Let's say an example. Let's say an example. Let's say an agent changes the way agent changes the way product prices are cached in my product prices are cached in my ASP.NET application.
-
ASP.NET application. ASP.NET application. The tests were The tests were The tests were successful, the changes successful, the changes successful, the changes look clean— look clean— you can send them to you can send them to you can send them to release. But what clears release. But what clears release. But what clears this cache when the price this cache when the price this cache when the price changes? Who else changes? Who else changes? Who else reads data from there? reads data from there? reads data from there? What happens if What happens if What happens if two requests come in two requests come in two requests come in at the same time? None of at the same time? None of at the same time? None of this is on the this is on the this is on the changelog, right? It's in changelog, right? It's in changelog, right? It's in the rest of your the rest of your the rest of your codebase and how the codebase and how the codebase and how the application actually application actually application actually behaves when behaves when behaves when running. And that's exactly what the running. And that's exactly what the running. And that's exactly what the IDE knows. Not just text. IDE knows. Not just text. IDE knows. Not just text. Types, symbols, Types, symbols, Types, symbols, dependencies, every dependencies, every dependencies, every use, the use, the use, the structure of the entire structure of the entire structure of the entire project, plus project, plus project, plus the tools around the tools around the tools around it. Navigation, it. Navigation, it. Navigation, inspections, inspections, inspections, refactoring, tests, refactoring, tests, refactoring, tests, debugger, profiler. debugger, profiler. So when I'm reviewing an So when I'm reviewing an agent's work, I want to agent's work, I want to agent's work, I want to have all of this at my fingertips. have all of this at my fingertips. And here's the part that And here's the part that really excites me: really excites me: really excites me: this knowledge shouldn't this knowledge shouldn't this knowledge shouldn't just belong to me. just belong to me. We can also provide them to We can also provide them to agents. Instead of agents. Instead of going through going through going through files and guessing, the agent files and guessing, the agent files and guessing, the agent can ask the IDE: " can ask the IDE: " Who actually Who actually Who actually calls this method?" " calls this method?" " calls this method?" " What does this What does this What does this type expand into?" And it type expand into?" And it type expand into?" And it can even run a can even run a can even run a profiler and profiler and profiler and view data in view data in view data in real time.
-
real time. Hard facts instead of Hard facts instead of blind guesses. So blind guesses. So blind guesses. So no, we are not looking to no, we are not looking to no, we are not looking to replace developers with replace developers with replace developers with agents. We want to agents. We want to agents. We want to give you the best give you the best give you the best way to manage and way to manage and way to manage and verify verify verify agent actions. And provide agent actions. And provide agent actions. And provide agents with the best agents with the best agents with the best tools to tools to tools to perform their perform their perform their work efficiently. So what does this work efficiently. So what does this work efficiently. So what does this mean for .NET mean for .NET developers? We could developers? We could developers? We could spend the next spend the next spend the next 20 minutes talking 20 minutes talking 20 minutes talking about the future. But we about the future. But we about the future. But we prefer to show you prefer to show you prefer to show you what it looks like what it looks like what it looks like now. First, we'll now. First, we'll now. First, we'll show the AI show the AI show the AI inside Rider. We inside Rider. We inside Rider. We will choose an agent, give will choose an agent, give will choose an agent, give him a real him a real him a real task, and then task, and then task, and then move on to the move on to the move on to the most important thing. What most important thing. What most important thing. What to do when the agent to do when the agent to do when the agent says, "Done"? How says, "Done"? How says, "Done"? How do I check this work do I check this work do I check this work in Rider and what to do if in Rider and what to do if in Rider and what to do if it needs to be it needs to be it needs to be revised? Then revised? Then revised? Then we'll go even further and we'll go even further and we'll go even further and show how the agent show how the agent show how the agent itself uses itself uses itself uses one of our one of our development tools. In this development tools. In this case, the case, the case, the dotTrace profiler. And finally, we dotTrace profiler. And finally, we dotTrace profiler. And finally, we will show that this will show that this will show that this story is not just about story is not just about story is not just about Rider. Not everyone works at Rider. Not everyone works at Rider. Not everyone works at Rider, and that's perfectly Rider, and that's perfectly Rider, and that's perfectly fine. Our fine. Our fine. Our .NET intelligence can .NET intelligence can .NET intelligence can accompany you in the accompany you in the accompany you in the editor of your editor of your editor of your choice. OK.
-
choice. OK. choice. OK. Let's begin. Matt, Let's begin. Matt, Let's begin. Matt, I'll give you the floor. I'll give you the floor. Thank you, Anastasia. Thank you, Anastasia. Okay, let's Okay, let's Okay, let's see what this see what this see what this means in practice. means in practice. means in practice. Let me show Let me show Let me show you the AI in Rider. I have a you the AI in Rider. I have a you the AI in Rider. I have a pretty pretty pretty standard standard standard .NET project here. This is an example of an .NET project here. This is an example of an .NET project here. This is an example of an eShop application, and I eShop application, and I eShop application, and I will instruct my agent will instruct my agent will instruct my agent to add a new feature. to add a new feature. to add a new feature. So, the first thing you'll So, the first thing you'll So, the first thing you'll notice is the notice is the notice is the standard standard standard entry point for working with entry point for working with entry point for working with agents in your agents in your agents in your project. Instead of project. Instead of squeezing the chat into the squeezing the chat into the squeezing the chat into the toolbox, toolbox, toolbox, it now it now it now appears as a appears as a appears as a background screen, background screen, background screen, ready to work on, ready to work on, ready to work on, as long as you don't have as long as you don't have as long as you don't have any any any editors open. Here you editors open. Here you editors open. Here you can choose the can choose the can choose the agent you want agent you want agent you want to use, and this is an to use, and this is an to use, and this is an important point important point important point as it as it as it allows you to connect allows you to connect allows you to connect your own agent to your own agent to your own agent to Rider, and we will look at Rider, and we will look at Rider, and we will look at this in more detail this in more detail this in more detail shortly. I will choose Codex shortly. I will choose Codex shortly. I will choose Codex for this task. I for this task. I for this task. I will decide which model I will decide which model I will decide which model I want to use. I want to use. I want to use. I can check my can check my can check my effort level and, if effort level and, if effort level and, if desired, turn on desired, turn on desired, turn on planning mode. planning mode. Now I'll paste my Now I'll paste my query here and ask the query here and ask the query here and ask the agent to create a new agent to create a new agent to create a new endpoint with endpoint with endpoint with tests to tests to tests to return a list of return a list of return a list of items that are out of items that are out of items that are out of stock. I could stock. I could stock. I could add more add more add more context if I wanted context if I wanted , as well as attachments, , as well as attachments, , as well as attachments, but I think we're good but I think we're good but I think we're good to go. So just to go. So just to go. So just click " click " send". Another send". Another send". Another change you'll change you'll change you'll see: the see: the see: the agent session starts agent session starts agent session starts in an editor tab in an editor tab in an editor tab instead of a instead of a instead of a tool window, giving you tool window, giving you tool window, giving you plenty of room to plenty of room to plenty of room to interact with the plan, interact with the plan, interact with the plan, agent questions, and agent questions, and agent questions, and other content.
-
other content. other content. Now, while the agent Now, while the agent Now, while the agent is running, let's is running, let's is running, let's take a look at the agent take a look at the agent take a look at the agent session tools window session tools window session tools window . This is the main . This is the main . This is the main dashboard for dashboard for dashboard for tracking tracking tracking agent activity. agent activity. agent activity. It contains a list of It contains a list of It contains a list of all the sessions all the sessions all the sessions your agents are working on, inside your agents are working on, inside your agents are working on, inside or or or outside the IDE, both in outside the IDE, both in outside the IDE, both in graphical chat and graphical chat and graphical chat and in the terminal. in the terminal. in the terminal. There is a handy indicator at the top There is a handy indicator at the top There is a handy indicator at the top showing how many showing how many showing how many sessions are currently sessions are currently sessions are currently running, running, running, waiting for waiting for waiting for data entry, or data entry, or data entry, or have just ended. You have just ended. You have just ended. You can also filter the can also filter the can also filter the visible sessions, as well as visible sessions, as well as visible sessions, as well as choose what choose what choose what information information information is displayed for is displayed for is displayed for each one. each one. each one. Last update time Last update time , changes that occurred , changes that occurred , changes that occurred within the session, within the session, within the session, sub-agents launched, sub-agents launched, sub-agents launched, and cost. This is and cost. This is and cost. This is very useful for very useful for very useful for tracking tracking tracking token usage token usage token usage and choosing the models and and choosing the models and and choosing the models and agents you agents you agents you want to want to want to use. use. use. After all, quite a few sessions After all, quite a few sessions After all, quite a few sessions can easily accumulate in this window can easily accumulate in this window . So one . So one nice feature nice feature is to pin important is to pin important is to pin important sessions to the top, and this will sessions to the top, and this will sessions to the top, and this will also conveniently also conveniently also conveniently pin the corresponding pin the corresponding session editor tab. I session editor tab. I like to like to like to do this to do this to do this to focus on the focus on the focus on the task at hand.
-
task at hand. task at hand. You can also You can also You can also mark a session as mark a session as mark a session as complete, complete, complete, such as in such as in such as in the case of these the case of these the case of these missing tests, missing tests, missing tests, by clicking the check mark. by clicking the check mark. by clicking the check mark. The task is now The task is now The task is now archived, and you have more archived, and you have more archived, and you have more free space to free space to free space to work with. If you work with. If you work with. If you want to get want to get want to get it back, you it back, you it back, you can always change the can always change the can always change the filter settings filter settings to show everything. to show everything. to show everything. And then we can And then we can And then we can right-click right-click right-click on the on the on the previous session previous session previous session and select "open and select "open and select "open again". And now I again". And now I again". And now I have a session that I can have a session that I can have a session that I can reopen and reopen and reopen and continue continue continue working. There working. There working. There is also a button to create a is also a button to create a is also a button to create a new session. So I new session. So I new session. So I can create a new can create a new can create a new session to run in session to run in session to run in parallel with other parallel with other parallel with other sessions. Maybe I'll sessions. Maybe I'll sessions. Maybe I'll run an agent to run an agent to run an agent to schedule something schedule something schedule something while another agent while another agent while another agent completes tests for completes tests for completes tests for another feature. More another feature. More another feature. More importantly, I can importantly, I can importantly, I can choose which choose which choose which agent agent agent to use. And this is where to use. And this is where to use. And this is where artificial artificial artificial intelligence becomes truly intelligence becomes truly intelligence becomes truly powerful. You are not powerful. You are not powerful. You are not tied to any tied to any tied to any specific agent. specific agent. specific agent. You can You can You can use your use your use your own. Thanks to ACP, own. Thanks to ACP, own. Thanks to ACP, or or or Agent-Client Protocol, an Agent-Client Protocol, an Agent-Client Protocol, an open open open industry standard industry standard that we helped that we helped that we helped define and define and define and create, you can create, you can create, you can add almost add almost any agent to Rider. any agent to Rider. any agent to Rider. The choice is very large. The choice is very large. The choice is very large. We deliver the registry We deliver the registry We deliver the registry as part of Rider.
-
as part of Rider. as part of Rider. We also provide We also provide We also provide standard standard standard integrations with Juni, Claude, integrations with Juni, Claude, integrations with Juni, Claude, Codex, and Open Code. If you Codex, and Open Code. If you Codex, and Open Code. If you want to install want to install want to install GitHub Copilot, for example, GitHub Copilot, for example, GitHub Copilot, for example, just click a just click a just click a button and the AI button and the AI button and the AI will make sure the will make sure the will make sure the ACP adapter is available ACP adapter is available ACP adapter is available for you. And the best part is for you. And the best part is that you don't need a that you don't need a that you don't need a JetBrains AI subscription JetBrains AI subscription JetBrains AI subscription to use to use to use these agents. You these agents. You these agents. You are using your are using your are using your own subscription. The own subscription. The own subscription. The ACP adapter will ask ACP adapter will ask ACP adapter will ask you to log in the you to log in the you to log in the first time you first time you first time you use it. So, use it. So, use it. So, for example, I can for example, I can for example, I can use Claude. use Claude. use Claude. If I have a If I have a If I have a JetBrains AI subscription JetBrains AI subscription JetBrains AI subscription or API key, I can or API key, I can or API key, I can use the use the use the regular regular regular chat interface in Rider. Or I can chat interface in Rider. Or I can chat interface in Rider. Or I can use my use my use my existing Claude subscription existing Claude subscription existing Claude subscription in the built-in in the built-in terminal-based interface and my terminal-based interface and my sessions sessions sessions will still show up in the will still show up in the Agent Sessions tool window. I Agent Sessions tool window. I can even add can even add can even add multiple API keys and multiple API keys and multiple API keys and accounts and accounts and accounts and switch between switch between switch between them, even while the them, even while the them, even while the session is running. Okay, session is running. Okay, session is running. Okay, let's take a look at let's take a look at let's take a look at our session for the new our session for the new our session for the new feature. We can see that feature. We can see that feature. We can see that several files have been several files have been several files have been changed, and we can changed, and we can changed, and we can click the click the click the view button to view button to view button to see exactly what see exactly what see exactly what has changed. Let's has changed. Let's has changed. Let's just close this.
-
just close this. just close this. Let's start with our Let's start with our Let's start with our test file and you'll test file and you'll test file and you'll see that it has see that it has see that it has added a few tests. added a few tests. added a few tests. We can see We can see We can see the difference that has the difference that has the difference that has happened there. I want to happened there. I want to happened there. I want to see them in context see them in context so I can easily so I can easily so I can easily go to the file and go to the file and go to the file and understand what's understand what's understand what's going on. This is a going on. This is a going on. This is a fairly large test, fairly large test, fairly large test, so it might be so it might be so it might be easier to just easier to just easier to just run it. This is where run it. This is where run it. This is where the IDE becomes much more the IDE becomes much more the IDE becomes much more important. The agent important. The agent important. The agent has completed its work, but has completed its work, but has completed its work, but I am still responsible I am still responsible I am still responsible for releasing this for releasing this for releasing this feature. So I feature. So I feature. So I need to understand need to understand need to understand the changes and make sure the changes and make sure the changes and make sure they work they work they work properly. This is where our properly. This is where our properly. This is where our familiar IDE features like familiar IDE features like testing, testing, testing, navigation, navigation, navigation, refactoring, and refactoring, and refactoring, and debugging debugging debugging give me everything I give me everything I give me everything I need to need to need to explore and explore and explore and understand the changes. understand the changes. understand the changes. Okay, let's go back Okay, let's go back Okay, let's go back to our review and to our review and to our review and check out the check out the check out the implementation itself. We see implementation itself. We see that a new endpoint has been added that a new endpoint has been added that a new endpoint has been added , here is its , here is its , here is its implementation, and again implementation, and again implementation, and again , the IDE provides us with , the IDE provides us with , the IDE provides us with built-in hints built-in hints built-in hints explaining how explaining how explaining how this rather this rather this rather complex LINQ query works. complex LINQ query works. If I go to the If I go to the code, I can see what's code, I can see what's code, I can see what's going on, and I think I'd going on, and I think I'd actually like to actually like to actually like to debug it. So debug it. So debug it. So I'll set a I'll set a I'll set a breakpoint, start the breakpoint, start the breakpoint, start the tracking process, and while it's tracking process, and while it's tracking process, and while it's running, I'll running, I'll running, I'll go to the go to the go to the endpoints window and endpoints window and endpoints window and find a new endpoint find a new endpoint find a new endpoint for low for low for low inventory.
-
inventory. Okay, let's open this in the Okay, let's open this in the main editor. It main editor. It main editor. It will be easier that way. will be easier that way. Let's launch it now. Let's launch it now. We have to stop We have to stop We have to stop at the stopping point, and at the stopping point, and at the stopping point, and now we see now we see now we see what the results will be what the results will be what the results will be . We . We . We get 100 get 100 get 100 elements, but we'll elements, but we'll only actually display 10 of them, so I only actually display 10 of them, so I can understand what can understand what can understand what exactly my code is doing. exactly my code is doing. exactly my code is doing. Now let's say Now let's say Now let's say I want to make a change. I want to make a change. I want to make a change. I actually decided I actually decided I actually decided that I didn't want to pass the that I didn't want to pass the minimum stock value. minimum stock value. I think there is something similar I think there is something similar I think there is something similar in the in the in the catalog element class itself. I catalog element class itself. I catalog element class itself. I can of course just can of course just can of course just use use use navigation to navigation to navigation to navigate and navigate and navigate and see what's see what's see what's going on, and yes, going on, and yes, going on, and yes, I have this I have this restock threshold element. I could restock threshold element. I could make the changes make the changes make the changes myself. It's just one myself. It's just one myself. It's just one line, but line, but line, but it's actually more appropriate it's actually more appropriate it's actually more appropriate to leave it to the agent, to leave it to the agent, to leave it to the agent, as I as I as I need to remove need to remove need to remove the parameter and update the the parameter and update the the parameter and update the tests. So if I tests. So if I tests. So if I go back to my go back to my go back to my review, I can add a review, I can add a review, I can add a comment to the comment to the comment to the difference view difference view difference view here and say: here and say: here and say: remove the parameter and remove the parameter and remove the parameter and use the use the use the replenishment threshold. And then replenishment threshold. And then replenishment threshold. And then add add add a note to that. Once a note to that. Once a note to that. Once I'm done reviewing, I I'm done reviewing, I I'm done reviewing, I can gather all my can gather all my can gather all my notes together, notes together, notes together, go back to my go back to my go back to my session, and we'll see session, and we'll see session, and we'll see it's already added it's already added it's already added here at the bottom. I can here at the bottom. I can here at the bottom. I can add a "update add a "update add a "update tests" request, run tests" request, run tests" request, run it, and have it, and have it, and have the agent do the agent do the agent do the work for me. So, it's the work for me. So, it's the work for me. So, it's great that I get the great that I get the great that I get the best of both best of both best of both worlds. I can worlds. I can worlds. I can use
-
use use one of my one of my one of my agents to agents to agents to implement a solution, implement a solution, implement a solution, then leverage then leverage then leverage Rider's built-in Rider's built-in Rider's built-in code intelligence to code intelligence to code intelligence to understand, understand, understand, review, and review, and review, and ultimately adopt those ultimately adopt those ultimately adopt those changes. What gets really interesting is when changes. What gets really interesting is when changes. What gets really interesting is when we we we start giving start giving start giving agents that same agents that same agents that same code intelligence and those same code intelligence and those same code intelligence and those same tools. tools. tools. If we click on the If we click on the agent settings widget in the status bar at agent settings widget in the status bar at the bottom, we will get the bottom, we will get the bottom, we will get quick access to quick access to quick access to setting skills setting skills , interceptors, and , interceptors, and , interceptors, and tools. We tools. We tools. We see that MCP Rider is see that MCP Rider is see that MCP Rider is running and it is already running and it is already running and it is already configured to configured to configured to work with Claude and Codex. We work with Claude and Codex. We work with Claude and Codex. We can click on it can click on it can click on it to to to configure more configure more configure more agents. This gives agents. This gives agents. This gives such external such external such external agents access to agents access to agents access to many of many of many of Rider's internal tools, such Rider's internal tools, such as search, refactoring, as search, refactoring, as search, refactoring, and debugging. If and debugging. If and debugging. If we click on we click on we click on skills, we will be taken skills, we will be taken skills, we will be taken to the skills registry, to the skills registry, to the skills registry, which provides a list of which provides a list of which provides a list of all the skills all the skills all the skills installed installed installed with Rider or your with Rider or your with Rider or your existing agents, and existing agents, and existing agents, and allows you to add and allows you to add and allows you to add and install new ones. install new ones. install new ones. Rider has several Rider has several Rider has several built-in skills, built-in skills, built-in skills, such as such as such as code debugging and refactoring, code debugging and refactoring, code debugging and refactoring, that train your that train your that train your agents agents agents to use to use Rider's debugger and refactoring tools. But there are many Rider's debugger and refactoring tools. But there are many other elements here, such other elements here, such as Microsoft .NET skills, as Microsoft .NET skills, as Microsoft .NET skills, some skills some skills some skills related to Aspire, Azure, and related to Aspire, Azure, and related to Aspire, Azure, and also skills for also skills for also skills for frontend and frontend and frontend and integration. Rider also integration. Rider also integration. Rider also supports supports supports interceptors, interceptors, interceptors, allowing you to automatically allowing you to automatically allowing you to automatically reformat and reformat and reformat and validate code validate code validate code generated by Claude or generated by Claude or generated by Claude or Codex. Instead of Codex. Instead of Codex. Instead of waiting for the waiting for the waiting for the verification stage, verification stage, verification stage, interceptors interceptors interceptors make this process make this process make this process part of the part of the part of the agent's workflow. So, that
-
agent's workflow. So, that agent's workflow. So, that was a quick overview of was a quick overview of was a quick overview of how we are how we are how we are improving our AI improving our AI tools to tools to tools to better match better match better match changes in changes in changes in developer workflows developer workflows . There's a lot more to . There's a lot more to . There's a lot more to talk about AI in the IDE, talk about AI in the IDE, talk about AI in the IDE, such as support for such as support for such as support for work trees, work trees, work trees, agent presets, and agent presets, and agent presets, and cloud integration. cloud integration. cloud integration. We continue to We continue to work hard on this and work hard on this and look forward look forward look forward to your feedback. And to your feedback. And to your feedback. And now Matthias will show now Matthias will show now Matthias will show us how skills can be us how skills can be us how skills can be used used used to to to investigate real-world investigate real-world performance problems. performance problems. Hello everyone, and thank you, Hello everyone, and thank you, Hello everyone, and thank you, Matt. So, you just Matt. So, you just Matt. So, you just saw what saw what saw what happens when an happens when an happens when an agent completes agent completes agent completes a job, and he a job, and he a job, and he used Rider to used Rider to used Rider to understand and understand and understand and verify the result verify the result . But, as with any . But, as with any . But, as with any complex system, complex system, complex system, sooner or later you sooner or later you sooner or later you may encounter may encounter may encounter various various various performance issues. performance issues. performance issues. The application may be The application may be The application may be overloading overloading overloading the CPU, causing the CPU, causing the CPU, causing frequent frequent frequent memory purges, or memory purges, or memory purges, or exhibiting exhibiting exhibiting inefficient inefficient inefficient database access in database access in database access in slow slow slow ASP.NET queries. We all know that ASP.NET queries. We all know that ASP.NET queries. We all know that when you research when you research when you research problems like this, you don't problems like this, you don't problems like this, you don't just read the just read the just read the source code and source code and source code and try try try to analyze it. You to analyze it. You to analyze it. You use use use professional professional professional tools like a tools like a tools like a profiler. So what profiler. So what profiler. So what happens if happens if happens if you give the same you give the same you give the same opportunity to an agent?
-
opportunity to an agent? opportunity to an agent? Let me show Let me show Let me show you. In my demo you. In my demo application, I application, I application, I used Avalonia to used Avalonia to used Avalonia to implement Conway's "Game of implement Conway's "Game of implement Conway's "Game of Life." I Life." I Life." I just launched it just launched it just launched it in normal mode in normal mode in normal mode and started and started and started the simulation. While it the simulation. While it the simulation. While it was running, the was running, the Rider monitoring tools window was already Rider monitoring tools window was already tracking tracking tracking the application. And it the application. And it the application. And it revealed some revealed some performance issues, performance issues, shown below those shown below those shown below those great graphs. great graphs. great graphs. Now we could Now we could Now we could tell the agent that tell the agent that tell the agent that the application is running the application is running the application is running slowly or the slowly or the slowly or the processor is processor is processor is overloaded, and it overloaded, and it overloaded, and it could even find could even find could even find a few places that a few places that a few places that need to be fixed. But need to be fixed. But performance issues aren't performance issues aren't always obvious when always obvious when always obvious when reading the source reading the source reading the source code. Your agent can code. Your agent can code. Your agent can inspect the project and inspect the project and inspect the project and gather more gather more gather more context, but without context, but without context, but without runtime data, runtime data, runtime data, it is it is it is unstable. And this is where unstable. And this is where unstable. And this is where you can give you can give you can give your agent another your agent another your agent another tool. For this tool. For this tool. For this scenario, you can scenario, you can scenario, you can use the use the use the built-in built-in built-in dotTrace analysis skill. This dotTrace analysis skill. This dotTrace analysis skill. This skill gives the agent a skill gives the agent a skill gives the agent a structured structured structured way to verify what way to verify what way to verify what actually actually actually happened while happened while happened while the application was running. the application was running. the application was running. Reading and querying Reading and querying performance snapshots, performance snapshots, tracking hot tracking hot tracking hot paths, and mapping paths, and mapping paths, and mapping this activity to this activity to this activity to code. This gives the agent code. This gives the agent code. This gives the agent real evidence to real evidence to real evidence to investigate, so investigate, so investigate, so he can act with he can act with he can act with confidence. In our confidence. In our confidence. In our evaluation, the average evaluation, the average evaluation, the average accuracy increased from 4.7 accuracy increased from 4.7 accuracy increased from 4.7 to 8.1 out of 10. To to 8.1 out of 10. To to 8.1 out of 10. To learn more, learn more, learn more, scan the QR code and scan the QR code and scan the QR code and read our blog read our blog read our blog about why your agent about why your agent about why your agent keeps missing the keeps missing the keeps missing the real “ real “ real “ bottleneck.” So, this is bottleneck.” So, this is bottleneck.” So, this is profiling, but this is profiling, but this is profiling, but this is just one example. The just one example. The just one example. The main idea is what main idea is what main idea is what happens happens happens when you give agents when you give agents when you give agents more of the professional more of the professional more of the professional tools that
-
tools that developers already rely on. JetBrains has been developers already rely on. JetBrains has been building these building these building these tools tools tools for decades. for decades. for decades. Code analysis, Code analysis, Code analysis, debugging, debugging, debugging, profiling, profiling, profiling, testing, testing, testing, database tools database tools database tools . Tools that . Tools that . Tools that can accurately can accurately can accurately understand your understand your understand your codebase in an instant. codebase in an instant. codebase in an instant. Now you can Now you can Now you can provide the same provide the same provide the same expertise to agents. expertise to agents. expertise to agents. Not to Not to Not to exclude you from the exclude you from the exclude you from the process, but to give process, but to give process, but to give agents better agents better agents better information and better information and better information and better tools while you tools while you tools while you guide them in the guide them in the guide them in the right direction right direction right direction and decide what and decide what and decide what to accept. In this to accept. In this to accept. In this story, we story, we story, we used used Rider's integrated tools to Rider's integrated tools to detect and detect and detect and analyze a analyze a performance issue. But performance issue. But Rider may not be the Rider may not be the Rider may not be the environment where you environment where you environment where you build .NET build .NET applications. Maybe applications. Maybe applications. Maybe you prefer you prefer you prefer Visual Studio, VS Code, Cursor, or Visual Studio, VS Code, Cursor, or Visual Studio, VS Code, Cursor, or another editor where another editor where another editor where agents are already the center of agents are already the center of agents are already the center of your your your workflow. So what does workflow. So what does workflow. So what does this story look like this story look like this story look like outside of Rider? You and outside of Rider? You and outside of Rider? You and your agent shouldn't your agent shouldn't your agent shouldn't miss out on this miss out on this miss out on this productivity boost, and productivity boost, and productivity boost, and Mayur will tell you Mayur will tell you Mayur will tell you more about it. more about it. Thank you, Matthias. That Thank you, Matthias. That was really cool. So, was really cool. So, was really cool. So, everything you saw everything you saw everything you saw today was in Rider. And today was in Rider. And today was in Rider. And if Rider is your home, that's if Rider is your home, that's if Rider is your home, that's great. We great. We great. We like it. But we like it. But we like it. But we also know that .NET also know that .NET developers work developers work developers work in many different in many different in many different places. Many of places. Many of places. Many of you work in Visual Studio.
-
you work in Visual Studio. you work in Visual Studio. And more and more of you And more and more of you And more and more of you are using VS Code, are using VS Code, are using VS Code, Cursor, or another Cursor, or another Cursor, or another VS Code-based editor VS Code-based editor VS Code-based editor . Often this is . Often this is . Often this is because that is where because that is where because that is where your agent already lives your agent already lives your agent already lives . So I want . So I want . So I want to talk about how to talk about how to talk about how we show up we show up we show up there too. And it starts there too. And it starts there too. And it starts with ReSharper. ReSharper is with ReSharper. ReSharper is with ReSharper. ReSharper is no longer just for Visual Studio. no longer just for Visual Studio. You can now You can now use use use ReSharper in VS Code, Cursor, and ReSharper in VS Code, Cursor, and ReSharper in VS Code, Cursor, and other compatible other compatible other compatible editors. It provides the editors. It provides the editors. It provides the JetBrains tools JetBrains tools JetBrains tools you rely on: you rely on: you rely on: code analysis, code analysis, code analysis, navigation, navigation, navigation, refactoring, refactoring, refactoring, unit testing, unit testing, unit testing, all the things we love. all the things we love. all the things we love. So if you So if you So if you enjoy enjoy enjoy working with an agent in working with an agent in working with an agent in Cursor, you don't Cursor, you don't Cursor, you don't have to have to have to give up give up give up understanding your .NET understanding your .NET code from JetBrains. And code from JetBrains. And code from JetBrains. And listen, we're not here to listen, we're not here to listen, we're not here to tell tell tell you which editor you which editor you which editor to use. Rider, to use. Rider, to use. Rider, Visual Studio, VS Code, Cursor— Visual Studio, VS Code, Cursor— choose the one that is choose the one that is choose the one that is convenient for you. We convenient for you. We convenient for you. We just want just want just want our .NET intelligence to our .NET intelligence to our .NET intelligence to be there for you.
-
be there for you. be there for you. Remember Remember Remember Anastasia's example with Anastasia's example with Anastasia's example with caching? The tests caching? The tests caching? The tests were successful, the were successful, the were successful, the code difference code difference code difference looked clean, and the looked clean, and the looked clean, and the real issues real issues real issues were somewhere else in the were somewhere else in the were somewhere else in the codebase. codebase. codebase. This doesn't go away This doesn't go away This doesn't go away when you change when you change when you change editors, does it? editors, does it? editors, does it? Your agent can Your agent can Your agent can run in Rider, in a run in Rider, in a run in Rider, in a terminal, or in Cursor. terminal, or in Cursor. terminal, or in Cursor. The editor changes, the The editor changes, the The editor changes, the agent changes, but agent changes, but agent changes, but someone still needs to someone still needs to someone still needs to understand how these changes understand how these changes understand how these changes fit into the rest of fit into the rest of fit into the rest of your application. And that's your application. And that's your application. And that's exactly what JetBrains has been building exactly what JetBrains has been building exactly what JetBrains has been building for .NET for over 20 for .NET for over 20 for .NET for over 20 years. That's what years. That's what Matt and Matt and Matthias showed you today. Tools Matthias showed you today. Tools Matthias showed you today. Tools that help that help that help verify the verify the verify the agent's work, and tools agent's work, and tools that the agent himself can start that the agent himself can start that the agent himself can start using using using . So, . So, . So, Anastasia started with "A" Anastasia started with "A" Anastasia started with "A" for AI. And she for AI. And she for AI. And she said something that I said something that I said something that I want you to want you to want you to remember. remember. remember. Writing code has become Writing code has become Writing code has become much cheaper. much cheaper. much cheaper. To be mistaken—no. This is To be mistaken—no. This is To be mistaken—no. This is exactly what worries us exactly what worries us . You can . You can . You can delegate more delegate more delegate more work to your work to your work to your agents, but you agents, but you agents, but you still decide what still decide what still decide what goes into the release. Our goes into the release. Our goes into the release. Our job is to make this job is to make this job is to make this decision easier decision easier decision easier for you. With artificial for you. With artificial for you. With artificial intelligence, you intelligence, you intelligence, you work with selected work with selected work with selected agents and agents and agents and maintain control maintain control maintain control over their actions. And with over their actions. And with over their actions. And with Rider and ReSharper, you Rider and ReSharper, you Rider and ReSharper, you gain a deep gain a deep gain a deep understanding of your .NET understanding of your .NET code, and increasingly, so do code, and increasingly, so do code, and increasingly, so do your your your agents, wherever you agents, wherever you agents, wherever you work. Some of what work. Some of what work. Some of what you saw you saw you saw today is available today is available today is available now. It's still a bit now. It's still a bit now. It's still a bit early, so early, so early, so please try please try please try it out in your code and it out in your code and it out in your code and tell us what tell us what tell us what works and what doesn't. We're all works and what doesn't. We're all works and what doesn't. We're all in the chat today, and your in the chat today, and your in the chat today, and your feedback is what makes
-
feedback is what makes feedback is what makes everything everything everything better. Thank you very much better. Thank you very much better. Thank you very much for joining us for joining us for joining us at .NET Day. Matt, at .NET Day. Matt, at .NET Day. Matt, I take it back to you.
Summary
The main theme is the evolving role of AI agents in software development, with a key subject being the shift from simple code completion to complex task delegation. The practical takeaway is that while AI makes writing code cheaper, supporting it still requires human understanding and rigorous testing, highlighting the need for tools like JetBrains Air that integrate AI agents into existing workflows while maintaining control and flexibility.