Feat/s3 large comments #6786
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Claude Code | |
| on: | |
| issue_comment: | |
| types: [created] | |
| pull_request_review_comment: | |
| types: [created] | |
| issues: | |
| types: [opened, assigned] | |
| pull_request_review: | |
| types: [submitted] | |
| # Queue rather than cancel: cancelling mid-run leaves a half-applied edit on the branch. | |
| # `queue: max` keeps every pending request; the default (`single`) would cancel an | |
| # already-pending run when a second @claude comment arrives, silently dropping it. | |
| concurrency: | |
| group: claude-${{ github.event.issue.number || github.event.pull_request.number }} | |
| cancel-in-progress: false | |
| queue: max | |
| 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: write | |
| pull-requests: write | |
| issues: write | |
| id-token: write | |
| actions: read | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 1 | |
| - name: "Install Node" | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: front_end/.nvmrc | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v2 | |
| - name: Cache node_modules | |
| id: cache-node-modules | |
| uses: actions/cache@v5 | |
| with: | |
| path: front_end/node_modules | |
| key: node-modules-${{ runner.os }}-${{ hashFiles('front_end/bun.lock', 'front_end/.nvmrc', 'front_end/package.json') }} | |
| - name: "Install node_modules" | |
| if: steps.cache-node-modules.outputs.cache-hit != 'true' | |
| run: cd front_end && bun ci | |
| # Backend toolchain, so Claude can run the ruff format/check steps CLAUDE.md | |
| # requires after editing Python. Keep the uv version in sync with unit_tests.yml. | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| version: "0.11.x" | |
| enable-cache: true | |
| cache-dependency-glob: "uv.lock" | |
| - name: "Install Python dependencies" | |
| run: uv sync --frozen | |
| - name: Run Claude Code | |
| id: claude | |
| uses: anthropics/claude-code-action@v1 | |
| with: | |
| claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} | |
| use_commit_signing: true | |
| branch_name_template: '{{prefix}}{{entityType}}-{{entityNumber}}-{{description}}' | |
| # This is an optional setting that allows Claude to read CI results on PRs | |
| additional_permissions: | | |
| actions: read | |
| # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it. | |
| # prompt: 'Update the pull request description to include a summary of changes.' | |
| # Optional: Add claude_args to customize behavior and configuration | |
| # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md | |
| # or https://docs.claude.com/en/docs/claude-code/cli-reference for available options | |
| claude_args: | | |
| --model claude-opus-5 | |
| --allowedTools "Bash(bun ci:*),Bash(bun install:*),Bash(bun run:*),Bash(bun x:*),Bash(cd:*),Bash(uv run ruff format:*),Bash(uv run ruff check:*),Bash(uv run pytest:*),Bash(git fetch:*),Bash(git remote set-branches:*),Bash(git log:*),Bash(git blame:*),Bash(git diff:*),Bash(git show:*)" |