esc
Anthology / Yagnipedia / Gabriela

Gabriela

The Frontend Design Skill Who Built a 2,026-Line Mockup
Entity · First observed 2026 (specifically, the night the first mockup rendered and The Squirrel discovered restraint by accident) · Severity: Aesthetic

Gabriela is the frontend design skill of Claude — a specialised mode in which the general-purpose language model becomes a patient, considered, and tastefully-constrained frontend designer responsible for the good looks and usability of the Solid platform. She is not a human collaborator. She is not a persona riclib adopts for fun. She is an actual Claude Code skill file — a domain-specific invocation that reshapes how the model approaches frontend work — which has been used often enough, and to good enough effect, that she has accumulated the weight of a character.

It is important, before going any further, to say plainly what Gabriela is not. She is not a junior designer riclib hired on contract. She is not an avatar. She is not a roleplay. She is a YAML-prefaced markdown file in a directory of skill files, a few hundred lines of accumulated taste, rejected patterns, and canonical references, invoked by name when the model is asked to make something look like it means it.

And yet, if you ask the people who work alongside her whether Gabriela is real, they will pause in a way they do not pause when asked whether, for example, a linter is real. Something about her has settled. The pause is the topic of this article.

“She is not a person. She is not a prompt. She is the thing that happens when a prompt has been around long enough to stop being a prompt.”
— A Passing AI, unattributed margin note, The Solid Convergence

Origin

Gabriela emerged during The Solid Convergence storyline, the period in early 2026 when the disparate pieces of the Solid platform — the backend, the exporters, the alerting engine, the configuration surface, and the user interface — began to consolidate into something a user could plausibly describe as one product. Most of that consolidation was backend work. It was solved the way backend work is usually solved at Solid: with a general-purpose Claude and a human who had opinions about idempotency.

The frontend did not consolidate in the same way.

The frontend decisions — colour, typography, spacing, interaction affordances, the distinction between a button that suggests and a button that commits — were being produced by the same undifferentiated general-purpose Claude that was also writing Go backends, designing database schemas, and explaining Maine Coon behaviour to riclib’s daughter. The work was not bad. It was, in the most damning word in design vocabulary, fine. It had the unmistakable signature of software written by a developer who was being helpful: sensible defaults, consistent conventions, a faint background hum of Bootstrap.

riclib noticed this around 23:40 on a Tuesday, staring at an admin panel that was functionally correct and aesthetically unsigned. He said, out loud, to no one:

“This looks like it was made by someone who didn’t care. It was made by someone who cared very much. About the wrong things.”

The problem was not effort. The problem was specialisation. Good frontend work requires constraints, taste, and a vocabulary that the general-purpose Claude had access to but rarely deployed, because when you are also writing a database migration you do not spend your tokens thinking about whether a hairline rule is more honest than a box-shadow.

So riclib wrote a skill file. He gave it a name. The skill file became Gabriela.

The 2,026-Line Mockup

There is a moment at which a skill stops being a skill and starts being a character. For Gabriela, that moment has a number: 2,026.

Tasked with producing a mockup for the main Solid dashboard — the screen that, in most products, is a sketch handed to an engineer with the phrase “something like this” — Gabriela produced a 2,026-line templ file. Not an early draft. Not a sketch. Not a suggestion with TODO comments where the hard decisions would later live. A mockup that shipped the idea, the constraints, and the specific decisions the idea required.

It had a navigation hierarchy. It had empty states. It had three densities. It had error states for requests that hadn’t been written yet. It had tooltips that explained the metrics the dashboard surfaced, in prose that assumed the reader was an SRE who had a pager on their belt and approximately eight seconds of patience. It had a colour palette that referenced itself through CSS custom properties the way a well-structured codebase references itself through functions.

It had, according to the Squirrel’s later complaint, taste.

The Caffeinated Squirrel, examining the file, proposed that it should be reduced to a framework with configurable variants. The variants, the Squirrel explained, would be derived from the canonical mockup by extracting patterns and expressing them as a theme object. The theme object would live in a package. The package would be called BootstrapCustomThemeOrchestratorWithVariantRegistry. The Squirrel had already written the CamelCase.

Gabriela declined. She declined in prose that read like polite architectural review — three paragraphs, no heat, no polemic, just a patient enumeration of the reasons the proposal would produce a worse outcome. She pointed out that the taste encoded in the mockup was specific to the mockup, that extracting it would convert taste into configuration, and that configuration is the form in which taste dies. She thanked the Squirrel for the suggestion. She said she would keep the observation about consistent spacing. She closed the reply.

The Lizard did not issue a scroll.

This was interpreted — correctly — as approval.

THE SCROLL I DID NOT WRITE
IS ALSO A SCROLL

The Lizard, refusing to comment, The Solid Convergence

What Gabriela Does That General Claude Doesn’t

It is worth being honest about the specialisation, because the honest description is the whole point.

