Lichin Lin

A collection of my story, past work, and design engineering projects.

About me

has always been driven by curiosity about how design happens. I like understanding what leads to an interface: the product questions, constraints, decisions, and small interaction details that shape the final outcome.

Career

At (2020-23), I worked on internal Figma plugin for design operations. At (2023-24), my focus shifted to website engineering with the marketing and brand team. Now at (2025-present), I work in design engineering across the main product, CLI, and the new GitHub Desktop app.

Projects & community

Outside of work, I've always liked building interface experiments: tools for recording my , explorations, for product builders, and random on the web. They all come from the same place: using code to test interaction ideas and understand how an interface should feel.

Back in Taiwan, I helped run events and shared what I was learning with other designers and builders. Over time, that led to opportunities to attend conferences in the U.S. and share some passion projects on stage.

Community events, conference moments, and talks from Config and local Taiwan design events

I think that is a big part of how I learned to think as a design engineer. Side projects gave me a place to explore quickly, polish interaction details, and understand what makes a tool useful or delightful. That mindset also carries into my work at GitHub, which I’ll walk through next.

Design engineering at GitHub

I joined GitHub ~1.5yr ago, and a big part of my work has been thinking about how to make developer interfaces feel smoother and easier to understand.

Main app

GitHub interface work represented by the GitHub mark on a soft patterned background

One thing I do a lot at GitHub is learn the product through audits. Instead of only looking at one screen, I’ll collect examples across different surfaces — repos, issues, pull requests, diffs, and put them together on a canvas for discussion.

For example, we once looked at truncation issues across the product. At first, it sounds like a small problem: if the text is too long, just truncate it. But in developer tools, not all text is scanned the same way. A file path, branch name, repo name, or issue title each carries different context and importance.


Another small example is the Copilot head shape. We had a discussion around whether it should appear in a circle or a square. That sounds tiny, but inside GitHub, those shapes already carry meaning. A square can feel closer to an orgs or a bot, while a circle is more often associated with a human avatar.

Copilot icon shape exploration

That matters because agents are increasingly treated as teammates that can help move work forward. When Copilot appears near comments, reviews, or activity surfaces, a round shape helps it feel more like a participant in the workflow instead of just a system object.

And of course, after the design audit, we put on PRs:

Pull request follow-up from a GitHub design auditPull request follow-up interface detailPull request follow-up interface reviewPull request follow-up implementation detail

GitHub Copilot app

After working across the main GitHub product, we started spending more time on newer Copilot surfaces. Earlier this year, GitHub was exploring how AI changes not only coding itself, but also how people interact with development tools.

One early example was GitHub Copilot CLI, which helped us understand AI interaction in a fast, keyboard-driven environment. But the terminal is not the only surface. A GUI can support richer review, multitasking, and visual context, while also making the experience more approachable for people who are newer to software world.

GitHub interface work represented by the GitHub mark on a soft patterned background

That is where the GitHub Copilot app comes in. It gives us a dedicated surface for AI-assisted development, where chat, code changes, previews, diagrams, diffs, and project context can come together in one place. I worked across a few parts of the app, and I’d focus on the Mermaid diagram experience below.

Close view of the GitHub Copilot app session list and project workGitHub Copilot app interface with theme and code preview detailsGitHub Copilot app and a diagramming article shown on a desktop monitorGitHub Copilot app interface with theme and code preview details

Connecting the dots

Mermaid is already a popular way for developers to create diagrams from text, and GitHub has supported it for a long time. But the rendering experience can still feel quite basic, especially when diagrams become larger or more complex. We believed that if diagrams could become clearer, more readable, they could become a much better surface for understanding plans and technical context.

Copilot icon shape exploration

I had worked on diagram systems in different contexts before, but many of those ideas had not fully shipped. With the Copilot app, the timing started to make more sense.

At the most basic level, diagrams are just ideas and information represented as nodes and edges. But without hierarchy, direction, and spacing, the relationships become messy very quickly,

Early diagram exploration with simple node blocks and connector linesDiagram node styling exploration with light node labels on a dark canvasDense diagram routing exploration with many connector linesStructured diagram layout exploration with routed connector lines

Then we started looking at edge treatment: curves, highlighting, and how the direction of a flow should be communicated. Once you get a larger diagrams, you start to hit harder problems like overlapping nodes, noisy edges, and paths that are difficult to follow.

Diagram structure exploration with highlighted branch routingDiagram structure exploration with balanced vertical routingDiagram structure exploration with a wider horizontal hierarchyDiagram structure exploration with path markers and rounded connections

One thing we tried was splitting the edges more clearly, so every connection had its own path and direction. It helped in some ways, because you could see the structure more explicitly. But it also showed us the limitation: once the diagram gets complicated, simply separating every edge can still become noisy:


After that, we moved back toward merging the edges. But once you merge edges, you need to be careful about readability. So we added two treatments:

One was edge crossover handling, so when lines intersect, users can still tell which path continues.

Before
ABCD
After
ABCD

The other was a special corner treatment inspired by , where the routes feel more intentional and directional.

Before
ABCDEMergeOut 1Out 2
After
ABCDEMergeOut 1Out 2

With those explorations, we shipped a version that made Mermaid diagrams clearer and more useful inside the app. For me, this is one example of how we craft UI in the GitHub Copilot app: looking closely at where the experience breaks down, and improving the details until the product feels easier to understand.

Final diagram rendering with refined node spacing and connector routingFinal diagram rendering showing clearer edge hierarchy and canvas compositionFinal diagram rendering with polished node labels and routed connectorsFinal diagram rendering showing the completed diagram visual treatment

At the same time, AI models will keep improving, and some workflows may need less visible UI over time. But until then, there is still a very important layer where people need to inspect, understand, guide, and trust what the system is doing.

That is why design engineering is still so fascinating to me. Even in an agentic workflow, the interface is where people stay oriented, make decisions, and feel in control.