[{"data":1,"prerenderedAt":621},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fadding-prompts-to-vscode":204,"\u002Fblog\u002Fadding-prompts-to-vscode-surround":616},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200],{"title":5,"path":6,"stem":7},"You do not have time to not have tests","\u002Fblog\u002Fyou-do-not-have-time-to-not-have-tests","2.blog\u002F20211217.you-do-not-have-time-to-not-have-tests",{"title":9,"path":10,"stem":11},"Migrate Vue 2 with Vuetify and Jest to Vite and Vitest","\u002Fblog\u002Fmigrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest","2.blog\u002F20220109.migrate-vue-2-with-vuetify-and-jest-to-vite-and-vitest",{"title":13,"path":14,"stem":15},"I am a Dark Matter Developer","\u002Fblog\u002Fi-am-a-dark-matter-developer","2.blog\u002F20220626.i-am-a-dark-matter-developer",{"title":17,"path":18,"stem":19},"Why using Conventional commits is useful","\u002Fblog\u002Fusing-conventional-commits","2.blog\u002F20240623.using-conventional-commits",{"title":21,"path":22,"stem":23},"Why you should make a toolbox repository","\u002Fblog\u002Fwhy-you-should-make-a-toolbox-repository","2.blog\u002F20240630.Why-you-should-make-a-toolbox-repository",{"title":25,"path":26,"stem":27},"Apache Airflow Part 1 - Why and Goals for a near Serverless ELT","\u002Fblog\u002Fapache-airflow-part-1-why-and-goals","2.blog\u002F20240710.apache-airflow-part-1-why-and-goals",{"title":29,"path":30,"stem":31},"Oh My Zsh on your server","\u002Fblog\u002Foh-my-zsh-on-your-server","2.blog\u002F20240711.oh-my-zsh-on-your-server",{"title":33,"path":34,"stem":35},"Fire tablet and YouTube Kids","\u002Fblog\u002Ffire-tablet-and-youtube-kids","2.blog\u002F20240714.fire-tablet-and-youtube-kids",{"title":37,"path":38,"stem":39},"Using Ollama and Continue as a GitHub Copilot Alternative","\u002Fblog\u002Fusing-ollama-and-continue-as-github-copilot-alternative","2.blog\u002F20240723.using-ollama-and-continue-as-github-copilot-alternative",{"title":41,"path":42,"stem":43},"Debugging Local Packages Made Easy with pnpm","\u002Fblog\u002Fdebugging-local-packages-with-pnpm-link","2.blog\u002F20250422.debugging local-packages-with-pnpm-link",{"title":45,"path":46,"stem":47},"Two Weeks with Cloudflare AI and Tools","\u002Fblog\u002Ftwo-weeks-with-cloudflare-ai-and-tools","2.blog\u002F20250509.two-weeks-with-cloudflare-aI-and-tools",{"title":49,"path":50,"stem":51},"Adding Prompts to VS Code - How I Learned to Stop Worrying and Love AI Context","\u002Fblog\u002Fadding-prompts-to-vscode","2.blog\u002F20250528.adding-prompts-to-vscode",{"title":53,"path":54,"stem":55},"My Best Practices","\u002Fblog\u002Fmy-best-practicies","2.blog\u002F20250607.my-best-practicies",{"title":57,"path":58,"stem":59},"Creating my own CLI Tool - Towles Tool","\u002Fblog\u002Ftowles-tool","2.blog\u002F20250607.towles-tool",{"title":61,"path":62,"stem":63},"Software Development Best Practices & ITIL","\u002Fblog\u002Fsoftware-engineering-and-itil-best-practices","2.blog\u002F20250612.software-engineering-and-itil-best-practices",{"title":65,"path":66,"stem":67},"Voice to Text","\u002Fblog\u002Fvoice-to-text","2.blog\u002F20250622.voice-to-text",{"title":69,"path":70,"stem":71},"Setting Up ComfyUI - A Better Alternative to Fooocus","\u002Fblog\u002Fcomfy-ui-setup","2.blog\u002F20250628.comfy-ui-setup",{"title":73,"path":74,"stem":75},"Voice to System","\u002Fblog\u002Fvoice-to-system","2.blog\u002F20250705.voice-to-system",{"title":77,"path":78,"stem":79},"Tips for Claude Code","\u002Fblog\u002Ftips-for-claude-code","2.blog\u002F20250713.tips-for-claude-code",{"title":81,"path":82,"stem":83},"Review That AI Code: Why I Read Every Line Generated Code","\u002Fblog\u002Freview-that-ai-code","2.blog\u002F20250720.review-that-ai-code",{"title":85,"path":86,"stem":87},"My Context Engineering Journey: From Dev Scripts to AI Collaboration","\u002Fblog\u002F20250803-1.my-context-engineering-journey","2.blog\u002F20250803-1.my-context-engineering-journey",{"title":89,"path":90,"stem":91},"Context Engineering at Scale: Enterprise Lessons and the Future of Development","\u002Fblog\u002F20250803-2.context-engineering-at-scale","2.blog\u002F20250803-2.context-engineering-at-scale",{"title":93,"path":94,"stem":95},"Check That Your Tools and Linters Do Not Burn Tokens","\u002Fblog\u002Fcheck-that-your-tools-and-linters-do-not-burn-tokens","2.blog\u002F20250806.check-that-your-tools-and-linters-do-not-burn-tokens",{"title":97,"path":98,"stem":99},"Markdown + AI: The Communication Protocol That Changes Everything","\u002Fblog\u002Fmarkdown-plus-ai-the-communication-protocol-that-changes-everything","2.blog\u002F20250814.markdown-plus-ai-the-communication-protocol-that-changes-everything",{"title":101,"path":102,"stem":103},"Finally: Type-Safe AI in Production (And Why I'm Here For It)","\u002Fblog\u002Ffinally-type-safe-ai-in-production-and-why-im-here-for-it","2.blog\u002F20250819.finally-type-safe-ai-in-production-and-why-im-here-for-it",{"title":105,"path":106,"stem":107},"Dotfiles: Masterpiece or Late Stage Picasso?","\u002Fblog\u002Fdotfiles-masterpiece-or-late-stage-picasso","2.blog\u002F20250822.dotfiles-masterpiece-or-late-stage-picasso",{"title":109,"path":110,"stem":111},"Beyond API Wrappers: Building State-Driven MCP Servers for Long-Horizon Agent Orchestration","\u002Fblog\u002Fbeyond-api-wrappers-mcp-servers","2.blog\u002F20250907.beyond-api-wrappers-mcp-servers",{"title":113,"path":114,"stem":115},"Why Vertical Integration Wins: A Software Engineer's Case for Owning Your Stack","\u002Fblog\u002Fwhy-i-bought-tesla-model-3-vertical-integration","2.blog\u002F20250928.why-i-bought-tesla-model-3-vertical-integration",{"title":117,"path":118,"stem":119},"The Min-Maxer's Trifecta: Building Tools for the Game You Actually Play","\u002Fblog\u002Fmin-maxer-trifecta","2.blog\u002F20251004.min-maxer-trifecta",{"title":121,"path":122,"stem":123},"Read The Source: Learning by Cutting Out The Middleman and RTFM","\u002Fblog\u002Fread-the-source","2.blog\u002F20251010.read-the-source",{"title":125,"path":126,"stem":127},"The Exponential Shift: Why AI Progress Feels Different Now","\u002Fblog\u002Fthe-exponential-shift","2.blog\u002F20251015.the-exponential-shift",{"title":129,"path":130,"stem":131},"Plan Mode for Your Problems, Edit Mode for Claude's","\u002Fblog\u002Fplan-mode-problems-edit-mode-solutions","2.blog\u002F20251019.plan-mode-problems-edit-mode-solutions",{"title":133,"path":134,"stem":135},"AWS Aurora DSQL Looked Perfect Until I Needed the Connection String","\u002Fblog\u002Faws-aurora-dsql-postgres-serverless-authentication","2.blog\u002F20251028.aws-aurora-dsql-postgres-serverless-authentication",{"title":137,"path":138,"stem":139},"Switchback: Browser History for Your Thoughts","\u002Fblog\u002Fswitchback-second-order-reasoning","2.blog\u002F20251205.switchback-second-order-reasoning",{"title":141,"path":142,"stem":143},"AI Pairing: Notes to Self","\u002Fblog\u002Fai-pairing-notes-to-self","2.blog\u002F20251216.ai-pairing-notes-to-self",{"title":145,"path":146,"stem":147},"I've Been Sleeping on Zellij","\u002Fblog\u002Fsleeping-on-zellij","2.blog\u002F20251229.sleeping-on-zellij",{"title":149,"path":150,"stem":151},"Implementing a Ralph Wiggum Loop: The Secret is Session Markers","\u002Fblog\u002Fimplementing-ralph-wiggum-loop-for-autonomous-ai-coding","2.blog\u002F20260114.implementing-ralph-wiggum-loop-for-autonomous-ai-coding",{"title":153,"path":154,"stem":155},"Goodhart's Law Ate My Context Window","\u002Fblog\u002Fgoodharts-law-ate-my-context-window","2.blog\u002F20260119.goodharts-law-ate-my-context-window",{"title":157,"path":158,"stem":159},"Claude Code's Hidden Multi-Agent System Is Real","\u002Fblog\u002Fclaude-code-hidden-multi-agent-system","2.blog\u002F20260124.claude-code-hidden-multi-agent-system",{"title":161,"path":162,"stem":163},"Free Printable Math Sheets for Kids — Number Chart, Skip Counting, Multiplication, and More","\u002Fblog\u002Ffree-printable-number-chart-and-coin-sheets","2.blog\u002F20260214.free-printable-number-chart-and-coin-sheets",{"title":165,"path":166,"stem":167},"We Are Near the End of the Exponential","\u002Fblog\u002Fnear-the-end-of-the-exponential","2.blog\u002F20260214.near-the-end-of-the-exponential",{"title":169,"path":170,"stem":171},"Free Printable Language Arts Sheets for Kids — Sight Words, Parts of Speech, Homophones, and More","\u002Fblog\u002Ffree-printable-sight-words-and-grammar-sheets","2.blog\u002F20260215.free-printable-sight-words-and-grammar-sheets",{"title":173,"path":174,"stem":175},"Interactive Code Execution with Artifacts","\u002Fblog\u002Finteractive-code-execution-with-artifacts","2.blog\u002F20260215.interactive-code-execution-with-artifacts",{"title":177,"path":178,"stem":179},"Free Printable Telling Time Worksheet for Kids — Clock Reference & Practice Sheet","\u002Fblog\u002Ffree-printable-telling-time-worksheet","2.blog\u002F20260216.free-printable-telling-time-worksheet",{"title":181,"path":182,"stem":183},"Claude Code Skills: Teaching AI Your Playbook","\u002Fblog\u002Fclaude-code-skills-guide","2.blog\u002F20260221.claude-code-skills-guide",{"title":185,"path":186,"stem":187},"Building a Multi-Agent Loan Approval System with Human-in-the-Loop","\u002Fblog\u002Fmulti-agent-loan-approval-human-in-the-loop","2.blog\u002F20260225.multi-agent-loan-approval-human-in-the-loop",{"title":189,"path":190,"stem":191},"The Inception of AI Infrastructure: Bottlenecks All the Way Down","\u002Fblog\u002Fbiggest-bottleneck-scaling-ai-compute","2.blog\u002F20260313.biggest-bottleneck-scaling-ai-compute",{"title":193,"path":194,"stem":195},"What I Tell Teams About Claude Code","\u002Fblog\u002Fwhat-i-tell-teams-about-claude-code","2.blog\u002F20260314.what-i-tell-teams-about-claude-code",{"title":197,"path":198,"stem":199},"The Hardest Part of AI Isn't the AI","\u002Fblog\u002Fthe-hardest-part-of-ai-isnt-the-ai","2.blog\u002F20260327.the-hardest-part-of-ai-isnt-the-ai",{"title":201,"path":202,"stem":203},"Claude Code Hooks: The Capability I Left on the Table","\u002Fblog\u002Fclaude-code-hooks-capability-left-on-the-table","2.blog\u002F20260401.claude-code-hooks-capability-left-on-the-table",{"id":205,"title":49,"authors":206,"badge":212,"body":214,"date":606,"description":607,"extension":608,"image":609,"meta":612,"navigation":301,"path":50,"seo":613,"status":614,"stem":51,"__hash__":615},"posts\u002F2.blog\u002F20250528.adding-prompts-to-vscode.md",[207],{"name":208,"to":209,"avatar":210},"Chris Towles","https:\u002F\u002Ftwitter.com\u002FChris_Towles",{"src":211},"\u002Fimages\u002Fctowles-profile-512x512.png",{"label":213},"AI Tools",{"type":215,"value":216,"toc":594},"minimark",[217,221,224,229,232,235,238,241,245,248,251,254,257,261,264,269,272,400,404,407,418,424,502,506,509,517,520,524,527,543,547,550,571,575,578,581,584,587,590],[218,219,220],"p",{},"Right, let's have a chat about something that's been driving me absolutely mental: watching developers fumble about with AI prompts like they're trying to communicate with aliens using interpretive dance.",[218,222,223],{},"You know the drill. You fire up GitHub Copilot or Claude in VS Code, type \"make this better\" and then wonder why the AI responds with the digital equivalent of a confused shrug. It's like asking your GPS for \"somewhere nice\" and then acting surprised when it takes you to a Walmart parking lot.",[225,226,228],"h2",{"id":227},"the-problem-were-all-winging-it","The Problem: We're All Winging It",[218,230,231],{},"Here's the thing that nobody wants to admit: most of us are absolutely rubbish at prompting AI tools. We treat them like magic boxes that should somehow divine our intentions from the most vague possible instructions.",[218,233,234],{},"I've watched brilliant developers - people who can architect distributed systems in their sleep - completely lose their minds when it comes to writing a decent prompt. They'll spend ages crafting the perfect UI interface but then ask an AI to \"fix my code\" without any context whatsoever.",[218,236,237],{},"The result? You get back suggestions that are about as useful as you'd expect from someone who has never seen your codebase. The AI doesn't know your codebase, your conventions, or what you're actually trying to achieve. It's like hiring a consultant and then refusing to tell them what your company does.",[218,239,240],{},"And here's the kicker: everyone knows this is a problem, but we keep doing it anyway. Because admitting that you need to learn how to talk to a computer feels a bit embarrassing, doesn't it?",[225,242,244],{"id":243},"why-this-keeps-happening","Why This Keeps Happening",[218,246,247],{},"The root cause is simple: we've been conditioned to think that AI should \"just work\" without any effort on our part. The marketing departments have done such a good job convincing us that these tools are magical that we've forgotten they're just very sophisticated autocomplete systems.",[218,249,250],{},"AI tools are brilliant, but they're not mind readers. They need context, structure, and clear instructions - just like any other tool in your development arsenal. You wouldn't use a database without understanding SQL, so why would you use AI without understanding how to prompt it properly?",[218,252,253],{},"The other issue is that most developers treat prompting as an afterthought. We spend hours setting up our development environment, configuring our editor, and organizing our code, but we can't be bothered to spend five minutes setting up proper prompts.",[218,255,256],{},"It's the equivalent of using a Ferrari as a shopping trolley - technically it works, but you're missing out on most of the benefits.",[225,258,260],{"id":259},"how-to-actually-fix-this","How to Actually Fix This",[218,262,263],{},"Alright, enough moaning. Let's talk solutions. The good news is that VS Code has some absolutely brilliant features for prompt engineering that most people completely ignore.",[265,266,268],"h3",{"id":267},"_1-create-prompt-files","1. Create Prompt Files",[218,270,271],{},"First things first: stop typing the same context over and over again. Create dedicated prompt files in your project:",[273,274,279],"pre",{"className":275,"code":276,"language":277,"meta":278,"style":278},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F .vscode\u002Fprompts\u002Fcode-review.md\nYou are reviewing TypeScript code for a NuxtJS application.\n\nContext:\n\n- This is a personal blog built with Nuxt 3 and NuxtUI Pro\n- We use TypeScript with strict mode enabled\n- Code style: camelCase variables, PascalCase components, single quotes\n- We prefer composition API and async\u002Fawait\n\nWhen reviewing code, focus on:\n\n1. Type safety and proper TypeScript usage\n2. Performance implications\n3. Accessibility concerns\n4. Code readability and maintainability\n\nCurrent file context: [PASTE FILE CONTENT HERE]\n\nPlease review this code and suggest improvements.\n","markdown","",[280,281,282,290,296,303,309,314,320,326,332,338,343,349,354,360,366,372,378,383,389,394],"code",{"__ignoreMap":278},[283,284,287],"span",{"class":285,"line":286},"line",1,[283,288,289],{},"\u002F\u002F .vscode\u002Fprompts\u002Fcode-review.md\n",[283,291,293],{"class":285,"line":292},2,[283,294,295],{},"You are reviewing TypeScript code for a NuxtJS application.\n",[283,297,299],{"class":285,"line":298},3,[283,300,302],{"emptyLinePlaceholder":301},true,"\n",[283,304,306],{"class":285,"line":305},4,[283,307,308],{},"Context:\n",[283,310,312],{"class":285,"line":311},5,[283,313,302],{"emptyLinePlaceholder":301},[283,315,317],{"class":285,"line":316},6,[283,318,319],{},"- This is a personal blog built with Nuxt 3 and NuxtUI Pro\n",[283,321,323],{"class":285,"line":322},7,[283,324,325],{},"- We use TypeScript with strict mode enabled\n",[283,327,329],{"class":285,"line":328},8,[283,330,331],{},"- Code style: camelCase variables, PascalCase components, single quotes\n",[283,333,335],{"class":285,"line":334},9,[283,336,337],{},"- We prefer composition API and async\u002Fawait\n",[283,339,341],{"class":285,"line":340},10,[283,342,302],{"emptyLinePlaceholder":301},[283,344,346],{"class":285,"line":345},11,[283,347,348],{},"When reviewing code, focus on:\n",[283,350,352],{"class":285,"line":351},12,[283,353,302],{"emptyLinePlaceholder":301},[283,355,357],{"class":285,"line":356},13,[283,358,359],{},"1. Type safety and proper TypeScript usage\n",[283,361,363],{"class":285,"line":362},14,[283,364,365],{},"2. Performance implications\n",[283,367,369],{"class":285,"line":368},15,[283,370,371],{},"3. Accessibility concerns\n",[283,373,375],{"class":285,"line":374},16,[283,376,377],{},"4. Code readability and maintainability\n",[283,379,381],{"class":285,"line":380},17,[283,382,302],{"emptyLinePlaceholder":301},[283,384,386],{"class":285,"line":385},18,[283,387,388],{},"Current file context: [PASTE FILE CONTENT HERE]\n",[283,390,392],{"class":285,"line":391},19,[283,393,302],{"emptyLinePlaceholder":301},[283,395,397],{"class":285,"line":396},20,[283,398,399],{},"Please review this code and suggest improvements.\n",[265,401,403],{"id":402},"_2-use-vs-codes-built-in-prompt-features","2. Use VS Code's Built-in Prompt Features",[218,405,406],{},"VS Code has some amazing features that most people never discover:",[218,408,409,413,414,417],{},[410,411,412],"strong",{},"Workspace Instructions",": Create a ",[280,415,416],{},".vscode\u002Fcopilot-instructions.md"," file (which you probably already have if you're reading this blog). This gives Copilot context about your entire project without you having to repeat yourself constantly.",[218,419,420,423],{},[410,421,422],{},"Custom Commands",": Set up custom commands in your settings for common prompting tasks:",[273,425,429],{"className":426,"code":427,"language":428,"meta":278,"style":278},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"github.copilot.chat.welcomeMessage\": \"never\",\n  \"github.copilot.editor.enableAutoCompletions\": true,\n  \"github.copilot.chat.localeOverride\": \"en\"\n}\n","json",[280,430,431,437,464,478,497],{"__ignoreMap":278},[283,432,433],{"class":285,"line":286},[283,434,436],{"class":435},"sMK4o","{\n",[283,438,439,442,446,449,452,455,459,461],{"class":285,"line":292},[283,440,441],{"class":435},"  \"",[283,443,445],{"class":444},"spNyl","github.copilot.chat.welcomeMessage",[283,447,448],{"class":435},"\"",[283,450,451],{"class":435},":",[283,453,454],{"class":435}," \"",[283,456,458],{"class":457},"sfazB","never",[283,460,448],{"class":435},[283,462,463],{"class":435},",\n",[283,465,466,468,471,473,475],{"class":285,"line":298},[283,467,441],{"class":435},[283,469,470],{"class":444},"github.copilot.editor.enableAutoCompletions",[283,472,448],{"class":435},[283,474,451],{"class":435},[283,476,477],{"class":435}," true,\n",[283,479,480,482,485,487,489,491,494],{"class":285,"line":305},[283,481,441],{"class":435},[283,483,484],{"class":444},"github.copilot.chat.localeOverride",[283,486,448],{"class":435},[283,488,451],{"class":435},[283,490,454],{"class":435},[283,492,493],{"class":457},"en",[283,495,496],{"class":435},"\"\n",[283,498,499],{"class":285,"line":311},[283,500,501],{"class":435},"}\n",[265,503,505],{"id":504},"_3-structure-your-prompts-like-code","3. Structure Your Prompts Like Code",[218,507,508],{},"Treat your prompts like any other code - they should be maintainable, reusable, and well-organized. Create a prompt library:",[273,510,515],{"className":511,"code":513,"language":514},[512],"language-text",".vscode\u002F\n├── prompts\u002F\n│   ├── code-review.md\n│   ├── bug-fix.md\n│   ├── refactor.md\n│   ├── test-generation.md\n│   └── documentation.md\n","text",[280,516,513],{"__ignoreMap":278},[218,518,519],{},"Each prompt should have a clear purpose and consistent structure. Think of them as functions - they should do one thing well.",[265,521,523],{"id":522},"_4-use-progressive-context-building","4. Use Progressive Context Building",[218,525,526],{},"Instead of dumping everything into one massive prompt, build context progressively:",[528,529,530,534,537,540],"ol",{},[531,532,533],"li",{},"Start with the high-level context (project type, tech stack)",[531,535,536],{},"Add specific context (current file, related files)",[531,538,539],{},"State your specific request clearly",[531,541,542],{},"Provide examples of what good output looks like",[265,544,546],{"id":545},"_5-leverage-vs-code-extensions","5. Leverage VS Code Extensions",[218,548,549],{},"There are some brilliant extensions that make prompt engineering much easier:",[551,552,553,559,565],"ul",{},[531,554,555,558],{},[410,556,557],{},"Prompt Engineering Helper",": Provides templates and snippets for common prompts",[531,560,561,564],{},[410,562,563],{},"AI Prompt Manager",": Lets you save and organize your favorite prompts",[531,566,567,570],{},[410,568,569],{},"Context Manager",": Helps you include relevant file context automatically",[225,572,574],{"id":573},"the-bottom-line","The Bottom Line",[218,576,577],{},"Look, I get it. Setting up proper prompts feels like extra work when you just want to get stuff done. But here's the thing: spending a bit of time upfront to create good prompts will save you hours of frustration later.",[218,579,580],{},"Think of it like setting up your linting rules or configuring your build system - it's a one-time investment that pays dividends every single day.",[218,582,583],{},"And honestly? Once you start using AI tools properly, with good context and clear instructions, it's genuinely transformative. You'll wonder how you ever managed without them.",[218,585,586],{},"Just please, for the love of all that's holy, stop asking AI to \"make this better\" without any context. Your future self (and your colleagues) will thank you.",[218,588,589],{},"Now stop reading blog posts and go set up some proper prompts. Your productivity will thank you, and you might even enjoy working with AI tools instead of fighting them.",[591,592,593],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":278,"searchDepth":292,"depth":292,"links":595},[596,597,598,605],{"id":227,"depth":292,"text":228},{"id":243,"depth":292,"text":244},{"id":259,"depth":292,"text":260,"children":599},[600,601,602,603,604],{"id":267,"depth":298,"text":268},{"id":402,"depth":298,"text":403},{"id":504,"depth":298,"text":505},{"id":522,"depth":298,"text":523},{"id":545,"depth":298,"text":546},{"id":573,"depth":292,"text":574},"2025-05-28","Stop fumbling around with AI prompts and start engineering them like the professional you pretend to be","md",{"src":610,"alt":611},"\u002Fimages\u002Fblog\u002F20250528-2154-adding-prompts-to-vscode.png","A developer's dual monitor setup at night showing VS Code on the main screen with a well-organized `.vscode\u002Fprompts` folder structure open in the sidebar, glowing code snippets and markdown prompt files visible, a second monitor displaying an AI chat interface with contextual responses. Dramatic desk lamp illumination from the left creates warm pools of light on the mechanical keyboard and coffee mug, while cool blue monitor glow illuminates the developer's face in contemplation, shallow depth of field with focus on the organized prompt files. Cinematic realism with high contrast between warm practical lighting and cool screen glow, professional workspace photography, 8k quality, teal and orange color grading, rule of thirds composition with negative space on the right for text overlay.",{},{"title":49,"description":607},"published","2NzUN53kV6dP_n1DVciOLvUMbDGAcurpnvB470snnMU",[617,619],{"title":45,"path":46,"stem":47,"description":618,"status":614,"children":-1},"My Odyssey (and Why I Switched to AWS Bedrock)",{"title":53,"path":54,"stem":55,"description":620,"status":614,"children":-1},"Writing down where I'm at with my best practices in software development and AI development",1776221196452]