Background--color-background
#111719
Surface--color-surface
#182124
Raised surface--color-surface-raised
#202b2f
Text--color-text
#e8f1ec
Muted text--color-text-muted
#9bada6
Border--color-border
#344448
Accent--color-accent
#63e6be
Signal--color-signal
#d9ff57
Warning--color-warning
#f5c451
Danger--color-danger
#ff8585
Info--color-info
#7dd3fc

Accessible text pairings

ForegroundBackgroundContrastWCAG AA
TextBackground15.70:1Pass
Muted textBackground7.69:1Pass
AccentBackground11.71:1Pass
SignalBackground15.85:1Pass
WarningBackground11.11:1Pass
DangerBackground7.71:1Pass
InfoBackground10.85:1Pass
TextSurface14.22:1Pass
Display · Space Grotesk

Medium 500

Semibold 600

Body · IBM Plex Sans

Regular 400

Medium 500

Semibold 600

Data · IBM Plex Mono

Regular 400

Medium 500

Semibold 600

Display

A boundary worth seeing.

Heading 1

What happens when it runs?

Heading 2

Begin with the boundary

Heading 3

The host discovers a capability

Lead

A larger introductory voice that frames cause and effect before detail.

Body

Readable body copy keeps a technical system grounded in a sequence a reader can follow. The measure remains deliberately narrow.

Small

Small supporting text remains at or above 13px across the fluid range.

Label

Capability boundary

Caption

Figure 1 · A stable contract separates intent from implementation.

Metadata
Inline code

Call the entry point with activate() and preserve the boundary.

Quotation
“The boundary is the feature.”
List
  • State the caller’s intent.
  • Cross one stable contract.
  • Return a result the host understands.

Fluid type scale

TokenCSS variable320px → 1440px
Step −1--step--113px → 14px
Step 0--step-016px → 18px
Step 1--step-119.2px → 24px
Step 2--step-223.04px → 32px
Step 3--step-327.65px → 43px
Step 4--step-433.18px → 58px
Step 5--step-539.81px → 76px
2xs4px → 6px
xs8px → 12px
s12px → 18px
m18px → 28px
l28px → 44px
xl44px → 72px
2xl68px → 112px
3xl100px → 160px

Representative interpolation

320pxStep 5 · Space XL

Signal
path

39.81px type · 44px gap

768pxStep 5 · Space XL

Signal
path

54.29px type · 55.2px gap

1440pxStep 5 · Space XL

Signal
path

76px type · 72px gap

Radius 0

Structural frame

Radius S · 3.2px

Controls and code

Radius L · 12.8px

Rare soft surface

Raised

One elevation token

Primary link
SuccessWarningDangerInformation

Use Tab to inspect the shared 3px mint focus ring and 4px offset.

Stack

.stack
FirstSecond · narrowerThird

gap: --space-s

Cluster

.cluster
AlphaLonger labelBetaWraps naturally

wrap · align: center

Center

.center
12rem max
with gutters

max-inline-size + auto margins

Sidebar

.sidebar

asymmetric · intrinsic collapse

Switcher

.switcher
Equal sibling AEqual sibling BEqual sibling C

threshold: 32rem · row ↔ stack

Grid

.grid
0102030405

auto-fit · minmax(6rem, 1fr)

Frame

.frame
16:7 crop

aspect-ratio + overflow: hidden

Reel

.reel
01020304 →

8rem items · horizontal overflow

Cover

.cover
TopCentered itemBottom

top · centered · bottom

01 / 04

Begin with the boundary

The easiest way to understand a plugin is to follow one request from caller to capability and back.

A plugin is a participant with a defined entry point, a limited set of permissions, and a message shape both sides understand. The host can call activate() without knowing the plugin’s private machinery.

The boundary is the feature. It lets both sides change without learning each other’s internals.

That separation turns one useful trick into a reusable system:

  • Intent stays with the host.
  • Behavior stays with the plugin.
  • The contract remains visible to both.
1Register

The host discovers a capability

The plugin offers a manifest. The host reads the fields it understands and preserves the boundary.

// build-time Shiki output
host.register({
  name: "example.tool",
  run: request => plugin.handle(request)
});
Figure 1 One request crosses a stable contract; implementation detail stays on either side.
Comparison surface showing ownership across the host, boundary, and plugin
SurfaceOwnsCan changeMust preserve
HostIntentInteraction flowContract shape
BoundaryMessage shapeVersioned fieldsCompatibility
PluginBehaviorImplementationDeclared capability