My AI coding setup - cursor and claude code max
Photo generated by chatGPT

Introduction

In today’s fast-paced development world, AI coding assistants have become game-changers. I’ve been experimenting with various AI tools to boost my productivity, and I want to share my current setup that allowed me to create a fully functional Golang CLI application template in under 2 hours.

The key principle: I remain the architect and decision-maker, while AI handles the repetitive implementation details. It’s about giving AI small, focused tasks while maintaining full control over the architecture and design decisions.

So first, I checked out the claude code documentation, Howto add Claude Code to my IDE and the following video:

My AI Coding Setup

Here’s what I’m currently using with a big thank you to Max Ritter’s post and some chatting after this:

  • Cursor: Standard edition (no subscription) just for autocompletion
  • Claude Code Max: €100/month subscription for doing the heavy lifting
  • MCP Servers in Claude: context7 MCP to keep my LLMs up-to-date

The combination of these tools provides an incredible development experience where I can focus on high-level design while the AI handles the boilerplate and implementation details.

Let’s get it started!

Creating a Golang CLI Template in Under 2 Hours

Let me walk you through how I created a complete Golang CLI application template with all the modern development practices in place.

Initial Boilerplate

I started with a simple prompt:

> Create a golang cli application boilerplate code with the following setup: linting, test framework and github actions

Claude Code immediately generated a full project structure with:

  • Organized directories (cmd/) and later pkg/, internal/
  • Makefile with common commands
  • .golangci.yml configuration for linting
  • GitHub Actions workflows for CI/CD

I personally found it impressive claude generated a Makefile out-of the box without me saying anything.

Adding Release Management

Next, I wanted automated releases:

> Add goreleaser with config and add it to github actions

I mean, I specifically knew I wanted to use goreleaser as it is the standard tool for releasing Golang binaries and since v2 also other languages. And furhermore, I contributed major Gitlab features to it as a maintainer, which I still am to this day.

This resulted in:

  • .goreleaser.yaml configuration file
  • Updated GitHub Actions workflow for releases
  • Dockerfile for containerized builds
  • A make release-snapshot command for local testing

Especially the release-snapshot target surprised me, as this is also how I usually test the configuration locally before pushing it to any CI. claude code tested locally and adapted the configuration until the build was ✅

goreleaser-snapshot

Let’s move on to adding documentation.

Documentation Setup

Every good project needs documentation and I wanted it to be with markdown and hosted on the corresponding GitHub pages site:

> Add mkdocs with an outline of the project, which deploys to github pages and add it to github actions as well

Claude Code created:

  • mkdocs.yml configuration
  • Documentation structure in docs/ directory
  • GitHub Actions workflow for automatic deployment to GitHub Pages
  • Installation script for local development

However, in the first approach claude code wanted me to install python dependencies on my machine by providing a requirements-docs.txt file. This is fine, however I do not want to pollute my environment, as I prefer the use docker container and mount the current directory into it. This I had to tell explicitly as follows:

> for local development use the docker container squidfunk/mkdocs-material for docs serving and docs-building. adapt the files accordingly 

Let's look at the result at https://mavogel.github.io/cli-template/:

screenshot-0

Now we’re ready for final touches 📝

Final Polish

As said, I requested some finishing touches via:

> Add a README.md and also install instructions for all tools needed in this project (mkdocs, goreleaser, etc.) with brew and remove unneeded files such as requirements-docs.txt

But claude code totally forgot a .gitignore file, which I needed to tell it:

> Ignore appropriate files and add them to the .gitignore

Now I felt like, I want to do something myself in my craft 😆

Connecting to GitHub

After creating the repository on GitHub by hand (which I think claude could have also done for me):

git remote add origin https://github.com/mavogel/cli-template.git
git push -u origin main

The initial commit looked as follows: a0023a7

Locally, everything worked fine, as claude also ensured, however in the CI I first had errors. Let’s fix them.

screenshot-1

Fixing CI Issues

The beauty of AI assistance is how quickly you can iterate. When GitHub Actions failed:

> Go to the remote github repo 'origin' (you should have access) and fix the github actions errors

Claude Code analyzed the error logs and fixed multiple issues: 2dc58b7

However, the lint action still failed. After checking the official documentation, I realized we needed a specific version:

> Use golangci/golangci-lint-action@v6 to be compatible with golangci-lint v2

screenshot-2

After a few more iterations:

> Revert goreleaser/goreleaser-action as the latest version is v6

Which I had to look up myself, as claude mistakenly thought goreleaser/goreleaser-action also exists in v8, which is not the case. So it was important that I always stay in the driver seat 🚘

> Now git commit and push it, please

I felt like this tool is helping me so much, I need to stay polite. The final fix commit is here: 0621f15

Working Style Observations

What impressed me was how Claude Code works similarly to my own debugging approach:

screenshot-3

It would run make lint locally first, verify it works, then push to see the CI result. Exactly how I work!

After fixing all linting issues: f485372

Final Configuration Updates

A few more refinements were needed:

> Update the goreleaser config to v2

Result: 1c89f98

> Also update the github pages on tags

Result: f606ae7

Creating the First Release

Time to test the entire pipeline:

> Create a tag v1.0.0 and push it

The release workflow triggered but failed: Job #44555544269

screenshot-4

> Fix the errors of the deploy-docs github action

Final fix: 74fd257

The Final Result

Check out the complete template: github.com/mavogel/cli-template 🎉

In less than 2 hours, I had:

  • Modern Golang project structure
  • Comprehensive linting with golangci-lint
  • Testing framework with testify
  • Complete CI/CD pipeline with GitHub Actions
  • Automated releases with GoReleaser
  • Documentation with MkDocs deployed to GitHub Pages
  • Docker support
  • Professional README with installation instructions

Things and behaviours that caught my attention

  • claude tried to install goreleaser via go install, although it was already installed and available in the $PATH. I had to remove it. Next time I will instruct claude to check if the binary is already available
  • claude also had some issues with golangci-lint and its versions. It constantly switched the config from v1 to v2 and vice-versa. Futhermore, it also did not get the relationship of the corressponding version of the github-action. In the end, I fixed it manually

Conclusion

I’m genuinely impressed by what’s possible in such a short time with this quality. The combination of Cursor and Claude Code Max has transformed my development workflow, allowing me to focus on architecture and business logic while AI handles the implementation details.

I will keep on interating on the setup, as I still saw some flaws in it…

Next up: Creating an AWS-specific application template to further streamline cloud development, where I also want to take architectural choices from claude into consideration, especially using the AWS MCP server.

Special thanks to Max Ritter for the inspiration and rubber-ducking on the setup!

And if you want take a look at this great conversation of the cursor and claude engineers:

The key statement to quote was for me:

“I think it’s similar to going back to, let’s say before I was born, but you know, 1995 and asking a lawyer in the future what percentage of legal documents will be word processor generated and the answer is 100% or you know, close to 100% in that AI will be involved in almost all of the code that gets written. But still your role as a lawyer or as a developer in understanding what the code needs to do and having taste and guiding what is done with the software is going to be more important than ever.” - Jacob Jackson (cursor)

So essentially, having the high-level overview is crucial and staying in the driver seat. Love it.

Ah and btw you find the repo here: https://github.com/mavogel/cli-template

Let me dive more into MCP in an upcoming post and becoming an ai native dev

featured2 Source: https://www.reddit.com/r/ProgrammerHumor/comments/10bl4xn/get_up_and_start_integrating_ai_in_your_code/

Like what you read? You can hire me 💻, book a meeting 📆 or drop me a message to see which services may help you 👇