- GitHub Actions workflow פעיל שמריץ code review אוטומטי על כל PR שנפתח או מתעדכן
- Security audit workflow שרץ על כל push ל-main ומזהה פרצות אבטחה — כולל security gate שחוסם merge
- Release notes pipeline שמייצר release notes אוטומטיים על כל tag push
- Custom workflow שפותר צורך אמיתי בפרויקט שלכם — documentation sync, i18n check, או test generation
- קובץ .claude/rules/ci-review.md עם הגדרות review ספציפיות ל-CI context
- נוסחת עלות מחושבת לCI workflows שלכם — כולל תקציב חודשי ו-model selection strategy
- תוכלו להקים claude-code-action@v1 על כל GitHub repository ולהפעיל code review אוטומטי תוך דקות
- תוכלו לבנות security audit workflow שחוסם PRs מסוכנים אוטומטית באמצעות security gate pattern
- תוכלו לתכנן ולבנות custom CI workflows שמתאימים לצרכים הספציפיים של הפרויקט שלכם
- תוכלו לשלוט בעלויות CI דרך model selection, path filtering, ו-tiered review strategy
- תוכלו להתאים את הגישה למערכות CI אחרות כמו GitLab CI, Jenkins, ו-CircleCI
- פרקים קודמים: פרק 1 (Headless Mode) — אתם צריכים להכיר את -p, --bare, --output-format json, וסקריפטים בסיסיים
- כלים נדרשים: חשבון GitHub עם repository לבדיקות, ANTHROPIC_API_KEY מוכן
- הרשאות GitHub: תצטרכו admin access ל-repository שלכם כדי להתקין GitHub App ולהגדיר Repository Secrets. אם אתם עובדים על repo ארגוני — בקשו הרשאה מהadmin, או צרו repo אישי לתרגול
- GitHub Actions מופעל: ודאו שActions מופעל ב-repo: Settings → Actions → General → "Allow all actions and reusable workflows". ב-free accounts, Actions מופעל כברירת מחדל על repos ציבוריים. ב-repos פרטיים, יש 2,000 דקות חינם לחודש
- YAML בסיסי: Workflow files כתובים ב-YAML. הכלל החשוב ביותר: הזחה ב-2 רווחים (לא tabs!). רווח אחד פחות = הworkflow נשבר עם הודעת שגיאה לא ברורה. אם YAML חדש לכם — התקינו תוסף YAML ב-VS Code שמסמן שגיאות הזחה בזמן אמת
- Git בסיסי: צריך לדעת ליצור branch (
git checkout -b), לפתוח PR ב-GitHub, ולעשות push. אם זה חדש — המדריך של GitHub - Repository עם קוד: התרגילים דורשים repo שיש בו קוד אמיתי (לא repo ריק). אם אין — צרו repo עם כמה קבצי קוד, או fork-ו repo קיים
- זמן משוער: 3-4 שעות | עלות API: $1-3 (תלוי בכמות PRs ובמודל שנבחר)
בפרק 1 למדתם להריץ Claude Code ב-headless mode — בניתם סקריפטים עם error handling, batch processors, ו-cron jobs. בפרק הזה אתם לוקחים את אותם כלים ומטמיעים אותם ב-GitHub Actions — כדי שClaude יעשה code review, security audit, ויצירת release notes על כל PR באופן אוטומטי, בלי שום מעורבות אנושית. בפרק הבא תעברו מ-CLI ל-SDK — תבנו agents ב-Python שמשתמשים ב-Claude כמנוע AI בתוך הקוד שלכם.
| מונח (English) | תרגום | הגדרה |
|---|---|---|
| claude-code-action@v1 | אקשן רשמי | ה-GitHub Action הרשמי של Anthropic — מריץ את כל ה-runtime של Claude Code בתוך GitHub Actions runner |
| GitHub Actions | מערכת CI/CD | מערכת אוטומציה מובנית ב-GitHub שמריצה workflows על אירועים ב-repository — PRs, pushes, releases |
| Workflow YAML | קובץ הגדרה | קובץ YAML ב-.github/workflows/ שמגדיר pipeline מלא: triggers, jobs, steps, permissions |
| Repository Secrets | סודות מאגר | משתנים מוצפנים שזמינים ל-workflows. לא נחשפים בלוגים — שם שומרים API keys וcredentials |
| Pull Request Trigger | טריגר PR | trigger שמפעיל workflow כשנפתח או מתעדכן PR — הבסיס ל-automated code review |
| Inline Comments | תגובות בקוד | תגובות ישירות על שורות קוד ספציפיות ב-PR diff — מצביעות בדיוק על הבעיה |
| Security Gate | שער אבטחה | מנגנון שחוסם merge אם נמצאה פרצה CRITICAL ומוסיף label אם נמצא WARNING |
| OWASP Top 10 | 10 פרצות נפוצות | רשימת 10 פרצות האבטחה הנפוצות ביותר ביישומי ווב — SQL injection, XSS, ועוד |
| Draft PR | PR טיוטה | PR שעדיין לא מוכן ל-review — צריך אישור ידני לפני שהוא Ready for Review. רשת ביטחון חשובה |
| Tiered Review | סקירה מדורגת | אסטרטגיית עלות: Haiku ל-lint checks, Sonnet ל-full review, Opus רק ל-security audits |
Claude Code ב-CI/CD — החזון
CI/CD (Continuous Integration / Continuous Deployment) הוא המקום שבו headless mode באמת זורח. בעולם הישן, CI checks הם בינאריים: הטסטים עוברים או נכשלים, ה-linter מצא שגיאה או לא. אין ניואנסים, אין הקשר, אין הסבר למה משהו בעייתי.
Claude Code משנה את המשוואה: במקום בדיקה בינארית, מקבלים analysis מודע הקשר. Claude קורא את ה-diff, מבין את הלוגיקה העסקית, ומסביר לא רק "יש bug" אלא "זה bug כי ה-authentication middleware לא מכסה את ה-route החדש הזה, וזה חושף endpoint ללא אימות". זה ההבדל בין linter ל-code reviewer מנוסה.
מה שהופך את זה לאפשרי הוא claude-code-action@v1 — ה-GitHub Action הרשמי של Anthropic, שהושק בספטמבר 2025 כחלק מ-Claude Code 2.0. הוא מריץ את כל ה-runtime של Claude Code בתוך GitHub Actions runner רגיל. Claude קורא את ה-repository, מנתח diffs, ומפרסם ממצאים ישירות ב-PR — כולל inline comments על שורות קוד ספציפיות.
אלטרנטיבית, אפשר להשתמש ב-raw claude -p --bare בכל מערכת CI אחרת (Jenkins, GitLab CI, CircleCI, Bitbucket Pipelines) — אבל מפסידים את האינטגרציה עם GitHub (inline comments, PR interaction, @claude mentions).
דוגמאות מייצגות: מה עושים בCI עם Claude
כדי להבין את הטווח של מה שאפשר, הנה כמה תרחישים נפוצים:
- Code review על כל PR: Claude סוקר את ה-diff ומגיב עם ממצאים — הcase הנפוץ ביותר. עובד 24/7, עולה סנטים
- Security audit על pushes ל-main: Claude מחפש פרצות אבטחה בקוד שנכנס ל-production — כולל OWASP Top 10
- Release notes אוטומטיים: Claude קורא commits ו-PRs ומייצר release notes מסודרים בכל release
- Issue-to-PR: מישהו יוצר issue, Claude מיישם את השינוי ופותח Draft PR
- Documentation sync: כשAPI משתנה, Claude מעדכן את ה-docs אוטומטית
- Test generation: כשקוד חדש נכנס בלי tests, Claude מייצר test stubs
- i18n validation: בפרויקטים עם עברית, Claude מוודא שכל string חדש מתורגם
- Dependency review: כש-Dependabot מעדכן package, Claude בודק changelog ומעריך סיכון
כל התרחישים האלה משתמשים באותו building block: claude-code-action@v1 עם prompt מותאם. ההבדל הוא ב-trigger (מה מפעיל), ב-model (כמה "חכם" צריך להיות), וב-prompt (מה Claude צריך לעשות).
עלות טיפוסית: code review ממוצע עולה $0.10-0.50 בטוקנים. security audit מעמיק עולה $0.50-2.00. להשוואה: שעת עבודה של מפתח בכיר עולה $80-200. אם ה-review חוסך 15 דקות של review אנושי — ההשקעה מחזירה את עצמה פי 100 ומעלה.
| מרכיב | חישוב | דוגמה |
|---|---|---|
| זמן שנחסך למפתח לPR | דקות review ידני | 15 דקות |
| מספר PRs בשבוע | ממוצע צוות | 30 PRs |
| שכר שעתי מפתח | עלות לארגון | $100/שעה |
| חיסכון חודשי | 15/60 x 30 x 4 x 100 | $3,000 |
| עלות Claude חודשית | 30 x 4 x $0.30 | $36 |
| ROI | חיסכון / עלות | 83x |
כלל אצבע: אם הצוות שלכם פותח יותר מ-10 PRs בשבוע, automated code review with Claude Code משתלם כמעט תמיד. גם צוות של מפתח בודד נהנה מ-"second pair of eyes" אוטומטי.
פתחו repository ב-GitHub (חדש או קיים). ודאו ש-Settings → Actions → General מראה "Allow all actions and reusable workflows". אם זה מוגדר אחרת — שנו את ההגדרה. זה הבסיס לכל מה שנבנה בפרק הזה.
התקנת claude-code-action@v1
יש שתי דרכים להתקין את claude-code-action: המהירה (דרך Claude Code עצמו) והידנית. שתיהן מגיעות לאותה תוצאה.
דרך מהירה: /install-github-app
פתחו Claude Code בטרמינל והריצו:
/install-github-app
Claude Code ינחה אתכם צעד אחר צעד: יתקין את ה-GitHub App, יגדיר secrets, ויצור workflow YAML ראשוני. זו הדרך הכי מהירה — פחות מ-5 דקות מהתחלה עד workflow פעיל.
דרך ידנית — שליטה מלאה
אם אתם מעדיפים להבין כל שלב:
- התקינו את ה-GitHub App: היכנסו ל-
github.com/apps/claudeוהתקינו על ה-repository שלכם. ה-App צריך הרשאות Read & Write על Contents, Issues, ו-Pull Requests. - הוסיפו secrets: ב-Settings → Secrets and variables → Actions, הוסיפו:
ANTHROPIC_API_KEY— המפתח שלכם מ-Anthropic. זהו ה-secret היחיד שחובה.
- צרו workflow: צרו קובץ
.github/workflows/claude-review.ymlעם התוכן הבא:
(1) הזחה ב-2 רווחים בלבד — לא 4, לא tab. (2) מפתח: ערך תמיד עם רווח אחרי הנקודתיים (key: value, לא key:value). (3) מחרוזות עם תווים מיוחדים ($, {, [) עוטפים במרכאות. מומלץ: התקינו תוסף YAML ב-VS Code (redhat.vscode-yaml) שמסמן שגיאות בזמן אמת.
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
issue_comment:
types: [created]
jobs:
review:
if: |
github.event_name == 'pull_request' ||
(github.event_name == 'issue_comment' &&
contains(github.event.comment.body, '@claude'))
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: claude-sonnet-4-6
ה-workflow הזה עושה שני דברים: (1) מריץ review אוטומטי על כל PR חדש או מעודכן, ו-(2) מגיב כשמישהו כותב @claude בתגובה ל-PR. ה-fetch-depth: 0 חשוב — בלעדיו, Claude לא יכול לקרוא את ההיסטוריה של הrepo.
Authentication methods
claude-code-action תומך במספר שיטות אימות:
| שיטה | מתי להשתמש |
|---|---|
| ANTHROPIC_API_KEY | ברירת מחדל — API key ישיר מ-Anthropic |
| Amazon Bedrock | ארגונים שמנתבים דרך AWS |
| Google Vertex AI | ארגונים שמנתבים דרך GCP |
| Microsoft Foundry | ארגונים שמנתבים דרך Azure |
לרוב המפתחים, ANTHROPIC_API_KEY מספיק. שיטות Bedrock/Vertex/Foundry רלוונטיות לארגונים גדולים עם cloud provider agreements.
בדיקת ההתקנה
- צרו branch חדש עם שינוי קטן (אפילו הוספת תגובה בקובץ)
- פתחו PR
- חכו 30-60 שניות
- Claude יפרסם תגובה עם ממצאי ה-review
אם Claude לא מגיב תוך 2 דקות — בדקו ב-Actions tab שה-workflow הופעל. אם הוא הופעל אבל נכשל — בדקו את ה-logs. הסיבות הנפוצות ביותר:
| בעיה | סימפטום | פתרון |
|---|---|---|
| ANTHROPIC_API_KEY חסר | Error: Missing API key | הוסיפו secret ב-Settings → Secrets |
| API key לא תקף | Error: 401 Unauthorized | בדקו שה-key פעיל ב-console.anthropic.com |
| Workflow לא הופעל | לא מופיע ב-Actions tab | ודאו שה-YAML ב-branch הנכון (main) |
| Permissions חסרים | Error: Resource not accessible | בדקו הרשאות ה-GitHub App |
| fetch-depth: 0 חסר | Claude לא רואה היסטוריה | הוסיפו fetch-depth: 0 ל-checkout step |
@claude Mentions — אינטראקציה מ-PR
בנוסף ל-review אוטומטי, claude-code-action מגיב כשמישהו כותב @claude בתגובה ל-PR. זה שימושי כשreviewer אנושי רוצה לשאול שאלה ספציפית:
@claude Is this change backward compatible?
@claude Can you suggest a more efficient algorithm for this function?
@claude Check if this migration is reversible
Claude קורא את ההקשר של ה-PR (diff, files, conversation history) ומגיב בתגובה. זה הופך אותו לחבר צוות זמין — כמו Senior Developer שאפשר לשאול שאלות 24/7.
תרחיש נפוץ: reviewer אנושי שואל "@claude what's the performance impact of this change?" — Claude מנתח את השינוי, מחפש potential bottlenecks, ומגיב בתוך 30 שניות. ה-reviewer מקבל תשובה מבוססת ניתוח קוד, לא ניחוש. זה במיוחד שימושי כשה-reviewer לא מכיר חלק מסוים מה-codebase — Claude כן מכיר כי הוא קורא הכל.
עוד דוגמאות לשימוש ב-@claude:
@claude explain the purpose of this function to a junior developer@claude write unit tests for the new endpoint added in this PR@claude check if this change is backward compatible with v1 API@claude translate the error messages in this PR to Hebrew
Progress Tracking
מגרסה 1.x של claude-code-action, יש progress indicators — תוך כדי שClaude עובד, אפשר לראות ב-PR אינדיקציה שהוא מנתח את הקוד. זה חשוב כי ב-repos גדולים, הanalysis יכול לקחת 30-90 שניות, ובלי אינדיקציה, developers לא יודעים אם Claude עדיין עובד או תקוע.
התקינו את claude-code-action: הריצו /install-github-app ב-Claude Code, או התקינו ידנית. הוסיפו ANTHROPIC_API_KEY כ-Repository Secret ב-Settings → Secrets.
צרו את קובץ ה-workflow YAML ב-.github/workflows/claude-review.yml. העתיקו את התוכן מלמעלה, עשו commit, ו-push ל-main.
מה קורה: במקום להשתמש ב-secret, מדביקים את ה-API key ישירות ב-YAML: anthropic_api_key: "sk-ant-...". ה-key חשוף לכל מי שיש לו גישה ל-repo — גם אם הוא "פרטי".
למה זה מפתה: "זה רק repo פרטי" או "אני רוצה לבדוק מהר".
מה לעשות במקום: תמיד השתמשו ב-${{ secrets.ANTHROPIC_API_KEY }}. GitHub מצפין secrets ומוודא שהם לא מופיעים ב-logs. הגדרת secret לוקחת 30 שניות וחוסכת בעיות אבטחה חמורות.
Automated Code Review על PRs
זהו ה-use case הראשי וגם הכי קל להתחיל איתו: כל PR שנפתח מקבל סקירת קוד מ-Claude לפני ש-reviewers אנושיים מסתכלים עליו. Claude מנתח את ה-diff, מבין את ההקשר של ה-codebase, ומפרסם ממצאים כתגובות — כולל inline comments על שורות ספציפיות.
מה Claude בודק
ברירת המחדל: Claude בודק הכל — אבטחה, נכונות, ביצועים, טסטים, תיעוד. אפשר למקד:
| קטגוריה | דוגמאות | חומרה |
|---|---|---|
| Security | SQL injection, XSS, authentication gaps, exposed secrets | CRITICAL/HIGH |
| Correctness | Logic bugs, edge cases, null handling, race conditions | HIGH |
| Performance | N+1 queries, unnecessary re-renders, memory leaks | MEDIUM |
| Test coverage | Missing tests for new code, untested edge cases | MEDIUM |
| Documentation | Missing docs for public APIs, outdated comments | LOW |
התאמה אישית דרך CLAUDE.md
הדרך הכי טובה למקד את ה-review היא דרך CLAUDE.md. Claude קורא אותו לפני שמנתח את ה-diff:
# ב-CLAUDE.md של הפרויקט
## CI/CD Context
When reviewing PRs in CI:
- Focus on security and correctness only
- Ignore style issues (we have eslint for that)
- Flag any changes to authentication or authorization code as HIGH priority
- Check for Hebrew string handling (RTL, Unicode)
- Verify error messages are user-friendly in both Hebrew and English
- If a database migration is missing for schema changes, flag as CRITICAL
Inline comments vs Summary
Claude מפרסם שני סוגי תגובות ב-PR:
- Inline comments: תגובות על שורות ספציפיות ב-diff — "שורה 42: הoperator צריך להיות
===ולא=, זה assignment במקום comparison" - Summary comment: תגובה כללית בראש ה-PR עם סיכום כל הממצאים מסודר לפי severity (CRITICAL, HIGH, MEDIUM, LOW)
Inline comments שימושיים יותר כי הם מצביעים בדיוק על הבעיה. ה-developer לא צריך לחפש — הוא רואה את התגובה ליד השורה הרלוונטית.
| רמה | מה לבדוק | מתי | עלות יחסית |
|---|---|---|---|
| Security | פרצות אבטחה, secrets חשופים | תמיד | גבוהה (Opus) |
| Correctness | באגים, edge cases, null handling | תמיד | בינונית (Sonnet) |
| Performance | N+1, memory leaks, slow queries | אם רלוונטי | בינונית |
| Style | naming, formatting, conventions | אם הצוות רוצה | נמוכה (Haiku) |
| Documentation | missing docs, outdated comments | אם API ציבורי | נמוכה |
התאמת ה-prompt: ככל שמורידים ברמות, Claude בודק פחות דברים, עולה פחות, ומחזיר פחות "רעש". ב-CI עם 50 PRs בשבוע, התמקדו ב-Security + Correctness בלבד — שאר הדברים יש לכם linter ו-formatter.
Path filtering — חיסכון קריטי
ב-repos גדולים, אין טעם שClaude ינתח package-lock.json עם 5,000 שורות שהשתנו. הוסיפו path filter:
on:
pull_request:
types: [opened, synchronize]
paths:
- 'src/**'
- 'lib/**'
- '!**/*.test.ts' # אל תסקור קבצי טסט
- '!**/package-lock.json' # התעלם מ-lock files
- '!**/*.generated.*' # התעלם מקוד שנוצר אוטומטית
Path filtering חוסך 80% מהעלות ב-repos עם הרבה generated code או dependency files, ובנוסף משפר את איכות ה-review — Claude מתמקד בקוד שבאמת חשוב.
Prompt engineering לreview טוב יותר
ה-prompt שנותנים ל-Claude משפיע ישירות על איכות ה-review. כמה עקרונות:
- ספציפיות: "review this code" → "review this code for SQL injection, XSS, and missing input validation" — prompt ספציפי נותן ממצאים ממוקדים
- פורמט פלט: בקשו severity rating (CRITICAL/HIGH/MEDIUM/LOW) כדי שה-developer ידע במה לטפל קודם
- הקשר: ספרו ל-Claude על הפרויקט — "This is a fintech application handling ILS payments" משנה את סדר העדיפויות
- קהל יעד: "We have junior developers on the team — flag anything that might be confusing" — Claude יתאים את רמת הפירוט
דוגמה לprompt מותאם שנותן תוצאות מעולות:
prompt: |
You are reviewing code for a Hebrew education platform.
The codebase handles: user auth, content management, and payments in ILS.
Review this PR diff and provide:
1. SECURITY: Any vulnerabilities (especially in auth and payment code)
2. CORRECTNESS: Logic bugs and edge cases
3. HEBREW/RTL: Issues with Hebrew text handling, RTL layout, or Unicode
For each finding:
- Quote the exact line
- Explain the issue in 1-2 sentences
- Suggest a fix
- Rate severity: CRITICAL / HIGH / MEDIUM / LOW
At the end, give an overall verdict: APPROVE / REQUEST_CHANGES / COMMENT_ONLY
Prompt כזה נותן review שהוא ממוקד, actionable, ומותאם לפרויקט שלכם — לא review גנרי שמתייחס לstyle.
צרו branch חדש, שנו קובץ (הוסיפו באג מכוון — למשל if (user.role = 'admin') במקום ===), פתחו PR, ובדקו אם Claude מזהה את הבאג ומפרסם inline comment.
מה קורה: Claude מנתח כל קובץ שהשתנה — כולל package-lock.json, build artifacts, ו-generated code. עלות של $3 לPR אחד במקום $0.20.
למה זה מפתה: "לא רוצה לפספס כלום".
מה לעשות במקום: סננו ל-src/, lib/, ו-api/ בלבד. התעלמו מ-lock files, generated code, ותיקיות assets. זה חוסך 80% מהעלות ומשפר את איכות ה-review כי Claude מתמקד בקוד שכתבתם.
זמן משוער: 25 דקות | עלות: $0.10-0.30
מה תבנו: Workflow פעיל שעושה code review אוטומטי על כל PR.
YAML מלא להעתקה — שמרו כ-.github/workflows/claude-review.yml:
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
issue_comment:
types: [created]
jobs:
review:
if: |
github.event_name == 'pull_request' ||
(github.event_name == 'issue_comment' &&
contains(github.event.comment.body, '@claude'))
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: claude-sonnet-4-6
שימו לב: YAML רגיש להזחה. כל שורה חייבת להיות ב-2 רווחים (לא tabs). העתיקו את הבלוק כמו שהוא.
- התקינו את Claude GitHub App דרך
/install-github-appאו ידנית (ראו סעיף Setup למעלה) - הוסיפו ANTHROPIC_API_KEY כ-Repository Secret: Settings → Secrets and variables → Actions → New repository secret
- צרו את קובץ ה-YAML:
mkdir -p .github/workflows && nano .github/workflows/claude-review.yml(הדביקו את ה-YAML למעלה) - Commit ו-push:
git add .github/workflows/claude-review.yml && git commit -m "Add Claude code review" && git push - הוסיפו section ל-CLAUDE.md עם הנחיות review ספציפיות לפרויקט שלכם
- צרו branch חדש עם באג מכוון:
git checkout -b test-review, הוסיפוif (x = 5)(assignment במקום comparison) בקובץ כלשהו, commit, push, ופתחו PR - חכו 30-60 שניות. בדקו ב-Actions tab שה-workflow רץ. בדקו ב-PR שClaude הגיב
תוצאה מצופה: Claude פרסם review comment עם ממצאים על ה-PR שלכם, כולל inline comment על הבאג.
לא עובד? בדקו: (1) Actions מופעל ב-repo settings, (2) ה-API key secret מוגדר, (3) ה-YAML תקין (אין טעויות הזחה), (4) ה-PR נפתח מ-branch ולא מ-main.
Security Audits ב-CI
Code review כללי הוא נהדר, אבל לעתים צריכים workflow מוקדש אבטחה בלבד — ממוקד, מעמיק, שרץ עם Opus (המודל החזק ביותר). Anthropic גם מציעים action ייעודי: anthropics/claude-code-security-review שמותאם במיוחד לסקירות אבטחה.
עלות: Security audit עם Opus עולה $0.50-2.00 לריצה. אם מוגדר על כל push בלי path filter — 10 pushes ביום = $5-20/יום. התחילו עם path filter (רק src/auth/**, src/api/**) והגבילו ל-push ל-main בלבד. אחרי שבדקתם שהעלות סבירה — הרחיבו בהדרגה.
Workflow לsecurity audit
name: Security Audit
on:
push:
branches: [main]
pull_request:
paths:
- 'src/auth/**'
- 'src/api/**'
- 'src/middleware/**'
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: claude-opus-4
prompt: |
Act as a senior security engineer. Review this diff for:
1. SQL injection risks
2. XSS vulnerabilities
3. Authentication and authorization flaws
4. Insecure data handling (exposed PII, unencrypted sensitive data)
5. Missing input validation
6. Insecure dependencies
For each finding, rate severity: CRITICAL / HIGH / MEDIUM / LOW
If any CRITICAL finding, start your response with "SECURITY ALERT"
שימו לב לשני דברים חשובים: (1) ה-security audit רץ על push ל-main (לא על כל PR) כי Opus יקר יותר. על PRs, הוא רץ רק כשמשנים קבצי auth/api/middleware. (2) ה-prompt מבקש severity rating ומגדיר trigger word ("SECURITY ALERT") שנשתמש בו ל-security gate.
OWASP Top 10 — מה Claude בודק
ה-prompt למעלה מכוון ל-OWASP Top 10, רשימת 10 הפרצות הנפוצות ביותר ביישומי ווב. הנה מה שClaude מחפש:
| OWASP Category | מה Claude מחפש | דוגמה |
|---|---|---|
| A01: Broken Access Control | endpoints חשופים, missing auth checks | API route בלי middleware אימות |
| A02: Cryptographic Failures | weak hashing, plaintext storage | סיסמאות ב-MD5 במקום bcrypt |
| A03: Injection | SQL injection, NoSQL injection, XSS | string concatenation ב-SQL query |
| A04: Insecure Design | missing rate limits, no CSRF protection | API בלי throttling |
| A05: Security Misconfiguration | debug mode on, default credentials | DEBUG=true ב-production env |
Claude לא רק מזהה patterns — הוא מבין הקשר. למשל, SQL injection ב-query שלא מקבל user input הוא סיכון נמוך יותר מ-SQL injection ב-search endpoint ציבורי. Claude מתעדף בהתאם.
שילוב עם כלים קיימים
Claude לא מחליף כלי security scanning — הוא משלים אותם. הנה דפוס חזק: הריצו npm audit או pip-audit קודם, ואז תנו ל-Claude לפרש את התוצאות ולתעדף:
- name: Run npm audit
run: npm audit --json > audit-results.json || true
- uses: anthropics/claude-code-action@v1
with:
prompt: |
I've run npm audit. Results are in audit-results.json.
Read the results and:
1. Prioritize vulnerabilities by actual risk to our application
2. Filter out false positives (dev-only deps that don't ship to production)
3. Suggest specific fix actions for the top 3 issues
Security Gate — חסימת merge אוטומטית
ה-"Security Gate" הוא הדפוס שחוסם merge כשClaude מזהה פרצה CRITICAL:
- name: Check for critical findings
run: |
REVIEW=$(gh pr view ${{ github.event.pull_request.number }} \
--json comments --jq '.comments[-1].body')
if echo "$REVIEW" | grep -q "SECURITY ALERT"; then
echo "::error::Critical security finding detected!"
exit 1
fi
ברגע שה-step נכשל, GitHub מסמן את ה-check כ-failed. אם הגדרתם Branch Protection Rules (Settings → Branches → Require status checks) — ה-merge חסום אוטומטית עד שהבעיה מתוקנת.
הגדרת Branch Protection
כדי שה-security gate באמת יחסום merge, צריך להפעיל Branch Protection:
- Settings → Branches → Add branch protection rule
- Branch name pattern:
main - סמנו "Require status checks to pass before merging"
- חפשו את שם ה-job מה-workflow (למשל "security")
- הוסיפו אותו כ-required check
מעכשיו, אף PR לא יכול להתמרג' ל-main בלי שה-security audit יעבור. זה שכבת הגנה חזקה שמונעת פרצות להגיע ל-production.
מתי להריץ security audit?
Security audit עם Opus עולה $0.50-2.00 להרצה. אם מריצים על כל PR — זה יקר. הגישה המומלצת:
| trigger | model | עלות | הסבר |
|---|---|---|---|
| כל PR | Sonnet | $0.10 | Basic security scan כחלק מcode review |
| PRs שמשנים auth/api | Opus | $1-2 | Deep scan רק על קוד רגיש |
| Push ל-main | Opus | $1-2 | Full audit על כל שינוי שנכנס ל-production |
| שבועי (cron) | Opus | $2-5 | Full codebase scan שבועי |
צרו workflow חדש: .github/workflows/security-audit.yml שמריץ security audit על push ל-main. השתמשו ב-prompt ממוקד אבטחה מהדוגמה למעלה.
זמן משוער: 20 דקות
מה תבנו: Security audit workflow עם security gate.
- צרו
.github/workflows/security-audit.yml - הגדירו trigger על push ל-main ועל PRs שמשנים קבצי auth/api
- כתבו prompt אבטחה ממוקד עם severity rating
- הוסיפו security gate step שחוסם merge על CRITICAL findings
- בדקו: push שינוי ל-branch עם potential security issue, פתחו PR
- אמתו שClaude מזהה את הבעיה ושה-gate step פועל כצפוי
תוצאה מצופה: Security audit שרץ אוטומטית ומסוגל לחסום merge.
Release Notes אוטומטיים
כל פעם שאתם עושים release חדש, צריך לכתוב release notes. זו משימה שכולם דוחים כי היא "לא מעניינת" — ולכן היא מושלמת ל-Claude. הוא קורא את ה-commits, מבין את השינויים, ומייצר notes מסודרים בפורמט ברור.
Workflow לrelease notes
name: Release Notes
on:
push:
tags: ['v*']
jobs:
release-notes:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get commits since last tag
id: commits
run: |
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
if [ -z "$PREV_TAG" ]; then
COMMITS=$(git log --oneline)
else
COMMITS=$(git log --oneline $PREV_TAG..HEAD)
fi
echo "commits<> $GITHUB_OUTPUT
echo "$COMMITS" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: claude-sonnet-4-6
prompt: |
Generate release notes from these commits:
${{ steps.commits.outputs.commits }}
Organize by: New Features, Improvements, Bug Fixes, Breaking Changes.
Use clear, non-technical language where possible.
Generate in both English and Hebrew.
העשרת notes עם PR data
Commits לבד נותנים תמונה חלקית. הוסיפו גם נתוני PRs שמורגו:
- name: Enrich with PR data
run: |
gh pr list --state merged --base main --json title,body,labels \
--jq '.[] | "PR: \(.title)\nLabels: \(.labels | map(.name) | join(", "))"' \
> pr-data.txt
- uses: anthropics/claude-code-action@v1
with:
prompt: |
Generate release notes using both the commit log and PR descriptions.
Commits: ${{ steps.commits.outputs.commits }}
PR data is in pr-data.txt - read it.
Prioritize: what matters to users, not internal refactoring.
Multi-language release notes
עבור פרויקטים עם קהל ישראלי, Claude יכול לייצר release notes בעברית ובאנגלית:
prompt: |
Generate release notes in TWO sections:
## English
[English release notes here]
## עברית
[Hebrew release notes here - natural Hebrew, not a word-for-word translation]
Claude מייצר עברית טבעית, לא תרגום מילולי. זה חוסך את הצורך בתרגום נפרד ומבטיח שה-release notes בעברית קוראות טבעי. חשוב: הוסיפו הנחיה "not a word-for-word translation" כי אחרת Claude עלול לתרגם מילולית.
יצירת GitHub Release אוטומטית
אפשר גם ליצור GitHub Release מלא אוטומטית (לא רק notes):
- name: Create Release
run: |
NOTES=$(claude -p "Generate release notes from: $(git log --oneline $PREV_TAG..HEAD)" --bare)
gh release create ${{ github.ref_name }} \
--title "Release ${{ github.ref_name }}" \
--notes "$NOTES" \
--generate-notes
ה-flag --generate-notes מוסיף גם את ה-auto-generated notes של GitHub, כך שמקבלים שילוב של notes אוטומטיים + notes של Claude.
Semantic versioning automation
Claude יכול גם להציע את ה-version הבא:
- uses: anthropics/claude-code-action@v1
with:
prompt: |
Current version: ${{ github.ref_name }}
Based on these changes, suggest the next version:
- MAJOR: breaking changes
- MINOR: new features
- PATCH: bug fixes only
Respond with just the version number (e.g., v1.2.3)
הריצו: git log --oneline HEAD~10..HEAD | claude -p "write concise release notes from these commits, categorized by: Features, Fixes, Other" --bare
זה הבסיס למה שה-workflow עושה אוטומטית.
זמן משוער: 20 דקות
מה תבנו: Pipeline שמייצר release notes על כל tag push.
- צרו
.github/workflows/release-notes.ymlעם trigger עלv*tags - הוסיפו step שמחלץ commits מאז ה-tag הקודם
- הוסיפו claude-code-action step עם prompt ממוקד
- לחלופין: הוסיפו step שיוצר GitHub Release אוטומטית
- צרו tag לבדיקה:
git tag v0.1.0-test && git push --tags - בדקו ב-Actions tab שה-workflow רץ ושה-notes נוצרו
תוצאה מצופה: Release notes שנוצרו אוטומטית מ-Claude ופורסמו כ-GitHub Release.
Issue-to-PR Automation
רמת סיכון: גבוהה למתחילים. Workflow הזה יוצר קוד ופותח PRs אוטומטית. אם מוגדר לא נכון, כל issue חדש ב-repo שלכם יפתח PR אוטומטי — גם על issues שלא מתאימים. התחילו רק אחרי שCode Review עובד לכם לפחות שבוע.
רשת ביטחון חובה: (1) הגבילו ל-label ספציפי (claude-auto), (2) תמיד Draft PR (לא merge אוטומטי), (3) דרשו review אנושי, (4) התחילו עם issues קטנים ("fix typo", "add comment") ובנו אמון.
ה-dream workflow: מישהו יוצר GitHub issue שמתאר באג או feature, Claude קורא את ה-issue, מנתח את ה-codebase, מייצר branch, מיישם את השינויים, מריץ tests, ופותח PR. הכל אוטומטית.
Setup
name: Issue to PR
on:
issues:
types: [labeled]
jobs:
implement:
if: contains(github.event.label.name, 'claude-auto')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: claude-sonnet-4-6
trigger: 'issue'
ה-trigger: כשמישהו מוסיף label claude-auto ל-issue, ה-workflow נדלק. Claude קורא את תיאור ה-issue, מנתח את ה-codebase, ופותח Draft PR עם השינויים.
מה עובד ומה לא
| עובד טוב | לא עובד טוב |
|---|---|
| באגים עם reproduction steps ברורים | שינויים ארכיטקטוניים |
| Feature requests קטנים וממוקדים | Issues עמומים ("make it faster") |
| משימות "good first issue" | שינויים שדורשים design decisions |
| Documentation updates | Multi-repo changes |
| Issues בעברית (Claude מבין ומתרגם לקוד) | Issues שתלויים ב-external services |
דפוס ה-Draft PR: Claude תמיד פותח כ-Draft PR — בן אדם חייב לאשר ולהפוך ל-Ready for Review. זו רשת ביטחון קריטית. בלי זה, קוד שClaude כתב יכול להגיע ל-production בלי review אנושי.
Issues בעברית
Claude מבין עברית מצוין. אפשר לכתוב issues בעברית ו-Claude יייצר PR עם קוד באנגלית ותיאור דו-לשוני:
Issue title: באג - כפתור ההרשמה לא עובד במובייל
Issue body:
כשלוחצים על כפתור "הרשמה" במסך הטלפון, שום דבר לא קורה.
צעדים לשחזור:
1. פתחו את האתר בטלפון
2. לחצו על "הרשמה"
3. הטופס לא נפתח
צפוי: הטופס אמור להיפתח כ-modal
Claude יקרא את ה-issue בעברית, ינתח את ה-codebase, ימצא את ה-bug (כנראה event handler שלא עובד על touch events), ויפתח PR עם התיקון — כולל תיאור PR בשתי השפות.
בניית אמון הדרגתית
אל תתחילו עם Issue-to-PR על features מורכבים. הגישה המומלצת:
- שבוע 1: התחילו עם "good first issue" — באגים קטנים עם reproduction steps ברורים
- שבוע 2: הרחיבו ל-documentation updates ותיקוני typos
- שבוע 3: נסו features קטנים (הוספת field לטופס, שינוי text)
- שבוע 4: הערכת ROI — כמה PRs הצליחו? כמה נזרקו? שווה?
ככל שצוברים אמון, אפשר להרחיב את ה-scope. אבל תמיד — Draft PR + human review + tests passing לפני merge.
מה קורה: Claude מנסה ליישם issue מורכב מדי, פותח PR עם קוד לא שלם, וצוות מבזבז זמן ב-review של PR חסר ערך.
למה זה מפתה: "בוא נאוטמט הכל!"
מה לעשות במקום: הגבילו ל-issues עם label ספציפי. תמיד Draft PR. הריצו tests אוטומטיים. דרשו review אנושי. התחילו עם "good first issue" ובנו אמון בהדרגה.
CLAUDE.md ב-CI Pipelines
CLAUDE.md הוא ה-single source of truth להתנהגות של Claude — וזה תקף גם ב-CI. כשClaude רץ ב-GitHub Actions, הוא קורא את CLAUDE.md מה-repository ומתנהג לפיו. זה אומר שהצוות שלכם יכול לשלוט בהתנהגות של ה-AI reviewer דרך commit לrepo — בלי לשנות workflow YAML.
סעיפים ספציפיים ל-CI
# ב-CLAUDE.md
## CI/CD Context
When running in CI (detected by CI=true environment variable):
- Focus on security and correctness only
- Do not suggest style changes (we have eslint)
- Default to safe choices when uncertain
- Skip interactive prompts
- Flag changes to database schemas that lack a migration
- Check for breaking changes in public APIs
ה-rules directory — הנחיות מותנות
CLAUDE.md מכיל הנחיות כלליות. לפעמים צריכים הנחיות שמופעלות רק כשClaude קורא סוג מסוים של קבצים. ליצור הנחיות מותנות ב-.claude/rules/:
# .claude/rules/ci-review.md
---
description: Rules for automated CI code review
globs:
- "src/**/*.ts"
- "src/**/*.tsx"
---
When reviewing TypeScript code:
- Verify all function parameters have explicit types
- Check for proper error handling (no uncaught promises)
- Verify that new API endpoints have input validation
- Check for proper null/undefined handling
# .claude/rules/ci-security.md
---
description: Security review rules activated for auth code
globs:
- "src/auth/**"
- "src/api/**"
---
When reviewing security-sensitive code:
- Verify all endpoints require authentication
- Check for proper RBAC (Role-Based Access Control)
- Verify sensitive data is not logged
- Check for SQL injection in raw queries
- Verify bcrypt/argon2 for password hashing
הקבצים האלה נטענים אוטומטית כשClaude קורא קבצים שתואמים את ה-globs. זה אומר שreview של קוד auth מקבל הנחיות אבטחה אוטומטית — בלי שתצטרכו לציין את זה ב-workflow YAML.
Environment-aware instructions
אפשר גם להוסיף הנחיות שמופעלות רק ב-CI (ולא בשימוש אינטראקטיבי):
# ב-CLAUDE.md
## CI-Only Rules
If the environment variable CI=true (which GitHub Actions sets automatically):
- Never ask for confirmation — make safe choices automatically
- Log all decisions to the PR comment
- If uncertain about a finding, mark it as "POSSIBLE" instead of hiding it
- Include cost/token info in the summary
GitHub Actions מגדיר אוטומטית CI=true, כך שClaude יכול לזהות שהוא רץ ב-CI ולהתנהג בהתאם. זה שימושי כשרוצים שClaude יהיה "יותר explicit" ב-CI (כי אין בן אדם שמסתכל בזמן אמת) אבל "יותר חוסך" באינטראקטיבי.
שיתוף הגדרות בצוות
CLAUDE.md ו-.claude/rules/ הם קבצים רגילים ב-repo — כל שינוי שם עובר PR review ומגיע לכל המפתחים. זה אומר שהצוות שלכם שולט בהתנהגות של ה-AI reviewer דרך קוד, לא דרך הגדרות חיצוניות. אם מישהו רוצה לשנות את מה שClaude בודק — הוא פותח PR שמשנה את CLAUDE.md, הצוות מאשר, וההנחיות החדשות נכנסות לתוקף מיידית בכל CI run.
דפוס ה-Iterative Improvement
ה-workflow הכי אפקטיבי לשיפור CLAUDE.md:
- Claude נותן review עם false positive (ממצא לא רלוונטי)
- Developer מזהה ומתעד — "Claude keeps flagging console.log as security issue in test files"
- שינוי CLAUDE.md: "Do not flag console.log in test files (**/*.test.ts)"
- PR + review: הצוות מאשר את השינוי
- מעכשיו: Claude לא מדווח על console.log בtests
אחרי כמה שבועות של iterations, CLAUDE.md שלכם הופך לאמין מאוד — Claude בודק בדיוק מה שחשוב לפרויקט שלכם ומתעלם מדברים שאינם רלוונטיים. זה כמו "לאמן" reviewer חדש, רק שהlogs שלו (CLAUDE.md) שקופים לכל הצוות.
הוסיפו סעיף ## CI/CD Context ל-CLAUDE.md שלכם עם לפחות 3 הנחיות ספציפיות לcode review. עשו commit ו-push. מעכשיו, כל review אוטומטי ישתמש בהנחיות האלה.
צרו קובץ .claude/rules/ci-review.md עם YAML frontmatter שמגדיר globs לקבצי הsource שלכם. הוסיפו לפחות 2 כללי review.
Workflows מותאמים אישית — מעבר ל-Code Review
Code review ו-security audit הם רק ההתחלה. הנה עוד תרחישים שבהם Claude Code ב-CI מביא ערך:
Documentation sync
על כל merge ל-main, Claude בודק אם קוד ה-API השתנה ומעדכן docs:
prompt: "Check if any API endpoints changed in this commit. If yes, update the corresponding docs in docs/api/. Create a PR with the doc updates."
Changelog maintenance
Claude מוסיף שורה ל-CHANGELOG.md לפי ה-PR description:
prompt: "Read the PR description and add an entry to CHANGELOG.md under 'Unreleased'. Format: '- [TYPE] description'. TYPE = Added/Changed/Fixed/Removed."
i18n validation — חשוב לפרויקטים עם עברית
Claude בודק שכל מחרוזת חדשה שפונה למשתמש מתורגמת:
prompt: "Check if any new user-facing strings were added. Verify they exist in locales/he.json with Hebrew translations. Flag any missing translations."
Test generation
כשקוד חדש נכנס בלי טסטים, Claude מייצר stubs:
prompt: "For each new function in this PR that lacks tests, generate a test file with the basic structure: describe block, test cases for happy path and edge cases."
Dependency update review
כש-Dependabot פותח PR, Claude בודק changelog ומעריך סיכון:
prompt: "This PR updates a dependency. Fetch the changelog. Assess: (1) breaking changes? (2) security fixes? (3) risk level for our codebase. Recommend: merge / review manually / skip."
Migration validation
Claude בודק שmigrations חדשות בטוחות:
prompt: "Review the database migration files in this PR. Check: (1) Is it reversible? (2) Does it lock large tables? (3) Is there data loss risk? (4) Is there a corresponding down migration?"
Performance regression detection
אם יש לכם benchmark suite, Claude יכול לנתח את התוצאות:
prompt: "Read benchmark-results.json (current) and benchmark-baseline.json (main). Flag any test that regressed by more than 10%. Explain possible causes for each regression."
דוגמה מלאה: workflow משולב
הנה workflow שמשלב code review, documentation check, ו-test coverage בjob אחד:
name: Claude Full Review
on:
pull_request:
types: [opened, synchronize]
paths: ['src/**']
jobs:
full-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run tests with coverage
run: npm test -- --coverage --coverageReporters=json-summary
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: claude-sonnet-4-6
prompt: |
Perform a comprehensive review:
1. CODE REVIEW: Check for bugs, security issues, and edge cases in the diff
2. TEST COVERAGE: Read coverage/coverage-summary.json.
Flag any new code with less than 80% coverage
3. DOCUMENTATION: If any public API changed, verify docs are updated
4. MIGRATION CHECK: If any schema files changed,
verify a corresponding migration exists
Format your response with clear ## headers for each section.
Rate each section: PASS / NEEDS_WORK / FAIL
עם workflow אחד וprompt מובנה, אתם מקבלים review מקיף שכולל 4 סוגי בדיקות שונות — מה שבדרך כלל דורש 4 כלים נפרדים.
חשבו על workflow אחד שיעזור לפרויקט שלכם. כתבו 3 שורות: (1) Trigger — מה מפעיל, (2) Action — מה Claude עושה, (3) Output — מה התוצאה. זה יהיה הבסיס לתרגיל הבא.
זמן משוער: 25 דקות | עלות: $0.10-0.50
מה תבנו: Workflow מותאם שפותר צורך אמיתי.
שלד YAML להתחלה — העתיקו והתאימו:
name: My Custom Workflow
on:
# שנו את ה-trigger לפי הצורך:
# push: { branches: [main] }
# pull_request: { types: [opened] }
# schedule: [{ cron: '0 8 * * 1' }] # כל יום שני ב-8 בבוקר
pull_request:
types: [opened, synchronize]
jobs:
custom-task:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: claude-sonnet-4-6
# שנו את ה-prompt:
direct_prompt: |
YOUR TASK HERE.
Format output with ## headers.
- בחרו צורך: documentation sync, changelog, i18n, test generation, migration validation, או אחר
- הגדירו trigger: on push? on PR? on schedule? on label?
- כתבו prompt ממוקד — מה בדיוק Claude צריך לעשות ובאיזה פורמט
- התאימו את השלד למעלה — שנו trigger ו-prompt
- שמרו ב-
.github/workflows/, commit, push, והפעילו - תעדו: trigger, action, output, עלות להרצה, ROI משוער
תוצאה מצופה: Workflow פעיל שעושה משהו שימושי אמיתי בפרויקט.
שליטה בעלויות CI
CI runs יכולים להפוך ליקרים מהר אם לא מתכננים. 50 PRs בשבוע כפול $0.30 לPR = $60 בחודש רק ל-reviews. מוסיפים security audits עם Opus? המספרים מטפסים. חובה לתכנן מראש.
Model selection strategy
| סוג workflow | מודל | עלות/הרצה | הסבר |
|---|---|---|---|
| Code review רגיל | Sonnet | $0.10-0.20 | מספיק חכם ל-90% מהreviews |
| Security audit | Opus | $0.50-2.00 | שווה את ההשקעה — פרצות עולות הרבה יותר |
| Release notes | Sonnet | $0.05-0.15 | משימה סטנדרטית, לא צריך Opus |
| Issue triage | Haiku | $0.01-0.05 | סיווג פשוט — Haiku מספיק |
| Lint-like checks | Haiku | $0.01-0.03 | בדיקות מכניות, לא צריך intelligence |
כלל הזהב: השתמשו במודל הזול ביותר שנותן תוצאות מספיק טובות. Sonnet מצטיין ב-90% מהreviews. Opus רק ל-security.
| מרכיב | חישוב |
|---|---|
| Reviews לחודש | PRs בשבוע x 4 |
| טוקנים ממוצעים | ~5,000-20,000 per review |
| מחיר (Sonnet) | ~$6/M tokens (in+out) |
| מחיר (Opus) | ~$30/M tokens (in+out) |
| עלות חודשית | reviews x tokens/1M x price |
דוגמה: 120 reviews/חודש x 10K tokens x $6/M = $7.20/חודש עם Sonnet. אותה עבודה עם Opus = $36/חודש. ההפרש פי 5 מסביר למה model selection חשוב.
טקטיקות חיסכון
- Path filtering: רק קבצים שהשתנו, לא package-lock.json (חוסך 80%+)
- Tiered review: Haiku ל-basic checks, Sonnet ל-full review, Opus ל-security בלבד
- Caching: אם אותם קבצים לא השתנו מאז review אחרון — דלגו
- MAX_THINKING_TOKENS=8192: ב-CI, רוב המשימות לא צריכות deep thinking
- Budget alerts: עקבו אחרי עלויות, הגדירו alert ב-80% מהתקציב החודשי
- Conditional triggers: security audit רק על PRs שמשנים קוד רגיש — לא על README fixes
מעקב עלויות בפועל
אפשר להוסיף step ל-workflow שמתעד את העלות:
- name: Log cost
if: always()
run: |
echo "$(date),claude-review,${{ github.event.pull_request.number }},$COST" \
>> $GITHUB_WORKSPACE/ci-costs.csv
# לחלופין: שלחו webhook עם נתוני העלות
# curl -s "$COST_WEBHOOK" -d '{"workflow":"review","cost":"$COST"}'
ברמה בסיסית יותר, אפשר פשוט לבדוק את ה-Anthropic Console שמראה usage per API key, ולהגדיר spending limits:
- היכנסו ל-
console.anthropic.com - Settings → Billing → Usage
- ראו usage breakdown לפי יום, שבוע, חודש
- הגדירו spending limit כדי שה-API key יפסיק לעבוד אם חורגים מתקציב
טיפ: Conditional model selection
אפשר לבחור model דינמית בתוך ה-workflow, לפי סוג השינויים:
- name: Choose model
id: model
run: |
if git diff --name-only ${{ github.event.pull_request.base.sha }} | grep -qE "^src/(auth|security|crypto)/"; then
echo "model=claude-opus-4" >> $GITHUB_OUTPUT
echo "Using Opus for security-sensitive changes"
else
echo "model=claude-sonnet-4-6" >> $GITHUB_OUTPUT
echo "Using Sonnet for standard review"
fi
- uses: anthropics/claude-code-action@v1
with:
model: ${{ steps.model.outputs.model }}
כך שינויים ב-auth/ מקבלים Opus אוטומטית, וכל השאר — Sonnet. חיסכון חכם שלא מתפשר על אבטחה.
חשבו נוסחת עלות עבור הצוות/פרויקט שלכם: כמה PRs בשבוע x מודל x עלות ממוצעת x 4 = עלות חודשית. האם זה סביר ביחס לערך שתקבלו?
התאמה למערכות CI אחרות
לא כולם משתמשים ב-GitHub. החדשות הטובות: claude -p --bare עובד בכל מערכת CI שתומכת בהרצת shell commands — וזה כולן.
| מערכת | איך להריץ Claude | ניהול secrets |
|---|---|---|
| GitLab CI | claude -p --bare ב-.gitlab-ci.yml | CI/CD Variables |
| Jenkins | Shell step ב-Jenkinsfile pipeline | Jenkins Credentials Store |
| CircleCI | Raw shell step (או Orb) | Environment Variables |
| Bitbucket | Script step או custom pipe | Repository Variables |
| Azure DevOps | Script task ב-YAML pipeline | Azure Key Vault |
דוגמה: GitLab CI
# .gitlab-ci.yml
code-review:
stage: review
image: node:20
script:
- npm install -g @anthropic-ai/claude-code
- git diff origin/main...HEAD | claude -p "review this code change for bugs and security issues" --bare
variables:
ANTHROPIC_API_KEY: $ANTHROPIC_API_KEY
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
דוגמה: Jenkins
// Jenkinsfile
pipeline {
agent { docker { image 'node:20' } }
environment {
ANTHROPIC_API_KEY = credentials('anthropic-api-key')
}
stages {
stage('Claude Review') {
steps {
sh 'npm install -g @anthropic-ai/claude-code'
sh '''
git diff origin/main...HEAD | \
claude -p "review this code change" --bare \
> review-output.txt
'''
archiveArtifacts 'review-output.txt'
}
}
}
}
דוגמה: CircleCI
# .circleci/config.yml
version: 2.1
jobs:
claude-review:
docker:
- image: node:20
steps:
- checkout
- run:
name: Install Claude Code
command: npm install -g @anthropic-ai/claude-code
- run:
name: Run review
command: |
git diff origin/main...HEAD | \
claude -p "review this code for security and correctness" --bare
הדפוס האוניברסלי
בכל מערכת CI, הדפוס זהה:
- התקינו Claude Code (
npm install -g @anthropic-ai/claude-code) - הגדירו ANTHROPIC_API_KEY כ-secret/environment variable
- הריצו
claude -p "your prompt" --bare - פרסקו את הפלט ופעלו בהתאם (שמרו, העבירו, התנו)
ה-point החשוב: כל מערכת CI תומכת ב-"run a shell command". ו-claude -p --bare הוא בדיוק shell command. אתם לא צריכים integration מיוחדת — אתם צריכים רק להתקין ולהריץ. ההשקעה הכי גדולה היא לא בtechnical setup אלא ב-prompt engineering — לכתוב prompts שנותנים תוצאות מועילות.
היתרון של claude-code-action@v1: inline comments, PR interaction, @claude mentions, progress indicators. אם אתם ב-GitHub — השתמשו ב-action. אם לא — ה-CLI עובד מעולה עם כל מערכת CI.
Docker עם Claude Code מותקן מראש
ב-CI systems שמשתמשים ב-Docker, אפשר ליצור image שכבר מותקן עם Claude Code:
# Dockerfile.claude-ci
FROM node:20-slim
RUN npm install -g @anthropic-ai/claude-code
# Add your project's dependencies
COPY package*.json ./
RUN npm ci
זה חוסך את זמן ההתקנה בכל CI run — במקום להתקין Claude Code כל פעם (שלוקח 10-20 שניות), ה-image מוכן. שימושי במיוחד ב-Jenkins ו-CircleCI שבהם Docker images הם הדרך המומלצת.
הגבלת כלים ב-CI — security best practice
כשClaude רץ ב-CI, הוא יכול לעשות הכל שClaude Code רגיל יכול — לקרוא קבצים, להריץ פקודות, לכתוב קבצים. ב-CI, כדאי להגביל את הכלים:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
allowed_tools: "Read,Grep,Glob" # קריאה בלבד — לא Write, Edit, Bash
הגבלת כלים ל-Read/Grep/Glob אומרת שClaude יכול לנתח קוד ולהגיב, אבל לא יכול לשנות קבצים, להריץ פקודות, או לגשת לרשת. זו הגנה חשובה — במיוחד על repos ציבוריים שבהם תוקפים יכולים לפתוח PR עם prompt injection שמנסה להשתמש ב-Claude כנקודת תורפה.
שגרת עבודה — CI/CD
| תדירות | משימה | כמה זמן |
|---|---|---|
| יומי | בדקו ב-Actions tab שכל ה-workflows רצים בהצלחה — אין failures | 2 דקות |
| יומי | סקרו reviews של Claude — האם הם מועילים או מייצרים רעש? | 5 דקות |
| שבועי | בדקו עלויות: כמה tokens נצרכו? עומדים בתקציב? | 5 דקות |
| שבועי | עדכנו CLAUDE.md/.claude/rules/ אם נמצאו false positives חוזרים | 10 דקות |
| שבועי | תעדו כל מקרה שClaude תפס באג אמיתי — זה ה-ROI שלכם | 5 דקות |
| חודשי | סקרו ROI: כמה באגים Claude תפס? כמה זמן חסך? שווה? | 30 דקות |
| חודשי | שקלו model upgrade/downgrade לפי ביצועים ועלות | 15 דקות |
בנוסף לשגרת פרק 1: ניטור headless scripts, לוגים, ניקוי worktrees
אם אתם עושים רק דבר אחד מהפרק הזה
התקינו claude-code-action@v1 על repository אחד, הוסיפו ANTHROPIC_API_KEY כ-secret, צרו workflow YAML בסיסי, ופתחו PR אחד לבדיקה. ברגע שClaude מגיב עם review comment — הקמתם AI-powered code review שירוץ על כל PR מעכשיו ואילך, אוטומטית, 24/7.
בדוק את עצמך
- למה חשוב להשתמש ב-Repository Secrets ולא לשים API key ישירות ב-YAML? (רמז: מי יכול לקרוא YAML files ב-repo?)
- מתי כדאי להשתמש ב-Opus במקום Sonnet ב-CI, ולמה לא תמיד? (רמז: ההפרש בעלות פי 5, ובאיזה סוג בעיות Opus באמת עדיף)
- מה ה-Draft PR pattern ולמה הוא חשוב ב-Issue-to-PR automation? (רמז: מה קורה אם Claude טועה וה-PR ממורג' ישירות?)
- איך path filtering חוסך עלויות CI ומשפר את איכות ה-review? (רמז: חשבו על package-lock.json עם 5,000 שורות ששינו שורה אחת)
- מה ההבדל בין CLAUDE.md ל-.claude/rules/ files, ומתי להשתמש בכל אחד? (רמז: הנחיות כלליות שתמיד פעילות vs הנחיות מותנות שנטענות לפי glob patterns)
4 מתוך 5 נכונות = עברתם
סיכום הפרק
בפרק הזה הפכתם את Claude Code מכלי שרץ מסקריפטים לחלק אינטגרלי מה-CI/CD pipeline שלכם. ראיתם ש-claude-code-action@v1 מאפשר code review אוטומטי על כל PR — עם inline comments שמצביעים בדיוק על הבעיה. בניתם security audit workflow עם security gate שחוסם merge כשClaude מזהה פרצה CRITICAL, ו-release notes pipeline שמייצר notes מסודרים אוטומטית על כל tag push. למדתם גם לשלוט בעלויות דרך model selection strategy — Sonnet לreviews רגילים, Opus רק ל-security, Haiku לbdikot מכניות. הדבר הכי חשוב: ההשקעה מחזירה את עצמה — עלות של שקלים בודדים על כל PR חוסכת שעות של review אנושי. בפרק הבא נעבור מ-CLI ל-Agent SDK ב-Python — תבנו agents שמשתמשים ב-Claude כמנוע AI בתוך הקוד שלכם, עם גישה מלאה לקבצים, shell, ו-MCP.
צ׳קליסט סיום
- ☐ התקנתי claude-code-action@v1 על repository
- ☐ הוספתי ANTHROPIC_API_KEY כ-Repository Secret
- ☐ יצרתי workflow YAML ל-code review אוטומטי
- ☐ פתחתי PR וקיבלתי review comment מ-Claude
- ☐ יצרתי security audit workflow עם prompt ממוקד OWASP
- ☐ הוספתי security gate step שבודק CRITICAL findings
- ☐ יצרתי release notes workflow שרץ על tag push
- ☐ הוספתי CI/CD Context section ל-CLAUDE.md
- ☐ יצרתי לפחות rule file אחד ב-.claude/rules/
- ☐ יצרתי custom workflow שפותר צורך אמיתי בפרויקט
- ☐ חישבתי את העלות החודשית של ה-CI workflows שלי
- ☐ הגדרתי path filters ב-workflows לחיסכון בעלויות