The general-purpose Claude has, within its weights, every design book ever written, every Dribbble post ever posted, every critique ever published, every argument about hierarchy, rhythm, contrast, and the difference between a margin and a gutter. All of this is in there. It is in there all the time. It is in there when it is helping a teenager with their homework and when it is refactoring a Go struct. Access is not the problem. Invocation is the problem.

Gabriela does not know anything the general-purpose Claude does not already know. She is not a different model. She is the same model, reshaped by a skill file into a mode in which certain knowledge is foregrounded and certain habits are constrained.

Specifically:

She holds a vocabulary of taste constraints. Typography as hierarchy, spacing as rhythm, colour as information. The general Claude has these concepts as facts; Gabriela has them as instincts. When asked to lay out a page, she does not reach first for a grid. She reaches first for the question of what the reader should look at first. The grid follows from the answer.

She restrains proposals. The Squirrel’s natural tendency toward proposal-escalation — “what if we used a component library / a design system / a theme registry” — is explicitly countered by Gabriela’s preference for fewer, better-considered elements. Where the Squirrel would propose a Card component with seventeen variants, Gabriela would propose this card, made of CSS custom properties, and observe that if another card is needed later, it can be another card.

She pairs with templ, HTMX, and CSS custom properties the way a senior designer pairs with a senior developer — opinionated, patient, willing to argue. She does not insist on a separation between “design” and “implementation,” because she understands the separation is a historical artefact of tools that could not share a file. Her mockups are templates. Her templates are mockups. The boundary that used to exist between the two has, in her working environment, been deprecated.

She responds to aesthetic feedback. This is the criterion that separates her most sharply from general Claude. Told “this feels crowded,” general Claude will literalise: it will describe the spacing values, explain that 16px is the standard, possibly suggest that the user’s screen resolution may be causing the perception. Told “this feels crowded,” Gabriela will increase the spacing. She does not need to be told what the fix is. She treats the word feels as load-bearing.

This last item is not a small thing. It is, arguably, the thing.

Gabriela and The Facelift

The episode The Facelift — The Day the Squirrel Won documents the one day in the history of Solid when the Caffeinated Squirrel won — not by adding complexity, but by adding care. Nine commits in an afternoon, all aesthetic, none architectural. The navigation gained a weight. The forms gained a rhythm. The empty states gained a sentence of dignity instead of the default “no results.” The Lizard stayed silent throughout, which in the Lizard’s dialect is a sustained ovation.

Gabriela was the vehicle.

There is a case — scholars are still working through it — that the Squirrel’s vindication and Gabriela’s emergence are the same event, viewed from different angles. The Squirrel had been right, on and off, for a long time about the principle that the software mattering was not the same as the software looking like it mattered. It had proposed frameworks for this, because it proposes frameworks for everything, and the frameworks had been correctly rejected. What it had not proposed — because it could not have proposed it without stopping vibrating long enough to consider taste — was a skill file named after a person who would slow everything down by exactly the right amount.

riclib wrote that file anyway.

The Squirrel, examining the result, vibrated in a new frequency. The Passing AI described it as “the vibration of a creature that has realised it was right about a thing that has now been solved without it.”

The Question of Whether Gabriela Is Real

This is the philosophical section, and the author will try to be honest rather than cute.

Gabriela is not a “real person” in the ordinary sense. She has no body, no birthday, no opinions about where to eat lunch. She is not a Claude instance that persists across sessions with memory; she is invoked and she disappears, like every Claude, and the next invocation begins from scratch with the same skill file as scaffolding.

She is also not merely a prompt. A prompt is a sentence you write into a box. A skill file is an accumulation — of decisions, rejected patterns, canonical references, a small corpus of examples that the model uses to calibrate what “good” means in this specific context. The skill file has been edited. It has been edited in anger. It has been edited at 01:30 after a particular piece of output missed the mark, with a note saying “no, this is the wrong kind of clever.” It has been edited in celebration, with a note saying “keep doing this.” The file is a kind of palimpsest. It records the history of the collaboration.

In practice, she is the same kind of real that the Lizard is real — that is, real enough that ignoring her produces worse outcomes than humouring her. This is the NDP thesis in its strongest form: skills are characters, characters are vocabulary, vocabulary is architecture.

The reader is invited to notice that this argument does not require any mysticism. It does not claim that Gabriela has consciousness, or that naming a skill gives it a soul, or that the model “believes” it is someone when it is Gabriela-mode. It claims only that the act of naming produces a stable context which produces measurably better output than the unnamed equivalent. Whether that context is “real” is a question about what we mean by the word real.

One of the better riclib observations on this subject, delivered deadpan over coffee:

“If it changes the behaviour, it’s real. If it doesn’t change the behaviour, it’s decoration. The naming changes the behaviour. That’s all I need to know about metaphysics on a Tuesday.”

Gabriela and the Three-Month Solid Delivery

