godmode

PR workflow

Branch naming, commits, required checks, and what reviewers look for.

Lightweight conventions — opinionated where it makes review faster, flexible everywhere else.

Branch naming

<type>/<short-slug>
TypeUse forExample
featNew extension, new interface, new featurefeat/stripe-extension
fixBugfix, behavior correctionfix/help-trailing-whitespace
docsDocs-only changedocs/auth-types-page
choreDeps, refactors, toolingchore/bump-fumadocs
ciCI/build pipeline onlyci/macos-runner

Commit messages

Follow Conventional Commits:

feat: add stripe extension manifest
fix: respect prefix override in api interface
docs(auth): clarify basic auth pre-encoding requirement
chore(deps): bump vite from 8.0.8 to 8.0.10

Why: the changeset CLI generates release notes from commit prefixes. Sloppy prefixes mean sloppy release notes.

Changeset

For any change that affects shipped behavior (new extension, bug fix, API tweak):

pnpm changeset

Pick patch (default — pre-1.0 godmode never bumps minor or major). Write a one-paragraph summary of what changed and why. Commit the resulting .changeset/*.md file.

Skip the changeset for: docs-only PRs, CI tweaks, internal refactors.

Required checks (must pass to merge)

CheckWhat it coversLocal equivalent
testVitest suites, all packagespnpm -r test
compliancehelp2man + mandoc + groff lintpnpm test:compliance
lintBiome lint across workspacepnpm lint
typestsc --noEmit per packagepnpm types:check (in each package)
buildAll packages build cleanlypnpm build

Run locally before pushing:

pnpm -r test && pnpm lint && pnpm build

That's the same set CI runs, in the order most likely to fail fast.

Adding a new extension — checklist

  1. extensions/<slug>/manifest.yaml — validate against the schema.
  2. extensions/<slug>/package.jsonname, exports."./manifest", files, keywords: ["godmode-extension"]. See Publishing.
  3. extensions/<slug>/README.md — links to upstream docs, env var name, known gotchas.
  4. extensions/<slug>/test/smoke.test.ts — at least one assertion per declared interface. See Testing.
  5. apps/docs/content/extensions/<slug>.mdx — extension docs page (use any existing one as a template).
  6. apps/docs/content/extensions/meta.json — add the slug to the sidebar in the right group (REST / GraphQL / MCP).
  7. Changeset — one-line summary.

PRs missing any of these get a "needs polish" label and won't be merged until complete.

Review expectations

  • Small PRs preferred. One extension, one bug, one doc page. Anything bigger gets a review comment asking to split.
  • Tests required. Behavior changes without a test get blocked.
  • No unrelated changes. A "fix help spacing" PR that also bumps fumadocs is two PRs.
  • Match existing tone. The docs use a specific voice (terse, table-heavy, direct). The CLI prints terse status, not chatty progress. New code in the same style.

When in doubt

Open a draft PR early with [WIP] in the title and a description of the direction. Cheaper than building the whole thing and finding out you took a wrong turn.

See also

On this page