Files
algo/.github/workflows/claude.yml
T
Dan GuidoandGitHub d961f1d7e0 Add Claude Code GitHub Workflow (#14798)
* "Claude PR Assistant workflow"

* "Claude Code Review workflow"

* docs: Add CLAUDE.md for LLM guidance

This comprehensive guide captures important context and learnings for LLMs
working on the Algo VPN codebase, including:

- Project architecture and structure
- Critical dependencies and version management
- Development practices and code style
- Testing requirements and CI/CD pipeline
- Common issues and solutions
- Security considerations
- Platform support details
- Maintenance guidelines

The guide emphasizes Algo's core values: security, simplicity, and privacy.
It provides practical guidance based on extensive experience working with
the codebase, helping future contributors maintain high standards while
avoiding common pitfalls.

* feat: Configure Claude GitHub Actions with Algo-specific settings

- Add allowed_tools for running Ansible, Python, and shell linters
- Enable use_sticky_comment for cleaner PR discussions
- Add custom_instructions to follow Algo's security-first principles
- Reference CLAUDE.md for project-specific guidance
2025-08-03 08:01:41 -04:00

66 lines
2.4 KiB
YAML

name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
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: read
pull-requests: read
issues: read
id-token: write
actions: read # Required for Claude to read CI results on PRs
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# This is an optional setting that allows Claude to read CI results on PRs
additional_permissions: |
actions: read
# Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4)
# model: "claude-opus-4-20250514"
# Optional: Customize the trigger phrase (default: @claude)
# trigger_phrase: "/claude"
# Optional: Trigger when specific user is assigned to an issue
# assignee_trigger: "claude-bot"
# Optional: Allow Claude to run specific commands
allowed_tools: "Bash(ansible-playbook * --syntax-check),Bash(ansible-lint *),Bash(ruff check *),Bash(yamllint *),Bash(shellcheck *),Bash(python -m pytest *)"
# Optional: Add custom instructions for Claude to customize its behavior for your project
custom_instructions: |
Follow Algo's security-first principles
Be conservative with dependency updates
Run ansible-lint, ruff, yamllint, and shellcheck before suggesting changes
Check the CLAUDE.md file for project-specific guidance
# Optional: Custom environment variables for Claude
# claude_env: |
# NODE_ENV: test