Skip to main content
Contributions are welcome — bug fixes, new features, documentation improvements, and community toolsets. This page covers everything you need to get started.

Repository structure

Development setup

You need Deno to work on this project. There is no separate install step — Deno fetches dependencies on first run.
That is all. No npm install, no build step for running tests.

Running tests

Tests use the built-in Deno test runner (deno test -A). Test files live in packages/sdk/tests/ and alongside source files as *.test.ts.

Building the npm package

The SDK is published to both JSR and npm. The npm build transpiles Deno source to a Node.js-compatible package:
You do not need this for local development or running tests.

Documentation

The docs use Mintlify. To preview docs locally:
To build the docs for production:
Doc source files are in packages/sdk/docs/ as .mdx files. Navigation is configured in packages/sdk/docs/docs.json.

Code style

  • TypeScript everywhere — no plain JavaScript in lib/ or community/.
  • Immutable patterns — create new objects rather than mutating existing ones.
  • Small, focused files — aim for 200–400 lines per file; 800 is the maximum.
  • Explicit error handling — never silently swallow errors. Provide typed error classes where useful.
  • No hardcoded values — use constants or configuration.
Deno’s built-in formatter handles style automatically:

Commit format

Follow Conventional Commits:
Types: feat, fix, refactor, docs, test, chore, perf, ci. Examples:

Pull request process

  1. Fork the repository and create a branch from main.
  2. Write tests first — add or update tests in packages/sdk/tests/ before implementing the change.
  3. Run the full test suite with deno task test from the repo root.
  4. Run the linter and formatter with deno lint && deno fmt.
  5. Open a PR against main with a clear description of what changed and why.
For significant changes (new API surface, breaking changes, new community toolsets), open an issue first to discuss the approach before writing code.

Adding a community toolset

Community toolsets live in packages/sdk/community/. Each toolset is a directory:
See the Community overview page and the port-pydantic-ai-community-plugins skill for a step-by-step porting guide.