1+ name : Claude PR
2+
3+ permissions :
4+ contents : write
5+ pull-requests : write
6+ issues : write
7+ id-token : write
8+
9+ on :
10+ issue_comment :
11+ types : [created]
12+ pull_request_review_comment :
13+ types : [created]
14+
15+ jobs :
16+ claude-pr :
17+ if : |
18+ (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
19+ (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
20+ (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
21+ runs-on : ubuntu-latest
22+ env :
23+ AWS_REGION : us-west-2
24+ AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
25+ AWS_SECRET_ACCESS_KEY : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
26+ AWS_SESSION_TOKEN : ${{ secrets.AWS_SESSION_TOKEN }}
27+ steps :
28+ - name : Checkout repository
29+ uses : actions/checkout@v4
30+
31+ - name : Configure AWS Credentials (OIDC)
32+ uses : aws-actions/configure-aws-credentials@v4
33+ with :
34+ role-to-assume : arn:aws:iam::199765120567:role/${{ github.event.repository.name }}-iam-protected
35+ aws-region : us-west-2
36+
37+ - name : Assume inference role
38+ id : inference-role
39+ run : |
40+ CREDS="$(aws sts assume-role \
41+ --role-arn arn:aws:iam::168000258654:role/BedrockInferenceRole \
42+ --role-session-name claude-inference-session \
43+ --query 'Credentials' \
44+ --output json)"
45+
46+ AWS_ACCESS_KEY_ID="$(echo "$CREDS" | jq -r '.AccessKeyId')"
47+ AWS_SECRET_ACCESS_KEY="$(echo "$CREDS" | jq -r '.SecretAccessKey')"
48+ AWS_SESSION_TOKEN="$(echo "$CREDS" | jq -r '.SessionToken')"
49+
50+ echo "::add-mask::$AWS_SECRET_ACCESS_KEY"
51+ { echo "aws-access-key-id=$AWS_ACCESS_KEY_ID"; echo "aws-secret-access-key=$AWS_SECRET_ACCESS_KEY"; echo "aws-session-token=$AWS_SESSION_TOKEN"; } >> "$GITHUB_OUTPUT"
52+
53+ - name : Determine prompt to use
54+ id : determine-prompt
55+ env :
56+ COMMENT_BODY : ${{ github.event.comment.body }}
57+ run : |
58+ # Safely trim whitespace and check if it's just @claude
59+ TRIMMED_COMMENT=$(echo "$COMMENT_BODY" | xargs)
60+
61+ if [ "$TRIMMED_COMMENT" = "@claude" ]; then
62+ echo "use-code-review-prompt=true" >> "$GITHUB_OUTPUT"
63+ else
64+ echo "use-code-review-prompt=false" >> "$GITHUB_OUTPUT"
65+ fi
66+
67+ - name : Read code review prompt
68+ id : read-prompt
69+ if : steps.determine-prompt.outputs.use-code-review-prompt == 'true'
70+ run : |
71+ PROMPT_CONTENT=$(cat .github/prompts/code-review.md)
72+ {
73+ echo "prompt-content<<EOF"
74+ echo "$PROMPT_CONTENT"
75+ echo "EOF"
76+ } >> "$GITHUB_OUTPUT"
77+
78+ - uses : anthropics/claude-code-action@b92e56a96bb2fce337ece11f6dcb03bab4826536
79+ if : steps.determine-prompt.outputs.use-code-review-prompt == 'true'
80+ env :
81+ AWS_REGION : us-west-2
82+ AWS_ACCESS_KEY_ID : ${{ steps.inference-role.outputs.aws-access-key-id }}
83+ AWS_SECRET_ACCESS_KEY : ${{ steps.inference-role.outputs.aws-secret-access-key }}
84+ AWS_SESSION_TOKEN : ${{ steps.inference-role.outputs.aws-session-token }}
85+ with :
86+ timeout_minutes : ' 10'
87+ github_token : ${{ secrets.GITHUB_TOKEN }}
88+ use_bedrock : ' true'
89+ anthropic_model : ' arn:aws:bedrock:us-west-2:168000258654:inference-profile/us.anthropic.claude-sonnet-4-20250514-v1:0'
90+ direct_prompt : ${{ steps.read-prompt.outputs.prompt-content }}
91+
92+ - uses : anthropics/claude-code-action@b92e56a96bb2fce337ece11f6dcb03bab4826536
93+ if : steps.determine-prompt.outputs.use-code-review-prompt == 'false'
94+ env :
95+ AWS_REGION : us-west-2
96+ AWS_ACCESS_KEY_ID : ${{ steps.inference-role.outputs.aws-access-key-id }}
97+ AWS_SECRET_ACCESS_KEY : ${{ steps.inference-role.outputs.aws-secret-access-key }}
98+ AWS_SESSION_TOKEN : ${{ steps.inference-role.outputs.aws-session-token }}
99+ COMMENT_BODY : ${{ github.event.comment.body }}
100+ with :
101+ timeout_minutes : ' 10'
102+ github_token : ${{ secrets.GITHUB_TOKEN }}
103+ use_bedrock : ' true'
104+ anthropic_model : ' arn:aws:bedrock:us-west-2:168000258654:inference-profile/us.anthropic.claude-sonnet-4-20250514-v1:0'
105+ direct_prompt : $COMMENT_BODY
0 commit comments