I’ll be honest—I’m a bit lazy. Not in a bad way, but in the "how can I get more done with less effort?" kind of way. As a web engineer, I’m always looking for ways to improve my workflows so I can spend less time on repetitive tasks and more time on creative problem-solving. AI has become my weapon of choice, helping me build software faster and smarter than ever before. One of my favorite tools in this space is Cursor, an AI-powered coding assistant that has completely changed how I develop software.
Using Cursor to Build Software
Whether it’s writing boilerplate code, debugging issues, or generating complex logic, Cursor helps me accelerate my workflow. The seamless integration with my IDE allows me to:
- Generate functions and components quickly
- Get instant code suggestions and improvements
- Debug and troubleshoot problems efficiently
- Automate repetitive coding tasks
Thanks to this assistance, I can focus more on high-level architecture and problem-solving rather than getting bogged down by syntax and routine coding patterns. The best part? It’s incredibly easy to get started. Just install it, integrate it into your workflow, and watch it take over the tedious parts of coding. But while anyone can use Cursor, I’ve found ways to use it better—ways that go beyond just auto-completing code. Stick around, and I’ll share how I get the absolute most out of it.
Be Smart About Prompting
One of the most crucial aspects of working with AI tools is crafting effective prompts. The quality of the output is directly related to the quality of the input. Context is king—providing clear, well-structured instructions helps AI models generate meaningful and useful responses.
Here are some key principles to keep in mind when prompting AI:
- Be Specific: Vague prompts lead to generic responses. Define what you need in detail.
- Provide Context: The more relevant information you give, the better the AI understands your request.
- Iterate and Refine: If the first response isn’t quite right, tweak your prompt and try again.
- Use Examples: Providing examples or expected formats can help guide AI-generated content.
- Break Down Complex Queries: If your request is complex, breaking it into smaller steps can improve accuracy.
By mastering prompt engineering, engineers can unlock AI’s full potential, making it a highly effective assistant rather than just a tool. However, while prompting can generate impressive results, it also comes with its own set of challenges.
Treat Your Agent Like an Intern
One of these challenges is making sure AI-generated code adheres to your team’s or organisation’s coding standards and practices. Just like an intern or junior engineer, your AI assistant needs guidance to produce high-quality work. While AI can generate impressive results, it doesn’t inherently know the best coding practices your team follows. That’s why I leverage Cursor Rules to ensure the AI’s output aligns with the coding standards we agreed on as a team.
Cursor Rules act as safeguards, enforcing best practices and preventing AI from generating inconsistent or subpar code. These rules include:
- Formatting Standards: Ensuring consistent indentation, naming conventions, and style guidelines.
- Code Quality Checks: Avoiding anti-patterns, enforcing modularity, and ensuring proper documentation.
- Performance Considerations: Encouraging efficient algorithms and minimizing unnecessary computations.
- Security Practices: Ensuring safe handling of data, authentication flows, and API interactions.
image: an example of some of the cursor rules I have in place for the project I’m currently working on.
Essentially, these are the classic boy scout rules—always leave the code better than you found it. Just like when we mentor interns and junior engineers, we need to train our AI assistant to adhere to best practices.
Getting Structured Output in Large-Scale Projects
Another major hurdle is consistency of output—due to the inherent stochastic nature of large language models, if you ask an AI to generate the same code multiple times, you’ll often get different implementations. This can lead to fragmented code, redundant logic, and a lack of cohesion across your project. In small scripts, this might not be a big deal, but in larger projects where multiple people work on the same code, maintaining a structured and scalable architecture requires more than just good prompts.
To address this, I use Nx Generators —a tool that automates the creation of components, modules, and configurations based on predefined templates—to establish scaffolding structures that guide my Cursor agent. Nx Generators provide a consistent framework for AI-generated code, ensuring:
- Standardized Implementations: Combined with Cursor rules we can instruct the agent to use specific generators when doing certain actions, reducing inconsistencies.
- Codebase Uniformity: Every component, service, or feature is generated with the same patterns, making collaboration easier.
- Scalability: Large projects remain maintainable because AI adheres to an organized framework.
image: here i’m asking to move a component to the “shared components”, which triggers a Cursor rule that defines that the agent has to use our shared-component Nx Generator. Which makes sure it is scaffolded and exported from the correct location.
Generators are just a small part of what Nx has to offer. It’s a powerful tool for managing large-scale projects, enforcing modularity, optimizing builds, and streamlining workflows across multiple teams. Using Nx, I ensure that AI-generated code doesn’t just fit into the project—it enhances the overall architecture and development experience.
Introduction to Model Context Protocol (MCP)
MCP, an open protocol developed and pioneered by Anthropic, is the sauce that helps AI understand and interact with the tools engineers use every day. It acts as a bridge between a large language model (LLM) and external services, like codebases, issue trackers, and deployment pipelines. Or as they describe it: “Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools.”
MCP is designed to:
- Provide structured context to AI models, improving response accuracy.
- Facilitate interactions with external systems, reducing manual overhead.
- Enhance automation by leveraging AI-driven commands within development workflows.
By leveraging MCP, engineers can create more intelligent and efficient integrations between AI tools and their software development lifecycle.
Building a Custom MCP server for Azure DevOps
AI-assisted coding had already significantly improved my development speed. Recently I took automation one step further by building a custom MCP server to interface with Azure DevOps directly from within Cursor chat.
This integration allows me to interact with Azure DevOps seamlessly without leaving my development environment. Here’s how it works:
- Fetching Work Items: I can retrieve work items, tasks, and issues from Azure DevOps using AI-generated queries.
- Accessing Acceptance Criteria: By accessing work items, I can directly reference acceptance criteria, allowing me to create precise prompts and generate test cases based on project requirements.
- Tracking “Side Quests” in Real-Time: If I come across new tasks while coding, I can ask my agent directly to create a new work item, ensuring I can pick it up later without losing context.
- Better Contextual Awareness: AI agents can get a better understanding of the current codebase by referencing work items and related repositories within the project.
image: here you see our agent using the Azure Devops MCP to access the context of a work item, which it then analyzes and tells us what the most important test case is for that feature.
By integrating Azure DevOps with Cursor, I’ve significantly reduced context-switching and manual interactions, making my workflow far more efficient.
The Future of AI-Driven Development
The rise of AI-powered coding assistants like Cursor is reshaping how engineers build software. With AI-driven automation, we can reduce friction in our workflows, minimize repetitive tasks, and focus more on creativity and problem-solving. My custom MCP for Azure DevOps is just the beginning—I’m constantly exploring new ways to integrate AI into my development process.
But what’s exciting today might feel outdated in just a few months, or even weeks. The pace of AI development is relentless, and new breakthroughs, tools, and best practices emerge constantly. I can already imagine reading this post again after summer and realizing how much further my workflow has evolved—how even more seamlessly AI has integrated into my development process.
If you’re a developer looking to optimize your workflow, I highly recommend hopping on the AI wave now. The possibilities are endless, and the time savings are game-changing. Coding without these tools feels like doing manual labor on a field—slow, tedious, and exhausting. But now, we have shiny tractors that let us work more productively. The industry is moving forward at a rapid pace, and those who don’t adopt AI-powered development will struggle to keep up.
The choice is clear: adapt and accelerate, or risk being left behind.
Are you using AI in your development workflow? I’d love to hear about your experiences!
Top comments (1)
Thanks for sharing some really awesome insights! Exciting times :)