This is a peek into Wednesday, November 11th, as a lone explorer in the borderlands near the frontier of agentic engineering.

117 commits. 54 pull requests. 17 repos.

[product name redacted]: software factory

I’m working on version 5 (or is it version 6 now?) of my fully automated luxury gay software factory. It’s wild to think that two years ago this is the kind of thing I could have done a $10-million startup about. It’s entirely possible that if I had more of that inclination, I could still do a startup about it.

I think about that a lot. I wonder if I’m making a mistake not doing a startup about it.

Versions 1-4 ran at my desktop, and were barely more than fancy skills that I orchestrated in order. Version 5 runs entirely in the cloud, mediated through tickets in [commercial ticketing system you’ve probably though not definitely heard of].

The main reason I’m trying to get it running in the cloud is probably not what you’d imagine. I’m trying to get to a point where I can do my job entirely while walking, because walking is the only form of exercise I don’t hate, and my bones are getting crunchy, and if I don’t start doing a better job of getting out of my office chair Bad Things Will Happen.

Neither me nor my loved ones want Bad Things To Happen, which means I need to prioritize my health, and in pursuit of that I asked the question: “What would need to be true to spend my whole day walking around the park?” (Probably, if it all works out, I will ramble much farther afield than the park. It will get boring.)

I did roughly seven epics’ worth of work on that. Yes, epics. I’m aware that, at least historically, an epic is thought of as one to twenty-six weeks of work. Here’s the thing. I no longer scope tickets smaller than an epic, because if you hand a well-scoped epic to a coding agent with the right skills and harness, it’ll just run with it and somewhere between 1-4 hours later it’ll be done.

Be more ambitious.

I’m hesitant to get too specific about how any of it works, on the off chance someone reading this is someone that future me might think of as The Competition. As much as I haven’t Done A Startup About This, some part of me considers the possibility that I still might.

I guess my answer to that is that the only thing I’m trying to convince anyone of is to raise the level of their own ambitions. I don’t otherwise need anyone to believe me, the universe will solve that problem.

Examples of the kinds of things I did on a single Wednesday for just this one project:

  • Designed and implemented ticket flow across multiple states in the factory.
  • Updated the deployment technology to make sure remote systems could build software across all of the toolchains I use. (In practice, mostly Python, but Node and Go are not unheard of.)
  • Built the process to migrate from the old factory to the new factory, including deterministic ticket migration from my code forge to the new ticketing platform, as well as the LLM-assisted migration of the source code itself. (Mostly, this is removing artifacts that are no longer necessary and populating files that the new skills rely on.)
  • Fixed a reliability / restart issue, so that tickets could be restarted if something broke mid-flight.
  • Batched a series of multiple different changes to the agent skills, covering everything from security validation, behavior validation, release validation, to the self-improvement loop.

[product name redacted]: obsidian linter

I’ve long had a weird love-hate relationship with Obsidian. It is by and far the best app I’ve ever used for what it does, and I tried all of them.

In the days before AI became the main thing consuming my think meats, I was very into productivity and PKM. Perhaps it’s not surprising that I parlayed that interest into AI. I dunno. But if it’s a productivity or knowledge management software invented before ~2022, I’ve used it at least once.

That said, I have always abhorred the writing experience in Obsidian. Actually typing into the app is abysmal and cannot be made good. The closest I ever got was setting it to use the source mode editor by default and internalizing that CMD+E would flip me between edit and read mode.

Around March 2026 I found out that voice to text had gotten good. Like real good. Like “aside from writing on my blog I basically don’t use a keyboard anymore” good.

The main way that information enters my Obsidian vault is through a process I call my “daily lunch ramble.” Remember that park? And the walking around of it? Yeah. I do that every day at lunch, carrying a RØDE lav mic. Pontificating stream of consciousness about whatever’s on my mind.

I’m sure I look like a raving lunatic.

… More than usual.
… Which is actually quite a lot.

That roughly hour-long recording becomes text, that text goes into a Claude Cowork session where my “planting” skill files it into Obsidian.

(I find it useful to hang skills off various mental frameworks. For knowledge management I particularly like the gardening metaphor. So the skills are planting, tending, and weeding. I bet you already know what they do, and that’s why I named them that.)

The one catch with using Claude as the main write surface for Obsidian is that Obsidian enforces all of its validity checks in the UI. And Claude Cowork (which I preferentially use for this over Claude Code or other harnesses for internecine historical reasons) can’t use the Obsidian CLI that they thoughtfully built for exactly weirdos like me.

All of this is a very long aside to explain why I set out to build an MCP that could lint an Obsidian vault.

I needed something that Claude could operate that would reliably let it fix issues like “oh, that link doesn’t exist anymore” or “oh, that link isn’t formatted right” or “oh, it turns out that if you have an HTML comment with an open link tag in it and then that’s followed by a normal Markdown link Obsidian’s rendering engine will display the link as regular text. Don’t ask.”

Building this was a nightmare, and I would not recommend it. It would have been a lot more reasonable to switch to using a different harness plus the Obsidian CLI.

A horse is standing on the edge of a rooftop with the text i will always succeed because i am insane written above it.

Warning you not to follow in my footsteps aside, one Claude spent most of the day churning along in the background trying to solve performance issues related to linting the thousands of files in my vault. It eventually achieved a reduction in two key metrics:

  • Summarizing the issues dropped from 51s -> 19.6s on a budget of 30s.
  • Fixing the issues dropped from 80s -> 25s on a budget of 45s.

Evaluations and Skills

If I could offer one piece of advice to anyone looking to take agentic engineering seriously, it would be this: treat your skills, agents, and harnesses like a software project. File tickets in your tracking system of choice when you have ideas. When they misbehave. When you see clever ideas somewhere else. Have a system for building and running tests. Engage whatever continuous improvement methodology you’re familiar with.

All models are wrong, some models are useful. A model which I know to be wrong but which I believe is nevertheless useful: skills are code in prose. You’re giving the computer a series of instructions to do a process. If you model that as equivalent in all meaningful ways to a Python script, and then follow the resulting intuitions, you’ll be on your way to Great and Terrible things.

I hesitate to say more beyond that because I think of this, more than anything else, as the Secret Sauce to whatever IP I may have developed. Get this part right, and almost everything else I do or have done becomes trivial with repetition.

Roughly five epics closed related to skill development and the evaluation harness I use to do that.

The Rest

  • I standardized how I pin the Python version across 11 currently active projects, plus pre-commit hooks to ensure future conformance.
  • I cleaned up the way I used to include technology-specific guidance across projects. @-style imports are now Claude Code rule selectors.
  • I got Renovate auto-merging running in a test repo with low blast radius and working CI/CD as a proof of concept.
  • I fixed Claude Code’s own auto mode configuration, which is not good at multi-project setups like mine.
  • I cleaned up some bad guidance baked into my CLAUDE.md from 6+ months ago, which is approximately forever in AI time.
  • I did general routine system maintenance on the script that configures and maintains my computers in synchronicity.

And probably at least 20 other things too small to mention, plus the entirely orthogonal threads in Claude Cowork related to a redesign of my physical notebooks, research, and the usual mundane day-to-day of questions and curiosity.