diff options
| author | Frank <[email protected]> | 2025-07-25 20:27:40 -0400 |
|---|---|---|
| committer | Frank <[email protected]> | 2025-07-25 20:27:42 -0400 |
| commit | a007d65f62b3ede4851bbbf54d6f727232849fd0 (patch) | |
| tree | 649dc35ceba083f4cf572415845543f31a596253 /packages | |
| parent | 2c924b9fdb255f943467fb70b018253b6ed33edb (diff) | |
| download | opencode-a007d65f62b3ede4851bbbf54d6f727232849fd0.tar.gz opencode-a007d65f62b3ede4851bbbf54d6f727232849fd0.zip | |
wip: github actions
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/opencode/src/cli/cmd/github.ts | 20 | ||||
| -rw-r--r-- | packages/web/src/content/docs/docs/github.mdx | 94 |
2 files changed, 100 insertions, 14 deletions
diff --git a/packages/opencode/src/cli/cmd/github.ts b/packages/opencode/src/cli/cmd/github.ts index 5256a9639..b8ce6582d 100644 --- a/packages/opencode/src/cli/cmd/github.ts +++ b/packages/opencode/src/cli/cmd/github.ts @@ -316,10 +316,8 @@ on: jobs: opencode: if: | - startsWith(github.event.comment.body, 'opencode') || - startsWith(github.event.comment.body, 'hi opencode') || - startsWith(github.event.comment.body, 'hey opencode') || - contains(github.event.comment.body, '@opencode-agent') + contains(github.event.comment.body, '/oc') || + contains(github.event.comment.body, '/opencode') runs-on: ubuntu-latest permissions: id-token: write @@ -508,16 +506,10 @@ export const GithubRunCommand = cmd({ async function getUserPrompt() { let prompt = (() => { - const body = payload.comment.body - if (body.match("@opencode-agent")) return body - - const match = body.match(/^(?:hey|hi)?\s*opencode(?:-agent)?,?\s*(.*)$/is) - if (match?.[1] === undefined) - throw new Error( - "Command must mention @opencode-agent, or start with `opencode`, `hi opencode`, or `hey opencode` followed by instructions", - ) - if (match[1] === "") return "Summarize this thread" - return match[1] + const body = payload.comment.body.trim() + if (body === "/opencode" || body === "/oc") return "Summarize this thread" + if (body.includes("/opencode") || body.includes("/oc")) return body + throw new Error("Comments must mention `/opencode` or `/oc`") })() // Handle images diff --git a/packages/web/src/content/docs/docs/github.mdx b/packages/web/src/content/docs/docs/github.mdx new file mode 100644 index 000000000..ef763ee33 --- /dev/null +++ b/packages/web/src/content/docs/docs/github.mdx @@ -0,0 +1,94 @@ +--- +title: GitHub +description: Using opencode within GitHub Issues and Pull-Requests +--- + +opencode integrates directly into your GitHub workflow. Mention `/opencode` in your comment, and opencode will execute tasks within your GitHub Actions runner. + +--- + +## Features + +- **Triage Issues**: Ask opencode to look into an issue and explain it to you +- **Fix and Implement**: Ask opencode to fix an issue or implement a feature. And it will work in a new branch and submits a PR with all the changes. +- **Secure**: opencode runs inside your GitHub's runners. + +--- + +## Installation + +Run the following command in the terminal from your GitHub repo: + +```bash +opencode github install +``` + +This will walk you through installing the GitHub app, creating the workflow, and setting up secrets. + +--- + +### Manual Setup + +1. Install the GitHub app https://github.com/apps/opencode-agent. Make sure it is installed on the target repository. +2. Add the following workflow file to `.github/workflows/opencode.yml` in your repo. Set the appropriate `model` and required API keys in `env`. + + ```yml + name: opencode + + on: + issue_comment: + types: [created] + + jobs: + opencode: + if: | + contains(github.event.comment.body, '/oc') || + contains(github.event.comment.body, '/opencode') + runs-on: ubuntu-latest + permissions: + id-token: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Run opencode + uses: sst/opencode/github@latest + env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + with: + model: anthropic/claude-sonnet-4-20250514 + # share: true + ``` + +3. Store the API keys in secrets. In your organization or project **settings**, expand **Secrets and variables** on the left and select **Actions**. Add the required API keys. + +--- + +### Inputs + +- `model`: The model used by opencode. Takes the format of `provider/model` (**required**) +- `share`: Share the session. Sessions are shared by default for public repos. + +--- + +### Usage Examples + +- Explain an issue + + ```bash + /opencode explain this issue + ``` + +- Fix an issue - opencode will create a PR with the changes. + + ```bash + /opencode fix this + ``` + +- Review PRs and make changes + + ```bash + Delete the attachment from S3 when the note is removed /oc + ``` |