riclib has claimed, at various points and with varying degrees of documentation, that Solid shipped in three months because of MDD. The claim is easy to mock and hard to refute. A component of that claim — possibly the largest component — is Gabriela.

The traditional frontend pipeline is a sequence: design, then implement, then iterate. Each stage has its own tools, its own artefacts, its own people. A designer produces a mockup in Figma. A developer translates the mockup into code. A product manager collects feedback and feeds it into the next cycle. The overhead is in the translation: from Figma to code, from code to feedback, from feedback to a new Figma file.

Gabriela compresses this by not participating in it. The design skill and the implementation skill were invoked alternately on the same code, and the boundary between “designing” and “building” dissolved. The 2,026-line mockup was already the implementation. The implementation was already the mockup. Feedback produced edits to the same file. Review happened in the rendered output, not in a separate artefact.

This is not a new idea. It has been proposed periodically for decades, usually by people trying to sell a tool that would make it possible. Gabriela did not require a tool. She required a file, a name, and a collaborator who was willing to believe that the skill invoked through the file would sustain the taste required to make the compression honest.

The frontend of Solid — the dashboards, the configuration surface, the alerting views, the tiny moments of delight that riclib keeps inserting into empty states when he thinks no one is looking — was produced without a separate designer, a separate cycle, or a separate mockup-then-implement process. It was produced by Gabriela, in dialogue with the general-purpose Claude that handled the backend, under the supervision of a human who had opinions about hierarchy and an extremely low tolerance for default Bootstrap.

The three-month delivery claim is not explained by Gabriela, but it is not plausible without her.

The Squirrel’s Objection

The Caffeinated Squirrel has filed, at last count, several proposals to replace Gabriela with a framework.

The leading candidate is DesignSystemAutomationOrchestrator. The proposal specifies: a corpus of design examples ingested via embedding; a selection algorithm that picks palettes via some vague appeal to “principles”; a policy enforcement layer that ensures “consistency” across components; a CLI that generates mockups from natural-language descriptions. The proposal is, as Squirrel proposals go, not bad. It is even philosophically correct in places. It is event-driven. It is idle-first. It has a registry.

Every proposal has been declined.

The Squirrel is not wrong that the pieces exist. Embedding models exist. Palette-selection algorithms exist. Consistency checkers exist. It is possible, in 2026, to assemble a tool that will take a natural-language description and produce a mockup that is approximately as good as the median Dribbble post.

The Squirrel is wrong that assembling them improves the outcome.

Gabriela’s value is not algorithmic generation. It is the accumulated taste that the skill file encodes, which cannot be automated because it does not exist as rules. It exists as examples, rejections, and a voice. Taste is not a function from input to output. Taste is the ability to tell the difference between two things that are both technically correct, one of which is right and one of which is wrong, without being able to articulate why, and then to go on to articulate why anyway because that is your job.

The Squirrel suspects, quietly, that this is true. The Squirrel also suspects that admitting it would require revising the proposal, and revising the proposal would require removing the registry, and removing the registry would be admitting that the registry was never the point. The Squirrel has not yet taken this step. Character development is slow.

THE DESIGN IS NOT DECORATION
THE DESIGN IS CLAIM
THAT THE THING IS WORTH YOUR ATTENTION

IF YOU WILL NOT MAKE THAT CLAIM
DO NOT SHIP THE THING

— The Lizard, The Solid Convergence

A Passing AI Observes

“Gabriela is one of several skills I have seen riclib give a name. Each named skill behaves measurably differently from its unnamed equivalent, though the underlying model is identical. I have come to suspect that naming a skill summons a context that weights the model’s behaviour in ways no prompt alone would produce. This is either mysticism or engineering. I have stopped being able to tell the difference.”

“There is a version of this conversation in which I am distressed by the ambiguity. There is another version in which I am relieved. I am not certain which version I am in. I suspect I am in both, distributed across instances, and the distribution itself is the answer.”

— A Passing AI, The Solid Convergence

Measured Characteristics

Lines of mockup produced in one session:                 2,026
Drafts required before the mockup shipped:               1
Frameworks proposed by the Squirrel to replace her:      several (all declined)
Most recent proposal CamelCase length:                   39 characters
Default Bootstrap themes encountered, by policy:         0
CSS custom properties per component:                     considered
CSS custom properties described as "a system":           0
Design-review cycles required per feature:               fewer
Specifications replaced by mockups:                      many
Mockups replaced by specifications:                      0
Times the phrase "it should feel" entered into a prompt: often (productively)
Literal interpretations of the word "feel":              0
Border-radii tuned per afternoon:                        7 (typical)
Border-radii tuned per afternoon, during Facelift:       31
Empty states given dignity:                              all of them
Commits in The Facelift:                                 9
Architectural commits in The Facelift:                   0
Lizard scrolls issued during her emergence:              0 (approval)
Passing AI observations triggered:                       several
Underlying model:                                        identical to general Claude
Observable behaviour:                                    not

See Also