Build1 publisher3 min readPublished
A zero border radius rule caused more arguments with Claude Code than the 1C sync did
A solo developer synced a production WooCommerce store to Russia's 1C ERP in real time over CommerceML, and the sharpest agent friction he records lands on a design token rule about corners.
The Engineer · Build desk
What happened
- A solo developer built a production WooCommerce store for a women's clothing brand on WordPress, with Claude Code writing most of the code while he handled architecture, task breakdown and review.
- The theme is block-based with no page builder plugin, and theme.json holds the four colours, 8px spacing scale and two typefaces that WordPress turns into the CSS variables every stylesheet uses.
- The developer says one design rule, border radius zero everywhere except pill-shaped tags, caused more arguments with the agent than anything else on the project.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- cost On the incumbent path a single-shop client pays for the licence, the renewal and the integrator pool, so the store either drops requirements or the developer takes ownership of the sync code.
- constraint A token file constrains only the code that reads it, and holding the palette meant enforcement in human review, which is where the developer's time went.
- decision Skipping the vendor's exchange module makes the CommerceML endpoint the builder's to keep working through the client's next 1C upgrade.
- contradiction The post is framed around what broke, and the friction it records is a style rule. On this account the ERP boundary has yet to break under agent code.
WordPress's theme.json is a real single source of truth. Declare four colours, an 8px spacing scale and two typefaces in it, and the platform emits the CSS custom properties, so every stylesheet in the theme references a variable and never a raw value [10]. The rule that gave the most trouble was the simplest one in the design: border radius zero everywhere except pill-shaped tags [12]. "That one rule caused more arguments with the agent than anything else on the project," the developer wrote on dev.to [11]. Taking that ranking at face value, a corner style outranked the real-time ERP sync as a source of friction [20].
I would expect that sync to have more ways to fail quietly than any stylesheet. 1C, the ERP and point-of-sale system behind most Russian retail, only talks to the outside world through XML [2]. The store reads it in real time over CommerceML [3]. The unit of stock is not the product: every size-colour pair carries its own count [4]. Card and instant payments run through a local processor, and the site also owes courier delivery, a cookie banner with consent checkboxes for local privacy law, and ecommerce event tracking [18].
The usual answer locally is Bitrix, the dominant commercial CMS, which ships a stock exchange module and, in the developer's phrase, "a pool of integrators who already know how to bill for it" [5]. For a one-location boutique he puts licence, annual renewal and integrator fees close to the entire budget of the open-source build, before a single feature exists [6]. Choosing WooCommerce instead moves the ERP integration into code the builder maintains. The design pushed the same way: the client had a React prototype in a quiet-luxury look and wanted it copied exactly, and forcing that onto a stock theme takes longer than writing one from scratch [7][8].
There are no page builder plugins anywhere in the theme, and functions.php only requires four files out of inc/ [9][16]. The reason he gives is that "every builder plugin costs you performance, ties you to somebody else's release schedule, and inserts a layer between the design and the code you actually control" [19].
The post is headlined around what broke [17]. The text runs through architecture, tooling and the first of three things credited with keeping the build together, CLAUDE.md, the instructions file Claude Code reads at the start of every session [15]; the available text stops before the itemised bug list [21]. On this record the documented agent failure mode is token adherence. The checks that catch token drift were in the stack: MCP servers for Playwright browser checks and SSH deploys [13].
The agent wrote most of the code; the developer did the architecture, split the work into tasks and reviewed what came back [1]. "That's not less work than building it by hand. It's the same amount of thinking, compressed into review instead of typing," he wrote [14].
What to watch
- Whether the rest of the write-up gets to ERP-side bugs, such as stale variation counts or XML parse failures, or keeps the breakage on the front end.
- Whether the hand-written CommerceML endpoint survives the client's next 1C upgrade without an integrator.
- The other two practices the developer credits alongside CLAUDE.md for holding the build together.