Infrastructure, MCP Tools, and Developer Ergonomics - October 2025
Hey! Howās it going? This is the October 2025 edition of my now monthly newsletter Iāll be doing this to share what Iāve been working on, learning and building.
So, as youāll see from this, currently this newsletter is a summary of all my GitHub activity, just so I have something to reflect on personally, you can look at the commits on this repo to see what Iāve been up to! Essentially, Iām getting all my GitHub activity (commits, PRs, issues, releases) and feeding that into Claude to generate a monthly newsletter. Itās a bit meta, but itās a start!
If it werenāt for AI this newsletter wouldnāt exist, so shout out to Claude for making this possible.
October was split between private client infrastructure work and building tools that scratch my own development itches. The month started with a SQLite corruption investigation that turned into a learning experience about database backups, then shifted to creating MCP tools/CLIs for Claude to use and refactoring Devhub.party to actually work!
The technical split was roughly 40% private infrastructure and monorepo work, 30% MCP tool development, and 30% CRM refactoring.
Private work dominated the commit count - building PDF generation systems via a CLI for Claude to use (Claude loves using tools!!), working with CSV pipelines (for the Claude CLI), and implementing database utilities for client projects along with infra work for improved CI/CD.
Highlights
Three threads ran through the month: database reliability, MCP tooling ecosystem, and component architecture.
SQLite Corruption and Database Backups
I noticed my siteās popular posts werenāt displaying and discovered
Iād corrupted my SQLite database. Wrote up the full investigation in SQLite Corruption with fs.copyFile() in WAL Mode -
the short version is that fs.copyFile() doesnāt respect WAL modeās
locking semantics. The fix involved implementing an SQLite backup API
using the native .backup() method and setting up automated backups
through cron jobs. This turned into a pattern Iāve since reused across
projects.
MCP Tool Development
I built several MCP tools to improve Claude Code workflows. mcp-sqlite-tools adds SQLite handling with connection management and
schema operations. mcp-omnisearch brings web search to Claude with
support for multiple providers and search operators. claude-skills-cli (not an MCP!) gives Claude guardrails to follow
when creating SKILL.md files. Each of these tools solves a specific
friction point (for me!) when working with AI assistants.
Devhub CRM Architecture
I spent the latter half of October rebuilding Devhub CRM with Better Auth and Remote Functions. The authentication implementation was straightforward: email/password auth with session management using SvelteKit remote functions.
The GitHub integration for importing contacts is what Iām really happy about! Thereās also a QR code generator for profile sharing.
Blog Posts
Two posts on scottspence.com and Iāve already discussed the SQLite corruption issue.
MCP Server Context Optimisation
I wrote about reducing MCP tool context usage in Optimising MCP Server Context Usage in Claude Code. This is when I started a Claude Code session and noticed it was consuming 66,000+ tokens before typing a word. The fix involved aggressive description pruning, removing redundant documentation, and consolidating tool definitions.
Component Testing Patterns
With the Vitest v4 release I updated sveltest.dev to use the new patterns.
With that then updated Devhub from @testing-library/svelte to vitest-browser-svelte.
Database and Schema Management
I implemented migration handling with schema initialisation for Devhub and scottspence.com. Rather than complex migration tools, I used simple SQL files executed on startup.
Open Source
Public work focused on documentation and tooling.
MCP Tools Ecosystem
I do a fair bit of tooling for MCP! Released updates to mcp-sqlite-tools (v0.0.15) optimising tool descriptions and fixing multi-statement SQL
handling.
I updated mcp-omnisearch search
operators after the context usage learnings.
Created mcpick (v0.0.4), a
CLI for managing MCP server configurations as I was cheesed off with
having to manually edit the .claude.json every time I wanted to swap
out an MCP tool.
Built claude-skills-cli because Claude canāt help itself when you ask it to write a document
it goes bananas!.
Vitest v4 Migration
Mentioned already! But updated sveltest for
Vitest v4, changing imports from @vitest/browser/context to vitest/browser. Added migration guides explaining the breaking
changes. Updated test examples and configuration files.
Phew!
Thatās quite a lot! I have edited this from what Claude generated! what do you think? Too much? Too vague? Let me know!
Thanks for reading, catch you next month!