- Create a branch from the default branch.
- Make focused changes (prefer smaller PRs).
- Ensure lint/build pass for impacted workspaces.
- Commit using the required commit format (below).
- Open a PR with a clear description and validation notes.
Every commit must start with a valid change type:
feat— new functionalityfix— bug fixdocs— documentation onlychore— maintenance, tooling, housekeepingrefactor— code change that neither fixes a bug nor adds a featureperf— performance improvementbuild— build system / dependenciesci— CI configuration/scriptsrevert— revert a prior commit
We use Conventional-Commit-inspired scopes to clarify where changes land.
- If your change is scoped to one app, the scope must be that app/workspace.
- Example:
feat(docs): update page layout
- Example:
- If your change intentionally spans multiple apps/packages, you must use an empty scope (no parentheses).
- Example:
chore: align eslint rules across apps
- Example:
Every commit must include a Linear issue reference in the commit body.
Example:
fix(admin): prevent crash on empty results
Linear: DR-482
Notes
- The Linear reference must be in the body, not just the title.
- If a commit truly has no issue, create one first.
<type>(<scope>): <subject>
<body>
type: required (see list above)scope: required for single-app changes; must be empty for cross-boundary changessubject: short, imperative, no trailing periodbody: must include Linear reference (required)
Single app change (scoped):
feat(docs): update getting started
Linear: DC-53423
Single app bug fix (scoped):
fix(docs): ensure UTMs are persisted
Linear: DC-233
Cross-boundary change (empty scope):
chore: update shared lint rules and apply fixes
Linear: DC-1288
Use the same version for a given dependency across all apps and packages (e.g. the same react, typescript, or next range everywhere). When adding or upgrading a dependency used in multiple workspaces, update every package.json that lists it so versions stay aligned.
- Prefer changes that only touch the necessary app/package.
- If you need shared updates, ensure they’re intentional and explained in the PR.
Run checks for affected workspaces where possible:
pnpm run lintpnpm run build
PR titles should follow the same convention as commits:
feat(app): …fix(app): …chore: …(for cross-boundary)
- What changed and why
- How it was tested (commands + notes)
- Screenshots for UI changes (when applicable)
- Follow-ups / known limitations
- Prefer clarity over cleverness.
- Avoid drive-by refactors inside feature/bugfix PRs.
- Follow existing patterns within each app.
Writing or editing a page in apps/docs or apps/blog? Start with the docs-writer guide. The "Writing style in one minute" section at the top is all you need to make a solid first contribution; the rest is there when you want it.
It covers how we write docs for Prisma Postgres, Prisma Compute, and Prisma Next: page shape, how to write a step, what to cut, and a final-pass checklist, with a worked example for each kind of page.
- Using Claude Code? The guide loads as a skill automatically. Ask it to write or improve a page.
- Not using Claude Code? Read
SKILL.mdas a checklist andhow-to-use.mdfor examples.