2 שלב הבסיס

GitHub Actions and CI/CD — אוטומציה ב-CI/CD עם GitHub Actions

בפרק הקודם למדתם להריץ Claude Code ב-headless mode מסקריפטים ו-cron jobs. עכשיו אתם לוקחים את זה צעד קדימה: Claude Code נכנס ל-CI/CD pipeline — כל PR מקבל code review אוטומטי, כל push ל-main עובר security audit, וכל release מקבל release notes מסודרים. הכל בלי שום בן אדם בלופ.

מה יהיה לכם בסוף הפרק הזה
יעדי למידה
דרישות קדם
הפרויקט שלכם

בפרק 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 בתוך הקוד שלכם.

מילון מונחים — GitHub Actions ו-CI/CD
מונח (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טריגר PRtrigger שמפעיל workflow כשנפתח או מתעדכן PR — הבסיס ל-automated code review
Inline Commentsתגובות בקודתגובות ישירות על שורות קוד ספציפיות ב-PR diff — מצביעות בדיוק על הבעיה
Security Gateשער אבטחהמנגנון שחוסם merge אם נמצאה פרצה CRITICAL ומוסיף label אם נמצא WARNING
OWASP Top 1010 פרצות נפוצותרשימת 10 פרצות האבטחה הנפוצות ביותר ביישומי ווב — SQL injection, XSS, ועוד
Draft PRPR טיוטהPR שעדיין לא מוכן ל-review — צריך אישור ידני לפני שהוא Ready for Review. רשת ביטחון חשובה
Tiered Reviewסקירה מדורגתאסטרטגיית עלות: Haiku ל-lint checks, Sonnet ל-full review, Opus רק ל-security audits
מתחיל 10 דקות מושג חינם

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

כדי להבין את הטווח של מה שאפשר, הנה כמה תרחישים נפוצים:

כל התרחישים האלה משתמשים באותו 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 ומעלה.

מסגרת החלטה: משוואת הערך של CI
מרכיבחישובדוגמה
זמן שנחסך למפתח ל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" אוטומטי.

עשו עכשיו 2 דקות

פתחו repository ב-GitHub (חדש או קיים). ודאו ש-Settings → Actions → General מראה "Allow all actions and reusable workflows". אם זה מוגדר אחרת — שנו את ההגדרה. זה הבסיס לכל מה שנבנה בפרק הזה.

מתחיל 15 דקות הקמה חינם

התקנת 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 פעיל.

דרך ידנית — שליטה מלאה

אם אתם מעדיפים להבין כל שלב:

  1. התקינו את ה-GitHub App: היכנסו ל-github.com/apps/claude והתקינו על ה-repository שלכם. ה-App צריך הרשאות Read & Write על Contents, Issues, ו-Pull Requests.
  2. הוסיפו secrets: ב-Settings → Secrets and variables → Actions, הוסיפו:
    • ANTHROPIC_API_KEY — המפתח שלכם מ-Anthropic. זהו ה-secret היחיד שחובה.
  3. צרו workflow: צרו קובץ .github/workflows/claude-review.yml עם התוכן הבא:
YAML — 3 כללים שחוסכים שעות debug

(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.

בדיקת ההתקנה

  1. צרו branch חדש עם שינוי קטן (אפילו הוספת תגובה בקובץ)
  2. פתחו PR
  3. חכו 30-60 שניות
  4. 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:

Progress Tracking

מגרסה 1.x של claude-code-action, יש progress indicators — תוך כדי שClaude עובד, אפשר לראות ב-PR אינדיקציה שהוא מנתח את הקוד. זה חשוב כי ב-repos גדולים, הanalysis יכול לקחת 30-90 שניות, ובלי אינדיקציה, developers לא יודעים אם Claude עדיין עובד או תקוע.

עשו עכשיו 5 דקות

התקינו את claude-code-action: הריצו /install-github-app ב-Claude Code, או התקינו ידנית. הוסיפו ANTHROPIC_API_KEY כ-Repository Secret ב-Settings → Secrets.

עשו עכשיו 3 דקות

צרו את קובץ ה-workflow YAML ב-.github/workflows/claude-review.yml. העתיקו את התוכן מלמעלה, עשו commit, ו-push ל-main.

טעות נפוצה: שמירת API key ב-workflow YAML

מה קורה: במקום להשתמש ב-secret, מדביקים את ה-API key ישירות ב-YAML: anthropic_api_key: "sk-ant-...". ה-key חשוף לכל מי שיש לו גישה ל-repo — גם אם הוא "פרטי".

למה זה מפתה: "זה רק repo פרטי" או "אני רוצה לבדוק מהר".

מה לעשות במקום: תמיד השתמשו ב-${{ secrets.ANTHROPIC_API_KEY }}. GitHub מצפין secrets ומוודא שהם לא מופיעים ב-logs. הגדרת secret לוקחת 30 שניות וחוסכת בעיות אבטחה חמורות.

בינוני 20 דקות הקמה בתשלום

Automated Code Review על PRs

זהו ה-use case הראשי וגם הכי קל להתחיל איתו: כל PR שנפתח מקבל סקירת קוד מ-Claude לפני ש-reviewers אנושיים מסתכלים עליו. Claude מנתח את ה-diff, מבין את ההקשר של ה-codebase, ומפרסם ממצאים כתגובות — כולל inline comments על שורות ספציפיות.

מה Claude בודק

ברירת המחדל: Claude בודק הכל — אבטחה, נכונות, ביצועים, טסטים, תיעוד. אפשר למקד:

קטגוריהדוגמאותחומרה
SecuritySQL injection, XSS, authentication gaps, exposed secretsCRITICAL/HIGH
CorrectnessLogic bugs, edge cases, null handling, race conditionsHIGH
PerformanceN+1 queries, unnecessary re-renders, memory leaksMEDIUM
Test coverageMissing tests for new code, untested edge casesMEDIUM
DocumentationMissing docs for public APIs, outdated commentsLOW

התאמה אישית דרך 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 שימושיים יותר כי הם מצביעים בדיוק על הבעיה. ה-developer לא צריך לחפש — הוא רואה את התגובה ליד השורה הרלוונטית.

מסגרת החלטה: פירמידת הסקירה
רמהמה לבדוקמתיעלות יחסית
Securityפרצות אבטחה, secrets חשופיםתמידגבוהה (Opus)
Correctnessבאגים, edge cases, null handlingתמידבינונית (Sonnet)
PerformanceN+1, memory leaks, slow queriesאם רלוונטיבינונית
Stylenaming, formatting, conventionsאם הצוות רוצהנמוכה (Haiku)
Documentationmissing 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. כמה עקרונות:

דוגמה ל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.

עשו עכשיו 5 דקות

צרו branch חדש, שנו קובץ (הוסיפו באג מכוון — למשל if (user.role = 'admin') במקום ===), פתחו PR, ובדקו אם Claude מזהה את הבאג ומפרסם inline comment.

טעות נפוצה: לא להגדיר path filters ב-repos גדולים

מה קורה: Claude מנתח כל קובץ שהשתנה — כולל package-lock.json, build artifacts, ו-generated code. עלות של $3 לPR אחד במקום $0.20.

למה זה מפתה: "לא רוצה לפספס כלום".

מה לעשות במקום: סננו ל-src/, lib/, ו-api/ בלבד. התעלמו מ-lock files, generated code, ותיקיות assets. זה חוסך 80% מהעלות ומשפר את איכות ה-review כי Claude מתמקד בקוד שכתבתם.

תרגיל מעשי: הקמת Code Review אוטומטי

זמן משוער: 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). העתיקו את הבלוק כמו שהוא.

  1. התקינו את Claude GitHub App דרך /install-github-app או ידנית (ראו סעיף Setup למעלה)
  2. הוסיפו ANTHROPIC_API_KEY כ-Repository Secret: Settings → Secrets and variables → Actions → New repository secret
  3. צרו את קובץ ה-YAML: mkdir -p .github/workflows && nano .github/workflows/claude-review.yml (הדביקו את ה-YAML למעלה)
  4. Commit ו-push: git add .github/workflows/claude-review.yml && git commit -m "Add Claude code review" && git push
  5. הוסיפו section ל-CLAUDE.md עם הנחיות review ספציפיות לפרויקט שלכם
  6. צרו branch חדש עם באג מכוון: git checkout -b test-review, הוסיפו if (x = 5) (assignment במקום comparison) בקובץ כלשהו, commit, push, ופתחו PR
  7. חכו 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.

בינוני 15 דקות הקמה בתשלום

Security Audits ב-CI

Code review כללי הוא נהדר, אבל לעתים צריכים workflow מוקדש אבטחה בלבד — ממוקד, מעמיק, שרץ עם Opus (המודל החזק ביותר). Anthropic גם מציעים action ייעודי: anthropics/claude-code-security-review שמותאם במיוחד לסקירות אבטחה.

טעות נפוצה: Security Audit על כל push ללא path filter

עלות: 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 Controlendpoints חשופים, missing auth checksAPI route בלי middleware אימות
A02: Cryptographic Failuresweak hashing, plaintext storageסיסמאות ב-MD5 במקום bcrypt
A03: InjectionSQL injection, NoSQL injection, XSSstring concatenation ב-SQL query
A04: Insecure Designmissing rate limits, no CSRF protectionAPI בלי throttling
A05: Security Misconfigurationdebug mode on, default credentialsDEBUG=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:

  1. Settings → Branches → Add branch protection rule
  2. Branch name pattern: main
  3. סמנו "Require status checks to pass before merging"
  4. חפשו את שם ה-job מה-workflow (למשל "security")
  5. הוסיפו אותו כ-required check

מעכשיו, אף PR לא יכול להתמרג' ל-main בלי שה-security audit יעבור. זה שכבת הגנה חזקה שמונעת פרצות להגיע ל-production.

מתי להריץ security audit?

Security audit עם Opus עולה $0.50-2.00 להרצה. אם מריצים על כל PR — זה יקר. הגישה המומלצת:

triggermodelעלותהסבר
כל PRSonnet$0.10Basic security scan כחלק מcode review
PRs שמשנים auth/apiOpus$1-2Deep scan רק על קוד רגיש
Push ל-mainOpus$1-2Full audit על כל שינוי שנכנס ל-production
שבועי (cron)Opus$2-5Full codebase scan שבועי
עשו עכשיו 5 דקות

צרו workflow חדש: .github/workflows/security-audit.yml שמריץ security audit על push ל-main. השתמשו ב-prompt ממוקד אבטחה מהדוגמה למעלה.

תרגיל מעשי: Security Audit Workflow

זמן משוער: 20 דקות

מה תבנו: Security audit workflow עם security gate.

  1. צרו .github/workflows/security-audit.yml
  2. הגדירו trigger על push ל-main ועל PRs שמשנים קבצי auth/api
  3. כתבו prompt אבטחה ממוקד עם severity rating
  4. הוסיפו security gate step שחוסם merge על CRITICAL findings
  5. בדקו: push שינוי ל-branch עם potential security issue, פתחו PR
  6. אמתו שClaude מזהה את הבעיה ושה-gate step פועל כצפוי

תוצאה מצופה: Security audit שרץ אוטומטית ומסוגל לחסום merge.

בינוני 15 דקות תרגול בתשלום

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)
עשו עכשיו 3 דקות

