7 שלב 3 — שליטה מתקדמת

Memory and Persistence — זיכרון והמשכיות

איך לגרום ל-Claude Code לזכור מי אתה, מה הפרויקט שלך, ואילו החלטות כבר התקבלו — בין שיחות, בין ימים, בין חברי צוות. Auto-Memory, CLAUDE.md, .claude/rules/, חידוש שיחות, אופטימיזציית Context Window, ואסטרטגיות התמדה מתקדמות שחוסכות שעות של הסברים חוזרים. עדכני למרץ 2026, כולל 1M Context Window, autoMemoryDirectory, וניהול שיחות מתקדם.

מה יהיה לך בסוף הפרק הזה
מה תוכל/י לעשות אחרי הפרק הזה
לפני שמתחילים
🔗 המשך הפרויקט

בפרק הקודם (פרק 6: Git Worktrees) למדת לעבוד במקביל — כמה Sessions, כל אחד ב-Worktree משלו, על Branch נפרד. הבנת את הכוח של פיתוח מקבילי ואיך Claude Code מנהל בידוד בין סשנים. בפרק הזה נפתור בעיה הפוכה: איך לשמור ידע בין שיחות. כל ה-Worktrees מהפרק הקודם שיתפו Auto-Memory והגדרות (מגרסה 2.1.63) — עכשיו תבין בדיוק איך המנגנון הזה עובד, ותבנה מערכת זיכרון מלאה שגורמת לכל שיחה חדשה להתחיל עם הקשר מלא. בפרק הבא (פרק 8: Security and Permissions) תלמד לאבטח את כל מה שבנית — Sandbox, הרשאות Allow/Deny, בידוד רשת, ומדיניות שמגנה על הפרויקט מפני פעולות לא מורשות.

מילון מונחים — פרק 7
מונח באנגלית הסבר בעברית
Auto-Memory מערכת זיכרון אוטומטית — Claude שומר מידע חשוב בין שיחות בלי שתבקש ממנו
CLAUDE.md קובץ הוראות שנטען אוטומטית בכל שיחה — הקשר קבוע שClaude תמיד רואה
Rules Directory תיקיית .claude/rules/ עם קבצי Markdown שנטענים לפי תנאים (סוג קובץ, תיקייה)
Conditional Activation הפעלה מותנית — Rule שנטען רק כשעובדים עם קבצים או תיקיות ספציפיים
Context Window חלון ההקשר — כמות הטוקנים שClaude יכול "לראות" בשיחה (200K סטנדרטי, 1M ב-Max/Team)
/compact פקודה שדוחסת את השיחה — שומרת מידע חשוב ומשחררת מקום בחלון ההקשר
/resume חידוש שיחה — ממשיך מאיפה שעצרת בשיחה הקודמת
/fork הסתעפות שיחה — יוצר עותק של השיחה הנוכחית לניסוי כיוון אחר
compactInstructions הגדרה שאומרת ל-/compact מה לשמור תמיד ומה אפשר לזרוק
Session Naming מתן שם לשיחה בזמן הפתיחה (claude -n "שם") לזיהוי קל בהיסטוריה
ADR (Architecture Decision Record) מסמך שמתעד החלטה ארכיטקטונית ואת הסיבה מאחוריה — "זיכרון של למה"
Auto-Compaction דחיסה אוטומטית שמופעלת כשה-Context Window מגיע ל-80% קיבולת
תרחיש מהשטח — הפרויקט שנמחק מהזיכרון

דנה, מפתחת Full-Stack בסטארטאפ ישראלי, עבדה שבוע שלם עם Claude Code על מערכת תשלומים. בשיחה אחת ממושכת, Claude למד את כל הארכיטקטורה: Stripe בשקלים, Prisma ORM עם PostgreSQL, Webhook handlers מורכבים, ומבנה ה-API הייחודי של הפרויקט. Claude הפיק קוד מושלם — מותאם לסגנון, לסטנדרטים, ולמוסכמות של הצוות.

ביום ראשון, דנה פתחה שיחה חדשה. "Claude, תמשיך עם ה-refund endpoint מאתמול." התשובה: "I don't have context from previous sessions. Could you tell me about your project?" דנה בילתה 20 דקות בהסברים חוזרים — Tech Stack, מבנה תיקיות, סטנדרטים, החלטות. וכל זה כל יום מחדש.

אחרי שבוע של תסכול, דנה הקימה מערכת זיכרון בשעה אחת: CLAUDE.md עם ארכיטקטורה ופקודות, 4 קבצי Rules עם Conditional Activation, Auto-Memory עם תיקייה מותאמת בתוך הפרויקט, ו-compactInstructions שמגנים על מידע קריטי. מאז — כל שיחה חדשה מתחילה עם "בוא נמשיך, אני מכיר את הפרויקט." החיסכון: 15-20 דקות בכל שיחה, כ-100 שעות בשנה.

בעיית הזיכרון — למה שיחות שוכחות

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

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

"Claude, תמשיך מאיפה שעצרנו אתמול."
"I don't have any context from previous sessions. Could you provide more details about what you'd like to continue working on?"

זו בעיית הזיכרון (The Memory Problem). כל שיחת Claude Code מתחילה מלוח חלק — בלי זיכרון של שיחות קודמות, בלי ידיעה מה דיברתם אתמול, בלי הכרת הסטנדרטים שהגדרתם בשבוע שעבר. זה לא באג — זה הארכיטקטורה הבסיסית של מודלי שפה. כל שיחה היא אינטראקציה חדשה ומנותקת.

בתוך שיחה אחת, Claude זוכר הכל. Context Window של 200K טוקנים (או עד 1M עם Opus 4.6 ב-Max/Team/Enterprise — כלומר כ-750,000 מילים, או ספר של 2,500 עמודים) מחזיק עשרות אלפי שורות קוד, מאות הודעות, והיסטוריה מלאה של מה שעשיתם יחד. זה כמו זיכרון לטווח קצר מצוין — כל עוד השיחה פתוחה, Claude יודע הכל.

אבל ברגע שסוגרים את השיחה — הכל נעלם. ה-Context Window מתרוקן. השיחה הבאה מתחילה מאפס. זה כמו לעבוד עם יועץ מוכשר מאוד שכל בוקר מגיע עם אמנזיה מלאה. הוא מבריק, מקצועי, ומסוגל לעשות כל דבר — אבל צריך תדרוך מלא כל יום מההתחלה.

מה זה אומר בפועל? שאתה חוזר ומסביר שוב ושוב:

כל הסבר חוזר = טוקנים מבוזבזים, זמן מבוזבז, ולפעמים גם אי-דיוקים כי שכחת פרט חשוב. והנה החישוב: אם כל שיחה מתחילה עם 5 דקות של "תדרוך", ואתה פותח 6 שיחות ביום — זה חצי שעה יומית רק על הסברים חוזרים. 2.5 שעות בשבוע. יותר מ-100 שעות בשנה.

25-40%

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

הפתרון של Claude Code: מערכת זיכרון בשכבות (Layered Memory System). לא מנגנון אחד, אלא ארבע שכבות שכל אחת פותרת חלק אחר מבעיית הזיכרון. הרעיון דומה לאיך שזיכרון במחשב עובד — Cache מהיר לדברים תכופים, RAM לעבודה נוכחית, דיסק לאחסון ארוך טווח:

