חזרה
·5 min read

52 קבצים ב-PR אחד? בניתי Claude Code Plugin שמפצל את זה בשבילי

איך זה קורה

אני אוהב לבנות פיצ'רים End-to-End. מהDatabase ועד הUI.

זה אומר שכשאני עובד על משהו, אני נוגע בהרבה קבצים. Types, Services, API, Components, Tests. הכל ביחד, הכל מחובר, הכל עובד.

שלושה ימים אחרי, אני מסתכל על ה-PR שלי ורואה: 52 קבצים שהשתנו. +1,300 שורות. -200.

וזה הרגע שבו אני יודע: אני יצרתי לעצמי בעיה.

למה PR גדול זו בעיה אמיתית?

אם אתם עובדים בצוות, אתם כנראה כבר יודעים. אבל בואו נפרט:

עומס קוגניטיבי על הReviewer

כשמישהו צריך לעבור על 52 קבצים, הוא לא באמת קורא את הקוד. הוא גולל מהר, מסתכל על השורות הראשונות, אולי בודק את הטסטים, כותב "LGTM" ונותן Approve כי אין לו כוח לשבת על זה שעתיים.

התוצאה? דברים מתפספסים. הערות שהיו יכולות לשפר את הקוד פשוט לא נכתבות.

זמן סגירה ארוך

PR גדול = יותר סיכוי לקונפליקטים. יותר זמן עד שמישהו מתפנה לעבור על זה. יותר Rebase-ים. יותר תסכול.

קשה לעשות Revert

משהו נשבר בפרודקשן? מזל טוב, עכשיו צריך להבין איזה חלק מה-52 קבצים גרם לזה. או לעשות Revert לכל הPR ולאבד שלושה ימים של עבודה.

הסטטיסטיקות לא משקרות

מחקרים מראים ש-Review יעיל מתרחש כשבודקים עד 400 שורות קוד. מעבר לזה, איכות הReview צונחת דרמטית.

הפתרון המובן מאליו (שאף אחד לא עושה)

"אז תפצל את ה-PR לכמה PRים קטנים!"

כן, זה הפתרון. וזה בדיוק מה שמישהו אומר לך ב-Code Review.

ואז מתחיל הסיוט האמיתי:

  1. צריך להבין מה כדאי להכניס עם מה
  2. צריך להסתבך עם Git - branches, cherry-picks, rebases
  3. צריך לוודא שכל PR מתקמפל בנפרד
  4. צריך לנהל את סדר המרג'ים
  5. צריך להתמודד עם קונפליקטים בין הPRים

זה יכול לקחת שעות. שעות שאפשר היה להשקיע בכתיבת קוד חדש.

הכירו את PR Splitter

אחרי שנתקלתי בבעיה הזו פעם אחת יותר מדי, החלטתי לבנות פתרון.

PR Splitter הוא Claude Code Plugin שעושה בדיוק את מה שהשם מרמז: נותן ל-AI לפצל PR גדול לכמה PRים קטנים ומסודרים.

איך זה עובד?

התהליך מתחלק לשני שלבים:

שלב 1: ניתוח (AI מציע, אתה מאשר) - והשלב הכי חשוב

השלב הזה הוא הקריטי ביותר, ויש לו סיבה טובה: אתה מכיר את הקוד שלך הכי טוב.

ה-Agent מנתח את השינויים שלך, מבין את התלויות בין הקבצים (מי מייבא את מי), ומציע חלוקה לוגית. אבל ההחלטה הסופית היא שלך.

למה זה כל כך חשוב? כי רק אתה יודע:

  • מה הסדר ההגיוני - איזה שינוי צריך להיכנס קודם מבחינה עסקית
  • איך זה משתלב בארכיטקטורה - מה מתאים לדרך שהמערכת שלכם בנויה
  • איפה יש קשרים נסתרים - תלויות שלא רואים בimports אבל קיימות בלוגיקה
  • מה אפשר לפצל ומה חייב להישאר ביחד - לוגיקה עסקית שמחייבת קוהרנטיות

ה-AI הוא כלי עזר מצוין לניתוח טכני, אבל הידע העסקי והארכיטקטוני הוא שלך. לכן, ה-Agent מציג לך הצעה והופך אותך לשותף בתהליך:

Agent: I suggest 3 PRs:

**PR 1** (2 files):
- src/types/user.ts
- src/types/order.ts

**PR 2** (3 files) - depends on PR 1:
- src/services/user.service.ts
- src/services/order.service.ts

**PR 3** (4 files) - depends on PR 2:
- src/api/user.controller.ts
- tests/user.test.ts

Please provide branch names:
1: <name>
2: <name>
3: <name>

בשלב הזה, תפקידך הוא לתת פידבק. אתה יכול:

  • לאשר את החלוקה כמו שהיא
  • לבקש לשלב PRים מסוימים ביחד
  • לבקש לפצל PR ליותר חלקים קטנים
  • לשנות את סדר התלויות אם אתה יודע שזה הגיוני יותר

זה השיח החשוב ביותר בכל התהליך - כי אתה מביא את ההבנה העמוקה שלך בקוד למשוואה.

שלב 2: ביצוע (AI יוצר את הPRים)

אחרי שאישרת את החלוקה ונתת שמות, ה-Agent יוצר את כל הbranches באמצעות Git Worktrees. כל PR מבודד בתיקייה נפרדת, מוכן לpush.

למה Git Worktrees?

הקסם פה הוא בשימוש ב-Git Worktrees. במקום ליצור branches רגילים ולעשות checkout הלוך וחזור, כל "slice" מקבל תיקייה נפרדת:

your-repo/
├── .claude/
│   └── worktrees/
│       ├── slice-1/    # First PR - fully isolated
│       ├── slice-2/    # Second PR - fully isolated
│       └── slice-3/    # Third PR - fully isolated
└── src/                # Your main working directory

זה אומר:

  • אין צורך ב-checkout - עובדים על כמה branches במקביל
  • בידוד מלא - כל PR בתיקייה נפרדת
  • ניקיון קל - פקודה אחת מוחקת הכל

התקנה ושימוש

התקנה דרך Claude Code Marketplace

claude plugin marketplace add danielsinai/pr-splitter
claude plugin install pr-splitter

שימוש

פשוט מריצים את ה-Slash Command בתוך Claude Code:

/split-pr

וזהו. ה-Agent עושה את השאר.

השורה התחתונה

אני עדיין אוהב לכתוב הרבה קוד. אני עדיין נסחף ומגיע לשינויים של עשרות קבצים.

אבל עכשיו, במקום לשבת שעה ולפצל ידנית, אני פשוט נותן ל-AI לעשות את העבודה השחורה בשבילי.

PR Splitter הוא דוגמה מצוינת לאיך AI יכול לפתור בעיות אמיתיות ויומיומיות של מפתחים. לא משהו מתוחכם ומסובך - פשוט כלי שחוסך זמן ומייצר קוד איכותי יותר.

הקוד פתוח ב-GitHub. תנו כוכב אם זה עזר לכם.


נ.ב.

יש לכם טריקים משלכם להתמודד עם PRים גדולים? שלחו לי הודעה, מעניין אותי לשמוע איך אחרים מתמודדים עם האתגר הזה.