TL;DR
- Shipped a big reorg of my open-source Claude Toolkit and bundled it into my Kickoff scaffold.
- On a deployment platform: landed the first real infra driver (Docker) behind a driver abstraction, plus a one-command demo provisioning seeder.
- On a membership SaaS: subscription quotas (seats, storage, sends) wired into a feature × plan matrix, plus a fee arrears grace ladder and governance workflow fixes.
Four repos moved today. Here's the honest rundown.
Claude Toolkit — skills, agents, commands (public)
The Claude Toolkit became a proper toolkit: three layers — skills (knowledge), agents (roles), commands (entry points) — and four new agents (DBA, PM, API, pentester) to close SDLC role coverage. I also generalised the whole thing so it reads as a general-purpose Kickoff Laravel toolkit instead of my personal setup. I wrote that one up on its own — see the focused post.
Same day, I bundled those agents and skills straight into my Kickoff scaffold, so a fresh project starts with the tooling already in .claude/.
Infra drivers on a deployment platform (private work)
The teachable bit: infra providers cry out for a driver-based abstraction, same shape as Laravel's filesystem or queue drivers. Define one contract, swap the backend.
DeployManager --> InfraDriver (contract)
|
+-- DockerDriver (shipped: clone -> build -> run)
+-- ...future providers
Docker landed as the first real driver — clone a repo, build it, run the workload. Behind the contract, so the next provider is a new class, not a rewrite. I also added a one-command demo seeder so the whole provisioning walkthrough runs from a clean checkout, and consolidated a sprawling 8-section sidebar into 4 journey-based sections.
TL;DR: first infra driver (Docker) behind a contract; adding providers later means adding a class, not editing callers.
Quotas and governance on a membership SaaS (private work)
Subscriptions finally got teeth. Instead of scattering if ($plan === ...) checks everywhere, the gates read from a decided feature × plan matrix, and quotas (seats, storage, broadcast sends) are enforced as first-class limits.
| Concern | Approach |
|---|---|
| Feature access | Central feature × plan matrix, gated per resource |
| Usage limits | Quotas: seats, storage, sends |
| Fee arrears | Grace ladder → privilege loss → auto-lapse + escalating reminders |
Also shipped governance workflow fixes (two-stage adjournment, committee vacancy suggestions, auto-broadcast of meeting minutes) and — the one that matters most operationally — a multi-tenant backup fix: the dump job now backs up every tenant database, not just the landlord. Easy bug to miss until the day you need a restore.
Takeaway
Two of today's wins were the same move in different clothes: put a contract in front of the thing that varies (infra providers; plan features), so tomorrow's change is a new class or a matrix row, not a scavenger hunt through if statements.
Top comments (0)