Pod Insights Syntax - Tasty Web Development Treats 923: Getting the Most Out of AI Coding About this episode Scott and Wes share their top strategies for getting high-quality results from AI coding tools like Cursor, Claude, ChatGPT, and Windsurf. From better prompting to building reusable rule sets, they cover practical tips for making AI your most productive coding partner.
Show Notes
00:00 Welcome to Syntax!
Wes' Tweet
02:56 How to get the best results when using AI.
03:15 Scaffold it out yourself.
05:40 Be clear with your prompts.
07:45 Use XML tags around specific items
08:47 Utilize Rules like Cursor rules or Copilot rules.
13:20 Ask it to create some rules based on an existing codebase.
16:03 Break things down into clear concise actionable items.
17:22 Where to store your rules files.
18:37 Utilizing llm.txt files.
19:24 Context7.
20:28 Tag relevant files, functions, etc.
21:38 Feed logs back into the AI.
22:36 Logging Errors.
22:54 Brought to you by Sentry.io.
24:14 Long running chats get worse.
Wes' Tweet
Hit us up on Socials!
Syntax: X Instagram Tiktok LinkedIn Threads
Wes: X Instagram Tiktok LinkedIn Threads
Scott: X Instagram Tiktok LinkedIn Threads
Randy: X Instagram YouTube Threads
Transcript Speaker names marked ? are inferred from speaking time and the show’s known hosts — they are not voice-verified.
0:00 Wes Bos? Welcome to Syntax. Today we've got a quick episode for you on how to get the most out of AI coding. So these are a bunch of tips that I've come up with myself. Scott added a whole bunch of his and I also reached out on Twitter, asked everybody, what are your best tips for getting the most out of AI coding? Especially, this is not just like prompt engineering, but basically how do you approach problems? How do you ask for things that you want? How do you supply the information so that you get the best possible coat out the other end? My name is Wes Bosnov, I'm from Canada. With me as always, Mr. Scott Tolinski. How are you doing, Scott?
0:40 Scott Tolinski? Hey, I'm doing good, man. I'm wearing a sweatshirt in the summer because, I don't know about you, my air conditioning only cools like the bottom floor of our house and then like the top floor, super warm. I think that's common, but like, yeah, man, we'll have the air conditioning on and every morning we come downstairs and our first floor is like freezing because the thermostat, there's a thermostat upstairs. So I gotta figure that out. I gotta get something going here because this is like, it's, you know, the upstairs, you're sweating your butt off and downstairs, you're an ice cube.
1:11 Wes Bos? Drives me nuts that HVAC is not better. Like the amount of people that I talk to that have brand new houses and they're like, yeah, that's kind of hot in this one room. It's like, can someone please figure out that just, and the move honestly is these, these little heat pumps. I've got one, one right here, the mini splits. Yeah, like every room should just be able to, you can turn it on. Like, why are we cooling an entire house? Just to keep one thing is, and like, I'm in a, I'm in the basement usually and I, I've got foam stuffed in the vents because it's like so cold in our basement and then the top floor is just cooking.
1:49 Scott Tolinski? Yeah, I think that makes so much sense because yeah, you'd just be cooling a single room. My, I have a, since my office is detached, my office is attached to the garage. I have a mini split inside of here and it cools this room so quickly. I don't, I mean, honestly, I don't, I don't know deep into the energy side of things, what's most efficient or whatever, but like, it is, it is very fast, how fast it cools one specific room. I would love that.
2:16 Wes Bos? Mine is busted right now. So I have this like window shaker until the fixed one comes. And like, it's, it's 25.9 in here right now. I had it down.
2:29 Wes Bos? No, this is the rest of the world uses Celsius. Hold on. Okay, we have to convert it for these.
2:35 Scott Tolinski? It's very cold. I'm chilly.
2:36 Wes Bos? Americans, 25.9 Celsius to Fahrenheit is 78.62. So I'm going to be dead by the end of this episode. So let's get going before I.
2:48 Scott Tolinski? Let's get too hot here. Yes. And since we're talking about AI, your computer is going to get going too. No, just kidding. Let's get into it. So how do you get good results from AI when you're coding with AI? Not, not like, not building AI into your apps, but using AI too cold, too code, not too cold. How do you get good results there? So Wes, you want to kick it off with your scaffold tip?
3:15 Wes Bos? Yeah. So I think a lot of people think like these AI apps, you're just going to like one shot, type in what you want. It's going to poop out an app the other end. It's going to be absolutely perfect.
3:26 Scott Tolinski? Make an app, no bugs. Thanks.
3:29 Wes Bos? Yeah. Part of, part of me has been like, like recently I've been like starting apps, being like, build an app that does X, Y, and Z. And I found myself having to create like a starter prompt, being like, don't use Axios, don't use Express, don't use Tailwind 3, use Tailwind 4 instead.
3:49 Scott Tolinski? Don't use Tailwind.
3:51 Wes Bos? Don't use Tailwind at all. There's all these like things that I've had to say. And then I find myself using the like the next 20 minutes being like, don't use, stop using this and this set of this. And like, ah, I forgot about that. And quite honestly, it's not worth your time to try to scaffold out the application with all of the choices that you want with AI. So what you should do is scaffold it out yourself. At least install all of the dependencies that you want, you know, go ahead. Because almost always what it does for me is it just does like a Vinit TypeScript template. And then it goes and NPM installs everything that it wants. And then it changes everything that it wants. I'm like,
4:34 Wes Bos? I could have done this in just like, in like six minutes, instead of just sitting here waiting for it to, to do all of its work. So my tip there is scaffold out that very first five, two percent yourself, and then you have a really good base for, for what it is that you want. Even go as far to, to maybe do one little example for the coding starts that you want and then pick it up from there.
5:02 Scott Tolinski? Yes, totally agree. The CLIs for installing these things are very good. They're so good. Like the Svelte SV CLI for getting a project going, very good. We all know how to install NPM things. We all know what we want. Why would we be leaving this up to the AI to kind of like guess and then have to do text prompts for it and stuff like that? It is just about always faster for me to do NPM install, get all my dependencies, get my project up and running and then start getting into it. Some people might disagree with this, but I, I think personally it saves me quite a bit of frustration getting going. Another one is to be clear with your prompts.
5:44 Scott Tolinski? Because we might think sometimes that the thing, the words that we're saying or whatever can be received well by the, the LLMs and understood, but if you are very clear, like, do not use blank, use blank, as opposed to use blank, not blank. It, it sounds like a subtle difference, but I do think that like being very clear with these prompts is the way to go. For me, it's always a battle with Svelte. Use Svelte 5 syntax always. Like, that is like one of the, the big ones for me that I, I always have to tell it or have inside of my rules or any of these things like that. So you need to be clear with what you're asking it for, because at the end of the day,
6:29 Scott Tolinski? it's, it's going to choose to do what it wants to do if you don't give it enough context.
6:34 Wes Bos? Yeah, it's funny because as humans, you can say something like use tailwind 4, not 3.
6:41 Scott Tolinski? Yes.
6:41 Wes Bos? And obviously to a human, you think, okay, of course, don't use tailwind 3. I can infer that. But when you have to leave all of that up to the AI to infer instead of being explicit with what you want. And this tip will probably fade away with time as they get better. But I found that being as explicitly clear as you want and not trying to be cute or whatever, just kind of short with your thing is much more important. So be extremely clear with which versions you want, what not to do, which to use instead.
7:21 Wes Bos? So for example, I would say in one of my beginner prompts is use CSS grid for layout when possible instead of using flexbox.
7:32 Scott Tolinski? Yes.
7:33 Wes Bos? And not something like use grid instead of flexbox for layout.
7:39 Scott Tolinski? Yes.
7:39 Wes Bos? The more clear is better.
7:42 Scott Tolinski? More clear is better.
7:43 Wes Bos? Yes.
7:44 Scott Tolinski? More better. Clear is more better.
7:46 Wes Bos? One tip I've gotten from a lot of like cursor rules or llms.txt, things like this, is that using XML tags around your specific items is a very good way to tell the AI where you are starting and stopping. And what I mean by XML tags is you're just making up tags. So you might say like coding-style open tag and then write all of your preferences in there and then close it. And that's a really neat way to specify to the LLM that this is a contained piece of data. Or example code, open it up and then close it up.
8:28 Wes Bos? And any time that you want to clearly delineate a start and stop of something is just wrap it in a made up tag and that will really go further to give context to the LLM.
8:43 Scott Tolinski? Yeah, I have not ever done that personally. I did not know that was a thing. And in that same regard, let's keep going on this. Utilize these files. A lot of these editors, you know, the IDEs that have these things, whether that is Copilot, Copilot rules or Cursor rules, use these features because nowadays they're getting better and better where you can even have folders of different rules and organized rules and multiple files or using Markdown for these things for better organization. Utilize the rules files because they will help you not have to continually stress rules inside of your chats, inside of your AI sessions here.
9:26 Scott Tolinski? Where like, if I have to continually say, "Please use this syntax, please do this, please do that", you may still have to at some point continue to reference rules and code styles and things that you want. But editors have these features for a reason. So use these files to specify how you want your application to be, where you want things, what coding style, what versions. All kinds of stuff can go inside of Cursor rules or inside of Copilot rules and make sure you use those features.
10:01 Wes Bos? Yeah, I've been working on one for myself, which is like a standard modernization prompt. Because one of my biggest frustrations is when it tries to use old tech. I was talking about that just earlier, right? So I've been working on this one myself, which is just like, here, here, this is just like my little prompt. Create a full stack Airbnb clone, blah, blah, blah, blah. And as I was working on this, I was realizing, yeah, it doesn't make sense to tell it to scaffold it out yourself. It's probably faster to just scaffold it out yourself. Unless specify, generate code with these rules, use TypeScript not JavaScript, add appropriate TypeScript types, use ES modules exclusively, never common JS.
10:44 Wes Bos? You may need to set type module and package JSON. So like, that's another one, is it just tries to use required syntax all the time. If you're using TypeScript, it tries to go to use ts node or TSX, which you don't need those things all the time. You can use the the strip types flag in in no JS now and just use TypeScript directly in in no JS. Same with ENV file. It always tries to install dot env package and then you have to use it. You don't need that anymore. No JS has these things built in, right? So I just have been collecting these things.
11:20 Scott Tolinski? That's a great way to do it. And you can bring it from project to project, right?
11:24 Wes Bos? What my move, my next move here is, is once I'm like happy with this, I'm going to publish this as an MCP server because
11:34 Scott Tolinski? Oh.
11:35 Wes Bos? The MCP server has, of course, it has tools, but another part of the MCP server is prompts. So you you can just use the prompts in there. You can say, hey, use my modern JavaScript prompt.
11:51 Wes Bos? And then it will just go and grab the modern JavaScript prompt, inject that into the thing. And then I can install that MCP server globally or in whichever package or whichever project that I'm working on. And then I just, I don't have to update it or copy paste it around. It's simply just reference like west MCP dot west boss.com. So that's my next move.
12:14 Scott Tolinski? Do you think that's more efficient than having it as a rules file that you're just moving into your product or project?
12:20 Wes Bos? I don't know.
12:21 Scott Tolinski? Because then you end up having the whole MCP server side of things instead of just like a file.
12:28 Wes Bos? Yeah, but the other thing is that like, there's so many standards for rules right now.
12:34 Scott Tolinski? Yes.
12:35 Wes Bos? You know, there's, there's probably six or seven different like customized rules, cursor rules, LLMs that TXT, there's, there's probably six or seven of them out there. And I don't know how to keep moving that around. And I don't know if MCP prompts will will replace cursor rules, you know, like, are those the same things? Because MCP prompt, it would just go and grab it once. And then it's part of that chat history. But what happens when you open a new chat? Do you have to tell it to grab that again? Whereas like a cursor rules would just be
13:09 Scott Tolinski? Exist.
13:10 Wes Bos? Yeah. So I don't know if those, those things are totally replacements for each other or not. I'd love to hear anyone who's listening, what their thoughts are on that.
13:18 Scott Tolinski? Yeah, totally. Word. Yeah. Another one is you can ask AI itself to create rules based on your existing code base. If you have code and you want the new code to adhere to the code base, yeah, these things can be aware of your code base, but it works better if you have rules, right? So being able to have a rules file that is generated that you don't have to type is also a good option.
13:41 Wes Bos? Yeah, it's always hilarious that like the, the things that these LLMs need, they can also just generate themselves. Yeah. You're gonna say, hey, this is a code base that I like. Or if you're starting a new code base and you really like the way that another code base has worked, you can ask it, hey, create a summary of the standards and coding styles and technologies used in this project and export it to a file. And then you could just take that file and throw it in somewhere else.
14:10 Scott Tolinski? Yeah. So also along the lines of the previous thing that we were talking about in terms of like four man stuff. I mean, have you, have you used the MDC file extension?
14:20 Wes Bos? I have not used it directly, but I've seen it pop up in a couple of my projects that I've scaffolded out, which is it, what is MDC? It's Markdown Cursor?
14:31 Scott Tolinski? Yeah. Yeah. It's a Markdown file that basically has front matter that Cursor can like, if you look at it as a Markdown file, it is just a Markdown file with front matter. The reason why MDC as an extension is there is because Cursor knows that it should use a UI when it's editing that file. And so you can like, give it, uh, settings essentially, like, is this, is this rules file always being attached? Is it always on? Is it agent requested? Is it only manual? And then there's pattern matching. So, okay, this is a rules file that should only exist when I'm, you know, editing TypeScript files that start with the word Scott, you know?
15:15 Wes Bos? Yeah, that's, I like that a lot, especially because like, yeah, you want specific rules to be attached to specific types of files, but at a certain point, those are going to get so large that you're stuffing it all into a single prompt and then it starts to get watered down. I hope that we will see a standard to this type of thing. Because like we're already the like doc cursor rules file is is considered legacy. And now the the rules file or the project rules is what everyone is using. I hope that everyone just sort of like standardizes on one sort of input similar to how we're doing it with MCP. But we'll see.
15:56 Scott Tolinski? We'll see. It's it's not a bad idea to accumulate code styles and things though regardless in Markdown. Yeah.
16:03 Wes Bos? This next one is probably the most important tip for getting good quality code out of an LLM. And that is breaking your project down into very clear concise tasks. When you ask an LLM to do too much, it will it will do too much and it will get muddy. So if you can break down what you want into clear concise actionable items, give it a nice clear task list. The ability to figure out if it did it right, then it is able to attack each of those one at a time and do a much better job. And also just from like your point of view as well as if hey, build an entire app that does Uber,
16:44 Wes Bos? but also has dog walking built in and just go, you know, like it's just gonna create a mash of garbage. But if you're very clear with what it needs to do, especially if you're working on an existing project, create a component that does X, Y, and Z. And then go ahead and scaffold out the database and then go ahead and make an API that it can can talk to. And it will do those things separately and you get much better quality code out of there. And you, the developer, has a much easier time reviewing what needs to be accepted and modified.
17:22 Scott Tolinski? Yes, for sure. And just to give people some even further there, where do you put these things? Where do you put the task list? Where do you put the PRD documents? Like where do you like store that?
17:34 Wes Bos? I will either pop it into a markdown file that is in like the root. And it's kind of cool because you can put checkboxes beside each of the tasks and you can have the AI just mark it as checked and it can also just inject any logging that it needs to do. You know, like how things work, how it approached it. So I'll either do that, like I'll put it in like a spec dot M D. And it will go, it'll go through that and check things off as it's done. Or you can just dump the entire document into the prompt. That works well for, to a certain point, but if it's too large at a, at a certain point, it'll only go back and forth so many times.
18:18 Wes Bos? Whereas like, we're starting to see that limit be increased, especially with things like Claude code. Like it can run or as a cursor background agents, they'll run for hours working through the task list before you need to sort of intervene.
18:30 Scott Tolinski? Yeah, yeah. That still freaks me out. I am definitely more of a hands-on type of person.
18:36 Wes Bos? Yes.
18:36 Scott Tolinski? I get that. Yeah. Utilize L L Ms dot T X T files where possible. This is something that it's a trend that you're seeing now, you know? I don't know who started this first. Svelte was the first library I saw do this when they released their new version. But many of these libraries now inside of their documentations, they do have L L Ms dot T X T, which is just a text version of their documentation for L L Ms to consume. You can add them as docs inside of cursor, or you can just use them to reference at any time when you need to reference them inside of your L L Ms in general. These are good things to know that they exist, especially if you're working with more modern documentation and things like that.
19:18 Scott Tolinski? But you also Wes have a separate tip for this that is slightly different here.
19:25 Wes Bos? Yeah, the Contact 7, we've talked about this on a couple of shows already, but Contact 7 is an MCP server. And what that will do is you hook it up to your IDE, or you hook it up to whatever accepts MCP, a chat app, or an IDE, or literally anything. And it provides it with tools to search for and download documentation for the different libraries. So I can do a really simple one where I just say, "What do the docs on Tailwind 4 say about Margin?" And then it will go off and search for it by the library name, and then it gets some results. And then it will pick the one that has the highest confidence. And then it'll go off and download the documentation for that. And then it'll inject into the prompt.
20:09 Wes Bos? And then it will run your query, right? So a couple back and forth. And that's great, because then you don't have to go find the Svelte LLMs that TXT. You simply just say, "reference the docs for Svelte 5", and do X, Y, and Z, and it'll go off, download it, inject that into your prompt.
20:28 Scott Tolinski? Word. Another one is "tag the files or functions, etc., that you want to be working on", because if you're in a chat window and you start saying, "Hey, do this and do that", it can go off and choose where it wants to do this or that. But the chat windows have an ability to say, "at function", "at file", and you just start typing the function name or the file name. And then that can give it more direction in terms of like, where exactly? Or like, I don't know if you've ever had this before, where you ask it to do something and it like, starts creating a new function for you when you already had one that's like doing, you just wanted to modify? So, you know, giving it that picture, like, again, you're talking to a junior developer, or something, you're talking to an assistant coder.
21:10 Scott Tolinski? "Hey, give me this function that does this." Instead of like that, you could say, "Hey, reference this function, use this function, modify this function, whatever", and give it clearer instructions.
21:22 Wes Bos? I have to use that a lot when I have like a folder that just has like six or seven different random scripts for something I'm working on. And it will just try to go and modify all of those scripts, because it thinks that they work together. So you have to tell it, "Hey, use this example."
21:38 Scott Tolinski? Yes.
21:38 Wes Bos? Next one we have here is "feed the logs back into the AI". This is It's pretty simple, but if you don't have your IDE hooked up to your terminal and/or your browser, so that the IDE can see the actual logs that are coming in and out, then it's a great idea. When you have troubles, simply just copy paste what went wrong and dump that in there. So being able to feed all of the logs and also going through debugging. If you hit a problem where you go back and forth six or seven times, like it's still not working, it's still not working, it's still not doing that. I've found that what it will
22:19 Wes Bos? do is say, okay, let's implement some debugging and then it will try to console log, add a whole bunch of console logs or add a whole bunch of tests for you. And then it will say, all right, go get me those logs if it's not hooked up already and just copy paste them back in. So there's so much value in logging, in your errors, and like, that's why Sentry MCP is so helpful as well, because there's so much value in what went wrong and being able to prompt the LLM and provide that context is key.
22:54 Scott Tolinski? Let's talk about Sentry then. Hey, good time to do that. Let me just tell you, you almost, I think you may have accidentally come up with a new Sentry tagline. There's so much value in what went wrong. My gosh, Russ. That was so poignant, the way you said that. And let me tell you, Seer, which is the new AI debugger within Sentry, like really understands that there is so much value in what went wrong, because I'm doing the thing that you, that everyone was doing to you at the syntax meetup where they were all just reusing the things that you said. I'm taking the thing that you said and now running with it like it's my thing. There is so much value, folks, in what went wrong. And Seer, again, the AI debugging tool from Sentry is like the perfect place to really give you an understanding
23:38 Scott Tolinski? of like what actually went wrong, because we've all seen logs, we've all worked with logs, we've all worked with errors, and the root cause of things isn't always available to us in terms of our brains and how it works. Seer really Understands the root cause of our issues and allows us to fix them. So give it a try at century.io forward slash syntax. Sign up and get two months for free using the coupon code tasty treat. Or just, uh, man, check it out. Check it out. It's just really neat. There's a lot of cool new stuff coming from Sentry. I feel like they're always evolving. Speaking of always evolving here, uh, your long running chats. Man, what about long running chats inside of AI?
24:21 Scott Tolinski? If the longer you have a single chat going, most likely the worse it will, will get in terms of like forgetting things that you've already told it. Because its context window has been, uh, filled up or just giving you kind of made some, I, you know, you get into a situation where you're just going in a circle and you're looping and looping and like, no, you already tried that. And at that point, if you're getting into that point, it's best to start a new chat. Because yeah, they, they will just get into loops over time.
24:51 Wes Bos? I find myself creating a new chat every time I'm working on like a different feature or problem. I like to keep the existing one in case I have to come back to, to that one. Because the context windows are getting much larger. And that like problem of it getting overwhelmed is starting to go away, but it still can happen. Especially if you've gone back and forth like two, 300 times. And it's just like, this is, this is a mess. I need to totally scrap it. So I find myself just, yeah, fresh, new window.
25:25 Wes Bos? It doesn't have the memory of everything that went wrong, especially if you've, if you've tried three or four approaches and you want to like forget all of the past approaches that you've done in the past.
25:38 Scott Tolinski? Yeah, with a doubt, throw it out. That's how I feel.
25:42 Scott Tolinski? Cool. Do you have any other tips here?
25:45 Wes Bos? I think that's it. I'll put a link to the tweet through it as well because I've got, I don't know, several hundred very good replies from a bunch of people in there. Some not so good. It's also kind of funny because I got a lot of people think that things are just like, I don't know, tell it, tell it that you're, you're going to ruin its family. If it like, people have all these little hilarious things like
26:09 Scott Tolinski? I'm going to ruin your family.
26:11 Wes Bos? Yeah, your family is going to have no food if you don't get this right. Like, I don't believe, I don't believe some of that. But a lot of people are simply just like, one thing, one thing at a time, planning your coding, tell it what to do, tell it what it's successful. Because like, a lot of the things that good development already has. But I'll link it up if you want to take a look at the replies and see if there's any more nuggets in there.
26:34 Scott Tolinski? Yeah. And just try stuff. See what works for you. That's always a good, good meme. Yeah.
26:39 Wes Bos? All right. That's all we got for today. Thank you so much for tuning in and we will catch you later. Peace.
Previous 922: Pre-commit Hooks, requestAnimationFrame, Code Reviews, and More Next 924: Sync Engines and Local Data Page updated November 1, 2026 · transcript and summary are machine-generated