OpenCode contributions flow through issue templates, linked PRs, and design review gates: issues must use Bug report, Feature request, or Question templates; PRs must reference an issue and follow conventional commit format; UI and core features need core team design sign-off before implementation. The codebase enforces style consistency through Prettier (semicolon-free, 120-char lines) and code-style preferences: no else blocks, .catch() for errors, precise types, immutable patterns, and Bun APIs.
All issues must use one of three templates — Bug report, Feature request, or Question — and blank issues are not allowed.[1] All PRs must reference an existing issue using Fixes #123 or Closes #123 in the PR description; PRs without a linked issue may be closed without review.[1]
Any UI or core product feature must go through a design review with the core team before implementation; PRs that skip this step will likely be closed.[1] New provider support should be contributed first to https://github.com/anomalyco/models.dev and should not require significant code changes to the opencode core.[1]
PR titles must follow conventional commit standards with prefixes: feat:, fix:, docs:, chore:, refactor:, or test:, optionally scoped to a package (e.g., feat(app):).[1] Prettier is configured in package.json with semi: false and printWidth: 120.[2]
The project code style prefers: no else statements, .catch(...) over try/catch, precise types over any, immutable patterns over let, single-word concise identifiers, and Bun-native APIs like Bun.file().[1]
Sources