{"id":17249,"date":"2025-07-07T22:11:18","date_gmt":"2025-07-07T22:11:18","guid":{"rendered":"https:\/\/www.comet.com\/site\/?p=17249"},"modified":"2025-09-24T16:59:03","modified_gmt":"2025-09-24T16:59:03","slug":"cursor-vibe-coding","status":"publish","type":"post","link":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/","title":{"rendered":"AI Assisted Coding with Cursor AI and Opik"},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">How AI can help you move beyond vibe coding and become an effective AI engineer faster than you think<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1150\" height=\"208\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-opik-vibe-coding.png\" alt=\"A blog about using Opik and Cursor AI for vibe coding\" class=\"wp-image-17267\" srcset=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-opik-vibe-coding.png 1150w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-opik-vibe-coding-300x54.png 300w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-opik-vibe-coding-1024x185.png 1024w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-opik-vibe-coding-768x139.png 768w\" sizes=\"auto, (max-width: 1150px) 100vw, 1150px\" \/><\/figure>\n\n\n\n<p>Dear developers: Your job is safe, and it actually just got a lot better too!<\/p>\n\n\n\n<p>A few weeks ago, I took on the task of building an end-to-end LLM app, and I added a new tool to my tech stack alongside <strong>Opik<\/strong>, my go-to for <a href=\"https:\/\/www.comet.com\/site\/blog\/llm-evaluation-guide\/\">LLM evaluation<\/a>. I used an AI-powered code editor called <a href=\"https:\/\/www.cursor.com\/\">Cursor AI<\/a>. Cursor is designed specifically for software engineers like me to leverage AI to assist in code generation. With Cursor\u2019s help, I was able to deliver a project in a week that would have taken me months\u2014but AI alone couldn\u2019t have delivered it without me.<\/p>\n\n\n\n<p>Here is what I noticed: Without knowing how to code, I would not have been able to craft the right prompts to generate meaningful code or detect and fix the errors it made. However, due to my extensive background in software engineering and my awareness of coding best practices, I can iterate with an AI assistant on my codebase, utilizing AI as a collaborative tool while guiding it to deliver working and reliable code.<\/p>\n\n\n\n<p>AI-assisted coders today use tools like GitHub Copilot, Cursor AI, or even just copy-pasting code into AI chatbots like ChatGPT, to help them generate code. Before I tried Cursor, I was that developer copy-pasting code snippets into ChatGPT to try to speed up my development cycle or debug something. Although this approach did speed up development, it wasn\u2019t effective in the long run because ChatGPT did not have total context on the surrounding codebase, or deeply understand my plan for my project. Cursor AI integrates deeply with your codebase, enabling developers to write, refactor, and understand code more efficiently using natural language prompts. Cursor builds on top of VS Code, adding features such as intelligent autocomplete, codebase-aware chat, and AI-assisted debugging. In this context, the AI acts as a collaborator, offering suggestions based on the context of the entire code base.<\/p>\n\n\n\n<p>As generative language models, LLMs are actually great at code. Why? Because code is a language! So, the underlying mathematical architecture of LLMs built to model human language actually lends itself very well to coding languages as well. However, I notice they still fall short in logical decision making, such as strategically planning the project, debugging, and sensibly structuring the repo. That is where developers come in to guide them.<\/p>\n\n\n\n<p>There is a difference between truly <strong>vibe coding<\/strong> with Cursor and <strong>AI-assisted coding<\/strong> with Cursor. Let me break it down.<\/p>\n\n\n\n<p>\ud83d\udc4e <strong>Vibe coding<\/strong> is a new approach to software development where, instead of manually typing code, developers use natural language to describe the end product, and the AI handles every step of the technical implementation. This does not require knowledge of software engineering, and I also don\u2019t recommend this approach if the goal is to create working or reliable software.<\/p>\n\n\n\n<p>\ud83d\udc4d<strong>AI-assisted coding<\/strong> is different. It\u2019s a step beyond Cursor vibe coding. This is a new approach to software development, where programmers primarily interact with LLMs to generate code in an iterative manner. In this case, the developers are not only focused on the end result of the implementation, but also on hands-on guidance during the implementation. This is, by far, the best approach, and it requires a basic foundational knowledge of software engineering.<\/p>\n\n\n\n<p>But the learning curve to become an excellent AI developer is now way shorter. With tools like Cursor AI and Opik, anyone can become a skilled developer and start building high-quality, reliable AI tools themselves. All you need to be an effective AI-assisted coder is a basic knowledge of software engineering best practices and core AI concepts, and you can get all this knowledge from university programs or free online courses. If you want to build AI projects, I recommend knowledge in the following areas, and have linked a few online and free courses to help you get started.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>1-2 coding languages of your choice (<a href=\"https:\/\/learnpythonthehardway.org\/\">python<\/a>)<\/li>\n\n\n\n<li><a href=\"https:\/\/www.udemy.com\/course\/master-solid-principles-for-software-design-architecture\/\">Software design principles<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.amazon.com\/Fundamentals-Data-Engineering-Joe-Reis-ebook\/dp\/B0B4VH4T37?ref_=ast_author_mpb\">Data Systems<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.amazon.com\/LLM-Engineers-Handbook-engineering-production\/dp\/1836200072\/\">AI Engineering handbook<\/a> and online <a href=\"https:\/\/decodingml.substack.com\/p\/master-production-ai-with-our-end?open=false#%C2%A7philoagents-course\">course building LLM apps<\/a><\/li>\n<\/ul>\n\n\n\n<p>Also, AI Coding tools like Cursor AI can teach you how to be a better developer. I said you need to know how to code to be an effective AI-assisted software engineer, but I also want to point out that this tool can be used to jumpstart and accelerate learning to be a good software engineer in the first place. Once you have the foundational understanding from the courses and books above or similar, you can start coding with AI assistance and continue your learning journey through that experience.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-poker-1024x530.png\" alt=\"A dashboard screenshot of cursor vibe coding tool\" class=\"wp-image-17252\" srcset=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-poker-1024x530.png 1024w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-poker-300x155.png 300w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-poker-768x397.png 768w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-poker-1536x795.png 1536w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-poker.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Figure 1: Cursor has context of your entire codebase, so you can ask it questions about your code. This helps you understand what it&#8217;s building and guide it, and it also enables you to learn from what it&#8217;s doing. This can be an educational tool and an efficiency tool if you ask it why it made the design decisions it did.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"554\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-screenshot-1024x554.png\" alt=\"A dashboard screenshot of cursor vibe coding prompts\" class=\"wp-image-17253\" srcset=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-screenshot-1024x554.png 1024w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-screenshot-300x162.png 300w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-screenshot-768x416.png 768w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-screenshot-1536x831.png 1536w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-screenshot.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Figure 2. Getting the right detailed prompt helps AI coding assistants get the right code. Understanding code means I know how to talk about code in accurate detail, and can write the best prompts to generate code<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-best-practices-for-effective-ai-assisted-coding-beyond-vibe-coding\">Best Practices for Effective AI-Assisted Coding beyond Vibe Coding<\/h2>\n\n\n\n<p>After completing my first AI-assisted coding project, I&#8217;ve gathered some valuable insights about how to use an AI coding assistant properly. I have discovered some personal best practices that will help me ensure the code I deliver remains reliable while also improving my efficiency with AI assistance. There are both right and wrong ways to do this. Let me break it down.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-prompt-engineering\">Prompt Engineering<\/h3>\n\n\n\n<p>One of the most effective ways to maximize the benefits of using an AI Coding Assistant like the one in Cursor is to master prompt engineering. I quickly discovered that the more specific and detailed my prompts were, the better the code the AI would produce.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>Be specific<\/em><\/strong>: Instead of making vague requests like \u201cwrite a function for X,\u201d I learned to articulate precisely what I wanted: \u201cwrite a Python function that takes a list of integers and returns only the even numbers.\u201d If the first suggestion wasn&#8217;t quite right, I would refine my prompt by adding more context or asking follow-up questions. Cursor thrives on clarity; the more information you provide, the more effectively it responds.<\/li>\n\n\n\n<li><strong><em>Include examples<\/em><\/strong>: Another useful tactic is incorporating code examples, comments, or docstrings into your prompts. Adding annotations like this with your detailed descriptions can guide it in implementing or expanding upon your ideas. I often wrote out the logic in comments or pseudo-code first and then asked the AI assistant to convert those comments into functional code. This approach not only improved the readability of the code but also helped ensure that the AI\u2019s output aligned with my intentions.<\/li>\n\n\n\n<li><strong><em>Use your engineering skillset<\/em><\/strong>: Additionally, using true engineering terminology is critical. Understanding the language of your craft, regardless of what it is, will enable you to accurately describe your requirements in a prompt and guide AI in generating the desired output. Prompt engineering is a skill; the more proficient you become at discussing what you&#8217;re trying to create in precise technical terms and details, the more successful you will be at collaborating with AI to produce something great.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-pair-programming-mindset\">Pair Programming Mindset<\/h3>\n\n\n\n<p>The best way to work with an AI coding assistant is to treat it like another developer on your team. The most productive sessions happened when I engaged in a back-and-forth workflow, asking it to generate code, reviewing the results, and inquiring about the reasoning for its design choices, then refining either the prompt or the code as needed. This collaborative approach brought out the best in both myself and the AI.<br>I also made it a habit to ask the AI coding assistant &#8220;why&#8221; questions when uncertain about its suggestions. Requesting explanations not only helped me learn but also allowed me to catch mistakes or misunderstandings or identify similar solutions before they became problematic. The more I collaborated with the coding assistant, the more I realized that the future of software development relies on teamwork between humans and AI.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-plan-your-project-and-codebase\">Plan your Project and Codebase<\/h3>\n\n\n\n<p>One of the most important lessons I&#8217;ve learned is the necessity of having a plan before starting to code with AI. It may be tempting to simply open your AI tool and request it to build a feature or even an entire app by describing the end product, but this approach can lead to total chaos and a codebase you don\u2019t understand and can\u2019t build on or maintain. While AI is powerful, without a clear idea of how you would structure the code yourself, you risk ending up with a jumble of disconnected snippets that fail to integrate as the codebase matures.<\/p>\n\n\n\n<p>So before I typed a single prompt or generated any code, I took the time to map out the modules, data flow, and responsibilities of each component of my app. This blueprint guided the AI, making the entire process smoother and more productive. This approach allows you to maintain control over the architecture and ensures that each piece aligns with your overall plan. And this is one of the reasons we still need developers.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>\ud83d\udd0d <em>Pro tip: AI works best at solving tiny, discrete, and well-defined tasks. You need to design the problem first.<\/em><\/strong><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-build-iteratively\">Build Iteratively<\/h3>\n\n\n\n<p>Building iteratively is the key to any successful coding project, and AI-assisted projects are no exception. I quickly learned that trying to generate too much code at once often leads to confusion, bugs, and wasted time. Instead, I focused on constructing my app piece by piece, validating each part before moving on to the next.<\/p>\n\n\n\n<p>This incremental approach made it easy to catch mistakes early, adapt to new requirements, and maintain a clean codebase. Each time I finished a small chunk, I would test and review it before proceeding to the next task. This method not only simplified debugging but also provided me with a sense of progress, momentum, and good checkpoints in GitHub.<\/p>\n\n\n\n<p>Keeping things simple is equally important. The more complex your prompt or code structure, the more likely the AI is to become confused or produce unexpected results. I found that by concentrating on one function or module at a time, I could guide the AI to generate high-quality code that met my needs and adhered to my vision for the implementation plan. If I ever felt stuck, I would break the problem down even further.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-the-importance-of-debugging-and-logging\">The Importance of Debugging and Logging<\/h3>\n\n\n\n<p>When building an LLM application with a code assistant, the debugging step is where AI logging tools like Opik really shine. Collecting comprehensive logs will assist the AI coding assistant with great context for building and debugging. I logged all my traces with Opik so I could chat with my logs to better understand and debug every step of my LLM-powered app. The Cursor integration with <a href=\"https:\/\/www.comet.com\/docs\/opik\/prompt_engineering\/mcp_server#setting-up-the-mcp-server\">Opik\u2019s MCP server<\/a> was a game changer because it allowed me not only to manage prompts and log traces to monitor from the app I built, but also provided context to the AI coding assistant, helping me analyze and debug issues with the app as I built it in real-time. I could see exactly what the AI was doing, the prompts it was using, and how it responded to different inputs. This level of visibility made it so much easier to spot bugs, optimize performance, and understand the behavior of my app.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"689\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-traces-1024x689.png\" alt=\"Screenshot of Opik dashboard for cursor vibe coding trace logging\" class=\"wp-image-17256\" srcset=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-traces-1024x689.png 1024w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-traces-300x202.png 300w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-traces-768x516.png 768w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-traces-1536x1033.png 1536w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-traces.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Figure 3. Example of a complex trace logging every step.<\/figcaption><\/figure>\n\n\n\n<p>One of my favorite features is the <a href=\"https:\/\/github.com\/jverre\/opik-chat-history\">Opik Chat History extension for VSCode<\/a>. I often lose track of the conversations I have with Cursor when building new features, but with this extension, all my chat sessions are synced to Opik automatically. I can review them later, share them with my team, or even post them online. This turns every coding session into a learning opportunity, and it means my thought process is never lost. Plus, with Opik\u2019s open-source platform, I can query traces and analyze metrics. You can also take it one step further and use the traces logged in Opik to improve your prompts. One technique that works well involves fetching traces and then asking the LLM to suggest an improvement based on these traces.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\ud83d\udd0d <em><strong>Pro tip: to reduce costs while developing, use o3-mini or another smaller model for debugging, and gscale up to pt-4-turbo reasoning model once your app is live.<\/strong><\/em><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"260\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-miguel-1024x260.png\" alt=\"Example for reducing costs for cursor vibe coding\" class=\"wp-image-17258\" srcset=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-miguel-1024x260.png 1024w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-miguel-300x76.png 300w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-miguel-768x195.png 768w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/cursor-vibe-coding-miguel.png 1246w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-refactor-refactor-refactor\">Refactor! Refactor! Refactor!<\/h3>\n\n\n\n<p>While using an AI assistant to code my project, I often took breaks from building new features to step back and refactor the existing codebase. Refactoring is not just a best practice; it&#8217;s a necessity when working with AI-assisted code. Early in my project, everything was confined to a single main file, which quickly became unwieldy spaghetti code &#8211; a developers nightmare. No one likes spaghetti code!<\/p>\n\n\n\n<p>So I made it a point to refactor my code before completing the project, and along the way. I would break the code into logical modules and clean up as I progressed. These routine, periodic cleanups helped prevent the codebase from becoming overly complex or disorganized, making it much easier to maintain long term.<\/p>\n\n\n\n<p>Each time I added a new feature or fixed a bug, I would take a moment to look for opportunities to simplify and organize the code. This not only made the code easier to work with but also enabled the AI to generate helpful suggestions as we continued to build out the codebase.<\/p>\n\n\n\n<p>In the end, a well-structured codebase is the foundation for successful AI-assisted development, and it&#8217;s important that the human developer has communicated a clear vision for this structure and ensures the AI-generated code adheres to that vision.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\ud83d\udd0d <em><strong>Pro tip: If you\u2019re looking for a guide for building clean reusable code, I love Miguel\u2019s take <a href=\"https:\/\/theneuralmaze.substack.com\/p\/building-agent-projects-without-losing\">here<\/a>.<\/strong><\/em><\/pre>\n\n\n\n<p>It is also important to review your code together with your AI assistant for overall quality. After a significant refactor, I prompted it to evaluate my code and provide a report. This feedback was invaluable in designing the codebase and keeping it organized in a way that was maintainable, easy to debug, and facilitated collaboration.<\/p>\n\n\n\n<pre class=\"wp-block-verse\"><strong>\ud83c\udfc6 Final Assessment<br><\/strong>Grade: A+ Your codebase demonstrates excellent software engineering practices:<br>\u2705 Zero duplication of business logic<br>\u2705 Excellent modular organization<br>\u2705 Clear separation of concerns<br>\u2705 Consistent patterns throughout<br>\u2705 Centralized utilities properly used everywhere<br>\u2705 Clean architecture with logical module boundaries<\/pre>\n\n\n\n<pre class=\"wp-block-verse\">The structure is production-ready and maintainable. You've successfully avoided the common pitfalls of code duplication and have created a well-organized, professional codebase. Great work! \ud83c\udf89<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p>AI-assisted coding is not about replacing developers; it\u2019s about empowering us. With tools like Cursor AI and Opik, you can code faster, learn faster, and deliver higher-quality software than ever before. The real magic happens when you, the developer, stay engaged by using your skillset to collaborate with AI as you build. So the future of software engineering is collaborative and efficient, and I find that exciting!<\/p>\n\n\n\n<p>If you want to become an effective AI-enabled Engineer, then begin learning and building with AI now, and if you use it right, AI can help you achieve your goals faster than you ever thought possible.<\/p>\n\n\n\n<p>I\u2019m excited to see what you build! \ud83d\ude80<\/p>\n\n\n\n<p><em>Learn more about my tech stack:<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em><a href=\"https:\/\/github.com\/comet-ml\/opik\">Opik<\/a> is an Open-Source LLM evaluation platform that allows you to keep track of all your LLM chat conversations in one place.<\/em><\/li>\n\n\n\n<li><em><a href=\"https:\/\/www.cursor.com\/\">Cursor<\/a> is &#8220;the&#8221; AI Code Editor of my dreams.<\/em><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How AI can help you move beyond vibe coding and become an effective AI engineer faster than you think Dear developers: Your job is safe, and it actually just got a lot better too! A few weeks ago, I took on the task of building an end-to-end LLM app, and I added a new tool [&hellip;]<\/p>\n","protected":false},"author":144,"featured_media":17284,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"customer_name":"","customer_description":"","customer_industry":"","customer_technologies":"","customer_logo":"","footnotes":""},"categories":[65],"tags":[],"coauthors":[226],"class_list":["post-17249","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-llmops"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Beyond Vibe Coding: AI-Assisted Coding With Cursor and Opik<\/title>\n<meta name=\"description\" content=\"A seasoned software dev shows you how to get the most out of AI-assisted code tools like Cursor and avoid the pitfalls of pure vibe coding.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AI Assisted Coding with Cursor AI and Opik\" \/>\n<meta property=\"og:description\" content=\"A seasoned software dev shows you how to get the most out of AI-assisted code tools like Cursor and avoid the pitfalls of pure vibe coding.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/\" \/>\n<meta property=\"og:site_name\" content=\"Comet\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cometdotml\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-07T22:11:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-24T16:59:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/Cursor-Opik.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Claire Longo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Cometml\" \/>\n<meta name=\"twitter:site\" content=\"@Cometml\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Claire Longo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Beyond Vibe Coding: AI-Assisted Coding With Cursor and Opik","description":"A seasoned software dev shows you how to get the most out of AI-assisted code tools like Cursor and avoid the pitfalls of pure vibe coding.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/","og_locale":"en_US","og_type":"article","og_title":"AI Assisted Coding with Cursor AI and Opik","og_description":"A seasoned software dev shows you how to get the most out of AI-assisted code tools like Cursor and avoid the pitfalls of pure vibe coding.","og_url":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/","og_site_name":"Comet","article_publisher":"https:\/\/www.facebook.com\/cometdotml","article_published_time":"2025-07-07T22:11:18+00:00","article_modified_time":"2025-09-24T16:59:03+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/Cursor-Opik.png","type":"image\/png"}],"author":"Claire Longo","twitter_card":"summary_large_image","twitter_creator":"@Cometml","twitter_site":"@Cometml","twitter_misc":{"Written by":"Claire Longo","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/#article","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/"},"author":{"name":"Claire Longo","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/43fe6d5aa64cc0ab51e1aafefec3cf95"},"headline":"AI Assisted Coding with Cursor AI and Opik","datePublished":"2025-07-07T22:11:18+00:00","dateModified":"2025-09-24T16:59:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/"},"wordCount":2449,"commentCount":0,"publisher":{"@id":"https:\/\/www.comet.com\/site\/#organization"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/#primaryimage"},"thumbnailUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/Cursor-Opik.png","articleSection":["LLMOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/","url":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/","name":"Beyond Vibe Coding: AI-Assisted Coding With Cursor and Opik","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/#primaryimage"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/#primaryimage"},"thumbnailUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/Cursor-Opik.png","datePublished":"2025-07-07T22:11:18+00:00","dateModified":"2025-09-24T16:59:03+00:00","description":"A seasoned software dev shows you how to get the most out of AI-assisted code tools like Cursor and avoid the pitfalls of pure vibe coding.","breadcrumb":{"@id":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/#primaryimage","url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/Cursor-Opik.png","contentUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/07\/Cursor-Opik.png","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/www.comet.com\/site\/blog\/cursor-vibe-coding\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.comet.com\/site\/"},{"@type":"ListItem","position":2,"name":"AI Assisted Coding with Cursor AI and Opik"}]},{"@type":"WebSite","@id":"https:\/\/www.comet.com\/site\/#website","url":"https:\/\/www.comet.com\/site\/","name":"Comet","description":"Build Better Models Faster","publisher":{"@id":"https:\/\/www.comet.com\/site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.comet.com\/site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.comet.com\/site\/#organization","name":"Comet ML, Inc.","alternateName":"Comet","url":"https:\/\/www.comet.com\/site\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/#\/schema\/logo\/image\/","url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/01\/logo_comet_square.png","contentUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/01\/logo_comet_square.png","width":310,"height":310,"caption":"Comet ML, Inc."},"image":{"@id":"https:\/\/www.comet.com\/site\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/cometdotml","https:\/\/x.com\/Cometml","https:\/\/www.youtube.com\/channel\/UCmN63HKvfXSCS-UwVwmK8Hw"]},{"@type":"Person","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/43fe6d5aa64cc0ab51e1aafefec3cf95","name":"Claire Longo","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/image\/0dc98fefa0a3003e8ddfaa015b931261","url":"https:\/\/secure.gravatar.com\/avatar\/4d4fd22b731bd03a9984d65cdc9764ce82c02464bc68669118e2d537ee42101c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4d4fd22b731bd03a9984d65cdc9764ce82c02464bc68669118e2d537ee42101c?s=96&d=mm&r=g","caption":"Claire Longo"},"url":"https:\/\/www.comet.com\/site\/blog\/author\/claire_longo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/17249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/users\/144"}],"replies":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/comments?post=17249"}],"version-history":[{"count":3,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/17249\/revisions"}],"predecessor-version":[{"id":17632,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/17249\/revisions\/17632"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/media\/17284"}],"wp:attachment":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/media?parent=17249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/categories?post=17249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/tags?post=17249"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/coauthors?post=17249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}