Agents, MCP and the design loop
I let an agent do the work. I do not let it decide whether the work is done.
LLMGate exists so that Anthropic, OpenAI and Gemini are a routing decision with a cost attached rather than three rewrites. Fallback is configuration. Mercala goes further and talks to an OpenAI-compatible API, currently GLM-4.7 behind nginx — none of the application code knows or cares.
The reason is not vendor politics. It is that model quality, price and availability all move, and a system wired to one provider cannot respond to any of them without a refactor.
An agent saying it finished is not evidence that it did.
The loop is written down as skills the agent loads before it starts, so the same steps run whether I am watching or not. Fully specified, repo-scoped work is delegated; anything cross-cutting, architectural or ambiguous stays with me. What decides whether something merges is machinery — the project’s real build, not a typecheck standing in for one.
Gives any MCP client structure-preserving retrieval. Consuming somebody else’s tool is the easy half of MCP.
packages/mcp inside the monorepo, exposing that product’s surface to an agent.
A prompt is advice. A skill is a procedure that loads every time, which is the difference between a habit and an intention.
Anything claiming a system lacks a feature is checked live before it is repeated — a cached answer about someone else’s API is the fastest thing on the shelf to go stale.
The design set is a source file, so a revision is a command rather than a day.
Claude Design is excellent at getting to a good-looking artefact quickly, and for a one-off page that is the right tool. This site is not a one-off page — it is twenty-one of them sharing one nav, one footer and one token file, revised repeatedly. What OpenDesign gives me is a design set that lives as files I own: a single :root, one @font-face block, a documented contract, and therefore something a script can consume deterministically. The win is not the first render. It is the fifth revision, where the change is re-running the porter and diffing, instead of hand-carrying edits into twenty-one components.
A plan that lives only in a chat window does not exist.
the first of the standing rulesFive of them, and they fire before anything else.
- Issue firstEvery change starts as a written issue with acceptance criteria. Findings surfaced mid-task become tracked issues immediately rather than staying in the conversation.
- One worktree per issueThe main checkout stays clean and on main. Parallel work never collides and nothing is committed straight to the default branch.
- Built fully, never stubbedNo placeholder ships as though it were the real thing. A shortcut forced by a hard constraint is called out and reverted, not left in.
- Verified by measurementThe real build, lint and tests. “Should be fine” is not a result, and neither is an agent’s report of success.
- Never assert absence from a snapshotBefore saying a feature does not exist — and always before asking another person for anything — re-measure it live.
hallelx2.com
Ported by a script, verified by pixel-diffing every page against the design set, and deployed from the same loop. The activity page is generated from the registries for the same reason — so it cannot flatter me and cannot go quietly out of date.
The agent is fast. The gate is what makes the speed worth anything.
Every claim on this site can be checked against a repository, and that is not a coincidence — it is the only version of moving quickly that survives somebody looking closely.