Back to Work
AI Workflows · Case Study

Designers Shipping Code: A New Workflow for UX Teams

I proved that a UX designer with zero git experience can go from spotting a problem to submitting a merge request on a production Red Hat product in under 5 minutes. No code by hand. No developer blocked. No Figma file opened. Now it's a documented workflow ready to scale across my entire team.

Product Image Builder (RHEL)
Timeline March 2026
Role UX Manager & AI Strategy
Tools Cursor AI + GitLab
Scale Documented for 8-person team rollout
cursor — image-builder-frontend
$ git checkout -b fix/ux-improve-new-feature-banner
Switched to new branch 'fix/ux-improve-new-feature-banner'
$ cursor "Rewrite the What's New banner: specific title, single dismiss, descriptive list items, CTA, and a link to documentation"
Modified: src/Components/LandingPage/NewAlert.tsx
+29 lines -27 lines · 1 file changed
$ git push origin fix/ux-improve-new-feature-banner
✓ Merge request !1 created
gitlab.cee.redhat.com/mfranke/image-builder-frontend/-/merge_requests/1
The entire workflow · From branch creation to merge request, driven by one sentence of design direction
<5 min
Decision to merge request
5
UX fixes shipped in one session
0
Developers blocked
0
Lines of code written by hand

Before and after

The "What's New" banner on Image Builder's landing page had a vague title, confusing dual-dismiss pattern, no call-to-action, and no documentation link. One sentence of design direction produced five concrete improvements.

Before: Original banner with vague title and confusing dismiss pattern
Before Vague title, no CTA, confusing dual-dismiss
After: Improved banner with specific title, clear CTA, and documentation link
After Specific title, descriptive list items, clear CTA, docs link

The challenge

Every design team has the same bottleneck: designers spot interface problems constantly, but fixing them means filing a Jira ticket, attaching a Figma mockup, waiting for a sprint, and hoping a developer interprets the intent correctly. I've never used git, never opened a terminal on purpose, and never written production code.

When my VP challenged the team to be the first to ship a design-driven merge request using Cursor AI, I took it on. The question: what if a designer could go directly from "I see the problem" to "here's the fix," and what if the entire team could do it?

Starting from zero

I didn't have any of the developer tools or access set up on my machine. Connecting to Red Hat's internal code repositories requires multiple layers of security configuration that I'd never done before. I described what I needed to Cursor in plain English, and it handled the entire setup conversationally, solving authentication and security issues along the way. What would have taken me hours of research took minutes.

The moment that sold me: Cursor hit a security certificate error that I wouldn't have known how to diagnose, let alone fix. It identified the problem, applied a one-line fix, and moved on. That's the kind of invisible blocker that would have ended this experiment for most non-developers.

I wanted to work on an actual Red Hat product, not a demo. The first attempt failed: an Edge Management frontend turned out to be stale code from 2021. I deleted it and moved on. The second attempt landed: Image Builder, the RHEL tool for composing and managing system images. Actively maintained, TypeScript and React with PatternFly. Cursor cloned the latest code and pushed it to a personal project on Red Hat's internal GitLab, fully isolated from the upstream team's work.

Spotting the design issues

This is where my UX background took over. Cursor analyzed the component source code, but I directed what to look for based on design principles I've used throughout my career. We identified three genuine issues on the Image Builder landing page.

Issue 01
Wrong empty state icon
A search icon implied "no results found" when the user simply hadn't created anything yet. The intent should be "get started," not "nothing matched."
Issue 02
Missing primary CTA
New users landed on an empty page with only documentation links. No button to create their first image. The onboarding moment was completely lost.
Issue 03
Stale "What's New" banner
Vague title, confusing dual-dismiss pattern, no link to documentation, and no call-to-action. First-impression problems that erode confidence.

These aren't nitpicks. They're the kind of issues that surface in usability testing. The AI found the components; I evaluated them through a design lens.

One sentence of design direction

I chose the banner as the primary target: most visible element on the page, and the before/after would be immediately obvious. I told Cursor what I wanted: a specific title that names the features, one dismiss action instead of two, descriptive list items, a clear next step, and a link to documentation.

My total input was one sentence of design direction. Cursor implemented all five changes in a single component, verified the code compiled, committed it, pushed it to GitLab, and created the merge request with a structured description including a UX rationale section.

Merge request on Red Hat's internal GitLab showing summary, changes, UX rationale, and testing sections
The merge request on Red Hat's internal GitLab: not a prototype, a real code artifact with UX rationale
Code diff showing 29 lines added and 27 removed in NewAlert.tsx
The code diff: 29 lines added, 27 removed in a single file (NewAlert.tsx)

Two failures, two lessons

Two things broke along the way, and both turned out to be learning moments.

The local preview crashed. The development proxy uses containers built for Intel chips, and my M1 Mac couldn't run them. Cursor diagnosed the crash and pivoted to an alternative: a browser snippet that applies visual changes to the live production page for screenshots. The workaround took 30 seconds.

GitLab tried to run CI/CD pipelines. The repository included automation config from the original project, and GitLab tried to run it against my personal copy. Impact on the real team: zero. Cursor walked me through disabling CI/CD in the project settings.

Both would have been dead ends without the AI. Not because they're hard problems, but because I wouldn't have known what the error messages meant, let alone where to look for the fix.

What this proved

Design judgment is the hard part
The AI can find components, suggest changes, and write code. Deciding which issue to fix, why it matters, and how it should behave: that's the designer's contribution.
The handoff gap is real, and expensive
Every Jira ticket with a Figma mockup involves a translation layer. This workflow collapsed the entire design-to-code cycle into a conversation.
The blocker isn't code. It's tooling.
I didn't struggle with understanding what needed to change. I struggled with SSH keys, SSL certificates, and git commands. Cursor absorbed all of that complexity.
"Safe to experiment" framing matters
Personal namespace, no connection to upstream repos, CI/CD disabled. I never worried about breaking something real, which meant I could move fast and learn by doing.

A new capability for the entire org

This wasn't a one-off experiment. From decision to merge request took under 5 minutes. No code written by hand. No Figma file opened. No developer blocked. That's a proof of concept for a fundamentally new capability: UXD can now close the loop on known interface issues without waiting for a sprint.

The designer drives every decision. Cursor handles every technical operation.
01
See the issue
Spot a UX problem in the live product, a Jira ticket, or a usability test
02
Describe it
Tell Cursor what's wrong in plain language: "the banner title is vague"
03
Discuss the fix
Cursor proposes options based on the design system. The designer decides.
04
Cursor implements
Branch, code change, and commit happen automatically
05
Preview and verify
Confirm the before/after in a browser
06
Submit the MR
Cursor pushes to GitLab and creates the merge request with a UX rationale

The designer never touches a terminal, writes a line of code, or memorizes a git command. This started as a challenge from my VP. It became a documented, repeatable workflow ready for team-wide rollout. Scale this across 8 designers and the backlog of known UI issues that never make it into a sprint starts clearing itself.

Next Case Study
Building an AI-Fluent Design Org →
150+ designers from zero AI adoption to 100% daily usage in under a year
Hiring for AI, product, or strategy leadership?
I'd rather have a conversation
than send a deck.
Let's talk about what you're building and where I might fit.
📍 Raleigh, NC · Remote friendly