Skip to content

Add array helper utilities #18

Add array helper utilities

Add array helper utilities #18

Workflow file for this run

name: Claude PR Review
on:
pull_request:
types: [opened, synchronize, ready_for_review]
# Manual trigger from Actions tab
workflow_dispatch:
inputs:
pr_number:
description: 'Pull Request number to review'
required: true
type: number
# Comment trigger with /review command
issue_comment:
types: [created]
permissions:
contents: read
pull-requests: write
issues: write
concurrency:
group: claude-review-${{ github.event.pull_request.number || github.event.issue.number || github.event.inputs.pr_number }}
cancel-in-progress: true
jobs:
review:
name: Claude Code Review
runs-on: ubuntu-latest
# Only run if: PR event, OR manual trigger, OR /review comment on a PR
if: |
github.event_name == 'pull_request' ||
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'issue_comment' &&
github.event.issue.pull_request &&
contains(github.event.comment.body, '/review'))
steps:
- name: Get PR number
id: pr
run: |
if [ "${{ github.event_name }}" == "pull_request" ]; then
echo "number=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
echo "number=${{ github.event.inputs.pr_number }}" >> $GITHUB_OUTPUT
else
echo "number=${{ github.event.issue.number }}" >> $GITHUB_OUTPUT
fi
- name: Add reaction to comment
if: github.event_name == 'issue_comment'
uses: actions/github-script@v7
with:
script: |
await github.rest.reactions.createForIssueComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: context.payload.comment.id,
content: 'eyes'
});
- name: Get PR details
id: pr_details
uses: actions/github-script@v7
with:
script: |
const pr = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: ${{ steps.pr.outputs.number }}
});
core.setOutput('draft', pr.data.draft);
core.setOutput('labels', pr.data.labels.map(l => l.name).join(','));
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run Claude PR Review
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
PR_NUMBER: ${{ steps.pr.outputs.number }}
REPO_OWNER: ${{ github.repository_owner }}
REPO_NAME: ${{ github.event.repository.name }}
PR_DRAFT: ${{ steps.pr_details.outputs.draft }}
PR_LABELS: ${{ steps.pr_details.outputs.labels }}
FORCE_REVIEW: ${{ github.event_name == 'issue_comment' || github.event_name == 'workflow_dispatch' }}
run: npx tsx scripts/claude-pr-review.ts