Agentic reflective practice
Guest post by David Morgan-Brown on agentic reflective practice.
Pere Villega's blog
Guest post by David Morgan-Brown on agentic reflective practice.
Skills are Standard Operating Procedures the agent loads only when needed — progressive disclosure applied to AI context. Without a forced-eval hook they activate 55% of the time; with one, 100%. That gap is the difference between skills working and skills being decoration. Plus why hooks are the enforcement layer that makes any of it reliable.
Load 84 MCP tools and 15,540 tokens are gone before you ask a question; after thirty minutes you've burned 40% of your context on tool definitions you didn't use. Holmes and Yilmaz make the case for CLI-first, and I've mostly come round: CLIs are debuggable, composable, and 92-98% cheaper in tokens. MCP still earns its keep for a few tools, but the default should flip.
The context window is a budget, not a feature. Auto-compaction hides the bill until the agent starts hallucinating. Practical tactics for staying under budget: scope per session, offload to disk, dispatch subagents for research, and clear aggressively between phases. The goal isn't a bigger window; it's needing less of it.
AI agents amplify whatever engineering process they're given. Bad specs produce confident garbage at machine speed. Three practitioner workflows for separating planning from execution: the normal coding flow, Boris Tane's annotated plan cycle, and Jamon Holmgren's Night Shift spec discipline. The pattern is simple; the discipline is resisting the urge to skip straight to implementation.
A curated configuration for Claude Code that bundles plugins, skills, CLI tools, and sandbox guards into a single install script. What it does, how to use it, and why you should fork it immediately.
Your prompt is 0.1% of what the model sees; the other 99.9% is context engineering. A four-layer framework for thinking about prompts, practical guidance on what belongs in context and what doesn't, the invisible context problem from a million-line codebase, and why agent-controlled retrieval beats RAG for cross-file reasoning.
A complete guide to provisioning and hardening a Hetzner VPS for AI coding agents — covering cloud-init security, Tailscale mesh networking, Cloudflare Tunnel, Claude Code resource planning (including the subagent memory pitfalls), and automation scripts to go from zero to a working environment in minutes.
Skills 2.0 unifies custom commands and skills, adds subagents, evals, and a growing ecosystem. Here's what actually changed, what works in practice, and the security and quality pitfalls to watch for.
Claude Code has shipped more features in four months than most tools ship in a year. Here's a practitioner's map of everything that changed since Opus 4.5 — rules, skills 2.0, hooks, MCP evolution, remote control, Cowork, plugins, and the dozen slash commands you probably haven't tried yet.
Every Claude Code session starts from scratch. Teresa Torres's three-layer context system and Patrick Zandl's claudecode-kb offer two practical approaches to the same insight -- memory is a design problem, not a tooling problem. The key habit is stop and capture, turning every repeated explanation into a reusable context file.
CLAUDE.md is the single file that determines whether your AI coding agent shines or flounders. Research shows auto-generated context files hurt performance — what works is a minimal, human-curated briefing containing only what the agent cannot discover on its own.
The setup checklist I wish I'd had on day one with Claude Code — isolation and sandboxing, terminal configuration, LSP integration, token monitoring, and what not to install.
A rigorous study found AI-assisted developers are 19% slower yet believe they're 24% faster. The gap reveals that AI is best understood as an exoskeleton — amplifying human judgment rather than replacing it — and that the real risk isn't bad code but cognitive debt from velocity without understanding.
AI coding agents have made code production nearly free. Drawing on insights from Kent Beck, Paul Ford, and Simon Willison, this post argues that the value has shifted from writing code to defining systems — contracts, invariants, SLAs, and verification.
The journey from AI-sceptic to agent-native isn't a smooth ramp — it's a series of uncomfortable jumps. This post maps the stages of AI-assisted development and identifies three critical fulcrums where developers get stuck.
How I used Claude Code to build a GitHub backup tool I'd been putting off for years, and why LLMs are most valuable for the small internal tools you never get around to writing.
Why existing sandbox solutions for AI coding agents didn't work for my workflow, and how I built sandbox-claude: fully isolated Incus containers with btrfs snapshots, deploy key automation, egress filtering, and parallel agent support on macOS and Linux.
Why the 'junior developer' metaphor for LLMs creates dangerous expectations, and how the Monkey Paw framing from folklore leads to better decisions about autonomy, specification, and organisational governance.
Why the real value of AI tools isn't single-step task solving but tackling entire classes of problems at scale, from managing information overload to continuous monitoring, and how to find the leverage worth closing.
How LLM-generated slop PRs and shrinking small libraries are reshaping open source, eroding hiring signals, and making deep domain expertise the most defensible way for developers to stand out.
A TIL on using the --chrome flag with Claude Code CLI to enhance Claude in Chrome with custom skills, commands, and a tailored system prompt for more powerful browser automation.
Last week, thanks to David Morgan-Brown and Patchwork Health, I had the opportunity to do something I've genuinely missed: presenting in front of a live audience. The subject? Orchestrators, the la...
Durable computing has emerged as a topic in systems design. It may just be my bubble, but it feels as if, suddenly, AI stopped being the next big thing and durable computing is going to solve all o...
There's a trend that has been going on for a while now. Companies announce they are leaving "The Cloud" (meaning, usually, AWS), for huge savings. This seems counter to all they have ever told us a...
I've written a new series of blog posts, a collaboration with Chaordic, that you can read in their blog: Understanding Data Mesh. I hope you enjoy it.
I've written a new blog post, a collaboration with Chaordic, that you can read in their blog: Running LLMs on your own. I hope you enjoy it.
I've written a new blog post, a collaboration with Chaordic, that you can read in their blog: Is your LLM use compliant?. I hope you enjoy it.
I've written a new blog post, a collaboration with Chaordic, that you can read in their blog: Yes, Code: How AI can challenge the No-Code movement. I hope you enjoy it.
I've written a new blog post, a collaboration with Chaordic, that you can read in their blog: Use Wardley Maps to stop software development waste. I hope you enjoy it.
If you code in Scala, it is likely that you use Scala Steward to keep your dependencies up-to-date. But merging all the pull-requests it generates is tiring. This blog post tries to solve that.
I've written a new blog post, a collaboration with Chaordic, that you can read in their blog: ChatGPT won't replace software engineers. I hope you enjoy it.
I've written a new blog post, a collaboration with Chaordic, that you can read in their blog: Why you have Shadow IT, and how to fix it. I hope you enjoy it.
VS Code has released tooling for remote development via ssh. In Scala the combo of Metals and VS Code for development has become the norm for many people. How easy and convenient may it be to use t...
Serverless has been out there for a while, seemingly surviving the hype cycle. In fact it has recently received an upgrade of sorts with Edge Computing. In this blog post I write about my experienc...
Rust is not, at this stage, a new language. But I have to confess that I had not checked it out until now. I built a small tool to test it out. In this post I'll briefly talk about how it felt work...
This is just a short entry to make you aware of a new post at Underscore's blog.
This is just a short entry to make you aware of a new post at Underscore's blog.
This is just a short entry to make you aware of a new post (again!) at Underscore's blog.
This is just a short entry to make you aware of a new post by yours truly at Underscore's blog.
Shapeless is a type class and dependent type based generic programming library for Scala. It had its origins in several talks by Miles Sabin, and he has been the main contributor to the project.
StockFighter is a game by Patrick McKenzie (Hi Patrick!) and others that makes you compete in a virtual Stock Exchange to accomplish certain objectives. They use it as a recruitment tool (kind of, ...
My previous post on Free Monad implemented a few DSL using Free Monads. The same day I published it I discovered FreeK by Pascal Voitot. How does FreeK help you when building a Free Monad?
The concept of Free Monad is becoming popular, or at least I've seen plenty of mentions about it in the Scala Functional Programming community as of late. Why is it relevant?
Have you heard about AWS Lambda? Do you like Monkey Island)? Are you into Insult Sword Fighting? Then, come along, this may interest you ;)
Scala Exchange 2015 is on! I will be updating this entry with summaries on the talks I attended. Typos a plenty, be warned, but I hope this proves useful to somebody while we wait for the videos to...
Scala Exchange 2015 is on! I will be updating this entry with summaries on the talks I attended. Typos a plenty, be warned, but I hope this proves useful to somebody while we wait for the videos to...
After hearing a lot about the benefits of using Emacs to code in Scala, I've decided to give it a go and also to document the steps to work with it, in case anyone else feels crazy enough to try this.
One of the things people love about Scala is the REPL. I have to be honest; I never paid too much attention to it as IntelliJ provides a handy Scala Worksheet. But it is time to fix this..
Heroku has announced beta support for Docker containers running in its platform. As I have some time in my hands, I've tried how well it integrates.