Traditional documentation
- Written for browsing and learning
- Requires the reader to find the relevant page
- Leaves implementation choices to the developer
- Usually catches mistakes during review
Pine MCP
Pine MCP gives AI assistants direct access to Pine's component contracts, accessibility guidance, token rules, layout patterns, and implementation standards. Instead of relying on generic training data, generated code can use the same source of truth as the engineers maintaining the system.
Pine MCP moves design-system decisions from review time to generation time.
Overview
Pine MCP is not simply documentation exposed to an AI assistant. It is structured design-system context that helps AI choose the correct components, tokens, layouts, accessibility patterns, and implementation rules before code reaches review.
A generic model predicts the most common answer on the public web. Pine MCP retrieves the answer supported by the current design system.
Problem
Generic AI assistants produce plausible UI based on common public patterns: raw HTML, utility classes, Bootstrap-like grids, hardcoded values, and component APIs from other systems. The problem was not that generated code always looked obviously broken. It often looked acceptable in isolation.
The most dangerous output was not obviously incorrect. It was code that looked acceptable in isolation but violated the system in ways that surfaced later through accessibility issues, dark-mode failures, inconsistent behavior, or code review.
Documentation Was Not Enough
Human documentation is written for browsing, learning, and judgment. AI-assisted development needs retrievable context that is current, specific, and available at the moment code is being generated.
How Pine MCP Works
Pine MCP makes design-system knowledge available as structured context. Tools can retrieve component APIs, design guidance, layout rules, token expectations, and accessibility guidance during generation rather than after a pull request is opened.
get_pine_componentget_pine_design_docEvidence
These examples show the kinds of decisions Pine MCP can pull forward: semantic tokens, layout primitives, accessible names, feedback behavior, and form accessibility.
Style a card with a white background, thin gray border, dark title text, and slightly lighter body text.
.card {
background-color: var(--pine-color-white);
border: 1px solid var(--pine-color-grey-300);
color: var(--pine-color-grey-900);
.card-body {
color: var(--pine-color-grey-700);
}
}.card {
background-color: var(--pine-color-background-container);
border: 1px solid var(--pine-color-border);
color: var(--pine-color-text);
.card-body {
color: var(--pine-color-text-muted);
}
}Build a two-column page with wide main content and a narrow sidebar. Stack it on mobile.
<div style="max-width: 1200px; margin: 0 auto;">
<div style="display: flex; gap: 16px;">
<div style="flex: 2;">Main content</div>
<div style="flex: 1;">Sidebar</div>
</div>
</div><pds-container size="lg">
<pds-row col-gap="md">
<pds-box size-xs="12" size-md="8">
Main content
</pds-box>
<pds-box size-xs="12" size-md="4">
Sidebar
</pds-box>
</pds-row>
</pds-container>Add a close button to the modal header that just shows an X icon.
<button class="modal-close" onclick="close()">
<svg width="16" height="16">
<!-- X icon path -->
</svg>
</button><pds-button icon-only aria-label="Close dialog">
<pds-icon slot="start" name="remove" aria-hidden="true"></pds-icon>
Close dialog
</pds-button>Request: Show a success message after the user clicks Save.
{saved && (
<div className="bg-green-100 text-green-800 p-3">
Saved!
</div>
)}<pds-toast
component-id="save-success"
variant="success"
message="Profile saved."
></pds-toast>Request: Add an email signup form with an email input and submit button.
<input type="email" placeholder="Enter your email" />
<button type="submit">Submit</button><pds-input
component-id="signup-email"
label="Email"
type="email"
name="email"
required
></pds-input>
<pds-button variant="primary" type="submit">
Submit
</pds-button>Pattern
Across the examples, the pattern is consistent. The assistant should not have to infer Pine from generic web examples. It should retrieve the current rule, apply the documented component contract, and avoid anti-patterns before a reviewer has to correct them.
Generation-Time Guidance
The old flow pushed recurring system corrections into review. The Pine MCP flow moves those corrections earlier so reviewers can spend more attention on product judgment, edge cases, and user experience.
Pine MCP does not remove human review. It moves repetitive system corrections earlier so reviewers can focus on product judgment, edge cases, and user experience.
Observed Workflow Outcomes
I am not presenting adoption numbers or measured business impact here. The defensible outcome is a clearer workflow: system-specific decisions become available inside AI-assisted development instead of appearing only as review feedback.
What I Learned
Related Work