Teams

Ship a library with the same tooling you ship an app with.

Stacks began as library tooling, and that half is still first-party: build a package with Bun, emit declarations, run the tests, write the docs site, and publish, without assembling a release pipeline for every new repository.

What this always turns out to involve.

The work that arrives whether you planned for it or not.

Every library rebuilds its pipeline

Bundler, declaration emit, linting, changelog, and release workflow get copied between repositories and drift apart.

Types are the product

A published package whose declarations are wrong is worse than one with no types at all.

Docs decide adoption

A library without a documentation site is a library people evaluate by reading source.

Releases are error-prone by hand

Version, changelog, tag, publish, and announce is a checklist that eventually gets skipped.

What is already in the box.

All of it in the same install, typed against the rest of your application.

Library builds

buddy build handles bundling and declaration emit for framework-agnostic packages, not just applications.

One linter

pickier formats and lints the whole repository, and buddy lint:fix is the same command in every project.

Docs included

The docs build turns markdown into a themed site with search, deployable beside the package.

Tests with Bun

buddy test runs unit and feature suites, and buddy typecheck runs the native TypeScript compiler in seconds.

Commit and changelog conventions

Conventional commits, git hooks, and generated changelogs come from config, not from a copied script.

Dependency hygiene

buddy-bot proposes updates on a schedule, so a quiet library does not silently rot.

The layers it leans on.

Every one of these ships in the same install. Follow one to see what it covers.

From the command line.

Buddy scaffolds, runs, and ships this the same way it does the rest of the app.

buddy build buddy test buddy lint:fix

Projects of this shape usually grow into one of these.