Skip to content

Contributing

Short version: open a PR, keep bun run check green, update the matching docs page.

Branching

Branch Purpose
main Always green. Push triggers ci.yml only, production releases are manual.
Feature branches Any name other than main and v*. Triggers dev-release.yml (CI → dev semantic-release → multi-arch image build).

Commit format

commitlint with @commitlint/config-conventional. Allowed types:

feat, fix, docs, style, refactor, test, chore, perf, build, ci, revert, localize, bump

Example: feat(ship): wire ship iteration loop, tickle scheduler, and four scoped executors.

Pre-commit gate

.husky/pre-commit runs:

  1. gitleaks protect --staged, secret scan (hard exit if gitleaks is missing; install with your package manager).
  2. bunx lint-staged, Prettier and ESLint on staged files.

.husky/commit-msg runs commitlint on the message itself.

What to run before opening a PR

bun run check

That single command runs typecheck, lint, format, the no-destructive-action guard, the docs-sync check, and tests. Failing any of those fails CI.

For a broader smoke test:

bun run audit:ci    # severity-gated dependency audit
bun run docs:build  # strict docs build (catches broken internal links)

PRs that touch src/workflows/**

The check:docs-sync script blocks any PR touching workflow source without a matching update under docs/use/workflows/. The intent is that the workflow tree on the docs site never lies about what the registered workflows actually do.

Test files (*.test.ts) and inline markdown (*.md under src/workflows/) are exempt.

PRs that change configuration

If you add or rename an environment variable in src/config.ts, update ../operate/configuration.md in the same PR. The full doc-sync mapping is in conventions.md.

Where to file issues

Use the GitHub issue tracker on the repo. The bot also responds to mentions on issues, @chrisleekr-bot triage this is a perfectly valid first move (see ../use/workflows/triage.md).

Running the docs site locally

bun run docs:install   # one-time, installs MkDocs Material
bun run docs:serve     # http://localhost:8000 with live reload
bun run docs:build     # strict build (CI also runs this)