Architecture

Twelve workspace packages in three tiers. Lower layers never depend on higher ones — domain packages consume shared infrastructure, and the presentation layer wires everything together for downstream projects.

The sidebar groups these twelve packages into four navigation buckets (Domain Packages, UX, Utils, Internal) — a reader-facing grouping that is orthogonal to the dependency-ordered tier map below.

Tier 1: Shared infrastructure

The rendering pipeline that all domain packages consume:

sphinx-ux-badges

Badge primitives, colour palette, and CSS infrastructure. All badge colours live in one place (SAB.* constants).

sphinx-ux-badges
sphinx-ux-autodoc-layout

Structural presenter for api-* entry components. Parameter folding, managed signatures, card regions.

sphinx-ux-autodoc-layout
sphinx-autodoc-typehints-gp

Annotation normalization and type rendering. Replaces sphinx-autodoc-typehints + sphinx.ext.napoleon.

sphinx-autodoc-typehints-gp

Tier 2: Domain packages

Domain-specific autodoc extensions that consume Tier 1 and add project-specific rendering logic:

Package

Domain

Directives

sphinx-autodoc-api-style

Standard Python

autofunction, autoclass, automodule

sphinx-autodoc-argparse

Custom argparse domain — programs, options, subcommands, positionals

argparse

sphinx-autodoc-docutils

docutils

autodirective, autorole

sphinx-autodoc-fastmcp

FastMCP tools

fastmcp-tool, fastmcp-tool-summary

sphinx-autodoc-pytest-fixtures

pytest fixtures (extends py domain)

autofixture, autofixture-index

sphinx-autodoc-sphinx

Sphinx config

autoconfigvalue, autoconfigvalues

Each domain package calls app.setup_extension() to auto-register its infrastructure dependencies — downstream projects only need to add the domain package to their extensions list.

Tier 3: Theme and coordinator

Package

Role

gp-sphinx

Coordinator. merge_sphinx_config() wires up the full stack.

sphinx-gp-theme

Furo-based theme with CSS variables and SPA navigation.

sphinx-fonts

IBM Plex via Fontsource — preloaded web fonts.

How the tiers connect

Every domain package shares the same badge palette, the same componentized HTML output structure, and the same type annotation pipeline — so Python APIs, pytest fixtures, Sphinx config values, docutils directives, and FastMCP tools all look like they belong together.

This is the one autodoc design system principle: a change to the shared infrastructure propagates instantly and consistently across all six domain packages.