Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

dcode GitHub Action

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

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

Features

Explain an issue

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

/dcode explain this issue

Fix an issue

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

/dcode fix this

Review PRs and make changes

Leave the following comment on a GitHub PR. dcode 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. dcode 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, dcode 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

Manual Setup

  1. Install the GitHub app https://github.com/apps/dcode-run. Make sure it is installed on the target repository.

  2. Create a GitHub Actions secret named DCODE_API_KEY with a dcode cloud auth token for a user on the team you want the action to run as.

    • On a machine already logged in (dcode auth login), the token is the token field in the cloud session file (typically ~/.local/share/dcode/cloud.json).
    • Or redeem a device-code login for an access_token against your cloud (https://dcode.w3api.dev by default) and store that value.
    • That bearer token authenticates the runner to the cloud inference router as that user, so the team's model allowlist and provider credentials apply — you do not need to put Anthropic/OpenAI keys in the workflow.
  3. Add the following workflow file to .github/workflows/dcode.yml in your repo. Point model at a team-allowed model under the dcode provider (same ids your team sees after login).

    name: dcode
    on:
     issue_comment:
     types: [created]
     pull_request_review_comment:
     types: [created]
    jobs:
     dcode:
     if: |
     contains(github.event.comment.body, '/oc') ||
     contains(github.event.comment.body, '/dcode')
     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 dcode
     uses: W3Dev/dcode-action@v0.0.4
     env:
     # Cloud auth token — team models + credentials via dcode cloud
     DCODE_API_KEY: ${{ secrets.DCODE_API_KEY }}
     # Optional: override cloud origin (default https://dcode.w3api.dev)
     # CLOUD_URL: https://dcode.w3api.dev
     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
     with:
     model: dcode/anthropic/claude-sonnet-4-20250514
     use_github_token: true
  4. Store secrets under the organization or repository Settings → Secrets and variables → Actions. At minimum set DCODE_API_KEY.

Alternative: external provider keys

dcode still accepts direct provider credentials (for example ANTHROPIC_API_KEY, OPENAI_API_KEY) when you want the action to call a provider outside team cloud config. Prefer DCODE_API_KEY whenever the run should use the team's shared auth and allowlist.

- name: Run dcode
 uses: W3Dev/dcode-action@v0.0.4
 env:
 ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 with:
 model: anthropic/claude-sonnet-4-20250514
 use_github_token: true

Support

This is an early release. If you encounter issues or have feedback, please create an issue at https://github.com/W3Dev/dcode-action/issues.

Development

The production action installs the public dcode CLI (https://dcode.run/install) and runs dcode github run. The index.ts entry here is for local mock testing of the GitHub event flow.

To test locally:

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

    cd hello-world
  2. Install dependencies in this action repo (bun install). For local index.ts runs you also need @devpod/code-sdk available (link or install a build from the private dcode monorepo vendor tarball).

  3. Run:

    MODEL=dcode/anthropic/claude-sonnet-4-20250514 \
     DCODE_API_KEY=<cloud-auth-token> \
     GITHUB_RUN_ID=dummy \
     MOCK_TOKEN=github_pat_1234567890 \
     MOCK_EVENT='{"eventName":"issue_comment",...}' \
     bun /path/to/dcode-action/index.ts
    • MODEL: The model used by dcode. Prefer a team-allowed dcode/... model when using cloud auth.
    • DCODE_API_KEY: Cloud auth / bearer token for the team user (preferred). Provider keys such as ANTHROPIC_API_KEY are an alternative for external endpoints.
    • 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).

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 dcode, 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 dcode, 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 dcode, 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 dcode, 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 dcode, 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"}}}'

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /