I have a habit of turning repeated arguments with coding agents into software. If I tell an agent to stay inside five files often enough, eventually I stop asking nicely and build something that blocks the sixth. If I keep asking for validation...
In November 2025 I wrote the honest version of working with Claude Code. At the time, most of my process involved spotting when Claude was drifting, calling out the bullshit, checking that it understood the task, and restarting the session when the...
The problem I care about with LLM coding is drift: one plausible shortcut gets copied, then future sessions start treating it as how the app works. I’ve used AI coding tools every day as a team lead on large private client codebases, across...
Right, so, this started with me looking at , seeing a 98% context reduction claim, and immediately thinking: bull shite. Not because the idea is bad. The idea is good. The bit that made me twitch was the shape of the claim. If you compare a huge...
I have written a few posts now about bits of : adding LSP, adding telemetry, and hardening redaction with evals. What I have not actually done is the obvious one: explain what is, why I made it, and why I have suddenly spent a slightly...
keeps growing in the direction of whatever annoyed me most that week. It is the coding agent harness I’ve been building on top of the excellent pi-coding-agent from badlogic, and I keep bolting things onto it as I need them for real work. Last time...
Third post in a little run about , my coding agent harness built on top of pi-coding-agent. There’s a pile of stuff in I have not written about, but these three felt worth the time: adding LSP, wiring in local SQLite telemetry, and this one, which...
This whole thing started with a chat with Kev, (Svelte Society co-founder), after a few beers at the CityJS after-party. I mentioned my-pi to him and his first question to me was “oh! does it have LSP built in?” I was...
So, here’s the situation. I use Claude Code with cloud CLIs daily, AWS, Hetzner, that sort of thing. Claude Code is genuinely the ultimate cheat code for bash though! Need to query an API, parse some JSON, chain a few commands together? Claude does...
I saw a Reddit post the other day that called setting up MCP servers in Claude Code “a tech ritual for the quietly desperate.” 😅 That tracks! The comments were full of people saying things like “took me 30 minutes to figure out where the config...
I’ve been using the forced-eval hook for months now. It’s part of my claude-code-toolkit plugin and it’s been working brilliantly. Until about a week and a half ago, when Claude just started skipping it.
Right, so, I stumbled across this post by Karan Bansal about enabling LSP in Claude Code and thought “no way this actually works.” Turns out it does. Here’s the thing - every time you ask Claude Code “where is this function defined?”, it does what...
Ok, so, I’ve built over 20 MCP servers at this point. Search tools, memory systems, doc scrapers, workflow builders. I’ve written about configuring MCP tools in Claude Code before, but one thing I’ve never actually covered is the bit that tripped me...
Remember that post where I tested skill activation with the Claude API and got the forced-eval hook to 84%? That was running against Haiku 4.5 with synthetic API calls. Good for iteration speed, but it wasn’t testing the actual thing. It was testing...
Right, so, remember when I wrote about unlocking swarm mode with claude-sneakpeek? And then using Daytona sandboxes with it? Well, I said at the end of that first post that this would be short lived and I’d be switching once Anthropic shipped it...
Ok, so, I’ve been using the Claude Code swarm feature now for several days and I’m super impressed! Like, three days in and I already can’t see myself not using it in my daily workflow! Is it a token gobbling nightmare? Yes, does it get the work...
So, I watched a video about Kimi K2.5 from Sam Witteveen that detailed a load of cool looking features but what caught my eye was the swarm mode feature, this is where it will spin up to (apparently) 100 sub-agents to work on tasks in parallel.
Aight, so, continuing with the Claude Code ‘bits’ and my toolchain I’m putting together for working with Claude Code. Claude Code is very much integrated into my workflow with skills for this and that! Thing is the skills were dotted around in...
Real quick on this one! I need to document it though as this has been a persistent pain for me for a while! Getting the GitHub CLI to work in Windows Subsystem for Linux (WSL). Well, turns out it’s still an issue! But with some searching and...
This is the follow-up to Local Analytics with SQLite and SvelteKit. That post covered the infrastructure - batched writes, heartbeat-based live visitors, the production meltdown and rebuild. This one’s about actually removing the Fathom API...
I’ve been using Fathom Analytics for years and it’s great, but I wanted something more integrated. Something that could power live visitor counts and popular posts without external API calls. This is what I learned building self-hosted analytics...
I spent some time over the last few days evaluating some Linux distros, two to be precise. Omarchy and EndeavourOS, Omarchy stayed on my hard drive for all of about 16 hours as I just couldn’t get my head around the tiling manager! I tried! I really...
So, remember that blog post I wrote about Claude Code skills being a coin flip? Where the “simple hook” approach gave me a whopping 50% success rate and I basically said “just invoke skills manually”? Yeah, well, I wasn’t happy with that. Coin...
So I got Claude Skills to register with Claude Code (sorted the YAML formatting issue), and the skills are now showing up when I ask Claude to list them. Job done, right? Nah! Turns out getting skills to actually activate reliably when you need them...
So, I’m a team lead working on a large monorepo for a private client. I’ve been on this project for two years, and I’ve worked with AI coding assistants since day one - through every iteration, model update, and paradigm shift over that time. When...
Not having Claude Code skills showing up? Yeah, I hit this too… When Claude Skills were announced I jumped straight on that! Dug into it and built out several skills, for this site and other projects. I even built out my own CLI tool (Claude Code...
I was looking up something on my site for reference (as I usually do when trying to recall a detail) when I noticed the popular posts in the footer weren’t displaying. That’s odd. I’d been working with the database locally recently, so my immediate...
So there I was, starting a Claude Code session, and I noticed something disturbing and completely of my own making: my MCP tools were consuming 66,000+ tokens of context before I even started a conversation. That’s a massive chunk of Claude’s...
I spent some time this weekend rolling the auth credentials for this site (again) after Claude Code doxed my variables! Anyways, whilst I was doing this I noticed my Turso dashboard had 1.3 BILLION row reads. My database was getting absolutely...
I’m currently in the process of migrating a large SvelteKit monorepo from Svelte 4 to Svelte 5 with my team. The UI package is still on Svelte 4 and it’s causing a lot of headaches with svelte-check in CI and the and event delegation (UI package...
Cool! So, coding tools! We all use them right? I’ve been through a few of them! As a team lead working on a large SvelteKit monorepo, I’m constantly evaluating tools that could help the team move faster and write better code. Here’s my honest take...
In this post I’m going to go through converting the SvelteKit minimal template from using and over to using , and . Why? Well, it’s as close to testing components and pages as you can get, rather than relying on the simulated it’s...
Ok, off of the back of an absolutely banger of a post from Ilja, I’m now compelled to write about my own experience at Svelte Summit. I initially drafted this post on the 13th, it’s now the 25th (this post has been sat in my drafts all this time!)...
I first heard about at Svelte Summit from a talk by Dominik G, one of the core maintainers of SvelteKit and Vite. He demonstrated how this new approach lets you test Svelte components in actual browsers instead of mocked environments like . The...
I poisoned the well! 😱 I was reviewing code the other day and saw a pattern that I posted ago! This was a quick “this is how I fixed this issue” kind of post. Thing is, it’s been slurped up by LLM scrapers and is being presented as gospel...
So, since the Model Context Protocol (MCP) was announced at the end of November 2024 I immediately saw the potential that this could offer me. Me being a person that likes to gather information to add to an LLMs context before doing anything. When...
Aight! So, I’ve been using Claude Code for a bit now, and one thing that’s been bugging me is the way you’re supposed to configure MCP tools. If you follow the official approach, you’re stepping through a CLI wizard that forces you to enter...
I used Windsurf for the whole day yesterday, I’m impressed! I’ve been using Cursor as part of my development workflow full time since September last year. There’s many a post on here from me on integrating other tools into my workflow for using “AI”...
Aight! Let’s go over the migration from Tailwind v3 to v4 and daisyUI v3 to v5 in a SvelteKit project, I’ll not go into a massive preamble here on the improvements that Tailwind v4 brings, essentially , it good, it faster, it simpler, with modern...
So, this is my updated Zsh config! To be honest there’s little that’s changed over the years since I originally posted about this a good three years ago now in My Zsh Config. But! The changes are substantial enough for me to justify a new post.
Ok, so, I’ve heard about this CLI tool that allows you to use your preferred LLM provider, Goose, from Block (Square, payment thingy) which I think is officially called codename goose, but we all know everyone is going to refer to it as Goose.
Super quick one I want to document here! I got myself on a side quest, again! No biggie, my ZSH shell was taking ages to load. When I say ages, more like 5+ seconds every time I opened a new terminal, that sort of thing can add up. This is just...
Aight! It happened again! Mysteriously git just straight up stopped working for pulling/pushing on one of my WSL Ubuntu instances! I’ve just gone through setting up a fresh WSL Ubuntu 24.04 install and wanted to detail the process of getting Git...
I first heard about at Svelte Summit from a talk by Dominik G, one of the core maintainers of SvelteKit and Vite. He demonstrated how this new approach lets you test Svelte components in actual browsers instead of mocked environments like . The...
Aight! I’ve been playing around with using and creating my own Model Context Protocol (MCP) tools lately. I also talked myself into giving a talk at the next Svelte London event to share what I’ve learned. It’s a bit of a stretch talking about AI...
In this post, I’ll go through the process of getting a Model Context Protocol (MCP) tool up and running with the Claude desktop app using Node in Windows Subsystem for Linux (WSL). Using WSL allows me to manage my Node versions on WSL...
Real quick one from me on updating a Hetzner VPS with something like . I noticed some weird behaviour today when I wanted to install on my Hetzner box. I was greeted with the following message:
Ok, I don’t usually do a post like this, this site is usually around how to work with a technology or to get something done with it. This time around it’s more of a starter pack on where to start if you want to take back some control over your...
Remember when I wrote about changing scrollbar colour with Tailwind CSS? Good times! 😅 Well, that post was ago and stuff don’t stay the same for long in modern web dev. The sitch: I noticed my scrollbar styles were being applied when the mouse...
Aight! With Svelte Summit Fall 2024 done with we got a load of cool new announcements, Svelte 5 being the big one along with the new site and docs! Beautiful! One of the other big announcements was the new Svelte CLI which combines with the ...