prisma/prisma
Development workflow
The branch / build / test / PR / merge cycle for prisma/prisma. Adapted from CONTRIBUTING.md and the workflows under .github/workflows/.
Branching
- The default branch is
main. All work merges there. - Branch names follow
type/short-description(e.g.,fix/migrate-status-typo). - Two branch prefixes have meaning to CI:
integration/<name>— triggers the integration-tag release workflow (release-ci.yml) automatically on push.factory/install-wiki-ci— reserved by theinstall-wikiskill.
Local build cycle
The fastest inner loop:
pnpm watch # one-shot dev build, then watch all packagesIf you only need one package:
cd packages/client
pnpm run dev # esbuild only, no .d.tsFor a clean rebuild:
pnpm build # turbo build, with type emitThe build is esbuild-based via helpers/compile/build.ts. Most packages opt in to bundledConfig from helpers/compile/configs.ts, which produces both CJS and ESM outputs plus type declarations.
Adding a new package
From AGENTS.md:
- Create a directory under
packages/<name>/. - Add
package.json,tsconfig.json,tsconfig.build.json, andhelpers/build.ts. - The package is auto-discovered via
pnpm-workspace.yaml'spackages/*glob. - For type-only packages, use
bundledConfigfromhelpers/compile/configs.ts. - Add it as a dependency to consumers using
"workspace:*". - Add the resolution path to
tsconfig.build.bundle.jsonundercompilerOptions.pathsso editor go-to-definition works. - If the package has tests, add it to
.github/workflows/test-template.ymlin the appropriate job:others,client-packages,driver-adapter-unit-tests, orno-docker.
Pre-release on the integration tag
Branches starting with integration/ and PRs with /integration in the description trigger release-ci.yml. It publishes packages directly to npm under the integration tag with a version like 5.3.0-integration-fix-all-the-things.1. Useful for testing real Prisma behavior in real downstream projects without merging.
You can also manually trigger the workflow from the Actions UI on any branch (Run workflow → check "force an integration release for any given branch name").
Reviewing
- All PRs go through the
@prisma/orm-tsteam per.github/CODEOWNERS. - Reviewers check tests, CI status, the bundle-size comment, and that
AGENTS.mdis updated when contributors learned something new.
Merging
- Squash-merge is the standard pattern.
- Engine version bumps are merged frequently and almost always by
Prismo/prisma-botviaupdate-engines-version.yml. - Stale issues are auto-labeled by
label-stale-issues.yml. PRs themselves are not auto-closed.
Releasing
Production releases are driven by release.yml. The release implementation is in scripts/ci/publish.ts, which pnpm publish-all and pnpm publish-all-dryrun shell out to. pnpm status and pnpm pull proxy through the same script.
The dist-tag manager workflow (manage-dist-tag.yml) updates latest/dev/integration tags on npm.
Bumping engines
pnpm bump-engines runs scripts/bump-engines.ts. The check pnpm check-engines-override (scripts/check-engines-override.ts) protects against accidentally shipping a local engines override (used during contributor work — see Custom engines if needed).
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.