הריצו: git log --oneline HEAD~10..HEAD | claude -p "write concise release notes from these commits, categorized by: Features, Fixes, Other" --bare

זה הבסיס למה שה-workflow עושה אוטומטית.

תרגיל מעשי: Release Notes Pipeline

זמן משוער: 20 דקות

מה תבנו: Pipeline שמייצר release notes על כל tag push.

  1. צרו .github/workflows/release-notes.yml עם trigger על v* tags
  2. הוסיפו step שמחלץ commits מאז ה-tag הקודם
  3. הוסיפו claude-code-action step עם prompt ממוקד
  4. לחלופין: הוסיפו step שיוצר GitHub Release אוטומטית
  5. צרו tag לבדיקה: git tag v0.1.0-test && git push --tags
  6. בדקו ב-Actions tab שה-workflow רץ ושה-notes נוצרו

תוצאה מצופה: Release notes שנוצרו אוטומטית מ-Claude ופורסמו כ-GitHub Release.

מתקדם 10 דקות אסטרטגיה בתשלום

Issue-to-PR Automation

טעות נפוצה: הפעלת Issue-to-PR בלי בקרה

רמת סיכון: גבוהה למתחילים. 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 updatesMulti-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. שבוע 1: התחילו עם "good first issue" — באגים קטנים עם reproduction steps ברורים
  2. שבוע 2: הרחיבו ל-documentation updates ותיקוני typos
  3. שבוע 3: נסו features קטנים (הוספת field לטופס, שינוי text)
  4. שבוע 4: הערכת ROI — כמה PRs הצליחו? כמה נזרקו? שווה?

