文件最后提交记录最后更新时间
wip: github actions 10 个月前
Squashed commit of the following: commit 7b2ad6a1abf88e0731f15bbf6e281b29a610dd76 Merge: 74c85391 847a63e1 Author: Frank <frank@sst.dev> Date: Mon Aug 18 15:31:54 2025 +0800 Merge branch 'dev' into github commit 74c85391b576d01df298f6c30e3399b281b5c997 Author: Frank <frank@sst.dev> Date: Mon Aug 18 15:30:14 2025 +0800 sync commit 0d27f8e490f1aa242e1a3fcd1f21eb077f852207 Author: Frank <frank@sst.dev> Date: Mon Aug 18 14:30:57 2025 +0800 sync commit 0cf7e6c89f173b053f37cc0d316011b3e9d5fcc4 Author: Frank <frank@sst.dev> Date: Mon Aug 18 11:54:57 2025 +0800 sync commit a782cb7a268bf98916c3850083eaf44ebc38de05 Author: Frank <frank@sst.dev> Date: Mon Aug 18 11:53:25 2025 +0800 sync commit aa557014584abaf462656ba9b1de7c8bd6e9b9d8 Author: Frank <frank@sst.dev> Date: Mon Aug 18 11:48:10 2025 +0800 sync commit 73c8150479bd3c965087c634102df047a36b40ab Author: Frank <frank@sst.dev> Date: Mon Aug 18 01:29:29 2025 +0800 sync commit c5325134e80ce3f9e2cb88e5a51893e4ffd880c2 Author: Frank <frank@sst.dev> Date: Mon Aug 18 01:07:48 2025 +0800 sync commit c5b646aa88760731ac9cd221f677bd400c31224b Author: Frank <frank@sst.dev> Date: Mon Aug 18 01:02:02 2025 +0800 sync commit 27f7cc86ab4713a26d316ae71d2aa5978aaa2007 Author: Frank <frank@sst.dev> Date: Mon Aug 18 00:59:22 2025 +0800 sync commit 0a6152a0e0c2bb0e5b7cafbcb92b908433dd6c5b Author: Frank <frank@sst.dev> Date: Sun Aug 17 18:11:31 2025 +0800 fix /opencode trigger commit f1089103c607ac11251cac5e032e62c8b4667b30 Author: Frank <frank@sst.dev> Date: Sun Aug 17 17:55:14 2025 +0800 sync commit 3ad18240248301380a68880315bfa83c18e9652d Author: Frank <frank@sst.dev> Date: Sun Aug 17 17:44:11 2025 +0800 sync commit 24f0f81773762a38ba0a26e599b718495e2f4b54 Author: Frank <frank@sst.dev> Date: Sun Aug 17 17:18:22 2025 +0800 sync commit bc199d32bed9679d2f80ade527fa57a91e0883ca Author: Frank <frank@sst.dev> Date: Sun Aug 17 16:59:03 2025 +0800 sync commit 6cf860be843e94401166a6de83e36d6bdd8ca6d7 Author: Frank <frank@sst.dev> Date: Sun Aug 17 16:54:48 2025 +0800 sync commit f5f753ff38498062b2e3de38a1be94158fce1463 Author: Frank <frank@sst.dev> Date: Sun Aug 17 14:43:12 2025 +0800 sync commit 26d2e23a3ee99141a5951a153e444a1be25548dc Author: Frank <frank@sst.dev> Date: Sun Aug 17 14:33:40 2025 +0800 sync commit c5b3f54a0ae6064ff51c11ade41e21b594939715 Author: Frank <frank@sst.dev> Date: Sun Aug 17 14:16:10 2025 +0800 sync commit 1c74e9a7ad35551eea53d0e51dcd28e6ae30a944 Author: Frank <frank@sst.dev> Date: Sun Aug 17 08:17:53 2025 +0800 sync commit 89052dc9aaf7e4f02b7ca869ef6017322ee21c94 Author: Frank <frank@sst.dev> Date: Sun Aug 17 08:12:43 2025 +0800 sync commit 42931d4d2a942eedef44f5570a57bf84df26ecfa Author: Frank <frank@sst.dev> Date: Sun Aug 17 08:08:37 2025 +0800 sync commit f22e97dd051ae3f592f4258a8d0270ca7fd60338 Author: Frank <frank@sst.dev> Date: Sun Aug 17 08:01:57 2025 +0800 sync commit 2dda422ef85d2308b459cebe7f202b7fb782e75e Author: Frank <frank@sst.dev> Date: Sun Aug 17 07:55:38 2025 +0800 sync commit b8be1d0e9e89732bd60185c724cda72b8de5f145 Author: Frank <frank@sst.dev> Date: Sun Aug 17 07:48:18 2025 +0800 sync commit 78c84b96a3c8aa78e0ffa089a2a72ad80348fe72 Author: Frank <frank@sst.dev> Date: Sat Aug 16 20:49:26 2025 +0800 sync commit dd9c0c83090ea6c5da963303227a1e09a8434994 Author: Frank <frank@sst.dev> Date: Sat Aug 16 20:47:25 2025 +0800 sync commit 5eb917abba182712d1581376e95de45a092bbb24 Author: Frank <frank@sst.dev> Date: Sat Aug 16 20:35:48 2025 +0800 sync commit 43cf83e7ccbc99484602b06cbb6aafdbc63bf11c Author: Frank <frank@sst.dev> Date: Sat Aug 16 20:32:49 2025 +0800 sync commit 10673ca3d2e1572e15c944ddd7d7af8175971f74 Author: Frank <frank@sst.dev> Date: Sat Aug 16 19:55:53 2025 +0800 sync commit c45ae8a233ed64c49a08b98f3ad01e0348b2df22 Author: Frank <frank@sst.dev> Date: Sat Aug 16 19:53:52 2025 +0800 sync commit 3c329dee05ecda95f5d249552aafc885997f07f2 Author: Frank <frank@sst.dev> Date: Sat Aug 16 19:49:56 2025 +0800 sync commit 5797048db864142f15d73c854131a77a31a421ee Author: Frank <frank@sst.dev> Date: Sat Aug 16 18:00:04 2025 +0800 sync commit 2741338e8a27e57d9d023cf9c0a6a05276b82f41 Author: Frank <frank@sst.dev> Date: Sat Aug 16 17:54:42 2025 +0800 sync commit a51a8ca6d094bd5f98330c730d335285688c6ed8 Author: Frank <frank@sst.dev> Date: Fri Aug 15 18:59:29 2025 +0800 sync commit f4eeeb612dfa6f1714a954dd167519ade0c36a2d Author: Frank <frank@sst.dev> Date: Fri Aug 15 18:56:35 2025 +0800 sync commit 1d0509c5630904a5a9e89ce0de09fbebb6f711be Author: Frank <frank@sst.dev> Date: Fri Aug 15 18:54:21 2025 +0800 sync commit 339807d1b88d2439e9543b5da4ca2538a49f4ab8 Author: Frank <frank@sst.dev> Date: Fri Aug 15 18:49:22 2025 +0800 sync commit 70b4b78922fe80424d8922bb999ed84d28dff005 Author: Frank <frank@sst.dev> Date: Fri Aug 15 18:04:57 2025 +0800 sync 9 个月前
docs: add use_github_token to example (#9120) Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Co-authored-by: rekram1-node <rekram1-node@users.noreply.github.com>4 个月前
fix(github): support variant in github action and opencode github run (#14431) 3 个月前
sync 9 个月前
feat: enable type-aware no-floating-promises rule, fix all 177 violations (#22741)1 个月前
chore: add license field to package.json (#6693) Co-authored-by: theavgjojo <jojo@noreply>4 个月前
zen: update sst version 3 个月前
Squashed commit of the following: commit 7b2ad6a1abf88e0731f15bbf6e281b29a610dd76 Merge: 74c85391 847a63e1 Author: Frank <frank@sst.dev> Date: Mon Aug 18 15:31:54 2025 +0800 Merge branch 'dev' into github commit 74c85391b576d01df298f6c30e3399b281b5c997 Author: Frank <frank@sst.dev> Date: Mon Aug 18 15:30:14 2025 +0800 sync commit 0d27f8e490f1aa242e1a3fcd1f21eb077f852207 Author: Frank <frank@sst.dev> Date: Mon Aug 18 14:30:57 2025 +0800 sync commit 0cf7e6c89f173b053f37cc0d316011b3e9d5fcc4 Author: Frank <frank@sst.dev> Date: Mon Aug 18 11:54:57 2025 +0800 sync commit a782cb7a268bf98916c3850083eaf44ebc38de05 Author: Frank <frank@sst.dev> Date: Mon Aug 18 11:53:25 2025 +0800 sync commit aa557014584abaf462656ba9b1de7c8bd6e9b9d8 Author: Frank <frank@sst.dev> Date: Mon Aug 18 11:48:10 2025 +0800 sync commit 73c8150479bd3c965087c634102df047a36b40ab Author: Frank <frank@sst.dev> Date: Mon Aug 18 01:29:29 2025 +0800 sync commit c5325134e80ce3f9e2cb88e5a51893e4ffd880c2 Author: Frank <frank@sst.dev> Date: Mon Aug 18 01:07:48 2025 +0800 sync commit c5b646aa88760731ac9cd221f677bd400c31224b Author: Frank <frank@sst.dev> Date: Mon Aug 18 01:02:02 2025 +0800 sync commit 27f7cc86ab4713a26d316ae71d2aa5978aaa2007 Author: Frank <frank@sst.dev> Date: Mon Aug 18 00:59:22 2025 +0800 sync commit 0a6152a0e0c2bb0e5b7cafbcb92b908433dd6c5b Author: Frank <frank@sst.dev> Date: Sun Aug 17 18:11:31 2025 +0800 fix /opencode trigger commit f1089103c607ac11251cac5e032e62c8b4667b30 Author: Frank <frank@sst.dev> Date: Sun Aug 17 17:55:14 2025 +0800 sync commit 3ad18240248301380a68880315bfa83c18e9652d Author: Frank <frank@sst.dev> Date: Sun Aug 17 17:44:11 2025 +0800 sync commit 24f0f81773762a38ba0a26e599b718495e2f4b54 Author: Frank <frank@sst.dev> Date: Sun Aug 17 17:18:22 2025 +0800 sync commit bc199d32bed9679d2f80ade527fa57a91e0883ca Author: Frank <frank@sst.dev> Date: Sun Aug 17 16:59:03 2025 +0800 sync commit 6cf860be843e94401166a6de83e36d6bdd8ca6d7 Author: Frank <frank@sst.dev> Date: Sun Aug 17 16:54:48 2025 +0800 sync commit f5f753ff38498062b2e3de38a1be94158fce1463 Author: Frank <frank@sst.dev> Date: Sun Aug 17 14:43:12 2025 +0800 sync commit 26d2e23a3ee99141a5951a153e444a1be25548dc Author: Frank <frank@sst.dev> Date: Sun Aug 17 14:33:40 2025 +0800 sync commit c5b3f54a0ae6064ff51c11ade41e21b594939715 Author: Frank <frank@sst.dev> Date: Sun Aug 17 14:16:10 2025 +0800 sync commit 1c74e9a7ad35551eea53d0e51dcd28e6ae30a944 Author: Frank <frank@sst.dev> Date: Sun Aug 17 08:17:53 2025 +0800 sync commit 89052dc9aaf7e4f02b7ca869ef6017322ee21c94 Author: Frank <frank@sst.dev> Date: Sun Aug 17 08:12:43 2025 +0800 sync commit 42931d4d2a942eedef44f5570a57bf84df26ecfa Author: Frank <frank@sst.dev> Date: Sun Aug 17 08:08:37 2025 +0800 sync commit f22e97dd051ae3f592f4258a8d0270ca7fd60338 Author: Frank <frank@sst.dev> Date: Sun Aug 17 08:01:57 2025 +0800 sync commit 2dda422ef85d2308b459cebe7f202b7fb782e75e Author: Frank <frank@sst.dev> Date: Sun Aug 17 07:55:38 2025 +0800 sync commit b8be1d0e9e89732bd60185c724cda72b8de5f145 Author: Frank <frank@sst.dev> Date: Sun Aug 17 07:48:18 2025 +0800 sync commit 78c84b96a3c8aa78e0ffa089a2a72ad80348fe72 Author: Frank <frank@sst.dev> Date: Sat Aug 16 20:49:26 2025 +0800 sync commit dd9c0c83090ea6c5da963303227a1e09a8434994 Author: Frank <frank@sst.dev> Date: Sat Aug 16 20:47:25 2025 +0800 sync commit 5eb917abba182712d1581376e95de45a092bbb24 Author: Frank <frank@sst.dev> Date: Sat Aug 16 20:35:48 2025 +0800 sync commit 43cf83e7ccbc99484602b06cbb6aafdbc63bf11c Author: Frank <frank@sst.dev> Date: Sat Aug 16 20:32:49 2025 +0800 sync commit 10673ca3d2e1572e15c944ddd7d7af8175971f74 Author: Frank <frank@sst.dev> Date: Sat Aug 16 19:55:53 2025 +0800 sync commit c45ae8a233ed64c49a08b98f3ad01e0348b2df22 Author: Frank <frank@sst.dev> Date: Sat Aug 16 19:53:52 2025 +0800 sync commit 3c329dee05ecda95f5d249552aafc885997f07f2 Author: Frank <frank@sst.dev> Date: Sat Aug 16 19:49:56 2025 +0800 sync commit 5797048db864142f15d73c854131a77a31a421ee Author: Frank <frank@sst.dev> Date: Sat Aug 16 18:00:04 2025 +0800 sync commit 2741338e8a27e57d9d023cf9c0a6a05276b82f41 Author: Frank <frank@sst.dev> Date: Sat Aug 16 17:54:42 2025 +0800 sync commit a51a8ca6d094bd5f98330c730d335285688c6ed8 Author: Frank <frank@sst.dev> Date: Fri Aug 15 18:59:29 2025 +0800 sync commit f4eeeb612dfa6f1714a954dd167519ade0c36a2d Author: Frank <frank@sst.dev> Date: Fri Aug 15 18:56:35 2025 +0800 sync commit 1d0509c5630904a5a9e89ce0de09fbebb6f711be Author: Frank <frank@sst.dev> Date: Fri Aug 15 18:54:21 2025 +0800 sync commit 339807d1b88d2439e9543b5da4ca2538a49f4ab8 Author: Frank <frank@sst.dev> Date: Fri Aug 15 18:49:22 2025 +0800 sync commit 70b4b78922fe80424d8922bb999ed84d28dff005 Author: Frank <frank@sst.dev> Date: Fri Aug 15 18:04:57 2025 +0800 sync 9 个月前
README.md

opencode GitHub Action

A GitHub Action that integrates opencode directly into your GitHub workflow.

Mention /opencode in your comment, and opencode will execute tasks within your GitHub Actions runner.

Features

Explain an issue

Leave the following comment on a GitHub issue. opencode will read the entire thread, including all comments, and reply with a clear explanation.

/opencode explain this issue

Fix an issue

Leave the following comment on a GitHub issue. opencode will create a new branch, implement the changes, and open a PR with the changes.

/opencode fix this

Review PRs and make changes

Leave the following comment on a GitHub PR. opencode will implement the requested change and commit it to the same PR.

Delete the attachment from S3 when the note is removed /oc

Review specific code lines

Leave a comment directly on code lines in the PR's "Files" tab. opencode will automatically detect the file, line numbers, and diff context to provide precise responses.

[Comment on specific lines in Files tab]
/oc add error handling here

When commenting on specific lines, opencode receives:

  • The exact file being reviewed
  • The specific lines of code
  • The surrounding diff context
  • Line number information

This allows for more targeted requests without needing to specify file paths or line numbers manually.

Installation

Run the following command in the terminal from your GitHub repo:

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.

    name: opencode
    
    on:
      issue_comment:
        types: [created]
      pull_request_review_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@v6
             with:
               fetch-depth: 1
               persist-credentials: false
    
           - name: Run opencode
            uses: anomalyco/opencode/github@latest
            env:
              ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            with:
              model: anthropic/claude-sonnet-4-20250514
              use_github_token: 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.

Support

This is an early release. If you encounter issues or have feedback, please create an issue at https://github.com/anomalyco/opencode/issues.

Development

To test locally:

  1. Navigate to a test repo (e.g. hello-world):

    cd hello-world
    
  2. Run:

    MODEL=anthropic/claude-sonnet-4-20250514 \
      ANTHROPIC_API_KEY=sk-ant-api03-1234567890 \
      GITHUB_RUN_ID=dummy \
      MOCK_TOKEN=github_pat_1234567890 \
      MOCK_EVENT='{"eventName":"issue_comment",...}' \
      bun /path/to/opencode/github/index.ts
    
    • MODEL: The model used by opencode. Same as the MODEL defined in the GitHub workflow.
    • ANTHROPIC_API_KEY: Your model provider API key. Same as the keys defined in the GitHub workflow.
    • GITHUB_RUN_ID: Dummy value to emulate GitHub action environment.
    • MOCK_TOKEN: A GitHub personal access token. This token is used to verify you have admin or write access to the test repo. Generate a token here.
    • MOCK_EVENT: Mock GitHub event payload (see templates below).
    • /path/to/opencode: Path to your cloned opencode repo. bun /path/to/opencode/github/index.ts runs your local version of opencode.

Issue comment event

MOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'

Replace:

  • "owner":"sst" with repo owner
  • "repo":"hello-world" with repo name
  • "actor":"fwang" with the GitHub username of commenter
  • "number":4 with the GitHub issue id
  • "body":"hey opencode, summarize thread" with comment body

Issue comment with image attachment.

MOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4},"comment":{"id":1,"body":"hey opencode, what is in my image ![Image](https://github.com/user-attachments/assets/xxxxxxxx)"}}}'

Replace the image URL https://github.com/user-attachments/assets/xxxxxxxx with a valid GitHub attachment (you can generate one by commenting with an image in any issue).

PR comment event

MOCK_EVENT='{"eventName":"issue_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"issue":{"number":4,"pull_request":{}},"comment":{"id":1,"body":"hey opencode, summarize thread"}}}'

PR review comment event

MOCK_EVENT='{"eventName":"pull_request_review_comment","repo":{"owner":"sst","repo":"hello-world"},"actor":"fwang","payload":{"pull_request":{"number":7},"comment":{"id":1,"body":"hey opencode, add error handling","path":"src/components/Button.tsx","diff_hunk":"@@ -45,8 +45,11 @@\n- const handleClick = () => {\n-   console.log('clicked')\n+ const handleClick = useCallback(() => {\n+   console.log('clicked')\n+   doSomething()\n+ }, [doSomething])","line":47,"original_line":45,"position":10,"commit_id":"abc123","original_commit_id":"def456"}}}'