שכבה מנגנון מי מתחזק סוג הידע
1. זיכרון אוטומטי Auto-Memory (/memory) Claude (אתה מסקר) תובנות שClaude לומד תוך כדי עבודה
2. הקשר יציב CLAUDE.md (פרויקט) אתה מידע פרויקטי שלא משתנה הרבה
3. העדפות אישיות ~/.claude/CLAUDE.md אתה ברירות מחדל אישיות לכל הפרויקטים
4. הוראות ממוקדות .claude/rules/*.md אתה / הצוות כללים שנטענים רק כשהם רלוונטיים

בפרק הזה נבנה כל שכבה צעד אחרי צעד, נבין מתי להשתמש באיזה מנגנון, ונרכיב מערכת זיכרון מלאה שגורמת ל-Claude "לזכור" כל מה שחשוב. בסוף הפרק, תפתח שיחה חדשה ותראה שClaude כבר יודע את הכל — בלי שתסביר מילה אחת.

Auto-Memory — הזיכרון האוטומטי

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

Auto-Memory הוא המנגנון הכי "קסום" ב-Claude Code: Claude מזהה לבד מידע חשוב במהלך השיחה ושומר אותו אוטומטית לשימוש בשיחות עתידיות. לא צריך לבקש ממנו, לא צריך להגדיר שום דבר — הוא פשוט עושה את זה ברקע, כמו עוזר שרושם הערות בשבילך בזמן פגישה.

איך זה עובד בפועל? בזמן שאתה עובד עם Claude, הוא מזהה דפוסים ותובנות שכדאי לזכור לשיחות הבאות:

המידע נשמר בתיקייה ~/.claude/memory/ כברירת מחדל, כקבצי טקסט שClaude קורא בתחילת כל שיחה חדשה. זה כמו פתקיות Post-It שClaude מדביק על המסך שלו לפני שהוא מתחיל לעבוד — תזכורות לעצמו ממה שלמד בשיחות קודמות.

מבנה קובצי הזיכרון — MEMORY.md וקבצי נושא

הקובץ הראשי נקרא MEMORY.md — זהו אינדקס תמציתי שClaude שומר מתחת ל-200 שורות. זה הסף שנטען אוטומטית בתחילת כל שיחה. כש-MEMORY.md מתחיל להתמלא, Claude מפצל אוטומטית נושאים לקבצים נפרדים — debugging.md, patterns.md, architecture.md — ושומר ב-MEMORY.md רק קישורים והפניות. הקבצים המפורטים נטענים לפי הצורך, לא בכל שיחה.

מבנה תיקיית Auto-Memory טיפוסית
~/.claude/projects/myproject/memory/
  MEMORY.md              # אינדקס ראשי (~200 שורות מקס) — נטען תמיד
  debugging.md           # טיפים ופתרונות לבעיות חוזרות
  patterns.md            # דפוסי קוד ומוסכמות שClaude גילה
  architecture.md        # תובנות ארכיטקטוניות
  preferences.md         # העדפות המשתמש (סגנון, שפה, כלים)

נקודה חשובה: לכל פרויקט יש תיקיית Auto-Memory נפרדת, שנגזרת מנתיב ה-Git Repository. כל ה-Worktrees של אותו Repo חולקים את אותו Auto-Memory — שינוי בשיחה אחת זמין מיד בשיחה אחרת על אותו פרויקט. זה מנגנון שלמדנו עליו בפרק 6 (Worktrees) — עכשיו אתה מבין איך הוא עובד מאחורי הקלעים.

ניהול Auto-Memory עם /memory

הפקודה /memory היא הכניסה שלך לניהול הזיכרון האוטומטי. היא פותחת ממשק שמציג את כל הזיכרונות שClaude שמר, ומאפשרת לצפות, לערוך ולמחוק ערכים.

דוגמאות שימוש ב-/memory

צפייה בכל הזיכרונות:
/memory — מציג רשימה מלאה של כל מה שClaude שמר. כל ערך מופיע עם תאריך השמירה והתוכן

עריכת זיכרון ספציפי:
/memory → בחירת ערך מהרשימה → עריכה או מחיקה. שימושי כשClaude שמר משהו לא מדויק

הוספה ידנית של זיכרון:
במהלך שיחה, אמור ל-Claude: "Save to memory: always use pnpm instead of npm in this project." הוא ישמור את זה ל-Auto-Memory. שימושי כשאתה רוצה לוודא שמשהו ספציפי ייזכר

מה נשמר אוטומטית ומה לא

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

נשמר אוטומטית לא נשמר
ארכיטקטורת הפרויקט וה-Tech Stack פרטים חולפים ("תקן את שורה 42")
העדפות שלך (שפה, סגנון, כלים) החלטות חד-פעמיות שלא ישפיעו שוב
פתרונות לבעיות חוזרות מידע רגיש (סיסמאות, מפתחות API, טוקנים)
נתיבים ודפוסים חשובים בקוד תוכן קוד ספציפי מהשיחה
מוסכמות וסטנדרטים שגילה שגיאות זמניות שנפתרו ולא יחזרו
טעות נפוצה: לסמוך על Auto-Memory בלי סקירה

לפעמים Claude שומר דברים שלא צריך — מידע שכבר לא רלוונטי, הבנה חלקית שלא מדויקת, או ניסוח מטעה. חובה לסקור את ה-Auto-Memory מדי פעם עם /memory ולנקות ערכים ישנים או שגויים. זיכרון שגוי גרוע מאין זיכרון כי Claude יפעל לפי מידע לא נכון — ולא יגיד לך שהוא טועה, כי הוא "זוכר" את זה כעובדה. אל תתנו ל-Auto-Memory לצבור "זבל" — כל ערך צורך טוקנים מה-Context Window בכל שיחה.

200

מקסימום שורות ב-MEMORY.md שנטען אוטומטית. מעבר לסף הזה, Claude מפצל לקבצים נפרדים ושומר ב-MEMORY.md רק אינדקס תמציתי. הקבצים המפורטים נטענים לפי צורך — חיסכון משמעותי ב-Context Window.

נקודה חשובה שכדאי לזכור: Auto-Memory מנוטרל לחלוטין במצב --bare (שנוסף במרץ 2026 למצב -p, ומיועד ל-CI/CD ואוטומציה). זה הגיוני — Pipeline אוטומטי צריך לרוץ בצורה דטרמיניסטית (זהה בכל פעם), ו-Auto-Memory שמשתנה בין ריצות יפגע בדטרמיניזם הזה. ב---bare גם Hooks, LSP, סריקת Plugins, ו-Skills לא פעילים — הכל מופשט למינימום.

✎ עשה עכשיו (5 דקות)

פתח שיחת Claude Code בפרויקט שאתה עובד עליו. הקלד /memory וסקור מה נשמר עד כה. מחק ערכים שגויים, ישנים, או כאלה שכבר לא רלוונטיים. ודא שהמידע שנשאר מדויק ועדכני. אם אין ערכים — עבוד 10 דקות ואז בדוק שוב.

Custom Memory Directories — תיקיות זיכרון מותאמות

בינוני 10 דקות חינם תרגול

ברירת המחדל של Auto-Memory היא שמירה ב-~/.claude/memory/ — תיקייה גלובלית במחשב שלך שמכילה זיכרונות מכל הפרויקטים. זה עובד, אבל יש כמה מגבלות: הזיכרון לא חלק מה-Git של הפרויקט (אי אפשר לעקוב אחרי שינויים), הוא ספציפי למחשב שלך (לא עובר בין מכונות), וזיכרונות מפרויקט אחד עלולים "לזהם" פרויקט אחר.

ההגדרה autoMemoryDirectory (נוספה במרץ 2026) פותרת את כל הבעיות האלה. היא מאפשרת לך להגדיר תיקייה מותאמת לכל פרויקט:

הגדרת autoMemoryDirectory בתוך הפרויקט

ב-.claude/settings.json:

{
  "autoMemoryDirectory": ".claude/memory/"
}

עכשיו Auto-Memory נשמר ב-.claude/memory/ בתוך הפרויקט. התיקייה הופכת לחלק מה-Repository.

למה זה משנה? שלושה יתרונות מיידיים:

1. Version Control: הוסיפו את .claude/memory/ ל-Git. עכשיו אתם יכולים לעקוב אחרי מה Claude למד לאורך זמן — מתי הוא גילה שהפרויקט עבר מ-MongoDB ל-Postgres, מתי הוא שמר את ההעדפה שלכם ל-pnpm. זה גם מאפשר git blame על שינויי זיכרון, ו-git revert אם Claude שמר משהו שגוי.

2. הפרדה בין פרויקטים: כל פרויקט עם זיכרון עצמאי. פרויקט React לא "מזהם" פרויקט Python. פרויקט ישן לא זולג לפרויקט חדש.

3. שיתוף צוותי: כשה-Memory Directory הוא חלק מה-Git, כל חבר צוות שעושה git pull מקבל את הזיכרון המשותף. Claude לומד מכולם.

זיכרון משותף לצוות — תרחיש מתקדם

תרחיש מעניין במיוחד: כל חברי הצוות מכוונים את autoMemoryDirectory לאותה תיקייה (דרך Git). כשClaude לומד משהו חדש בשיחה של מפתח אחד — כל הצוות נהנה אחרי ה-Pull הבא. לדוגמה:

נקודה חשובה: Claude קורא גם את תיקיית ברירת המחדל (~/.claude/memory/) וגם את התיקייה המותאמת. הוא משלב ידע משני המקורות. זה אומר שהעדפות אישיות גלובליות (שפה, סגנון) ממשיכות לפעול גם בפרויקט עם זיכרון מותאם — הן לא נמחקות, הן מצטרפות.

✎ עשה עכשיו (5 דקות)

הגדר autoMemoryDirectory בפרויקט שלך:

  1. ודא שקיים .claude/settings.json — אם לא, צור אותו
  2. הוסף: "autoMemoryDirectory": ".claude/memory/"
  3. צור את התיקייה: mkdir -p .claude/memory/
  4. עבוד 5 דקות עם Claude ובדוק שנוצרו קבצי זיכרון בתיקייה החדשה
  5. אופציונלי: הוסף את התיקייה ל-Git כדי שהצוות ייהנה

CLAUDE.md — הקשר שנשאר לנצח

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

אם Auto-Memory הוא הזיכרון ש-Claude מנהל (כמו פתקיות שהוא כותב לעצמו), אז CLAUDE.md הוא הזיכרון שאתה מנהל. זהו הכלי הכי חשוב וחזק בכל מערכת הזיכרון של Claude Code — כי הוא נטען אוטומטית בתחילת כל שיחה, בלי שום פעולה מצידך, בלי שום פקודה, בלי שום הגדרה.

חשוב על CLAUDE.md כמו מסמך Onboarding (חפיפה) — אותו מסמך שאתה נותן לעובד חדש ביום הראשון: "הנה מה שאתה צריך לדעת כדי לעבוד בפרויקט הזה." כל מה שעובד חדש צריך: איזה Tech Stack אנחנו משתמשים, מה הפקודות החשובות, מה הסטנדרטים, מה המלכודות שצריך להיזהר מהן. זה בדיוק מה שClaude קורא ברגע שהוא מתחיל שיחה.

100%

אחוז השיחות שבהן CLAUDE.md נקרא אוטומטית. לא צריך לזכור להפעיל, לא צריך להקליד פקודה — Claude קורא את CLAUDE.md תמיד, בכל שיחה, אוטומטית. גם בהפעלה אינטראקטיבית, גם עם -p, גם ב-Worktrees, גם ב-Subagents.

ההיררכיה — שלוש שכבות של CLAUDE.md

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

מיקום תפקיד דוגמאות לתוכן תדירות עדכון
~/.claude/CLAUDE.md גלובלי אישי — כל הפרויקטים שפה, סגנון תקשורת, כללי בטיחות פעם בחודש
./CLAUDE.md פרויקט — שורש הפרויקט Tech Stack, ארכיטקטורה, סטנדרטים, פקודות פעם בשבוע-שבועיים
./subdir/CLAUDE.md תת-תיקייה — הקשר ממוקד כללים ספציפיים ל-frontend, API, tests לפי הצורך

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

CLAUDE.md גלובלי — העדפות אישיות שפועלות בכל מקום

הקובץ ~/.claude/CLAUDE.md מכיל את ברירות המחדל שלך שמתאימות לכל פרויקט. כותבים אותו פעם אחת ומעדכנים לעיתים רחוקות:

דוגמה — ~/.claude/CLAUDE.md
## Communication
- Always respond in Hebrew, keep technical terms in English
- Be concise — short paragraphs, bullet points preferred
- When suggesting changes, explain WHY before HOW
- Don't apologize for mistakes — just fix them

## Safety Rules
- NEVER commit .env files or any file containing secrets
- NEVER amend existing git commits unless I explicitly ask
- Before any destructive operation (rm -rf, DROP TABLE), ask for confirmation
- NEVER force-push to main/master branch

## Coding Preferences
- Use pnpm over npm in all projects
- Prefer TypeScript over JavaScript
- Testing framework: Vitest (not Jest)
- Always use const over let, never use var
- Imports sorted: external > internal > relative

שים לב: הכללים האלה חלים על כל פרויקט שתפתח, בכל מחשב שמחובר לחשבון שלך. זה המקום להעדפות שלך כמפתח, לא להעדפות של פרויקט ספציפי.

CLAUDE.md פרויקטי — הכוכב של מערכת הזיכרון

הקובץ ./CLAUDE.md בשורש הפרויקט הוא החלק הכי חשוב. הנה מבנה מומלץ שכולל את כל מה שClaude צריך כדי לעבוד ביעילות:

דוגמה — CLAUDE.md לפרויקט סטארטאפ ישראלי
# Project: PayFlow — מערכת תשלומים לעסקים קטנים

## Architecture
- Next.js 14 (App Router) + TypeScript
- Database: PostgreSQL via Prisma ORM
- Auth: NextAuth.js with Google + Email providers
- Payments: Stripe Israel integration (ILS currency)
- Hosting: Vercel (production), local Docker (development)

## Key Commands
- `pnpm dev` — start dev server (port 3000)
- `pnpm test` — run Vitest tests
- `pnpm db:push` — push Prisma schema to database
- `pnpm db:seed` — seed database with test data
- `pnpm lint` — ESLint + Prettier check
- `pnpm build` — production build (run before deploying)

## Directory Structure
- src/app/ — Next.js pages and API routes
- src/lib/ — shared utilities and helpers
- src/components/ — React components (use shadcn/ui)
- src/types/ — TypeScript type definitions
- prisma/ — database schema and migrations
- tests/ — integration and e2e tests

## Important Decisions
- [2026-01] Chose Prisma over TypeORM for better DX and native Next.js support
- [2026-02] Moved from MongoDB to PostgreSQL — relational data model fits better
- [2026-03] Using Server Components by default, Client Components only when needed
- [2026-03] Chose shadcn/ui over MUI — lighter, more customizable

## Coding Standards
- All functions must have JSDoc comments
- API routes return { success: boolean, data?: T, error?: string }
- Use Zod for input validation on all API routes
- Imports sorted: external > internal > relative
- Error messages in Hebrew for user-facing, English for logs

## Known Gotchas
- Stripe webhooks need `export const config = { api: { bodyParser: false } }`
- Prisma Client must be instantiated as singleton in development (see src/lib/prisma.ts)
- Hebrew text in emails requires explicit dir="rtl" attribute
- Vercel has 10-second timeout on free plan — use background jobs for long operations

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

גודל CLAUDE.md — הכלל הכי חשוב

הנה משהו שחשוב להבין: כל טוקן ב-CLAUDE.md צורך מקום ב-Context Window. קובץ CLAUDE.md של 1,000 שורות (כ-10K טוקנים) אוכל 5% מ-Context Window סטנדרטי של 200K. זה אולי נשמע מעט, אבל מצטבר: Auto-Memory צורך עוד 2-3%, Rules עוד 1-2%, כל קובץ שClaude קורא עוד 1-5%. פתאום 10-15% מה-Context נלקח עוד לפני שהתחלת לעבוד.

טעות נפוצה: CLAUDE.md ענק שצורך 5%+ מה-Context

הטעות: לדחוס את כל המידע לתוך CLAUDE.md אחד ענק של 1,000+ שורות. למה זה מפתה: נוח — קובץ אחד, מקום אחד, קל לעדכן. מה לעשות במקום: שמרו על CLAUDE.md מתחת ל-500 שורות (~5K טוקנים). אם הוא גדל מעבר לזה — הגיע הזמן לפצל לקבצי Rules (הסעיף הבא). CLAUDE.md ארוך מדי לא רק מבזבז Context Window — הוא גם מפחית את יעילות Claude כי הוא צריך "לעכל" הרבה מידע לפני שהוא מתחיל לעבוד. כלל אצבע: 500 שורות = מספיק למידע חיוני, לא מספיק כדי לפגוע בביצועים.

Timestamps — טריות המידע

מגרסה 2.1.0 (ינואר 2026), קבצי CLAUDE.md כוללים חותמות זמן (Timestamps) של עדכון אחרון (Last Modified). Claude משתמש בזה כדי להעריך טריות (Freshness): הוא רואה שההוראה הזו עודכנה לפני 3 חודשים ומקבל אינדיקציה שאולי היא כבר לא רלוונטית. בגרסאות מרץ 2026 המנגנון הזה משופר עוד יותר — Claude משקלל את הטריות כשהוא מחליט כמה "לסמוך" על הוראה מסוימת. זה אומר שחשוב לעדכן את CLAUDE.md באופן שוטף כשהפרויקט משתנה — לא רק כדי שהמידע יהיה נכון, אלא גם כדי שClaude יידע שהמידע טרי ואמין.

/init — התחלה מהירה כשאתה לא יודע מאיפה להתחיל

הפקודה /init מנתחת את מבנה הפרויקט שלך — קוראת package.json, requirements.txt, Dockerfile, מבנה תיקיות, וקבצי קונפיגורציה — ויוצרת CLAUDE.md ראשוני שכולל את מה שהיא גילתה. זו נקודת פתיחה מצוינת, אבל תמיד תערוך ותשפר ידנית אחרי שClaude יוצר את הטיוטה. Claude לא יודע על ההחלטות שלך, המוסכמות הבלתי-כתובות, והמלכודות הספציפיות — את כל אלה רק אתה יכול להוסיף.

✎ עשה עכשיו (10 דקות)

צור או עדכן את CLAUDE.md בפרויקט שלך:

  1. אם אין CLAUDE.md — הרץ /init ליצירת טיוטה ראשונית
  2. הוסף ידנית: ארכיטקטורה, פקודות חיוניות, סטנדרטים, החלטות חשובות עם תאריכים
  3. הוסף: מלכודות ידועות (Known Gotchas) — הדברים שתמיד שוכחים
  4. בדוק אורך — מתחת ל-500 שורות? מצוין. מעל? תפצל (ראה סעיף הבא)
  5. Commit את הקובץ ל-Git כדי שכל הצוות ייהנה
✎ עשה עכשיו (5 דקות)

צור CLAUDE.md גלובלי אם אין לך:

  1. צור את הקובץ: ~/.claude/CLAUDE.md
  2. הוסף: שפה מועדפת, סגנון תקשורת, כללי בטיחות
  3. הוסף: כלים מועדפים (pnpm/npm, Vitest/Jest, TypeScript/JavaScript)

.claude/rules/ — הוראות מותנות וממוקדות

בינוני 12 דקות חינם תרגול

CLAUDE.md הוא כללי — כל מה שבתוכו נטען תמיד, בכל שיחה, לא משנה על מה עובדים. אבל מה אם יש לך כללים שרלוונטיים רק לחלק מהפרויקט? כללי סגנון TypeScript שלא רלוונטיים כשעובדים על Python Scripts. כללי API שלא רלוונטיים כשעובדים על ה-Frontend. הוראות Testing שלא נחוצות כשכותבים תיעוד. הוראות Docker שלא צריך כשעורכים CSS.

לשים את הכל ב-CLAUDE.md = בזבוז. כל הכללים נטענים תמיד, גם כשהם לא רלוונטיים, וכל אחד צורך טוקנים מה-Context Window. עם 50 כללים ב-CLAUDE.md, אתה מבזבז מאות טוקנים בכל שיחה על הוראות שClaude לא צריך באותו רגע.

כאן נכנסת תיקיית .claude/rules/ — מערכת כללים מודולרית עם הפעלה מותנית (Conditional Activation).

איך זה עובד

כל קובץ .md בתיקייה .claude/rules/ נטען אוטומטית, בדיוק כמו CLAUDE.md. אבל הקסם האמיתי הוא ב-YAML Frontmatter שמגדיר מתי הכלל נטען — רק כש-Claude עובד עם קבצים שמתאימים ל-Glob Pattern:

דוגמה — .claude/rules/typescript-style.md
---
globs: ["*.ts", "*.tsx"]
---

# TypeScript Coding Standards

- Always use `interface` over `type` for object shapes
- Prefer `const` over `let` — never use `var`
- All exported functions must have explicit return types
- Use `unknown` instead of `any` — `any` is banned in our project
- Enums: use `const enum` for performance when possible
- Null handling: use `??` (nullish coalescing), not `||`
- Array iteration: prefer `.map()`, `.filter()`, `.reduce()` over `for` loops
- String templates: always use template literals, not concatenation

הכלל הזה נטען רק כש-Claude עורך קבצי TypeScript (*.ts או *.tsx). כשהוא עובד על Dockerfile או README.md — הכלל לא נטען ולא צורך טוקן אחד מה-Context Window.

דוגמה — .claude/rules/api-guidelines.md
---
globs: ["src/api/**", "src/app/api/**"]
---

# API Development Guidelines

- Every route must validate input with Zod schema before processing
- Standard response: { success: boolean, data?: T, error?: string }
- Error codes: 400 (validation), 401 (auth), 403 (forbidden), 404 (not found), 500 (internal)
- Rate limiting: 100 requests/minute per authenticated user
- Always log: method, path, status code, response time
- Hebrew error messages for user-facing errors, English for internal logs
- Pagination: cursor-based, not offset-based (better performance)
- Always use try/catch with specific error types

כלל זה פעיל רק כשClaude עובד בתיקיות API. עוד דוגמה שימושית במיוחד:

דוגמה — .claude/rules/testing-standards.md
---
globs: ["**/*.test.ts", "**/*.spec.ts", "tests/**"]
---

# Testing Standards

- Framework: Vitest (NOT Jest — we migrated in Jan 2026)
- Every test file: describe() wrapping, clear test names in Hebrew
- Use `it.each()` for parameterized tests
- Mock external services — never make real HTTP calls in tests
- Minimum coverage: 80% for business logic, 60% for utilities
- Test file location: same directory as source, with .test.ts suffix
- Use `vi.fn()` for mocks, `vi.spyOn()` for spies
- Cleanup: always call `vi.clearAllMocks()` in afterEach()
דוגמה — .claude/rules/database-rules.md
---
globs: ["prisma/**", "src/lib/db/**", "**/repository.*"]
---

# Database Guidelines

- ORM: Prisma (schema in prisma/schema.prisma)
- Always use transactions for multi-step operations
- Use `findUniqueOrThrow` over `findUnique` when record must exist
- Soft delete: use deletedAt column, never hard delete user data
- Indexes: every foreign key must have an index
- Naming: tables in PascalCase, columns in camelCase
- Migrations: always test with `pnpm db:push` before creating migration

Rules בלי Globs — כללים שנטענים תמיד

לא כל Rule צריך Conditional Activation. קובץ .md בתוך .claude/rules/ בלי frontmatter נטען תמיד, בדיוק כמו CLAUDE.md. זה שימושי לכללים שרלוונטיים תמיד אבל רוצים לשמור אותם בקובץ נפרד — למשל, כללי בטיחות, מוסכמות Git, או הוראות Code Review. היתרון: מודולריות ותחזוקה קלה, בלי לנפח את CLAUDE.md הראשי.

דוגמה — .claude/rules/git-conventions.md (בלי globs — נטען תמיד)
# Git Conventions

- Commit messages: conventional commits format (feat:, fix:, refactor:, docs:, test:)
- Branch naming: feature/ticket-number-description, bugfix/ticket-number-description
- Never force-push to main or develop branches
- Always rebase feature branches on develop before PR
- PR description must include: what, why, how to test

