There are many ways to improve your software development practices. However, there is one solution on everyone’s lips: AI. Many developers across all standards and programming languages look forward to implementing modern practices in their fields. But we already know it is not that simple. Done without a deep understanding of its purpose, it may only increase costs without seeing any profit, proving AI-enthusiasts wrong.

At WizzDev, we understand this simple dependence. That is why we decided to share a couple of configuration tips for your AI programming environment for future projects. In this article we focused on Claude Code.

Key takeaways

  • There are two main communication levels with AI: prompt and global prompt
  • A CLAUDE.md file provides persistent project memory and codebase re-exploration.
  • Effective CLAUDE.md files use imperative commands, directory blueprints, and pinned dependency versions.
  • Closed-loop verification allows AI to independently compile, test, and debug code until tests pass.

How does AI work without proper configuration?

At the start of public access to LLMs, some people thought that everyone could be an expert at everything. But real experts quickly recognised it would not be that simple. AI is more of a jack-of-all-trades rather than an all-knowing, all-powerful expert.

One of its main characteristics is averaging, averaging everything. Just like with a cooking recipe, AI will quickly generate a list of required ingredients. Yet the final meal will most likely lack some final touch. It will be just average.

Common AI-generated software development problems

The same averaging process applies to coding. AI learned software development practices basing on multiple programming languages and standards. Without precise instructions and leading questions, it will most certainly:

  • mix different standards like char* with std::string,

  • mix programming formatting and conventions by using them interchangeably, e.g. camelCase / snake_case / m_prefix,

  • use raw pointers instead of smart pointers,

  • importing a new library or performing something manually that is built into an existing library.

Where do problems come from?

All those problems result from training AI on three decades of evolving programming styles and languages. Asking the model to simply write a C++ program will lead to faulty code generation. This can result in technical debt.

But it is not unavoidable. Implementing AI in software development practices should be seen as a chance rather than a threat. All we recommend doing is drawing attention to the details and building a reliable AI configuration.

As of today, the best AI for assisting in code-writing is Claude Code, which is a dedicated tool for software development practices and much more. Because of its market position and the real value it brings, we will showcase how to work with that specific model.

According to Anthropic, Claude Code is currently available in the Enterprise (and higher) version of Claude, paid €18 per seat (at least in September 2026). It brings to our attention whether it’s really worth paying for Claude Code. We don’t decide this in our article, but because of market position and the real value it brings, we will showcase how to work with that specific model.

How to configure Claude Code?

The most important aspect of configuring Claude is CLAUDE.md. CLAUDE.md is a file that gives Claude Code persistent memory about the whole project you use it for. Without uploading any information there, with every prompt Claude starts the whole process all over again.

It means it runs re-exploration of your codebase, has to find which dependencies are needed, and understand already implemented features. It uses a lot of tokens with each new task, and you also risk Claude missing something important.

Prompt levels

The most common and used level is a user prompt level. Basically, it is how we use AI daily. Theoretically, every time while coding at the beginning of a prompt, you can remind AI to use a specific library or adapt to some company standards. However, it is extremely impractical and uses more resources.

Project (System Prompt)

Then there is a project level. A project is used for more complex tasks that need to be divided between more than just one chat, obviously. But then again, at the beginning of each chat, the context of the task needs explanation, unless you use CLAUDE.md. Instructions inserted there will be followed much more strictly than the ones from the user prompt. It treats them as immutable system rules for your project.

Global (System Prompt)

There is also a system level. This option is far less known and used by software developers. By setting general instructions here, you affect every answer generated from your account. However interesting it may seem, it is not that useful.

Very rarely is Claude used for just one type of project. Even in companies like WizzDev, IoT devices are software- and hardware-oriented; we don’t write code using the same standard for every project. Even though we use hexagonal architecture and have a similar file organisation standard, we don’t have CLAUDE.md’s general instructions for developers.

The reason is simple: importing one new project, requiring a different approach to file organisation, could cause major problems. According to Claude Code Docs, CLAUDE.md instructions are prioritised, and while overlapping with the prompt, it may hallucinate or harm existing code.

Best practices for writing CLAUDE.md instructions

The CLAUDE.md instruction file is automatically loaded into the AI’s context during every single session. That is why you should focus only on unique, project-specific rules, exceptions, and custom solutions. It will help you save tokens and allow AI to focus on what is really important.

According to official Anthropic research, Claude treats words written in the imperative as hard rules, whereas descriptive sentences are treated only as optional context. Then, instead of writing a description like: “In our company we use C++20”, use a direct command “Language Standard: C++20 ONLY”.

