Skip to content

Commit c844413

Browse files
authored
Add Claude Code GitHub Workflow (#2511)
2 parents c530176 + ee7ef70 commit c844413

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

.github/workflows/claude.yml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: Claude Code
2+
3+
on:
4+
issue_comment:
5+
types: [created]
6+
pull_request_review_comment:
7+
types: [created]
8+
issues:
9+
types: [opened, assigned]
10+
pull_request_review:
11+
types: [submitted]
12+
13+
jobs:
14+
check-team-membership:
15+
runs-on: ubuntu-latest
16+
outputs:
17+
is-team-member: ${{ steps.check-membership.outputs.is-member }}
18+
steps:
19+
- name: Check team membership
20+
id: check-membership
21+
uses: actions/github-script@v7
22+
with:
23+
script: |
24+
try {
25+
const { data } = await github.rest.teams.getMembershipForUserInOrg({
26+
org: 'diffplug',
27+
team_slug: 'spotless',
28+
username: github.event.sender.login
29+
});
30+
console.log(`User ${github.event.sender.login} membership status: ${data.state}`);
31+
return data.state === 'active';
32+
} catch (error) {
33+
console.log(`User ${github.event.sender.login} is not a member of the Spotless team`);
34+
return false;
35+
}
36+
37+
claude:
38+
needs: check-team-membership
39+
if: |
40+
needs.check-team-membership.outputs.is-team-member == 'true' &&
41+
(
42+
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
43+
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
44+
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
45+
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
46+
)
47+
runs-on: ubuntu-latest
48+
permissions:
49+
contents: read
50+
pull-requests: read
51+
issues: read
52+
id-token: write
53+
steps:
54+
- name: Checkout repository
55+
uses: actions/checkout@v4
56+
with:
57+
fetch-depth: 1
58+
59+
- name: Run Claude Code
60+
id: claude
61+
uses: anthropics/claude-code-action@beta
62+
with:
63+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
64+

0 commit comments

Comments
 (0)