Designed a subscription offer and built it on a live store without showing it to anyone
6 Oct·Product design
Designed a subscribe and save offer across a three size product range, settling the discount per size, a single billing weekday, a default split on flavour and whether pickup customers could join, then put the recommendation in an interactive panel that sets it beside current pricing. Built the three plans on the live store and checked the result rather than trusting it: all nine variants carry exactly one plan, the right one, and the product is still a hidden draft, so nothing reaches a customer until it is published.
ShopifyHTMLJavaScriptGitClaude Code
Wrote a prompt that reads a developer's own agent instead of interviewing them
6 Oct·Agent governance
Built a prompt a back end developer drops into their own coding agent, which reads what it already holds about how that person works and writes two files, a short operative rulebook for the repo and a longer guidelines document, then asks only about the lines it could not answer. A scope and privacy section opens it: the agent agrees what it may read before it reads anything, keeps the pattern and discards the session it came from, and holds a never include list covering people, other engagements, secrets and anything about hours or usage.
Claude CodeMarkdownLinearGit
Generated a design system's Figma variables straight from its stylesheet
5 Oct·Design system
Generated the design tool variable files for a design system directly from the stylesheet that already defines it, one file per mode, carrying 131 variables each with forty theme colours aliased back to the ramps they come from. Named the two things that format cannot carry, corner smoothing and the licensed fonts, so they get set deliberately by hand rather than quietly going missing.
CSSFigmaJSONClaude Code
Replaced a shell's hardcoded type with its design system's own tokens
18 Sep·Design system
Moved a product shell's base typography onto the design system's tokens, with the new rule placed inside the base layer so component classes keep winning where they should. The reviewer had not built it, so they rebuilt the merged tree, re-derived every target value from the compiled stylesheet rather than the pull request's own claims, and held the before and after computed styles side by side in light and dark.
ReactTypeScriptTailwindCSSVitestClaude Code
Shaped the removal of a legacy design system and built a guard that retires itself
18 Sep·Design system
Broke the removal of a product's legacy design system into staged work, with the shell moving to the current kit first and the deletion last. The guard that stops the old styles creeping back is built from the repo's existing lint fences and asserts its own allowlist rather than carrying an expiry date, because two of the files it covers outlive the deletion.
ReactTypeScriptESLintPostCSSVitestLinearClaude Code
Built six interactive explainers that give an abstract variable a handle you can drag
18 Sep·Design craft
Built a set of interactive artboards for a workshop, each taking one abstract variable and turning it into something you drag, so the effect of moving it shows rather than gets described. A cold review pass measured every artboard against its stated canvas size and found captions sitting a band out from the rings they labelled, a row clipping at the card edge, annotation text crossed by a plotted line, and one dead line of code, all fixed and re-checked.
HTMLSVGJavaScriptClaude Code
Built a reel method that rebuilds the interface instead of filming it
15 Sep·Content tool
Distilled eight rounds of a launch reel into a repeatable method: script the hook and one object's journey first, storyboard it lo-fi and rule it beat by beat, then rebuild the interface as animated components instead of shipping a screen recording. Copy, motion curves, glyphs and fonts are lifted verbatim from the product's own source, so the celebration burst in the final cut runs the real animation rather than an impression of it.
RemotionReactTypeScriptPlaywrightClaude Code
Designed a settings section as a live workbench rather than a static comp
2 Sep·Product design
Designed a product's settings section on a working preview instead of in a comp: one rail, an index and nine real forms, with seven switches that swap the shell, the grouping and what a non-admin meets, so every option could be ruled on screen at real measurements. Ran three rounds that way, then cut the result into eight per-surface design tickets and a playbook so the build starts from settled ground.
Next.jsReactTypeScriptStorybookVercelLinearClaude Code
Built a meeting note pipeline that pushes instead of pulls
2 Sep·Pipeline
Built an exporter that runs on every Mac, reads the local meeting store read only and drops each new note into a shared vault inbox, with the machines claiming meetings in one processed log so neither writes the same call twice. A new ingest stage folds the note into the page an earlier tool already made for that call, and speakers are named only from evidence in the transcript, never guessed from the topic.
PythonSQLitelaunchdMarkdownClaude Code
Gave a drag interaction weight without letting it bounce
1 Sep·Design system
Designed a drag that carries momentum: rows and cards trail the pointer, lean into the travel up to eight degrees and right themselves on pause, measured live at 3.6 degrees of tilt with about nine pixels of lag. Overshoot was left out because the kit forbids bounce, and reduced motion gets a plain drag.
ReactTypeScriptTailwindStorybookClaude Code
Handed a prototype over with its own acceptance suite
1 Sep·Prototyping
Packaged a working comparison tool for another team to build from, with the calculation isolated as a portable engine and a fifteen scenario byte diff so a port can be proven correct instead of reverse engineered. The acceptance suite went with it, 320 assertions running in a real browser.
JavaScriptPythonPlaywrightClaude CodeVercel
Built an editorial hub in one pass from real components
31 Aug·Product design
Built a full editorial hub from design system components: an incoming strip, a triage space with keyboard flicking, a kanban board with a fixed card anatomy, a paginated library and an editor modal reachable from three places. That build stays reference only and never opens a pull request, each surface re-lands on its own fresh branch and ships small, so nothing stacks on a long lived spike.
ReactTypeScriptTailwindStorybookClaude CodeLinear
Rebuilt a homepage scroll story around one sentence per viewport
28 Aug·Web design
Paired each beat of a home loan comparison homepage with a tilted photo card that drifts against the scroll, with every sentence given its own viewport so one beat lands before the next arrives. The drift runs on its own transform layer so it never fights the tilt or the reveal animation, and reduced motion turns it off.
HTMLCSSJavaScriptClaude CodeVercel
Stood up a second build runner and cut a three hour queue
28 Aug·Ops
Stood up a second self-hosted continuous integration runner on a spare desktop machine, with its own database cluster on a separate port and a launch agent so it comes back after a reboot. A five minute check had been waiting about three hours for the single slot, and the drain and deregister procedure went into the runbook before the install, because a machine going offline mid job strands that job until it times out.
GitHub ActionslaunchdPostgreSQLbashClaude Code
Built an overnight run that never merges and leaves the taste calls rendered
23 Aug·Agent infra
Designed an unattended overnight build protocol where agent sessions take a ticket each and stop at an open pull request, so every merge stays a morning decision, and twenty were waiting by review time. Where a call came down to taste the run built the consensus option and captured the runner-up as a labelled render beside it, so the morning was a ruling rather than a rebuild round.
Claude CodeLinearGitHubStorybook
Built a properties strip that only shows its controls when you reach for them
22 Aug·Design system
Built the frontmatter strip for a browser-based story editor, carrying tags, details and credit above the title, with each empty row offering itself on hover rather than sitting there as permanent chrome. A hand-rolled tags field was retired in the same change in favour of the kit's own input, so the strip reads as one surface rather than a row of separately-built controls.
ReactTypeScriptTailwindStorybookClaude Code