Skip to Content
DevelopmentWorkspace

Workspace structure

AlignTrue is a pnpm monorepo with apps and packages organized for clarity and maintainability.

See Architecture for the full workspace tree and design principles.

Apps

apps/docs

Nextra-based documentation site (this site).

Development:

cd apps/docs pnpm dev # Start dev server at http://localhost:3001 pnpm build # Production build

Core packages

packages/schema

Core validation and canonicalization logic.

Responsibilities:

  • JSON Schema validation
  • YAML → canonical JSON (JCS)
  • SHA-256 integrity hashing
  • IR (Intermediate Representation) types

Development:

cd packages/schema pnpm test:watch # Run tests in watch mode pnpm build # Build to dist/

packages/core

Config management and sync engine.

Responsibilities:

  • Parse and validate .aligntrue/config.yaml configuration
  • Sync engine (rules → IR → agents)
  • Bundle resolution (team mode)
  • Lockfile management (team mode)
  • Hierarchical scope resolution

Development:

cd packages/core pnpm test:watch # Run tests in watch mode pnpm build # Build to dist/

packages/cli

The aligntrue/aln CLI tool.

Responsibilities:

  • Command-line interface (init, sync, check, lock, etc.)
  • Agent auto-detection
  • Interactive prompts
  • Git integration

Development:

cd packages/cli pnpm test # CLI unit/integration tests pnpm build # Build to dist/ node dist/index.js --help

packages/exporters

Agent-specific exporters for Cursor, AGENTS.md, MCP targets, and other agent formats.

Responsibilities:

  • Export IR to agent-specific formats
  • Cursor .mdc files
  • AGENTS.md universal format
  • MCP configurations
  • Fidelity notes and metadata

Development:

cd packages/exporters pnpm test # Run exporter tests pnpm test:watch # Watch mode pnpm build # Build to dist/

Supporting packages

Natural markdown parsing (core parsing layer)

Natural markdown sections → IR conversion (implemented in the core parsing layer).

Responsibilities:

  • Parse natural markdown with optional YAML frontmatter
  • Convert heading sections to IR rules
  • Validate extracted content before handing off to core

packages/sources

Multi-source pulling (local, catalog, git, url).

Responsibilities:

  • Load rules from multiple sources
  • Cache management
  • Git repository cloning
  • HTTP fetching with ETag support
  • Deterministic content hashing for remote sources

packages/file-utils

Shared infrastructure utilities.

Responsibilities:

  • Atomic file writes
  • Checksums and integrity verification
  • No workspace dependencies (pure utilities, safe for cross-package reuse)

packages/plugin-contracts

Plugin interface definitions.

Responsibilities:

  • ExporterPlugin interface
  • ExporterManifest types
  • No implementations (just contracts)

packages/testkit

Conformance vectors and golden tests.

Responsibilities:

  • Test fixtures
  • Golden test data
  • Validation test cases

packages/ui

Shared design system for web properties.

Responsibilities:

  • AlignTrueLogo component
  • Primer-based color tokens
  • Nextra theme integration

Development:

cd packages/ui pnpm test # Run tests pnpm test:watch # Watch mode pnpm typecheck # Type checking

Using the design system

AlignTrue uses a centralized design system (@aligntrue/ui) for consistent branding across all web properties.

Key components:

  • AlignTrueLogo - SVG logo with theme-aware colors and orange colon (#F5A623)
  • Primer-based colors - Semantic tokens that adapt to light/dark modes

Import components and styles in your Next.js app:

import { AlignTrueLogo } from "@aligntrue/ui"; import "@aligntrue/ui/styles/tokens.css";

Color tokens:

Use semantic color tokens instead of hardcoded colors:

// Good - adapts to theme <div style={{ color: "var(--fgColor-default)" }}>Text</div> // Bad - hardcoded, breaks in dark mode <div style={{ color: "#171717" }}>Text</div>

Available token categories:

  • --fgColor-* - Foreground/text colors
  • --bgColor-* - Background colors
  • --borderColor-* - Border colors
  • --color-neutral-* - Neutral scale (50-950)

Testing themes:

Test both light and dark modes during development:

  1. Use the theme toggle in the UI
  2. Check browser DevTools → Application → Local Storage for aligntrue-theme
  3. Toggle system preference in OS settings to test “system” mode
  4. Verify no FOUC (flash of unstyled content) on page load

Nextra documentation sites:

For Nextra-based docs, import Nextra’s base styles and configure your apps/docs/theme.config.tsx directly:

import "nextra-theme-docs/style.css"; import type { DocsThemeConfig } from "nextra-theme-docs"; import { AlignTrueLogo } from "@aligntrue/ui"; const themeConfig: DocsThemeConfig = { logo: <AlignTrueLogo size="md" />, docsRepositoryBase: "https://github.com/org/repo/tree/main/apps/docs", navigation: true, }; export default themeConfig;

This provides:

  • Branded logo via the shared AlignTrueLogo component
  • Consistent sidebar and TOC configuration
  • Nextra’s built-in theme system for colors

Package dependencies

Packages are organized in layers:

schema (base layer) core, file-utils sources, exporters cli (top layer)

Apps depend on multiple packages as needed.

Working across packages

See development commands for package build workflows and watch mode.

From the repo root you can target a package without changing directories:

pnpm --filter @aligntrue/core test -- --watch pnpm --filter @aligntrue/cli build

Next steps

Last updated on