תת-תיקיות לארגון

בפרויקטים גדולים, אפשר לארגן Rules בתת-תיקיות לפי דומיין:

למה Rules עדיפים על CLAUDE.md ענק?

מאפיין CLAUDE.md מונוליטי .claude/rules/ מודולרי
צריכת Context הכל נטען תמיד — גם מה שלא רלוונטי רק הרלוונטי נטען — חיסכון משמעותי
תחזוקה קובץ אחד ארוך = קשה לנהל ולעדכן קבצים קטנים וממוקדים = קל למצוא ולעדכן
שיתוף בצוות קונפליקטים תכופים ב-Git על קובץ אחד כל אחד מעדכן את הקובץ שלו — אפס קונפליקטים
בהירות 50 כללים מעורבבים = מבלבל כל קובץ = נושא אחד ברור ומוגדר
גמישות אותם כללים בכל הקשר כללים שונים לקבצים/תיקיות שונות
טיפ: מיגרציה הדרגתית מ-CLAUDE.md ל-Rules

אם ה-CLAUDE.md שלך כבר ארוך מדי, אל תנסה להעביר הכל בבת אחת. עשה מיגרציה הדרגתית: בכל שבוע, זהה דומיין אחד (TypeScript, Testing, API) והעבר את הכללים שלו לקובץ Rule עם Glob מתאים. אחרי חודש, CLAUDE.md יכיל רק מידע כללי שלא תלוי קבצים ספציפיים — ארכיטקטורה, החלטות, פקודות — וכל השאר יהיה ב-Rules.

✎ עשה עכשיו (8 דקות)

צור לפחות 3 קבצי Rules בפרויקט שלך:

  1. צור את התיקייה: mkdir -p .claude/rules/
  2. צור קובץ לשפת הקוד הראשית: .claude/rules/<language>-style.md עם globs מתאים
  3. צור קובץ ל-Testing: .claude/rules/testing.md עם globs לקבצי test
  4. צור קובץ לתחום נוסף (API, Frontend, DevOps, Database)
  5. בדוק: עבוד על קובץ TypeScript ובדוק שכללי ה-TypeScript נטענו. עבוד על Dockerfile ובדוק שלא נטענו

מה שמים איפה — מטריצת הזיכרון

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

ארבעה מנגנוני זיכרון, כל אחד עם תפקיד שונה. הטעות הנפוצה ביותר של משתמשים חדשים: לשים הכל במקום אחד (בדרך כלל CLAUDE.md) ולהתעלם מכל השאר. הנה המדריך המלא למיקום נכון:

סוג ידע מיקום מי מתחזק מתי נטען דוגמה
תובנות מתפתחות Auto-Memory Claude (אתה מסקר) כל שיחה "הפרויקט עבר מ-MongoDB ל-Postgres"
הקשר פרויקטי יציב CLAUDE.md (פרויקט) אתה כל שיחה Tech Stack, ארכיטקטורה, פקודות
העדפות אישיות ~/.claude/CLAUDE.md אתה כל שיחה "תמיד בעברית, TypeScript, Vitest"
כללים ממוקדים .claude/rules/ אתה / הצוות כשמתאים Glob סטנדרט TypeScript, כללי API, Testing
שיחה נוכחית Context Window אוטומטי שיחה נוכחית בלבד "תקן את הבאג בשורה 42"
כלל אצבע: אם תשאל את אותה שאלה שוב מחר — זה שייך ל-CLAUDE.md או Auto-Memory. אם זה רלוונטי רק לסוג קבצים מסוים — זה שייך ל-Rules. אם זה חד-פעמי ולא ישפיע על שום דבר אחר — השאר אותו בשיחה ואל תשמור.

