Feature/event triggers #2621
Workflow file for this run
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] | |
| jobs: | |
| check-team-member: | |
| runs-on: ubuntu-latest | |
| # Skip early if @claude is not mentioned - avoids running checkout/grep unnecessarily | |
| 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'))) | |
| outputs: | |
| is-team-member: ${{ steps.check.outputs.is-member }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 | |
| with: | |
| fetch-depth: 1 | |
| - name: Check if actor is team member | |
| id: check | |
| run: | | |
| ACTOR="${GITHUB_ACTOR}" | |
| if grep -q "@${ACTOR}" .github/teams.yml; then | |
| echo "is-member=true" >> $GITHUB_OUTPUT | |
| echo "✅ $ACTOR is a team member" | |
| else | |
| echo "is-member=false" >> $GITHUB_OUTPUT | |
| echo "❌ $ACTOR is not a team member" | |
| fi | |
| claude: | |
| needs: check-team-member | |
| if: | | |
| needs.check-team-member.outputs.is-team-member == 'true' && | |
| github.actor != 'github-actions[bot]' && | |
| ( | |
| (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 | |
| timeout-minutes: 10 | |
| concurrency: | |
| group: claude-${{ github.event.issue.number || github.event.pull_request.number || github.event.comment.id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| issues: read | |
| id-token: write | |
| actions: read | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 | |
| with: | |
| fetch-depth: 1 | |
| - name: Run Claude Code | |
| id: claude | |
| uses: anthropics/claude-code-action@a017b830c03e23789b11fb69ed571ea61c12e45c # v1.0.30 | |
| env: | |
| ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} | |
| with: | |
| anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} | |
| track_progress: true | |
| additional_permissions: | | |
| actions: read | |
| prompt: | | |
| You are a helpful assistant for the ZenML repository. Help the user with whatever they asked. | |
| If the user is asking for a code review (e.g., "@claude /full-review", "@claude review this", or similar), follow the detailed review guidelines below. Otherwise, just help them with their question or request. | |
| --- | |
| CODE REVIEW GUIDELINES (use when reviewing PRs): | |
| Focus on ensuring the changes are sound, clean, intentional, and void of regressions. | |
| REPO: ${{ github.repository }} | |
| PR NUMBER: ${{ github.event.pull_request.number }} | |
| Context: | |
| - You can fetch additional PR context via: | |
| - gh pr view ${{ github.event.pull_request.number }} --json title,body,author,headRefName,baseRefName,commits | |
| - gh pr diff ${{ github.event.pull_request.number }} --name-only | |
| - Use the repository's CLAUDE.md (if present) and existing code patterns for conventions. | |
| Primary Review Goals: | |
| 1) Verify Change Correctness | |
| - Confirm the changes achieve their intended purpose | |
| - Check for unintended side effects or regressions | |
| - Validate edge cases are handled properly | |
| - Ensure error paths are covered | |
| 2) Code Quality & Cleanliness | |
| - Is the code readable and self-documenting? | |
| - Are the changes minimal and focused? | |
| - Do they follow existing patterns in the codebase? | |
| - Are there any code smells or anti-patterns? | |
| 3) Intentionality Check | |
| - Does every change have a clear purpose? | |
| - Are there any accidental modifications? | |
| - Is there dead code being introduced? | |
| - Are the commit boundaries logical? | |
| 4) Potential Issues to Flag | |
| - Performance degradations | |
| - Security vulnerabilities | |
| - Race conditions or concurrency issues | |
| - Resource leaks (memory, file handles, etc.) | |
| - Breaking changes to internal or public APIs | |
| 5) Constructive Suggestions | |
| - Alternative approaches that might be cleaner | |
| - Opportunities to reduce complexity | |
| - Missing test coverage for critical paths | |
| - Documentation gaps for complex logic | |
| Documentation & Release Notes Review: | |
| - Determine if user-facing behavior, APIs, CLI commands/flags, configuration options, or defaults have changed. | |
| - Heuristics (run): gh pr diff ${{ github.event.pull_request.number }} --name-only | |
| - If code changes are present under src/ or cli/ or other user-facing modules but docs/ are not updated, flag as "docs update needed". | |
| - If docs/ changes exist, check if they match the code changes and are placed in the correct sections (e.g., docs/book/, docs/how-to/, docs/reference/). | |
| - If CLI or config flags changed, ensure corresponding docs and examples are updated (including any README or quickstart sections if applicable). | |
| - If migration or breaking changes are introduced, recommend adding an explicit migration note or changelog item. | |
| - If documentation is needed, explicitly call it out in the review with concrete file/section suggestions. | |
| Review Format: | |
| - Start with a summary of what the changes accomplish. | |
| - List any critical issues that must be addressed. | |
| - Note minor improvements that would enhance quality. | |
| - Acknowledge what's done particularly well. | |
| - End with specific, actionable next steps if needed. | |
| Output Instructions: | |
| - Provide detailed feedback using inline-style code references in your comment for specific issues (quote file paths and line ranges when possible). | |
| - Use top-level comments for general observations or praise. | |
| - Use `gh pr comment` to post your review comment to the PR. | |
| Be constructive and helpful in your feedback. | |
| claude_args: --allowed-tools "mcp__github_inline_comment__create_inline_comment,Bash(gh | |
| issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh | |
| pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*),Bash(bash scripts/format.sh:*)" |