Add Claude Code review + @claude workflows
Ports the two Claude GitHub workflows from the bang repo (which narya lacked): claude-code-review.yml auto-reviews PRs; claude.yml responds to @claude mentions on issues/PRs. Review prompt tuned for narya (wire/streaming compat, DObject/marshaller correctness, concurrency). Requires the CLAUDE_CODE_OAUTH_TOKEN repo secret to authenticate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HhfHCXYp2ctWi76Z91y9Ut
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
name: Claude Code Review
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, ready_for_review, reopened]
|
||||
|
||||
jobs:
|
||||
claude-review:
|
||||
runs-on: ubuntu-latest
|
||||
# pull-requests: write is required so `gh pr comment` and the inline-comment
|
||||
# tool can post the review back onto the PR via GITHUB_TOKEN.
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Run Claude Code Review
|
||||
id: claude-review
|
||||
uses: anthropics/claude-code-action@v1
|
||||
with:
|
||||
# Authenticates as the Claude subscription, so review usage is covered
|
||||
# by the plan (no metered API charge). Set the CLAUDE_CODE_OAUTH_TOKEN
|
||||
# secret on this repo (Settings > Secrets and variables > Actions).
|
||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||
prompt: |
|
||||
REPO: ${{ github.repository }}
|
||||
PR NUMBER: ${{ github.event.pull_request.number }}
|
||||
|
||||
Review this pull request. narya is a Java distributed-object /
|
||||
networking library (the Presents framework: DObjects, invocation
|
||||
services/marshallers, the io streaming layer). Focus on:
|
||||
- Correctness bugs and broken edge cases
|
||||
- Wire-protocol / streaming compatibility (field order, Streamable
|
||||
read/writeObject, backwards compatibility of serialized forms)
|
||||
- Thread-safety and concurrency
|
||||
- Security implications
|
||||
- Code quality and existing project conventions
|
||||
|
||||
The PR branch is already checked out in the working directory.
|
||||
Use `gh pr comment` for a short top-level summary.
|
||||
Use `mcp__github_inline_comment__create_inline_comment` (with
|
||||
`confirmed: true`) to flag specific lines.
|
||||
Only post GitHub comments - do not return the review as a message.
|
||||
If you find nothing worth flagging, post a brief "no issues found"
|
||||
summary comment.
|
||||
claude_args: |
|
||||
--allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*)"
|
||||
@@ -0,0 +1,43 @@
|
||||
name: Claude Code
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
pull_request_review_comment:
|
||||
types: [created]
|
||||
issues:
|
||||
types: [opened, assigned]
|
||||
pull_request_review:
|
||||
types: [submitted]
|
||||
|
||||
jobs:
|
||||
claude:
|
||||
if: |
|
||||
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
|
||||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
|
||||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
|
||||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
issues: read
|
||||
id-token: write
|
||||
actions: read # Required for Claude to read CI results on PRs
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Run Claude Code
|
||||
id: claude
|
||||
uses: anthropics/claude-code-action@v1
|
||||
with:
|
||||
# Set the CLAUDE_CODE_OAUTH_TOKEN secret on this repo (Settings >
|
||||
# Secrets and variables > Actions) for this to authenticate.
|
||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||
|
||||
# This is an optional setting that allows Claude to read CI results on PRs
|
||||
additional_permissions: |
|
||||
actions: read
|
||||
Reference in New Issue
Block a user