summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.github/ISSUE_TEMPLATE/bug-report.yml51
-rw-r--r--.github/ISSUE_TEMPLATE/config.yml5
-rw-r--r--.github/ISSUE_TEMPLATE/feature-request.yml20
-rw-r--r--.github/ISSUE_TEMPLATE/question.yml11
-rw-r--r--CONTRIBUTING.md71
-rw-r--r--README.md36
6 files changed, 159 insertions, 35 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
new file mode 100644
index 000000000..29ddd3bd5
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -0,0 +1,51 @@
+name: Bug report
+description: Report an issue that should be fixed
+labels: ["bug"]
+body:
+ - type: textarea
+ id: description
+ attributes:
+ label: Description
+ description: Describe the bug you encountered
+ placeholder: What happened?
+ validations:
+ required: true
+
+ - type: textarea
+ id: reproduce
+ attributes:
+ label: Steps to reproduce
+ description: How can we reproduce this issue?
+ placeholder: |
+ 1.
+ 2.
+ 3.
+ validations:
+ required: false
+
+ - type: textarea
+ id: screenshot-or-link
+ attributes:
+ label: Screenshot and/or share link
+ description: Run `/share` to get a share link, or attach a screenshot
+ placeholder: Paste link or drag and drop screenshot here
+ validations:
+ required: false
+
+ - type: input
+ id: os
+ attributes:
+ label: Operating System
+ description: what OS are you using?
+ placeholder: e.g., macOS 26.0.1, Ubuntu 22.04, Windows 11
+ validations:
+ required: false
+
+ - type: input
+ id: terminal
+ attributes:
+ label: Terminal
+ description: what terminal are you using?
+ placeholder: e.g., iTerm2, Ghostty, Alacritty, Windows Terminal
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 000000000..459ce25d0
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: true
+contact_links:
+ - name: 💬 Discord Community
+ url: https://discord.gg/opencode
+ about: For quick questions or real-time discussion. Note that issues are searchable and help others with the same question.
diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml
new file mode 100644
index 000000000..92e6c4757
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-request.yml
@@ -0,0 +1,20 @@
+name: 🚀 Feature Request
+description: Suggest an idea, feature, or enhancement
+labels: [discussion]
+title: "[FEATURE]:"
+
+body:
+ - type: checkboxes
+ id: verified
+ attributes:
+ label: Feature hasn't been suggested before.
+ options:
+ - label: I have verified this feature I'm about to request hasn't been suggested before.
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Describe the enhancement you want to request
+ description: What do you want to change or add? What are the benefits of implementing this? Try to be detailed so we can understand your request better :)
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml
new file mode 100644
index 000000000..2310bfcc8
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/question.yml
@@ -0,0 +1,11 @@
+name: Question
+description: Ask a question
+labels: ["question"]
+body:
+ - type: textarea
+ id: question
+ attributes:
+ label: Question
+ description: What's your question?
+ validations:
+ required: true
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..1b8f0da07
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,71 @@
+# Contributing to OpenCode
+
+We want to make it easy for you to contribute to OpenCode. Here are the most common type of changes that get merged:
+
+- Bug fixes
+- Additional LSPs / Formatters
+- Improvements to LLM performance
+- Support for new providers
+- Fixes for environment-specific quirks
+- Missing standard behavior
+- Documentation improvements
+
+However, any UI or core product feature must go through a design review with the core team before implementation.
+
+> [!IMPORTANT]
+> We do not accept PRs for core features.
+
+Take a look at recent git history to understand what usually lands.
+
+If you are unsure if a PR would be accepted, feel free to ask a maintainer or look for issues with either of the following labels:
+
+- `help wanted`
+- `bug`
+
+> [!NOTE]
+> PRs that ignore these guardrails will likely be closed.
+
+Want to take on an issue? Leave a comment and a maintainer may assign it to you unless it is something we are already working on.
+
+## Developing OpenCode
+
+- Requirements: Bun 1.3+, Go 1.24.x.
+- Install dependencies and start the dev server from the repo root:
+
+ ```bash
+ bun install
+ bun dev
+ ```
+
+- Core pieces:
+ - `packages/opencode`: OpenCode core business logic & server.
+ - `packages/tui`: The TUI code, written in Go (will be removed soon in favor of [opentui](https://github.com/sst/opentui))
+ - `packages/plugin`: Source for `@opencode-ai/plugin`
+
+> [!NOTE]
+> After touching `packages/opencode/src/server/server.ts`, the OpenCode team must regenerate the Stainless SDK before any client updates merge.
+
+## Pull Request Expectations
+
+- Try to keep pull requests small and focused.
+- Link relevant issue(s) in the description
+- Explain the issue and why your change fixes it
+- Avoid having verbose LLM generated PR descriptions
+- Before adding new functions or functionality, ensure that such behavior doesn't already exist elsewhere in the codebase.
+
+### Style Preferences
+
+These are not strictly enforced, they are just general guidelines:
+
+- **Functions:** Keep logic within a single function unless breaking it out adds clear reuse or composition benefits.
+- **Destructuring:** Do not do unnecessary destructuring of variables.
+- **Control flow:** Avoid `else` statements.
+- **Error handling:** Prefer `.catch(...)` instead of `try`/`catch` when possible.
+- **Types:** Reach for precise types and avoid `any`.
+- **Variables:** Stick to immutable patterns and avoid `let`.
+- **Naming:** Choose concise single-word identifiers when they remain descriptive.
+- **Runtime APIs:** Use Bun helpers such as `Bun.file()` when they fit the use case.
+
+## Feature Requests
+
+For net-new functionality, start with a design conversation. Open an issue describing the problem, your proposed approach (optional), and why it belongs in OpenCode. The core team will help decide whether it should move forward; please wait for that approval instead of opening a feature PR directly.
diff --git a/README.md b/README.md
index aa2be8aef..4ffa7b150 100644
--- a/README.md
+++ b/README.md
@@ -54,41 +54,7 @@ For more info on how to configure OpenCode [**head over to our docs**](https://o
### Contributing
-OpenCode is an opinionated tool so any fundamental feature needs to go through a
-design process with the core team.
-
-> [!IMPORTANT]
-> We do not accept PRs for core features.
-
-However we still merge a ton of PRs - you can contribute:
-
-- Bug fixes
-- Improvements to LLM performance
-- Support for new providers
-- Fixes for env specific quirks
-- Missing standard behavior
-- Documentation
-
-Take a look at the git history to see what kind of PRs we end up merging.
-
-> [!NOTE]
-> If you do not follow the above guidelines we might close your PR.
-
-To run OpenCode locally you need.
-
-- Bun 1.3 or higher
-- Golang 1.24.x
-
-And run.
-
-```bash
-$ bun install
-$ bun dev
-```
-
-#### Development Notes
-
-**API Client**: After making changes to the TypeScript API endpoints in `packages/opencode/src/server/server.ts`, you will need the OpenCode team to generate a new stainless sdk for the clients.
+If you're interested in contributing to OpenCode, please read our [contributing docs](./CONTRIBUTING.md) before submitting a pull request.
### FAQ