Development Practices

AI

This page describes recommended practices for integrating AI tools into your daily development workflow. The goal is to increase efficiency without reducing code quality, maintainability, or understanding.

Changing landscape

The AI landscape is evolving quickly. New tools, capabilities, and best practices emerge all the time. We’ll try to keep this page up to date as things change, but recommendations may shift as the field develops.

Project start up

Start projects in the same way you normally would, without AI:

  • Choose frameworks, libraries, and project structures based on your team’s standards and experience.

  • Set up repositories, CI/CD pipelines, and environment configurations as usual.

AI should support your work, not define your architectural decisions. Establishing a solid foundation manually ensures maintainability and consistency. Use AI as a ballpark reference during start up, but rely on the chosen framework’s own tools to set up your project.

Prototyping tools can be valuable early on for mockups, experiments, or inspiration. However, they should not be the foundation for core architectural decisions. Treat them as sources of ideas and quick prototypes, while the real project structure should come from well-established frameworks and team standards.

Create an AI Instructions file

Add a dedicated file in the codebase (for Copilot, .github/copilot-instructions.md) to guide AI coding assistants. You can generate this in VS Code via “Chat: Generate Workspace Instructions file”.

The file should outline your team’s coding style, preferred libraries, patterns to follow or avoid, security and performance rules, and review expectations.

AI tools automatically include this file in their context when generating code. Keeping it under version control ensures the whole team and the AI follow the same standards, reducing inconsistencies and repetitive corrections.

This instructions file can be used not only with Copilot in your code editor, but also when assigning an issue to Copilot in GitHub. That way, the same standards guide Copilot whether it is suggesting code locally or drafting a pull request in your repository.

Writing Prompts for AI

When using AI for coding tasks:

  • Break work into small, well-defined tasks. Use some of the time that you would normally use for writing code to better define the task.

  • Write prompts clearly and include relevant context.

  • Iterate on prompts: if AI output is not aligned, adjust the prompt or update the AI instructions file.

  • Experiment with different AI models when results vary.

Tip: Prompting is a skill, treat it like learning a new tool. Practice and refine.

Using AI for Code Generation

AI can be a valuable tool when writing code. Some tasks may be more efficient with AI assistance, while others may still require a manual approach. The effectiveness will vary depending on the project, the developer, and the context.

How to use AI responsibly

  • Use AI to speed up your workflow, but never let it replace your own understanding.

  • Do not accept code you cannot explain. If you don’t understand it, don’t use it.

  • Always review AI-generated code yourself.

  • Ensure that at least one other developer reviews the code as well.

MCP Servers and Tools for your AI Agent

Beyond editor integrations, AI assistants can be extended with Model Context Protocol (MCP) servers and tools. These provide external data and capabilities that the AI can use while working on development tasks.

  • MCP servers expose information or functionality to your AI agent (for example: project documentation, database queries, or logs).

  • AI tools connect the agent to services such as ticket systems, build pipelines, or monitoring dashboards.

Together, they allow the AI to act more like an assistant that can look things up or take actions in your environment, instead of working in isolation.

Useful MCP Servers

Examples of MCP servers that can be useful are:

GitHub: access issues, pull requests, and repository data
Sentry: access error reports and logs
Context7: up-to-date documentation for thousands of frameworks and libraries

See the full list of MCP servers at: https://code.visualstudio.com/mcp

Prototyping tools

For short-lived projects, experiments, or proofs of concept:

  • Tools like Lovable, Bolt.new, or v0 can rapidly create prototypes, even without prior coding experience.

  • Use these outputs for inspiration, UI exploration, and early validation.

Output from these tools should be treated like any AI-generated code. Make sure you fully understand what it does and validate it before use. For long-term projects, you must still ensure maintainability, scalability, and security through standard engineering practices.

Just for prototyping?

These tools can also be used to build complete applications, but we do not recommend relying on them for production systems. Their output often lacks the maintainability, scalability, and security needed for long-term projects.

Integrate Copilot into your GitHub Workflow

GitHub Copilot can be part of your development workflow not only inside your editor, but also directly in GitHub. By assigning Copilot to issues and pull requests, you can automate parts of your collaboration process.

  • Assign issues to Copilot: Let Copilot draft pull requests for smaller, well-defined tasks. This can speed up repetitive or boilerplate work.

  • Assign Copilot as a reviewer: Copilot can provide an initial code review, highlighting potential issues or suggesting improvements before a human reviewer takes over.

Important: Copilot should never replace human review. Always make sure at least one team member approves and understands the changes before merging. Treat Copilot’s pull requests and reviews as support, not as a final authority.