What are the rules for CLAUDE.md instructions?

While implementing AI in daily workflow, we came up with a couple of basic rules to follow while creating instructions. They should vastly improve your work with Claude Code:

  1. Divide your document into local sections and subsections to keep the rules organised.

  2. Provide short code as examples for very specific solutions  -make sure it doesn’t show any private information.

  3. Include a Directory Blueprint. In case of large projects with various directories, dependencies, and subrepositories, mapping out the folder structure makes it easier for the AI to find the necessary files.

  4. Use Dependency Version Pinning. Explicitly define key library versions (for instance, specifying the use of Python 3.10, because version 3.11 would introduce incompatibilities).

  5. Be concise and precise with your instructions; do not beat around the bush.

  6. Be direct; it will help get short, particular answers.

    • For example: Return only clean source code or bullet-point technical explanations. Skip all introductions, summaries, and pleasantries (e.g., ‘Here is the code you asked for’).

Is it the end of Claude Code's capabilities?

Those rules surely aren’t everything, but they will vastly improve your workflow with Claude Code. Using them will not only reduce your token usage but also optimize the general efficiency of your project.

For further refinement, developers can refer to Claude’s official datasheets. Authors go into details for best coding practices, which may improve your overall software development practices.

But is there a real case scenario where using Claude Code adds real value to your project? Yes, there is; there are many. In WizzDev, some of our developers use it for Closed-loop verification.

Closed-loop verification is a continuous feedback process. A program runs compilation, then tests the code, spots bugs, fixes them, and then runs tests again. It works as long as the code is invalid or doesn’t work properly. And Claude Code can fully automate this process.

How to create Closed-loop Verification with Claude Code?

To enable Closed-loop verification with Claude Code, you need to add the following instructions to the CLAUDE.md file.

# Closed-loop verification setup

## Build & Test Commands

  • Build: `cmake -B build -S . -DCMAKE_BUILD_TYPE=Debug && cmake –build build`

  • Run Tests: `ctest –test-dir build –output-on-failure`

  • Linter: `clang-tidy -p build src/main.cpp`

## Error Resolution Rules

  • IF build fails: DO NOT ask the user for help immediately.

  • Read the compiler log, identify the exact file and line, apply a fix, and re-run the build.

  • Repeat this cycle until zero compilation errors and zero warnings remain.

To create additional protection in case of a critical error, e.x Claude getting stuck on some extraordinary problem, it is safe to add:

  • Try to fix the error at most 3 times before asking the user for help.

  • Do not force disable compilers warnings (for example, using #pragma warning(disable))

Creating closed-loop verification with Claude Code is a powerful improvement for coding workflow. Of course, it comes with a slight cost – token usage. But with this solution, you can literally start verification while leaving for a meeting and come back having the full process done.

Is correct Claude Code set up all-powerful?

Of course not. It is a very powerful tool, capable of quickly solving problems; however, it lacks human reason and judgement. This is why one must review the generated code and take responsibility as if they wrote the code themselves.

Many may be blinded by the ability to create a lot of code very quickly, without realising just how much technical debt this creates. This doesn’t mean AI should not be used.

Those who fail to innovate inevitably fall behind. In today’s landscape, refusing to experiment with AI and failing to adopt these workflows is a voluntary surrender of technological progress. While Claude Code cannot replace an entire development team, it acts as a powerful multiplier.

Frequently Asked Questions

Why does unconfigured AI generate inconsistent or low-quality code?

Without explicit rules, AI tends to average your code. It randomly mixes conventions. Adding a project-level Claude.md file eliminates this issue by enforcing strict, immutable standards across every session.

How do commands in CLAUDE.md differ from standard chat prompts?

Standard prompts offer temporary context that disappears as soon as a session ends. In contrast, Claude.md provides persistent memory that automatically loads at the start of every chat.

What is Closed-loop Verification?

Closed-loop verification is an autonomous cycle where Claude writes code, runs builds, reads error logs, and applies fixes until all tests pass.

Is Claude Code free?

Claude Code is not entirely free, but it does offer a limited free tier. Users accessing Claude Code through Anthropic’s Claude.ai platform receive a modest allocation of usage at no cost, which is sufficient for light experimentation but will quickly run out under any serious development workload.

For professional and team use, the costs scale with usage. Developers running Claude Code on complex tasks will consume tokens at a meaningful rate. Anthropic’s API pricing is token-based, meaning heavier agentic tasks, long context windows, and iterative loops all contribute to higher costs.