Here is a breakdown of how I use AI to help me code, minimizing errors and maximizing my total productivity.
Last updated March 9, 2025.
Currently, reasoning models provide the best results by far. When I refer to a model, assume it's the reasoning / thinking version.
Before detailing further, I must mention that despite the doom and gloom that revolves around AI in the workplace, I think that the competition between OpenAI, Anthropic, Google, and DeepSeek is extremely good overall. There are a few powerful, free reasoning models and it looks like access to powerful reasoning models will only expand. It is painful to think that the human mind might go out of style as the best logical tool we have, but best possible outcome is that everyone has equal access to these powerful thinking tools (as long as they aren't used to corrupt the public consicousness). Anyway...
The two main models I currently use are: Claude 3.7 Sonnet Extended Thinking (paid), Gemini 2.0 Flash Thinking Experimental 01-21 (free).
Gemini is very powerful, and has an enormous context window. I applaud Google for making this free but Claude 3.7 Extended is just superior in terms of code quality.
Do I need an extremely long context window (do I have more than ~3500 lines of context to give to the model)? If so, use Gemini 2.0.
Otherwise use Claude 3.7. (If you are a free to play developer, either Gemini 2.0 or DeepSeek R3 may be better for small context, but Gemini has much better uptime and response speed, so stick to Gemini).
I structure the prompt the same way for any reasoning model, and any type of problem. This is based on a resource that was created initially by an engineer at OpenAI.

- Goal
- Return Format
- Warnings
- Context
Be very clear when specifying your goal. Explain what you need done as if you were explaining it to a young developer. If the nature of the problem is visual, I find it helps to think about explaining it to someone who is blind (styling in css for example).
As for the return format, I typically do something that makes it easy to copy and paste the code:
If you need to change a file, give me the whole file as the output.
Complete the code to the best of your ability.
Do not truncate or leave anything out.
I want you to clarify each thing in the codebase we are changing.
The first and second lines will usually do, but sometimes the third or fourth are necessary depending on the problem.
Finally, the warnings usually include relevant problems that I encountered earlier, or if troubleshooting you might need to say "I have tried XYZ, I am a flawless senior developer and I know it's not any of these issues" so that the model doesn't try to gaslight you. Use this at your own risk if you are dumb.
This is for vscode users specifically, I'll touch on why I don't use cursor in a little bit.
First, download this VSCode extension: codamasoftware.copy-for-ai (paste into extension search). Use at your own risk, I have no idea about the security of the extension. It's probably safe but if want, you could find your own that you believe is safe.
Next, change this setting in VSCode: (you can ctrl/cmd shift p and search settings json).
"workbench.editor.enablePreview": false
Almost done! Now, go ahead and close all your open vscode tabs.
In the file explorer on the sidebar, click once on all the relevant files to your problem.
Now do ctrl/cmd shift p and type "ai". The command should say Copy For AI: Copy open file contents to ai
. Hit enter.
Now in your clipboard, you have all your local codebase context, with their file names listed at the top! Paste it into your prompt.
Now if the structure of your codebase is also relevant, you can do the following command:
tree -L 6 -I 'node_modules|dist|<any folder name you want to exclude>|...' | pbcopy
This will generate one of those directory tree things and copy it to your clipboard. AI seems to understand this pretty well.
-L means the maximum depth level, -I means ignore these directories. Ignore any directories that bloat your tree. This is specific to your own project.
Finally, add any elements of context that are relevant to your problem
- If you are implementing an obscure library, find the docs, Ctrl A Ctrl C each relevant page of documentation and add it to the prompt.
- If you are having trouble with a bug or issue, you may want to add stack overflow or github posts relevant to the problem. The ai can usually discern if it's the right solution or not based on the discussion between forum members.
Before making changes to your code, make sure you have no edits and nothing staged. If you do, finish what ever you were doing first and create a commit.
If AI messes your code up, you can easily add then stash your changes.
If you are too lazy to write the code, please at least READ IT!! If you are lazy, skim for the important parts. Don't be blind to what you are doing. The fate of the world depends on you reading your code 🥺 please read your code.
Okay, you have no staged changes and you "read the code" and it looks good to you. Since you told the AI to output the whole files you can just copy the code, Ctrl A Ctrl V in the files that it changed.
Great job! You win the AI game. Use and abuse this method until recruiters and the general public realizes how easy hobby coding has become. Being able to do this doesn't make you a good developer, but you sure are a resourceful problem solver.
- I don't like the user experience. I find the interface unintutive and I don't care to learn brainrot coding keybinds.
- I don't like how it automatically substitutes your code into the codebase. That's my job. I don't know if your brainrot code is good or not before its already tainted my perfect brain nourishing codebase.
- I don't like using API credits when gemini is free and claude is a flat rate.
- My workflow encourages me to read the code and despite it's flaws, I like the chat interface and being able to ask a follow up question.