קובץ הנחיות אחד עבור Claude Code, Codex ו-Cursor בשנת 2026
Markdownמקור אמת אחד עבור Claude Code, Codex ו-Cursor בשנת 2026: מתי Claude Code קורא את AGENTS.md בעצמו, ייבוא של @AGENTS.md לתוך CLAUDE.md, קישור סמלי ו-/init.
קריאת המאמר המלא
למידע על השירות, עיינו בתיעוד של Ailoot.
מה משתנה כשמשתמשים יחד ב-Claude Code, ב-Codex וב-Cursor?
הנקודה המרכזית
בשנת 2026, ההתקנה הטיפוסית של מתכנתים בעזרת vibe כוללת לא כלי אחד, אלא 3–5. Claude Code ככלי הראשי, Codex למשימות אוטונומיות ארוכות, ו-Cursor לעריכות מהירות בסביבת הפיתוח המשולבת. לכל אחד יש קובץ הנחיות משלו: CLAUDE.md, AGENTS.md, .cursorrules. אם מסנכרנים אותם ידנית, עורכים שורה אחת בחמישה מקומות, שוכחים לעדכן את Cursor, וכעבור שבוע Claude ו-Codex נותנים תוצאות שונות לאותה הנחיה.
בדוגמה המתוארת, Claude Code הוא הכלי הראשי, ואילו Codex ו-Cursor משמשים למשימות מסוימות. ב-CLAUDE.md שלי יש כ-250 שורות של הנחיות: מה לקרוא ובאיזה סדר, במה אסור לגעת, באילו פקודות להשתמש לפריסה, וכללי עיצוב ל-commit. כשניסיתי לראשונה את Codex CLI בפרויקט, הוא לא הכיר אף אחד מהכללים: הוא הריץ git push --force, חיטט ב-.env ושינה שמות של קבצים ברשלנות.
תחילה העתקתי ידנית את CLAUDE.md אל AGENTS.md. כעבור שבועיים גיליתי שבפרויקט כבר היו ארבע גרסאות של אותה הנחיה: ב-CLAUDE.md, ב-AGENTS.md, ב-.cursorrules וב-.windsurf/rules/. כולן היו שונות מעט זו מזו. זו אינה בעיה של Claude או של Cursor; זו המלכודת הבסיסית בכל מערכת עם כמה מקורות אמת. אני דן בכך בהרחבה במדריך לעבודה עם כמה סוכנים.
ביוני 2026, תיעוד הזיכרון של Claude Code מבית Anthropic הציע פתרון אחד: קובץ משותף וייבוא. מאז ספטמבר 2026, Claude Code קורא את AGENTS.md בעצמו אם בפרויקט אין CLAUDE.md, ונדרש ייבוא כשיש לכם כללים שמיועדים במיוחד ל-Claude. בהמשך אסביר מתי AGENTS.md יחיד מספיק, איך להגדיר ייבוא ואיך להפריד בין כללים משותפים לכללים שמיועדים ל-Claude בלבד.
האם Claude Code קורא את AGENTS.md בעצמו?
הנקודה המרכזית
כן, החל מגרסה 2.1.277, שפורסמה ב-18 בספטמבר 2026, אבל רק אם אין CLAUDE.md, .claude/CLAUDE.md או CLAUDE.local.md בספריית העבודה או באחת הספריות שמעליה. אם קיים CLAUDE.md, Claude Code קורא כברירת מחדל רק את הקובץ הזה, ו-AGENTS.md נכלל באמצעות השורה @AGENTS.md בתוך CLAUDE.md או באמצעות קישור סמלי. ההתנהגות משתנה ב-/config, תחת Project instructions. לפני ספטמבר, Claude Code כלל לא קרא את AGENTS.md, וייבוא היה הדרך היחידה.
לפני ספטמבר 2026, התשובה הייתה „לא”. Issue #6235, שביקש תמיכה ב-AGENTS.md, היה פתוח מאז אוגוסט 2025 ונסגר ב-17 באוגוסט 2026. תיעוד הזיכרון הצביע כל הזמן על פתרון אחד: ליצור CLAUDE.md ולכלול בו את AGENTS.md באמצעות ייבוא. החל מגרסה 2.1.277, התיעוד אומר דבר אחר:
Claude Code יכול לקרוא את
AGENTS.mdכהנחיות פרויקט, כך שמאגר שכבר הוגדר לעבודה עם סוכנים אחרים פועל בליCLAUDE.md, ייבוא או הגדרה.
הקבצים שבפרויקט קובעים בדיוק מה Claude Code קורא:
| קבצים בפרויקט | מה Claude Code קורא |
|---|---|
AGENTS.md, בלי CLAUDE.md או CLAUDE.local.md בספריית העבודה או באחת הספריות שמעליה | AGENTS.md |
AGENTS.md וגם CLAUDE.md (או CLAUDE.local.md) בספריית העבודה או באחת הספריות שמעליה | רק CLAUDE.md |
CLAUDE.md עם השורה @AGENTS.md | CLAUDE.md, ובתוכו AGENTS.md דרך הייבוא |
לצורך הבדיקה הזאת, CLAUDE.md, .claude/CLAUDE.md ו-CLAUDE.local.md בספריית העבודה ובכל ספרייה שמעליה נחשבים. קובץ אישי ~/.claude/CLAUDE.md, קובץ מנוהל ארגונית וכללים מתוך .claude/rules/ אינם נחשבים: הם נטענים לצד AGENTS.md.
כשאין CLAUDE.md, Claude Code קורא בעת ההפעלה את כל הקבצים AGENTS.md ו-.claude/AGENTS.md בספריית העבודה ובספריות שמעליה, ומעלה קובץ AGENTS.md שבתת-ספרייה כשפותחים קובץ שנמצא בה. גם ייבואי @path בתוך AGENTS.md פועלים. Claude Code אינו קורא את AGENTS.local.md, AGENTS.override.md או את התוכן של הספרייה .agents/.
הבעיה: גם CLAUDE.local.md אישי נחשב. יוצרים קובץ כזה כדי לשמור בו כללים שלא הוכנסו ל-commit, ו-Claude Code מפסיק לקרוא את AGENTS.md בלי להודיע. ההגדרה שלהלן פותרת זאת.
ההתנהגות משתנה ב-/config, תחת Project instructions:
| הגדרה | מה Claude Code קורא |
|---|---|
claude-md-or-agents-md (ברירת מחדל) | CLAUDE.md, או, אם לא CLAUDE.md ולא CLAUDE.local.md קיימים, AGENTS.md |
claude-md-and-agents-md | שני הקבצים: בכל ספרייה, תחילה CLAUDE.md ואחריו AGENTS.md |
claude-md | רק CLAUDE.md |
managed-only | רק CLAUDE.md המנוהל ארגונית והזיכרון האוטומטי |
אם ברצונכם להשאיר את CLAUDE.local.md בלי לוותר על AGENTS.md, הגדירו claude-md-and-agents-md. לא תהיה קריאה כפולה: אם AGENTS.md כבר נכלל באמצעות שורת @AGENTS.md או קישור סמלי, Claude Code לא יטען אותו פעם נוספת, ללא קשר להגדרה.
אפשר לבדוק אם הקובץ זוהה באמצעות הפקודה /memory: החל מגרסה 2.1.280, הנתיב ל-AGENTS.md מופיע ברשימה. בגרסאות שלפני 2.1.277 ובשיחות שבהן התוסף המובנה agents-md מושבת, Claude Code קורא רק את CLAUDE.md, ואין פריט Project instructions ב-/config. לפני גרסה 2.1.281, שיחות דרך Amazon Bedrock ושיחות שבהן הטלמטריה מושבתת התנהגו באותו אופן. גם בשיחה הראשונה אחרי עדכון מגרסה ישנה ייתכן ש-AGENTS.md לא יזוהה; הוא יפעל החל מהשיחה הבאה.
מה זה אומר להתקנה עם קובץ אחד? אם אין לכם כללים שמיועדים ל-Claude בלבד, אפשר לוותר על CLAUDE.md: AGENTS.md מספיק, ו-Claude Code, Codex ו-Cursor יקראו אותו. אם יש לכם כללים כאלה (plan mode לספריות מסוכנות, skills, hooks), דרוש CLAUDE.md, ו-Claude Code יפסיק לקרוא את AGENTS.md בעצמו. במקרה כזה, כללו את AGENTS.md בתוך CLAUDE.md באמצעות השורה @AGENTS.md; ההגדרה הזאת פועלת בדיוק כמו לפני ספטמבר. היא עוזרת גם עם גרסאות ישנות יותר של Claude Code. אסביר זאת בפירוט בהמשך.
איך מייבאים את @AGENTS.md לתוך CLAUDE.md?
הנקודה המרכזית
נדרש ייבוא כשהפרויקט מכיל CLAUDE.md: כשקובץ כזה קיים, Claude Code אינו קורא את AGENTS.md בעצמו כברירת מחדל. כדי להגדיר זאת, כתבו את השורה @AGENTS.md בראש הקובץ CLAUDE.md. כש-Claude Code מתחיל שיחה, הוא מציב את תוכן AGENTS.md במקום השורה הזאת וקורא את התוצאה כטקסט אחד. מתחת לייבוא אפשר להוסיף סעיף „Claude Code” עם כללים שחלים רק על Claude. ייבוא פועל עם נתיבים יחסיים ומוחלטים, ואפשר לקנן אותו עד ארבע רמות עומק.
דוגמה מינימלית ופועלת מתוך התיעוד הרשמי:
@AGENTS.md
## Claude Code
Use plan mode for changes under `src/billing/`.
כך זה עובד. השורה הראשונה, @AGENTS.md, היא הוראת ייבוא. כש-Claude Code מנתח את CLAUDE.md בתחילת שיחה, הוא מוצא את הייבוא ומציב במקומו את כל התוכן של AGENTS.md. אחר כך מופיעה הכותרת ## Claude Code: זהו Markdown רגיל, אבל היא משמשת כסעיף „תוספות שמיועדות ל-Claude”. מתחתיה מופיע כלל שחל רק על Claude Code: להשתמש ב-plan mode לשינויים בספריית החיוב. Codex CLI או Cursor אינם פותחים את הקובץ הזה כלל; הם משתמשים ב-AGENTS.md הרגיל.
ציטוט מהתיעוד על אופן פעולת הייבוא:
קובצי CLAUDE.md יכולים לייבא קבצים נוספים באמצעות התחביר
@path/to/import. הקבצים המיובאים מורחבים ונטענים להקשר בתחילת השיחה, יחד עם קובץ CLAUDE.md שמפנה אליהם.
כמה פרטים שימושיים:
- נתיבים יחסיים ומוחלטים.
@AGENTS.mdהוא נתיב יחסי לקובץ שמכיל את הייבוא. הנתיבים@/Users/me/shared/rules.mdאו@~/.claude/personal.mdהם מוחלטים. אני משתמש ב-@~/.claude/personal.mdלהעדפות אישיות שאיני רוצה להכניס למאגר. - עומק של ארבעה שלבים.
AGENTS.mdיכול לייבא את@docs/coding-style.md, והקובץcoding-style.mdיכול לייבא קובץ נוסף, עד ארבע רמות. זה מספיק לכל מבנה מעשי. - גרשיים הפוכים חוסמים ייבוא. אם הטקסט אומר
`@README`, מדובר רק באזכור של השם, לא בייבוא. כך אפשר להסביר לקוראים איך ייבוא פועל בלי להפעיל אותו. - אישור לקבצים שמחוץ לפרויקט. אם ייבוא מפנה מחוץ לספריית העבודה, כמו
@~/.claude/personal.md, Claude Code מציג בפעם הראשונה תיבת דו-שיח עם רשימת הקבצים האלה. אם מסרבים, ייבוא חיצוני נשאר מושבת ותיבת הדו-שיח לא תוצג שוב.@AGENTS.mdבשורש הפרויקט אינו גורם להצגת תיבת דו-שיח. כך נמנעת טעינה מקרית של קובץ לא קשור להקשר.
אחרי שעברתי להגדרה הזאת בפרויקט המתואר, CLAUDE.md התקצר מ-250 שורות ל-60: @AGENTS.md ועוד חמישה עד שבעה כללים שחלים רק על Claude Code (plan mode לספריות מסוכנות, ממה להימנע באזור הניהול ואיך לנסח commits). כל מה שמשותף נמצא ב-AGENTS.md, שאותו Codex ו-Cursor קוראים.
מתי לבחור בקישור סמלי ומתי בייבוא?
הנקודה המרכזית
Anthropic מציעה שני מנגנונים: ייבוא באמצעות @AGENTS.md או קישור סמלי, ln -s AGENTS.md CLAUDE.md. קישור סמלי פשוט יותר — הוא רק כינוי ואינו דורש שינוי בקבצים. אבל יש לו שלושה חסרונות: ב-Windows נדרשות הרשאות מנהל, אי אפשר להוסיף כללים שמיועדים רק ל-Claude ל-CLAUDE.md, ולפעמים Git מציג קישור סמלי כזבל ב-diff. ייבוא הוא הגישה האוניברסלית. אם אין לכם כללים שמיועדים ל-Claude בלבד, אז החל מגרסה 2.1.277 אין צורך גם בזה וגם בזה: Claude Code יקרא את AGENTS.md בעצמו.
התיעוד מציג את אפשרות הקישור הסמלי כך:
ln -s AGENTS.md CLAUDE.md
ומיד מוסיף אזהרה מפורשת לגבי Windows:
אם אתם או מישהו שמשכפל את המאגר עובדים ב-Windows, השתמשו בייבוא `@AGENTS.md`. יצירת קישור סמלי שם דורשת הרשאות מנהל או Developer Mode, ו-Git ללא `core.symlinks` מופעל משכפל קישור שנשמר ב-commit כקובץ טקסט רגיל, ומשאיר `CLAUDE.md` בן שורה אחת במקום ההנחיות בעותק הזה.
טבלת השוואה:
| קריטריון | ייבוא @AGENTS.md | קישור סמלי ln -s |
|---|---|---|
| פועל ב-Windows ללא הרשאות מנהל | כן | לא (נדרש Developer Mode) |
| אפשר להוסיף כללים שמיועדים רק ל-Claude | כן, מתחת לייבוא | לא, הקובץ זהה |
| מופיע ב-Git כ-Markdown רגיל | כן | כקישור (תלוי ב-core.symlinks) |
| אפשר לייבא כמה קבצים | כן, עד ארבע רמות | לא, אחד לאחד |
| שמירה במטמון/ביטול תוקף ב-Claude Code | סטנדרטיים עבור CLAUDE.md | פועלים, אבל לקישורים סמליים יש מלכודות מטא-נתונים |
| בחירת ברירת מחדל | מתאים לכולם | רק אם שימוש חוצה פלטפורמות אינו חשוב |
אני משתמש בייבוא בפרויקט המתואר. הסיבות לכך:
- הצוות מעורב. אני משתמש ב-Mac; בדוגמה, הצוות מתחלק בערך שווה בשווה בין משתמשי Windows ו-Mac. אם קישור סמלי מופיע במאגר, משתמשי Windows בלי Developer Mode יקבלו אותו כקובץ טקסט רגיל שמכיל שורה אחת,
AGENTS.md. זה גורם לבאגים מוזרים: לפעמים הכללים פועלים ולפעמים לא, ולא ברור למה. - אני רוצה כללים שמיועדים רק ל-Claude. מתחת ל-
@AGENTS.md, יש ב-CLAUDE.mdשלי סעיף „Claude Code” עם כללים: להשתמש ב---effort highלמשימות ארכיטקטורה, להריץnpm run buildלפניgit push, ולא לקרוא ל-/api/v1/deployידנית. Codex אינו מבין את הפקודות האלה. - קל יותר לנפות תקלות. כשמשהו משתבש, אני פותח את
CLAUDE.mdורואה את הייבוא ואת החריגות שלי. בקישור סמלי אין סימון „זה נוסף כאן”. למידע נוסף על ניפוי תקלות בהגדרות Claude Code, עיינו במדריך למצב בטוח.
אם אין לכם כללים שמיועדים ל-Claude בלבד, החל מגרסה 2.1.277 אין עוד צורך בקישור סמלי: מחקו את CLAUDE.md, ו-Claude Code יקרא את AGENTS.md בעצמו. השאירו את הקישור הסמלי רק אם מישהו בצוות משתמש בגרסה ישנה מ-2.1.277 ואינו יכול לעדכן. אם יש לכם כללים שמיועדים ל-Claude בלבד, ייבוא נוח יותר בתשעה מקרים מתוך עשרה.
מה קוראים Codex, Cursor, Copilot, Windsurf ו-Gemini CLI?
הנקודה המרכזית
כל כלי קורא קובץ משלו, ולעיתים יותר מאחד. Claude Code קורא את CLAUDE.md, ומאז ספטמבר 2026 קורא גם את AGENTS.md אם אין בפרויקט CLAUDE.md. Codex CLI קורא את AGENTS.md וגם את AGENTS.override.md. Cursor קורא את הפורמט הישן .cursorrules או את הפורמט החדש .cursor/rules/*.mdc, ומאז קיץ 2026 קורא גם את AGENTS.md. Copilot קורא את .github/copilot-instructions.md או את .github/instructions/*.instructions.md. Windsurf קורא את .windsurfrules הישן או את .windsurf/rules/ החדש. Gemini CLI קורא את GEMINI.md. Aider ו-Cline כבר אימצו את AGENTS.md.
מפת שבעת הכלים המרכזיים (מבוססת על התיעוד הרשמי של כל כלי):
| כלי | קובץ ההנחיות הראשי | חלופות | קורא AGENTS.md? |
|---|---|---|---|
| Claude Code | CLAUDE.md | ~/.claude/CLAUDE.md, ./.claude/CLAUDE.md, מדיניות מנוהלת | כן, אם אין בפרויקט CLAUDE.md (מאז 2.1.277), אחרת באמצעות ייבוא |
| Codex CLI (OpenAI) | AGENTS.md | AGENTS.override.md | כן (באופן מובנה) |
| Cursor | .cursor/rules/*.mdc | .cursorrules (הוצא משימוש) | כן |
| GitHub Copilot | .github/copilot-instructions.md | .github/instructions/*.instructions.md | באמצעות הרחבות |
| Windsurf | .windsurf/rules/ | .windsurfrules (הוצא משימוש) | כן |
| Gemini CLI | GEMINI.md | - | לא |
| Aider, Cline, opencode | AGENTS.md | - | כן (באופן מובנה) |
מה נובע מכך? אם יש במאגר AGENTS.md (וגם CLAUDE.md עם ייבוא כשנחוצים כללים שמיועדים ל-Claude), חמישה מתוך שבעת הכלים מקבלים הוראות עדכניות באופן אוטומטי. אפשר להשאיר את Cursor ואת Windsurf, שיש להם קבצים מובנים משלהם, כפי שהם (AGENTS.md נקרא גם על ידם), או להוסיף ייבוא @AGENTS.md — אבל התחביר שלהם שונה ולא תמיד נתמך.
האסטרטגיה הפשוטה ביותר לפרויקט חדש:
- שימו את כל הכללים המשותפים ב-
AGENTS.md— 95% מהכללים שייכים לשם. - צרו
CLAUDE.mdאם נחוצים כללים שמיועדים רק ל-Claude: שימו בשורה הראשונה את@AGENTS.md, ואז הוסיפו סעיף עם כללים שמיועדים רק ל-Claude. אם אין כללים כאלה, אין צורך ב-CLAUDE.md; Claude Code קורא אתAGENTS.mdבעצמו מאז גרסה 2.1.277. - השאירו את
.cursor/rules/עבור Cursor למקרים נדירים שבהם נחוץ משהו שמיועד ל-Cursor בלבד (הפקודות@Codebaseו-@Docsשלו). - עשו אותו דבר עם Windsurf: שכחו את
.windsurfrulesהישן; השתמשו ב-.windsurf/rules/החדש רק כשנחוצים דפוסים שמתאימים לתחביר שלו.
הגישה הזאת מספקת 80% מהתועלת ב-20% מהעבודה. מניסיוני, כשארגנתי צוותים מעורבים ב„אנטיגרביטי”, תחזוקה של יותר משני מקורות אמת (משותף ו-Claude בלבד) נעשית מכבידה. אם מישהו בצוות מוסיף כלל ל-.cursorrules ושוכח את AGENTS.md, כעבור שבוע Cursor ו-Codex לא יסכימו זה עם זה.
איך /init ב-Claude Code קולט AGENTS.md קיים?
הנקודה המרכזית
/init יוצר CLAUDE.md על סמך מה שכבר נמצא במאגר וחוסך 20–30 דקות של עבודה ידנית. כברירת מחדל, הוא קולט את כללי Cursor (.cursor/rules/, .cursorrules) ואת כללי Copilot (.github/copilot-instructions.md), ואילו את AGENTS.md, .windsurfrules ו-.clinerules הוא קורא במצב CLAUDE_CODE_NEW_INIT=1. אותו מצב מפעיל תהליך אינטראקטיבי מרובה שלבים: הוא שואל שאלות, בוחן את הקוד באמצעות תת-סוכן ומציע תוכנית לפני הכתיבה. מאז ספטמבר 2026 יש ל-/init חיסרון בפרויקט עם AGENTS.md: קובץ CLAUDE.md חדש מפסיק את הקריאה הישירה של AGENTS.md, והכללים מופיעים בשני קבצים.
Anthropic מתארת כך את /init בתיעוד שלה:
הרצת
/initקוראת קובצי הנחיות של כלים אחרים ומעבירה חלקים רלוונטיים אלCLAUDE.mdשנוצר: כללי Cursor מתוך.cursor/rules/או.cursorrules, כללי Copilot מתוך.github/copilot-instructions.md, ובאמצעותCLAUDE_CODE_NEW_INIT=1גם אתAGENTS.md,.devin/rules/,.windsurf/rules/או.windsurfrules, ואת.clinerules.
מה המשמעות בפועל? במאגר שתיארתי היו .cursorrules מתקופת הניסיון שלי ב-Cursor (כ-80 שורות), ו-AGENTS.md (120 שורות, שהרכבתי ידנית). כשהרצתי claude /init, הפקודה לקחה את שני הקבצים, הסירה כללים דומים והרכיבה CLAUDE.md מסודר בתוך דקה. בדקתי אותו אחר כך וביצעתי עריכות קלות — הסרתי פריטים מיושנים והוספתי מבנה עם כותרות. זה היה מהיר יותר מכתיבה מחדש מאפס.
המצב האינטראקטיבי, שבו /init קורא גם את AGENTS.md, מופעל באמצעות משתנה סביבה:
CLAUDE_CODE_NEW_INIT=1 claude
לאחר הפעלת /init, Claude שואל סדרת שאלות הבהרה: אילו פריטים להגדיר (CLAUDE.md, skills, hooks), באיזו מחסנית משתמש הפרויקט ואילו פקודות להריץ לבדיקות. אחר כך תת-סוכן בוחן את בסיס הקוד — קורא את package.json, README.md וקובצי הגדרות — ומשלים את החלקים החסרים. בסוף הוא מציג הצעה שאפשר לערוך לפני השמירה. למידע נוסף על הגדרת Claude Code בתחילת פרויקט, עיינו במדריך נפרד.
ועכשיו החיסרון. אם בפרויקט כבר יש AGENTS.md פעיל, /init ייצור לצדו CLAUDE.md שיכיל עותק של הכללים שבו. מאותו רגע Claude Code קורא כברירת מחדל רק את CLAUDE.md, ולכן יש שוב שני מקורות אמת: אתם מעדכנים את AGENTS.md, בעוד Claude ממשיך לפעול לפי העותק הישן. הפקודה /import עושה דבר דומה: היא מוסיפה ל-CLAUDE.md עותק חד-פעמי של AGENTS.md. כדי לשמור על מקור אמת אחד, שימו את הייבוא @AGENTS.md בשורה הראשונה של CLAUDE.md אחרי /init, והסירו מ-CLAUDE.md כל דבר שחוזר על AGENTS.md.
/init היא נקודת פתיחה מתאימה לפרויקט חדש או לפרויקט שמעבירים מ-Cursor או Copilot. אין צורך לחפש ברשת „תבנית CLAUDE.md הטובה ביותר” — Anthropic כבר מתחשבת בתוכן המאגר. אם בפרויקט כבר יש AGENTS.md פעיל ואין כללים שמיועדים ל-Claude בלבד, אין צורך ב-/init: Claude Code יקרא את AGENTS.md בעצמו.
איך מפרידים בין הנחיות משותפות להנחיות שמיועדות ל-Claude?
הנקודה המרכזית
שימו ב-AGENTS.md כללים שכל סוכן AI יכול להבין: במה אסור לגעת, איך לתת שמות לענפים, ש-.env מכיל סוד, ואילו פקודות להריץ לבדיקות. שימו ב-CLAUDE.md (מתחת לייבוא) כללים שמיועדים ל-Claude Code: plan mode, skills, hooks, הפניות ל-skills ושמות מודלים לפי גרסה. ההבחנה פשוטה: אם כלל מתחיל ב„Claude צריך”, מקומו ב-CLAUDE.md. אם הוא מתחיל ב„הכלי צריך”, מקומו ב-AGENTS.md.
אני מפריד ביניהם לפי העיקרון הזה. כללים משותפים שנכנסים ל-AGENTS.md:
- במה אסור לגעת בקוד. התיקיות
.env,node_modules,prisma/migrations(רק באמצעותprisma migrate),.next/,.git/. - איך לתת שמות לדברים. ענפים:
feat/,fix/,chore/. Commits: הקידומותfeat:,fix:,docs:בתוספת תיאור קצר. שמות קובצי רכיבים ב-kebab-case. - פקודות בדיקה ו-lint.
npm run build,npm run lint,npm test. איזו פקודה להריץ לפניgit push. - עקרונות ארכיטקטוניים. מה נכנס ל-
src/lib/, מה ל-src/components/, היכן נמצאת הלוגיקה העסקית והיכן ממשק המשתמש. - אבטחה. לעולם אל תכללו סודות ב-commit. גשו למסד הנתונים של הייצור רק דרך
prod-psql. גשו לייצור דרך SSH רק באמצעות הכינויprod, ולא באמצעותroot@IP.
כללים שמיועדים ל-Claude בלבד ונכנסים ל-CLAUDE.md (מתחת ל-@AGENTS.md):
- Plan mode. השתמשו ב-
plan modeלשינויים בספריות מסוכנות (למשלsrc/billing/). - רמת מאמץ. השתמשו ב-
--effort highלמשימות ארכיטקטורה וב-mediumלעבודה שגרתית. - Skills. באילו סוכני AI וכישורים להשתמש בכל מצב. לדוגמה: „כשעובדים על מדריך, הפעילו את ה-skill
build-masterskaya-guide.” - הזיכרון של Claude. מה לשים בזיכרון האוטומטי ומה לשים ב-
CLAUDE.local.md. למידע נוסף על הזיכרון של Claude, עיינו במדריך לזיכרון ול-CLAUDE.md. - Hooks. אם מוגדרים hooks ב-
.claude/settings.json, תארו ב-CLAUDE.mdמה הם עושים (Codex ו-Cursor אינם מכירים אותם, וגם אינם צריכים להכיר אותם). - Skills ופקודות. רשימת פקודות הלוכסן שבהן אני משתמש לעיתים קרובות (
/init,/cd,/memory,/plan).
הגבול לא תמיד ברור. למשל, „לעולם אל תריצו git push --force אל main” הוא בבירור כלל משותף, ולכן מקומו ב-AGENTS.md. אבל „לפני הרצת git push לענף פעיל, השתמשו קודם ב-plan mode” הוא כלל שמיועד ל-Claude Code בלבד, ולכן מקומו ב-CLAUDE.md. המבחן: „אם הייתי מסיר מחר את Claude Code ומשאיר רק את Codex, האם הכלל הזה עדיין היה חל?” אם כן, שימו אותו ב-AGENTS.md. אם לא, שימו אותו ב-CLAUDE.md.
מה שייך ל-AGENTS.md ומה שייך ל-CLAUDE.md או ל-.claude/rules?
הנקודה המרכזית
בפרויקט גדול, AGENTS.md אחד אינו מספיק — הוא גדל יתר על המידה, וכל סוכן מכניס להקשר שלו חומר מיותר. הפתרון הוא ספריית .claude/rules/ עם קבצים נפרדים לפי נושא, ו-YAML frontmatter עם paths: שמגדיר הפעלה לפי נתיב. לדוגמה, כלל API חל רק כש-Claude עובד ב-src/api/. כך חוסכים הרבה מקום בחלון ההקשר. המקבילות עבור Cursor ו-Windsurf הן .cursor/rules/ ו-.windsurf/rules/.
אם הכללים עולים על 200 שורות, הגיע הזמן לפצל אותם. התיעוד של Anthropic ממליץ לכוון ל-200 שורות בכל קובץ, כי קובצי CLAUDE.md ארוכים גורמים לירידה שקטה בעקביות הציות להנחיות: נדמה ש-Claude קורא אותם, אך הוא פועל לפיהם פחות פעמים.
מבנה לפרויקט גדול שעובד בשבילי:
my-project/
├── AGENTS.md # 100-150 lines, shared
├── CLAUDE.md # 30-50 lines: @AGENTS.md + Claude-only
└── .claude/
├── CLAUDE.md # alternative to root file, same file
└── rules/
├── api.md # with paths: ['src/api/**']
├── components.md # with paths: ['src/components/**']
├── testing.md # without paths, always active
└── security.md # without paths, always active
כל קובץ ב-.claude/rules/ יכול להכיל frontmatter:
---
paths:
- "src/api/**/*.ts"
---
# API rules
- Every endpoint validates input with zod
- Errors use the standard `{error, code}` format
- OpenAPI comments are required
Claude טוען את הכללים האלה רק כשעובדים עם קבצים שתואמים לתבנית הזאת. אם הוא נוגע ב-src/components/Button.tsx, כללי ה-API לא מתווספים להקשר. כך חלון ההקשר משמש רק למה שרלוונטי. ספריית .claude/rules/ פועלת גם ללא CLAUDE.md: אם בפרויקט יש רק AGENTS.md, הכללים נטענים לצדו ואינם מבטלים את הקריאה הישירה של AGENTS.md.
Cursor ו-Windsurf תומכים באותה גישה באמצעות הספריות .cursor/rules/ ו-.windsurf/rules/. תקן AGENTS.md יכול להפנות לספריות האלה, אבל התחביר החוצה-כלים עדיין אינו יציב לגמרי. בטוח יותר להשאיר את הכללים המשותפים ב-AGENTS.md ולהעתיק כללים לפי נתיב אל .claude/rules/ ו-.cursor/rules/ — אלה מקרים ספציפיים נדירים, ולא עיקר הכללים.
מיקומים שימושיים עבור CLAUDE.md (מהרחב ביותר לצר ביותר):
| רמה | מיקום | מטרה |
|---|---|---|
| מדיניות מנוהלת | /Library/Application Support/ClaudeCode/CLAUDE.md (Mac), /etc/claude-code/CLAUDE.md (Linux) | כללים ארגוניים, IT/DevOps |
| משתמש | ~/.claude/CLAUDE.md | העדפות אישיות בכל הפרויקטים |
| פרויקט | ./CLAUDE.md או ./.claude/CLAUDE.md | כללי צוות הפרויקט |
| מקומי | ./CLAUDE.local.md (ב-.gitignore) | העדפות אישיות לפרויקט מסוים |
דוגמה ל-~/.claude/CLAUDE.md עשויה לכלול שני כללים: „השיבו בשפה המועדפת על המשתמש” ו„כתבו Ailoot בדיוק כך”. הכללים האלה חלים על כל פרויקט, ולכן אין צורך לשכפל אותם בכל מאגר.
מבין ארבע הרמות האלה, רק CLAUDE.md ברמת הפרויקט ו-CLAUDE.local.md מבטלים את הקריאה הישירה של AGENTS.md. קובץ ~/.claude/CLAUDE.md אישי ומדיניות מנוהלת אינם מפריעים; Claude Code קורא אותם לצד AGENTS.md.
מה לעשות אם AGENTS.md בפרויקט כבר מיושן?
הנקודה המרכזית
אם AGENTS.md הורכב ב-2025 עבור Codex או Aider ולא נערך מאז, פתחו את הפרויקט ב-Claude Code ובקשו מ-Claude לערוך את הקובץ. AGENTS.md הוא מסמך חי; המפרט של Linux Foundation מתעדכן. הכלל המרכזי לשמירה על עדכניות: כל כלל חייב לענות על השאלה „על מה נמאס לי לחזור בפני Claude/Codex?” אם הוא לא עונה עליה, העבירו אותו לארכיון.
בפרויקט שתיארתי היה לי AGENTS.md ממאי 2025 — 180 שורות, רבות מהן מיושנות (הוא הזכיר נקודות קצה של Anthropic API שהשתנו מאז; דוגמאות עם התחביר claude --tools שכבר אינו קיים; וכללים על ~/.claude/projects/ עם מבנה מיושן).
התוכנית שבה השתמשתי לעדכון:
- עברו עליו עם
claudeב-plan mode. אני פותח את המאגר, מריץclaude --safe-modeומבקש: “RereadAGENTS.mdand suggest a list of items that are outdated or repeated. Don’t edit it; list them only.” בתוך שתי דקות קיבלתי רשימה של 23 פריטים לבדיקה. - הסירו פריטים שברור שהתיישנו. מתוך 23 הפריטים, 9 היו מיושנים בבירור — תחביר פקודות, נקודות קצה ושמות דגלים. מחקתי את השורות האלה.
- אחדו כפילויות. עוד 6 פריטים חזרו על עצמם בניסוחים שונים („אל תדחוף בכוח”, „לעולם אל תשתמש ב-
--force”, „הימנע מ-git push -f”). איחדתי אותם לשורה אחת. - הוסיפו פריטים חדשים. הוספתי דברים ששמתי לב ש-Claude/Codex טועים בהם בקביעות בחודש האחרון, לפי הכלל „שורה אחת לכל דפוס שגיאה”. התוצאה הייתה 8 פריטים חדשים.
- הריצו תת-סוכן לבדיקה סופית. ביקשתי מ-Claude לבדוק ולחפש סתירות, עמימויות וכפילויות. הוא מצא שלושה ניסוחים שאפשר להבהיר. תיקנתי אותם.
כעבור שעה, AGENTS.md מנה 110 שורות, היה מעודכן, והכרתי כל שורה בו באופן אישי. היה קל לבנות ממנו CLAUDE.md בן 30 שורות. Codex גם נעשה זהיר יותר באופן ניכר בבדיקות אחר כך — אני חושד שחלק מההחלטות ה„מוזרות” שלו נבעו מכללים מיושנים שפעל לפיהם בתום לב.
העקרונות המרכזיים למסמך AGENTS.md חי:
- כל כלל עונה על טעות שחוזרת על עצמה. אם כלל לא עלה בדעתי אפילו פעם אחת במהלך החודש, אין טעם להשאיר אותו.
- נסחו כללים כפקודות, לא כתיאוריה. „השתמשו בשני רווחים” הוא כלל. „הקפידו על סגנון קוד מסודר” אינו כלל.
- פרטים עדיפים על הכללות. „הריצו
npm run buildלפניgit push” הוא כלל. „בדקו את השינויים” אינו כלל.
מה בוודאות לא עובד בהגדרה הזאת?
הנקודה המרכזית
ייבוא @AGENTS.md אינו גורם לכלים שונים להתנהג כאחד. לכל כלי יש מוזרויות משלו: Codex CLI אינו מכיר את .claude/rules/ או את hooks. ל-Cursor יש מנוע השלמה אוטומטית משלו, שאינו קורא את CLAUDE.md בזמן השלמת טקסט. Copilot פועל לפי .github/copilot-instructions.md, וכללים ב-AGENTS.md בלבד אינם מספיקים עבורו. זה לא „קובץ אחד = התנהגות אחת”; זה „מקור אחד לכללי הבסיס, ואז לכל כלי יש תוספות משלו”.
כמה דברים שלמדתי בדרך הקשה במשך שישה חודשים של עבודה עם ההגדרה הזאת:
1. השלמה אוטומטית של Cursor אינה משתמשת ב-AGENTS.md. כש-Cursor מציע להשלים שורה בעורך, הוא אינו קורא את AGENTS.md בזמן אמת — פועל שם מנוע מהיר נפרד. כללים ב-AGENTS.md חשובים רק כששולחים בקשת צ'אט בתוך Cursor. כלומר, כתיבה של „אל תשתמשו ב-var, השתמשו ב-const” ב-AGENTS.md לא תשפיע על ההשלמה האוטומטית; צריך להגדיר זאת דרך ESLint או הגדרות TypeScript.
2. Hooks של Claude Code בתוך AGENTS.md אינם פועלים עבור Codex. אם מוגדר hook מסוג PreToolUse ב-.claude/settings.json כדי לחסום פעולה מסוימת, המידע הזה שימושי רק ל-Claude. Codex אינו מכיר hooks; מבחינתו, „הכלי מחליט בעצמו”. הגיוני לכתוב „אל תעשו X” ב-AGENTS.md, ואת „יש hook שחוסם את X פיזית” ב-CLAUDE.md, מתחת לייבוא.
3. Copilot ו-.github/copilot-instructions.md. GitHub Copilot קורא את הקובץ שלו, ועדיין לא קורא את AGENTS.md היטב. אם הצוות שלכם משתמש ב-Copilot באופן פעיל, הוסיפו קובץ .github/copilot-instructions.md נפרד ובו גרסה מקוצרת של הכללים, או השתמשו ב-Copilot Extensions שמכירות את AGENTS.md. הדברים משתנים במהירות, ולכן התמונה עשויה להיות שונה בעוד שלושה עד שישה חודשים.
4. Git אינו עוקב אחר קישור סמלי כשינוי ב-CLAUDE.md. אם מריצים ln -s AGENTS.md CLAUDE.md ומעדכנים את AGENTS.md כעבור שבוע, Git יציג diff רק עבור AGENTS.md. זה תקין, אבל עמית שבודק את ה-PR עלול לא להבין שגם CLAUDE.md עודכן (באמצעות הקישור הסמלי). הפתרון: כתבו במפורש בתיאור ה-PR: „עודכן AGENTS.md; Claude Code רואה את אותו הקובץ דרך הקישור הסמלי.”
5. קשה לנפות תקלות בייבוא עמוק. אם AGENTS.md מייבא את @docs/coding-style.md, שמייבא את @docs/typescript.md, וכלל כלשהו מתנגש בכלל אחר, קשה לנפות את התקלה. אני מגביל את הייבוא לרמה אחת (CLAUDE.md → AGENTS.md) ואיני מקנן מעבר לכך. Anthropic מספקת hook בשם InstructionsLoaded שמתעד אילו קבצים נטענו — שימושי לניפוי תקלות בהגדרות שכבתיות. הערה: ה-hook מופעל עבור AGENTS.md שנכלל באמצעות ייבוא או קישור סמלי, אך לא עבור AGENTS.md ש-Claude Code קרא בעצמו.
מקורות
- תיעוד הזיכרון של Claude Code — הסעיף על AGENTS.md — מתי Claude Code קורא את AGENTS.md בעצמו, הגדרות Project instructions, ייבוא וקישורים סמליים, והתנהגות
/init. - תיעוד הזיכרון של Claude Code — ייבוא קבצים נוספים — תחביר
@path/to/file, עומק של ארבע רמות, נתיבים יחסיים ומוחלטים. - agents.md — תקן Linux Foundation — התקן הרשמי של AGENTS.md ורשימת הכלים שתומכים בו.
- תיעוד Cursor Rules — מה Cursor קורא (
.cursor/rules/*.mdc, AGENTS.md). - הנחיות מותאמות אישית ל-GitHub Copilot — הפורמט של
.github/copilot-instructions.md. - מפרט AGENTS.md של Linux Foundation — מפרט מתעדכן.
הגדרת vibe-coding מלאה לערב: שכפול AI + מוח שני + הנדסת הקשר.
הכירו את Ailoot.
פרטים נוספים
שאלות ותשובות: קובץ הנחיות אחד עבור Claude Code, Codex ו-Cursor בשנת 2026
מתי עדיף ייבוא על קישור סמלי?
השתמשו ב-@AGENTS.md בתוך CLAUDE.md כשדרושות תוספות ייעודיות ל-Claude או כשחברי הצוות משתמשים ב-Windows. קישור סמלי מפנה את שני השמות לאותו תוכן ולכן אינו יכול להכיל סעיף נפרד ל-Claude בלבד.
איך מוודאים שההנחיות המשותפות נטענו?
הריצו /memory ובדקו את רשימת קובצי ההנחיות. אם CLAUDE.md או CLAUDE.local.md מונעים טעינה ישירה של AGENTS.md בהגדרות שלכם, הוסיפו ייבוא או בחרו הגדרה שטוענת את שניהם, ואז פתחו מפגש חדש.