ככל שצוברים אמון, אפשר להרחיב את ה-scope. אבל תמיד — Draft PR + human review + tests passing לפני merge.

שימו לב: Issue-to-PR דורש בקרה

מה קורה: Claude מנסה ליישם issue מורכב מדי, פותח PR עם קוד לא שלם, וצוות מבזבז זמן ב-review של PR חסר ערך.

למה זה מפתה: "בוא נאוטמט הכל!"

מה לעשות במקום: הגבילו ל-issues עם label ספציפי. תמיד Draft PR. הריצו tests אוטומטיים. דרשו review אנושי. התחילו עם "good first issue" ובנו אמון בהדרגה.

בינוני 10 דקות הקמה חינם

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:

  1. Claude נותן review עם false positive (ממצא לא רלוונטי)
  2. Developer מזהה ומתעד — "Claude keeps flagging console.log as security issue in test files"
  3. שינוי CLAUDE.md: "Do not flag console.log in test files (**/*.test.ts)"
  4. PR + review: הצוות מאשר את השינוי
  5. מעכשיו: Claude לא מדווח על console.log בtests

אחרי כמה שבועות של iterations, CLAUDE.md שלכם הופך לאמין מאוד — Claude בודק בדיוק מה שחשוב לפרויקט שלכם ומתעלם מדברים שאינם רלוונטיים. זה כמו "לאמן" reviewer חדש, רק שהlogs שלו (CLAUDE.md) שקופים לכל הצוות.

