Skip to content

Feature/event triggers #2621

Feature/event triggers

Feature/event triggers #2621

Workflow file for this run

---
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:*)"