opencode.yml 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. name: opencode
  2. on:
  3. # Trigger on issue/PR comments for manual requests
  4. issue_comment:
  5. types: [created]
  6. # Trigger on PR events for automatic reviews
  7. pull_request:
  8. types: [opened, synchronize, ready_for_review]
  9. # Trigger on PR review requests for re-reviews
  10. pull_request_review:
  11. types: [submitted]
  12. jobs:
  13. # Handle opencode execution via comments
  14. opencode:
  15. if: |
  16. github.event_name == 'issue_comment' && (
  17. contains(github.event.comment.body, ' /oc') ||
  18. startsWith(github.event.comment.body, '/oc') ||
  19. contains(github.event.comment.body, ' /opencode') ||
  20. startsWith(github.event.comment.body, '/opencode')
  21. )
  22. runs-on: ubuntu-latest
  23. permissions:
  24. contents: write
  25. pull-requests: write
  26. issues: write
  27. id-token: write
  28. steps:
  29. - name: Checkout repository
  30. uses: actions/checkout@v4
  31. with:
  32. fetch-depth: 0
  33. - name: Run opencode
  34. uses: sst/opencode/github@latest
  35. env:
  36. ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
  37. with:
  38. model: anthropic/claude-sonnet-4-20250514
  39. # Automatically create review comment when PR is opened
  40. auto-review-trigger:
  41. if: |
  42. github.event_name == 'pull_request' && (
  43. github.event.action == 'opened' ||
  44. github.event.action == 'ready_for_review'
  45. ) && !github.event.pull_request.draft
  46. runs-on: ubuntu-latest
  47. permissions:
  48. pull-requests: write
  49. steps:
  50. - name: Create auto-review comment
  51. uses: actions/github-script@v7
  52. with:
  53. script: |
  54. const { owner, repo } = context.repo;
  55. const issue_number = context.payload.pull_request.number;
  56. await github.rest.issues.createComment({
  57. owner,
  58. repo,
  59. issue_number,
  60. body: '/opencode @review Please review this PR. Check for code quality, potential bugs, security issues, and adherence to best practices. Provide constructive feedback and suggestions for improvement.'
  61. });
  62. # Automatically trigger re-review when requested
  63. re-review-trigger:
  64. if: |
  65. github.event_name == 'pull_request_review' &&
  66. github.event.review.state == 'commented' && (
  67. contains(github.event.review.body, 're-review') ||
  68. contains(github.event.review.body, 'check again') ||
  69. contains(github.event.review.body, 'review again')
  70. )
  71. runs-on: ubuntu-latest
  72. permissions:
  73. pull-requests: write
  74. steps:
  75. - name: Create re-review comment
  76. uses: actions/github-script@v7
  77. with:
  78. script: |
  79. const { owner, repo } = context.repo;
  80. const issue_number = context.payload.pull_request.number;
  81. await github.rest.issues.createComment({
  82. owner,
  83. repo,
  84. issue_number,
  85. body: '/opencode @review Please re-review this PR based on the latest changes. Focus on the recent updates and provide feedback on improvements made since the last review.'
  86. });