עשו עכשיו 4 דקות

הוסיפו סעיף ## CI/CD Context ל-CLAUDE.md שלכם עם לפחות 3 הנחיות ספציפיות לcode review. עשו commit ו-push. מעכשיו, כל review אוטומטי ישתמש בהנחיות האלה.

עשו עכשיו 3 דקות

צרו קובץ .claude/rules/ci-review.md עם YAML frontmatter שמגדיר globs לקבצי הsource שלכם. הוסיפו לפחות 2 כללי review.

בינוני 15 דקות אסטרטגיה בתשלום

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 כלים נפרדים.

עשו עכשיו 3 דקות

חשבו על workflow אחד שיעזור לפרויקט שלכם. כתבו 3 שורות: (1) Trigger — מה מפעיל, (2) Action — מה Claude עושה, (3) Output — מה התוצאה. זה יהיה הבסיס לתרגיל הבא.

תרגיל מעשי: Custom Workflow לפרויקט שלכם

זמן משוער: 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.
  1. בחרו צורך: documentation sync, changelog, i18n, test generation, migration validation, או אחר
  2. הגדירו trigger: on push? on PR? on schedule? on label?
  3. כתבו prompt ממוקד — מה בדיוק Claude צריך לעשות ובאיזה פורמט
  4. התאימו את השלד למעלה — שנו trigger ו-prompt
  5. שמרו ב-.github/workflows/, commit, push, והפעילו
  6. תעדו: trigger, action, output, עלות להרצה, ROI משוער

תוצאה מצופה: Workflow פעיל שעושה משהו שימושי אמיתי בפרויקט.

בינוני 15 דקות ניתוח חינם

שליטה בעלויות 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 auditOpus$0.50-2.00שווה את ההשקעה — פרצות עולות הרבה יותר
Release notesSonnet$0.05-0.15משימה סטנדרטית, לא צריך Opus
Issue triageHaiku$0.01-0.05סיווג פשוט — Haiku מספיק
Lint-like checksHaiku$0.01-0.03בדיקות מכניות, לא צריך intelligence

