Skip to content

Agentic Documentation System

Agentic Documentation System is the design system behind my boards, object models, client documents and this website. One source of tokens in Figma drives all of them, and the same checks run on the work whether a person or an AI agent built it.

25 components · 60 tokens in light and dark · 26 text styles · updated 2026-10-16

Principles

  • Structure first

    Objects, relationships and content priority come before screens. Stickers, boards and documents follow object-oriented UX.

  • Agents are first-class users

    Every part explains itself, and a machine-readable manifest, commands and checks let an AI agent build without guessing. I review every change.

  • One system, everywhere

    The same tokens drive Figma boards, A4 client documents and this website. Colours change once in Figma and reach the site through an export.

  • Accessible by default

    Text is 4.5:1 or more on every surface, nothing on the site is smaller than 18 px, and meaning is never shown by colour alone.

A comparison board built only from system components: three versions of a design harness side by side, with row labels and a takeaway.

Colour

Functional names that say what a colour is for. The swatches below use the live tokens, so they follow the site's theme.

Text

  • fg/default#15161a · #e6e7eaMain text and icons.
  • fg/muted#55575e · #a0a3abSecondary text: subtitles, notes, meta (7:1 on white).
  • fg/subtle#686b73 · #878a92Quiet text: labels, dates (5.3:1 on white).
  • fg/on-emphasis#ffffff · #ffffffText on accent or dark fills.

Surfaces

  • bg/ground#f3f4f6 · #141518Page and board background.
  • bg/card#ffffff · #1b1c20Cards and surfaces.
  • bg/subtle#e9eaee · #24252bTags, hover fills, quiet panels.
  • bg/band#eceef1 · #191a1eQuiet full-width bands on the website.
  • bg/inverse#0f1013 · #0b0b0dDark blocks (clients, closing contact).

Accent and lines

  • accent/emphasis#2b59ff · #5c7bffThe one accent: links, what changed, what is proposed.
  • accent/subtle#2b59ff14 · #4a6eff29Faint accent wash behind highlighted content.
  • border/default#15161a1a · #ffffff1aCard outlines and dividers.

Meaning (OOUX and tones)

  • accent/muted#cce7ff · #00294cSoft blue. OOUX: Object stickers. Comparisons: Next / proposed. Also neutral notes.
  • attention/muted#fff4cc · #4c3c00Soft yellow. OOUX: Core content stickers. Information highlights.
  • danger/muted#ffd0d0 · #480000Soft red. OOUX: Metadata stickers. Cons, risks, errors.
  • success/muted#dcf7ef · #0d382bSoft green. OOUX: CTA stickers. Comparisons: Now / approved. Pros, positive outcomes.
  • ai/muted#f0cbff · #33124aSoft purple. AI suggestions and AI-generated content.
  • neutral/muted#f2f2f2 · #1f1f1fSoft grey. Table headers, neutral cells, Before / past states.

Type

Sora for headings and numbers, Satoshi for everything else. Nothing on this site is smaller than 18 px.

  • Sora SemiBold · 36 px

    Page title

    Website page titles.

  • Sora SemiBold · 28 px

    Card title

    Work row and card titles.

  • Sora SemiBold · 28 px

    Section heading

    Home section headings: Work, Writing.

  • Sora SemiBold · 18 px

    Logo

    Name in the header.

  • Satoshi Regular · 28 px

    Intro

    Home intro paragraph.

  • Satoshi Medium · 22 px

    List title

    Writing list titles..

  • Satoshi Regular · 18 px

    Body

    Body, lead, nav, links.

  • Satoshi Regular · 18 px

    Meta

    Years, dates, captions, usually fg/subtle, tabular numbers..

  • Satoshi Bold · 18 px

    Eyebrow

    Small-caps label tier..

Components

Two families: parts for boards and documents in Figma, and the parts this website is built from, each mapped to its React component.