המשכיות שיחה — /resume ו-/fork

בינוני 10 דקות חינם תרגול

מערכת הזיכרון שבנינו (CLAUDE.md, Rules, Auto-Memory) פותרת את בעיית ה"מי אני ומה הפרויקט." Claude מתחיל כל שיחה עם הקשר בסיסי. אבל מה קורה כשאתה רוצה להמשיך שיחה ספציפית? כשעצרת באמצע Refactoring מורכב ורוצה לחזור בדיוק לנקודה ההיא, עם כל ההקשר שנצבר?

/resume — המשך מאיפה שעצרת

הפקודה /resume (או הפעלה עם claude --resume) טוענת מחדש את השיחה האחרונה — כולל היסטוריית הודעות, הקשר שנצבר, פלטי כלים, וכל מה שנעשה. אפשר גם claude --continue או claude -c כקיצור נוח. לחידוש שיחה ספציפית לפי ID: claude -r "session-id". זה כמו לפתוח את הלפטופ אחרי הפסקה ולראות את כל החלונות פתוחים מאיפה שעצרת — שום דבר לא אבד.

מתי להשתמש ב-/resume

פרט טכני חשוב: גרסה 2.1.80 תיקנה בעיה משמעותית בשחזור זוגות tool_use/tool_result. בגרסאות ישנות יותר, Resume של שיחה עם קריאות כלים מרובות לפעמים "שבר" את ההקשר. מגרסה 2.1.80 ומעלה — Resume עובד בצורה חלקה לחלוטין, גם בשיחות מורכבות.

/fork — הסתעפות לניסוי בטוח

/fork יוצר עותק (Clone) של השיחה הנוכחית. השיחה המקורית נשארת כמו שהיא — ללא שינוי — וההסתעפות ממשיכה באופן עצמאי. מה-CLI אפשר גם claude --fork-session "session-id" כדי ליצור Fork של שיחה קיימת ישירות מהטרמינל. זה בדיוק כמו git branch אבל לשיחות: שני כיוונים שונים מאותה נקודת פיצול.

למה זה שימושי? כי לפעמים אתה רוצה לנסות כיוון אחר בלי לסכן את מה שכבר בנית:

מתי להשתמש ב-/fork

Resume לעומת שיחה חדשה — מתי מה?

מצב פעולה מומלצת סיבה
ממשיך אותה משימה (תוך שעות) /resume כל ההקשר כבר שם, טרי ורלוונטי
משימה חדשה לגמרי שיחה חדשה הקשר ישן יזהם את העבודה החדשה
שיחה ישנה (יותר מיומיים) שיחה חדשה + סיכום ידני הקשר ישן עלול להיות Stale ולא מדויק
רוצה לנסות גישה אחרת /fork שומר על המקור, חוקר בבטחה
שיחה ארוכה מאוד (100+ הודעות) שיחה חדשה + סיכום Resume על שיחה ענקית מבזבז Context

דפוס "רענון ההקשר" (Context Refresh Pattern)

גישה חכמה לחידוש עבודה כשה-Resume לא מתאים: פתח שיחה חדשה וספק הקשר ידנית בהודעה הראשונה. זה נקי יותר מ-Resume על שיחה ישנה כי: (1) אין הקשר ישן שמזהם, (2) אתה שולט בדיוק מה Claude יודע, (3) פחות טוקנים מבוזבזים:

דוגמה — Context Refresh
"אתמול עבדתי על אינטגרציית Stripe בפרויקט PayFlow.
השינויים ב-branch feature/stripe-checkout.
מה שעשינו:
- Checkout session creation — עובד ונבדק
- Success/cancel pages — עובדות
מה שנשאר:
- Webhook handler ל-payment_intent.succeeded
- עדכון status ב-DB אחרי תשלום מוצלח
- טסטים ל-webhook handler"

3 שורות של הקשר = Claude יודע בדיוק מאיפה להמשיך, בלי לטעון 200 הודעות מהשיחה הקודמת.

✎ עשה עכשיו (5 דקות)

נסה את שני המנגנונים:

  1. עבוד כמה דקות עם Claude על משימה כלשהי, ואז סגור את השיחה
  2. הרץ claude --resume וודא שההקשר חוזר — Claude זוכר מה עבדתם עליו
  3. חזור לשיחה, הקלד /fork, ונסה כיוון שונה בהסתעפות
  4. ודא שהשיחה המקורית לא השתנתה

אופטימיזציית Context Window — חיסכון של 25-45%

בינוני 12 דקות חינם תרגול

ה-Context Window הוא המשאב היקר ביותר בשיחת Claude Code. כל דבר שClaude "רואה" — כל קובץ שנקרא, כל פלט של כלי, כל הודעה בשיחה — צורך טוקנים מהחלון הזה. כשנגמר המקום (כ-95% קיבולת), מופעלת Auto-Compaction — דחיסה אוטומטית שמסכמת את השיחה ומאבדת חלק מההקשר הישן. הסף המדויק משתנה לפי מודל — Opus מפעיל דחיסה מוקדם יותר מ-Sonnet — אבל בפועל, ברוב המקרים Auto-Compaction מתחילה כשנותרו 5-25% מהחלון. ניהול חכם של Context = שיחות ארוכות יותר, עקביות טובה יותר, ופחות עלות כספית.

200K → 1M

Context Window סטנדרטי: 200K טוקנים. עם Opus 4.6 ב-Max/Team/Enterprise: עד 1M טוקנים — פי 5 יותר מקום. אבל גם עם 1M, ניהול חכם חוסך עלויות כספיות משמעותיות (כל טוקן עולה כסף).

מפת צריכת הטוקנים — לאן הם הולכים?

כדי לנהל Context בצורה חכמה, צריך להבין מה צורך כמה. הנה התפלגות טיפוסית בשיחה של 200K:

רכיב צריכה טיפוסית אחוז מ-200K
CLAUDE.md (פרויקט + גלובלי) 3K-8K טוקנים 1.5-4%
Auto-Memory (MEMORY.md) 1K-3K טוקנים 0.5-1.5%
Rules שנטענו (ממוצע 2-3 קבצים) 1K-2K טוקנים 0.5-1%
System Prompt + כלים 8K-12K טוקנים 4-6%
קבצים שנקראו 20K-80K טוקנים 10-40%
היסטוריית שיחה 50K-100K טוקנים 25-50%
זמין לעבודה 30K-100K טוקנים 15-50%

עם 1M Context (Opus 4.6, Max/Team/Enterprise) — המספרים האלה הופכים לשוליים. CLAUDE.md של 8K טוקנים צורך פחות מ-1% מ-1M. אבל גם עם 1M, כל טוקן עולה כסף — Opus 4.6 מתומחר ב-$5/$25 לכל מיליון טוקנים (input/output), ללא מכפיל לחלון גדול. שיחה שצורכת 800K טוקנים עולה יותר משיחה שצורכת 200K, גם אם שתיהן מצליחות. ניהול חכם = לא רק שיחות ארוכות יותר, אלא גם חשבון חודשי נמוך יותר.

Plan Mode — חיסכון של 25-45% מהטוקנים

הפעלת Plan Mode (Shift+Tab פעמיים, או הפקודה /plan) משנה את אופן העבודה של Claude: במקום לנתח ולבצע בו-זמנית, הוא קודם מנתח את המשימה ומציע תוכנית מפורטת. רק אחרי שמאשרים — הוא מבצע. הקסם: כשמאשרים תוכנית, ה-Context מתנקה אוטומטית. כל הניתוח הארוך שClaude עשה לא נשאר בזיכרון — רק התוכנית עצמה. זה חוסך 25-45% מצריכת הטוקנים.

/compact — דחיסה חכמה לפי דרישה

הפקודה /compact דוחסת את השיחה — Claude מסכם את מה שקרה עד עכשיו, שומר מידע מפתח, ומשחרר את כל השאר. הכוח האמיתי הוא בהוראות מותאמות שאומרות ל-Claude מה לשמור:

דוגמאות שימוש ב-/compact

Compact בסיסי (Claude מחליט):
/compact — Claude מחליט לבד מה חשוב לשמור. עובד סביר ברוב המקרים

Compact עם הוראות ממוקדות:
/compact keep the API endpoints and error messages, drop everything else

Compact לאחר מחקר:
/compact keep only the database schema changes and the migration steps we decided on

Compact לפני שלב חדש:
/compact keep the file paths we're working on and the test results, drop the exploration phase

compactInstructions — הוראות דחיסה קבועות שעובדות תמיד