כלל הזהב: השתמשו במודל הזול ביותר שנותן תוצאות מספיק טובות. Sonnet מצטיין ב-90% מהreviews. Opus רק ל-security.

מסגרת החלטה: נוסחת העלות של CI
מרכיבחישוב
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 חשוב.

טקטיקות חיסכון

מעקב עלויות בפועל

אפשר להוסיף 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:

טיפ: 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. חיסכון חכם שלא מתפשר על אבטחה.

עשו עכשיו 3 דקות

חשבו נוסחת עלות עבור הצוות/פרויקט שלכם: כמה PRs בשבוע x מודל x עלות ממוצעת x 4 = עלות חודשית. האם זה סביר ביחס לערך שתקבלו?

בינוני 10 דקות מושג חינם

התאמה למערכות CI אחרות

לא כולם משתמשים ב-GitHub. החדשות הטובות: claude -p --bare עובד בכל מערכת CI שתומכת בהרצת shell commands — וזה כולן.

מערכתאיך להריץ Claudeניהול secrets
GitLab CIclaude -p --bare ב-.gitlab-ci.ymlCI/CD Variables
JenkinsShell step ב-Jenkinsfile pipelineJenkins Credentials Store
CircleCIRaw shell step (או Orb)Environment Variables
BitbucketScript step או custom pipeRepository Variables
Azure DevOpsScript task ב-YAML pipelineAzure 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, הדפוס זהה:

  1. התקינו Claude Code (npm install -g @anthropic-ai/claude-code)
  2. הגדירו ANTHROPIC_API_KEY כ-secret/environment variable
  3. הריצו claude -p "your prompt" --bare
  4. פרסקו את הפלט ופעלו בהתאם (שמרו, העבירו, התנו)

ה-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 כנקודת תורפה.

מתחיל 5 דקות אסטרטגיה חינם
מתחיל5 דקותמושגחינם

שגרת עבודה — CI/CD

שגרת עבודה — CI/CD עם Claude Code
תדירותמשימהכמה זמן
יומיבדקו ב-Actions tab שכל ה-workflows רצים בהצלחה — אין failures2 דקות
יומיסקרו 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

מתחיל5 דקותתרגולחינם

אם אתם עושים רק דבר אחד מהפרק הזה

אם אתם עושים רק דבר אחד מהפרק הזה 10 דקות

התקינו claude-code-action@v1 על repository אחד, הוסיפו ANTHROPIC_API_KEY כ-secret, צרו workflow YAML בסיסי, ופתחו PR אחד לבדיקה. ברגע שClaude מגיב עם review comment — הקמתם AI-powered code review שירוץ על כל PR מעכשיו ואילך, אוטומטית, 24/7.

מתחיל5 דקותתרגולחינם

בדוק את עצמך

בדוק את עצמך — 5 שאלות
  1. למה חשוב להשתמש ב-Repository Secrets ולא לשים API key ישירות ב-YAML? (רמז: מי יכול לקרוא YAML files ב-repo?)
  2. מתי כדאי להשתמש ב-Opus במקום Sonnet ב-CI, ולמה לא תמיד? (רמז: ההפרש בעלות פי 5, ובאיזה סוג בעיות Opus באמת עדיף)
  3. מה ה-Draft PR pattern ולמה הוא חשוב ב-Issue-to-PR automation? (רמז: מה קורה אם Claude טועה וה-PR ממורג' ישירות?)
  4. איך path filtering חוסך עלויות CI ומשפר את איכות ה-review? (רמז: חשבו על package-lock.json עם 5,000 שורות ששינו שורה אחת)
  5. מה ההבדל בין CLAUDE.md ל-.claude/rules/ files, ומתי להשתמש בכל אחד? (רמז: הנחיות כלליות שתמיד פעילות vs הנחיות מותנות שנטענות לפי glob patterns)

4 מתוך 5 נכונות = עברתם

מתחיל3 דקותמושגחינם

סיכום הפרק

סיכום

בפרק הזה הפכתם את 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.

מתחיל5 דקותתרגולחינם

צ׳קליסט סיום

צ׳קליסט — סמנו מה השלמתם