Update all references from docs.anthropic.com/en/docs/claude-code to code.claude.com/docs after documentation site migration. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
287 lines
9.0 KiB
YAML
287 lines
9.0 KiB
YAML
# GitHub Action for Claude Code Integration
|
|
#
|
|
# This workflow enables Claude Code to automatically process GitHub issues
|
|
# and pull requests, allowing you to manage your PKM from anywhere.
|
|
#
|
|
# SETUP INSTRUCTIONS:
|
|
# 1. Copy this file to .github/workflows/claude.yml in your vault repository
|
|
# 2. Get your Claude Code OAuth token from: https://code.claude.com/docs/en/github-actions
|
|
# 3. Add the token as a secret in your repository:
|
|
# - Go to Settings > Secrets and variables > Actions
|
|
# - Click "New repository secret"
|
|
# - Name: CLAUDE_CODE_OAUTH_TOKEN
|
|
# - Value: [Your token from step 2]
|
|
# 4. Configure the workflow triggers below as needed
|
|
|
|
name: Claude Code PKM Assistant
|
|
|
|
# When this workflow runs
|
|
on:
|
|
# Trigger when issues are opened or edited
|
|
issues:
|
|
types: [opened, edited]
|
|
|
|
# Trigger when issue comments are created
|
|
issue_comment:
|
|
types: [created]
|
|
|
|
# Trigger when pull requests are opened
|
|
pull_request:
|
|
types: [opened, edited]
|
|
|
|
# Allow manual trigger from GitHub Actions tab
|
|
workflow_dispatch:
|
|
inputs:
|
|
command:
|
|
description: 'Claude command to run'
|
|
required: false
|
|
default: '/daily'
|
|
type: choice
|
|
options:
|
|
- '/daily'
|
|
- '/weekly'
|
|
- '/onboard'
|
|
- '/push'
|
|
|
|
# Optional: Run on schedule (uncomment to enable)
|
|
# schedule:
|
|
# # Run daily at 6 AM UTC
|
|
# - cron: '0 6 * * *'
|
|
# # Run weekly review on Sundays at 8 PM UTC
|
|
# - cron: '0 20 * * 0'
|
|
|
|
# Environment variables
|
|
env:
|
|
# Claude Code version to use
|
|
CLAUDE_CODE_VERSION: 'latest'
|
|
|
|
# Default model for Claude to use
|
|
# Options: claude-3-opus, claude-3-sonnet, claude-3-haiku
|
|
CLAUDE_MODEL: 'claude-3-sonnet'
|
|
|
|
# Timezone for date/time operations (customize this)
|
|
TZ: 'America/New_York'
|
|
|
|
jobs:
|
|
# Job: Process GitHub Issues as Tasks
|
|
process-issue:
|
|
name: Process Issue with Claude
|
|
runs-on: ubuntu-latest
|
|
|
|
# Only run on issues with specific labels
|
|
if: |
|
|
github.event_name == 'issues' &&
|
|
(contains(github.event.issue.labels.*.name, 'task') ||
|
|
contains(github.event.issue.labels.*.name, 'idea') ||
|
|
contains(github.event.issue.labels.*.name, 'claude'))
|
|
|
|
steps:
|
|
# Check out the repository
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Set up Claude Code
|
|
- name: Setup Claude Code
|
|
uses: anthropics/claude-code-action@v1
|
|
with:
|
|
oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
version: ${{ env.CLAUDE_CODE_VERSION }}
|
|
|
|
# Process the issue
|
|
- name: Process Issue Content
|
|
run: |
|
|
# Extract issue details
|
|
ISSUE_TITLE="${{ github.event.issue.title }}"
|
|
ISSUE_BODY="${{ github.event.issue.body }}"
|
|
ISSUE_NUMBER="${{ github.event.issue.number }}"
|
|
|
|
# Determine action based on labels
|
|
if [[ "${{ contains(github.event.issue.labels.*.name, 'task') }}" == "true" ]]; then
|
|
# Add task to today's daily note
|
|
claude code "Add this task to today's daily note: $ISSUE_TITLE - $ISSUE_BODY"
|
|
elif [[ "${{ contains(github.event.issue.labels.*.name, 'idea') }}" == "true" ]]; then
|
|
# Capture idea in appropriate location
|
|
claude code "Capture this idea in the appropriate project or notes: $ISSUE_TITLE - $ISSUE_BODY"
|
|
fi
|
|
|
|
# Comment on issue to confirm processing
|
|
gh issue comment $ISSUE_NUMBER --body "✅ Processed by Claude Code and added to vault"
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Commit and push changes
|
|
- name: Commit Changes
|
|
run: |
|
|
git config --local user.email "claude-bot@example.com"
|
|
git config --local user.name "Claude Assistant"
|
|
git add .
|
|
git diff --staged --quiet || git commit -m "Process issue #${{ github.event.issue.number }}: ${{ github.event.issue.title }}"
|
|
git push
|
|
|
|
# Job: Daily Note Creation
|
|
daily-note:
|
|
name: Create Daily Note
|
|
runs-on: ubuntu-latest
|
|
|
|
# Run on schedule or manual trigger
|
|
if: |
|
|
github.event_name == 'workflow_dispatch' &&
|
|
github.event.inputs.command == '/daily'
|
|
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Setup Claude Code
|
|
uses: anthropics/claude-code-action@v1
|
|
with:
|
|
oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
|
|
- name: Create Daily Note
|
|
run: |
|
|
# Load context
|
|
claude code /onboard
|
|
|
|
# Create today's daily note
|
|
claude code /daily
|
|
|
|
# Optional: Add weather, calendar events, etc.
|
|
# claude code "Add today's weather forecast to the daily note"
|
|
# claude code "Add calendar events for today"
|
|
|
|
- name: Commit Daily Note
|
|
run: |
|
|
git config --local user.email "claude-bot@example.com"
|
|
git config --local user.name "Claude Assistant"
|
|
git add .
|
|
DATE=$(date +%Y-%m-%d)
|
|
git diff --staged --quiet || git commit -m "Daily note for $DATE"
|
|
git push
|
|
|
|
# Job: Weekly Review
|
|
weekly-review:
|
|
name: Run Weekly Review
|
|
runs-on: ubuntu-latest
|
|
|
|
# Run on Sundays or manual trigger
|
|
if: |
|
|
(github.event_name == 'schedule' && contains(github.event.schedule, '0 20 * * 0')) ||
|
|
(github.event_name == 'workflow_dispatch' && github.event.inputs.command == '/weekly')
|
|
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Setup Claude Code
|
|
uses: anthropics/claude-code-action@v1
|
|
with:
|
|
oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
|
|
- name: Run Weekly Review
|
|
run: |
|
|
# Load full context
|
|
claude code /onboard all
|
|
|
|
# Run weekly review
|
|
claude code /weekly
|
|
|
|
# Generate summary
|
|
claude code "Create a summary of this week's accomplishments and next week's priorities"
|
|
|
|
- name: Commit Weekly Review
|
|
run: |
|
|
git config --local user.email "claude-bot@example.com"
|
|
git config --local user.name "Claude Assistant"
|
|
git add .
|
|
WEEK=$(date +%Y-W%V)
|
|
git diff --staged --quiet || git commit -m "Weekly review for $WEEK"
|
|
git push
|
|
|
|
# Job: Smart Assistance on Pull Requests
|
|
assist-pr:
|
|
name: Assist with Pull Request
|
|
runs-on: ubuntu-latest
|
|
|
|
if: github.event_name == 'pull_request'
|
|
|
|
steps:
|
|
- name: Checkout PR Branch
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
|
|
- name: Setup Claude Code
|
|
uses: anthropics/claude-code-action@v1
|
|
with:
|
|
oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
|
|
- name: Review Changes
|
|
run: |
|
|
# Get changed files
|
|
CHANGED_FILES=$(git diff --name-only origin/main..HEAD)
|
|
|
|
# Have Claude review the changes
|
|
claude code "Review these changed files and provide feedback: $CHANGED_FILES"
|
|
|
|
# Post review as PR comment
|
|
gh pr comment ${{ github.event.pull_request.number }} \
|
|
--body "$(claude code 'Summarize your review findings')"
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Workflow Configuration Notes:
|
|
#
|
|
# CUSTOMIZATION OPTIONS:
|
|
#
|
|
# 1. **Triggers**: Adjust the 'on' section to control when the workflow runs
|
|
# - Remove triggers you don't need
|
|
# - Add schedule triggers for automation
|
|
# - Customize issue labels that trigger processing
|
|
#
|
|
# 2. **Claude Model**: Change CLAUDE_MODEL in env section
|
|
# - claude-3-opus: Most capable, best for complex tasks
|
|
# - claude-3-sonnet: Balanced performance
|
|
# - claude-3-haiku: Fastest, good for simple tasks
|
|
#
|
|
# 3. **Time Zone**: Update TZ in env section to your local timezone
|
|
#
|
|
# 4. **Custom Commands**: Add new jobs for your specific workflows
|
|
#
|
|
# SECURITY NOTES:
|
|
#
|
|
# - Keep CLAUDE_CODE_OAUTH_TOKEN secret and never commit it
|
|
# - Use GitHub's built-in GITHUB_TOKEN when possible
|
|
# - Review permissions before enabling workflow
|
|
# - Consider using environment protection rules for sensitive operations
|
|
#
|
|
# USAGE EXAMPLES:
|
|
#
|
|
# 1. **Create task from mobile**:
|
|
# - Open GitHub mobile app
|
|
# - Create new issue with 'task' label
|
|
# - Claude adds it to your daily note
|
|
#
|
|
# 2. **Capture ideas on the go**:
|
|
# - Create issue with 'idea' label
|
|
# - Claude files it in appropriate project
|
|
#
|
|
# 3. **Remote daily planning**:
|
|
# - Manually trigger workflow
|
|
# - Select '/daily' command
|
|
# - Claude creates daily note
|
|
#
|
|
# TROUBLESHOOTING:
|
|
#
|
|
# - Check Actions tab for workflow runs and logs
|
|
# - Verify CLAUDE_CODE_OAUTH_TOKEN is set correctly
|
|
# - Ensure repository has Actions enabled
|
|
# - Check file permissions and paths
|
|
#
|
|
# For more information:
|
|
# https://code.claude.com/docs/en/github-actions |