במקום לציין הוראות Compact בכל פעם מחדש, הגדר compactInstructions פעם אחת — ב-CLAUDE.md או ב-settings.json. ההוראות האלה יחולו על כל Compact, גם ידני וגם אוטומטי:

דוגמה — compactInstructions ב-CLAUDE.md
## Compact Instructions

When compacting context, ALWAYS preserve:
- Current task state and pending items
- File paths being actively worked on
- API endpoint URLs and response formats
- Error messages and their root causes (if debugging)
- Database schema changes in progress
- Test results (pass/fail) from the current session

Always DROP:
- Tool call details and intermediate search results
- Verbose log output and stack traces (keep only the error message)
- Full file contents that were already read (keep only the relevant sections)
- Exploration paths that didn't lead anywhere

כל פעם שClaude עושה Compact — ידני (אתה מקליד /compact) או אוטומטי (הגיע ל-80% קיבולת) — הוא עוקב אחרי ההוראות האלה. זה מבטיח שמידע קריטי לא נעלם בדחיסה, ומידע לא חשוב משתחרר.

טכניקות חיסכון נוספות שעובדות מיד

טכניקה במקום עדיף
Read עם offset/limit קריאת קובץ שלם (2,000 שורות) Read file.py offset=100 limit=50 — רק 50 שורות
Grep עם files_with_matches חיפוש שמחזיר תוכן כל שורה קבל רק שמות קבצים — מספיק כדי לדעת איפה לחפש
head_limit ב-Grep חיפוש שמחזיר 500 תוצאות head_limit: 10 — 10 תוצאות ראשונות מספיקות
Plan Mode ביצוע ישיר (כל הניתוח נשאר ב-Context) Plan → Approve → Context מתנקה
/compact תקופתי שיחה שגדלה ללא בקרה עד Auto-Compaction Compact ידני כל 20-30 הודעות עם הוראות

/context — ניטור צריכה בזמן אמת

הפקודה /context מציגה את מצב ה-Context Window הנוכחי: כמה טוקנים נצרכו, כמה נותרו, מה האחוז עד Auto-Compaction, והצעות לאופטימיזציה. השתמש ב-/context כמו "מד דלק" — תבדוק מדי פעם כדי לדעת כמה מקום נשאר לפני שתצטרך לדחוס.

טיפ: שילוב /context עם Hooks

אם יש לך PostCompact Hook מפרק 1 — הוסף לוגיקה שמדפיסה את צריכת הטוקנים אחרי כל Compact. ככה תראה בדיוק כמה מקום שוחרר ותדע אם צריך Compact נוסף. זה dashboard מיני לניהול Context.

דפוס "תקציב Context" (Context Budget): התייחס ל-Context כמו לתקציב כספי. כל קובץ שנקרא, כל פלט כלי, כל שורה בשיחה — עולה טוקנים. כמו שלא קונים 10 מוצרים כשצריכים אחד, ככה לא קוראים 10 קבצים כשצריכים לראות פונקציה אחת. תקרא רק מה שצריך, תדחוס באופן קבוע, ותשתמש ב-Fork לחקירות צדדיות.
✎ עשה עכשיו (5 דקות)

הגדר compactInstructions בפרויקט שלך:

  1. פתח את CLAUDE.md (או צור סעיף חדש)
  2. הוסף ## Compact Instructions עם רשימת "תמיד שמור" ו"תמיד זרוק"
  3. בשיחה הבאה, אחרי 15-20 הודעות, הרץ /compact ובדוק שהמידע החשוב נשמר

מתן שם ואירגון שיחות

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

כשיש לך 20 שיחות Claude Code מהשבוע האחרון, איך מוצאים את השיחה הנכונה לעשות עליה Resume? Session Naming (מתן שם לשיחות) הופך את "Session #47" ל-"payments-integration-0323" — ומיד ברור מה עשית שם ומתי.

שלוש דרכים לתת שם לשיחה

מתן שם ושינוי שם

1. שם בהפעלה (מומלץ):
claude -n "stripe-webhooks" — השם מופיע ב-Prompt Bar ובהיסטוריית השיחות. גרסה ארוכה: claude --name "stripe-webhooks"

2. שינוי שם באמצע שיחה:
/rename "stripe-webhooks-fixed" — מעדכן את השם כשהמשימה התבהרה או השתנתה

3. צבע לזיהוי ויזואלי:
/color — מגדיר צבע ל-Prompt Bar. שימושי במיוחד כשיש כמה Sessions פתוחים במקביל (כמו שלמדנו בפרק 6 עם Worktrees) — כל Session בצבע אחר, קל להבחין ביניהם במבט

מוסכמת שמות מומלצת

פורמט: [project]-[task]-[date]

לצוותים: הוסיפו את שם המפתח: payflow-nadav-stripe-0323. ככה אפשר לחפש בהיסטוריה את כל השיחות של מפתח מסוים על נושא מסוים.

בשילוב עם Auto-Memory, מתן שם עקבי לשיחות יוצר היסטוריה ניתנת לחיפוש. כשאתה פותח שיחה חדשה ואומר "מה עבדנו עליו בנושא Stripe?", Claude יכול להסתמך על שמות השיחות ב-Auto-Memory כדי לתת תשובה מדויקת.

טיפ: שילוב Session Naming עם Hooks

אם הגדרת Session Logging Hook בפרק 1 (Hooks), שלב אותו עם Session Naming: כל Log File ייקרא על שם השיחה. ככה נוצרת מערכת Audit Trail מלאה — לכל שיחה יש שם ברור, Log מפורט, ו-Auto-Memory שמסכם את התובנות.

✎ עשה עכשיו (2 דקות)

החליט על מוסכמת שמות לפרויקט שלך ורשום אותה ב-CLAUDE.md (תחת סעיף כללי). מהרגע הזה, תמיד פתח שיחות עם claude -n "שם".

אסטרטגיות התמדה מתקדמות

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

CLAUDE.md, Rules, ו-Auto-Memory הם הבסיס — הם פותרים 80% מבעיית הזיכרון. אבל Power Users צריכים עוד שיטות שמכסות את ה-20% הנותרים: זיכרון של "למה" (לא רק "מה"), מעקב בין שיחות על משימות ארוכות, וזיכרון מהיסטוריית ה-Git.

Architecture Decision Records (ADRs) — הזיכרון של "למה"

ADR (Architecture Decision Record) הוא מסמך קצר שמתעד החלטה ארכיטקטונית ואת הסיבה מאחוריה. CLAUDE.md אומר "אנחנו משתמשים ב-PostgreSQL." ADR אומר "למה עברנו ל-PostgreSQL, מה שקלנו, ומה ההשלכות." זה ה"זיכרון של למה."

בלי ADRs, Claude עלול להציע לחזור ל-MongoDB — כי הוא לא יודע שכבר ניסיתם ועברתם ממנו בגלל סיבות ספציפיות. עם ADR, Claude קורא את הנימוק ומבין שלא כדאי לחזור.

דוגמה — decisions/003-move-to-postgres.md
# ADR-003: Move from MongoDB to PostgreSQL

## Status: Accepted (January 2026)

## Context
Our data model became increasingly relational — users have orders,
orders have items, items reference products. MongoDB required
data duplication and couldn't enforce referential integrity.
We had 3 bugs in Q4 2025 caused by orphaned references.

## Decision
Migrate to PostgreSQL with Prisma ORM.

## Alternatives Considered
- TypeORM: more mature but worse DX, heavy decorators
- Drizzle: too new, less community support at the time
- Keep MongoDB + Mongoose: doesn't solve the relational problem

## Consequences
- Better data integrity (foreign keys, unique constraints, check constraints)
- Prisma migration system for safe schema evolution
- Need to rewrite all database queries (estimated 2 weeks)
- Team needs to learn SQL basics (most were NoSQL-only)

שמרו ADRs בתיקיית decisions/ בשורש הפרויקט. הוסיפו את התיקייה ל-Git. Claude יכול לקרוא אותם כשצריך להבין למה משהו מסוים נבחר.

סיכומי שיחה (Session Summaries) — זיכרון מובנה

בסוף כל שיחה משמעותית, בקש מ-Claude סיכום מובנה:

פרומפט לסיכום שיחה
"Summarize what we accomplished today in a structured format:
1. What was completed
2. What's still in progress
3. What's blocked and why
4. Important decisions made
5. Files that were modified"

שמור את הסיכום בקובץ (למשל sessions/2026-03-23-stripe.md). בשיחה הבאה, ספק את הסיכום כהקשר ראשוני — ו-Claude ימשיך בדיוק מאיפה שעצרת. Auto-Memory תופס חלק מזה אוטומטית, אבל סיכום מפורש שאתה כותב הוא מקיף ומדויק יותר.

קובץ CURRENT-TASK.md — מעקב בין שיחות למשימות ארוכות

