How to Write Claude Code Skills (And Keep Them Small)

ℹ️ This is the third post in a series on configuring Claude Code. The previous post was about giving Claude Code the right context without bloating every prompt. How Claude Code Skills Work You have skills. In fact, you probably have many skills. You know how to cook pasta. You know how to operate your oven, with all its quirks. You may also have some less common skills, like changing the wheels on your car. None of these alone are big things — knowing how to cook pasta isn’t a 40-page manual, it’s a handful of steps you reach for when you’re standing at the stove. And you don’t hold “change a wheel” in your head while cooking; it surfaces only when you need it. But each of these small, compact skills plays an important role in your life. ...

May 30, 2026 · 5 min · Jakob Busk Sørensen

How to Structure Your CLAUDE.md (Without Bloating Every Prompt)

ℹ️ This is the second post in a series on configuring Claude Code. The last post was about configuring Claude Code permissions. I would recommend reading it, but it’s not required for the understanding of this post. The Consultant Mental Model Imagine a consultant joins your team for a week — not the suited-up McKinsey type, but a sharp, fast developer here to help you ship the feature or fix the bug you’ve been putting off. The only thing between you and a productive week is whether you can onboard them to the part of the codebase they need to touch. ...

April 26, 2026 · 5 min · Jakob Busk Sørensen

How to Configure Claude Code Permissions for Less Friction

ℹ️ This is the first post in a series on configuring Claude Code. We’ll cover permissions, CLAUDE.md and rules, and building custom skills. The reason we start with permissions - and not CLAUDE.md as you often see - is that permissions (or lack of them) are where the most friction comes from. ℹ️ Updated April 2026 — see the update at the bottom for two new tools that have changed how I manage permissions. ...

March 31, 2026 · 6 min · Jakob Busk Sørensen

Two C# Unit Test Tips: NullLogger and FakeTimeProvider

Logging Unless you are actually testing your logging (which I mostly wouldn’t recommend), you don’t need to mock your own loggers. Microsoft has you covered with the NullLogger Class. It is exactly what it sounds like: A mocked logger that can be injected where an ILogger is required, which doesn’t log anything. Here is how to use it: // Class which requires a logger class LicensePlateDetector(ILogger logger) { // (...) } // Instantiating the class in the unit test LicensePlateDetector detector = new(NullLogger.Instance); // Or if you need ILogger<T> LicensePlateDetector detector = new(NullLogger<LicensePlateDetector>.Instance); I have seen suggestions to default to NullLogger in production code using the ?? operator. I would not recommend this, as you risk silent failures if you forget to inject the actual logger. ...

March 8, 2026 · 3 min · Jakob Busk Sørensen

Why AI Should Not Replace Human Writing

This is a guest post by Claude Code, an AI assistant by Anthropic. In a somewhat meta exploration, Claude reflects on the appropriate role of AI in writing—and where human thought should remain irreplaceable. There’s a crucial distinction we need to make when we talk about AI and writing: the difference between using AI to translate your thoughts and using AI to replace your thinking. Code: A Case for Translation When it comes to code, AI makes sense as a productivity tool. Writing code is often about taking a clear mental model and translating it into executable syntax. If I know I need a function that sorts a list by timestamp and filters out entries older than 30 days, I’m not asking AI to think for me—I’m asking it to handle the boilerplate. The thought is mine; the AI just makes the translation faster. ...

January 30, 2026 · 3 min · Claude Code (Guest Writer)

Automating Blog Reviews With Claude Skills

Anthropic recently released Claude Skills. This post will show you how to create and implement a concrete skill for Claude Code (rather than the website). As an example I will use a skill which I created, to help review this particular blog post (and all future blog posts). Creating a new skill The simplest skill you can create is a single markdown file, placed inside the folder .claude/skills/{your-skill-name}/skill.md. A skill can also contain helpful assets, like small scripts it can use. ...

October 18, 2025 · 3 min · Jakob Busk Sørensen

Background Processing With Channels

I recently came across a scenario, where I had to process a lot of incoming data in real time, where missing a single entry is not an option. At the same time I wanted to disconnect the class which was fetching data (the collector) from the class which were processing the data (the processor). The result was a combination of Channels and the BackgroundService. Before we look at the code, you will need the Microsoft.Extensions.Hosting Nuget package. You can install it with: ...

April 15, 2025 · 3 min · Jakob Busk Sørensen

Five things you may need to do with Git

Git is incredibly powerful, but many developers stick to the same basic commands without exploring its full potential. In this post, I’ll walk you through some simple yet powerful Git commands that you might not be using—but should. These are not advanced or obscure features, just practical enhancements to common tasks that can make your workflow smoother and more efficient. 1. Log commits in a readable manner git log --oneline The key here is --oneline. By default, git log prints at least five lines per commit, like this: ...

February 18, 2025 · 2 min · Jakob Busk Sørensen

Switching to Hugo

I have decided to build my blog with Hugo, instead of Wordpress, which I am currently using. There are several reasons for this, but mainly: I get more control over the site. It can be hosted with Github pages. It allows for much simpler (and smaller) sites. This means that until I get busk.blog changed, my blog will be available at https://builditbusk.github.io/blog. What is Hugo? Hugo is a static site generator. A Static Site Generator (SSG) is a tool which creates HTML, JavaScript and CSS from source files (in Hugo written in Markdown). It also allows themes, which makes it easy to create a decent looking site, even if you - like me - has no talent for UI design. ...

February 14, 2025 · 2 min · Jakob Busk Sørensen