Thank you for your interest in contributing to Probitas! This guide provides information for developers and maintainers.
A Nix flake is available to provision the Deno toolchain without global installs.
# Enter the development shell
nix develop
# Optional: auto-activate with direnv
echo "use flake" > .envrc
direnv allowRun project tasks from within the Nix shell:
deno task verify # Run format, lint, type check, and tests
deno task test # Run tests onlyFor maintainers: To publish a new version, use the Release workflow.
- Merge all changes to
mainbranch - Ensure all tests pass (
deno task verify) - Decide on the version number following Semantic Versioning
- Go to the Actions tab
- Click "Run workflow"
- Enter the version (e.g.,
v0.7.2or0.7.2) - Click "Run workflow"
The workflow will automatically:
- Update
deno.json,deno.lock, andflake.lock - Run comprehensive tests with both Deno and Nix environments
- Commit the changes to
main(only if tests pass) - Create a git tag
- Publish to JSR
- Create a GitHub Release with auto-generated notes
The release workflow includes a fail-safe mechanism:
- Tests run before release: After updating lock files, the workflow runs
full scenario tests in both Deno (
deno task probitas run) and Nix (nix run . -- run) environments - Release only on success: If any test fails, the workflow stops before committing, tagging, or publishing
- Consistent state: This ensures the repository and JSR package remain in a consistent, working state
After a successful release:
- The Homebrew tap will be automatically updated via the
update-homebrew.ymlworkflow - Verify the package is available on JSR:
deno add jsr:@probitas/probitas@<version> - Announce the release if necessary
This repository provides the user-facing Probitas package
(@probitas/probitas), which includes:
- Library API (
src/mod.ts) - Scenario builder, Skip, client exports, and expectation utilities - CLI (
src/cli.ts) - Command-line interface for running and managing scenarios - Client integrations (
src/client/) - Re-exports of client packages with unified interface
The package depends on core framework packages maintained in the probitas/probitas-packages repository:
@probitas/builder- Type-safe scenario definition API@probitas/runner- Scenario execution engine@probitas/core- Core types and scenario loading@probitas/discover- File discovery with glob patterns@probitas/expect- Expectation library@probitas/client-*- Client implementations for various services
- probitas-test/probitas-packages - Core framework packages
- probitas-test/homebrew-tap - Homebrew formula for easy installation
- probitas-test/setup-probitas - GitHub Actions setup action
- probitas-test/claude-plugins - Claude Code plugin for AI-assisted scenario development
- probitas-test/documents - Documentation website with llms.txt support