למשימות שנמשכות כמה ימים (Sprint של שבוע, אינטגרציה מורכבת, מיגרציה), נהל קובץ CURRENT-TASK.md בשורש הפרויקט:

דוגמה — CURRENT-TASK.md
# Current Task: Stripe Payment Integration

## Status: In Progress (Day 3 of estimated 5)

## Completed
- [x] Stripe SDK setup and configuration
- [x] Checkout session creation endpoint
- [x] Success/cancel redirect pages
- [x] Price calculation with ILS currency support

## In Progress
- [ ] Webhook handler for payment events
  - payment_intent.succeeded — started, needs testing
  - payment_intent.payment_failed — not started
  - charge.refunded — not started

## Blocked
- Need Stripe webhook secret for production (waiting on DevOps — asked March 22)

## Notes for Next Session
- Use idempotency keys on all Stripe API calls
- Test with Stripe CLI: `stripe listen --forward-to localhost:3000/api/webhooks`
- Remember: bodyParser must be disabled for webhook endpoint

עדכנו את הקובץ בסוף כל שיחה. Claude קורא אותו בתחילת השיחה הבאה ומיד יודע: מה עשינו, מה נשאר, מה חוסם.

Git כזיכרון — הודעות Commit שClaude יכול לקרוא

היסטוריית ה-Git שלכם היא צורה של זיכרון ארוך-טווח. Claude יכול לקרוא git log כדי להבין מה השתנה ומתי. הודעות Commit טובות = הקשר טוב יותר ל-Claude. הודעות גרועות = Claude לא לומד כלום מההיסטוריה.

הודעות Commit כזיכרון

גרוע (Claude לא לומד כלום):
"fix stuff"
"wip"
"update"

טוב (Claude מבין מה ולמה):
"fix: resolve CORS error on /api/payments by adding stripe.com to allowed origins"
"feat: add webhook handler for payment_intent.succeeded event"
"refactor: extract Prisma client to singleton to fix hot-reload memory leak"

שילוב זיכרון עם Hooks ו-Worktrees — הסינרגיה המלאה

מערכת הזיכרון מקבלת כוח מיוחד כשמשלבים אותה עם מנגנונים מפרקים קודמים:

דפוס "זיכרון אוטומטי מבוסס Hooks"

SessionStart Hook + CURRENT-TASK.md: הוק שמודפס בתחילת כל שיחה מזריק את תוכן CURRENT-TASK.md ל-context. Claude מתחיל כל שיחה לא רק עם ידע על הפרויקט, אלא גם עם המצב המדויק של המשימה הנוכחית — מה עשינו, מה נשאר, מה חוסם.

SessionEnd Hook + סיכום אוטומטי: הוק שרץ בסוף שיחה שולח לClaude בקשת סיכום ושומר את התוצאה ל-CURRENT-TASK.md. ככה כל סגירת שיחה מעדכנת אוטומטית את המצב — בלי שתצטרך לזכור.

Worktrees + Memory משותף: מגרסה 2.1.63, כל ה-Worktrees של אותו Repository חולקים Auto-Memory ו-CLAUDE.md. זה אומר שאם אתה עובד על Feature A ב-Worktree אחד ו-Feature B בשני — שניהם נהנים מאותו זיכרון. תובנה שClaude לומד ב-Feature A זמינה מיד ב-Feature B.

סיכום שבועי של CLAUDE.md — 10 דקות שחוסכות שעות

כל שבוע, הקדישו 10 דקות לסקירת מערכת הזיכרון. זו ההשקעה עם ה-ROI הכי גבוה בכל מה שלמדנו:

✎ עשה עכשיו (10 דקות)

