Setup: ANTHROPIC_API_KEY in GitHub Secrets
Bevor du Claude Code in einem Workflow nutzen kannst, braucht GitHub Zugang zum Anthropic API Key:
- GitHub Repository → Settings → Secrets and variables → Actions
- New repository secret erstellen
- Name:
ANTHROPIC_API_KEY, Value: dein API-Key von console.anthropic.com
Claude Code wird in GitHub Actions als CLI-Tool über npx aufgerufen:
# In jedem Workflow-Step verfügbar nach Setup:
- name: Run Claude Code
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npx @anthropic-ai/claude-code --print "Dein Prompt hier"
--print nutzen. Claude gibt das Ergebnis direkt auf stdout aus und beendet sich — kein interaktives Terminal nötig.
Workflow 1: Automatisches PR-Review
claude-pr-review.yml
Wird bei jedem Pull Request ausgelöst. Claude liest den Diff und hinterlässt einen strukturierten Review-Kommentar direkt im PR.
name: Claude Code PR Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get PR Diff
id: diff
run: |
git diff origin/${{ github.base_ref }}...HEAD > /tmp/pr.diff
echo "lines=$(wc -l < /tmp/pr.diff)" >> $GITHUB_OUTPUT
- name: Claude Code Review
id: claude_review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
DIFF=$(cat /tmp/pr.diff | head -500)
REVIEW=$(npx @anthropic-ai/claude-code --print \
"Review this PR diff. Output format:
## Summary
1-2 sentences what this PR does.
## Issues
List critical issues (bugs, security) with file:line references.
## Suggestions
Optional improvements (max 3).
## Verdict
APPROVE / REQUEST_CHANGES / COMMENT
PR Diff:
$DIFF")
echo "review<> $GITHUB_OUTPUT
echo "$REVIEW" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Post Review Comment
uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `## 🤖 Claude Code Review\n\n${{ steps.claude_review.outputs.review }}`
})
Workflow 2: KI-Testanalyse bei Fehlschlägen
claude-test-analysis.yml
Wenn Tests fehlschlagen, analysiert Claude die Fehlerausgabe und erklärt auf Deutsch was falsch ist und wie man es fixt. Spart Debugging-Zeit enorm.
name: Tests + Claude Failure Analysis
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- name: Run Tests
id: tests
run: npm test 2>&1 | tee /tmp/test-output.txt; exit ${PIPESTATUS[0]}
continue-on-error: true
- name: Claude Failure Analysis
if: steps.tests.outcome == 'failure'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
OUTPUT=$(tail -100 /tmp/test-output.txt)
ANALYSIS=$(npx @anthropic-ai/claude-code --print \
"Analysiere diese Test-Fehlerausgabe auf Deutsch.
Erkläre: 1) Was ist das Problem? 2) In welcher Datei/Zeile? 3) Wie fixen?
Sei konkret und kurz (max 200 Wörter).
Test Output:
$OUTPUT")
echo "::error::$ANALYSIS"
echo "## ❌ Test-Fehler Analyse" >> $GITHUB_STEP_SUMMARY
echo "$ANALYSIS" >> $GITHUB_STEP_SUMMARY
- name: Fail if Tests Failed
if: steps.tests.outcome == 'failure'
run: exit 1
Workflow 3: Security-Scan mit KI-Zusammenfassung
claude-security-scan.yml
Wöchentlich (oder bei jedem Push auf main) scannt Claude den Code auf OWASP Top 10 Patterns und erstellt einen priorisierten Security-Report.
name: Weekly Security Scan
on:
schedule:
- cron: '0 8 * * 1' # Jeden Montag 08:00 UTC
workflow_dispatch: # Manuell auslösbar
jobs:
security:
runs-on: ubuntu-latest
permissions:
issues: write
contents: read
steps:
- uses: actions/checkout@v4
- name: Collect Source Files
run: |
find src/ -name "*.js" -o -name "*.ts" -o -name "*.py" \
| head -20 \
| xargs cat > /tmp/source-combined.txt 2>/dev/null || true
- name: Claude Security Review
id: security
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
CODE=$(head -300 /tmp/source-combined.txt)
REPORT=$(npx @anthropic-ai/claude-code --print \
"Security Review dieser Codebasis. Prüfe auf:
- SQL Injection, XSS, Command Injection
- Hardcoded Secrets / API Keys
- Unsichere Direktabhängigkeiten
- Fehlende Input-Validierung
Format: KRITISCH / WARNUNG / INFO mit Dateiname wenn möglich.
Wenn nichts gefunden: 'Keine kritischen Issues gefunden.'
Code:
$CODE")
echo "report<> $GITHUB_OUTPUT
echo "$REPORT" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Create Security Issue
uses: actions/github-script@v7
with:
script: |
const report = `${{ steps.security.outputs.report }}`;
if (report.includes('KRITISCH')) {
github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: `🔴 Security Scan: Kritische Issues gefunden (${new Date().toISOString().split('T')[0]})`,
body: `## Automatischer Security Scan\n\n${report}`,
labels: ['security', 'P0']
});
}
Kosten und Rate Limits
PR Review (500 Zeilen Diff): ~$0.02 — $0.05
Test-Analyse (100 Zeilen Output): ~$0.01 — $0.02
Security Scan (300 Zeilen Code): ~$0.03 — $0.08
Bei 10 PRs/Tag: ~$0.20 — $0.50/Tag → ~$6 — $15/Monat
Kostenbremsen einbauen:
# Nur bei PRs auf main/develop auslösen:
on:
pull_request:
branches: [main, develop]
# Kleines Diff-Limit setzen:
DIFF=$(cat /tmp/pr.diff | head -300) # Max 300 Zeilen
# Haiku statt Sonnet für einfache Aufgaben (10x günstiger):
npx @anthropic-ai/claude-code --model claude-haiku-4-5 --print "..."
Best Practices
- Immer
--print: Im nicht-interaktiven Modus Pflicht — sonst hängt der Workflow - Output begrenzen: Diffs und Code-Snippets auf 300-500 Zeilen kürzen — spart Kosten und vermeidet Timeouts
- Structured Output: Im Prompt ein klares Format vorgeben — dann kann die Ausgabe direkt weiterverarbeitet werden
- Spending Limits: Auf console.anthropic.com ein monatliches Limit setzen — verhindert unerwartete Kosten bei Missbrauch
- Fail-safe: Claude-Schritt immer mit
continue-on-error: truestarten — wenn die KI-Analyse fehlschlägt, soll der Build-Prozess nicht blockiert werden - Haiku für Einfaches: Kurze Zusammenfassungen und einfache Analysen → Haiku. Komplexe Reviews → Sonnet
KI-gestützte Entwicklung vollständig beherrschen
Von GitHub Actions bis zu autonomen Multi-Agent-Systemen — unser Kurs zeigt die komplette Praxis mit echten Production-Beispielen.
14 Tage kostenlos starten →