Skip to main content

Foundations

How the Snurble foundation is organized

Snurble extracts durable design-system contracts from workv2 into shared packages, then validates those contracts in mattriley.tools and future adopters. This page explains which repository owns which role, what foundation coverage already ships, and where adoption guidance lives.

Repository roles

workv2/webclient

Foundation reference

The original visual and structural source for the design system. Shell composition, profile presentation, project listings, experience layouts, and the Catppuccin Mocha aesthetic all originate here.

New shared primitives should still be checked against workv2 so the packages stay aligned with the reference foundation instead of drifting toward a single consumer's page structure.

Snurble

Shared system

The workspace that publishes @matt-riley/design-tokens and @matt-riley/ui-astro. Snurble turns durable patterns into reusable packages with narrow, explicit contracts.

Snurble owns the shared foundation, shell primitives, profile/social primitives, project primitives, experience primitives, and the docs that describe adoption and publishing expectations.

mattriley.tools

Proving adopter

The first external consumer of the shared packages. It proves that the extracted primitives work outside the design-system workspace while keeping consumer-owned data and shell logic intact.

Adoption work here should validate the package contracts, not redefine the foundation reference. If a consumer needs new shared behavior, the reference check still starts with workv2.

Foundation coverage

The current documentation is organized around durable families instead of temporary delivery milestones. Use the coverage map below to see what already ships in shared packages and which docs explain adoption or publishing work around that surface.

Area Status Shared surface Docs Notes
Foundations Shipped Layout, PageShell, Hero, Section, Panel, Stack, DataTable, MetaList, CodeSnippet Open docs → Shared layout, grouping, data presentation, and snippet primitives for the package front door.
Shell primitives Shipped FontAssets, JsonLd, SkipLink Open docs → Accessibility, SEO, and font-loading helpers extracted from the reference shell.
Profile/social primitives Shipped ProfileHero, SocialLinks, DecoratedHeading Open docs → Shared profile header, social link, and decorative heading patterns derived from workv2.
Project primitives Shipped ProjectCard, ProjectGrid Open docs → Reusable project and repository display primitives with consumer-owned data shaping.
Experience primitives Shipped ExperienceCard, ExperienceList, SkillIcon, SkillIconList Open docs → Shared timeline and skill presentation primitives for experience-heavy pages.
Adoption/migration Documented Consumer handoff guidance Open docs → Migration guidance explains how shared primitives replace local presentation without absorbing consumer-owned logic.
Release/publishing Documented Prerelease and publishing contract Open docs → Publishing guidance covers manual prerelease flow, registry installs, and release workflow expectations.

Extraction status

This section is the compact source of truth for the current extraction state: the shared foundation is live, the major primitive families are shipped, and the remaining boundaries are mostly about what Snurble intentionally does not own yet.

Focus Status Summary
Token/foundation layer Aligned Design tokens, layout/grouping primitives, and core documentation foundations ship from Snurble today.
Foundation families Shipped Shell, profile/social, project, and experience primitive families all have dedicated shared-package coverage and docs pages.
Remaining boundaries Relevant Consumer-owned data fetching, ranking, README rendering, and app-specific metadata policy still stay outside the shared package surface.

Reference source stays in workv2

workv2 remains the foundation reference: visual language, shell composition, and profile-oriented page patterns start there before they are generalized into shared packages.

Shared packages stay narrow

Snurble owns reusable presentation contracts and design tokens. It does not automatically absorb route data fetching, ranking, README rendering, or app-specific metadata policy.

Adoption proves the contract

mattriley.tools is the proving adopter today. Future adopters should follow the same package entrypoints and keep consumer-owned behavior local until a primitive explicitly moves into Snurble.

Recommended reading order

Move from foundations to delivery

  1. 1. Foundations

    Start here to understand repo roles, package scope, and the current family map.

  2. 2. Primitive families

    Read shell primitives, profile/social primitives, project primitives, and experience primitives to understand each shared contract in detail.

  3. 3. Adoption/migration

    Use the migration guide when a consumer is ready to replace local presentation code with shared packages.

  4. 4. Release/publishing

    Use the publishing guide for prerelease versions, registry installs, and shared release workflow expectations.