הקם מערכת Persistence מלאה:

  1. צור תיקיית decisions/ וכתוב ADR אחד על החלטה ארכיטקטונית חשובה בפרויקט
  2. צור CURRENT-TASK.md עם המשימה הנוכחית — מה נעשה, מה נשאר, מה חוסם
  3. ודא שהודעות ה-Commit שלך תיאוריות — תקן את המוסכמה אם צריך
  4. הוסף תזכורת שבועית ביומן (יום א' בבוקר?) לסקירת CLAUDE.md ו-Auto-Memory

Frameworks להחלטות

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

Framework 1: "היררכיית הזיכרון" — מה שמים איפה

כשיש לך מידע חדש שClaude צריך לדעת, עבור על עץ ההחלטות הזה:

מסגרת החלטה: היררכיית מיקום זיכרון

האם זה רלוונטי לכל הפרויקטים שלי?
→ כן → ~/.claude/CLAUDE.md (גלובלי אישי)

האם זה יציב ולא ישתנה בקרוב?
→ כן → CLAUDE.md (פרויקט) — ארכיטקטורה, פקודות, סטנדרטים

האם זה רלוונטי רק לסוג קבצים מסוים / תיקייה ספציפית?
→ כן → .claude/rules/ עם Glob מתאים

האם זה מתפתח ומשתנה עם הזמן?
→ כן → תן ל-Auto-Memory לנהל, סקור מדי פעם

האם זה חד-פעמי?
→ כן → השאר בשיחה הנוכחית — אל תשמור

Framework 2: "Resume לעומת Fresh Start" — מתי לחדש ומתי להתחיל מחדש

מסגרת החלטה: Resume לעומת Fresh Start

האם עברו פחות מ-4 שעות מהשיחה האחרונה?
→ כן → /resume — ההקשר עדיין טרי ורלוונטי

האם אתה ממשיך את אותה משימה בדיוק?
→ כן → /resume או Context Refresh עם סיכום ממוקד

האם השיחה האחרונה הייתה ארוכה מאוד (100+ הודעות)?
→ כן → שיחה חדשה + סיכום. Resume על שיחה ארוכה מבזבז Context על הודעות ישנות

האם אתה מתחיל משימה חדשה?
→ כן → שיחה חדשה לגמרי. הקשר ישן יזהם את העבודה החדשה

Framework 3: "גודל הזיכרון" — כמה מידע לשים ב-CLAUDE.md

מסגרת החלטה: גודל CLAUDE.md

CLAUDE.md קטן מ-200 שורות?
→ מצוין. יש הרבה מקום להוסיף. הכל יכול להישאר

CLAUDE.md בין 200-500 שורות?
→ סביר אבל מתקרב לגבול. שקול להעביר כללים ספציפיים ל-Rules

CLAUDE.md מעל 500 שורות?
→ גדול מדי. חובה לפצל. העבר כללים לפי דומיין ל-.claude/rules/ עם Globs

CLAUDE.md מעל 1,000 שורות?
→ בעייתי מאוד. צורך 5%+ מה-Context בכל שיחה. עצור הכל ופצל מיד

טעויות נפוצות — מה לא לעשות עם מערכת הזיכרון

טעות נפוצה: 7 טעויות שPower Users עושים עם מערכת הזיכרון
  1. CLAUDE.md ענק של 1,000+ שורות: צורך 5%+ מה-Context בכל שיחה, מאט את Claude, וקשה לתחזוקה. פתרון: פצל ל-Rules עם globs. שמור ב-CLAUDE.md רק מידע כללי.
  2. Auto-Memory שלא מסוקר: Claude שומר מידע שגוי או ישן, ואז פועל לפי "עובדות" לא נכונות בלי שתדע. פתרון: סקירת /memory שבועית.
  3. כל הכללים ב-CLAUDE.md, אפס ב-Rules: גם כללי TypeScript, גם Docker, גם Testing — הכל נטען בכל שיחה. פתרון: העבר כללים ספציפיים-לקבצים ל-.claude/rules/ עם globs.
  4. Resume על שיחה של 200+ הודעות: טוען כמות עצומה של הקשר ישן, משאיר מעט מקום לעבודה חדשה. פתרון: שיחה חדשה + Context Refresh עם סיכום ממוקד.
  5. לא מגדירים compactInstructions: כשClaude עושה Auto-Compact, הוא מחליט לבד מה לשמור ומה לזרוק — ולפעמים זורק מידע קריטי. פתרון: הגדר "תמיד שמור" ו"תמיד זרוק" פעם אחת.
  6. שמות שיחות גנריים: 30 שיחות בלי שמות = בלתי אפשרי למצוא מה שצריך. פתרון: תמיד claude -n "project-task-date".
  7. שכפול מידע בין CLAUDE.md, Rules, ו-Auto-Memory: אותו כלל מופיע ב-3 מקומות — בזבוז טוקנים וסיכון לסתירות. פתרון: כל פיסת ידע במקום אחד בלבד. השתמש בטבלת "מה שמים איפה" מלמעלה.

שגרת עבודה — תחזוקת זיכרון שוטפת

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

מערכת זיכרון היא לא "הגדר ושכח" — היא דורשת תחזוקה שוטפת כדי להישאר מדויקת ויעילה. בנוסף לשגרת ה-Hooks מפרק 1 ושגרת ה-Worktrees מפרק 6 — הנה שגרת הזיכרון:

שגרת תחזוקת זיכרון — יומי / שבועי / חודשי

יומי (2-3 דקות)

שבועי (10 דקות — מומלץ יום א' בבוקר)

חודשי (20 דקות — ראשון לחודש)

תרגילים מעשיים

בינוני 30 דקות חינם תרגול

תרגיל 1: בניית מערכת זיכרון מלאה מאפס

🛠 תרגיל — Memory System Setup

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

  1. CLAUDE.md גלובלי: צור ~/.claude/CLAUDE.md עם העדפות אישיות — שפה, סגנון, כללי בטיחות, כלים מועדפים
  2. CLAUDE.md פרויקטי: צור ./CLAUDE.md עם ארכיטקטורה, פקודות, סטנדרטים, החלטות חשובות, ומלכודות ידועות
  3. Rules: צור לפחות 3 קבצים ב-.claude/rules/ עם globs מתאימים
  4. Auto-Memory: הגדר autoMemoryDirectory ל-.claude/memory/ בתוך הפרויקט
  5. compactInstructions: הגדר מה לשמור ומה לזרוק בזמן Compact
  6. בדיקה: עבוד 10 דקות עם Claude. סגור את השיחה. פתח שיחה חדשה ובדוק — האם Claude יודע את ה-Tech Stack, הסטנדרטים, והפקודות בלי שתציין?

קריטריון הצלחה: בשיחה חדשה, Claude יודע את הפרויקט בלי הסברים חוזרים. שאל אותו "מה ה-Tech Stack שלנו?" ו"איך מריצים טסטים?" — הוא צריך לדעת.

תרגיל 2: מיגרציה מ-CLAUDE.md מונוליטי ל-Rules

🛠 תרגיל — CLAUDE.md to Rules Migration

מטרה: לפצל CLAUDE.md גדול (או לדמות אחד) לקבצי Rules ממוקדים.

  1. קרא את ה-CLAUDE.md הנוכחי וזהה 4-5 דומיינים (Frontend, Backend, Testing, DevOps, API)
  2. לכל דומיין — צור קובץ .claude/rules/<domain>.md
  3. הוסף globs מתאימים ב-YAML Frontmatter: TypeScript = ["*.ts", "*.tsx"], Testing = ["**/*.test.ts"]
  4. העבר את הכללים הרלוונטיים מ-CLAUDE.md לקבצי ה-Rules
  5. בדוק שנשאר ב-CLAUDE.md רק מידע כללי שלא תלוי-קבצים: ארכיטקטורה, החלטות, פקודות
  6. מדוד: כמה שורות ב-CLAUDE.md לפני ואחרי? המטרה: ירידה של 40%+

קריטריון הצלחה: CLAUDE.md קטן וממוקד (מתחת ל-300 שורות), Rules נטענים רק כשרלוונטי, ואין ירידה באיכות התשובות של Claude.

תרגיל 3: Resume, Fork, וניהול שיחות

🛠 תרגיל — Session Management

מטרה: לשלוט ב-Resume, Fork, Session Naming ו-Context Refresh.

  1. פתח שיחה עם שם: claude -n "memory-exercise"
  2. עבוד על משימה — למשל: "כתוב פונקציית Utility שמעבדת תאריכים בעברית"
  3. באמצע — הרץ /fork ונסה גישה אחרת להמרת התאריכים
  4. סגור את שתי השיחות (המקורית וה-Fork)
  5. חדש את השיחה המקורית עם claude --resume
  6. ודא שכל ההקשר חזר — Claude זוכר את הפונקציה שכתבתם ואת הגישה שבחרתם
  7. שנה את השם: /rename "memory-exercise-complete"

קריטריון הצלחה: Resume מחזיר הקשר מלא, Fork יוצר הסתעפות עצמאית שלא משפיעה על המקור, Session Naming עובד ומופיע ב-Prompt Bar.

תרגיל 4: Context Budget Challenge

🛠 תרגיל — Context Optimization

מטרה: לעבוד שיחה שלמה של 30+ דקות תוך מודעות לצריכת Context.

  1. פתח שיחה חדשה. שים לב לצריכת ה-Context בשורת הסטטוס
  2. עבוד על משימה (20 דקות) תוך שימוש מודע ב-Read עם offset/limit ו-Grep עם head_limit
  3. אחרי 15 הודעות, הרץ /compact keep the files we're editing and the test results
  4. המשך לעבוד. הרץ /compact שוב אחרי 15 הודעות נוספות
  5. בסיום, בדוק — כמה אחוז מה-Context השתמשת? האם הצלחת לעבוד 30+ דקות בלי Auto-Compaction?

קריטריון הצלחה: שיחה של 30+ דקות / 30+ הודעות בלי שה-Context התמלא ובלי Auto-Compaction, תוך שמירה על איכות התשובות לאורך כל השיחה.

אם אתה עושה רק דבר אחד

מתחיל 10 דקות חינם תרגול
🎯 הדבר האחד שישנה הכל

כתוב CLAUDE.md מלא ומדויק לפרויקט הראשי שלך.

מכל מה שלמדנו בפרק הזה, CLAUDE.md הפרויקטי הוא ה-ROI הכי גבוה. 15 דקות של כתיבה פעם אחת = חיסכון של דקות בכל שיחה, בכל יום, לכל חיי הפרויקט. תכלול: ארכיטקטורה, פקודות מפתח, סטנדרטים, מלכודות ידועות, והחלטות חשובות עם תאריכים. גם אם לא תגדיר Rules, Auto-Memory מותאם, או Session Naming — CLAUDE.md בלבד כבר משנה את חוויית העבודה לחלוטין. Claude יעבור מ"מי אתה ומה הפרויקט" ל"אני מכיר, בוא נתחיל לעבוד."

בדוק את עצמך

מתחיל 5 דקות חינם מושג
בדוק את עצמך — 5 שאלות (4 מתוך 5 = עובר)
  1. למה Auto-Memory לבד לא מספיק, ומה התפקיד של CLAUDE.md שהוא ממלא? (רמז: Auto-Memory שומר תובנות שClaude מגלה לבד — אבל לא יודע על ארכיטקטורה, החלטות, ומוסכמות שרק אתה מכיר. CLAUDE.md ממלא את הפער הזה).
  2. איך Conditional Activation ב-.claude/rules/ חוסך טוקנים לעומת CLAUDE.md מונוליטי? (רמז: Rules עם Globs נטענים רק כשClaude עובד על קבצים שמתאימים לדפוס — כל השאר לא צורך טוקנים כלל).
  3. מתי עדיף /resume ומתי עדיף Context Refresh עם שיחה חדשה? (רמז: /resume עד 4 שעות על אותה משימה. Context Refresh כששיחה ישנה/ארוכה מדי — 3 שורות הקשר חלקיות עדיפות על 200 הודעות ישנות).
  4. למה compactInstructions חיוני, ומה הסיכון בלעדיהם? (רמז: בלי הוראות מפורשות, Auto-Compaction עלול למחוק מידע קריטי — API endpoints, נתיבי קבצים, תוצאות טסטים — כי Claude מחליט לבד מה "חשוב").
  5. מה הגודל המומלץ ל-CLAUDE.md ולמה 500 שורות הוא הגבול? (רמז: מעל 500 שורות = 5K+ טוקנים = 2.5%+ מ-Context Window סטנדרטי בכל שיחה. מצטבר עם Auto-Memory, Rules, ו-System Prompt ל-10-15% לפני שהתחלת לעבוד).

סיכום הפרק

מתחיל 3 דקות חינם מושג
סיכום פרק 7 — זיכרון והמשכיות

התובנה המרכזית מהפרק הזה: Claude Code לא "זוכר" — אתה בונה לו זיכרון. מערכת זיכרון מרובת שכבות (Auto-Memory לתובנות מתפתחות, CLAUDE.md להקשר יציב, Rules לכללים ממוקדים) הופכת כל שיחה חדשה מ"מי אתה?" ל"בוא נמשיך." הקונספט שמחבר הכל: כל סוג מידע שייך למקום אחד ויחיד — ומה שנמצא במקום הנכון חוסך טוקנים, זמן, ותסכול. עם compactInstructions אתה שולט גם במה שנשמר בדחיסה. עם /resume ו-/fork אתה שולט בזרימת השיחות. עם ADRs ו-CURRENT-TASK.md אתה שולט בזיכרון ארוך טווח. התוצאה: כ-100 שעות חסכון בשנה על הסברים חוזרים, וClaude שעובד כאילו הוא חבר צוות ותיק שמכיר כל פינה בפרויקט. בפרק הבא נעבור ל-Security and Permissions — כי עכשיו שClaude יודע הכל, צריך לוודא שהוא עושה רק מה שמותר.

צ'קליסט — זיכרון והמשכיות

בדוק שהשלמת ✓