diff --git a/.github/README.md b/.github/README.md new file mode 100644 index 00000000..05868aad --- /dev/null +++ b/.github/README.md @@ -0,0 +1,17 @@ +# Claude reviews + +Repository owners and members can request a pull request review by commenting +`@claude`. The workflow uses `prompts/code-review.md` and posts the review as a +pull request comment. Add instructions after `@claude` to use interactive mode +with the triggering comment and conversation context instead. + +Reviews use Claude Sonnet 5.5 through the global cross-region Bedrock inference +profile from `us-west-2`. Configure the model with `ANTHROPIC_MODEL`; the workflow +disables extended thinking because Bedrock rejects replayed tool-call turns +without a leading thinking block. The workflow has a ten-minute job timeout. +The inference role must permit invocation of the profile and its destination +models. + +Comment-triggered workflows use the default branch's workflow definition. +End-to-end verification of workflow changes requires merging them before +requesting another review. diff --git a/.github/workflows/claude-code.yaml b/.github/workflows/claude-code.yaml index 2db30051..0a666cd5 100644 --- a/.github/workflows/claude-code.yaml +++ b/.github/workflows/claude-code.yaml @@ -24,6 +24,7 @@ jobs: github.event.comment.author_association == 'MEMBER' ) runs-on: ubuntu-latest + timeout-minutes: 10 env: AWS_REGION: us-west-2 AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} @@ -80,31 +81,38 @@ jobs: echo "EOF" } >> "$GITHUB_OUTPUT" - - uses: anthropics/claude-code-action@69dec299f882fef0fff1652a1309b7e9771b9f98 + - uses: anthropics/claude-code-action@8d70a0dd265122bd65b8e09d3d959e65373ae2a1 # v1.0.260 if: steps.determine-prompt.outputs.use-code-review-prompt == 'true' env: + ANTHROPIC_MODEL: arn:aws:bedrock:us-west-2:168000258654:inference-profile/global.anthropic.claude-sonnet-5-5 AWS_REGION: us-west-2 AWS_ACCESS_KEY_ID: ${{ steps.inference-role.outputs.aws-access-key-id }} AWS_SECRET_ACCESS_KEY: ${{ steps.inference-role.outputs.aws-secret-access-key }} AWS_SESSION_TOKEN: ${{ steps.inference-role.outputs.aws-session-token }} + MAX_THINKING_TOKENS: '0' with: - timeout_minutes: '10' github_token: ${{ secrets.GITHUB_TOKEN }} use_bedrock: 'true' - anthropic_model: 'arn:aws:bedrock:us-west-2:168000258654:inference-profile/us.anthropic.claude-sonnet-4-20250514-v1:0' - direct_prompt: ${{ steps.read-prompt.outputs.prompt-content }} + claude_args: --allowed-tools 'Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr comment:*)' + prompt: | + REPO: ${{ github.repository }} + PR NUMBER: ${{ github.event.issue.number || github.event.pull_request.number }} - - uses: anthropics/claude-code-action@69dec299f882fef0fff1652a1309b7e9771b9f98 + Read this pull request with `gh pr view ${{ github.event.issue.number || github.event.pull_request.number }} --repo ${{ github.repository }}` + and `gh pr diff ${{ github.event.issue.number || github.event.pull_request.number }} --repo ${{ github.repository }}`. + Post the final review to the same pull request with `gh pr comment ${{ github.event.issue.number || github.event.pull_request.number }} --repo ${{ github.repository }}`. + + ${{ steps.read-prompt.outputs.prompt-content }} + + - uses: anthropics/claude-code-action@8d70a0dd265122bd65b8e09d3d959e65373ae2a1 # v1.0.260 if: steps.determine-prompt.outputs.use-code-review-prompt == 'false' env: + ANTHROPIC_MODEL: arn:aws:bedrock:us-west-2:168000258654:inference-profile/global.anthropic.claude-sonnet-5-5 AWS_REGION: us-west-2 AWS_ACCESS_KEY_ID: ${{ steps.inference-role.outputs.aws-access-key-id }} AWS_SECRET_ACCESS_KEY: ${{ steps.inference-role.outputs.aws-secret-access-key }} AWS_SESSION_TOKEN: ${{ steps.inference-role.outputs.aws-session-token }} - COMMENT_BODY: ${{ github.event.comment.body }} + MAX_THINKING_TOKENS: '0' with: - timeout_minutes: '10' github_token: ${{ secrets.GITHUB_TOKEN }} use_bedrock: 'true' - anthropic_model: 'arn:aws:bedrock:us-west-2:168000258654:inference-profile/us.anthropic.claude-sonnet-4-20250514-v1:0' - direct_prompt: $COMMENT_BODY