Boards and documents

  • Stickers

    OOUX sticker. Style=Tint (default): soft colour fill, no label, for dense boards such as object matrices where colour carries the meaning. Style=Card: white card with a small type label, for stickers that stand alone or in a legend. Type: Object blue, Core content yellow, Metadata red, CTA green, AI purple, Label (quiet text), Row number (dark marker). Text: Name. Never recolour a sticker by hand: pick the Type. Do: Use Style=Tint in dense boards such as object matrices: colour carries the meaning. Don’t: Do not put type labels on every cell of a dense board.

  • Board / Header

    Top of every board: eyebrow (project · section), number, title (Heading) and one sentence of context. Do: Start every board with one header: eyebrow (project · section), number, title, one sentence of context. Don’t: Do not stack two headers on one board; split the board instead.

  • Comparison / Version

    Column header: a tone label (Before grey, Now green, Next blue), title and subtitle. Do: One Version per column; tone Before (grey), Now (green), Next (blue). Don’t: Do not compare more than four columns on one board.

  • Comparison / Cell

    One answer in a comparison grid, same Tone as its column. Before = muted grey, Now = white card, Next = white card with the accent outline (proposed). Do: Answer the row's question in one or two plain sentences. Don’t: Do not mix tones within a column.

  • Comparison / Takeaway

    One-sentence conclusion at the bottom of a board. Do: Close the board with one sentence that says what the comparison means. Don’t: Do not repeat the rows; say the conclusion.

  • Block

    Document building block. Block = variant; edit text through its text properties (Text, List items, Step title, …). Tables: pick table - N col, then set the exposed rows' Column 1–N. Do: Build documents from blocks and edit text through their properties. Don’t: Do not detach a block to change its text.

  • Table / Data row

    Data row with up to six columns; text properties Column 1–6. Use inside a Block table variant (2–6 col) or stack rows in an auto-layout frame. Do: Colour a cell only when it carries OOUX meaning (object, core content, metadata, CTA). Don’t: Do not use colour as decoration in tables.

  • Project Cover

    Cover for a project, test project or hiring assignment document. Do: Open hiring assignments, test projects and case files with a cover and status. Don’t: Do not use the cover inside boards.

  • Web / Card

    Website diagram card (736 px column scale). Type carries the meaning: Object (object models), Step / Start / View / System / AI/Decision / Done / Error (flows). Highlight = the key item. Set width per diagram; height hugs. Never detach; never hand-paint.

Object-oriented UX stickers in two styles: soft colour fills for dense boards, and white cards with a small type label.

Website

  • Nav

    Header: name left, links right (Work, Writing, Skills, About). Active link fg/default, others fg/muted.

  • Intro

    Home intro: one paragraph, first sentence in fg/default, the rest fg/muted, max 58rem (928 px).

  • Section header

    Section start: hairline above, heading left, optional link right ("All writing →").

  • Work row

    Selected work: image left (3:2, radius 12, bg/subtle behind), text right: year, title, one line, accent link. Two equal columns, gap 48.

  • Writing row

    Writing list item: title (22 px medium, hover accent) and date (fg/subtle).

  • Chip

    Tag: pill on bg/subtle, 18 px fg/muted.

  • Stat

    Outcome number: value (Sora 28), what it means (fg/muted), source (fg/subtle).

  • Decision

    Case-study decision: title, then labelled paragraphs (What I chose, What it cost, What it changed). Column 45rem.

  • Footer

    Footer: hairline, email left (selectable), LinkedIn and GitHub right, 18 px fg/muted.

This site's home page composed in Figma from the website components: navigation, intro, work rows, writing rows and footer.

How agents use it

  • 1

    Parts that explain themselves

    Every component, token and style has a description and a scope, so the right choice is written down, not guessed.

  • 2

    A manifest

    A generated file lists every component, property, token and style. Agents read it instead of inspecting the design file.

  • 3

    Commands

    Documents are built from a content spec by named commands; the same commands are used by people and agents.

  • 4

    A doctor that repairs drift

    Checks for raw colours, missing styles, low contrast and misused stickers, in Figma and in this site's code. Safe fixes are applied automatically; the rest is reported.

  • 5

    One source of tokens

    Figma variables are exported to the website's CSS, in light and dark.

Changelog

  • October 2026

    Agentic Documentation System

    Renamed and rebuilt: the website's visual language, functional token names in light and dark, website components, the manifest, the doctor and the token export. 75 hand-recoloured stickers were switched to their real type.

  • 2024

    Documentation Kit

    Started while learning object-oriented UX: stickers, blocks and tables for research and documentation boards.