Contributing
Workloom is open source and welcomes contributions. Whether you're fixing a bug, adding a provider adapter, improving documentation, or proposing a new feature — here's how to get started.
Development Setup
Prerequisites
- Node.js >= 22
- pnpm 11
- Git
Getting Started
# Clone the repository
git clone https://github.com/catesandrew/workloom-baro.git
cd workloom-baro
# Install dependencies
pnpm install
# Build all packages
pnpm build
# Run tests
pnpm test
# Type check
pnpm typecheck
# Lint
pnpm lint
Running Specific Packages
# Run CLI in development
pnpm --filter @workloom/cli dev
# Test a specific package
pnpm --filter @workloom/renderer test
# Build just the core packages
pnpm --filter @workloom/core --filter @workloom/manifest build
Project Structure
apps/
cli/ # The `wl` command-line tool
web/ # Registry web UI and API
docs/ # This documentation site
packages/
core/ # Domain primitives — start here
manifest/ # Zod schemas — the data model
renderer/ # Render engine — the core logic
provider-*/ # Provider adapters
drift/ # Drift detection
...
Start with packages/core/ and packages/manifest/ to understand the domain model. Then read packages/renderer/ for the core render pipeline.
How to Contribute
Bug Fixes
- Open an issue describing the bug
- Fork + branch (
fix/description) - Write a failing test
- Fix the bug
- Submit a PR referencing the issue
New Features
- Open an issue or discussion describing the feature
- Wait for feedback (helps avoid wasted work)
- Fork + branch (
feat/description) - Implement with tests
- Submit a PR
Provider Adapters
Adding a new provider adapter is one of the best ways to contribute:
- Create
packages/provider-yourprovider/ - Add test fixtures in the package
- Implement the adapter interface from
@workloom/renderer - Add snapshot tests for rendered output
- Document provider capabilities
Documentation
Documentation lives in apps/docs/. Run locally with:
cd apps/docs
pnpm start
Code Standards
- TypeScript strict mode — no
any, no implicit returns - Vitest for all tests
- Zod for runtime validation
- No comments unless explaining a non-obvious "why"
- Conventional commits —
feat:,fix:,docs:,refactor:
Testing
# Run all tests
pnpm test
# Run with coverage
pnpm test -- --coverage
# Run specific test file
pnpm --filter @workloom/renderer test -- render.test.ts
Tests are fixture-driven. Check fixtures/ at the repo root for workspace, package, drift, provider, and telemetry fixtures.
Architecture Decision Records
Major architectural decisions are documented in docs/adr/. If your contribution changes architecture, add or update an ADR.